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