read_solver_input Subroutine

private subroutine read_solver_input(filename, params)

Reads the &solver_input namelist block.

Arguments

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

Calls

proc~~read_solver_input~~CallsGraph proc~read_solver_input mod_input::read_solver_input proc~fatal_error mod_kinds::fatal_error proc~read_solver_input->proc~fatal_error proc~lowercase mod_kinds::lowercase proc~read_solver_input->proc~lowercase proc~open_namelist_file mod_input::open_namelist_file proc~read_solver_input->proc~open_namelist_file

Called by

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

Namelists

Namelist solver_input


Variables

Name Type Default Description
pressure_max_iter integer None
pressure_tol real(kind=rk) None
body_force_x real(kind=rk) None
body_force_y real(kind=rk) None
body_force_z real(kind=rk) None
convection_scheme character(len=name_len) None

Source Code

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

      integer :: pressure_max_iter
      real(rk) :: pressure_tol
      real(rk) :: body_force_x, body_force_y, body_force_z
      character(len=name_len) :: convection_scheme
      integer :: unit_id, ios

      namelist /solver_input/ pressure_max_iter, pressure_tol, &
                              body_force_x, body_force_y, body_force_z, &
                              convection_scheme

      pressure_max_iter = params%pressure_max_iter
      pressure_tol = params%pressure_tol
      body_force_x = params%body_force(1)
      body_force_y = params%body_force(2)
      body_force_z = params%body_force(3)
      convection_scheme = params%convection_scheme

      call open_namelist_file(filename, unit_id, ios)

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

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

      params%pressure_max_iter = pressure_max_iter
      params%pressure_tol = pressure_tol
      params%body_force = [body_force_x, body_force_y, body_force_z]
      params%convection_scheme = trim(lowercase(convection_scheme))
   end subroutine read_solver_input