subroutine read_time_input(filename, params)
character(len=*), intent(in) :: filename
type(case_params_t), intent(inout) :: params
integer :: nsteps, output_interval
real(rk) :: dt, max_cfl, max_dt, min_dt, dt_growth_limit
logical :: use_dynamic_dt
logical :: enable_step_rejection, reject_on_pressure_max_iter, stop_on_min_dt_failure
integer :: max_step_retries
real(rk) :: step_reject_cut_factor, step_reject_min_dt
real(rk) :: max_KE_growth_per_step, ke_reject_floor, max_cfl_overshoot_factor
integer :: unit_id, ios
namelist /time_input/ nsteps, dt, output_interval, use_dynamic_dt, max_cfl, &
max_dt, min_dt, dt_growth_limit, &
enable_step_rejection, max_step_retries, step_reject_cut_factor, &
step_reject_min_dt, max_KE_growth_per_step, ke_reject_floor, max_cfl_overshoot_factor, &
reject_on_pressure_max_iter, stop_on_min_dt_failure
nsteps = params%nsteps
dt = params%dt
output_interval = params%output_interval
use_dynamic_dt = params%use_dynamic_dt
max_cfl = params%max_cfl
max_dt = params%max_dt
min_dt = params%min_dt
dt_growth_limit = params%dt_growth_limit
enable_step_rejection = params%enable_step_rejection
max_step_retries = params%max_step_retries
step_reject_cut_factor = params%step_reject_cut_factor
step_reject_min_dt = params%step_reject_min_dt
max_KE_growth_per_step = params%max_KE_growth_per_step
ke_reject_floor = params%ke_reject_floor
max_cfl_overshoot_factor = params%max_cfl_overshoot_factor
reject_on_pressure_max_iter = params%reject_on_pressure_max_iter
stop_on_min_dt_failure = params%stop_on_min_dt_failure
call open_namelist_file(filename, unit_id, ios)
if (ios == 0) then
read(unit_id, nml=time_input, iostat=ios)
close(unit_id)
end if
if (ios > 0) call fatal_error('input', 'failed reading &time_input')
params%nsteps = nsteps
params%dt = dt
params%output_interval = output_interval
params%use_dynamic_dt = use_dynamic_dt
params%max_cfl = max_cfl
params%max_dt = max_dt
params%min_dt = min_dt
params%dt_growth_limit = dt_growth_limit
params%enable_step_rejection = enable_step_rejection
params%max_step_retries = max_step_retries
params%step_reject_cut_factor = step_reject_cut_factor
params%step_reject_min_dt = step_reject_min_dt
params%max_KE_growth_per_step = max_KE_growth_per_step
params%ke_reject_floor = ke_reject_floor
params%max_cfl_overshoot_factor = max_cfl_overshoot_factor
params%reject_on_pressure_max_iter = reject_on_pressure_max_iter
params%stop_on_min_dt_failure = stop_on_min_dt_failure
end subroutine read_time_input