write_run_config_summary_to_unit Subroutine

subroutine write_run_config_summary_to_unit(unit_id, mesh, flow, rad, params, case_file)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: unit_id
type(mesh_t), intent(in) :: mesh
type(flow_mpi_t), intent(in) :: flow
type(radiation_mpi_t), intent(in) :: rad
type(case_params_t), intent(in) :: params
character(len=*), intent(in) :: case_file

Source Code

   subroutine write_run_config_summary_to_unit(unit_id, mesh, flow, rad, params, case_file)
      integer, intent(in) :: unit_id
      type(mesh_t), intent(in) :: mesh
      type(flow_mpi_t), intent(in) :: flow
      type(radiation_mpi_t), intent(in) :: rad
      type(case_params_t), intent(in) :: params
      character(len=*), intent(in) :: case_file

      integer :: i

      write(unit_id,'(a)') '======================================================================'
      write(unit_id,'(a)') 'RUN CONFIGURATION SUMMARY'
      write(unit_id,'(a)') '======================================================================'
      write(unit_id,'(a,a)') 'case: ', trim(case_file)
      write(unit_id,'(a,a)') 'mesh_dir: ', trim(params%mesh_dir)
      write(unit_id,'(a,i0)') 'cells: ', mesh%ncells
      write(unit_id,'(a,i0)') 'faces: ', mesh%nfaces
      write(unit_id,'(a,i0)') 'flow/chemistry MPI ranks: ', flow%nprocs
      write(unit_id,'(a,i0)') 'radiation MPI ranks: ', rad%nprocs
      write(unit_id,'(a,i0,a,es12.5,a,i0,a,i0,a,l1)') 'time: nsteps=', params%nsteps, ' dt=', params%dt, &
         ' output_interval=', params%output_interval, ' terminal_interval=', params%terminal_interval, &
         ' terminal_detail='//trim(params%terminal_detail)//' dynamic_dt=', params%use_dynamic_dt
      write(unit_id,'(a,es12.5,a,es12.5,a,es12.5)') 'time limits: max_dt=', params%max_dt, &
         ' min_dt=', params%min_dt, ' dt_growth_limit=', params%dt_growth_limit
      write(unit_id,'(a,l1)')      '  step rejection enabled           : ', params%enable_step_rejection
      write(unit_id,'(a,i0)')      '  max step retries                 : ', params%max_step_retries
      write(unit_id,'(a,es12.5)') '  step reject cut factor           : ', params%step_reject_cut_factor
      write(unit_id,'(a,es12.5)') '  step reject minimum dt           : ', params%step_reject_min_dt
      write(unit_id,'(a,es12.5)') '  max KE growth per step           : ', params%max_KE_growth_per_step
      write(unit_id,'(a,es12.5)') '  KE reject floor                  : ', params%ke_reject_floor
      write(unit_id,'(a,es12.5)') '  max CFL overshoot factor         : ', params%max_cfl_overshoot_factor
      write(unit_id,'(a,l1)')      '  reject on pressure max iter      : ', params%reject_on_pressure_max_iter
      write(unit_id,'(a,l1)')      '  stop on min-dt failure           : ', params%stop_on_min_dt_failure

      write(unit_id,'(a)') ''
      write(unit_id,'(a)') 'Numerical schemes:'
      write(unit_id,'(a,a)') '  legacy convection_scheme     : ', trim(params%convection_scheme)
      write(unit_id,'(a,a)') '  momentum convection          : ', trim(params%momentum_convection_scheme)
      write(unit_id,'(a,a)') '  species convection           : ', trim(params%species_convection_scheme)
      write(unit_id,'(a,a)') '  energy convection            : ', trim(params%energy_convection_scheme)
      write(unit_id,'(a,a)') '  scalar limiter               : ', trim(params%scalar_limiter)
      write(unit_id,'(a,a)') '  species time scheme          : ', trim(params%species_time_scheme)
      write(unit_id,'(a,a)') '  energy time scheme           : ', trim(params%energy_time_scheme)
      write(unit_id,'(a,i0)') '  pressure max iterations      : ', params%pressure_max_iter
      write(unit_id,'(a,es12.5)') '  pressure tolerance           : ', params%pressure_tol

      write(unit_id,'(a)') ''
      write(unit_id,'(a)') 'Flow and thermodynamics:'
      write(unit_id,'(a,l1)') '  variable density             : ', params%enable_variable_density
      write(unit_id,'(a,a)') '  density EOS                  : ', trim(params%density_eos)
      write(unit_id,'(a,l1)') '  variable viscosity           : ', params%enable_variable_nu
      write(unit_id,'(a,i0)') '  transport update interval    : ', params%transport_update_interval
      write(unit_id,'(a,l1)') '  energy equation              : ', params%enable_energy
      write(unit_id,'(a,l1)') '  Cantera thermo               : ', params%enable_cantera_thermo
      write(unit_id,'(a,l1)') '  species enthalpy diffusion   : ', params%enable_species_enthalpy_diffusion
      write(unit_id,'(a,l1)') '  upwind dilatation density    : ', params%upwind_dilatation_density
      write(unit_id,'(a,es12.5)') '  background pressure [Pa]     : ', params%background_press
      write(unit_id,'(a,es12.5)') '  background temperature [K]   : ', params%background_temp

      write(unit_id,'(a)') ''
      write(unit_id,'(a)') 'Chemistry timestep/source controls:'
      write(unit_id,'(a,es12.5)') '  chemistry max dT per step [K]      : ', params%chemistry_max_dT_per_step
      write(unit_id,'(a,es12.5)') '  chemistry max rel rho change       : ', params%chemistry_max_rel_rho_change_per_step
      write(unit_id,'(a,es12.5)') '  chemistry max dY per step          : ', params%chemistry_max_dY_per_step
      write(unit_id,'(a,es12.5)') '  chemistry dt safety                : ', params%chemistry_dt_safety
      write(unit_id,'(a,l1)')      '  chemistry source limiter           : ', params%chemistry_limit_source_update
      write(unit_id,'(a,es12.5)') '  chemistry source relaxation        : ', params%chemistry_source_relaxation

      write(unit_id,'(a)') ''
      write(unit_id,'(a)') 'Species and chemistry:'
      write(unit_id,'(a,l1)') '  species transport            : ', params%enable_species
      write(unit_id,'(a,i0)') '  transported species count    : ', params%nspecies
      write(unit_id,'(a,l1)') '  reactions enabled            : ', params%enable_reactions
      write(unit_id,'(a,a)') '  Cantera mechanism            : ', trim(params%cantera_mech_file)
      if (len_trim(params%cantera_phase_name) > 0) then
         write(unit_id,'(a,a)') '  Cantera phase                : ', trim(params%cantera_phase_name)
      else
         write(unit_id,'(a)') '  Cantera phase                : <default first phase>'
      end if
      write(unit_id,'(a,i0)') '  Cantera reaction count       : ', params%cantera_reaction_count
      write(unit_id,'(a,i0)') '  chemistry update interval    : ', params%chemistry_update_interval
      write(unit_id,'(a,es12.5)') '  chemistry rtol               : ', params%chemistry_rtol
      write(unit_id,'(a,es12.5)') '  chemistry atol               : ', params%chemistry_atol
      write(unit_id,'(a,i0)') '  chemistry max steps          : ', params%chemistry_max_steps
      write(unit_id,'(a,l1)') '  chemistry energy enabled     : ', params%chemistry_energy_enabled
      write(unit_id,'(a,es12.5)') '  chemistry T cutoff [K]       : ', params%chemistry_temperature_cutoff
      write(unit_id,'(a,es12.5)') '  chemistry min reactive Y     : ', params%chemistry_min_reactive_mass_fraction
      write(unit_id,'(a,l1)') '  chemistry_active_screening   : ', &
         params%chemistry_active_species_threshold > zero .and. params%chemistry_n_active_species > 0
      write(unit_id,'(a,i0)') '  chemistry_n_active_species   : ', params%chemistry_n_active_species
      write(unit_id,'(a,es12.5)') '  chemistry_active_species_threshold : ', params%chemistry_active_species_threshold
      if (params%chemistry_n_active_species > 0) then
         do i = 1, params%chemistry_n_active_species
            if (len_trim(params%chemistry_active_species_name(i)) > 0) then
               write(unit_id,'(a,i0,a,a)') '  chemistry_active_species_name(', i, ') : ', &
                  trim(params%chemistry_active_species_name(i))
            end if
         end do
      end if
      if (len_trim(params%initial_composition) > 0) then
         write(unit_id,'(a,a)') '  initial composition          : ', trim(params%initial_composition)
      end if

      call write_ignition_config_summary_to_unit(unit_id, mesh, params)

      call write_boundary_config_summary_to_unit(unit_id, params)

      write(unit_id,'(a)') ''
      write(unit_id,'(a)') 'Radiation coupling:'
      write(unit_id,'(a,l1)') '  radiation enabled            : ', params%enable_radiation
      write(unit_id,'(a,a)') '  radiation pressure source    : ', trim(params%radiation_pressure_source)
      write(unit_id,'(a,a)') '  radiation model              : ', trim(params%radiation_source_model)
      write(unit_id,'(a,i0)') '  radiation update interval    : ', params%radiation_update_interval
      write(unit_id,'(a,i0)') '  n wavenumbers                : ', params%radiation_n_wavenumbers
      write(unit_id,'(a,i0,a,i0)') '  local wavenumber range       : ', rad%first_wavenumber, '-', rad%last_wavenumber
      write(unit_id,'(a,i0)') '  selected radiation species   : ', params%radiation_n_species
      write(unit_id,'(a,l1)') '  radiation debug checks       : ', params%radiation_debug
      write(unit_id,'(a,l1)') '  radiation diagnostics        : ', params%write_radiation_diagnostics

      write(unit_id,'(a)') ''
      write(unit_id,'(a)') 'Restart:'
      write(unit_id,'(a,l1)') '  restart from file            : ', params%restart_from_file
      write(unit_id,'(a,a)') '  restart file                 : ', trim(params%restart_file)
      write(unit_id,'(a,l1)') '  write restart                : ', params%write_restart
      write(unit_id,'(a,i0)') '  restart interval             : ', params%restart_interval
      write(unit_id,'(a,a)') '  restart output dir           : ', trim(params%restart_output_dir)
      write(unit_id,'(a,i0)') '  restart keep                 : ', params%restart_keep
      write(unit_id,'(a,l1)') '  restart use file dt          : ', params%restart_use_file_dt
      write(unit_id,'(a,l1)') '  restart nsteps additional    : ', params%restart_nsteps_are_additional
      write(unit_id,'(a)') '======================================================================'
   end subroutine write_run_config_summary_to_unit