read_boundary_input Subroutine

private subroutine read_boundary_input(filename, params)

Reads the &boundary_input namelist block.

Arguments

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

Namelists

Namelist boundary_input


Variables

Name Type Default Description
n_patches integer None
patch_name character(len=name_len) None
patch_type character(len=name_len) None
patch_velocity_type character(len=name_len) None
patch_pressure_type character(len=name_len) None
patch_temperature_type character(len=name_len) None
patch_species_type character(len=name_len) None
patch_u real(kind=rk) None
patch_v real(kind=rk) None
patch_w real(kind=rk) None
patch_mass_flux real(kind=rk) None
patch_p real(kind=rk) None
patch_dpdn real(kind=rk) None
patch_T real(kind=rk) None
patch_Y real(kind=rk) zero
patch_composition character(len=1024) ""

Source Code

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

      integer :: n_patches
      character(len=name_len) :: patch_name(max_patches)
      character(len=name_len) :: patch_type(max_patches)
      character(len=name_len) :: patch_velocity_type(max_patches)
      character(len=name_len) :: patch_pressure_type(max_patches)
      character(len=name_len) :: patch_temperature_type(max_patches)
      character(len=name_len) :: patch_species_type(max_patches)
      real(rk) :: patch_u(max_patches)
      real(rk) :: patch_v(max_patches)
      real(rk) :: patch_w(max_patches)
      real(rk) :: patch_mass_flux(max_patches)
      real(rk) :: patch_p(max_patches)
      real(rk) :: patch_dpdn(max_patches)
      real(rk) :: patch_T(max_patches)
      real(rk), save :: patch_Y(max_species, max_patches) = zero
      character(len=1024), save :: patch_composition(max_patches) = ""
      integer :: unit_id, ios, i

      namelist /boundary_input/ n_patches, patch_name, patch_type, &
                                 patch_velocity_type, patch_pressure_type, &
                                 patch_temperature_type, patch_species_type, &
                                 patch_u, patch_v, patch_w, patch_mass_flux, &
                                 patch_p, patch_dpdn, patch_T, patch_Y, patch_composition

      n_patches = params%n_patches
      patch_name = params%patch_name
      patch_type = params%patch_type
      patch_velocity_type = params%patch_velocity_type
      patch_pressure_type = params%patch_pressure_type
      patch_temperature_type = params%patch_temperature_type
      patch_species_type = params%patch_species_type
      patch_u = params%patch_u
      patch_v = params%patch_v
      patch_w = params%patch_w
      patch_mass_flux = params%patch_mass_flux
      patch_p = params%patch_p
      patch_dpdn = params%patch_dpdn
      patch_T = params%patch_T
      patch_Y = params%patch_Y
      patch_composition = params%patch_composition

      call open_namelist_file(filename, unit_id, ios)

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

      if (ios > 0) call fatal_error('input', 'failed reading &boundary_input')

      params%n_patches = n_patches
      params%patch_name = patch_name
      params%patch_type = patch_type
      params%patch_velocity_type = patch_velocity_type
      params%patch_pressure_type = patch_pressure_type
      params%patch_temperature_type = patch_temperature_type
      params%patch_species_type = patch_species_type

      do i = 1, max_patches
         params%patch_type(i) = trim(lowercase(params%patch_type(i)))
         params%patch_velocity_type(i) = trim(lowercase(params%patch_velocity_type(i)))
         params%patch_pressure_type(i) = trim(lowercase(params%patch_pressure_type(i)))
         params%patch_temperature_type(i) = trim(lowercase(params%patch_temperature_type(i)))
         params%patch_species_type(i) = trim(lowercase(params%patch_species_type(i)))
      end do

      params%patch_u = patch_u
      params%patch_v = patch_v
      params%patch_w = patch_w
      params%patch_mass_flux = patch_mass_flux
      params%patch_p = patch_p
      params%patch_dpdn = patch_dpdn
      params%patch_T = patch_T
      params%patch_Y = patch_Y
      params%patch_composition = patch_composition
   end subroutine read_boundary_input