netxsimdg
|
#include <ModelComponent.hpp>
Public Types | |
enum class | ProtectedArray { H_ICE , C_ICE , H_SNOW , T_ICE , T_AIR , DEW_2M , P_AIR , MIXRAT , SW_IN , LW_IN , MLD , SNOW , SSS , SST , EXT_SSS , EXT_SST , EVAP_MINUS_PRECIP , ML_BULK_CP , TF , WIND_SPEED , WIND_U , WIND_V , HTRUE_ICE , HTRUE_SNOW , OCEAN_U , OCEAN_V , ICE_U , ICE_V , SLAB_SST , SLAB_SSS , SLAB_QDW , SLAB_FDW , COUNT } |
enum class | SharedArray { H_ICE = SharedArrayOffset , C_ICE , H_SNOW , T_ICE , Q_IA , Q_IC , Q_IO , Q_OW , DQIA_DT , Q_PEN_SW , HSNOW_MELT , SUBLIM , DELTA_HICE , DELTA_CICE , NEW_ICE , COUNT } |
typedef Logged::level | OutputLevel |
typedef std::function< void(size_t, const TimestepTime &)> | IteratedFn |
Public Member Functions | |
virtual std::string | getName () const =0 |
Returns the name of the component. | |
virtual void | setData (const ModelState::DataMap &state)=0 |
Set the initial data of the component from the passed ModelState. | |
virtual ModelState | getState () const =0 |
Returns a ModelState from this component. | |
virtual ModelState | getState (const OutputLevel &) const =0 |
Returns a ModelState from this component at a specified level. | |
virtual ModelState | getStateRecursive (const OutputSpec &os) const |
Returns the state of the ModelComponent and any ModelComponents it depends on. | |
virtual std::unordered_set< std::string > | hFields () const |
Returns the names of all Type::H ModelArrays defined in this component. | |
virtual std::unordered_set< std::string > | uFields () const |
Returns the names of all Type::U ModelArrays defined in this component. | |
virtual std::unordered_set< std::string > | vFields () const |
Returns the names of all Type::V ModelArrays defined in this component. | |
virtual std::unordered_set< std::string > | zFields () const |
Returns the names of all Type::Z ModelArrays defined in this component. | |
Static Public Member Functions | |
static void | setAllModuleData (const ModelState &stateIn) |
static ModelState | getAllModuleState () |
static void | unregisterAllModules () |
static void | getAllFieldNames (std::unordered_set< std::string > &uF, std::unordered_set< std::string > &vF, std::unordered_set< std::string > &zF) |
static void | registerExternalSharedArray (SharedArray type, ModelArray *addr) |
Registers a ModelArray into a SharedArray slot from outside any ModelComponent object. Intended for testing and debugging. | |
static void | registerExternalProtectedArray (ProtectedArray type, ModelArray *addr) |
Registers a ModelArray into a ProtectedArray slot from outside any ModelComponent object. Intended for testing and debugging. | |
static const MARBackingStore & | getSharedArray () |
Returns a const reference to the store for SharedArray fields. | |
static const MARConstBackingStore & | getProtectedArray () |
Returns a const reference to the store for ProtectedArray fields. | |
Static Public Attributes | |
static const size_t | SharedArrayOffset = 0 |
Protected Member Functions | |
void | registerModule () |
Static Protected Member Functions | |
static void | registerSharedArray (SharedArray type, ModelArray *addr) |
static void | registerProtectedArray (ProtectedArray type, const ModelArray *addr) |
static void | overElements (IteratedFn fn, const TimestepTime &tst) |
static void | setOceanMask (const ModelArray &mask) |
Sets the model-wide land-ocean mask (for HField arrays). | |
static void | noLandMask () |
static ModelArray | mask (const ModelArray &data) |
Returns a copy of the provided ModelArray, masked according to the land-ocean mask. | |
static const ModelArray & | oceanMask () |
Returns the ocean mask. | |
Static Protected Attributes | |
static ModelArray * | p_oceanMaskH = nullptr |
A class encapsulating a component of the model. It also provide a method of communicating data between ModelComponents using enums, static arrays of pointers and the ModelArrayRef class.
Definition at line 31 of file ModelComponent.hpp.
std::function<void(size_t, const TimestepTime&)> Nextsim::ModelComponent::IteratedFn |
Definition at line 103 of file ModelComponent.hpp.
Logged::level Nextsim::ModelComponent::OutputLevel |
Definition at line 33 of file ModelComponent.hpp.
|
strong |
Definition at line 35 of file ModelComponent.hpp.
|
strong |
Definition at line 80 of file ModelComponent.hpp.
Nextsim::ModelComponent::ModelComponent | ( | ) |
Definition at line 21 of file ModelComponent.cpp.
|
static |
Definition at line 42 of file ModelComponent.cpp.
|
static |
Definition at line 29 of file ModelComponent.cpp.
|
pure virtual |
Returns the name of the component.
Implemented in Nextsim::ConfigOutput, Nextsim::DummyDynamics, Nextsim::Dynamics, Nextsim::IDynamics, Nextsim::Module1, Nextsim::ModuleRequestAndSupply, Nextsim::ModuleSemiShared, Nextsim::ModuleShared, Nextsim::ModuleSupplyAndWait, Nextsim::PrognosticData, and Nextsim::SimpleOutput.
|
inlinestatic |
Returns a const reference to the store for ProtectedArray fields.
Definition at line 191 of file ModelComponent.hpp.
|
inlinestatic |
Returns a const reference to the store for SharedArray fields.
Definition at line 186 of file ModelComponent.hpp.
|
pure virtual |
Returns a ModelState from this component.
The ModelState is map between field names and ModelArray data arrays. The intention is to merge together different ModelSatates to produce a combined state. The returned ModelState will include the states of any subsidiary components held by the object. This is the default level of output and should include all and only fields to be placed in the restart file.
Implemented in Nextsim::ConfigOutput, Nextsim::IDynamics, Nextsim::Module1, Nextsim::ModuleRequestAndSupply, Nextsim::ModuleSemiShared, Nextsim::ModuleShared, Nextsim::ModuleSupplyAndWait, Nextsim::PrognosticData, and Nextsim::SimpleOutput.
|
pure virtual |
Returns a ModelState from this component at a specified level.
See the zero argument version for more details. The output levels reuse those defined in the Logged class. The default level is NOTICE, and only levels such as INFO, DEBUG and TRACE should be used, and should provide extra diagnostic fields.
Implemented in Nextsim::ConfigOutput, Nextsim::IDynamics, Nextsim::Module1, Nextsim::ModuleRequestAndSupply, Nextsim::ModuleSemiShared, Nextsim::ModuleShared, Nextsim::ModuleSupplyAndWait, Nextsim::PrognosticData, and Nextsim::SimpleOutput.
|
inlinevirtual |
Returns the state of the ModelComponent and any ModelComponents it depends on.
Used to traverse the current tree of ModelComponents and return the overall model state for diagnostic output.
Reimplemented in Nextsim::ConfigOutput, and Nextsim::PrognosticData.
Definition at line 145 of file ModelComponent.hpp.
|
inlinevirtual |
Returns the names of all Type::H ModelArrays defined in this component.
Reimplemented in Nextsim::PrognosticData.
Definition at line 151 of file ModelComponent.hpp.
|
staticprotected |
Returns a copy of the provided ModelArray, masked according to the land-ocean mask.
data | The data to be masked. |
Definition at line 109 of file ModelComponent.cpp.
|
staticprotected |
If there is no valid land mask, assume all points are ocean and initialize accordingly.
Definition at line 94 of file ModelComponent.cpp.
|
staticprotected |
Returns the ocean mask.
Definition at line 138 of file ModelComponent.cpp.
|
inlinestaticprotected |
Definition at line 212 of file ModelComponent.hpp.
|
inlinestatic |
Registers a ModelArray into a ProtectedArray slot from outside any ModelComponent object. Intended for testing and debugging.
Definition at line 178 of file ModelComponent.hpp.
|
inlinestatic |
Registers a ModelArray into a SharedArray slot from outside any ModelComponent object. Intended for testing and debugging.
Definition at line 170 of file ModelComponent.hpp.
|
protected |
Definition at line 38 of file ModelComponent.cpp.
|
staticprotected |
Adds a pointer to a slot into the ProtectedArray array.
type | The ProtectedArray slot to add the ModelArray into. |
addr | The address of the ModelArray to be shared (read only). |
Definition at line 58 of file ModelComponent.cpp.
|
staticprotected |
Adds a pointer to a slot into the SharedArray array.
type | The SharedArray slot to add the ModelArray into. |
addr | The address of the ModelArray to be shared. |
Definition at line 52 of file ModelComponent.cpp.
|
static |
Definition at line 23 of file ModelComponent.cpp.
|
pure virtual |
Set the initial data of the component from the passed ModelState.
state | The ModelState containing the data to be set. |
Implemented in Nextsim::ConfigOutput, Nextsim::DummyDynamics, Nextsim::Dynamics, Nextsim::IDiagnosticOutput, Nextsim::IDynamics, Nextsim::Module1, Nextsim::ModuleRequestAndSupply, Nextsim::ModuleSemiShared, Nextsim::ModuleShared, Nextsim::ModuleSupplyAndWait, and Nextsim::PrognosticData.
|
staticprotected |
Sets the model-wide land-ocean mask (for HField arrays).
mask | The HField ModelArray containing the mask data. 0/false is land, >0 is sea. |
Definition at line 69 of file ModelComponent.cpp.
|
inlinevirtual |
Returns the names of all Type::U ModelArrays defined in this component.
Reimplemented in Nextsim::Module1, and Nextsim::PrognosticData.
Definition at line 153 of file ModelComponent.hpp.
|
static |
Definition at line 40 of file ModelComponent.cpp.
|
inlinevirtual |
Returns the names of all Type::V ModelArrays defined in this component.
Reimplemented in Nextsim::Module1, and Nextsim::PrognosticData.
Definition at line 155 of file ModelComponent.hpp.
|
inlinevirtual |
Returns the names of all Type::Z ModelArrays defined in this component.
Reimplemented in Nextsim::Module1, and Nextsim::PrognosticData.
Definition at line 157 of file ModelComponent.hpp.
|
staticprotected |
Definition at line 244 of file ModelComponent.hpp.
|
static |
Definition at line 78 of file ModelComponent.hpp.