printlog_regression_test Subroutine

public subroutine printlog_regression_test()

Uses

  • proc~~printlog_regression_test~~UsesGraph proc~printlog_regression_test printlog_regression_test module~mod_global_parameters mod_global_parameters proc~printlog_regression_test->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Print a log that can be used to check whether the code still produces the same output (regression test)

Arguments

None

Calls

proc~~printlog_regression_test~~CallsGraph proc~printlog_regression_test printlog_regression_test mpi_file_open mpi_file_open proc~printlog_regression_test->mpi_file_open mpi_file_write mpi_file_write proc~printlog_regression_test->mpi_file_write proc~get_volume_average get_volume_average proc~printlog_regression_test->proc~get_volume_average mpi_allreduce mpi_allreduce proc~get_volume_average->mpi_allreduce

Called by

proc~~printlog_regression_test~~CalledByGraph proc~printlog_regression_test printlog_regression_test proc~saveamrfile saveamrfile proc~saveamrfile->proc~printlog_regression_test proc~timeintegration timeintegration proc~timeintegration->proc~saveamrfile proc~main main proc~main->proc~timeintegration program~agile agile program~agile->proc~main

Source Code

  subroutine printlog_regression_test()
    use mod_global_parameters

    integer, parameter :: n_modes = 2
    character(len=40)  :: fmt_string
    character(len=2048)  :: line
    logical, save      :: file_open = .false.
    integer            :: power
    double precision   :: modes(nw, n_modes), volume
    integer              :: amode, istatus(MPI_STATUS_SIZE)
    character(len=80)    :: filename

    do power = 1, n_modes
       call get_volume_average(power, modes(:, power), volume)
    end do

    if (mype == 0) then
       if (.not. file_open) then
          filename = trim(base_filename) // ".log"
          amode    = ior(MPI_MODE_CREATE,MPI_MODE_WRONLY)
          amode    = ior(amode,MPI_MODE_APPEND)

          call MPI_FILE_OPEN(MPI_COMM_SELF, filename, amode, MPI_INFO_NULL,&
              log_fh, ierrmpi)
          file_open = .true.

          line= "# time mean(w) mean(w**2)"
          call MPI_FILE_WRITE(log_fh, trim(line) // new_line('a'),&
              len_trim(line)+1, MPI_CHARACTER, istatus, ierrmpi)
       end if

       write(fmt_string, "(a,i0,a)") "(", nw * n_modes + 1, fmt_r // ")"
       write(line, fmt_string) global_time, modes
       call MPI_FILE_WRITE(log_fh, trim(line) // new_line('a') ,&
           len_trim(line)+1, MPI_CHARACTER, istatus, ierrmpi)
    end if
  end subroutine printlog_regression_test