Reads the optional &radiation_input namelist block.
Radiation is intentionally configured independently from flow MPI. Flow
remains spatially decomposed while radiation decomposes spectral tasks
(radiation_n_wavenumbers) over the radiation communicator and evaluates
source terms on the full replicated mesh.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | filename | |||
| type(case_params_t), | intent(inout) | :: | params |
| Name | Type | Default | Description |
|---|---|---|---|
| enable_radiation | logical | None | |
| radiation_update_interval | integer | None | |
| radiation_n_wavenumbers | integer | None | |
| radiation_n_species | integer | None | |
| radiation_species_name | character(len=name_len) | "" | |
| radiation_source_model | character(len=name_len) | None | |
| radiation_source_scale | real(kind=rk) | None | |
| radiation_n_scalars | integer | None | |
| radiation_scalar_name | character(len=name_len) | "" | |
| radiation_pressure_source | character(len=name_len) | None | |
| radiation_debug | logical | None | |
| write_radiation_diagnostics | logical | None | |
| radiation_absorption_coeff | real(kind=rk) | None | |
| radiation_emissivity | real(kind=rk) | None | |
| radiation_dom_quadrature | character(len=name_len) | None |
subroutine read_radiation_input(filename, params) character(len=*), intent(in) :: filename type(case_params_t), intent(inout) :: params logical :: enable_radiation integer :: radiation_update_interval, radiation_n_wavenumbers, radiation_n_species integer :: radiation_n_scalars character(len=name_len), save :: radiation_species_name(max_species) = "" character(len=name_len), save :: radiation_scalar_name(max_species) = "" character(len=name_len) :: radiation_source_model, radiation_pressure_source, radiation_dom_quadrature real(rk) :: radiation_source_scale logical :: radiation_debug, write_radiation_diagnostics real(rk) :: radiation_absorption_coeff, radiation_emissivity integer :: unit_id, ios, i namelist /radiation_input/ enable_radiation, radiation_update_interval, & radiation_n_wavenumbers, radiation_n_species, & radiation_species_name, radiation_source_model, & radiation_source_scale, radiation_n_scalars, & radiation_scalar_name, radiation_pressure_source, & radiation_debug, write_radiation_diagnostics, & radiation_absorption_coeff, radiation_emissivity, & radiation_dom_quadrature enable_radiation = params%enable_radiation radiation_update_interval = params%radiation_update_interval radiation_n_wavenumbers = params%radiation_n_wavenumbers radiation_n_species = params%radiation_n_species radiation_species_name = params%radiation_species_name radiation_scalar_name = params%radiation_scalar_name radiation_source_model = params%radiation_source_model radiation_source_scale = params%radiation_source_scale radiation_n_scalars = params%radiation_n_scalars radiation_pressure_source = params%radiation_pressure_source radiation_debug = params%radiation_debug write_radiation_diagnostics = params%write_radiation_diagnostics radiation_absorption_coeff = params%radiation_absorption_coeff radiation_emissivity = params%radiation_emissivity radiation_dom_quadrature = params%radiation_dom_quadrature call open_namelist_file(filename, unit_id, ios) if (ios == 0) then read(unit_id, nml=radiation_input, iostat=ios) close(unit_id) end if if (ios /= 0 .and. ios /= -1) then call fatal_error('input', 'failed reading &radiation_input. Check for unknown variables or typos.') end if if (ios == 0) then params%enable_radiation = enable_radiation params%radiation_update_interval = radiation_update_interval params%radiation_n_wavenumbers = radiation_n_wavenumbers params%radiation_n_species = radiation_n_species do i = 1, max_species params%radiation_species_name(i) = trim(radiation_species_name(i)) end do params%radiation_source_model = trim(lowercase(radiation_source_model)) params%radiation_source_scale = radiation_source_scale params%radiation_n_scalars = radiation_n_scalars do i = 1, max_species params%radiation_scalar_name(i) = trim(radiation_scalar_name(i)) end do params%radiation_pressure_source = trim(lowercase(radiation_pressure_source)) params%radiation_debug = radiation_debug params%write_radiation_diagnostics = write_radiation_diagnostics params%radiation_absorption_coeff = radiation_absorption_coeff params%radiation_emissivity = radiation_emissivity params%radiation_dom_quadrature = trim(lowercase(radiation_dom_quadrature)) end if end subroutine read_radiation_input