R2795/MITgcm_orig_code/MITgcm/pkg/longstepc8d59fb69877master
longstep
README
Package longstep
This package allows the passive tracer time step to be longer than that for dynamical fields: the ptracers are updated only every LS_nIter time step. Dynamical fields are averaged over LS_nIter time steps and are available as fields LS_* (declared in LONGSTEP.h):
original fld. averaged fld.
UVEL LS_uVel VVEL LS_vVel WVEL LS_wVel THETA LS_theta SALT LS_salt IVDConvCount LS_IVDConvCount Qsw LS_Qsw
Kwx LS_Kwx Kwy LS_Kwy Kwz LS_Kwz
KPPdiffKzS LS_KPPdiffKzS KPPghat LS_KPPghat
The T and S time step remains the same as that for u,v,...
Packages that use ptracers (like DIC) need to be adapted:
- replace dtTracerLev by PTRACERS_dTLev
- replace THETA, SALT, etc. by their longstep averages from the table above. This should be made between #ifdef ALLOW_LONGSTEP ... #endif. (You need to #include "LONGSTEP.h")
The package is activated by including "longstep" in packages.conf. There is no "use_LONGSTEP", the package is always on when compiled.
The run-time parameters are set in data.longstep. The default is:
&LONGSTEP_PARM01 LS_nIter=1, LS_whenToSample=0, &
LS_nIter :: number of dynamical time steps between ptracer time steps. LS_whenToSample :: when to sample dynamical fields for the longstep average
0 - at beginning of timestep (reproduces offline results) 1 - after first THERMODYNAMICS but before DYNAMICS (use use old U,V,W for advection, but new T,S for GCHEM if staggerTimeStep=.FALSE.; reproduces online with staggerTimeStep=.FALSE. for LS_nIter=1) 2 - after DYNAMICS and second THERMODYNAMICS (use new U,V,W and T,S; reproduces online with staggerTimeStep=.TRUE. for LS_nIter=1)
Default is to sample dynamical fields at the beginning of the time step. This reproduces results from offline runs with unshifted time averages used for the dynamical fields.
To have a time stepping closer to the online model (and reproduce results for LS_nIter=1), use
LS_whenToSample=1 if staggerTimeStep=.FALSE. LS_whenToSample=2 if staggerTimeStep=.TRUE.