GCBM
Public Member Functions | Private Member Functions | Private Attributes | List of all members
CBMFlatAggregatorLandUnitData Class Reference

#include <cbmflataggregatorlandunitdata.h>

Inheritance diagram for CBMFlatAggregatorLandUnitData:
Inheritance graph
Collaboration diagram for CBMFlatAggregatorLandUnitData:
Collaboration graph

Public Member Functions

 CBMFlatAggregatorLandUnitData (std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatFluxRecord >> fluxDimension, std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatPoolRecord >> poolDimension, std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatErrorRecord >> errorDimension, std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatAgeAreaRecord >> ageDimension, std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatDisturbanceRecord >> disturbanceDimension, std::shared_ptr< std::vector< std::string >> classifierNames, std::shared_ptr< Poco::Mutex > classifierNamesLock)
 
virtual ~CBMFlatAggregatorLandUnitData ()=default
 
void configure (const DynamicObject &config) override
 
void subscribe (NotificationCenter &notificationCenter) override
 
flint::ModuleTypes moduleType () override
 
void doLocalDomainInit () override
 
void doTimingInit () override
 
void doOutputStep () override
 
void doError (std::string msg) override
 
- Public Member Functions inherited from CBMModuleBase
virtual ~CBMModuleBase ()=default
 
void onSystemInit () override
 
void onSystemShutdown () override
 
void onLocalDomainInit () override
 
void onLocalDomainShutdown () override
 
void onLocalDomainProcessingUnitInit () override
 
void onLocalDomainProcessingUnitShutdown () override
 
void onPreTimingSequence () override
 
void onTimingInit () override
 
void onTimingPrePostInit () override
 
void onTimingPostInit () override
 
void onTimingPostInit2 () override
 
void onTimingShutdown () override
 
void onTimingStep () override
 
void onTimingPreEndStep () override
 
void onTimingEndStep () override
 
void onTimingPostStep () override
 
void onOutputStep () override
 
void onPrePostDisturbanceEvent () override
 
void onPostDisturbanceEvent () override
 
void onPostDisturbanceEvent2 () override
 
void onError (std::string msg) override
 
void onDisturbanceEvent (DynamicVar e) override
 
void onPostNotification (short preMessageSignal) override
 
virtual void doSystemInit ()
 
virtual void doSystemShutdown ()
 
virtual void doLocalDomainShutdown ()
 
virtual void doLocalDomainProcessingUnitInit ()
 
virtual void doLocalDomainProcessingUnitShutdown ()
 
virtual void doPreTimingSequence ()
 
virtual void doTimingPrePostInit ()
 
virtual void doTimingPostInit ()
 
virtual void doTimingPostInit2 ()
 
virtual void doTimingShutdown ()
 
virtual void doTimingStep ()
 
virtual void doTimingPreEndStep ()
 
virtual void doTimingEndStep ()
 
virtual void doTimingPostStep ()
 
virtual void doDisturbanceEvent (DynamicVar)
 
virtual void doPrePostDisturbanceEvent ()
 
virtual void doPostDisturbanceEvent ()
 
virtual void doPostDisturbanceEvent2 ()
 
virtual void doPostNotification (short preMessageSignal)
 

Private Member Functions

FlatAgeAreaRecord recordLocation (bool isSpinup)
 
void recordLandUnitData (bool isSpinup)
 
void recordPoolsSet (const FlatAgeAreaRecord &location)
 
void recordFluxSet (const FlatAgeAreaRecord &location)
 
void recordClassifierNames (const DynamicObject &classifierSet)
 
bool hasDisturbanceInfo (std::shared_ptr< flint::IOperationResult > flux)
 

Private Attributes

std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatFluxRecord > > _fluxDimension
 
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatPoolRecord > > _poolDimension
 
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatErrorRecord > > _errorDimension
 
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatAgeAreaRecord > > _ageDimension
 
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatDisturbanceRecord > > _disturbanceDimension
 
std::shared_ptr< std::vector< std::string > > _classifierNames
 
std::shared_ptr< Poco::Mutex > _classifierNamesLock
 
flint::IVariable * _classifierSet
 
flint::IVariable * _landClass
 
std::shared_ptr< const flint::SpatialLocationInfo > _spatialLocationInfo
 
double _landUnitArea
 
