GCBM
|
#include <peatlandspinupturnovermodule.h>
Public Member Functions | |
PeatlandSpinupTurnOverModule () | |
virtual | ~PeatlandSpinupTurnOverModule () |
void | doLocalDomainInit () override |
void | doTimingInit () override |
void | doTimingStep () override |
Public Member Functions inherited from PeatlandTurnoverModuleBase | |
PeatlandTurnoverModuleBase () | |
virtual | ~PeatlandTurnoverModuleBase ()=default |
void | configure (const DynamicObject &config) override |
void | subscribe (NotificationCenter ¬ificationCenter) 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 | doTimingPreEndStep () |
virtual void | doTimingEndStep () |
virtual void | doTimingPostStep () |
virtual void | doOutputStep () |
virtual void | doError (std::string msg) |
virtual void | doDisturbanceEvent (DynamicVar) |
virtual void | doPrePostDisturbanceEvent () |
virtual void | doPostDisturbanceEvent () |
virtual void | doPostDisturbanceEvent2 () |
virtual void | doPostNotification (short preMessageSignal) |
Private Member Functions | |
void | doWaterTableFlux () |
void | loadPeatlandInitialPoolValues (const DynamicObject &data) |
Private Attributes | |
flint::IVariable * | _spinupMossOnly = nullptr |
flint::IVariable * | _appliedAnnualWTD { nullptr } |
double | _spinup_longterm_wtd { 0 } |
double | _spinup_previous_annual_wtd { 0 } |
double | _spinup_current_annual_wtd { 0 } |
bool | _isInitialPoolLoaded { false } |
Additional Inherited Members | |
Protected Member Functions inherited from PeatlandTurnoverModuleBase | |
void | updatePeatlandLivePoolValue () |
void | doLivePoolTurnover () |
double | computeWaterTableDepth (double dc, int peatlandID) |
double | computeCarbonTransfers (double previousAwtd, double currentAwtd, double a, double b) |
Protected Attributes inherited from PeatlandTurnoverModuleBase | |
const flint::IPool * | _atmosphere = nullptr |
const flint::IPool * | _woodyFoliageLive = nullptr |
const flint::IPool * | _woodyStemsBranchesLive = nullptr |
const flint::IPool * | _woodyRootsLive = nullptr |
const flint::IPool * | _sedgeFoliageLive = nullptr |
const flint::IPool * | _sedgeRootsLive = nullptr |
const flint::IPool * | _featherMossLive = nullptr |
const flint::IPool * | _sphagnumMossLive = nullptr |
const flint::IPool * | _woodyFineDead = nullptr |
const flint::IPool * | _woodyCoarseDead = nullptr |
const flint::IPool * | _woodyFoliageDead = nullptr |
const flint::IPool * | _woodyRootsDead = nullptr |
const flint::IPool * | _sedgeFoliageDead = nullptr |
const flint::IPool * | _sedgeRootsDead = nullptr |
const flint::IPool * | _feathermossDead = nullptr |
const flint::IPool * | _acrotelm_o = nullptr |
const flint::IPool * | _catotelm_a = nullptr |
const flint::IPool * | _acrotelm_a = nullptr |
const flint::IPool * | _catotelm_o = nullptr |
flint::IVariable * | _regenDelay = nullptr |
flint::IVariable * | _shrubAge = nullptr |
Peatland shrub age variable, which may be very old /summary> More... | |
std::shared_ptr< PeatlandTurnoverParameters > | turnoverParas = nullptr |
Turnover parameters associated to this peatland unit /summary> More... | |
std::shared_ptr< PeatlandGrowthParameters > | growthParas = nullptr |
Growth parameters associated to this peatland unit /summary> More... | |
DynamicObject | baseWTDParameters |
double | woodyFoliageLive { 0 } |
double | woodyStemsBranchesLive { 0 } |
double | woodyRootsLive { 0 } |
double | sedgeFoliageLive { 0 } |
double | sedgeRootsLive { 0 } |
double | featherMossLive { 0 } |
double | sphagnumMossLive { 0 } |
bool | _runPeatland { false } |
int | _peatlandId { -1 } |
|
virtual |
|
overridevirtual |
Set the value of the pools "Atmosphere", "WoodyFoilageLive", "WoodyStemsBranchesLive", "WoodyRootsLive", "SedgeFoliageLive", "SedgeRootsLive", "SphagnumMossLive", "FeatherMossLive", "WoodyFoliageDead", "WoodyFineDead", "WoodyCoarseDead", "WoodyRootsDead", "SedgeFoliageDead", "SedgeRootsDead", "FeathermossDead", "Acrotelm_O", "Catotelm_A", "Acrotelm_A", "Catotelm_O" from _landUnitData to PeatlandSpinupTurnOverModule._atmosphere, PeatlandSpinupTurnOverModule._woodyFoliageLive, PeatlandSpinupTurnOverModule._woodyStemsBranchesLive, PeatlandSpinupTurnOverModule._sedgeFoliageLive, PeatlandSpinupTurnOverModule._sedgeRootsLive, PeatlandSpinupTurnOverModule._sphagnumMossLive, PeatlandSpinupTurnOverModule._featherMossLive, PeatlandSpinupTurnOverModule._woodyFoliageDead, PeatlandSpinupTurnOverModule._woodyFineDead, PeatlandSpinupTurnOverModule._woodyCoarseDead, PeatlandSpinupTurnOverModule._woodyRootsDead, PeatlandSpinupTurnOverModule._sedgeFoliageDead, PeatlandSpinupTurnOverModule._sedgeRootsDead, PeatlandSpinupTurnOverModule._feathermossDead, PeatlandSpinupTurnOverModule._acrotelm_O, PeatlandSpinupTurnOverModule._catotelm_A, PeatlandSpinupTurnOverModule._acrotelm_A, PeatlandSpinupTurnOverModule._catotelm_O
Set value of variables "spinup_moss_only", "regen_delay", "base_wtd_parameters", "applied_annual_wtd" from _landUnitData to PeatlandSpinupTurnOverModule._spinupMossOnly, PeatlandSpinupTurnOverModule._regenDelay, PeatlandSpinupTurnOverModule.baseWTDParameters, PeatlandSpinupTurnOverModule._appliedAnnualWTD
Reimplemented from CBMModuleBase.
|
overridevirtual |
Set PeatlandSpinupTurnOverModule._runPeatland to false, PeatlandSpinupTurnOverModule._appliedAnnualWTD is only valid in forward run, reset it for spinup
If value of variable "load_peatpool_initials" in _landUnitData is not null, invoke PeatlandSpinupTurnOverModule.loadPeatlandInitialPoolValues()
If the value of "peatland_class" in _landUnitData is not empty, set PeatlandSpinupTurnOverModule._runPeatland to true
assign turnoverParas a shared pointer of PeatlandGrowthParameters and set it to "peatland_turnover_parameters" in _landUnitData
assign growthParas a shared pointer of PeatlandGrowthParameters ans set it to "peatland_growth_parameters" in _landUnitData
Set the result of PeatlandSpinupTurnOverModule.computeWaterTableDepth() to the three water table depths PeatlandSpinupTurnOverModule._spinup_longterm_wtd, PeatlandSpinupTurnOverModule._spinup_previous_annual_wtd and PeatlandSpinupTurnOverModule._spinup_current_annual_wtd in spinup phase
In spinup run, always set PeatlandSpinupTurnOverModule._appliedAnnualWTD same as spinup long term WTD, the result of PeatlandSpinupTurnOverModule.computeWaterTableDepth()
Reimplemented from CBMModuleBase.
|
overridevirtual |
If PeatlandSpinupTurnOverModule.spinupMossOnly is true, return
Else, if PeatlandSpinupTurnOverModule._runPeatland is true, if value of PeatlandSpinupTurnOverModule._regenDelay > 0, there is no growth in delay period, invoke PeatlandSpinupTurnOverModule.doWaterTableFlux(), else, invoke PeatlandSpinupTurnOverModule.updatePeatlandLivePool() to update the current pool value, PeatlandSpinupTurnOverModule.doLiveTurnover() to turnover on live pools, and PeatlandSpinupTurnOverModule.doWaterTableFlux() to update the flux between catotelm and acrotelm due to water table changes
Reimplemented from CBMModuleBase.
|
private |
Add transfers between the pools PeatlandSpinupTurnOverModule._catotelm_o, PeatlandSpinupTurnOverModule._catotelm_a, PeatlandSpinupTurnOverModule._acrotelm_o, PeatlandSpinupTurnOverModule._acrotelm_a based on the values of current annual water table depth PeatlandSpinupTurnOverModule._spinup_current_annual_wtd, previous annual water table depth PeatlandSpinupTurnOverModule._spinup_previous_annual_wtd and long term annual water table depth PeatlandSpinupTurnOverModule._spinup_longterm_wtd
Invoke createStockOperation() on _landUnitData, compute the flux using PeatlandSpinupTurnOverModule.computeCarbonTransfers()
Submit the stock operation to the LandUnitData and apply the stock operation to the _landUnitData
|
private |
Invoke createStockOperation() on _landUnitData
Add transfers from source PeatlandSpinupTurnOverModule._atmosphere to sink PeatlandSpinupTurnOverModule._acrotelm_o, transfer amount is value "acrotelm" in parameter data, source PeatlandSpinupTurnOverModule._atmosphere to sink PeatlandSpinupTurnOverModule._catotelm_o, transfer amount is value "catotelm" in parameter data
Submit the operation to _landUnitData, invoke submitOperation() and applyOperations() on _landUnitData
data | const DynamicObject& |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |