#include <peatlandspinupnext.h>
◆ PeatlandSpinupNext()
◆ ~PeatlandSpinupNext()
◆ configure()
| void configure |
( |
const DynamicObject & |
config | ) |
|
|
override |
Configuration functioneview source documentation)
- Parameters
-
- Returns
- void
◆ doLocalDomainInit()
| void doLocalDomainInit |
( |
| ) |
|
|
overridevirtual |
Assign values to PeatlandSpinupNext._softwoodFoliage, PeatlandSpinupNext._softwoodCoarseRoots, PeatlandSpinupNext._softwoodFineRoots,
PeatlandSpinupNext._softwoodOther, PeatlandSpinupNext._softwoodStemSnag, PeatlandSpinupNext._softwoodBranchSnag,
PeatlandSpinupNext._hardwoodFoliage, PeatlandSpinupNext._hardwoodCoarseRoots, PeatlandSpinupNext._hardwoodFineRoots, PeatlandSpinupNext._hardwoodOther,
PeatlandSpinupNext._hardwoodStemSnag, PeatlandSpinupNext._hardwoodBranchSnag, PeatlandSpinupNext._softwoodMerch, PeatlandSpinupNext._hardwoodMerch ,
PeatlandSpinupNext._softwoodStem, PeatlandSpinupNext._hardwoodStem, PeatlandSpinupNext._woodyFoliageLive, PeatlandSpinupNext._woodyStemsBranchesLive, PeatlandSpinupNext._woodyRootsLive,
PeatlandSpinupNext._sedgeFoliageLive, PeatlandSpinupNext._sedgeRootsLive, PeatlandSpinupNext._sphagnumMossLive, PeatlandSpinupNext._featherMossLive,
PeatlandSpinupNext._woodyFoliageDead, PeatlandSpinupNext._woodyFineDead, PeatlandSpinupNext._woodyCoarseDead, PeatlandSpinupNext._woodyRootsDead, PeatlandSpinupNext._sedgeFoliageDead,
PeatlandSpinupNext._sedgeRootsDead, PeatlandSpinupNext._feathermossDead, PeatlandSpinupNext._acrotelm_o, PeatlandSpinupNext._catotelm_a, PeatlandSpinupNext._acrotelm_a,
PeatlandSpinupNext._catotelm_o and PeatlandSpinupNext._atmosphere from _landUnitData
- Returns
- void
Reimplemented from CBMModuleBase.
◆ doPrePostDisturbanceEvent()
| void doPrePostDisturbanceEvent |
( |
| ) |
|
|
overridevirtual |
If the value of the variable "load_peatpool_initials" in _landUnitData is true, in the case of loading initial peat pool value, return
If the value of "peatland_class" in _landUnitData is not empty, indicating the current peatland needs to be run
Set PeatlandSpinupNext.meanAnnualTemperature to value of variable "mean_annual_temperature" in _landUnitData if not empty, else to value of variable "default_mean_annual_temperature" in _landUnitData
Set the fire return interval PeatlandSpinupNext.f_r to value of variable "fire_return_interval" in _landUnitData if not empty, else to value of variable "default_fire_return_interval" in _landUnitData
Set PeatlandSpinupNext.f_fr to the inverse of PeatlandSpinupNext.f_r
Invoke PeatlandSpinupNext.getTreeTurnoverRate() to get the tree turnover rate, PeatlandSpinupNext.getAndUpdateParameter() to get related parameters, PeatlandSpinupNext.getNonOpenPeatlandRemovals() to speedup peatland spinup, PeatlandSpinupNext.getCurrentDeadPoolValues() to check values in the current peat pools, PeatlandSpinupNext.resetSlowPools() to reset some slpw pools
If the value of "peatland_spinup_factor" > 0 in _landUnitData, invoke populatePeatlandDeadPoolsV3() to transfer carbon between the pools
- Returns
- void
Reimplemented from CBMModuleBase.
◆ getAndUpdateParameter()
| void getAndUpdateParameter |
( |
| ) |
|
|
private |
◆ getCurrentDeadPoolValues()
| void getCurrentDeadPoolValues |
( |
| ) |
|
|
private |
◆ getNonOpenPeatlandRemovals()
| void getNonOpenPeatlandRemovals |
( |
Peatlands |
peatlandId | ) |
|
|
private |
Obtain removals (live biomass turnover) from small tree or big tree peatlands, these removals will be input to some peatland pools
The peatlandIds Peatlands::TREED_PEATLAND_BOG, Peatlands::TREED_PEATLAND_POORFEN, Peatlands::TREED_PEATLAND_RICHFEN or Peatlands::TREED_PEATLAND_SWAMP correspond to small tree peatlands, and the peatlandIds Peatlands::BIG_TREE_PEATLAND_BOG, Peatlands::BIG_TREE_PEATLAND_POORFEN, Peatlands::BIG_TREE_PEATLAND_RICHFEN or Peatlands::BIG_TREE_PEATLAND_SWAMP correspond to big tree peatlands.
The FoliageRemoval, BranchSnagRemoval, OtherRemovalToWFD, CoarseRootRemoval, FineRootRemoval and StemSnagRemoval are calculated
- Returns
- void
◆ getTreeTurnoverRate()
| void getTreeTurnoverRate |
( |
Peatlands |
peatlandId | ) |
|
|
private |
Get turnover parameters for treed and forested peatland
If argument peatlandId is either Peatlands::OPEN_PEATLAND_BOG, Peatlands::OPEN_PEATLAND_POORFEN or
Peatlands::OPEN_PEATLAND_RICHFEN, return, as it is not a treed or forested peatland
Else, set the values of variables "sw_other_to_branch_snag_split", "sw_stem_turnover", "sw_foliage_turnover", "hw_foliage_turnover", "sw_branch_turnover", "hw_branch_turnover", "sw_coarse_root_turnover", hw_coarse_root_turnover", "sw_stem_snag_turnover", "sw_branch_snag_turnover" in _turnoverRates to PeatlandSpinupNext._otherToBranchSnagSplit, PeatlandSpinupNext._stemAnnualTurnOverRate, PeatlandSpinupNext._softwoodFoliageFallRate, PeatlandSpinupNext._hardwoodFoliageFallRate, PeatlandSpinupNext._softwoodBranchTurnOverRate, PeatlandSpinupNext._hardwoodBranchTurnOverRate, PeatlandSpinupNext._coarseRootTurnProp, PeatlandSpinupNext._fineRootTurnProp, PeatlandSpinupNext._stemSnagTurnoverRate and PeatlandSpinupNext._branchSnagTurnoverRate
- Returns
- void
◆ modifyQ10()
| double modifyQ10 |
( |
double |
baseQ10Para | ) |
|
|
private |
◆ populatePeatlandDeadPoolsV1()
| void populatePeatlandDeadPoolsV1 |
( |
| ) |
|
|
private |
◆ populatePeatlandDeadPoolsV2()
| void populatePeatlandDeadPoolsV2 |
( |
| ) |
|
|
private |
◆ populatePeatlandDeadPoolsV3()
| void populatePeatlandDeadPoolsV3 |
( |
| ) |
|
|
private |
◆ resetSlowPools()
◆ subscribe()
| void subscribe |
( |
NotificationCenter & |
notificationCenter | ) |
|
|
override |
Subscribe to signals LocalDomainInit and PrePostDisturbanceEvent
- Parameters
-
| notificationCenter | NotificationCenter& |
- Returns
- void
◆ _acrotelm_a
| const flint::IPool* _acrotelm_a |
|
private |
◆ _acrotelm_o
| const flint::IPool* _acrotelm_o |
|
private |
◆ _atmosphere
| const flint::IPool* _atmosphere |
|
private |
◆ _branchSnagTurnoverRate
| double _branchSnagTurnoverRate { 0 } |
|
private |
◆ _catotelm_a
| const flint::IPool* _catotelm_a |
|
private |
◆ _catotelm_o
| const flint::IPool* _catotelm_o |
|
private |
◆ _coarseRootTurnProp
| double _coarseRootTurnProp { 0 } |
|
private |
◆ _feathermossDead
| const flint::IPool* _feathermossDead |
|
private |
◆ _featherMossLive
| const flint::IPool* _featherMossLive |
|
private |
◆ _fineRootTurnProp
| double _fineRootTurnProp { 0 } |
|
private |
◆ _hardwoodBranchSnag
| const flint::IPool* _hardwoodBranchSnag |
|
private |
◆ _hardwoodBranchTurnOverRate
| double _hardwoodBranchTurnOverRate { 0 } |
|
private |
◆ _hardwoodCoarseRoots
| const flint::IPool* _hardwoodCoarseRoots |
|
private |
◆ _hardwoodFineRoots
| const flint::IPool* _hardwoodFineRoots |
|
private |
◆ _hardwoodFoliage
| const flint::IPool* _hardwoodFoliage |
|
private |
◆ _hardwoodFoliageFallRate
| double _hardwoodFoliageFallRate { 0 } |
|
private |
◆ _hardwoodMerch
| const flint::IPool* _hardwoodMerch |
|
private |
◆ _hardwoodOther
| const flint::IPool* _hardwoodOther |
|
private |
◆ _hardwoodStem
| const flint::IPool* _hardwoodStem |
|
private |
◆ _hardwoodStemSnag
| const flint::IPool* _hardwoodStemSnag |
|
private |
◆ _otherToBranchSnagSplit
| double _otherToBranchSnagSplit { 0 } |
|
private |
◆ _sedgeFoliageDead
| const flint::IPool* _sedgeFoliageDead |
|
private |
◆ _sedgeFoliageLive
| const flint::IPool* _sedgeFoliageLive |
|
private |
◆ _sedgeRootsDead
| const flint::IPool* _sedgeRootsDead |
|
private |
◆ _sedgeRootsLive
| const flint::IPool* _sedgeRootsLive |
|
private |
◆ _softwoodBranchSnag
| const flint::IPool* _softwoodBranchSnag |
|
private |
◆ _softwoodBranchTurnOverRate
| double _softwoodBranchTurnOverRate { 0 } |
|
private |
◆ _softwoodCoarseRoots
| const flint::IPool* _softwoodCoarseRoots |
|
private |
◆ _softwoodFineRoots
| const flint::IPool* _softwoodFineRoots |
|
private |
◆ _softwoodFoliage
| const flint::IPool* _softwoodFoliage |
|
private |
◆ _softwoodFoliageFallRate
| double _softwoodFoliageFallRate { 0 } |
|
private |
◆ _softwoodMerch
| const flint::IPool* _softwoodMerch |
|
private |
◆ _softwoodOther
| const flint::IPool* _softwoodOther |
|
private |
◆ _softwoodStem
| const flint::IPool* _softwoodStem |
|
private |
◆ _softwoodStemSnag
| const flint::IPool* _softwoodStemSnag |
|
private |
◆ _sphagnumMossLive
| const flint::IPool* _sphagnumMossLive |
|
private |
◆ _stemAnnualTurnOverRate
| double _stemAnnualTurnOverRate { 0 } |
|
private |
◆ _stemSnagTurnoverRate
| double _stemSnagTurnoverRate { 0 } |
|
private |
◆ _turnoverRates
| const flint::IVariable* _turnoverRates |
|
private |
◆ _woodyCoarseDead
| const flint::IPool* _woodyCoarseDead |
|
private |
◆ _woodyFineDead
| const flint::IPool* _woodyFineDead |
|
private |
◆ _woodyFoliageDead
| const flint::IPool* _woodyFoliageDead |
|
private |
◆ _woodyFoliageLive
| const flint::IPool* _woodyFoliageLive |
|
private |
◆ _woodyRootsDead
| const flint::IPool* _woodyRootsDead |
|
private |
◆ _woodyRootsLive
| const flint::IPool* _woodyRootsLive |
|
private |
◆ _woodyStemsBranchesLive
| const flint::IPool* _woodyStemsBranchesLive |
|
private |
◆ decayParas
◆ f_fr
◆ f_r
◆ fireParas
◆ growthParas
◆ largeTreeBranchSnagRemoval
| double largeTreeBranchSnagRemoval { 0 } |
|
private |
◆ largeTreeCoarseRootRemoval
| double largeTreeCoarseRootRemoval { 0 } |
|
private |
◆ largeTreeFineRootRemoval
| double largeTreeFineRootRemoval { 0 } |
|
private |
◆ largeTreeFoliageRemoval
| double largeTreeFoliageRemoval { 0 } |
|
private |
◆ largeTreeOn
◆ largeTreeOtherRemovalToWFD
| double largeTreeOtherRemovalToWFD { 0 } |
|
private |
◆ largeTreeStemSnagRemoval
| double largeTreeStemSnagRemoval { 0 } |
|
private |
◆ meanAnnualTemperature
| double meanAnnualTemperature { 0 } |
|
private |
◆ smallTreeBranchSnagRemoval
| double smallTreeBranchSnagRemoval { 0 } |
|
private |
◆ smallTreeCoarseRootRemoval
| double smallTreeCoarseRootRemoval { 0 } |
|
private |
◆ smallTreeFineRootRemoval
| double smallTreeFineRootRemoval { 0 } |
|
private |
◆ smallTreeFoliageRemoval
| double smallTreeFoliageRemoval { 0 } |
|
private |
◆ smallTreeOn
◆ smallTreeOtherRemovalToWFD
| double smallTreeOtherRemovalToWFD { 0 } |
|
private |
◆ smallTreeStemSnagRemoval
| double smallTreeStemSnagRemoval { 0 } |
|
private |
◆ turnoverParas
The documentation for this class was generated from the following files: