Summary
SIPNET tracks wood carbon in two pieces:
structural wood = envi.plantWoodC
storage delta = envi.plantWoodCStorageDelta
reported wood = structural wood + storage delta
storage delta can be negative because it is a bookkeeping. But SIPNET does not clearly define or test what should happen when this storage term interacts with harvest, turnover, respiration, and output reporting.
Related:
Potential Issues
Harvest calculates affected wood using:
woodC = envi.plantWoodC + envi.plantWoodCStorageDelta;
but the event update applies the wood change only to:
and does not update envi.plantWoodCStorageDelta.
That means a full aboveground harvest can remove more wood than exists in the structural pool, after which structural wood is clamped to zero while positive storage remains. The result is that sipnet.out can still report positive plantWoodC after a harvest that appears intended to remove all aboveground wood.
Negative storage is allowed, but if:
envi.plantWoodC + envi.plantWoodCStorageDelta < 0
then wood respiration and wood turnover can become negative because they use this sum directly.
Suggested fix
Make the intended functionality explicit and add focused tests:
- Decide whether harvest acts on structural wood, reported/effective wood, or both.
- Prevent negative effective wood from creating negative respiration or turnover fluxes.
- Update the output docs for
plantWoodC and nppStorage.
- Add tests for harvest with positive and negative storage.
Summary
SIPNET tracks wood carbon in two pieces:
storage delta can be negative because it is a bookkeeping. But SIPNET does not clearly define or test what should happen when this storage term interacts with harvest, turnover, respiration, and output reporting.
Related:
Potential Issues
Harvest calculates affected wood using:
but the event update applies the wood change only to:
and does not update
envi.plantWoodCStorageDelta.That means a full aboveground harvest can remove more wood than exists in the structural pool, after which structural wood is clamped to zero while positive storage remains. The result is that
sipnet.outcan still report positiveplantWoodCafter a harvest that appears intended to remove all aboveground wood.Negative storage is allowed, but if:
then wood respiration and wood turnover can become negative because they use this sum directly.
Suggested fix
Make the intended functionality explicit and add focused tests:
plantWoodCandnppStorage.