GCBM
|
#include <cbmflataggregatorlandunitdata.h>
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 ¬ificationCenter) 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 |
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 | ||
) |
|
virtualdefault |
|
override |
Configuration function
Assign CBMFlatAggregatorLandUnitData._classifierSetVar as value of variable "reporting_classifier_set" in parameter config if it exists,
else to string "classifier_set"
config | DynamicObject& |
|
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
msg | string |
Reimplemented from CBMModuleBase.
|
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
Reimplemented from CBMModuleBase.
|
overridevirtual |
Invoke CBMFlatAggregatorLandUnitData.recordLandUnitData() with argument as boolean false
Reimplemented from CBMModuleBase.
|
overridevirtual |
Assign CBMFlatAggregatorLandUnitData._landUnitArea value of property "landUnitArea" in CBMFlatAggregatorLandUnitData._spatialLocationInfo
Invoke CBMFlatAggregatorLandUnitData.recordLandUnitData() using a true boolean argument
Reimplemented from CBMModuleBase.
|
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
flux | shared_ptr<IoperationResult> |
|
override |
|
private |
Add each classifier in parameter classifierSet to CBMFlatAggregatorLandUnitData._classifierNames,
if CBMFlatAggregatorLandUnitData._classifierNames is not empty
classifierSet | DynamicObject& |
|
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
location | FlatAgeAreaRecord |
|
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()
isSpinup | bool |
|
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
isSpinup | bool |
|
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
location | FlatAgeAreaRecord& |
|
override |
Subscribe to the signals LocalDomainInit, TimingInit, OutputStep and Error
notificationCenter | NotificationCenter& |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |