Auxiliary State
The AuxiliaryState
class groups together all of Omega auxiliary
variables. It is responsible for managing their lifetime,
registering them with IOStreams, and providing functions that compute them,
to be used in the tendency evaluation. It is possible
to have multiple AuxiliaryState
instances in Omega. Every instance has a name
and is tracked in a static C++ map called AllAuxStates
.
Initialization
An instance of the AuxiliaryState
class requires a HorzMesh
, so
the mesh class and all of its dependencies need to be initialized before the AuxiliaryState
class
can be. The static method:
OMEGA::AuxiliaryState::init();
initializes the default AuxiliaryState
. A pointer to it can be retrieved at any time using:
OMEGA::AuxiliaryState* DefAuxState = OMEGA::AuxiliaryState::getDefault();
Creation of non-default auxiliary states
A non-default auxiliary state can be created from a string Name
, horizontal mesh Mesh
, a number of
vertical levels NVertLevels
, and a number of Tracers NTracers
:
OMEGA::AuxiliaryState* NewAuxState = OMEGA::AuxiliaryState::create(Name, Mesh, NVertLevels, NTracers);
For conveniece, this returns a pointer to the newly created state. Given its name, a pointer to a named auxiliary state
can be obtained at any time by calling the static get
method:
OMEGA::AuxiliaryState* NewAuxState = OMEGA::AuxiliaryState::get(Name);
Computation of auxiliary variables
To compute all auxiliary variables stored in an auxiliary state AuxState
,
given ocean state State
and time level TimeLevel
do:
AuxState.computeAll(State, TimeLevel);
Removal of auxiliary states
To erase a specific named auxiliary state use erase
OMEGA::AuxiliaryState::erase(Name);
To clear all instances do:
OMEGA::AuxiliaryState::clear();