Reads the &solver_input namelist block.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | filename | |||
| type(case_params_t), | intent(inout) | :: | params |
| 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 |
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