@hestia-earth/guide 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (838) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/content/guide/aggregation-engine/content.json +1 -1
  3. package/dist/content/guide/aggregation-engine/crop.json +1 -1
  4. package/dist/content/guide/aggregation-engine/distribution.json +1 -0
  5. package/dist/content/guide/aggregation-engine/generalProcess.json +1 -0
  6. package/dist/content/guide/aggregation-engine/processedFood.json +1 -1
  7. package/dist/content/guide/data-explorer/what-is-it.json +1 -1
  8. package/dist/content/guide/data-validation/content.json +1 -0
  9. package/dist/content/guide/data-validation/cycle.json +1 -0
  10. package/dist/content/guide/data-validation/impact-assessment.json +1 -0
  11. package/dist/content/guide/data-validation/organisation.json +1 -0
  12. package/dist/content/guide/data-validation/site.json +1 -0
  13. package/dist/content/guide/file-upload/concepts.json +1 -0
  14. package/dist/content/guide/file-upload/deletion.json +1 -0
  15. package/dist/content/guide/file-upload/examples/content.json +1 -0
  16. package/dist/content/guide/file-upload/examples/example-1.json +1 -0
  17. package/dist/content/guide/file-upload/examples/example-2.json +1 -0
  18. package/dist/content/guide/file-upload/examples/example-3.json +1 -0
  19. package/dist/content/guide/file-upload/examples/example-4.json +1 -0
  20. package/dist/content/guide/file-upload/getting-started.json +1 -1
  21. package/dist/content/guide/file-upload/prepare-file.json +1 -1
  22. package/dist/content/guide/file-upload/special-cases.json +1 -0
  23. package/dist/content/guide/hestia-api/data-api.json +1 -1
  24. package/dist/content/guide/utils/content.json +1 -0
  25. package/dist/content/index.json +1 -1
  26. package/dist/content/models/applying-models/content.json +1 -0
  27. package/dist/content/models/applying-models/faq.json +1 -0
  28. package/dist/content/models/applying-models/introduction.json +1 -0
  29. package/dist/content/models/cycleAnimals/animal-fatContent/content.json +1 -0
  30. package/dist/content/models/cycleAnimals/animal-fatContent/ipcc2019.json +1 -0
  31. package/dist/content/models/cycleAnimals/animal-hoursWorkedPerDay/content.json +1 -0
  32. package/dist/content/models/cycleAnimals/animal-hoursWorkedPerDay/ipcc2019.json +1 -0
  33. package/dist/content/models/cycleAnimals/animal-liveweightGain/content.json +1 -0
  34. package/dist/content/models/cycleAnimals/animal-liveweightGain/ipcc2019.json +1 -0
  35. package/dist/content/models/cycleAnimals/animal-liveweightPerHead/content.json +1 -1
  36. package/dist/content/models/cycleAnimals/animal-liveweightPerHead/ipcc2019.json +1 -1
  37. package/dist/content/models/cycleAnimals/animal-milkYieldPerAnimal/content.json +1 -0
  38. package/dist/content/models/cycleAnimals/animal-milkYieldPerAnimal/ipcc2019.json +1 -0
  39. package/dist/content/models/cycleAnimals/animal-pregnancyRateTotal/content.json +1 -0
  40. package/dist/content/models/cycleAnimals/animal-pregnancyRateTotal/ipcc2019.json +1 -0
  41. package/dist/content/models/cycleAnimals/animal-trueProteinContent/content.json +1 -0
  42. package/dist/content/models/cycleAnimals/animal-trueProteinContent/ipcc2019.json +1 -0
  43. package/dist/content/models/cycleAnimals/animal-weightAtMaturity/content.json +1 -0
  44. package/dist/content/models/cycleAnimals/animal-weightAtMaturity/ipcc2019.json +1 -0
  45. package/dist/content/models/cycleAnimals/cycle-animal-input-hestiaAggregatedData/content.json +1 -1
  46. package/dist/content/models/cycleAnimals/cycle-animal-input-hestiaAggregatedData/cycle.json +1 -1
  47. package/dist/content/models/cycleAnimals/cycle-animal-input-properties/content.json +1 -1
  48. package/dist/content/models/cycleAnimals/cycle-animal-input-properties/cycle.json +1 -1
  49. package/dist/content/models/cycleAnimals/ipcc2019-animal-pastureGrass/content.json +1 -1
  50. package/dist/content/models/cycleAnimals/ipcc2019-animal-pastureGrass/ipcc2019.json +1 -1
  51. package/dist/content/models/cycleCompleteness/cycle-completeness-animalFeed/content.json +1 -1
  52. package/dist/content/models/cycleCompleteness/cycle-completeness-animalFeed/cycle.json +1 -1
  53. package/dist/content/models/cycleCompleteness/cycle-completeness-cropResidue/content.json +1 -1
  54. package/dist/content/models/cycleCompleteness/cycle-completeness-cropResidue/cycle.json +1 -1
  55. package/dist/content/models/cycleCompleteness/cycle-completeness-electricityFuel/content.json +1 -1
  56. package/dist/content/models/cycleCompleteness/cycle-completeness-electricityFuel/cycle.json +1 -1
  57. package/dist/content/models/cycleCompleteness/cycle-completeness-excreta/content.json +1 -1
  58. package/dist/content/models/cycleCompleteness/cycle-completeness-excreta/cycle.json +1 -1
  59. package/dist/content/models/cycleCompleteness/cycle-completeness-freshForage/content.json +1 -1
  60. package/dist/content/models/cycleCompleteness/cycle-completeness-freshForage/cycle.json +1 -1
  61. package/dist/content/models/cycleCompleteness/cycle-completeness-material/content.json +1 -1
  62. package/dist/content/models/cycleCompleteness/cycle-completeness-material/cycle.json +1 -1
  63. package/dist/content/models/cycleCompleteness/cycle-completeness-soilAmendment/content.json +1 -1
  64. package/dist/content/models/cycleCompleteness/cycle-completeness-soilAmendment/cycle.json +1 -1
  65. package/dist/content/models/cycleEmissions/animal/ch4ToAirEntericFermentation/content.json +1 -1
  66. package/dist/content/models/cycleEmissions/animal/ch4ToAirEntericFermentation/ipcc2019.json +1 -1
  67. package/dist/content/models/cycleEmissions/animal/ch4ToAirExcreta/ipcc2019.json +1 -1
  68. package/dist/content/models/cycleEmissions/aquaculture/ch4ToAirAquacultureSystems/content.json +1 -1
  69. package/dist/content/models/cycleEmissions/aquaculture/ch4ToAirAquacultureSystems/ipcc2019.json +1 -1
  70. package/dist/content/models/cycleEmissions/aquaculture/ch4ToAirAquacultureSystems/pooreNemecek2018.json +1 -1
  71. package/dist/content/models/cycleEmissions/aquaculture/n2OToAirAquacultureSystemsDirect/content.json +1 -1
  72. package/dist/content/models/cycleEmissions/aquaculture/n2OToAirAquacultureSystemsDirect/pooreNemecek2018.json +1 -1
  73. package/dist/content/models/cycleEmissions/aquaculture/n2ToAirAquacultureSystems/content.json +1 -1
  74. package/dist/content/models/cycleEmissions/aquaculture/n2ToAirAquacultureSystems/pooreNemecek2018.json +1 -1
  75. package/dist/content/models/cycleEmissions/aquaculture/nh3ToAirAquacultureSystems/content.json +1 -1
  76. package/dist/content/models/cycleEmissions/aquaculture/nh3ToAirAquacultureSystems/pooreNemecek2018.json +1 -1
  77. package/dist/content/models/cycleEmissions/aquaculture/noxToAirAquacultureSystems/content.json +1 -1
  78. package/dist/content/models/cycleEmissions/aquaculture/noxToAirAquacultureSystems/pooreNemecek2018.json +1 -1
  79. package/dist/content/models/cycleEmissions/fuel/blackCarbonToAirFuelCombustion/content.json +1 -0
  80. package/dist/content/models/cycleEmissions/fuel/blackCarbonToAirFuelCombustion/emepEea2019.json +1 -0
  81. package/dist/content/models/cycleEmissions/fuel/ch4ToAirFuelCombustion/content.json +1 -0
  82. package/dist/content/models/cycleEmissions/fuel/ch4ToAirFuelCombustion/emepEea2019.json +1 -0
  83. package/dist/content/models/cycleEmissions/fuel/coToAirFuelCombustion/content.json +1 -0
  84. package/dist/content/models/cycleEmissions/fuel/coToAirFuelCombustion/emepEea2019.json +1 -0
  85. package/dist/content/models/cycleEmissions/fuel/n2OToAirFuelCombustionIndirect/ipcc2019.json +1 -1
  86. package/dist/content/models/cycleEmissions/fuel/nmvocToAirFuelCombustion/content.json +1 -0
  87. package/dist/content/models/cycleEmissions/fuel/nmvocToAirFuelCombustion/emepEea2019.json +1 -0
  88. package/dist/content/models/cycleEmissions/fuel/pm10ToAirFuelCombustion/content.json +1 -0
  89. package/dist/content/models/cycleEmissions/fuel/pm10ToAirFuelCombustion/emepEea2019.json +1 -0
  90. package/dist/content/models/cycleEmissions/fuel/pm25ToAirFuelCombustion/content.json +1 -0
  91. package/dist/content/models/cycleEmissions/fuel/pm25ToAirFuelCombustion/emepEea2019.json +1 -0
  92. package/dist/content/models/cycleEmissions/fuel/tspToAirFuelCombustion/content.json +1 -0
  93. package/dist/content/models/cycleEmissions/fuel/tspToAirFuelCombustion/emepEea2019.json +1 -0
  94. package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/content.json +1 -1
  95. package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/ecoaliMv9.json +1 -1
  96. package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/ecoinventv3.json +1 -1
  97. package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/ecoinventv3AndEmberClimate.json +1 -1
  98. package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/freeflow.json +1 -1
  99. package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/worldsteel.json +1 -0
  100. package/dist/content/models/cycleEmissions/landUseChange/co2ToAirAboveGroundBiomassStockChange/content.json +1 -1
  101. package/dist/content/models/cycleEmissions/landUseChange/co2ToAirAboveGroundBiomassStockChange/ipcc2019.json +1 -1
  102. package/dist/content/models/cycleEmissions/landUseChange/co2ToAirBelowGroundBiomassStockChange/content.json +1 -1
  103. package/dist/content/models/cycleEmissions/landUseChange/co2ToAirBelowGroundBiomassStockChange/ipcc2019.json +1 -1
  104. package/dist/content/models/cycleEmissions/landUseChange/emissionsToAirOrganicSoilBurning/content.json +1 -0
  105. package/dist/content/models/cycleEmissions/landUseChange/emissionsToAirOrganicSoilBurning/ipcc2019.json +1 -0
  106. package/dist/content/models/cycleEmissions/landUseChange/nonCo2EmissionsToAirNaturalVegetationBurning/content.json +1 -1
  107. package/dist/content/models/cycleEmissions/landUseChange/nonCo2EmissionsToAirNaturalVegetationBurning/ipcc2019.json +1 -0
  108. package/dist/content/models/cycleEmissions/organicSoil/ch4ToAirOrganicSoilCultivation/content.json +1 -1
  109. package/dist/content/models/cycleEmissions/organicSoil/ch4ToAirOrganicSoilCultivation/ipcc2019.json +1 -1
  110. package/dist/content/models/cycleEmissions/organicSoil/co2ToAirOrganicSoilCultivation/content.json +1 -1
  111. package/dist/content/models/cycleEmissions/organicSoil/co2ToAirOrganicSoilCultivation/ipcc2019.json +1 -1
  112. package/dist/content/models/cycleEmissions/organicSoil/n2OToAirOrganicSoilCultivationDirect/content.json +1 -1
  113. package/dist/content/models/cycleEmissions/organicSoil/n2OToAirOrganicSoilCultivationDirect/ipcc2019.json +1 -1
  114. package/dist/content/models/cycleEmissions/other/co2ToAirLimeNeutralisation/ipcc2019.json +1 -0
  115. package/dist/content/models/cycleEmissions/other/nErosionSoilFlux/schererPfister2015.json +1 -1
  116. package/dist/content/models/cycleEmissions/other/pErosionSoilFlux/schererPfister2015.json +1 -1
  117. package/dist/content/models/cycleEmissions/pesticide/content.json +1 -0
  118. package/dist/content/models/cycleEmissions/pesticide/pesticideToAirPesticideApplication/content.json +1 -0
  119. package/dist/content/models/cycleEmissions/pesticide/pesticideToAirPesticideApplication/pefcrGuidanceDocument2017.json +1 -0
  120. package/dist/content/models/cycleEmissions/pesticide/pesticideToSoilPesticideApplication/content.json +1 -0
  121. package/dist/content/models/cycleEmissions/pesticide/pesticideToSoilPesticideApplication/pefcrGuidanceDocument2017.json +1 -0
  122. package/dist/content/models/cycleEmissions/pesticide/pesticideToWaterPesticideApplication/content.json +1 -0
  123. package/dist/content/models/cycleEmissions/pesticide/pesticideToWaterPesticideApplication/pefcrGuidanceDocument2017.json +1 -0
  124. package/dist/content/models/cycleEmissions/soil/co2ToAirBiocharStockChange/content.json +1 -1
  125. package/dist/content/models/cycleEmissions/soil/co2ToAirBiocharStockChange/ipcc2019.json +1 -1
  126. package/dist/content/models/cycleEmissions/soil/co2ToAirSoilOrganicCarbonStockChange/content.json +1 -0
  127. package/dist/content/models/cycleEmissions/soil/co2ToAirSoilOrganicCarbonStockChange/ipcc2019.json +1 -0
  128. package/dist/content/models/cycleEmissions/soil/n2OToAirDiminishingSoilCarbonStocksDirect/content.json +1 -0
  129. package/dist/content/models/cycleEmissions/soil/n2OToAirDiminishingSoilCarbonStocksDirect/ipcc2019.json +1 -0
  130. package/dist/content/models/cycleGeneral/cycle-cycleDuration/content.json +1 -1
  131. package/dist/content/models/cycleGeneral/cycle-cycleDuration/cycle.json +1 -1
  132. package/dist/content/models/cycleGeneral/cycle-endDate/content.json +1 -1
  133. package/dist/content/models/cycleGeneral/cycle-endDate/cycle.json +1 -1
  134. package/dist/content/models/cycleGeneral/cycle-otherSitesUnusedDuration/content.json +1 -1
  135. package/dist/content/models/cycleGeneral/cycle-otherSitesUnusedDuration/cycle.json +1 -1
  136. package/dist/content/models/cycleGeneral/cycle-siteDuration/content.json +1 -1
  137. package/dist/content/models/cycleGeneral/cycle-siteDuration/cycle.json +1 -1
  138. package/dist/content/models/cycleGeneral/cycle-siteUnusedDuration/content.json +1 -1
  139. package/dist/content/models/cycleGeneral/cycle-siteUnusedDuration/cycle.json +1 -1
  140. package/dist/content/models/cycleGeneral/cycle-startDate/content.json +1 -1
  141. package/dist/content/models/cycleGeneral/cycle-startDate/cycle.json +1 -1
  142. package/dist/content/models/cycleGeneral/cycle-startDateDefinition/content.json +1 -1
  143. package/dist/content/models/cycleGeneral/cycle-startDateDefinition/cycle.json +1 -1
  144. package/dist/content/models/cycleInputs/cycle-input-hestiaAggregatedData/content.json +1 -1
  145. package/dist/content/models/cycleInputs/cycle-input-hestiaAggregatedData/cycle.json +1 -1
  146. package/dist/content/models/cycleInputs/cycle-input-properties/content.json +1 -1
  147. package/dist/content/models/cycleInputs/cycle-input-properties/cycle.json +1 -1
  148. package/dist/content/models/cycleInputs/cycle-input-value/content.json +1 -1
  149. package/dist/content/models/cycleInputs/cycle-input-value/cycle.json +1 -1
  150. package/dist/content/models/cycleInputs/hestia-materialAndSubstrate/hestia.json +1 -1
  151. package/dist/content/models/cycleInputs/ipcc2019-pastureGrass/content.json +1 -1
  152. package/dist/content/models/cycleInputs/ipcc2019-pastureGrass/ipcc2019.json +1 -1
  153. package/dist/content/models/cycleInputs/machineryInfrastructureDepreciatedAmountPerCycle/agribalyse2016.json +1 -1
  154. package/dist/content/models/cycleInputs/machineryInfrastructureDepreciatedAmountPerCycle/content.json +1 -1
  155. package/dist/content/models/cycleInputs/saplingsDepreciatedAmountPerCycle/pooreNemecek2018.json +1 -1
  156. package/dist/content/models/cycleInputs/seed/faostat2018.json +1 -1
  157. package/dist/content/models/cyclePractices/cycle-practice-value/content.json +1 -1
  158. package/dist/content/models/cyclePractices/cycle-practice-value/cycle.json +1 -1
  159. package/dist/content/models/cyclePractices/hestia-pastureSystem/content.json +1 -1
  160. package/dist/content/models/cyclePractices/hestia-pastureSystem/hestia.json +1 -1
  161. package/dist/content/models/cyclePractices/koble2014-cropResidueManagement/content.json +1 -1
  162. package/dist/content/models/cyclePractices/koble2014-cropResidueManagement/koble2014.json +1 -1
  163. package/dist/content/models/cyclePractices/pastureGrass/content.json +1 -1
  164. package/dist/content/models/cyclePractices/pastureGrass/hestia.json +1 -1
  165. package/dist/content/models/cycleProducts/aboveGroundCropResidue/content.json +1 -1
  166. package/dist/content/models/cycleProducts/aboveGroundCropResidue/hestia.json +1 -1
  167. package/dist/content/models/cycleProducts/aboveGroundCropResidueTotal/hestia.json +1 -1
  168. package/dist/content/models/cycleProducts/cycle-product-value/content.json +1 -1
  169. package/dist/content/models/cycleProducts/cycle-product-value/cycle.json +1 -1
  170. package/dist/content/models/cycleProducts/excretaKgN/pooreNemecek2018.json +1 -1
  171. package/dist/content/models/cycleProducts/excretaKgVs/pooreNemecek2018.json +1 -1
  172. package/dist/content/models/cycleTransformations/transformation-input-max/content.json +1 -1
  173. package/dist/content/models/cycleTransformations/transformation-input-max/transformation.json +1 -1
  174. package/dist/content/models/cycleTransformations/transformation-input-min/content.json +1 -1
  175. package/dist/content/models/cycleTransformations/transformation-input-min/transformation.json +1 -1
  176. package/dist/content/models/cycleTransformations/transformation-input-properties/content.json +1 -1
  177. package/dist/content/models/cycleTransformations/transformation-input-properties/transformation.json +1 -1
  178. package/dist/content/models/cycleTransformations/transformation-input-sd/content.json +1 -1
  179. package/dist/content/models/cycleTransformations/transformation-input-sd/transformation.json +1 -1
  180. package/dist/content/models/cycleTransformations/transformation-input-value/content.json +1 -1
  181. package/dist/content/models/cycleTransformations/transformation-input-value/transformation.json +1 -1
  182. package/dist/content/models/cycleTransport/haversineFormula-transport-distance/content.json +1 -1
  183. package/dist/content/models/cycleTransport/haversineFormula-transport-distance/haversineformula.json +1 -1
  184. package/dist/content/models/impactAssessmentEmissions/impact-assessment-emissions/content.json +1 -1
  185. package/dist/content/models/impactAssessmentEmissions/impact-assessment-emissions/impactAssessment.json +1 -1
  186. package/dist/content/models/impactAssessmentGeneral/impact-assessment-irrigated/content.json +1 -1
  187. package/dist/content/models/impactAssessmentGeneral/impact-assessment-irrigated/impactAssessment.json +1 -1
  188. package/dist/content/models/impactAssessmentGeneral/impact-assessment-organic/content.json +1 -1
  189. package/dist/content/models/impactAssessmentGeneral/impact-assessment-organic/impactAssessment.json +1 -1
  190. package/dist/content/models/impactAssessmentGeneral/impact-assessment-product-economicValueShare/content.json +1 -1
  191. package/dist/content/models/impactAssessmentGeneral/impact-assessment-product-economicValueShare/impactAssessment.json +1 -1
  192. package/dist/content/models/impactAssessmentGeneral/impact-assessment-product-value/content.json +1 -1
  193. package/dist/content/models/impactAssessmentGeneral/impact-assessment-product-value/impactAssessment.json +1 -1
  194. package/dist/content/models/impactAssessmentImpacts/damageToHumanHealthParticulateMatterFormation/fantkeetal2016.json +1 -1
  195. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/abioticResourceDepletionFossilFuels/cml2001Baseline.json +1 -0
  196. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/abioticResourceDepletionFossilFuels/content.json +1 -0
  197. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/abioticResourceDepletionMineralsAndMetals/cml2001Baseline.json +1 -0
  198. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/abioticResourceDepletionMineralsAndMetals/content.json +1 -0
  199. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/content.json +1 -0
  200. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/environmentalFootprintSingleOverallScore/content.json +1 -0
  201. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/environmentalFootprintSingleOverallScore/environmentalFootprintv31.json +1 -0
  202. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/ionisingRadiationKbqU235Eq/content.json +1 -0
  203. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/ionisingRadiationKbqU235Eq/frischknechtetal2000.json +1 -0
  204. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/photochemicalOzoneCreationPotentialHumanHealthNmvocEq/content.json +1 -0
  205. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/photochemicalOzoneCreationPotentialHumanHealthNmvocEq/lotosEuroSmodel.json +1 -0
  206. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/soilQualityIndexLandOccupation/content.json +1 -0
  207. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/soilQualityIndexLandOccupation/environmentalFootprintv31.json +1 -0
  208. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/soilQualityIndexLandTransformation/content.json +1 -0
  209. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/soilQualityIndexLandTransformation/environmentalFootprintv31.json +1 -0
  210. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/soilQualityIndexTotalLandUseEffects/content.json +1 -0
  211. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/soilQualityIndexTotalLandUseEffects/environmentalFootprintv31.json +1 -0
  212. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/terrestrialAcidificationPotentialAccumulatedExceedance/content.json +1 -0
  213. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/terrestrialAcidificationPotentialAccumulatedExceedance/poschetal2008.json +1 -0
  214. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/terrestrialEutrophicationPotentialAccumulatedExceedance/content.json +1 -0
  215. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintv31/terrestrialEutrophicationPotentialAccumulatedExceedance/poschetal2008.json +1 -0
  216. package/dist/content/models/impactAssessmentImpacts/freshwaterEcotoxicityPotentialCtue/environmentalFootprintv31.json +1 -1
  217. package/dist/content/models/impactAssessmentImpacts/gwp100/ipcc2021.json +1 -1
  218. package/dist/content/models/impactAssessmentImpacts/marineEutrophicationPotential/eutrenDmodel.json +1 -0
  219. package/dist/content/models/impactAssessmentImpacts/ozoneDepletionPotential/content.json +1 -1
  220. package/dist/content/models/impactAssessmentImpacts/ozoneDepletionPotential/edip2003.json +1 -1
  221. package/dist/content/models/impactAssessmentImpacts/scarcityWeightedWaterUse/environmentalFootprintv31.json +1 -1
  222. package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resource-use/content.json +1 -1
  223. package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resource-use/worldsteel.json +1 -0
  224. package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resourceUse/content.json +1 -1
  225. package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resourceUse/freeflow.json +1 -1
  226. package/dist/content/models/impactAssessmentResourceUse/landTransformation/landTransformation20YearAverageDuringCycle/content.json +1 -1
  227. package/dist/content/models/impactAssessmentResourceUse/landTransformation/landTransformation20YearAverageDuringCycle/hestia.json +1 -1
  228. package/dist/content/models/siteGeneral/site-measurement-value/content.json +1 -1
  229. package/dist/content/models/siteGeneral/site-measurement-value/site.json +1 -1
  230. package/dist/content/models/siteInfrastructure/content.json +1 -0
  231. package/dist/content/models/siteInfrastructure/site-infrastructure/content.json +1 -0
  232. package/dist/content/models/siteInfrastructure/site-infrastructure/kanetal2020.json +1 -0
  233. package/dist/content/models/siteManagement/landUse/hestia-management/content.json +1 -1
  234. package/dist/content/models/siteManagement/landUse/hestia-management/hestia.json +1 -1
  235. package/dist/content/models/siteMeasurements/climate/ecoClimateZone/content.json +1 -1
  236. package/dist/content/models/siteMeasurements/climate/ecoClimateZone/geospatialDatabase.json +1 -1
  237. package/dist/content/models/siteMeasurements/climate/heavyWinterPrecipitation/geospatialDatabase.json +1 -1
  238. package/dist/content/models/siteMeasurements/climate/potentialEvapotranspirationAnnual/geospatialDatabase.json +1 -1
  239. package/dist/content/models/siteMeasurements/climate/potentialEvapotranspirationMonthly/geospatialDatabase.json +1 -1
  240. package/dist/content/models/siteMeasurements/climate/precipitationAnnual/geospatialDatabase.json +1 -1
  241. package/dist/content/models/siteMeasurements/climate/precipitationLongTermAnnualMean/geospatialDatabase.json +1 -1
  242. package/dist/content/models/siteMeasurements/climate/precipitationMonthly/geospatialDatabase.json +1 -1
  243. package/dist/content/models/siteMeasurements/climate/temperatureAnnual/geospatialDatabase.json +1 -1
  244. package/dist/content/models/siteMeasurements/climate/temperatureLongTermAnnualMean/geospatialDatabase.json +1 -1
  245. package/dist/content/models/siteMeasurements/climate/temperatureMonthly/geospatialDatabase.json +1 -1
  246. package/dist/content/models/siteMeasurements/landUseChange/aboveGroundBiomass/content.json +1 -1
  247. package/dist/content/models/siteMeasurements/landUseChange/aboveGroundBiomass/ipcc2019.json +1 -1
  248. package/dist/content/models/siteMeasurements/landUseChange/belowGroundBiomass/content.json +1 -1
  249. package/dist/content/models/siteMeasurements/landUseChange/belowGroundBiomass/ipcc2019.json +1 -1
  250. package/dist/content/models/siteMeasurements/other/nutrientLossToAquaticEnvironment/geospatialDatabase.json +1 -1
  251. package/dist/content/models/siteMeasurements/soil/clayContent/content.json +1 -1
  252. package/dist/content/models/siteMeasurements/soil/clayContent/geospatialDatabase.json +1 -1
  253. package/dist/content/models/siteMeasurements/soil/histosol/geospatialDatabase.json +1 -1
  254. package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/content.json +1 -1
  255. package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/hestia.json +1 -1
  256. package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/ipcc2019Tier1.json +1 -1
  257. package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/ipcc2019Tier2.json +1 -1
  258. package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/overview.json +1 -1
  259. package/dist/content/models/siteMeasurements/soil/sandContent/content.json +1 -1
  260. package/dist/content/models/siteMeasurements/soil/sandContent/geospatialDatabase.json +1 -1
  261. package/dist/content/models/siteMeasurements/soil/siltContent/content.json +1 -1
  262. package/dist/content/models/siteMeasurements/soil/siltContent/geospatialDatabase.json +1 -1
  263. package/dist/content/models/siteMeasurements/soil/soilClassification/content.json +1 -1
  264. package/dist/content/models/siteMeasurements/soil/soilClassification/hestia.json +1 -1
  265. package/dist/content/models/siteMeasurements/soil/totalPhosphorusPerKgSoil/geospatialDatabase.json +1 -1
  266. package/dist/index.d.ts +5 -0
  267. package/dist/index.js +25 -7
  268. package/json_models/agribalyse2016/fuelElectricity.py.json +26 -0
  269. package/json_models/agribalyse2016/machineryInfrastructureDepreciatedAmountPerCycle.py.json +31 -0
  270. package/json_models/akagiEtAl2011/ch4ToAirCropResidueBurning.py.json +35 -0
  271. package/json_models/akagiEtAl2011/nh3ToAirCropResidueBurning.py.json +35 -0
  272. package/json_models/akagiEtAl2011/noxToAirCropResidueBurning.py.json +35 -0
  273. package/json_models/akagiEtAl2011/pm25ToAirCropResidueBurning.py.json +35 -0
  274. package/json_models/akagiEtAl2011/so2ToAirCropResidueBurning.py.json +35 -0
  275. package/json_models/aware/scarcityWeightedWaterUse.py.json +45 -0
  276. package/json_models/aware2_0/scarcityWeightedWaterUse.py.json +45 -0
  277. package/json_models/chaudharyBrooks2018/damageToTerrestrialEcosystemsLandOccupation.py.json +86 -0
  278. package/json_models/chaudharyBrooks2018/damageToTerrestrialEcosystemsLandTransformation.py.json +47 -0
  279. package/json_models/chaudharyBrooks2018/damageToTerrestrialEcosystemsTotalLandUseEffects.py.json +34 -0
  280. package/json_models/cml2001Baseline/abioticResourceDepletionFossilFuels.py.json +41 -0
  281. package/json_models/cml2001Baseline/abioticResourceDepletionMineralsAndMetals.py.json +39 -0
  282. package/json_models/cml2001Baseline/eutrophicationPotentialExcludingFate.py.json +21 -0
  283. package/json_models/cml2001Baseline/resourceUseEnergyDepletionDuringCycle.py.json +52 -0
  284. package/json_models/cml2001Baseline/resourceUseEnergyDepletionInputsProduction.py.json +46 -0
  285. package/json_models/cml2001Baseline/resourceUseMineralsAndMetalsDuringCycle.py.json +25 -0
  286. package/json_models/cml2001Baseline/resourceUseMineralsAndMetalsInputsProduction.py.json +46 -0
  287. package/json_models/cml2001Baseline/terrestrialAcidificationPotentialIncludingFateAverageEurope.py.json +21 -0
  288. package/json_models/cml2001NonBaseline/eutrophicationPotentialIncludingFateAverageEurope.py.json +21 -0
  289. package/json_models/cml2001NonBaseline/terrestrialAcidificationPotentialExcludingFate.py.json +21 -0
  290. package/json_models/cycle/aboveGroundCropResidueTotal.py.json +26 -0
  291. package/json_models/cycle/animal/input/hestiaAggregatedData.py.json +47 -0
  292. package/json_models/cycle/animal/input/properties.py.json +49 -0
  293. package/json_models/cycle/animal/milkYield.py.json +33 -0
  294. package/json_models/cycle/animal/properties.py.json +25 -0
  295. package/json_models/cycle/completeness/animalFeed.py.json +19 -0
  296. package/json_models/cycle/completeness/cropResidue.py.json +48 -0
  297. package/json_models/cycle/completeness/electricityFuel.py.json +26 -0
  298. package/json_models/cycle/completeness/excreta.py.json +29 -0
  299. package/json_models/cycle/completeness/freshForage.py.json +47 -0
  300. package/json_models/cycle/completeness/material.py.json +24 -0
  301. package/json_models/cycle/completeness/seed.py.json +32 -0
  302. package/json_models/cycle/completeness/soilAmendment.py.json +23 -0
  303. package/json_models/cycle/cycleDuration.py.json +30 -0
  304. package/json_models/cycle/endDate.py.json +13 -0
  305. package/json_models/cycle/input/hestiaAggregatedData.py.json +72 -0
  306. package/json_models/cycle/input/properties.py.json +39 -0
  307. package/json_models/cycle/input/value.py.json +20 -0
  308. package/json_models/cycle/otherSitesArea.py.json +34 -0
  309. package/json_models/cycle/otherSitesUnusedDuration.py.json +29 -0
  310. package/json_models/cycle/post_checks/cache.py.json +8 -0
  311. package/json_models/cycle/post_checks/otherSites.py.json +21 -0
  312. package/json_models/cycle/post_checks/site.py.json +17 -0
  313. package/json_models/cycle/practice/landCover.py.json +58 -0
  314. package/json_models/cycle/practice/value.py.json +20 -0
  315. package/json_models/cycle/pre_checks/cache_sources.py.json +8 -0
  316. package/json_models/cycle/pre_checks/otherSites.py.json +21 -0
  317. package/json_models/cycle/pre_checks/site.py.json +17 -0
  318. package/json_models/cycle/product/currency.py.json +23 -0
  319. package/json_models/cycle/product/economicValueShare.py.json +35 -0
  320. package/json_models/cycle/product/price.py.json +32 -0
  321. package/json_models/cycle/product/primary.py.json +19 -0
  322. package/json_models/cycle/product/properties.py.json +36 -0
  323. package/json_models/cycle/product/revenue.py.json +26 -0
  324. package/json_models/cycle/product/value.py.json +20 -0
  325. package/json_models/cycle/siteArea.py.json +35 -0
  326. package/json_models/cycle/siteDuration.py.json +51 -0
  327. package/json_models/cycle/siteUnusedDuration.py.json +24 -0
  328. package/json_models/cycle/startDate.py.json +16 -0
  329. package/json_models/cycle/startDateDefinition.py.json +20 -0
  330. package/json_models/cycle/transformation.py.json +26 -0
  331. package/json_models/dammgen2009/noxToAirExcreta.py.json +21 -0
  332. package/json_models/data/hestiaAggregatedData/__init__.py.json +3 -0
  333. package/json_models/deRuijterEtAl2010/nh3ToAirCropResidueDecomposition.py.json +38 -0
  334. package/json_models/ecoalimV9/cycle.py.json +54 -0
  335. package/json_models/ecoalimV9/impact_assessment.py.json +55 -0
  336. package/json_models/ecoinventV3/cycle.py.json +57 -0
  337. package/json_models/ecoinventV3AndEmberClimate/cycle.py.json +71 -0
  338. package/json_models/edip2003/ozoneDepletionPotential.py.json +23 -0
  339. package/json_models/emepEea2019/blackCarbonToAirFuelCombustion.py.json +33 -0
  340. package/json_models/emepEea2019/ch4ToAirFuelCombustion.py.json +33 -0
  341. package/json_models/emepEea2019/co2ToAirFuelCombustion.py.json +33 -0
  342. package/json_models/emepEea2019/coToAirFuelCombustion.py.json +33 -0
  343. package/json_models/emepEea2019/n2OToAirFuelCombustionDirect.py.json +33 -0
  344. package/json_models/emepEea2019/nh3ToAirExcreta.py.json +40 -0
  345. package/json_models/emepEea2019/nh3ToAirFuelCombustion.py.json +33 -0
  346. package/json_models/emepEea2019/nh3ToAirInorganicFertiliser.py.json +69 -0
  347. package/json_models/emepEea2019/nmvocToAirFuelCombustion.py.json +33 -0
  348. package/json_models/emepEea2019/noxToAirFuelCombustion.py.json +33 -0
  349. package/json_models/emepEea2019/pm10ToAirAnimalHousing.py.json +39 -0
  350. package/json_models/emepEea2019/pm10ToAirFuelCombustion.py.json +33 -0
  351. package/json_models/emepEea2019/pm25ToAirAnimalHousing.py.json +39 -0
  352. package/json_models/emepEea2019/pm25ToAirFuelCombustion.py.json +33 -0
  353. package/json_models/emepEea2019/so2ToAirFuelCombustion.py.json +33 -0
  354. package/json_models/emepEea2019/tspToAirAnimalHousing.py.json +39 -0
  355. package/json_models/emepEea2019/tspToAirFuelCombustion.py.json +33 -0
  356. package/json_models/emissionNotRelevant/__init__.py.json +33 -0
  357. package/json_models/environmentalFootprintV3_1/environmentalFootprintSingleOverallScore.py.json +26 -0
  358. package/json_models/environmentalFootprintV3_1/freshwaterEcotoxicityPotentialCtue.py.json +25 -0
  359. package/json_models/environmentalFootprintV3_1/marineEutrophicationPotential.py.json +21 -0
  360. package/json_models/environmentalFootprintV3_1/photochemicalOzoneCreationPotentialHumanHealthNmvocEq.py.json +21 -0
  361. package/json_models/environmentalFootprintV3_1/scarcityWeightedWaterUse.py.json +27 -0
  362. package/json_models/environmentalFootprintV3_1/soilQualityIndexLandOccupation.py.json +37 -0
  363. package/json_models/environmentalFootprintV3_1/soilQualityIndexLandTransformation.py.json +54 -0
  364. package/json_models/environmentalFootprintV3_1/soilQualityIndexTotalLandUseEffects.py.json +25 -0
  365. package/json_models/epa2014/no3ToGroundwaterExcreta.py.json +24 -0
  366. package/json_models/fantkeEtAl2016/damageToHumanHealthParticulateMatterFormation.py.json +21 -0
  367. package/json_models/faostat2018/coldCarcassWeightPerHead.py.json +38 -0
  368. package/json_models/faostat2018/coldDressedCarcassWeightPerHead.py.json +38 -0
  369. package/json_models/faostat2018/liveweightPerHead.py.json +46 -0
  370. package/json_models/faostat2018/product/price.py.json +45 -0
  371. package/json_models/faostat2018/readyToCookWeightPerHead.py.json +38 -0
  372. package/json_models/faostat2018/seed.py.json +29 -0
  373. package/json_models/frischknechtEtAl2000/ionisingRadiationKbqU235Eq.py.json +38 -0
  374. package/json_models/geospatialDatabase/altitude.py.json +36 -0
  375. package/json_models/geospatialDatabase/awareWaterBasinId.py.json +29 -0
  376. package/json_models/geospatialDatabase/awareWaterBasinId_v1.py.json +29 -0
  377. package/json_models/geospatialDatabase/clayContent.py.json +43 -0
  378. package/json_models/geospatialDatabase/croppingIntensity.py.json +56 -0
  379. package/json_models/geospatialDatabase/drainageClass.py.json +34 -0
  380. package/json_models/geospatialDatabase/ecoClimateZone.py.json +38 -0
  381. package/json_models/geospatialDatabase/ecoregion.py.json +29 -0
  382. package/json_models/geospatialDatabase/erodibility.py.json +34 -0
  383. package/json_models/geospatialDatabase/heavyWinterPrecipitation.py.json +34 -0
  384. package/json_models/geospatialDatabase/histosol.py.json +50 -0
  385. package/json_models/geospatialDatabase/longFallowRatio.py.json +56 -0
  386. package/json_models/geospatialDatabase/nutrientLossToAquaticEnvironment.py.json +34 -0
  387. package/json_models/geospatialDatabase/organicCarbonPerKgSoil.py.json +31 -0
  388. package/json_models/geospatialDatabase/potentialEvapotranspirationAnnual.py.json +38 -0
  389. package/json_models/geospatialDatabase/potentialEvapotranspirationLongTermAnnualMean.py.json +31 -0
  390. package/json_models/geospatialDatabase/potentialEvapotranspirationMonthly.py.json +37 -0
  391. package/json_models/geospatialDatabase/precipitationAnnual.py.json +38 -0
  392. package/json_models/geospatialDatabase/precipitationLongTermAnnualMean.py.json +31 -0
  393. package/json_models/geospatialDatabase/precipitationMonthly.py.json +37 -0
  394. package/json_models/geospatialDatabase/region.py.json +19 -0
  395. package/json_models/geospatialDatabase/sandContent.py.json +43 -0
  396. package/json_models/geospatialDatabase/siltContent.py.json +32 -0
  397. package/json_models/geospatialDatabase/slope.py.json +34 -0
  398. package/json_models/geospatialDatabase/slopeLength.py.json +34 -0
  399. package/json_models/geospatialDatabase/soilPh.py.json +31 -0
  400. package/json_models/geospatialDatabase/temperatureAnnual.py.json +38 -0
  401. package/json_models/geospatialDatabase/temperatureLongTermAnnualMean.py.json +31 -0
  402. package/json_models/geospatialDatabase/temperatureMonthly.py.json +37 -0
  403. package/json_models/geospatialDatabase/totalNitrogenPerKgSoil.py.json +31 -0
  404. package/json_models/geospatialDatabase/totalPhosphorusPerKgSoil.py.json +36 -0
  405. package/json_models/geospatialDatabase/utils.py.json +12 -0
  406. package/json_models/geospatialDatabase/waterDepth.py.json +34 -0
  407. package/json_models/globalCropWaterModel2008/rootingDepth.py.json +43 -0
  408. package/json_models/haversineFormula/transport/distance.py.json +39 -0
  409. package/json_models/hestia/aboveGroundCropResidue.py.json +26 -0
  410. package/json_models/hestia/aboveGroundCropResidueTotal.py.json +27 -0
  411. package/json_models/hestia/brackishWater.py.json +21 -0
  412. package/json_models/hestia/cationExchangeCapacityPerKgSoil.py.json +33 -0
  413. package/json_models/hestia/coldCarcassWeightPerHead.py.json +38 -0
  414. package/json_models/hestia/coldDressedCarcassWeightPerHead.py.json +38 -0
  415. package/json_models/hestia/concentrateFeed.py.json +46 -0
  416. package/json_models/hestia/cropResidueManagement.py.json +21 -0
  417. package/json_models/hestia/croppingIntensity.py.json +18 -0
  418. package/json_models/hestia/default_emissions.py.json +32 -0
  419. package/json_models/hestia/default_resourceUse.py.json +34 -0
  420. package/json_models/hestia/energyContentLowerHeatingValue.py.json +34 -0
  421. package/json_models/hestia/excretaKgMass.py.json +26 -0
  422. package/json_models/hestia/excretaKgN.py.json +22 -0
  423. package/json_models/hestia/excretaKgVs.py.json +24 -0
  424. package/json_models/hestia/feedConversionRatio/feedConversionRatioCarbon.py.json +83 -0
  425. package/json_models/hestia/feedConversionRatio/feedConversionRatioDryMatter.py.json +89 -0
  426. package/json_models/hestia/feedConversionRatio/feedConversionRatioEnergy.py.json +83 -0
  427. package/json_models/hestia/feedConversionRatio/feedConversionRatioFedWeight.py.json +80 -0
  428. package/json_models/hestia/feedConversionRatio/feedConversionRatioNitrogen.py.json +93 -0
  429. package/json_models/hestia/flowingWater.py.json +20 -0
  430. package/json_models/hestia/freshWater.py.json +21 -0
  431. package/json_models/hestia/histosol.py.json +28 -0
  432. package/json_models/hestia/inorganicFertiliser.py.json +38 -0
  433. package/json_models/hestia/irrigatedTypeUnspecified.py.json +35 -0
  434. package/json_models/hestia/landCover.py.json +65 -0
  435. package/json_models/hestia/landOccupationDuringCycle.py.json +50 -0
  436. package/json_models/hestia/landTransformation100YearAverageDuringCycle.py.json +47 -0
  437. package/json_models/hestia/landTransformation20YearAverageDuringCycle.py.json +47 -0
  438. package/json_models/hestia/liveAnimal.py.json +44 -0
  439. package/json_models/hestia/longFallowRatio.py.json +25 -0
  440. package/json_models/hestia/management.py.json +76 -0
  441. package/json_models/hestia/materialAndSubstrate.py.json +41 -0
  442. package/json_models/hestia/milkYield.py.json +51 -0
  443. package/json_models/hestia/netPrimaryProduction.py.json +21 -0
  444. package/json_models/hestia/organicCarbonPerHa.py.json +42 -0
  445. package/json_models/hestia/organicCarbonPerKgSoil.py.json +24 -0
  446. package/json_models/hestia/organicCarbonPerM3Soil.py.json +24 -0
  447. package/json_models/hestia/organicMatterPerKgSoil.py.json +24 -0
  448. package/json_models/hestia/organicMatterPerM3Soil.py.json +24 -0
  449. package/json_models/hestia/pToSurfaceWaterAquacultureSystems.py.json +82 -0
  450. package/json_models/hestia/pastureGrass.py.json +16 -0
  451. package/json_models/hestia/pastureSystem.py.json +27 -0
  452. package/json_models/hestia/potentialEvapotranspirationAnnual.py.json +22 -0
  453. package/json_models/hestia/potentialEvapotranspirationMonthly.py.json +21 -0
  454. package/json_models/hestia/precipitationAnnual.py.json +22 -0
  455. package/json_models/hestia/precipitationMonthly.py.json +21 -0
  456. package/json_models/hestia/rainfallAnnual.py.json +22 -0
  457. package/json_models/hestia/rainfallMonthly.py.json +21 -0
  458. package/json_models/hestia/readyToCookWeightPerHead.py.json +38 -0
  459. package/json_models/hestia/residueBurnt.py.json +26 -0
  460. package/json_models/hestia/residueIncorporated.py.json +37 -0
  461. package/json_models/hestia/residueLeftOnField.py.json +26 -0
  462. package/json_models/hestia/residueRemoved.py.json +50 -0
  463. package/json_models/hestia/salineWater.py.json +21 -0
  464. package/json_models/hestia/seed_emissions.py.json +68 -0
  465. package/json_models/hestia/slope.py.json +26 -0
  466. package/json_models/hestia/slopeLength.py.json +26 -0
  467. package/json_models/hestia/soilClassification.py.json +42 -0
  468. package/json_models/hestia/soilMeasurement.py.json +31 -0
  469. package/json_models/hestia/stockingDensityAnimalHousingAverage.py.json +23 -0
  470. package/json_models/hestia/temperatureAnnual.py.json +22 -0
  471. package/json_models/hestia/temperatureMonthly.py.json +21 -0
  472. package/json_models/hestia/totalNitrogenPerKgSoil.py.json +23 -0
  473. package/json_models/hestia/unknownPreSeasonWaterRegime.py.json +27 -0
  474. package/json_models/hestia/waterDepth.py.json +13 -0
  475. package/json_models/hestia/waterSalinity.py.json +49 -0
  476. package/json_models/impact_assessment/allocationMethod.py.json +19 -0
  477. package/json_models/impact_assessment/emissions.py.json +35 -0
  478. package/json_models/impact_assessment/irrigated.py.json +22 -0
  479. package/json_models/impact_assessment/organic.py.json +22 -0
  480. package/json_models/impact_assessment/post_checks/cycle.py.json +17 -0
  481. package/json_models/impact_assessment/post_checks/site.py.json +17 -0
  482. package/json_models/impact_assessment/pre_checks/cycle.py.json +17 -0
  483. package/json_models/impact_assessment/pre_checks/site.py.json +17 -0
  484. package/json_models/impact_assessment/product/economicValueShare.py.json +26 -0
  485. package/json_models/impact_assessment/product/value.py.json +26 -0
  486. package/json_models/ipcc2006/aboveGroundCropResidueRemoved.py.json +32 -0
  487. package/json_models/ipcc2006/aboveGroundCropResidueTotal.py.json +35 -0
  488. package/json_models/ipcc2006/belowGroundCropResidue.py.json +36 -0
  489. package/json_models/ipcc2006/n2OToAirCropResidueDecompositionDirect.py.json +43 -0
  490. package/json_models/ipcc2006/n2OToAirCropResidueDecompositionIndirect.py.json +32 -0
  491. package/json_models/ipcc2006/n2OToAirExcretaDirect.py.json +31 -0
  492. package/json_models/ipcc2006/n2OToAirExcretaIndirect.py.json +32 -0
  493. package/json_models/ipcc2006/n2OToAirInorganicFertiliserDirect.py.json +50 -0
  494. package/json_models/ipcc2006/n2OToAirInorganicFertiliserIndirect.py.json +64 -0
  495. package/json_models/ipcc2006/n2OToAirOrganicFertiliserDirect.py.json +46 -0
  496. package/json_models/ipcc2006/n2OToAirOrganicFertiliserIndirect.py.json +60 -0
  497. package/json_models/ipcc2006/utils.py.json +14 -0
  498. package/json_models/ipcc2013ExcludingFeedbacks/gwp100.py.json +21 -0
  499. package/json_models/ipcc2013IncludingFeedbacks/gwp100.py.json +21 -0
  500. package/json_models/ipcc2019/aboveGroundBiomass.py.json +76 -0
  501. package/json_models/ipcc2019/aboveGroundCropResidueTotal.py.json +37 -0
  502. package/json_models/ipcc2019/animal/fatContent.py.json +41 -0
  503. package/json_models/ipcc2019/animal/hoursWorkedPerDay.py.json +43 -0
  504. package/json_models/ipcc2019/animal/liveweightGain.py.json +43 -0
  505. package/json_models/ipcc2019/animal/liveweightPerHead.py.json +43 -0
  506. package/json_models/ipcc2019/animal/milkYieldPerAnimal.py.json +44 -0
  507. package/json_models/ipcc2019/animal/pastureGrass.py.json +164 -0
  508. package/json_models/ipcc2019/animal/pregnancyRateTotal.py.json +43 -0
  509. package/json_models/ipcc2019/animal/trueProteinContent.py.json +41 -0
  510. package/json_models/ipcc2019/animal/weightAtMaturity.py.json +52 -0
  511. package/json_models/ipcc2019/belowGroundBiomass.py.json +65 -0
  512. package/json_models/ipcc2019/belowGroundCropResidue.py.json +43 -0
  513. package/json_models/ipcc2019/biocharOrganicCarbonPerHa.py.json +49 -0
  514. package/json_models/ipcc2019/biomass_utils.py.json +30 -0
  515. package/json_models/ipcc2019/burning_utils.py.json +8 -0
  516. package/json_models/ipcc2019/carbonContent.py.json +56 -0
  517. package/json_models/ipcc2019/ch4ToAirAquacultureSystems.py.json +36 -0
  518. package/json_models/ipcc2019/ch4ToAirEntericFermentation.py.json +112 -0
  519. package/json_models/ipcc2019/ch4ToAirExcreta.py.json +49 -0
  520. package/json_models/ipcc2019/ch4ToAirFloodedRice.py.json +105 -0
  521. package/json_models/ipcc2019/ch4ToAirOrganicSoilCultivation.py.json +107 -0
  522. package/json_models/ipcc2019/co2ToAirAboveGroundBiomassStockChange.py.json +37 -0
  523. package/json_models/ipcc2019/co2ToAirBelowGroundBiomassStockChange.py.json +38 -0
  524. package/json_models/ipcc2019/co2ToAirBiocharStockChange.py.json +38 -0
  525. package/json_models/ipcc2019/co2ToAirCarbonStockChange_utils.py.json +6 -0
  526. package/json_models/ipcc2019/co2ToAirLimeNeutralisation.py.json +26 -0
  527. package/json_models/ipcc2019/co2ToAirOrganicSoilCultivation.py.json +104 -0
  528. package/json_models/ipcc2019/co2ToAirSoilOrganicCarbonStockChange.py.json +38 -0
  529. package/json_models/ipcc2019/co2ToAirUreaHydrolysis.py.json +29 -0
  530. package/json_models/ipcc2019/croppingDuration.py.json +45 -0
  531. package/json_models/ipcc2019/emissionsToAirOrganicSoilBurning.py.json +66 -0
  532. package/json_models/ipcc2019/ligninContent.py.json +56 -0
  533. package/json_models/ipcc2019/n2OToAirAquacultureSystemsIndirect.py.json +54 -0
  534. package/json_models/ipcc2019/n2OToAirCropResidueBurningDirect.py.json +32 -0
  535. package/json_models/ipcc2019/n2OToAirCropResidueBurningIndirect.py.json +49 -0
  536. package/json_models/ipcc2019/n2OToAirCropResidueDecompositionDirect.py.json +70 -0
  537. package/json_models/ipcc2019/n2OToAirCropResidueDecompositionIndirect.py.json +53 -0
  538. package/json_models/ipcc2019/n2OToAirDiminishingSoilCarbonStocksDirect.py.json +69 -0
  539. package/json_models/ipcc2019/n2OToAirExcretaDirect.py.json +34 -0
  540. package/json_models/ipcc2019/n2OToAirExcretaIndirect.py.json +53 -0
  541. package/json_models/ipcc2019/n2OToAirFuelCombustionIndirect.py.json +71 -0
  542. package/json_models/ipcc2019/n2OToAirInorganicFertiliserDirect.py.json +87 -0
  543. package/json_models/ipcc2019/n2OToAirInorganicFertiliserIndirect.py.json +53 -0
  544. package/json_models/ipcc2019/n2OToAirNaturalVegetationBurningIndirect.py.json +49 -0
  545. package/json_models/ipcc2019/n2OToAirOrganicFertiliserDirect.py.json +87 -0
  546. package/json_models/ipcc2019/n2OToAirOrganicFertiliserIndirect.py.json +53 -0
  547. package/json_models/ipcc2019/n2OToAirOrganicSoilBurningIndirect.py.json +49 -0
  548. package/json_models/ipcc2019/n2OToAirOrganicSoilCultivationDirect.py.json +101 -0
  549. package/json_models/ipcc2019/n2OToAirOrganicSoilCultivationIndirect.py.json +49 -0
  550. package/json_models/ipcc2019/nh3ToAirInorganicFertiliser.py.json +58 -0
  551. package/json_models/ipcc2019/nh3ToAirOrganicFertiliser.py.json +55 -0
  552. package/json_models/ipcc2019/nitrogenContent.py.json +56 -0
  553. package/json_models/ipcc2019/no3ToGroundwaterCropResidueDecomposition.py.json +56 -0
  554. package/json_models/ipcc2019/no3ToGroundwaterExcreta.py.json +68 -0
  555. package/json_models/ipcc2019/no3ToGroundwaterInorganicFertiliser.py.json +71 -0
  556. package/json_models/ipcc2019/no3ToGroundwaterOrganicFertiliser.py.json +67 -0
  557. package/json_models/ipcc2019/nonCo2EmissionsToAirNaturalVegetationBurning.py.json +68 -0
  558. package/json_models/ipcc2019/noxToAirInorganicFertiliser.py.json +58 -0
  559. package/json_models/ipcc2019/noxToAirOrganicFertiliser.py.json +55 -0
  560. package/json_models/ipcc2019/organicCarbonPerHa.py.json +150 -0
  561. package/json_models/ipcc2019/organicCarbonPerHa_tier_1.py.json +150 -0
  562. package/json_models/ipcc2019/organicCarbonPerHa_tier_2.py.json +256 -0
  563. package/json_models/ipcc2019/organicSoilCultivation_utils.py.json +10 -0
  564. package/json_models/ipcc2019/pastureGrass.py.json +168 -0
  565. package/json_models/ipcc2021/gwp100.py.json +21 -0
  566. package/json_models/jarvisAndPain1994/n2ToAirExcreta.py.json +21 -0
  567. package/json_models/kanEtAl2020/infrastructure.py.json +35 -0
  568. package/json_models/koble2014/cropResidueManagement.py.json +28 -0
  569. package/json_models/koble2014/residueBurnt.py.json +28 -0
  570. package/json_models/koble2014/residueLeftOnField.py.json +14 -0
  571. package/json_models/koble2014/residueRemoved.py.json +25 -0
  572. package/json_models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsClimateChange.py.json +21 -0
  573. package/json_models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py.json +25 -0
  574. package/json_models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsFreshwaterEutrophication.py.json +28 -0
  575. package/json_models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsPdfYear.py.json +24 -0
  576. package/json_models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsWaterStress.py.json +28 -0
  577. package/json_models/lcImpactAllEffects100Years/damageToHumanHealth.py.json +24 -0
  578. package/json_models/lcImpactAllEffects100Years/damageToHumanHealthClimateChange.py.json +21 -0
  579. package/json_models/lcImpactAllEffects100Years/damageToHumanHealthHumanToxicityCancerogenic.py.json +25 -0
  580. package/json_models/lcImpactAllEffects100Years/damageToHumanHealthHumanToxicityNonCancerogenic.py.json +25 -0
  581. package/json_models/lcImpactAllEffects100Years/damageToHumanHealthParticulateMatterFormation.py.json +28 -0
  582. package/json_models/lcImpactAllEffects100Years/damageToHumanHealthPhotochemicalOzoneFormation.py.json +28 -0
  583. package/json_models/lcImpactAllEffects100Years/damageToHumanHealthStratosphericOzoneDepletion.py.json +21 -0
  584. package/json_models/lcImpactAllEffects100Years/damageToHumanHealthWaterStress.py.json +33 -0
  585. package/json_models/lcImpactAllEffects100Years/damageToMarineEcosystemsMarineEcotoxicity.py.json +25 -0
  586. package/json_models/lcImpactAllEffects100Years/damageToMarineEcosystemsMarineEutrophication.py.json +28 -0
  587. package/json_models/lcImpactAllEffects100Years/damageToMarineEcosystemsPdfYear.py.json +24 -0
  588. package/json_models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsClimateChange.py.json +21 -0
  589. package/json_models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsPdfYear.py.json +24 -0
  590. package/json_models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py.json +28 -0
  591. package/json_models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsTerrestrialAcidification.py.json +28 -0
  592. package/json_models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py.json +25 -0
  593. package/json_models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsClimateChange.py.json +21 -0
  594. package/json_models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py.json +25 -0
  595. package/json_models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEutrophication.py.json +28 -0
  596. package/json_models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsPdfYear.py.json +24 -0
  597. package/json_models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsWaterStress.py.json +28 -0
  598. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealth.py.json +24 -0
  599. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealthClimateChange.py.json +21 -0
  600. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealthHumanToxicityCancerogenic.py.json +25 -0
  601. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealthHumanToxicityNonCancerogenic.py.json +25 -0
  602. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealthParticulateMatterFormation.py.json +28 -0
  603. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealthPhotochemicalOzoneFormation.py.json +28 -0
  604. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealthStratosphericOzoneDepletion.py.json +21 -0
  605. package/json_models/lcImpactAllEffectsInfinite/damageToHumanHealthWaterStress.py.json +33 -0
  606. package/json_models/lcImpactAllEffectsInfinite/damageToMarineEcosystemsMarineEcotoxicity.py.json +25 -0
  607. package/json_models/lcImpactAllEffectsInfinite/damageToMarineEcosystemsMarineEutrophication.py.json +28 -0
  608. package/json_models/lcImpactAllEffectsInfinite/damageToMarineEcosystemsPdfYear.py.json +24 -0
  609. package/json_models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsClimateChange.py.json +21 -0
  610. package/json_models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsPdfYear.py.json +24 -0
  611. package/json_models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py.json +28 -0
  612. package/json_models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialAcidification.py.json +28 -0
  613. package/json_models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py.json +25 -0
  614. package/json_models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py.json +25 -0
  615. package/json_models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsFreshwaterEutrophication.py.json +28 -0
  616. package/json_models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsPdfYear.py.json +24 -0
  617. package/json_models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsWaterStress.py.json +28 -0
  618. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealth.py.json +24 -0
  619. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealthClimateChange.py.json +21 -0
  620. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealthHumanToxicityCancerogenic.py.json +25 -0
  621. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealthHumanToxicityNonCancerogenic.py.json +25 -0
  622. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealthParticulateMatterFormation.py.json +28 -0
  623. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealthPhotochemicalOzoneFormation.py.json +28 -0
  624. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealthStratosphericOzoneDepletion.py.json +21 -0
  625. package/json_models/lcImpactCertainEffects100Years/damageToHumanHealthWaterStress.py.json +33 -0
  626. package/json_models/lcImpactCertainEffects100Years/damageToMarineEcosystemsMarineEcotoxicity.py.json +25 -0
  627. package/json_models/lcImpactCertainEffects100Years/damageToMarineEcosystemsMarineEutrophication.py.json +28 -0
  628. package/json_models/lcImpactCertainEffects100Years/damageToMarineEcosystemsPdfYear.py.json +24 -0
  629. package/json_models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsClimateChange.py.json +21 -0
  630. package/json_models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsPdfYear.py.json +24 -0
  631. package/json_models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py.json +28 -0
  632. package/json_models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsTerrestrialAcidification.py.json +28 -0
  633. package/json_models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py.json +25 -0
  634. package/json_models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py.json +25 -0
  635. package/json_models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEutrophication.py.json +28 -0
  636. package/json_models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsPdfYear.py.json +24 -0
  637. package/json_models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsWaterStress.py.json +28 -0
  638. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealth.py.json +24 -0
  639. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealthClimateChange.py.json +21 -0
  640. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealthHumanToxicityCancerogenic.py.json +25 -0
  641. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealthHumanToxicityNonCancerogenic.py.json +25 -0
  642. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealthParticulateMatterFormation.py.json +28 -0
  643. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealthPhotochemicalOzoneFormation.py.json +28 -0
  644. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealthStratosphericOzoneDepletion.py.json +21 -0
  645. package/json_models/lcImpactCertainEffectsInfinite/damageToHumanHealthWaterStress.py.json +33 -0
  646. package/json_models/lcImpactCertainEffectsInfinite/damageToMarineEcosystemsMarineEcotoxicity.py.json +25 -0
  647. package/json_models/lcImpactCertainEffectsInfinite/damageToMarineEcosystemsMarineEutrophication.py.json +28 -0
  648. package/json_models/lcImpactCertainEffectsInfinite/damageToMarineEcosystemsPdfYear.py.json +24 -0
  649. package/json_models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsClimateChange.py.json +21 -0
  650. package/json_models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsPdfYear.py.json +24 -0
  651. package/json_models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py.json +28 -0
  652. package/json_models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialAcidification.py.json +28 -0
  653. package/json_models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py.json +25 -0
  654. package/json_models/linkedImpactAssessment/emissions.py.json +57 -0
  655. package/json_models/linkedImpactAssessment/freshwaterWithdrawalsInputsProduction.py.json +46 -0
  656. package/json_models/linkedImpactAssessment/landOccupationInputsProduction.py.json +47 -0
  657. package/json_models/linkedImpactAssessment/landTransformation100YearAverageInputsProduction.py.json +48 -0
  658. package/json_models/linkedImpactAssessment/landTransformation20YearAverageInputsProduction.py.json +48 -0
  659. package/json_models/mocking/build_mock_search.py.json +3 -0
  660. package/json_models/pefcrGuidanceDocument2017/pesticideToAirPesticideApplication.py.json +28 -0
  661. package/json_models/pefcrGuidanceDocument2017/pesticideToSoilPesticideApplication.py.json +28 -0
  662. package/json_models/pefcrGuidanceDocument2017/pesticideToWaterPesticideApplication.py.json +28 -0
  663. package/json_models/pooreNemecek2018/aboveGroundCropResidueTotal.py.json +17 -0
  664. package/json_models/pooreNemecek2018/belowGroundCropResidue.py.json +17 -0
  665. package/json_models/pooreNemecek2018/ch4ToAirAquacultureSystems.py.json +74 -0
  666. package/json_models/pooreNemecek2018/excretaKgN.py.json +108 -0
  667. package/json_models/pooreNemecek2018/excretaKgVs.py.json +157 -0
  668. package/json_models/pooreNemecek2018/freshwaterWithdrawalsDuringCycle.py.json +54 -0
  669. package/json_models/pooreNemecek2018/landOccupationDuringCycle.py.json +70 -0
  670. package/json_models/pooreNemecek2018/longFallowDuration.py.json +23 -0
  671. package/json_models/pooreNemecek2018/n2OToAirAquacultureSystemsDirect.py.json +45 -0
  672. package/json_models/pooreNemecek2018/n2ToAirAquacultureSystems.py.json +45 -0
  673. package/json_models/pooreNemecek2018/nh3ToAirAquacultureSystems.py.json +61 -0
  674. package/json_models/pooreNemecek2018/no3ToGroundwaterCropResidueDecomposition.py.json +55 -0
  675. package/json_models/pooreNemecek2018/no3ToGroundwaterExcreta.py.json +74 -0
  676. package/json_models/pooreNemecek2018/no3ToGroundwaterInorganicFertiliser.py.json +70 -0
  677. package/json_models/pooreNemecek2018/no3ToGroundwaterOrganicFertiliser.py.json +70 -0
  678. package/json_models/pooreNemecek2018/no3ToGroundwaterSoilFlux_utils.py.json +81 -0
  679. package/json_models/pooreNemecek2018/noxToAirAquacultureSystems.py.json +54 -0
  680. package/json_models/pooreNemecek2018/nurseryDensity.py.json +23 -0
  681. package/json_models/pooreNemecek2018/nurseryDuration.py.json +23 -0
  682. package/json_models/pooreNemecek2018/plantationDensity.py.json +23 -0
  683. package/json_models/pooreNemecek2018/plantationLifespan.py.json +23 -0
  684. package/json_models/pooreNemecek2018/plantationProductiveLifespan.py.json +23 -0
  685. package/json_models/pooreNemecek2018/rotationDuration.py.json +26 -0
  686. package/json_models/pooreNemecek2018/saplingsDepreciatedAmountPerCycle.py.json +32 -0
  687. package/json_models/poschEtAl2008/terrestrialAcidificationPotentialAccumulatedExceedance.py.json +34 -0
  688. package/json_models/poschEtAl2008/terrestrialEutrophicationPotentialAccumulatedExceedance.py.json +34 -0
  689. package/json_models/recipe2016Egalitarian/damageToFreshwaterEcosystemsSpeciesYear.py.json +24 -0
  690. package/json_models/recipe2016Egalitarian/damageToHumanHealth.py.json +24 -0
  691. package/json_models/recipe2016Egalitarian/damageToMarineEcosystemsSpeciesYear.py.json +24 -0
  692. package/json_models/recipe2016Egalitarian/damageToResourceAvailability.py.json +25 -0
  693. package/json_models/recipe2016Egalitarian/damageToTerrestrialEcosystemsSpeciesYear.py.json +24 -0
  694. package/json_models/recipe2016Egalitarian/ecosystemDamageOzoneFormation.py.json +33 -0
  695. package/json_models/recipe2016Egalitarian/fossilResourceScarcity.py.json +25 -0
  696. package/json_models/recipe2016Egalitarian/freshwaterAquaticEcotoxicityPotential14Dcbeq.py.json +25 -0
  697. package/json_models/recipe2016Egalitarian/freshwaterEutrophicationPotential.py.json +21 -0
  698. package/json_models/recipe2016Egalitarian/humanCarcinogenicToxicity.py.json +25 -0
  699. package/json_models/recipe2016Egalitarian/humanDamageOzoneFormation.py.json +33 -0
  700. package/json_models/recipe2016Egalitarian/humanNonCarcinogenicToxicity.py.json +25 -0
  701. package/json_models/recipe2016Egalitarian/marineAquaticEcotoxicityPotential14Dcbeq.py.json +25 -0
  702. package/json_models/recipe2016Egalitarian/marineEutrophicationPotential.py.json +21 -0
  703. package/json_models/recipe2016Egalitarian/ozoneDepletionPotential.py.json +21 -0
  704. package/json_models/recipe2016Egalitarian/terrestrialAcidificationPotential.py.json +21 -0
  705. package/json_models/recipe2016Egalitarian/terrestrialEcotoxicityPotential14Dcbeq.py.json +25 -0
  706. package/json_models/recipe2016Hierarchist/damageToFreshwaterEcosystemsSpeciesYear.py.json +24 -0
  707. package/json_models/recipe2016Hierarchist/damageToHumanHealth.py.json +24 -0
  708. package/json_models/recipe2016Hierarchist/damageToMarineEcosystemsSpeciesYear.py.json +24 -0
  709. package/json_models/recipe2016Hierarchist/damageToResourceAvailability.py.json +25 -0
  710. package/json_models/recipe2016Hierarchist/damageToTerrestrialEcosystemsSpeciesYear.py.json +24 -0
  711. package/json_models/recipe2016Hierarchist/ecosystemDamageOzoneFormation.py.json +33 -0
  712. package/json_models/recipe2016Hierarchist/fossilResourceScarcity.py.json +25 -0
  713. package/json_models/recipe2016Hierarchist/freshwaterAquaticEcotoxicityPotential14Dcbeq.py.json +25 -0
  714. package/json_models/recipe2016Hierarchist/freshwaterEutrophicationPotential.py.json +21 -0
  715. package/json_models/recipe2016Hierarchist/humanCarcinogenicToxicity.py.json +25 -0
  716. package/json_models/recipe2016Hierarchist/humanDamageOzoneFormation.py.json +33 -0
  717. package/json_models/recipe2016Hierarchist/humanNonCarcinogenicToxicity.py.json +25 -0
  718. package/json_models/recipe2016Hierarchist/marineAquaticEcotoxicityPotential14Dcbeq.py.json +25 -0
  719. package/json_models/recipe2016Hierarchist/marineEutrophicationPotential.py.json +21 -0
  720. package/json_models/recipe2016Hierarchist/ozoneDepletionPotential.py.json +21 -0
  721. package/json_models/recipe2016Hierarchist/terrestrialAcidificationPotential.py.json +21 -0
  722. package/json_models/recipe2016Hierarchist/terrestrialEcotoxicityPotential14Dcbeq.py.json +25 -0
  723. package/json_models/recipe2016Individualist/damageToFreshwaterEcosystemsSpeciesYear.py.json +24 -0
  724. package/json_models/recipe2016Individualist/damageToHumanHealth.py.json +24 -0
  725. package/json_models/recipe2016Individualist/damageToMarineEcosystemsSpeciesYear.py.json +24 -0
  726. package/json_models/recipe2016Individualist/damageToResourceAvailability.py.json +25 -0
  727. package/json_models/recipe2016Individualist/damageToTerrestrialEcosystemsSpeciesYear.py.json +24 -0
  728. package/json_models/recipe2016Individualist/ecosystemDamageOzoneFormation.py.json +33 -0
  729. package/json_models/recipe2016Individualist/fossilResourceScarcity.py.json +25 -0
  730. package/json_models/recipe2016Individualist/freshwaterAquaticEcotoxicityPotential14Dcbeq.py.json +25 -0
  731. package/json_models/recipe2016Individualist/freshwaterEutrophicationPotential.py.json +21 -0
  732. package/json_models/recipe2016Individualist/humanCarcinogenicToxicity.py.json +25 -0
  733. package/json_models/recipe2016Individualist/humanDamageOzoneFormation.py.json +33 -0
  734. package/json_models/recipe2016Individualist/humanNonCarcinogenicToxicity.py.json +25 -0
  735. package/json_models/recipe2016Individualist/marineAquaticEcotoxicityPotential14Dcbeq.py.json +25 -0
  736. package/json_models/recipe2016Individualist/marineEutrophicationPotential.py.json +21 -0
  737. package/json_models/recipe2016Individualist/ozoneDepletionPotential.py.json +21 -0
  738. package/json_models/recipe2016Individualist/terrestrialAcidificationPotential.py.json +21 -0
  739. package/json_models/recipe2016Individualist/terrestrialEcotoxicityPotential14Dcbeq.py.json +25 -0
  740. package/json_models/requirements.py.json +3 -0
  741. package/json_models/resourceUseNotRelevant/__init__.py.json +25 -0
  742. package/json_models/schererPfister2015/nErosionSoilFlux.py.json +82 -0
  743. package/json_models/schererPfister2015/pErosionSoilFlux.py.json +82 -0
  744. package/json_models/schererPfister2015/pToDrainageWaterSoilFlux.py.json +51 -0
  745. package/json_models/schererPfister2015/pToGroundwaterSoilFlux.py.json +39 -0
  746. package/json_models/schererPfister2015/pToSurfaceWaterSoilFlux.py.json +51 -0
  747. package/json_models/schmidt2007/ch4ToAirWasteTreatment.py.json +23 -0
  748. package/json_models/schmidt2007/h2SToAirWasteTreatment.py.json +23 -0
  749. package/json_models/schmidt2007/n2OToAirWasteTreatmentDirect.py.json +23 -0
  750. package/json_models/schmidt2007/nh3ToAirWasteTreatment.py.json +23 -0
  751. package/json_models/site/defaultMethodClassification.py.json +15 -0
  752. package/json_models/site/defaultMethodClassificationDescription.py.json +16 -0
  753. package/json_models/site/grouped_measurement.py.json +31 -0
  754. package/json_models/site/measurement/value.py.json +20 -0
  755. package/json_models/site/post_checks/cache.py.json +8 -0
  756. package/json_models/site/pre_checks/cache_geospatialDatabase.py.json +24 -0
  757. package/json_models/site/pre_checks/cache_sources.py.json +8 -0
  758. package/json_models/site/pre_checks/cache_years.py.json +8 -0
  759. package/json_models/stehfestBouwman2006/n2OToAirCropResidueDecompositionDirect.py.json +69 -0
  760. package/json_models/stehfestBouwman2006/n2OToAirExcretaDirect.py.json +90 -0
  761. package/json_models/stehfestBouwman2006/n2OToAirInorganicFertiliserDirect.py.json +86 -0
  762. package/json_models/stehfestBouwman2006/n2OToAirOrganicFertiliserDirect.py.json +86 -0
  763. package/json_models/stehfestBouwman2006/n2OToAirSoilFlux_utils.py.json +105 -0
  764. package/json_models/stehfestBouwman2006/noxToAirCropResidueDecomposition.py.json +48 -0
  765. package/json_models/stehfestBouwman2006/noxToAirExcreta.py.json +69 -0
  766. package/json_models/stehfestBouwman2006/noxToAirInorganicFertiliser.py.json +65 -0
  767. package/json_models/stehfestBouwman2006/noxToAirOrganicFertiliser.py.json +65 -0
  768. package/json_models/stehfestBouwman2006/noxToAirSoilFlux_utils.py.json +76 -0
  769. package/json_models/stehfestBouwman2006GisImplementation/noxToAirCropResidueDecomposition.py.json +40 -0
  770. package/json_models/stehfestBouwman2006GisImplementation/noxToAirExcreta.py.json +61 -0
  771. package/json_models/stehfestBouwman2006GisImplementation/noxToAirInorganicFertiliser.py.json +57 -0
  772. package/json_models/stehfestBouwman2006GisImplementation/noxToAirOrganicFertiliser.py.json +57 -0
  773. package/json_models/stehfestBouwman2006GisImplementation/noxToAirSoilFlux_utils.py.json +68 -0
  774. package/json_models/transformation/input/excreta.py.json +40 -0
  775. package/json_models/transformation/input/max.py.json +36 -0
  776. package/json_models/transformation/input/min.py.json +36 -0
  777. package/json_models/transformation/input/properties.py.json +36 -0
  778. package/json_models/transformation/input/sd.py.json +36 -0
  779. package/json_models/transformation/input/value.py.json +36 -0
  780. package/json_models/transformation/product/excreta.py.json +31 -0
  781. package/json_models/usetoxV2/freshwaterEcotoxicityPotentialCtue.py.json +25 -0
  782. package/json_models/utils/background_emissions.py.json +5 -0
  783. package/json_models/utils/feedipedia.py.json +3 -0
  784. package/json_models/webbEtAl2012AndSintermannEtAl2012/nh3ToAirOrganicFertiliser.py.json +44 -0
  785. package/json_models/worldSteel/cycle.py.json +36 -0
  786. package/json_models/worldSteel/impact_assessment.py.json +38 -0
  787. package/package.json +2 -1
  788. package/dist/content/guide/aggregation-engine/animalProduct.json +0 -1
  789. package/dist/content/guide/applying-models/content.json +0 -1
  790. package/dist/content/guide/applying-models/faq.json +0 -1
  791. package/dist/content/guide/applying-models/file-validation.json +0 -1
  792. package/dist/content/guide/applying-models/introduction.json +0 -1
  793. package/dist/content/guide/applying-models/utils.json +0 -1
  794. package/dist/content/guide/faq/content.json +0 -1
  795. package/dist/content/guide/hestia-101/content.json +0 -1
  796. package/dist/content/models/cycleAnimals/fatContent/content.json +0 -1
  797. package/dist/content/models/cycleAnimals/fatContent/ipcc2019.json +0 -1
  798. package/dist/content/models/cycleAnimals/hoursWorkedPerDay/content.json +0 -1
  799. package/dist/content/models/cycleAnimals/hoursWorkedPerDay/ipcc2019.json +0 -1
  800. package/dist/content/models/cycleAnimals/ipcc2019-animal-milkYieldPerAnimal/content.json +0 -1
  801. package/dist/content/models/cycleAnimals/ipcc2019-animal-milkYieldPerAnimal/ipcc2019.json +0 -1
  802. package/dist/content/models/cycleAnimals/liveweightGain/content.json +0 -1
  803. package/dist/content/models/cycleAnimals/liveweightGain/ipcc2019.json +0 -1
  804. package/dist/content/models/cycleAnimals/pregnancyRateTotal/content.json +0 -1
  805. package/dist/content/models/cycleAnimals/pregnancyRateTotal/ipcc2019.json +0 -1
  806. package/dist/content/models/cycleAnimals/trueProteinContent/content.json +0 -1
  807. package/dist/content/models/cycleAnimals/trueProteinContent/ipcc2019.json +0 -1
  808. package/dist/content/models/cycleAnimals/weightAtMaturity/content.json +0 -1
  809. package/dist/content/models/cycleAnimals/weightAtMaturity/ipcc2019.json +0 -1
  810. package/dist/content/models/cycleEmissions/landUseChange/nonCo2EmissionsToAirNaturalVegetationBurning/overview.json +0 -1
  811. package/dist/content/models/cycleEmissions/organicSoil/co2ToAirSoilOrganicCarbonStockChange/content.json +0 -1
  812. package/dist/content/models/cycleEmissions/organicSoil/co2ToAirSoilOrganicCarbonStockChange/ipcc2019.json +0 -1
  813. package/dist/content/models/cycleEmissions/other/co2ToAirLimeHydrolysis/ipcc2019.json +0 -1
  814. package/dist/content/models/impactAssessmentImpacts/abioticResourceDepletionFossilFuels/cml2001Baseline.json +0 -1
  815. package/dist/content/models/impactAssessmentImpacts/abioticResourceDepletionFossilFuels/content.json +0 -1
  816. package/dist/content/models/impactAssessmentImpacts/abioticResourceDepletionMineralsAndMetals/cml2001Baseline.json +0 -1
  817. package/dist/content/models/impactAssessmentImpacts/abioticResourceDepletionMineralsAndMetals/content.json +0 -1
  818. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintSingleOverallScore/content.json +0 -1
  819. package/dist/content/models/impactAssessmentImpacts/environmentalFootprintSingleOverallScore/environmentalFootprintv31.json +0 -1
  820. package/dist/content/models/impactAssessmentImpacts/ionisingRadiationKbqU235Eq/content.json +0 -1
  821. package/dist/content/models/impactAssessmentImpacts/ionisingRadiationKbqU235Eq/frischknechtetal2000.json +0 -1
  822. package/dist/content/models/impactAssessmentImpacts/marineEutrophicationPotential/environmentalFootprintv31.json +0 -1
  823. package/dist/content/models/impactAssessmentImpacts/photochemicalOzoneCreationPotentialHumanHealthNmvocEq/content.json +0 -1
  824. package/dist/content/models/impactAssessmentImpacts/photochemicalOzoneCreationPotentialHumanHealthNmvocEq/environmentalFootprintv31.json +0 -1
  825. package/dist/content/models/impactAssessmentImpacts/soilQualityIndexLandOccupation/content.json +0 -1
  826. package/dist/content/models/impactAssessmentImpacts/soilQualityIndexLandOccupation/environmentalFootprintv31.json +0 -1
  827. package/dist/content/models/impactAssessmentImpacts/soilQualityIndexLandTransformation/content.json +0 -1
  828. package/dist/content/models/impactAssessmentImpacts/soilQualityIndexLandTransformation/environmentalFootprintv31.json +0 -1
  829. package/dist/content/models/impactAssessmentImpacts/soilQualityIndexTotalLandUseEffects/content.json +0 -1
  830. package/dist/content/models/impactAssessmentImpacts/soilQualityIndexTotalLandUseEffects/environmentalFootprintv31.json +0 -1
  831. package/dist/content/models/impactAssessmentImpacts/terrestrialAcidificationPotentialAccumulatedExceedance/content.json +0 -1
  832. package/dist/content/models/impactAssessmentImpacts/terrestrialAcidificationPotentialAccumulatedExceedance/poschetal2008.json +0 -1
  833. package/dist/content/models/impactAssessmentImpacts/terrestrialEutrophicationPotentialAccumulatedExceedance/content.json +0 -1
  834. package/dist/content/models/impactAssessmentImpacts/terrestrialEutrophicationPotentialAccumulatedExceedance/poschetal2008.json +0 -1
  835. /package/dist/content/{guide → models}/applying-models/contributing.json +0 -0
  836. /package/dist/content/{guide → models}/applying-models/logs.json +0 -0
  837. /package/dist/content/{guide → models}/applying-models/monte-carlo.json +0 -0
  838. /package/dist/content/models/cycleEmissions/other/{co2ToAirLimeHydrolysis → co2ToAirLimeNeutralisation}/content.json +0 -0
