ocean_dyn_is_thermo_step Function

private pure function ocean_dyn_is_thermo_step(this) result(yes)

Returns .true. if the thermodynamic / tracer kernels should fire on this outer step. dt_therm_ratio <= 1 (default) → always true (every step is a thermo step, bit-identical to prior behaviour). ratio >= 2 → fires every Nth step, aligned to outer_step_count = 0 for the IC snapshot.

Type Bound

ocean_dyn_t

Arguments

Type IntentOptional Attributes Name
class(ocean_dyn_t), intent(in) :: this

Return Value logical


Called by

proc~~ocean_dyn_is_thermo_step~~CalledByGraph proc~ocean_dyn_is_thermo_step ocean_dyn_t%ocean_dyn_is_thermo_step proc~engine_step_finalize engine_step_finalize proc~engine_step_finalize->proc~ocean_dyn_is_thermo_step proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ocean_dyn_is_thermo_step proc~gm_refreshes_varmix gm_refreshes_varmix proc~gm_refreshes_varmix->proc~ocean_dyn_is_thermo_step proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~ocean_dyn_is_thermo_step proc~run_stage run_stage proc~ocean_dyn_step->proc~run_stage proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~ocean_dyn_is_thermo_step proc~ocean_dyn_step_split->proc~gm_refreshes_varmix proc~run_stage_split run_stage_split proc~ocean_dyn_step_split->proc~run_stage_split proc~run_continuity_chain run_continuity_chain proc~run_continuity_chain->proc~ocean_dyn_is_thermo_step proc~run_stage->proc~ocean_dyn_is_thermo_step proc~vmix_apply_in_stage vmix_apply_in_stage proc~run_stage->proc~vmix_apply_in_stage proc~run_stage_split->proc~ocean_dyn_is_thermo_step proc~run_stage_split->proc~run_continuity_chain proc~run_stage_split->proc~vmix_apply_in_stage proc~vmix_apply_in_stage->proc~ocean_dyn_is_thermo_step proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step_finalize 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 proc~engine_step->proc~ocean_dyn_step_split proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step_finalize 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_is_thermo_step(this) result(yes)
      !! Returns `.true.` if the thermodynamic / tracer kernels should
      !! fire on this outer step.  `dt_therm_ratio <= 1` (default) →
      !! always true (every step is a thermo step, bit-identical to
      !! prior behaviour).  `ratio >= 2` → fires every Nth step,
      !! aligned to `outer_step_count = 0` for the IC snapshot.
      class(ocean_dyn_t), intent(in) :: this
      logical :: yes
      if (this%dt_therm_ratio <= 1) then
         yes = .true.
      else
         yes = (mod(this%outer_step_count, this%dt_therm_ratio) == 0)
      end if
   end function ocean_dyn_is_thermo_step