read_ignition_input Subroutine

private subroutine read_ignition_input(filename, params)

Reads the optional &ignition_input namelist block.

The ignition kernel is an initialization aid, not a time-dependent source. It overwrites temperature and optionally composition inside a spherical region before the first timestep, then the caller refreshes thermodynamics.

Arguments

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

Namelists

Namelist ignition_input


Variables

Name Type Default Description
enable_ignition_kernel logical None
ignition_kernel_shape character(len=name_len) None
ignition_kernel_center real(kind=rk) None
ignition_kernel_radius real(kind=rk) None
ignition_kernel_T real(kind=rk) None
ignition_kernel_composition character(len=1024) None
ignition_kernel_blend character(len=name_len) None

Source Code

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

      logical :: enable_ignition_kernel
      character(len=name_len) :: ignition_kernel_shape
      real(rk) :: ignition_kernel_center(3)
      real(rk) :: ignition_kernel_radius
      real(rk) :: ignition_kernel_T
      character(len=1024) :: ignition_kernel_composition
      character(len=name_len) :: ignition_kernel_blend
      integer :: unit_id, ios

      namelist /ignition_input/ enable_ignition_kernel, ignition_kernel_shape, &
                                 ignition_kernel_center, ignition_kernel_radius, &
                                 ignition_kernel_T, ignition_kernel_composition, &
                                 ignition_kernel_blend

      enable_ignition_kernel = params%enable_ignition_kernel
      ignition_kernel_shape = params%ignition_kernel_shape
      ignition_kernel_center = params%ignition_kernel_center
      ignition_kernel_radius = params%ignition_kernel_radius
      ignition_kernel_T = params%ignition_kernel_T
      ignition_kernel_composition = params%ignition_kernel_composition
      ignition_kernel_blend = params%ignition_kernel_blend

      call open_namelist_file(filename, unit_id, ios)

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

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

      if (ios == 0) then
         params%enable_ignition_kernel = enable_ignition_kernel
         params%ignition_kernel_shape = trim(lowercase(ignition_kernel_shape))
         params%ignition_kernel_center = ignition_kernel_center
         params%ignition_kernel_radius = ignition_kernel_radius
         params%ignition_kernel_T = ignition_kernel_T
         params%ignition_kernel_composition = trim(ignition_kernel_composition)
         params%ignition_kernel_blend = trim(lowercase(ignition_kernel_blend))
      end if
   end subroutine read_ignition_input