@@ -1 +1 @@
1
- {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Climate"],"tab":["Geospatial Database"],"modelId":["temperatureMonthly"],"citation":["[Copernicus Climate Change Service (C3S) (2017) ERA5: Fifth generation of ECMWF atmospheric reanalyses of the global climate](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5)"]},"content":"# Temperature (monthly)\n\nMust be associated with at least 1 `Cycle` that has an [endDate](https://hestia.earth/schema/Cycle#endDate) after `1979-01-01` and before `2020-06-01`.\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/temperatureMonthly\">temperatureMonthly</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/vlt3q5izjnre\">Copernicus Climate Change Service (C3S) (2017)</a></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code> <strong>or</strong> <code>animal housing</code> <strong>or</strong> <code>pond</code> <strong>or</strong> <code>river or stream</code> <strong>or</strong> <code>lake</code> <strong>or</strong> <code>sea or ocean</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Earth Engine dataset used</span>\n </div>\n <div class=\"collapsible-content\">\n <p>\n <span>This model is using the following dataset from Earth Engine:&nbsp;</span>\n <a href=\"https://developers.google.com/s/results/earth-engine/datasets?q=ECMWF%2FERA5_LAND%2FMONTHLY_AGGR\">ECMWF/ERA5_LAND/MONTHLY_AGGR</a>\n </p>\n </div>\n </div>\n</div>"}
1
+ {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Climate"],"tab":["Geospatial Database"],"modelId":["temperatureMonthly"]},"content":"# Temperature (monthly)\n\nMust be associated with at least 1 `Cycle` that has an [endDate](/schema/Cycle#endDate) after `1979-01-01` and before `2020-06-01`.\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/temperatureMonthly\">temperatureMonthly</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code> <strong>or</strong> <code>animal housing</code> <strong>or</strong> <code>pond</code> <strong>or</strong> <code>river or stream</code> <strong>or</strong> <code>lake</code> <strong>or</strong> <code>sea or ocean</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Earth Engine dataset used</span>\n </div>\n <div class=\"collapsible-content\">\n <p>\n <span>This model is using the following dataset from Earth Engine:&nbsp;</span>\n <a href=\"https://developers.google.com/s/results/earth-engine/datasets?q=ECMWF%2FERA5_LAND%2FMONTHLY_AGGR\">ECMWF/ERA5_LAND/MONTHLY_AGGR</a>\n </p>\n </div>\n </div>\n</div>"}
@@ -1 +1 @@
1
- {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Above ground biomass modelling on HESTIA."]},"content":"# Above ground biomass\n\n## Overview\n\nThis model estimates the above ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in above ground biomass for woody perennial crops and forests only. Land covers are assigned a `BiomassCategory`, which have an associated above ground biomass stock equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in above ground biomass per hectare of mature vegetation.\n\nIt is assumed that above ground biomass does not accumulate on annual croplands and grasslands. These `BiomassCategory`s are assigned an above ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas - otherwise, grasslands would not have grass and croplands would not have crops! - but it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere. This biomass is accounted for in the crop/forage yield and crop residues. Crop residues left on field become an input for the Tier 2 `organicCarbonPerHa` model, where they act as a carbon source for changes in soil organic carbon stocks.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from perennial crops to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from peach trees to grapevines, which are both perennial crops).\n\nDuring a land-cover change, it is assumed that 100% of the above ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for above ground biomass stock changes. This approach amortises stock changes by transitioning linearly between above ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the [Site](https://www.hestia.earth/schema/Site) begins a 20-year transition from an initial above ground biomass stock to a new above ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](https://www.hestia.earth/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](https://www.hestia.earth/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](https://www.hestia.earth/schema/Site)'s `landCover` [Management](https://www.hestia.earth/schema/Management) nodes. `landCover` nodes with cover crop [Properties](https://www.hestia.earth/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a land cover summary is calculated by aggregating `landCover` node values with the same `term.@id`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating above ground biomass equilibriums\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. This summary is used to estimate the above ground biomass equilibrium, which describes the stable amount of woody biomass the [Site](https://www.hestia.earth/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate Zone | Annual crops | Coconut | Forest | Grassland | Jatropha | Jojoba | Natural forest | Oil pal | Olive | Orchard | Plantation forest | Rubber | Short rotation coppice | Tea | Vine | Woody perennials | Other |\n| -------------------- | ------------ | ----------- | ------------ | --------- | ----------- | ---------- | -------------- | ----------- | ----------- | ----------- | ----------------- | ----------- | ---------------------- | ----------- | ----------- | ---------------- | ----- |\n| Warm temperate moist | 0 | 75000 ± 75% | 130767 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 150322 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 111212 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Warm temperate dry | 0 | 75000 ± 75% | 80080 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76100 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 84059 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate moist | 0 | 75000 ± 75% | 161742 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 181739 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 141745 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate dry | 0 | 75000 ± 75% | 129532 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 145952 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 113112 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Boreal moist | 0 | 75000 ± 75% | 52468 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 62900 ± 90% | 0 | 0 | 0 | 42036 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Boreal dry | 0 | 75000 ± 75% | 60235 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 83950 ± 90% | 0 | 0 | 0 | 36519 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Tropical montane | 0 | 75000 ± 75% | 141509 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 200540 ± 90% | 60000 ± 41% | 26666 ± 75% | 26666 ± 75% | 82478 ± 90% | 80200 ± 15% | 26666 ± 75% | 20700 ± 50% | 26666 ± 75% | 26666 ± 75% | 0 |\n| Tropical wet | 0 | 75000 ± 75% | 248616 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 266030 ± 90% | 60000 ± 41% | 50000 ± 75% | 50000 ± 75% | 231201 ± 90% | 80200 ± 15% | 50000 ± 75% | 20700 ± 50% | 50000 ± 75% | 50000 ± 75% | 0 |\n| Tropical moist | 0 | 75000 ± 75% | 166465 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 138889 ± 90% | 60000 ± 41% | 21000 ± 75% | 21000 ± 75% | 194040 ± 90% | 80200 ± 15% | 21000 ± 75% | 20700 ± 50% | 21000 ± 75% | 21000 ± 75% | 0 |\n| Tropical dry | 0 | 75000 ± 75% | 67316 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76139 ± 90% | 60000 ± 41% | 9000 ± 75% | 9000 ± 75% | 58493 ± 90% | 80200 ± 15% | 9000 ± 75% | 20700 ± 50% | 9000 ± 75% | 9000 ± 75% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](https://www.hestia.earth/schema/Site).\n\n### Step 3. Interpolating between above ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between above ground biomass equilibrium values following changes in land cover:\n\n$AGB_{0+T} = AGB_{0} + \\frac{min(T, 20)}{20}(AGB_{eq} - AGB_{0})$\n\nWhere:\n\n- $AGB_{0+T}$ = the above ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $AGB_{0}$ = the above ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $AGB_{eq}$ = the above ground biomass equilibrium for the [Site](https://www.hestia.earth/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual above ground biomass stock changes are assumed to be negligible after the $AGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n"}
1
+ {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Above ground biomass modelling on HESTIA."]},"content":"# Above ground biomass\n\n## Overview\n\nThis model estimates the above ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in above ground biomass for woody perennial crops and forests only. Land covers are assigned a `BiomassCategory`, which have an associated above ground biomass stock equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in above ground biomass per hectare of mature vegetation.\n\nIt is assumed that above ground biomass does not accumulate on annual croplands and grasslands. These `BiomassCategory`s are assigned an above ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas - otherwise, grasslands would not have grass and croplands would not have crops! - but it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere. This biomass is accounted for in the crop/forage yield and crop residues. Crop residues left on field become an input for the Tier 2 `organicCarbonPerHa` model, where they act as a carbon source for changes in soil organic carbon stocks.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from perennial crops to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from peach trees to grapevines, which are both perennial crops).\n\nDuring a land-cover change, it is assumed that 100% of the above ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for above ground biomass stock changes. This approach amortises stock changes by transitioning linearly between above ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/models-applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the [Site](/schema/Site) begins a 20-year transition from an initial above ground biomass stock to a new above ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](/schema/Site)'s `landCover` [Management](/schema/Management) nodes. `landCover` nodes with cover crop [Properties](/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a land cover summary is calculated by aggregating `landCover` node values with the same `term.@id`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating above ground biomass equilibriums\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. This summary is used to estimate the above ground biomass equilibrium, which describes the stable amount of woody biomass the [Site](/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate Zone | Annual crops | Coconut | Forest | Grassland | Jatropha | Jojoba | Natural forest | Oil pal | Olive | Orchard | Plantation forest | Rubber | Short rotation coppice | Tea | Vine | Woody perennials | Other |\n| -------------------- | ------------ | ----------- | ------------ | --------- | ----------- | ---------- | -------------- | ----------- | ----------- | ----------- | ----------------- | ----------- | ---------------------- | ----------- | ----------- | ---------------- | ----- |\n| Warm temperate moist | 0 | 75000 ± 75% | 130767 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 150322 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 111212 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Warm temperate dry | 0 | 75000 ± 75% | 80080 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76100 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 84059 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate moist | 0 | 75000 ± 75% | 161742 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 181739 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 141745 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate dry | 0 | 75000 ± 75% | 129532 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 145952 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 113112 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Boreal moist | 0 | 75000 ± 75% | 52468 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 62900 ± 90% | 0 | 0 | 0 | 42036 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Boreal dry | 0 | 75000 ± 75% | 60235 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 83950 ± 90% | 0 | 0 | 0 | 36519 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Tropical montane | 0 | 75000 ± 75% | 141509 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 200540 ± 90% | 60000 ± 41% | 26666 ± 75% | 26666 ± 75% | 82478 ± 90% | 80200 ± 15% | 26666 ± 75% | 20700 ± 50% | 26666 ± 75% | 26666 ± 75% | 0 |\n| Tropical wet | 0 | 75000 ± 75% | 248616 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 266030 ± 90% | 60000 ± 41% | 50000 ± 75% | 50000 ± 75% | 231201 ± 90% | 80200 ± 15% | 50000 ± 75% | 20700 ± 50% | 50000 ± 75% | 50000 ± 75% | 0 |\n| Tropical moist | 0 | 75000 ± 75% | 166465 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 138889 ± 90% | 60000 ± 41% | 21000 ± 75% | 21000 ± 75% | 194040 ± 90% | 80200 ± 15% | 21000 ± 75% | 20700 ± 50% | 21000 ± 75% | 21000 ± 75% | 0 |\n| Tropical dry | 0 | 75000 ± 75% | 67316 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76139 ± 90% | 60000 ± 41% | 9000 ± 75% | 9000 ± 75% | 58493 ± 90% | 80200 ± 15% | 9000 ± 75% | 20700 ± 50% | 9000 ± 75% | 9000 ± 75% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](/schema/Site).\n\n### Step 3. Interpolating between above ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between above ground biomass equilibrium values following changes in land cover:\n\n$AGB_{0+T} = AGB_{0} + \\frac{min(T, 20)}{20}(AGB_{eq} - AGB_{0})$\n\nWhere:\n\n- $AGB_{0+T}$ = the above ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $AGB_{0}$ = the above ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $AGB_{eq}$ = the above ground biomass equilibrium for the [Site](/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual above ground biomass stock changes are assumed to be negligible after the $AGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n"}
@@ -1 +1 @@
1
- {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Above ground biomass modelling on HESTIA."],"modelId":["aboveGroundBiomass"],"modelRequires":["ecoClimateZone"]},"content":"# Above ground biomass\n\n## Overview\n\nThis model estimates the above ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in above ground biomass for woody perennial crops and forests only. Land covers are assigned a `BiomassCategory`, which have an associated above ground biomass stock equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in above ground biomass per hectare of mature vegetation.\n\nIt is assumed that above ground biomass does not accumulate on annual croplands and grasslands. These `BiomassCategory`s are assigned an above ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas - otherwise, grasslands would not have grass and croplands would not have crops! - but it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere. This biomass is accounted for in the crop/forage yield and crop residues. Crop residues left on field become an input for the Tier 2 `organicCarbonPerHa` model, where they act as a carbon source for changes in soil organic carbon stocks.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from perennial crops to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from peach trees to grapevines, which are both perennial crops).\n\nDuring a land-cover change, it is assumed that 100% of the above ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for above ground biomass stock changes. This approach amortises stock changes by transitioning linearly between above ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the [Site](https://www.hestia.earth/schema/Site) begins a 20-year transition from an initial above ground biomass stock to a new above ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](https://www.hestia.earth/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](https://www.hestia.earth/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](https://www.hestia.earth/schema/Site)'s `landCover` [Management](https://www.hestia.earth/schema/Management) nodes. `landCover` nodes with cover crop [Properties](https://www.hestia.earth/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a land cover summary is calculated by aggregating `landCover` node values with the same `term.@id`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating above ground biomass equilibriums\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. This summary is used to estimate the above ground biomass equilibrium, which describes the stable amount of woody biomass the [Site](https://www.hestia.earth/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate Zone | Annual crops | Coconut | Forest | Grassland | Jatropha | Jojoba | Natural forest | Oil pal | Olive | Orchard | Plantation forest | Rubber | Short rotation coppice | Tea | Vine | Woody perennials | Other |\n| -------------------- | ------------ | ----------- | ------------ | --------- | ----------- | ---------- | -------------- | ----------- | ----------- | ----------- | ----------------- | ----------- | ---------------------- | ----------- | ----------- | ---------------- | ----- |\n| Warm temperate moist | 0 | 75000 ± 75% | 130767 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 150322 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 111212 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Warm temperate dry | 0 | 75000 ± 75% | 80080 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76100 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 84059 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate moist | 0 | 75000 ± 75% | 161742 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 181739 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 141745 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate dry | 0 | 75000 ± 75% | 129532 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 145952 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 113112 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Boreal moist | 0 | 75000 ± 75% | 52468 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 62900 ± 90% | 0 | 0 | 0 | 42036 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Boreal dry | 0 | 75000 ± 75% | 60235 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 83950 ± 90% | 0 | 0 | 0 | 36519 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Tropical montane | 0 | 75000 ± 75% | 141509 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 200540 ± 90% | 60000 ± 41% | 26666 ± 75% | 26666 ± 75% | 82478 ± 90% | 80200 ± 15% | 26666 ± 75% | 20700 ± 50% | 26666 ± 75% | 26666 ± 75% | 0 |\n| Tropical wet | 0 | 75000 ± 75% | 248616 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 266030 ± 90% | 60000 ± 41% | 50000 ± 75% | 50000 ± 75% | 231201 ± 90% | 80200 ± 15% | 50000 ± 75% | 20700 ± 50% | 50000 ± 75% | 50000 ± 75% | 0 |\n| Tropical moist | 0 | 75000 ± 75% | 166465 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 138889 ± 90% | 60000 ± 41% | 21000 ± 75% | 21000 ± 75% | 194040 ± 90% | 80200 ± 15% | 21000 ± 75% | 20700 ± 50% | 21000 ± 75% | 21000 ± 75% | 0 |\n| Tropical dry | 0 | 75000 ± 75% | 67316 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76139 ± 90% | 60000 ± 41% | 9000 ± 75% | 9000 ± 75% | 58493 ± 90% | 80200 ± 15% | 9000 ± 75% | 20700 ± 50% | 9000 ± 75% | 9000 ± 75% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](https://www.hestia.earth/schema/Site).\n\n### Step 3. Interpolating between above ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between above ground biomass equilibrium values following changes in land cover:\n\n$AGB_{0+T} = AGB_{0} + \\frac{min(T, 20)}{20}(AGB_{eq} - AGB_{0})$\n\nWhere:\n\n- $AGB_{0+T}$ = the above ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $AGB_{0}$ = the above ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $AGB_{eq}$ = the above ground biomass equilibrium for the [Site](https://www.hestia.earth/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual above ground biomass stock changes are assumed to be negligible after the $AGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/aboveGroundBiomass\">aboveGroundBiomass</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#method\">method</a> with <a href=\"https://hestia.earth/term/ipcc2019\">ipcc2019</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#sd\">sd</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#min\">min</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#max\">max</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#statsDefinition\">statsDefinition</a> with <code>simulated</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#observations\">observations</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>tier 1 model</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#management\">managements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#value\">value</a> and <a href=\"https://hestia.earth/schema/Management#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=landCover\">landCover</a> and <a href=\"https://hestia.earth/schema/Management#endDate\">endDate</a> and optional:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#startDate\">startDate</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> with <code>1</code> <strong>or</strong> <code>2</code> <strong>or</strong> <code>3</code> <strong>or</strong> <code>4</code> <strong>or</strong> <code>7</code> <strong>or</strong> <code>8</code> <strong>or</strong> <code>9</code> <strong>or</strong> <code>10</code> <strong>or</strong> <code>11</code> <strong>or</strong> <code>12</code> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/ecoClimateZone\">ecoClimateZone</a></li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>glass or high accessible cover</code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/landCover.csv\">landCover.csv</a> -&gt; <code>BIOMASS_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/ecoClimateZone.csv\">ecoClimateZone.csv</a> -&gt; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_ANNUAL_CROPS</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_COCONUT</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_FOREST</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_GRASSLAND</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_JATROPHA</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_JOJOBA</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_NATURAL_FOREST</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OIL_PALM</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OLIVE</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_ORCHARD</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_PLANTATION_FOREST</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_RUBBER</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_SHORT_ROTATION_COPPICE</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_TEA</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_VINE</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_WOODY_PERENNIAL</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OTHER</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
1
+ {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Above ground biomass modelling on HESTIA."],"modelId":["aboveGroundBiomass"],"modelRequires":["ecoClimateZone"]},"content":"# Above ground biomass\n\n## Overview\n\nThis model estimates the above ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in above ground biomass for woody perennial crops and forests only. Land covers are assigned a `BiomassCategory`, which have an associated above ground biomass stock equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in above ground biomass per hectare of mature vegetation.\n\nIt is assumed that above ground biomass does not accumulate on annual croplands and grasslands. These `BiomassCategory`s are assigned an above ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas - otherwise, grasslands would not have grass and croplands would not have crops! - but it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere. This biomass is accounted for in the crop/forage yield and crop residues. Crop residues left on field become an input for the Tier 2 `organicCarbonPerHa` model, where they act as a carbon source for changes in soil organic carbon stocks.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from perennial crops to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from peach trees to grapevines, which are both perennial crops).\n\nDuring a land-cover change, it is assumed that 100% of the above ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for above ground biomass stock changes. This approach amortises stock changes by transitioning linearly between above ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/models-applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the [Site](/schema/Site) begins a 20-year transition from an initial above ground biomass stock to a new above ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](/schema/Site)'s `landCover` [Management](/schema/Management) nodes. `landCover` nodes with cover crop [Properties](/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a land cover summary is calculated by aggregating `landCover` node values with the same `term.@id`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating above ground biomass equilibriums\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. This summary is used to estimate the above ground biomass equilibrium, which describes the stable amount of woody biomass the [Site](/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate Zone | Annual crops | Coconut | Forest | Grassland | Jatropha | Jojoba | Natural forest | Oil pal | Olive | Orchard | Plantation forest | Rubber | Short rotation coppice | Tea | Vine | Woody perennials | Other |\n| -------------------- | ------------ | ----------- | ------------ | --------- | ----------- | ---------- | -------------- | ----------- | ----------- | ----------- | ----------------- | ----------- | ---------------------- | ----------- | ----------- | ---------------- | ----- |\n| Warm temperate moist | 0 | 75000 ± 75% | 130767 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 150322 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 111212 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Warm temperate dry | 0 | 75000 ± 75% | 80080 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76100 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 84059 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate moist | 0 | 75000 ± 75% | 161742 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 181739 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 141745 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Cool temperate dry | 0 | 75000 ± 75% | 129532 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 145952 ± 90% | 60000 ± 75% | 9100 ± 15% | 8500 ± 19% | 113112 ± 90% | 63000 ± 75% | 12690 ± 40% | 20700 ± 50% | 5500 ± 18% | 63000 ± 75% | 0 |\n| Boreal moist | 0 | 75000 ± 75% | 52468 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 62900 ± 90% | 0 | 0 | 0 | 42036 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Boreal dry | 0 | 75000 ± 75% | 60235 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 83950 ± 90% | 0 | 0 | 0 | 36519 ± 90% | 0 | 0 | 20700 ± 50% | 0 | 0 | 0 |\n| Tropical montane | 0 | 75000 ± 75% | 141509 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 200540 ± 90% | 60000 ± 41% | 26666 ± 75% | 26666 ± 75% | 82478 ± 90% | 80200 ± 15% | 26666 ± 75% | 20700 ± 50% | 26666 ± 75% | 26666 ± 75% | 0 |\n| Tropical wet | 0 | 75000 ± 75% | 248616 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 266030 ± 90% | 60000 ± 41% | 50000 ± 75% | 50000 ± 75% | 231201 ± 90% | 80200 ± 15% | 50000 ± 75% | 20700 ± 50% | 50000 ± 75% | 50000 ± 75% | 0 |\n| Tropical moist | 0 | 75000 ± 75% | 166465 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 138889 ± 90% | 60000 ± 41% | 21000 ± 75% | 21000 ± 75% | 194040 ± 90% | 80200 ± 15% | 21000 ± 75% | 20700 ± 50% | 21000 ± 75% | 21000 ± 75% | 0 |\n| Tropical dry | 0 | 75000 ± 75% | 67316 ± 90% | 0 | 17500 ± 75% | 2400 ± 75% | 76139 ± 90% | 60000 ± 41% | 9000 ± 75% | 9000 ± 75% | 58493 ± 90% | 80200 ± 15% | 9000 ± 75% | 20700 ± 50% | 9000 ± 75% | 9000 ± 75% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](/schema/Site).\n\n### Step 3. Interpolating between above ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between above ground biomass equilibrium values following changes in land cover:\n\n$AGB_{0+T} = AGB_{0} + \\frac{min(T, 20)}{20}(AGB_{eq} - AGB_{0})$\n\nWhere:\n\n- $AGB_{0+T}$ = the above ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $AGB_{0}$ = the above ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $AGB_{eq}$ = the above ground biomass equilibrium for the [Site](/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual above ground biomass stock changes are assumed to be negligible after the $AGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/aboveGroundBiomass\">aboveGroundBiomass</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#method\">method</a> with <a href=\"https://hestia.earth/term/ipcc2019\">ipcc2019</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#sd\">sd</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#min\">min</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#max\">max</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#statsDefinition\">statsDefinition</a> with <code>simulated</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#observations\">observations</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>tier 1 model</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#management\">managements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#value\">value</a> and <a href=\"https://hestia.earth/schema/Management#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=landCover\">landCover</a> and <a href=\"https://hestia.earth/schema/Management#endDate\">endDate</a> and optional:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#startDate\">startDate</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> with <code>1</code> <strong>or</strong> <code>2</code> <strong>or</strong> <code>3</code> <strong>or</strong> <code>4</code> <strong>or</strong> <code>7</code> <strong>or</strong> <code>8</code> <strong>or</strong> <code>9</code> <strong>or</strong> <code>10</code> <strong>or</strong> <code>11</code> <strong>or</strong> <code>12</code> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/ecoClimateZone\">ecoClimateZone</a></li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>glass or high accessible cover</code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/landCover.csv\">landCover.csv</a> -&gt; <code>BIOMASS_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/ecoClimateZone.csv\">ecoClimateZone.csv</a> -&gt; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_ANNUAL_CROPS</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_COCONUT</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_FOREST</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_GRASSLAND</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_JATROPHA</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_JOJOBA</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_NATURAL_FOREST</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OIL_PALM</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OLIVE</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_ORCHARD</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_PLANTATION_FOREST</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_RUBBER</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_SHORT_ROTATION_COPPICE</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_TEA</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_VINE</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_WOODY_PERENNIAL</code>; <code>AG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OTHER</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
@@ -1 +1 @@
1
- {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Below ground biomass modelling on HESTIA."]},"content":"# Below ground biomass\n\n## Overview\n\nThis model estimates the below ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in below ground biomass for forests only. Land covers are assigned a `BiomassCategory`, which have an associated below ground biomass equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in below ground biomass per hectare of mature vegetation. These equilibrium values are pre-computed per forest `BiomassCategory` by multiplying the above ground biomass equilibrium by the ratio of above ground to below ground biomass.\n\nIt is assumed that below ground biomass does not accumulate on annual croplands and grasslands. Woody perennial crops are assumed to accumulate below ground biomass, but no above ground to below ground biomass ratios are currently available for these `BiomassCategory`s. These categories are assigned a below ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas; however, it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from natural forest to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from natural forest to plantation forest).\n\nDuring a land-cover change, it is assumed that 100% of the below ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for below ground biomass stock changes. This approach amortises stock changes by transitioning linearly between below ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the Site begins a 20-year transition from an initial below ground biomass stock to a new below ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above. _n.b._, The visualisation refers to the above ground biomass stock of perennial crops rather than below ground biomass; however, the method of allocation is the same for both types of biomass.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](https://www.hestia.earth/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](https://www.hestia.earth/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](https://www.hestia.earth/schema/Site)'s `landCover` [Management](https://www.hestia.earth/schema/Management) nodes. `landCover` nodes with cover crop [Properties](https://www.hestia.earth/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land-cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land-cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating below ground biomass equilibriums\n\nFor each year, the biomass category summary (calculated in step 1) is used to estimate the below ground biomass equilibrium, which describes the stable amount of biomass the [Site](https://www.hestia.earth/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate zone | Forest | Natural forest | Plantation forest | Other |\n| -------------------- | ----------- | -------------- | ----------------- | ----- |\n| Warm Temperate Moist | 30813 ± 90% | 36483 ± 90% | 25121 ± 90% | 0 |\n| Warm Temperate Dry | 83622 ± 90% | 47231 ± 90% | 163682 ± 90% | 0 |\n| Cool Temperate Moist | 48973 ± 90% | 50609 ± 90% | 40686 ± 90% | 0 |\n| Cool Temperate Dry | 31869 ± 90% | 35202 ± 90% | 28855 ± 90% | 0 |\n| Boreal Moist | 19125 ± 90% | 21375 ± 90% | 16138 ± 90% | 0 |\n| Boreal Dry | 20844 ± 90% | 25265 ± 90% | 14190 ± 90% | 0 |\n| Tropical Montane | 68601 ± 90% | 64285 ± 90% | 158864 ± 90% | 0 |\n| Tropical Wet | 58154 ± 90% | 65488 ± 90% | 41245 ± 90% | 0 |\n| Tropical Moist | 43680 ± 90% | 36715 ± 90% | 50682 ± 90% | 0 |\n| Tropical Dry | 24146 ± 90% | 27388 ± 90% | 20953 ± 90% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](https://www.hestia.earth/schema/Site).\n\n### Step 3. Interpolating between below ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between below ground biomass equilibrium values following changes in land cover:\n\n$BGB_{0+T} = BGB_{0} + \\frac{min(T, 20)}{20}(BGB_{eq} - BGB_{0})$\n\nWhere:\n\n- $BGB_{0+T}$ = the below ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $BGB_{0}$ = the below ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $BGB_{eq}$ = the below ground biomass equilibrium for the [Site](https://www.hestia.earth/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual below ground biomass stock changes are assumed to be negligible after the $BGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums and above ground biomass to below ground biomass ratios for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone and the ratio of above ground to below ground biomass. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n"}
1
+ {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Below ground biomass modelling on HESTIA."]},"content":"# Below ground biomass\n\n## Overview\n\nThis model estimates the below ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in below ground biomass for forests only. Land covers are assigned a `BiomassCategory`, which have an associated below ground biomass equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in below ground biomass per hectare of mature vegetation. These equilibrium values are pre-computed per forest `BiomassCategory` by multiplying the above ground biomass equilibrium by the ratio of above ground to below ground biomass.\n\nIt is assumed that below ground biomass does not accumulate on annual croplands and grasslands. Woody perennial crops are assumed to accumulate below ground biomass, but no above ground to below ground biomass ratios are currently available for these `BiomassCategory`s. These categories are assigned a below ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas; however, it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from natural forest to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from natural forest to plantation forest).\n\nDuring a land-cover change, it is assumed that 100% of the below ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for below ground biomass stock changes. This approach amortises stock changes by transitioning linearly between below ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/models-applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the Site begins a 20-year transition from an initial below ground biomass stock to a new below ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above. _n.b._, The visualisation refers to the above ground biomass stock of perennial crops rather than below ground biomass; however, the method of allocation is the same for both types of biomass.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](/schema/Site)'s `landCover` [Management](/schema/Management) nodes. `landCover` nodes with cover crop [Properties](/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land-cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land-cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating below ground biomass equilibriums\n\nFor each year, the biomass category summary (calculated in step 1) is used to estimate the below ground biomass equilibrium, which describes the stable amount of biomass the [Site](/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate zone | Forest | Natural forest | Plantation forest | Other |\n| -------------------- | ----------- | -------------- | ----------------- | ----- |\n| Warm Temperate Moist | 30813 ± 90% | 36483 ± 90% | 25121 ± 90% | 0 |\n| Warm Temperate Dry | 83622 ± 90% | 47231 ± 90% | 163682 ± 90% | 0 |\n| Cool Temperate Moist | 48973 ± 90% | 50609 ± 90% | 40686 ± 90% | 0 |\n| Cool Temperate Dry | 31869 ± 90% | 35202 ± 90% | 28855 ± 90% | 0 |\n| Boreal Moist | 19125 ± 90% | 21375 ± 90% | 16138 ± 90% | 0 |\n| Boreal Dry | 20844 ± 90% | 25265 ± 90% | 14190 ± 90% | 0 |\n| Tropical Montane | 68601 ± 90% | 64285 ± 90% | 158864 ± 90% | 0 |\n| Tropical Wet | 58154 ± 90% | 65488 ± 90% | 41245 ± 90% | 0 |\n| Tropical Moist | 43680 ± 90% | 36715 ± 90% | 50682 ± 90% | 0 |\n| Tropical Dry | 24146 ± 90% | 27388 ± 90% | 20953 ± 90% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](/schema/Site).\n\n### Step 3. Interpolating between below ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between below ground biomass equilibrium values following changes in land cover:\n\n$BGB_{0+T} = BGB_{0} + \\frac{min(T, 20)}{20}(BGB_{eq} - BGB_{0})$\n\nWhere:\n\n- $BGB_{0+T}$ = the below ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $BGB_{0}$ = the below ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $BGB_{eq}$ = the below ground biomass equilibrium for the [Site](/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual below ground biomass stock changes are assumed to be negligible after the $BGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums and above ground biomass to below ground biomass ratios for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone and the ratio of above ground to below ground biomass. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n"}
@@ -1 +1 @@
1
- {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Below ground biomass modelling on HESTIA.","[IPCC (2019) 2019 Refinement to the 2006 IPCC Guidelines for National Greenhouse Gas Inventories](https://www.ipcc.ch/report/2019-refinement-to-the-2006-ipcc-guidelines-for-national-greenhouse-gas-inventories/)","[IPCC (2006) 2006 IPCC Guidelines for National Greenhouse Gas Inventories](https://www.ipcc.ch/report/2006-ipcc-guidelines-for-national-greenhouse-gas-inventories/)","[European Commission (2010) COMMISSION DECISION of 10 June 2010 on guidelines for the calculation of land carbon stocks for the purpose of Annex V to Directive 2009/28/EC](https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32010D0335)"],"modelId":["belowGroundBiomass"],"modelRequires":["ecoClimateZone"]},"content":"# Below ground biomass\n\n## Overview\n\nThis model estimates the below ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in below ground biomass for forests only. Land covers are assigned a `BiomassCategory`, which have an associated below ground biomass equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in below ground biomass per hectare of mature vegetation. These equilibrium values are pre-computed per forest `BiomassCategory` by multiplying the above ground biomass equilibrium by the ratio of above ground to below ground biomass.\n\nIt is assumed that below ground biomass does not accumulate on annual croplands and grasslands. Woody perennial crops are assumed to accumulate below ground biomass, but no above ground to below ground biomass ratios are currently available for these `BiomassCategory`s. These categories are assigned a below ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas; however, it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from natural forest to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from natural forest to plantation forest).\n\nDuring a land-cover change, it is assumed that 100% of the below ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for below ground biomass stock changes. This approach amortises stock changes by transitioning linearly between below ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the Site begins a 20-year transition from an initial below ground biomass stock to a new below ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above. _n.b._, The visualisation refers to the above ground biomass stock of perennial crops rather than below ground biomass; however, the method of allocation is the same for both types of biomass.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](https://www.hestia.earth/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](https://www.hestia.earth/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](https://www.hestia.earth/schema/Site)'s `landCover` [Management](https://www.hestia.earth/schema/Management) nodes. `landCover` nodes with cover crop [Properties](https://www.hestia.earth/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land-cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land-cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating below ground biomass equilibriums\n\nFor each year, the biomass category summary (calculated in step 1) is used to estimate the below ground biomass equilibrium, which describes the stable amount of biomass the [Site](https://www.hestia.earth/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate zone | Forest | Natural forest | Plantation forest | Other |\n| -------------------- | ----------- | -------------- | ----------------- | ----- |\n| Warm Temperate Moist | 30813 ± 90% | 36483 ± 90% | 25121 ± 90% | 0 |\n| Warm Temperate Dry | 83622 ± 90% | 47231 ± 90% | 163682 ± 90% | 0 |\n| Cool Temperate Moist | 48973 ± 90% | 50609 ± 90% | 40686 ± 90% | 0 |\n| Cool Temperate Dry | 31869 ± 90% | 35202 ± 90% | 28855 ± 90% | 0 |\n| Boreal Moist | 19125 ± 90% | 21375 ± 90% | 16138 ± 90% | 0 |\n| Boreal Dry | 20844 ± 90% | 25265 ± 90% | 14190 ± 90% | 0 |\n| Tropical Montane | 68601 ± 90% | 64285 ± 90% | 158864 ± 90% | 0 |\n| Tropical Wet | 58154 ± 90% | 65488 ± 90% | 41245 ± 90% | 0 |\n| Tropical Moist | 43680 ± 90% | 36715 ± 90% | 50682 ± 90% | 0 |\n| Tropical Dry | 24146 ± 90% | 27388 ± 90% | 20953 ± 90% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](https://www.hestia.earth/schema/Site).\n\n### Step 3. Interpolating between below ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between below ground biomass equilibrium values following changes in land cover:\n\n$BGB_{0+T} = BGB_{0} + \\frac{min(T, 20)}{20}(BGB_{eq} - BGB_{0})$\n\nWhere:\n\n- $BGB_{0+T}$ = the below ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $BGB_{0}$ = the below ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $BGB_{eq}$ = the below ground biomass equilibrium for the [Site](https://www.hestia.earth/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual below ground biomass stock changes are assumed to be negligible after the $BGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums and above ground biomass to below ground biomass ratios for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone and the ratio of above ground to below ground biomass. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/belowGroundBiomass\">belowGroundBiomass</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#method\">method</a> with <a href=\"https://hestia.earth/term/ipcc2019\">ipcc2019</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#sd\">sd</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#min\">min</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#max\">max</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#statsDefinition\">statsDefinition</a> with <code>simulated</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#observations\">observations</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> with <code>0</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> with <code>30</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>tier 1 model</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/8flyja-wtzgw\">IPCC (2019)</a></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#management\">managements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#value\">value</a> and <a href=\"https://hestia.earth/schema/Management#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=landCover\">landCover</a> and <a href=\"https://hestia.earth/schema/Management#endDate\">endDate</a> and optional:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#startDate\">startDate</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> with <code>1</code> <strong>or</strong> <code>2</code> <strong>or</strong> <code>3</code> <strong>or</strong> <code>4</code> <strong>or</strong> <code>7</code> <strong>or</strong> <code>8</code> <strong>or</strong> <code>9</code> <strong>or</strong> <code>10</code> <strong>or</strong> <code>11</code> <strong>or</strong> <code>12</code> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/ecoClimateZone\">ecoClimateZone</a></li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>glass or high accessible cover</code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/landCover.csv\">landCover.csv</a> -&gt; <code>BIOMASS_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/ecoClimateZone.csv\">ecoClimateZone.csv</a> -&gt; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_FOREST</code>; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_NATURAL_FOREST</code>; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_PLANTATION_FOREST</code>; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OTHER</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
1
+ {"tags":{"author":["Florian Payen"],"contributor":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Land Use Change"],"tab":["IPCC (2019)"],"citation":["Payen, F. (2025) Below ground biomass modelling on HESTIA.","[IPCC (2019) 2019 Refinement to the 2006 IPCC Guidelines for National Greenhouse Gas Inventories](https://www.ipcc.ch/report/2019-refinement-to-the-2006-ipcc-guidelines-for-national-greenhouse-gas-inventories/)","[IPCC (2006) 2006 IPCC Guidelines for National Greenhouse Gas Inventories](https://www.ipcc.ch/report/2006-ipcc-guidelines-for-national-greenhouse-gas-inventories/)","[European Commission (2010) COMMISSION DECISION of 10 June 2010 on guidelines for the calculation of land carbon stocks for the purpose of Annex V to Directive 2009/28/EC](https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32010D0335)"],"modelId":["belowGroundBiomass"],"modelRequires":["ecoClimateZone"]},"content":"# Below ground biomass\n\n## Overview\n\nThis model estimates the below ground biomass stocks (kg C ha<sup>-1</sup>) based on changes in land cover over time.\n\nThe IPCC Tier 1 methodology is suitable for modelling changes in below ground biomass for forests only. Land covers are assigned a `BiomassCategory`, which have an associated below ground biomass equilibrium (kg C ha<sup>-1</sup>). This equilibrium represents the stock of carbon stored in below ground biomass per hectare of mature vegetation. These equilibrium values are pre-computed per forest `BiomassCategory` by multiplying the above ground biomass equilibrium by the ratio of above ground to below ground biomass.\n\nIt is assumed that below ground biomass does not accumulate on annual croplands and grasslands. Woody perennial crops are assumed to accumulate below ground biomass, but no above ground to below ground biomass ratios are currently available for these `BiomassCategory`s. These categories are assigned a below ground biomass stock equilibrium of 0 kg C ha<sup>-1</sup>. It is important to note that biomass does expand on these areas; however, it is not considered stable enough to meaningfully remove CO<sub>2</sub> from the atmosphere.\n\nLand cover changes can he attributed to:\n\n- land-use change (changing from one land-use category to another, _e.g._, from natural forest to pasture),\n- or management change (changing type of land cover within the same land-use category, _e.g._, from natural forest to plantation forest).\n\nDuring a land-cover change, it is assumed that 100% of the below ground biomass is lost. Then, the biomass of the new land cover gradually expands (based on the growth rate of the species) until it reaches the new equilibrium. This is the basis for the gain-loss method. However, we use the stock-difference method to account for below ground biomass stock changes. This approach amortises stock changes by transitioning linearly between below ground biomass stock equilibriums over a fixed transition period of 20 years. More information about these methods can be found below.\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/models-applying-models-monte-carlo) for more information.\n\n## How the model works\n\nThe model works by constructing an annual inventory of land cover change. Following a land cover change event, the Site begins a 20-year transition from an initial below ground biomass stock to a new below ground biomass stock. If another land cover change event occurs during or after the 20-year transition period, a new transition begins.\n\n**Illustration of gain-loss vs. stock-difference methods**\n\n![Comparison of gain-loss vs. stock-difference methods](/assets/biomass-methodComparison.jpg)\n\nThe Tier 1 approach considers that CO<sub>2</sub> emissions due to biomass stock changes following a land use change (_i.e._, a change in value in the `IPCC_LAND_USE_CATEGORY` lookup) should be categorised as such for 20 years, after which they become emissions due to management change (for as long as there is no subsequent land use changes). This is illustrated in the graphic above. _n.b._, The visualisation refers to the above ground biomass stock of perennial crops rather than below ground biomass; however, the method of allocation is the same for both types of biomass.\n\nThe gain-loss method assumes that upon a land use change the biomass of the previous land cover is lost (and emitted as CO<sub>2</sub>) on 1st January of the year of conversion. Then the biomass stock progressively increases until it reaches the biomass equilibrium of the new land cover. This is when the crop reaches maturity. The basic timeline for this is 20 years (like for SOC stock modelling), but the IPCC does suggest different maturity rates for different types of perennials and forests.\n\nThe stock-difference method ammortises the loss or gain of biomass stocks throughout the following 20 years by linearly interpolating between the biomass equilibriums of the start and end land covers. There is no specific \"loss\" event where the stock drops to zero before rebuilding, rather a gradual transition between equilibriums.\n\nAfter 20 years of stable land cover, both methods resolve to the same biomass stocks and biomass stock change emissions.\n\nFor V1, the HESTIA team have chosen to implement the stock-difference method. It ensures that [Cycles](/schema/Cycle) following a land use change \"share\" the environmental impacts of land-use changes rather than just the first [Cycle](/schema/Cycle), and it aligns methods with the `ipcc2019.organicCarbonPerHa` (Tier 1) model, making the modelling approach more consistent between the two models.\n\n### Step 1. Detecting land-cover change events\n\nAn annual inventory of land cover is constructed by grouping the [Site](/schema/Site)'s `landCover` [Management](/schema/Management) nodes. `landCover` nodes with cover crop [Properties](/schema/Property) (`coverCrop`, `catchCrop`, `shortfallowCrop` and `coverCrop`) are excluded.\n\nFor each year in the inventory, a biomass category summary is calculated by aggregating `landCover` node values by IPCC `BiomassCategory`. Each year's summary is compared with that of the year prior to determine whether a land-cover change event has occurred. A gain or loss of 1 m<sup>2</sup> ha<sup>-1</sup> by any `landCover` is considered a land-cover change event.\n\n1. If a land-use change has occurred, a new 20-year transition period starts.\n2. If no land-use change has occurred, the current transition period continues or, if it is finished, the stock remains at equilibrium.\n\nThe number of years elapsed since the most recent land-cover change event are calculated for each calendar year - this value will be used as the blend value for linear interpolation later.\n\nMissing years in the inventory are back-filled with data from the next inventory year. In practice, this means that if there is any ambiguity about when exactly a land-cover change event occurred (_e.g._, if the `landCover` data is in 5-year intervals), we assume it happened at the earliest possible point in time. This aligns with the IPCC (2019) example calculations.\n\n### Step 2. Calculating below ground biomass equilibriums\n\nFor each year, the biomass category summary (calculated in step 1) is used to estimate the below ground biomass equilibrium, which describes the stable amount of biomass the [Site](/schema/Site) would have if the `landCover` remained consistent for 20 years.\n\n| Eco-climate zone | Forest | Natural forest | Plantation forest | Other |\n| -------------------- | ----------- | -------------- | ----------------- | ----- |\n| Warm Temperate Moist | 30813 ± 90% | 36483 ± 90% | 25121 ± 90% | 0 |\n| Warm Temperate Dry | 83622 ± 90% | 47231 ± 90% | 163682 ± 90% | 0 |\n| Cool Temperate Moist | 48973 ± 90% | 50609 ± 90% | 40686 ± 90% | 0 |\n| Cool Temperate Dry | 31869 ± 90% | 35202 ± 90% | 28855 ± 90% | 0 |\n| Boreal Moist | 19125 ± 90% | 21375 ± 90% | 16138 ± 90% | 0 |\n| Boreal Dry | 20844 ± 90% | 25265 ± 90% | 14190 ± 90% | 0 |\n| Tropical Montane | 68601 ± 90% | 64285 ± 90% | 158864 ± 90% | 0 |\n| Tropical Wet | 58154 ± 90% | 65488 ± 90% | 41245 ± 90% | 0 |\n| Tropical Moist | 43680 ± 90% | 36715 ± 90% | 50682 ± 90% | 0 |\n| Tropical Dry | 24146 ± 90% | 27388 ± 90% | 20953 ± 90% | 0 |\n\nUsing the % area covered by each `BiomassCategory`, a weighted average of the above model factors is used to calculate the equilibrium for the [Site](/schema/Site).\n\n### Step 3. Interpolating between below ground biomass equilibriums\n\nStarting from the earliest year in the inventory, we can then interpolate linearly between below ground biomass equilibrium values following changes in land cover:\n\n$BGB_{0+T} = BGB_{0} + \\frac{min(T, 20)}{20}(BGB_{eq} - BGB_{0})$\n\nWhere:\n\n- $BGB_{0+T}$ = the below ground biomass stock $T$ years after the most recent land-cover change, kg C ha<sup>-1</sup>.\n- $BGB_{0}$ = the below ground biomass stock when the land-cover change occurred, kg C ha<sup>-1</sup>.\n- $BGB_{eq}$ = the below ground biomass equilibrium for the [Site](/schema/Site) under the most recent land cover regime, kg C ha<sup>-1</sup>.\n- $T$ = the number of years since the most recent land-cover change event, yr.\n\nIf $T>20$, it is capped to twenty as annual below ground biomass stock changes are assumed to be negligible after the $BGB_{eq}$ has been reached for as long as land cover remains consistent.\n\nRow-wise means (and other descriptive statistics) are calculated to provide the final results of the model.\n\n## Re-calculation of model factors\n\nAbove ground biomass carbon stock equilibriums and above ground biomass to below ground biomass ratios for specific crops and crop group/geographic region pairings are provided in the IPCC (2006) report, the IPCC (2019) report and the European Commission (2010) guidelines.\n\nThe values provided by the European Commission guidelines do not provide descriptive statistics nor sources; therefore, these values should be used with caution. Nominal error estimates of 75% have been added to EC emission factors in line with the IPCC emission factors.\n\nForest equilibrium factors have been recalculated per eco-climate zone using a weighted average of land area under each climate zone and the ratio of above ground to below ground biomass. A nominal error estimate of 90% has been added to these recalculated factors, in line with the IPCC recommendations.\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/belowGroundBiomass\">belowGroundBiomass</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#method\">method</a> with <a href=\"https://hestia.earth/term/ipcc2019\">ipcc2019</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#sd\">sd</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#min\">min</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#max\">max</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#statsDefinition\">statsDefinition</a> with <code>simulated</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#observations\">observations</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> with <code>0</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> with <code>30</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>tier 1 model</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/8flyja-wtzgw\">IPCC (2019)</a></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#management\">managements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#value\">value</a> and <a href=\"https://hestia.earth/schema/Management#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=landCover\">landCover</a> and <a href=\"https://hestia.earth/schema/Management#endDate\">endDate</a> and optional:<ul>\n<li><a href=\"https://hestia.earth/schema/Management#startDate\">startDate</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> with <code>1</code> <strong>or</strong> <code>2</code> <strong>or</strong> <code>3</code> <strong>or</strong> <code>4</code> <strong>or</strong> <code>7</code> <strong>or</strong> <code>8</code> <strong>or</strong> <code>9</code> <strong>or</strong> <code>10</code> <strong>or</strong> <code>11</code> <strong>or</strong> <code>12</code> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/ecoClimateZone\">ecoClimateZone</a></li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>glass or high accessible cover</code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/landCover.csv\">landCover.csv</a> -&gt; <code>BIOMASS_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/ecoClimateZone.csv\">ecoClimateZone.csv</a> -&gt; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_FOREST</code>; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_NATURAL_FOREST</code>; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_PLANTATION_FOREST</code>; <code>BG_BIOMASS_EQUILIBRIUM_KG_C_HECTARE_OTHER</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
@@ -1 +1 @@
1
- {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Other"],"tab":["Geospatial Database"],"modelId":["nutrientLossToAquaticEnvironment"],"citation":["[Scherer & Pfister (2015) Modelling spatially explicit impacts from phosphorus emissions in agriculture](https://dx.doi.org/10.1007/s11367-015-0880-0)"]},"content":"# Nutrient loss to aquatic environment\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/nutrientLossToAquaticEnvironment\">nutrientLossToAquaticEnvironment</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/7uet-cddumlv\">Scherer &amp; Pfister (2015)</a></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
1
+ {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Other"],"tab":["Geospatial Database"],"modelId":["nutrientLossToAquaticEnvironment"]},"content":"# Nutrient loss to aquatic environment\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/nutrientLossToAquaticEnvironment\">nutrientLossToAquaticEnvironment</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
@@ -1 +1 @@
1
- {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"]},"content":"# Clay content\n\n\n\n\n"}
1
+ {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"tag":["Soil content"]},"content":"# Clay content\n\n## Overview\n\nThis model takes a site with geospatial content but no existing soil content measurements and gap-fills mean clay content values. \n\n## Data sources\n\nThis model relies on data from the Harmonized World Soil Database Version 2.0.\n\n## Model logic\n\nThe model looks up mean values for four depth ranges:\n\n - 0-20cm\n - 20-40cm\n - 40-60cm\n - 60-80cm\n\nFor every value found at one of these depth ranges, a new clay content measurement is created.\n\n\n\n\n\n"}
@@ -1 +1 @@
1
- {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"modelId":["clayContent"],"modelRequires":["clayContent","sandContent","siltContent"]},"content":"# Clay content\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/clayContent\">clayContent</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/clayContent\">clayContent</a> <strong>or</strong> <a href=\"https://hestia.earth/term/sandContent\">sandContent</a> <strong>or</strong> <a href=\"https://hestia.earth/term/siltContent\">siltContent</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
1
+ {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"tag":["Soil content"],"modelId":["clayContent"],"modelRequires":["clayContent","sandContent","siltContent"]},"content":"# Clay content\n\n## Overview\n\nThis model takes a site with geospatial content but no existing soil content measurements and gap-fills mean clay content values. \n\n## Data sources\n\nThis model relies on data from the Harmonized World Soil Database Version 2.0.\n\n## Model logic\n\nThe model looks up mean values for four depth ranges:\n\n - 0-20cm\n - 20-40cm\n - 40-60cm\n - 60-80cm\n\nFor every value found at one of these depth ranges, a new clay content measurement is created.\n\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/clayContent\">clayContent</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/clayContent\">clayContent</a> <strong>or</strong> <a href=\"https://hestia.earth/term/sandContent\">sandContent</a> <strong>or</strong> <a href=\"https://hestia.earth/term/siltContent\">siltContent</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
@@ -1 +1 @@
1
- {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"modelId":["histosol"]},"content":"# Histosol\n\nThis model does not run if there are other `soilType` Measurements with a non-zero value at depth 0-30, as the total value of all `soilType` could be greated than `100%`.\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/histosol\">histosol</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> with <code>0</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> with <code>30</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> with <code>100</code> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> with <code>0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> with <code>30</code> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=soilType\">soilType</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/soilType.csv\">soilType.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
1
+ {"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"modelId":["histosol"]},"content":"# Histosol\n\nThis model does not run if there are other `soilType` or `usdaSoilType` Measurements with a non-zero value at depth 0-30, as the total value of all `soilType` could be greated than `100%`.\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/histosol\">histosol</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> with <code>0</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> with <code>30</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>geospatial dataset</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>either:<ul>\n<li>the following fields:<ul>\n<li><a href=\"https://hestia.earth/schema/Site#latitude\">latitude</a></li>\n<li><a href=\"https://hestia.earth/schema/Site#longitude\">longitude</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#boundary\">boundary</a></li>\n</ul>\n</li>\n<li>the following fields:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#region\">region</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=region\">region</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>none of:<ul>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> <code>&gt; 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> with <code>0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> with <code>30</code> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=soilType\">soilType</a> <strong>or</strong> <a href=\"https://hestia.earth/glossary?termType=usdaSoilType\">usdaSoilType</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/soilType.csv\">soilType.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
@@ -1 +1 @@
1
- {"tags":{},"content":"# Organic carbon (per ha)\n\nWhere:\n\nSource: [Abdalla _et al._ (2018)](https://doi.org/10.1016/j.agee.2017.10.023)\n\n## Example\n\n```json\n\n {\n\n \"@type\": \"Measurement\",\n\n \"term\": {\n\n \"@type\": \"Term\",\n\n },\n\n \"value\": [\n\n ],\n\n \"depthUpper\": 0,\n\n \"depthLower\": 40,\n\n \"methodClassification\": \"on-site physical measurement\"\n\n },\n\n```\n\n {\n\n \"@type\": \"Measurement\",\n\n \"term\": {\n\n \"@type\": \"Term\",\n\n \"@id\": \"organicCarbonPerHa\"\n\n \"value\": [\n\n ],\n\n \"dates\": [\n\n \"2020\"\n\n \"depthUpper\": 0,\n\n \"methodClassification\": \"modelled using other measurements\"\n\n## Discussion\n\nThe stock of organic carbon in the soil, defined as soil organic matter that is smaller than 2 mm in size.\n\n## Overview\n\n## How the model works\n\n##### For grasslands:\n\n##### For annual croplands:\n\nn.b., land cover, land management practices and improvements must cover >30% of the [Site](https://www.hestia.earth/schema/Site)'s area to satisfy the condition.\n\n## Data recommendations\n\n- Irrigation, using terms in the [water regime glossary](https://hestia.earth/glossary?termType=waterRegime).\n\n- Inputs to soil, using the terms [`amendmentIncreasingSoilCarbonUsed`](https://hestia.earth/term/amendmentIncreasingSoilCarbonUsed), [`animalManureUsed`](https://hestia.earth/term/animalManureUsed), [`inorganicNitrogenFertiliserUsed`](https://hestia.earth/term/inorganicNitrogenFertiliserUsed) and/or [`organicFertiliserUsed`](https://hestia.earth/term/organicFertiliserUsed).\n\n### Site measurements"}
1
+ {"tags":{},"content":"# Organic carbon (per ha)\n\nWhere:\n\nSource: [Abdalla et al. (2018)](https://doi.org/10.1016/j.agee.2017.10.023).\n\n## Example\n\n```json\n\n {\n\n \"@type\": \"Measurement\",\n\n \"term\": {\n\n \"@type\": \"Term\",\n\n },\n\n \"value\": [\n\n ],\n\n \"depthUpper\": 0,\n\n \"depthLower\": 40,\n\n \"methodClassification\": \"on-site physical measurement\"\n\n },\n\n```\n\n {\n\n \"@type\": \"Measurement\",\n\n \"term\": {\n\n \"@type\": \"Term\",\n\n \"@id\": \"organicCarbonPerHa\"\n\n \"value\": [\n\n ],\n\n \"dates\": [\n\n \"2020\"\n\n \"depthUpper\": 0,\n\n \"methodClassification\": \"modelled using other measurements\"\n\n## Discussion\n\n## References\n\nIPCC (2019). _2019 Refinement to the 2006 IPCC Guidelines for National Greenhouse Gas Inventories_. Volume 4: Agriculture, Forestry and Other Land Use. IPCC, Switzerland. https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html\n\nThe stock of organic carbon in the soil, defined as soil organic matter that is smaller than 2 mm in size.\n\n## Overview\n\nThe model is run as a Monte Carlo simulation with 10,000 iterations. Model result values are the row-wise `mean` of simulation results. See our guide on [Monte Carlo simulation](/guide/models-applying-models-monte-carlo) for more information.\n\n## How the model works\n\n##### For grasslands:\n\n##### For annual croplands:\n\nn.b., land cover, land management practices and improvements must cover >30% of the [Site](/schema/Site)'s area to satisfy the condition.\n\n## Data recommendations\n\n- Irrigation, using terms in the [water regime glossary](/glossary?termType=waterRegime).\n\n- Inputs to soil, using the terms [`amendmentIncreasingSoilCarbonUsed`](/term/amendmentIncreasingSoilCarbonUsed), [`animalManureUsed`](/term/animalManureUsed), [`inorganicNitrogenFertiliserUsed`](/term/inorganicNitrogenFertiliserUsed) and/or [`organicFertiliserUsed`](/term/organicFertiliserUsed).\n\n### Site measurements"}
@@ -1 +1 @@
1
- {"tags":{"author":["Florian Payen"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["HESTIA"],"citation":["Payen, F. (2025) Soil organic carbon stock modelling on HESTIA."],"modelId":["organicCarbonPerHa"],"modelRequires":["soilBulkDensity","organicCarbonPerKgSoil"]},"content":"# Organic carbon (per ha)\n\nThis model calculates a [Site](https://www.hestia.earth/schema/Site)'s SOC stocks (`organicCarbonPerHa`) at different points in time as a function of soil bulk density (`soilBulkDensity`), soil organic carbon concentration (`organicCarbonPerKgSoil`) and soil sampling depth (using `depthUpper` and `depthLower`).\n\nIt also rescales `organicCarbonPerHa` [Measurements](https://www.hestia.earth/schema/Measurement) from their source depth interval to a target depth interval of 0 - 30 cm.\n\n## Calculate organicCarbonPerHa from other measurements\n\n$SOC(a, b) = (b - a) * \\rho * C_{OC} * 100$\n\nWhere:\n\n* $SOC(a, b)$ = soil organic carbon stock per hectare for depth interval $a$ to $b$ (kg C / ha)\n* $a$ = upper bound of soil sampling depth interval (cm)\n* $b$ = lower bound of soil sampling depth interval (cm)\n* $\\rho$ = soil bulk density for depth interval $a$ to $b$ (g / cm<sup>3</sup>, which is the same as t / m<sup>3</sup>)\n* $C_{OC}$ = concentration of organic carbon in soil for depth interval $a$ to $b$ (g C / kg soil)\n\nSource: [Payen _et al._ (2021)](https://doi.org/10.1016/j.jclepro.2020.125736)\n\n## Rescale organicCarbonPerHa measurements to 0 to 30 cm depth\n\n_n.b._ `depthUpper` and `depthLower` for HESTIA [Measurements](https://www.hestia.earth/schema/Measurement) are recorded in centimetres; however, the following equations use the units metres for the depth variables $a$, $b$ and $x$.\n\nSOC stocks can be rescaled using the following $C_{density}$ equation:\n\n$C_{density}(x) = 22.1 - 33.3x + 14.9x^2$\n\nWhere:\n\n* $C_{density}(x)$ = density of carbon per cubic meter of soil at depth $x$ (kg C / m<sup>3</sup>)\n* $x$ = depth of measurement, between 0 and 1 (m)\n\nSource: [Smith _et al._ (2000)](https://doi.org/10.1111/j.1475-2743.2000.tb00214.x)\n\nBy calculating the definite integral of $C_{density}(x)$ between $a$ and $b$, we can estimate the proportion of carbon stored in the depth interval $a$ to $b$ compared to the total carbon stock in the depth interval 0 to 1 m:\n\n$cdf(a, b) = \\frac{\\int_a^b C_{density}(x) d{x}}{\\int_0^1 C_{density}(x) d{x}}$\n\n$cdf(a, b) = \\frac{[22.1b - \\frac{33.3b^2}{2} + \\frac{14.9b^3}{3}]-[22.1a - \\frac{33.3a^2}{2} + \\frac{14.9a^3}{3}]}{10.41\\dot{6}}$\n\nWhere:\n\n* $cdf(a, b)$ = cumulative distribution of organic carbon in soil for depth interval $a$ to $b$ compared to for depth interval 0 to 1 m.\n* $a$ = the upper bound of the depth interval, must be between 0 and 1 (m).\n* $b$ = the lower bound of the depth interval, must be between 0 and 1 and greater than or equal to $a$ (m).\n\nSource: [Abdalla _et al._ (2018)](https://doi.org/10.1016/j.agee.2017.10.023)\n\n<small>_n.b._, the $cdf$ equation presented in Abdalla _et al._ (2018) features a typo. The equation presented in this guide is the corrected version.</small>\n\n![Graph of the cdf from 0 to 1 meter depth](/assets/organicCarbonPerHa-depthLower.png)\n\nA graph of the cdf from 0 to 1 m depth. The x-axis is $b$, the depth lower of the `organicCarbonPerHa` measurement, and the y-axis is the value of the $cdf(0, b)$.\n\nWe can use the $cdf$ equation to rescale `organicCarbonPerHa` measurements from a source depth interval to a target depth interval. In our case, the target depth interval is 0 to 0.3 m:\n\n$SOC(0, 0.3) = SOC(a, b) * \\frac{cdf(0, 0.3)}{cdf(a, b)}$\n\nWhere:\n\n* $SOC(0, 0.3)$ = rescaled SOC measurement for depth interval 0 to 0.3 m (kg C / ha)\n* $SOC(a, b)$ = the source SOC measurement for depth interval $a$ to $b$ (kg C / ha)\n* $a$ = the upper bound of the source depth interval, must be between 0 and 1 (m)\n* $b$ = the lower bound of the source depth interval, must be between 0 and 1 and greater than or equal to $a$ (m)\n\nSource: [Abdalla _et al._ (2018)](https://doi.org/10.1016/j.agee.2017.10.023)\n\n![Graph of the scaling factor (cdf(0, 0.3)/cdf(0, source depth))](/assets/organicCarbonPerHa-sourceDepthLower.png)\n\nA graph of the scaling factor (cdf(0, 0.3)/cdf(0, source depth)). The x-axis is $b$, the depth lower of the source `organicCarbonPerHa` measurement, and the y-axis is the scaling factor required to rescale the measurement value from a source depth interval of 0 to $b$ to the target depth interval of 0 to 0.3 m.\n\n## Example\nIn this example, the model will estimate the SOC stock using other measurements and rescale the result to a 0 - 30 cm depth.\n\nThese fixtures have been simplified, [see the full fixtures here](https://gitlab.com/hestia-earth/hestia-engine-models/-/tree/develop/tests/fixtures/site/organicCarbonPerHa/calculate-and-rescale).\n\n### Input\n```json\n{\n \"@type\": \"Site\",\n \"siteType\": \"cropland\",\n \"measurements\": [\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"soilBulkDensity\",\n },\n \"value\": [\n 1.55\n ],\n \"depthUpper\": 0,\n \"depthLower\": 40,\n \"methodClassification\": \"on-site physical measurement\"\n },\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"organicCarbonPerKgSoil\",\n },\n \"value\": [\n 24.05\n ],\n \"dates\": [\n \"2020\"\n ],\n \"depthUpper\": 0,\n \"depthLower\": 40,\n \"methodClassification\": \"on-site physical measurement\"\n }\n ],\n}\n```\n\n### Output\n```json\n[\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"organicCarbonPerHa\"\n },\n \"value\": [\n 149110\n ],\n \"dates\": [\n \"2020\"\n ],\n \"depthUpper\": 0,\n \"depthLower\": 40,\n \"methodClassification\": \"modelled using other measurements\"\n },\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"organicCarbonPerHa\"\n },\n \"value\": [\n 120906.95055847566\n ],\n \"dates\": [\n \"2020\"\n ],\n \"depthUpper\": 0,\n \"depthLower\": 30,\n \"methodClassification\": \"modelled using other measurements\"\n }\n]\n```\n\n## Discussion\n\nThe $C_{density}$ equation from [Smith _et al._ (2000)](https://doi.org/10.1111/j.1475-2743.2000.tb00214.x) used in this model is a quadratic regression of $C_{density}$ at various depths for 22 soil types found in [Batjes (1996)](https://doi.org/10.1111/j.1365-2389.1996.tb01386.x). It is important to note that the exact methodology of how this regression was calculated (_i.e._, where to find the carbon density data in the original paper and which of the 4 soil types out of the 26 overall presented in the original paper were excluded) and the standard error of the regression were not described. With this in mind, there is scope to recalculate this rescaling method using the higher volume of soil data that is available today, in comparison to 1996. This could be disaggregated by soil type or soil category for greater specificity.\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/organicCarbonPerHa\">organicCarbonPerHa</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#method\">method</a> with <a href=\"https://hestia.earth/term/hestia\">hestia</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>modelled using other measurements</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/soilBulkDensity\">soilBulkDensity</a> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> and <a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>on-site physical measurement</code> <strong>or</strong> <code>modelled using other measurements</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/organicCarbonPerKgSoil\">organicCarbonPerKgSoil</a> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> and <a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>on-site physical measurement</code> <strong>or</strong> <code>modelled using other measurements</code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
1
+ {"tags":{"author":["Florian Payen"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["HESTIA"],"citation":["Payen, F. (2025) Soil organic carbon stock modelling on HESTIA."],"modelId":["organicCarbonPerHa"],"modelRequires":["soilBulkDensity","organicCarbonPerKgSoil"]},"content":"# Organic carbon (per ha)\n\nThis model calculates a [Site](/schema/Site)'s SOC stocks (`organicCarbonPerHa`) at different points in time as a function of soil bulk density (`soilBulkDensity`), soil organic carbon concentration (`organicCarbonPerKgSoil`) and soil sampling depth (using `depthUpper` and `depthLower`).\n\nIt also rescales `organicCarbonPerHa` [Measurements](/schema/Measurement) from their source depth interval to a target depth interval of 0 - 30 cm.\n\n## Calculate organicCarbonPerHa from other measurements\n\n$SOC(a, b) = (b - a) * \\rho * C_{OC} * 100$\n\nWhere:\n\n* $SOC(a, b)$ = soil organic carbon stock per hectare for depth interval $a$ to $b$ (kg C / ha)\n* $a$ = upper bound of soil sampling depth interval (cm)\n* $b$ = lower bound of soil sampling depth interval (cm)\n* $\\rho$ = soil bulk density for depth interval $a$ to $b$ (g / cm<sup>3</sup>, which is the same as t / m<sup>3</sup>)\n* $C_{OC}$ = concentration of organic carbon in soil for depth interval $a$ to $b$ (g C / kg soil)\n\nSource: [Payen et al. (2021)](https://doi.org/10.1016/j.jclepro.2020.125736).\n\n## Rescale organicCarbonPerHa measurements to 0 to 30 cm depth\n\n_n.b._ `depthUpper` and `depthLower` for HESTIA [Measurements](/schema/Measurement) are recorded in centimetres; however, the following equations use the units metres for the depth variables $a$, $b$ and $x$.\n\nSOC stocks can be rescaled using the following $C_{density}$ equation:\n\n$C_{density}(x) = 22.1 - 33.3x + 14.9x^2$\n\nWhere:\n\n* $C_{density}(x)$ = density of carbon per cubic meter of soil at depth $x$ (kg C / m<sup>3</sup>)\n* $x$ = depth of measurement, between 0 and 1 (m)\n\nSource: [Smith et al. (2000)](https://doi.org/10.1111/j.1475-2743.2000.tb00214.x).\n\nBy calculating the definite integral of $C_{density}(x)$ between $a$ and $b$, we can estimate the proportion of carbon stored in the depth interval $a$ to $b$ compared to the total carbon stock in the depth interval 0 to 1 m:\n\n$cdf(a, b) = \\frac{\\int_a^b C_{density}(x) d{x}}{\\int_0^1 C_{density}(x) d{x}}$\n\n$cdf(a, b) = \\frac{[22.1b - \\frac{33.3b^2}{2} + \\frac{14.9b^3}{3}]-[22.1a - \\frac{33.3a^2}{2} + \\frac{14.9a^3}{3}]}{10.41\\dot{6}}$\n\nWhere:\n\n* $cdf(a, b)$ = cumulative distribution of organic carbon in soil for depth interval $a$ to $b$ compared to for depth interval 0 to 1 m.\n* $a$ = the upper bound of the depth interval, must be between 0 and 1 (m).\n* $b$ = the lower bound of the depth interval, must be between 0 and 1 and greater than or equal to $a$ (m).\n\nSource: [Abdalla et al. (2018)](https://doi.org/10.1016/j.agee.2017.10.023).\n\n<small>_n.b._, the $cdf$ equation presented in Abdalla et al. (2018) features a typo. The equation presented in this guide is the corrected version.</small>\n\nFigure 1 displays a graph of the cdf from 0 to 1 m depth. The x-axis is $b$, the depth lower of the `organicCarbonPerHa` measurement, and the y-axis is the value of the $cdf(0, b)$.\n\n![Graph of the cdf from 0 to 1 m depth, according to [Abdalla et al. (2018)](https://doi.org/10.1016/j.agee.2017.10.023)](/assets/organicCarbonPerHa-depthLower.png)\n\n**Figure 1**. Graph of the cdf from 0 to 1 m depth, according to [Abdalla et al. (2018)](https://doi.org/10.1016/j.agee.2017.10.023).\n\nWe can use the $cdf$ equation to rescale `organicCarbonPerHa` measurements from a source depth interval to a target depth interval. In our case, the target depth interval is 0 to 0.3 m:\n\n$SOC(0, 0.3) = SOC(a, b) * \\frac{cdf(0, 0.3)}{cdf(a, b)}$\n\nWhere:\n\n* $SOC(0, 0.3)$ = rescaled SOC measurement for depth interval 0 to 0.3 m (kg C / ha)\n* $SOC(a, b)$ = the source SOC measurement for depth interval $a$ to $b$ (kg C / ha)\n* $a$ = the upper bound of the source depth interval, must be between 0 and 1 (m)\n* $b$ = the lower bound of the source depth interval, must be between 0 and 1 and greater than or equal to $a$ (m)\n\nSource: [Abdalla et al. (2018)](https://doi.org/10.1016/j.agee.2017.10.023).\n\nFigure 2 displays a graph of the scaling factor (cdf(0, 0.3)/cdf(0, source depth)). The x-axis is $b$, the depth lower of the source `organicCarbonPerHa` measurement, and the y-axis is the scaling factor required to rescale the measurement value from a source depth interval of 0 to $b$ to the target depth interval of 0 to 0.3 m.\n\n![Graph representing the scaling factor (cdf(0, 0.3)/cdf(0, source depth)), according to [Abdalla et al. (2018)](https://doi.org/10.1016/j.agee.2017.10.023)](/assets/organicCarbonPerHa-sourceDepthLower.png)\n\n**Figure 2**. Graph representing the scaling factor (cdf(0, 0.3)/cdf(0, source depth)), according to [Abdalla et al. (2018)](https://doi.org/10.1016/j.agee.2017.10.023).\n\n## Example\nIn this example, the model will estimate the SOC stock using other measurements and rescale the result to a 0 - 30 cm depth.\n\nThese fixtures have been simplified, [see the full fixtures here](https://gitlab.com/hestia-earth/hestia-engine-models/-/tree/master/tests/fixtures/hestia/organicCarbonPerHa/calculate-and-rescale).\n\n### Input\n```json\n{\n \"@type\": \"Site\",\n \"siteType\": \"cropland\",\n \"measurements\": [\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"soilBulkDensity\",\n },\n \"value\": [\n 1.55\n ],\n \"depthUpper\": 0,\n \"depthLower\": 40,\n \"methodClassification\": \"on-site physical measurement\"\n },\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"organicCarbonPerKgSoil\",\n },\n \"value\": [\n 24.05\n ],\n \"dates\": [\n \"2020\"\n ],\n \"depthUpper\": 0,\n \"depthLower\": 40,\n \"methodClassification\": \"on-site physical measurement\"\n }\n ],\n}\n```\n\n### Output\n```json\n[\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"organicCarbonPerHa\"\n },\n \"value\": [\n 149110\n ],\n \"dates\": [\n \"2020\"\n ],\n \"depthUpper\": 0,\n \"depthLower\": 40,\n \"methodClassification\": \"modelled using other measurements\"\n },\n {\n \"@type\": \"Measurement\",\n \"term\": {\n \"@type\": \"Term\",\n \"@id\": \"organicCarbonPerHa\"\n },\n \"value\": [\n 120906.95055847566\n ],\n \"dates\": [\n \"2020\"\n ],\n \"depthUpper\": 0,\n \"depthLower\": 30,\n \"methodClassification\": \"modelled using other measurements\"\n }\n]\n```\n\n## Discussion\n\nThe $C_{density}$ equation from [Smith et al. (2000)](https://doi.org/10.1111/j.1475-2743.2000.tb00214.x) used in this model is a quadratic regression of $C_{density}$ at various depths for 22 soil types found in [Batjes (1996)](https://doi.org/10.1111/j.1365-2389.1996.tb01386.x). It is important to note that the exact methodology of how this regression was calculated (_i.e._, where to find the carbon density data in the original paper and which of the 4 soil types out of the 26 overall presented in the original paper were excluded) and the standard error of the regression were not described. With this in mind, there is scope to recalculate this rescaling method using the higher volume of soil data that is available today, in comparison to 1996. This could be disaggregated by soil type or soil category for greater specificity.\n\n## References\n\nAbdalla, M., Hastings, A., Chadwick, D. R., Jones, D. L., Evans, C. D., Jones, M. B., ... & Smith, P. E. T. E. (2018). Critical review of the impacts of grazing intensity on soil organic carbon storage and other soil quality indicators in extensively managed grasslands. _Agriculture, Ecosystems & Environment_, _253_, 62-81.\n\nBatjes, N. H. (1996). Total carbon and nitrogen in the soils of the world. _European Journal of Soil Science_, _47_(2), 151-163.\n\nPayen, F. T., Sykes, A., Aitkenhead, M., Alexander, P., Moran, D., & MacLeod, M. (2021). Soil organic carbon sequestration rates in vineyard agroecosystems under different soil management practices: A meta-analysis. _Journal of Cleaner Production_, _290_, 125736.\n\nSmith, P., Milne, R., Powlson, D. S., Smith, J. U., Falloon, P., & Coleman, K. (2000). Revised estimates of the carbon mitigation potential of UK agricultural land. _Soil Use and Management_, _16_(4), 293-295.\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"collapsibles\">\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Returns</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A list of <a href=\"https://hestia.earth/schema/Measurement\">Measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/organicCarbonPerHa\">organicCarbonPerHa</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#method\">method</a> with <a href=\"https://hestia.earth/term/hestia\">hestia</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>modelled using other measurements</code></li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Requirements</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li>A <a href=\"https://hestia.earth/schema/Site\">Site</a> with:<ul>\n<li>a <a href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> = <code>forest</code> <strong>or</strong> <code>other natural vegetation</code> <strong>or</strong> <code>cropland</code> <strong>or</strong> <code>glass or high accessible cover</code> <strong>or</strong> <code>permanent pasture</code></li>\n<li>a list of <a href=\"https://hestia.earth/schema/Site#measurements\">measurements</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/soilBulkDensity\">soilBulkDensity</a> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> and <a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>on-site physical measurement</code> <strong>or</strong> <code>modelled using other measurements</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a> and <a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/organicCarbonPerKgSoil\">organicCarbonPerKgSoil</a> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> and <a href=\"https://hestia.earth/schema/Measurement#methodClassification\">methodClassification</a> with <code>on-site physical measurement</code> <strong>or</strong> <code>modelled using other measurements</code></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n </div>\n <div class=\"collapsible-group\">\n <div class=\"collapsible-header\">\n <span>Lookups used</span>\n </div>\n <div class=\"collapsible-content\"><ul>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -&gt; <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}