Forcing
This page describes design and implementation details for forcing-related pathways in Omega, currently this includes:
Wind forcing
Surface tracer restoring
Wind forcing design
Wind forcing data flow
External fields provide:
WindStressZonalWindStressMeridional
Auxiliary-state compute builds
NormalStressEdgefrom those fields.Tendency term applies wind-stress forcing to edge-normal velocity tendency.
Wind forcing key classes/components
WindForcingAuxVarsStores wind-stress cell fields and computed
NormalStressEdgeApplies configured interpolation choice (
InterpType)
AuxiliaryState::computeMomAuxCalls
WindForcingAuxVars::computeVarsOnEdge
WindForcingOnEdgetendency termAdds contribution proportional to normal stress and inverse layer thickness in the surface layer
Wind forcing config coupling
Omega.WindStress.InterpTypemapped to
InterpCellToEdgeOption
Omega.Tendencies.WindForcingTendencyEnablegates execution of wind forcing tendency kernel
Surface tracer restoring design
Surface tracer restoring data flow
External fields provide target values:
TracersMonthlySurfClimoCell(values and units should match the state variables)Auxiliary-state compute forms restoring differences:
SurfTracerRestoringDiffsCell = target - tracer_surfaceTendency term applies restoring only at surface layer and only for tracers selected from
SurfaceRestoring.TracersToRestore.
Surface tracer restoring key classes/components
SurfTracerRestAuxVarsInputs:
TracersMonthlySurfClimoCell, tracer state arrayOutput:
SurfTracerRestoringDiffsCellUses
MinLayerCellto select surface layer index
SurfaceTracerRestoringOnCelltendency termApplies
PistonVelocity * SurfTracerRestoringDiffsCellat surface
TendenciesParses
SurfaceRestoring.TracersToRestoreand resolves tracer indicesBuilds
TracerIdsToRestoreandNTracersToRestoreApplies tracer-selection logic at call site in
computeTracerTendenciesOnlyAborts if restoring is enabled but no tracer IDs are available
Surface tracer restoring config coupling
Omega.SurfaceRestoring.PistonVelocitytendency scaling
Omega.SurfaceRestoring.TracersToRestoretracer-level enable list used to build
TracerIdsToRestore
Omega.Tendencies.SurfaceTracerRestoringEnablegates restoring tendency execution
Notes
If a tracer is not listed in
TracersToRestore, no restoring tendency is applied to that tracer.If restoring is enabled but no tracer IDs are available at tendency compute-time, Omega aborts with an error.
It is assumed that the incoming
TracersMonthlySurfClimoCellfields (values and units) match the Omega state variables (i.e. conservative temperature and absolute salinity for Teos-10). If not, a pre-processing conversion should be implemented.Surface tracer restoring is active everywhere if enabled. A flag to turn it off under sea ice will need to be added in later development if this feature is desired.
Unlike MPAS-Ocean, a
MaxDiffclamping is not applied here. This check should instead be implemented in Ocean Validate when that is available.A global scaling to ensure zero-sum has not been implemented for the surface tracer restoring, but should be added in later development.
At this stage, there is no temporal interpolation applied to the restoring targets, the raw
TracersMonthlySurfClimoCellsnapshot is used.