@@ -52,6 +52,7 @@ import ClimaCoupler.Interfacer:
5252
5353import ClimaUtilities. SpaceVaryingInputs: SpaceVaryingInput
5454import ClimaUtilities. TimeVaryingInputs: TimeVaryingInput, evaluate!
55+ import ClimaUtilities. OnlineLogging: WallTimeInfo, report_walltime
5556import ClimaUtilities. Utils: period_to_seconds_float
5657import ClimaUtilities. ClimaArtifacts: @clima_artifact
5758import ClimaUtilities. TimeManager: ITime, date
@@ -495,7 +496,21 @@ function CoupledSimulation(config_dict::AbstractDict)
495496 EveryCalendarDtSchedule (TimeManager. time_to_period (checkpoint_dt); start_date)
496497 checkpoint_cb = TimeManager. Callback (schedule_checkpoint, Checkpointer. checkpoint_sims)
497498
498- callbacks = (checkpoint_cb,)
499+ tot_steps = Int (ceil (float (tspan[2 ] - tspan[1 ]) / float (Δt_cpl)))
500+ five_percent_steps = ceil (Int, 0.05 * tot_steps)
501+ steps_taken = (integrator) -> float (integrator. t - t_start) / float (Δt_cpl)
502+ walltime_report_cond =
503+ (integrator) -> begin
504+ nsteps = steps_taken (integrator)
505+ # skip first two steps for compilation
506+ (nsteps == 1 || nsteps == 2 ) && return false
507+ return nsteps % five_percent_steps == 0 || ispow2 (nsteps)
508+ end
509+ walltime_affect! = let wt = WallTimeInfo ()
510+ (coupled_sim) -> report_walltime (wt, coupled_sim. model_sims. atmos_sim. integrator)
511+ end
512+ walltime_cb = TimeManager. Callback (walltime_report_cond, walltime_affect!)
513+ callbacks = (checkpoint_cb, walltime_cb)
499514
500515 #= Set up default AMIP diagnostics
501516 Use ClimaDiagnostics for default AMIP diagnostics, which currently include turbulent energy fluxes.
0 commit comments