radiation_initialize Subroutine

public subroutine radiation_initialize(mesh, rad, params, context)

Arguments

Type IntentOptional Attributes Name
type(mesh_t), intent(in) :: mesh
type(radiation_mpi_t), intent(in) :: rad
type(case_params_t), intent(in) :: params
type(radiation_context_t), intent(inout) :: context

Source Code

   subroutine radiation_initialize(mesh, rad, params, context)
      type(mesh_t), intent(in) :: mesh
      type(radiation_mpi_t), intent(in) :: rad
      type(case_params_t), intent(in) :: params
      type(radiation_context_t), intent(inout) :: context
      integer :: j, idx

      call radiation_finalize(context)

      context%enabled = params%enable_radiation
      context%model = trim(lowercase(params%radiation_source_model))
      context%rad_rank = rad%rank
      context%rad_size = rad%nprocs
      context%n_wavenumbers = params%radiation_n_wavenumbers
      context%wn_first = rad%first_wavenumber
      context%wn_last = rad%last_wavenumber
      context%nlocal_wavenumbers = rad%nlocal_wavenumbers
      context%ncells = mesh%ncells
      context%nfaces = mesh%nfaces
      context%pressure_source = trim(lowercase(params%radiation_pressure_source))
      context%mesh_cached = params%enable_radiation
      context%debug = params%radiation_debug
      context%write_diagnostics = params%write_radiation_diagnostics
      context%setup_file = trim(params%output_dir)//'/radiation_setup.txt'
      context%diagnostics_file = trim(params%output_dir)//'/diagnostics/radiation_diagnostics.csv'

      if (.not. context%enabled) return

      context%n_species = params%radiation_n_species
      if (context%n_species > 0) then
         allocate(context%species_name(context%n_species), context%species_index(context%n_species))
         do j = 1, context%n_species
            context%species_name(j) = trim(params%radiation_species_name(j))
            if (len_trim(context%species_name(j)) == 0) then
               call fatal_error('radiation', 'blank radiation_species_name entry')
            end if
            idx = species_index_of(params%species_name, params%nspecies, context%species_name(j))
            if (idx <= 0) then
               call fatal_error('radiation', 'radiation species "'//trim(context%species_name(j))//'" is not in the active species list')
            end if
            context%species_index(j) = idx
         end do
      end if

      context%n_scalars = params%radiation_n_scalars
      if (context%n_scalars > 0) then
         allocate(context%scalar_name(context%n_scalars))
         do j = 1, context%n_scalars
            context%scalar_name(j) = trim(params%radiation_scalar_name(j))
            if (len_trim(context%scalar_name(j)) == 0) then
               call fatal_error('radiation', 'blank radiation_scalar_name entry')
            end if
         end do
      end if

      select case (trim(context%model))
      case ('none', 'spectral_test', 'external', 'p1', 'dom')
         continue
      case default
         call fatal_error('radiation', 'unknown radiation_source_model: '//trim(context%model))
      end select

      call write_radiation_setup(mesh, rad, params, context)
   end subroutine radiation_initialize