read_radiation_input Subroutine

private subroutine read_radiation_input(filename, params)

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.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
type(case_params_t), intent(inout) :: params

Namelists

Namelist radiation_input


Variables

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

Source Code

   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