std::optional< FlatAgeAreaRecord_previousAttributes
 
bool _isPrimaryAggregator
 
std::string _classifierSetVar
 
AgeClassHelper _ageClassHelper
 

Constructor & Destructor Documentation

◆ CBMFlatAggregatorLandUnitData()

CBMFlatAggregatorLandUnitData ( std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatFluxRecord >>  fluxDimension,
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatPoolRecord >>  poolDimension,
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatErrorRecord >>  errorDimension,
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatAgeAreaRecord >>  ageDimension,
std::shared_ptr< flint::RecordAccumulatorWithMutex2< std::string, FlatDisturbanceRecord >>  disturbanceDimension,
std::shared_ptr< std::vector< std::string >>  classifierNames,
std::shared_ptr< Poco::Mutex >  classifierNamesLock 
)

◆ ~CBMFlatAggregatorLandUnitData()

virtual ~CBMFlatAggregatorLandUnitData ( )
virtualdefault

Member Function Documentation

◆ configure()

void configure ( const DynamicObject &  config)
override

Configuration function

Assign CBMFlatAggregatorLandUnitData._classifierSetVar as value of variable "reporting_classifier_set" in parameter config if it exists,
else to string "classifier_set"

Parameters
configDynamicObject&
Returns
void

◆ doError()

void doError ( std::string  msg)
overridevirtual

If CBMFlatAggregatorLandUnitData._spatialLocationInfo is not nullptr, then instantiate an object of FlatErrorRecord with the year, classifier
of the current location using CBMFlatAggregatorLandUnitData.recordLocation(), value of property "module" in CBMFlatAggregatorLandUnitData._spatialLocationInfo
else use the 0 and null string for the parameter 1 and 2
Invoke accumulate() on CBMFlatAggregatorLandUnitData._errorDimension with argument object

Parameters
msgstring
Returns
void

Reimplemented from CBMModuleBase.

◆ doLocalDomainInit()

void doLocalDomainInit ( )
overridevirtual

Assign CBMFlatAggregatorLandUnitData._spatialLocationInfo, CBMFlatAggregatorLandUnitData._landClass values of variables "spatialLocationInfo" and "unfccc_land_class", CBMFlatAggregatorLandUnitData._classifierSet value of CBMFlatAggregatorLandUnitData._classifierSet in _landUnitData
If _landUnitData contains variables "age_class_range" and "age_maximum", create an object of AgeClassHelper,
assign it to CBMFlatAggregatorLandUnitData._ageClassHelper

Returns
void

Reimplemented from CBMModuleBase.

◆ doOutputStep()

void doOutputStep ( )
overridevirtual

Invoke CBMFlatAggregatorLandUnitData.recordLandUnitData() with argument as boolean false

Returns
void

Reimplemented from CBMModuleBase.

◆ doTimingInit()

void doTimingInit ( )
overridevirtual

Assign CBMFlatAggregatorLandUnitData._landUnitArea value of property "landUnitArea" in CBMFlatAggregatorLandUnitData._spatialLocationInfo
Invoke CBMFlatAggregatorLandUnitData.recordLandUnitData() using a true boolean argument

Returns
void

Reimplemented from CBMModuleBase.

◆ hasDisturbanceInfo()

bool hasDisturbanceInfo ( std::shared_ptr< flint::IOperationResult >  flux)
private

If hasDataPackage() on parameter flux is false return false
Extract DynamicObject from flux->dataPackage(), if it contains both "disturbance" and "disturbance_type_code", return true, else return false

Parameters
fluxshared_ptr<IoperationResult>
Returns
bool

◆ moduleType()

flint::ModuleTypes moduleType ( )
override

◆ recordClassifierNames()

void recordClassifierNames ( const DynamicObject &  classifierSet)
private

Add each classifier in parameter classifierSet to CBMFlatAggregatorLandUnitData._classifierNames,
if CBMFlatAggregatorLandUnitData._classifierNames is not empty

Parameters
classifierSetDynamicObject&
Returns
void

◆ recordFluxSet()

void recordFluxSet ( const FlatAgeAreaRecord location)
private

