read_species_input Subroutine

private subroutine read_species_input(filename, params)

Reads the &species_input namelist block.

Implements strict error checking to catch typos in chemical species names or advection settings.

Arguments

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

Calls

proc~~read_species_input~~CallsGraph proc~read_species_input mod_input::read_species_input proc~fatal_error mod_kinds::fatal_error proc~read_species_input->proc~fatal_error proc~open_namelist_file mod_input::open_namelist_file proc~read_species_input->proc~open_namelist_file

Called by

proc~~read_species_input~~CalledByGraph proc~read_species_input mod_input::read_species_input proc~read_case_params mod_input::read_case_params proc~read_case_params->proc~read_species_input program~lowmach_react_hex lowmach_react_hex program~lowmach_react_hex->proc~read_case_params

Namelists

Namelist species_input


Variables

Name Type Default Description
enable_species logical None
enable_reactions logical None
enable_cantera logical None
nspecies integer None
species_name character(len=name_len) ""
species_diffusivity real(kind=rk) zero
initial_Y real(kind=rk) zero

Source Code

   subroutine read_species_input(filename, params)
      character(len=*), intent(in) :: filename
      type(case_params_t), intent(inout) :: params

      logical :: enable_species, enable_reactions, enable_cantera
      integer :: nspecies
      character(len=name_len), save :: species_name(max_species) = ""
      real(rk), save :: species_diffusivity(max_species) = zero
      real(rk), save :: initial_Y(max_species) = zero
      integer :: unit_id, ios

      namelist /species_input/ enable_species, enable_reactions, enable_cantera, &
                                nspecies, species_name, species_diffusivity, initial_Y

      enable_species = params%enable_species
      enable_reactions = params%enable_reactions
      enable_cantera = params%enable_cantera_species
      nspecies = params%nspecies
      species_name = params%species_name
      species_diffusivity = params%species_diffusivity
      initial_Y = params%initial_Y

      call open_namelist_file(filename, unit_id, ios)

      if (ios == 0) then
         read(unit_id, nml=species_input, iostat=ios)
         close(unit_id)
      end if

      if (ios /= 0 .and. ios /= -1) then
         call fatal_error('input', 'failed reading &species_input. Check for unknown variables or typos.')
      end if

      if (ios == 0) then
         params%enable_species = enable_species
         params%enable_reactions = enable_reactions
         params%enable_cantera_species = enable_cantera
         params%nspecies = nspecies
         params%species_name = species_name
         params%species_diffusivity = species_diffusivity
         params%initial_Y = initial_Y
         
         ! Save original namelist values
         params%namelist_nspecies = nspecies
         params%namelist_species_name = species_name
      end if
   end subroutine read_species_input