Frazil
This page describes frazil design and implementation details in Omega,
including both the FixedProperty and Teos10 pathways.
Purpose and coupling points
Frazil computes frazil-related tendencies that modify:
pseudo-thickness tendency
temperature tracer tendency
salinity tracer tendency
The tendency hook-up is implemented through FrazilOnCell in the tracer
tendency phase, where frazil contributions are added to the accumulated
PseudoThicknessTend and TracerTend arrays.
It also accumulates the column-integrated frazil terms over an ocean (outer) timestep to store the fluxes to be passed through the coupler.
Data flow and call sequence
Tendencies::computeTracerTendenciesOnlychecksTendencies.FrazilTendencyEnable.If enabled,
FrazilOnCell::operator()retrieves the defaultFrazilobject and zeros frazil tendency/accumulator arrays.FrazilOnCellextractsTemperatureandSalinitytracer subviews, then callsFrazil::computeFrazil(CT, SA, PressureMid, PseudoThickness).Frazil::computeFrazildispatches tocomputeFrazilFixedPropertyImplorcomputeFrazilTeosImplbased onFrazilType.Returned frazil tendencies are added into
PseudoThicknessTendandTracerTendfor all active cell layers.
Configuration coupling
Frazil behavior is configured with:
Omega.Tendencies.FrazilTendencyEnableglobal switch for applying frazil tendency terms
Omega.Frazil.FrazilTypeimplementation choice (
FixedPropertyorTeos10)
Omega.Frazil.LayerMassFracMaxper-layer mass/thickness limiter used by frazil formation/melt pathways
Omega.Frazil.Phiteos pathway liquid-fraction parameter for new frazil partitioning
Omega.Frazil.DepthLimitoptional depth cutoff for frazil activity; negative means no cutoff
Omega.Frazil.ConservationCheckoptional post-compute column conservation diagnostic/logging
Physics/algorithm summary
Common behavior
Freezing-point checks are based on conservative temperature and absolute salinity with pressure-dependent freezing temperature.
Vertical accumulation order is bottom-to-top within each active column.
Frazil tendencies are not time-step scaled inside
Frazil; they are accumulated as tendency contributions.
Fixed-property pathway (FrazilType: FixedProperty)
Uses simplified energetics: the energy of the super-cooled water sets the amount of solid ice formed (used constant latent heat of fusion of fresh ice). Salt is added based on a constant bulk salinity
IceRefSal(default) or a manual toggle (for now) using the local salinity and the frazil porosity. The salt contribution is included in the salinity tendency term, but is not accounted for in the pseudo-thickness tendency. The fraction of existing frazil to be melted is set by the amount of pure ice that can be melted by the warm layer, and used to determine the energy, mass and salt added to the tendencies. There is also fractional thickness limit to the possible melt.Computes local layer tendencies (
HTend,TTend,STend) and updates accumulated frazil stores.Converts accumulators to coupler units at the end of the column loop.
Teos pathway (FrazilType: Teos10)
Uses teos-10 Gibbs SeaWater routines for frazil formation and melt state transitions.
Formation uses
PhiandLayerMassFracMaxto partition and limit newly formed frazil contributions.Melt computes fraction melted subject to available thermodynamic energy and mass-limit constraints.
Performance note: the GSW TEOS-10 routines rely on the submodule which is not GPU-portable, so this option currently executes on the CPU/host even in GPU builds. Expect host execution (and associated data movement) when
FrazilType: Teos10is selected. The calculation will be moved to GPU once a function port is possible.
Existing ctest coverage
The existing frazil test driver is in
components/omega/test/ocn/FrazilTest.cpp and covers:
teos frazil formation in cold and warm single-layer states
fixed-property frazil formation in cold and warm single-layer states
mixed warm/cold column behavior with sign checks for branch switching
depth-limit behavior ensuring excluded deep layers have zero frazil tendency