Subroutine that defines or loads from restart file the time stepping parameters.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(KORC_PARAMS), | intent(inout) | :: | params | Core KORC simulation parameters. |
subroutine define_time_step(params)
!! @note Subroutine that defines or loads from restart file the time
!! stepping parameters. @endnote
TYPE(KORC_PARAMS), INTENT(INOUT) :: params
!! Core KORC simulation parameters.
if (params%restart) then
call load_time_stepping_params(params)
else if (params%proceed) then
call load_prev_time(params)
params%ito = 1_ip
params%dt = params%dt*(2.0_rp*C_PI*params%cpp%time_r)
params%t_steps = CEILING((params%simulation_time-params%init_time)/ &
params%dt,ip)
params%output_cadence = FLOOR(params%snapshot_frequency/params%dt,ip)
if (params%output_cadence.EQ.0_ip) params%output_cadence = 1_ip
params%num_snapshots = params%t_steps/params%output_cadence
params%restart_output_cadence = FLOOR(params%restart_overwrite_frequency/ &
params%dt,ip)
params%t_skip=min(params%t_steps,params%output_cadence)
params%t_skip=max(1_ip,params%t_skip)
else
params%ito = 1_ip
params%dt = params%dt*(2.0_rp*C_PI*params%cpp%time_r)
params%t_steps = CEILING(params%simulation_time/params%dt,ip)
params%output_cadence = FLOOR(params%snapshot_frequency/params%dt,ip)
if (params%output_cadence.EQ.0_ip) params%output_cadence = 1_ip
params%num_snapshots = params%t_steps/params%output_cadence
params%restart_output_cadence = FLOOR(params%restart_overwrite_frequency/ &
params%dt,ip)
params%t_skip=min(params%t_steps,params%output_cadence)
params%t_skip=max(1_ip,params%t_skip)
end if
if (params%mpi_params%rank .EQ. 0) then
write(6,'(/,"* * * * * TIME STEPPING PARAMETERS * * * * *")')
write(6,'("Simulation time: ",E17.10," s")') params%simulation_time
write(6,'("Initial time: ",E17.10," s")') params%init_time
write(6,'("Output frequency: ",E17.10," s")') params%snapshot_frequency
write(6,'("Relativistic gyro-period: ",E17.10)') 2.0_rp*C_PI* &
params%cpp%time_r
write(6,'("Time step: ",E17.10)') params%dt
write(6,'("Number of time steps: ",I16)') params%t_steps
write(6,'("Starting simulation at time step: ",I16)') params%ito
write(6,'("Output cadence: ",I16)') params%output_cadence
write(6,'("Restart cadence: ",I16)') params%restart_output_cadence
write(6,'("Number of outputs: ",I16)') params%num_snapshots
write(6,'("* * * * * * * * * * * * * * * * * * * * * * *",/)')
end if
end subroutine define_time_step