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