define_time_step Subroutine

public subroutine define_time_step(params)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(inout) :: params

Core KORC simulation parameters.


Contents

Source Code


Source Code

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