If getOperationLastAppliedIterator() on _landUnitData is not empty,
for each operationResult in _landUnitData->getOperationLastAppliedIterator(), instantiate an object of FlatDisturbanceRecord and invoke accumulate() on CBMFlatAggregatorLandUnitData._disturbanceDimension with argument object
For each operation in operationResult, if the source and destination pools are not the same, instantiate an object of FlatFluxRecord and invoke accumulate() on CBMFlatAggregatorLandUnitData._fluxDimension with the argument object
Invoke clearLastAppliedOperationResults() on _landUnitData

Parameters
locationFlatAgeAreaRecord
Returns
void

◆ recordLandUnitData()

void recordLandUnitData ( bool  isSpinup)
private

If parameter isSpinup is true, assign CBMFlatAggregatorLandUnitData._previousAttributes the result of the function CBMFlatAggregatorLandUnitData.recordLocation()
Invoke CBMFlatAggregatorLandUnitData.recordPoolsSet() and CBMFlatAggregatorLandUnitData.recordFluxSet() by using isSpinUp as the parameter
Assign CBMFlatAggregatorLandUnitData._previousAttributes the result of the function CBMFlatAggregatorLandUnitData.recordLocation()

Parameters
isSpinupbool
Returns
void

◆ recordLocation()

FlatAgeAreaRecord recordLocation ( bool  isSpinup)
private

If parameter isSpinup is false, get the current year of the simulation from _landUnitData
If CBMAggregatorLandUnitData._classifierNames is empty, invoke CBMAggregatorLandUnitData.recordClassifierNames()
For each classifier in CBMAggregatorLandUnitData._classifierSet, append classifier.second to a variable classifierSet
Instantiate an object of FlatAgeAreaRecord with year, classifierSet, value of CBMFlatAggregatorLandUnitData._landClass, value of variable "age_class" in _landUnitData if it exists else "", _landUnitArea, invoke accumulate() on CBMFlatAggregatorLandUnitData._ageDimension with argument object and return the object

Parameters
isSpinupbool
Returns
Int64

◆ recordPoolsSet()

void recordPoolsSet ( const FlatAgeAreaRecord location)
private

For each pool in poolCollection() of _landUnitData, calculate the poolValue as value of pool * _landUnitArea
If poolValue is not 0, instantiate an object of FlatPoolRecord and call accumulate on CBMFlatAggregatorLandUnitData._poolDimension with argument object

Parameters
locationFlatAgeAreaRecord&
Returns
void

◆ subscribe()

void subscribe ( NotificationCenter &  notificationCenter)
override

Subscribe to the signals LocalDomainInit, TimingInit, OutputStep and Error

Parameters
notificationCenterNotificationCenter&
Returns
void

Member Data Documentation

◆ _ageClassHelper

AgeClassHelper _ageClassHelper
private

◆ _ageDimension

std::shared_ptr<flint::RecordAccumulatorWithMutex2<std::string, FlatAgeAreaRecord> > _ageDimension
private

◆ _classifierNames

std::shared_ptr<std::vector<std::string> > _classifierNames
private

◆ _classifierNamesLock

std::shared_ptr<Poco::Mutex> _classifierNamesLock
private

◆ _classifierSet

flint::IVariable* _classifierSet
private

◆ _classifierSetVar

std::string _classifierSetVar
private

◆ _disturbanceDimension

std::shared_ptr<flint::RecordAccumulatorWithMutex2<std::string, FlatDisturbanceRecord> > _disturbanceDimension
private

◆ _errorDimension

std::shared_ptr<flint::RecordAccumulatorWithMutex2<std::string, FlatErrorRecord> > _errorDimension
private

◆ _fluxDimension

std::shared_ptr<flint::RecordAccumulatorWithMutex2<std::string, FlatFluxRecord> > _fluxDimension
private

◆ _isPrimaryAggregator

bool _isPrimaryAggregator
private

◆ _landClass

flint::IVariable* _landClass
private

◆ _landUnitArea

double _landUnitArea
private

◆ _poolDimension

std::shared_ptr<flint::RecordAccumulatorWithMutex2<std::string, FlatPoolRecord> > _poolDimension
private

◆ _previousAttributes

std::optional<FlatAgeAreaRecord> _previousAttributes
private

◆ _spatialLocationInfo

std::shared_ptr<const flint::SpatialLocationInfo> _spatialLocationInfo
private

The documentation for this class was generated from the following files: