ocean_dyn_therm_dt Function

private pure function ocean_dyn_therm_dt(this, dt) result(dt_th)

Effective dt for the thermo / tracer kernels. When dt_therm_ratio = 1 returns dt exactly; otherwise returns ratio · dt, since the kernels only fire every Nth step and must advance by that aggregate interval.

Type Bound

ocean_dyn_t

Arguments

Type IntentOptional Attributes Name
class(ocean_dyn_t), intent(in) :: this
real(kind=wp), intent(in) :: dt

Return Value real(kind=wp)


Called by

proc~~ocean_dyn_therm_dt~~CalledByGraph proc~ocean_dyn_therm_dt ocean_dyn_t%ocean_dyn_therm_dt proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ocean_dyn_therm_dt proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~ocean_dyn_therm_dt proc~run_stage_split run_stage_split proc~ocean_dyn_step_split->proc~run_stage_split proc~run_stage run_stage proc~run_stage->proc~ocean_dyn_therm_dt proc~vmix_apply_in_stage vmix_apply_in_stage proc~run_stage->proc~vmix_apply_in_stage proc~run_stage_split->proc~ocean_dyn_therm_dt proc~run_stage_split->proc~vmix_apply_in_stage proc~vmix_apply_in_stage->proc~ocean_dyn_therm_dt proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step_ice proc~engine_step engine_step proc~driver_run_ocean->proc~engine_step proc~engine_step->proc~ocean_dyn_step_split proc~ocean_dyn_step ocean_dyn_step proc~engine_step->proc~ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step_ice proc~rdb_ocean_step->proc~engine_step proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Source Code

   pure function ocean_dyn_therm_dt(this, dt) result(dt_th)
      !! Effective `dt` for the thermo / tracer kernels.  When
      !! `dt_therm_ratio = 1` returns `dt` exactly; otherwise returns
      !! `ratio · dt`, since the kernels only fire every Nth step and
      !! must advance by that aggregate interval.
      class(ocean_dyn_t), intent(in) :: this
      real(wp), intent(in) :: dt
      real(wp) :: dt_th
      if (this%dt_therm_ratio <= 1) then
         dt_th = dt
      else
         dt_th = real(this%dt_therm_ratio, wp)*dt
      end if
   end function ocean_dyn_therm_dt