@hestia-earth/guide 0.0.18 → 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.
- package/CHANGELOG.md +16 -0
- package/dist/content/guide/aggregation-engine/content.json +1 -1
- package/dist/content/guide/data-explorer/what-is-it.json +1 -1
- package/dist/content/guide/data-validation/cycle.json +1 -1
- package/dist/content/guide/data-validation/impact-assessment.json +1 -1
- package/dist/content/guide/data-validation/organisation.json +1 -1
- package/dist/content/guide/data-validation/site.json +1 -1
- package/dist/content/guide/file-upload/examples/example-1.json +1 -1
- package/dist/content/guide/file-upload/examples/example-2.json +1 -1
- package/dist/content/guide/file-upload/examples/example-3.json +1 -1
- package/dist/content/guide/file-upload/examples/example-4.json +1 -1
- package/dist/content/guide/file-upload/getting-started.json +1 -1
- package/dist/content/guide/hestia-api/data-api.json +1 -1
- package/dist/content/guide/utils/content.json +1 -0
- package/dist/content/index.json +1 -1
- package/dist/content/models/applying-models/content.json +1 -0
- package/dist/content/models/applying-models/faq.json +1 -0
- package/dist/content/models/applying-models/introduction.json +1 -0
- package/dist/content/models/cycleEmissions/fuel/n2OToAirFuelCombustionIndirect/ipcc2019.json +1 -1
- package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/freeflow.json +1 -1
- package/dist/content/models/cycleEmissions/inputs/cycle-inputs-background-emissions/worldsteel.json +1 -0
- package/dist/content/models/cycleEmissions/landUseChange/co2ToAirAboveGroundBiomassStockChange/content.json +1 -1
- package/dist/content/models/cycleEmissions/landUseChange/co2ToAirAboveGroundBiomassStockChange/ipcc2019.json +1 -1
- package/dist/content/models/cycleEmissions/landUseChange/co2ToAirBelowGroundBiomassStockChange/content.json +1 -1
- package/dist/content/models/cycleEmissions/landUseChange/co2ToAirBelowGroundBiomassStockChange/ipcc2019.json +1 -1
- package/dist/content/models/cycleEmissions/organicSoil/ch4ToAirOrganicSoilCultivation/content.json +1 -1
- package/dist/content/models/cycleEmissions/organicSoil/ch4ToAirOrganicSoilCultivation/ipcc2019.json +1 -1
- package/dist/content/models/cycleEmissions/organicSoil/co2ToAirOrganicSoilCultivation/content.json +1 -1
- package/dist/content/models/cycleEmissions/organicSoil/co2ToAirOrganicSoilCultivation/ipcc2019.json +1 -1
- package/dist/content/models/cycleEmissions/other/co2ToAirLimeNeutralisation/ipcc2019.json +1 -0
- package/dist/content/models/cycleEmissions/other/nErosionSoilFlux/schererPfister2015.json +1 -1
- package/dist/content/models/cycleEmissions/other/pErosionSoilFlux/schererPfister2015.json +1 -1
- package/dist/content/models/cycleEmissions/soil/co2ToAirBiocharStockChange/content.json +1 -1
- package/dist/content/models/cycleEmissions/soil/co2ToAirBiocharStockChange/ipcc2019.json +1 -1
- package/dist/content/models/cycleEmissions/soil/co2ToAirSoilOrganicCarbonStockChange/content.json +1 -1
- package/dist/content/models/cycleEmissions/soil/co2ToAirSoilOrganicCarbonStockChange/ipcc2019.json +1 -1
- package/dist/content/models/cycleEmissions/soil/n2OToAirDiminishingSoilCarbonStocksDirect/content.json +1 -0
- package/dist/content/models/cycleEmissions/soil/n2OToAirDiminishingSoilCarbonStocksDirect/ipcc2019.json +1 -0
- package/dist/content/models/cycleGeneral/cycle-cycleDuration/content.json +1 -1
- package/dist/content/models/cycleGeneral/cycle-cycleDuration/cycle.json +1 -1
- package/dist/content/models/cycleGeneral/cycle-siteDuration/content.json +1 -1
- package/dist/content/models/cycleGeneral/cycle-siteDuration/cycle.json +1 -1
- package/dist/content/models/cycleGeneral/cycle-startDate/content.json +1 -1
- package/dist/content/models/cycleGeneral/cycle-startDate/cycle.json +1 -1
- package/dist/content/models/cycleInputs/hestia-materialAndSubstrate/hestia.json +1 -1
- package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resource-use/content.json +1 -1
- package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resource-use/worldsteel.json +1 -0
- package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resourceUse/content.json +1 -1
- package/dist/content/models/impactAssessmentResourceUse/inputs/impact-inputs-background-resourceUse/freeflow.json +1 -1
- package/dist/content/models/siteInfrastructure/content.json +1 -0
- package/dist/content/models/siteInfrastructure/site-infrastructure/content.json +1 -0
- package/dist/content/models/siteInfrastructure/site-infrastructure/kanetal2020.json +1 -0
- package/dist/content/models/siteMeasurements/landUseChange/aboveGroundBiomass/content.json +1 -1
- package/dist/content/models/siteMeasurements/landUseChange/aboveGroundBiomass/ipcc2019.json +1 -1
- package/dist/content/models/siteMeasurements/landUseChange/belowGroundBiomass/content.json +1 -1
- package/dist/content/models/siteMeasurements/landUseChange/belowGroundBiomass/ipcc2019.json +1 -1
- package/dist/content/models/siteMeasurements/soil/clayContent/content.json +1 -1
- package/dist/content/models/siteMeasurements/soil/clayContent/geospatialDatabase.json +1 -1
- package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/content.json +1 -1
- package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/ipcc2019Tier1.json +1 -1
- package/dist/content/models/siteMeasurements/soil/organicCarbonPerHa/ipcc2019Tier2.json +1 -1
- package/dist/content/models/siteMeasurements/soil/sandContent/content.json +1 -1
- package/dist/content/models/siteMeasurements/soil/sandContent/geospatialDatabase.json +1 -1
- package/dist/content/models/siteMeasurements/soil/siltContent/content.json +1 -1
- package/dist/content/models/siteMeasurements/soil/siltContent/geospatialDatabase.json +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +25 -7
- package/json_models/cycle/siteDuration.py.json +25 -1
- package/json_models/cycle/startDate.py.json +4 -2
- package/json_models/hestia/default_emissions.py.json +1 -1
- package/json_models/hestia/default_resourceUse.py.json +1 -1
- package/json_models/hestia/materialAndSubstrate.py.json +6 -7
- package/json_models/ipcc2019/n2OToAirDiminishingSoilCarbonStocksDirect.py.json +69 -0
- package/json_models/ipcc2019/n2OToAirFuelCombustionIndirect.py.json +25 -3
- package/json_models/kanEtAl2020/infrastructure.py.json +35 -0
- package/json_models/schererPfister2015/nErosionSoilFlux.py.json +8 -8
- package/json_models/schererPfister2015/pErosionSoilFlux.py.json +8 -8
- package/json_models/worldSteel/cycle.py.json +36 -0
- package/json_models/worldSteel/impact_assessment.py.json +38 -0
- package/package.json +1 -1
- package/dist/content/guide/applying-models/content.json +0 -1
- package/dist/content/guide/applying-models/faq.json +0 -1
- package/dist/content/guide/applying-models/file-validation.json +0 -1
- package/dist/content/guide/applying-models/introduction.json +0 -1
- package/dist/content/guide/applying-models/utils.json +0 -1
- package/dist/content/models/cycleEmissions/other/co2ToAirLimeHydrolysis/ipcc2019.json +0 -1
- /package/dist/content/{guide → models}/applying-models/contributing.json +0 -0
- /package/dist/content/{guide → models}/applying-models/logs.json +0 -0
- /package/dist/content/{guide → models}/applying-models/monte-carlo.json +0 -0
- /package/dist/content/models/cycleEmissions/other/{co2ToAirLimeHydrolysis → co2ToAirLimeNeutralisation}/content.json +0 -0
- /package/json_models/ipcc2019/{co2ToAirLimeHydrolysis.py.json → co2ToAirLimeNeutralisation.py.json} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"tags":{"author":["Florian Payen"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["IPCC (2019) Tier 2"],"citation":["Payen, F. (2025) Soil organic carbon stock modelling on HESTIA."],"tag":["soc modelling"],"modelId":["organicCarbonPerHa"],"modelRequires":["sandContent","temperatureMonthly","precipitationMonthly","potentialEvapotranspirationMonthly","aboveGroundCropResidueLeftOnField","aboveGroundCropResidueIncorporated","belowGroundCropResidue","discardedCropLeftOnField","discardedCropIncorporated","carbonContent","nitrogenContent","ligninContent"]},"content":"# Organic carbon (per ha)\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 IPCC Tier 2 steady-state method is used to estimate soil organic carbon stock changes in the 0 - 30 cm depth interval for croplands remaining croplands.\n\nThis approach estimates carbon stock changes using annual carbon input data (through crop residues and organic amendments); annual tillage data; monthly irrigation data; and monthly climate data (temperature, precipitation and potential evapotranspiration). The HESTIA platform constructs an annual inventory of this data (sourcing data from [Site](/schema/Site) nodes and their linked [Cycle](/schema/Cycle) nodes). The inventory is used to model the annual carbon gains and losses of three organic carbon sub-pool: active, slow and passive (Figure 1). A final `organicCarbonPerHa` value is calculated by summing together these three sub-pools.\n\n](/assets/organicCarbonPerHa-figure9.png)\n\n**Figure 1**. A diagram of organic carbon flows between carbon sub-pools [(IPCC, 2019, volume 4, chapter 5, box 5.1B)](https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html).\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\n### Step 1: Building the time series using Site and Cycle data\n\nThis step consists of retrieving and organising the input data for the model. For each year in the time series, we need:\n\n1. Climate data: `temperatureMonthly` (deg C), `precipitationMonthly` (mm), and `potentialEvapotranspirationMonthly` (PET) (mm month<sup>-1</sup>).\n2. Organic carbon sources (with a `value` (kg) and the the properties `carbonContent` (%), `nitrogenContent` (%), and `ligninContent` (%)). Carbon sources include: `aboveGroundCropResidueLeftOnField`, `aboveGroundCropResidueIncorporated`, `belowGroundCropResidue`, `discardedCropLeftOnField`, `discardedCropIncorporated`, `Organic fertilisers` and specific `Soil amendments`.\n3. _(Optional)_ irrigation: whether or not irrigation is used for each month in the time series.\n4. _(Optional)_ annual IPCC tillage category for each month in the time series: `FULL_TILLAGE`, `REDUCED_TILLAGE`, `NO_TILLAGE`, or `OTHER` (unknown tillage).\n\n### Step 2: Retrieving model parameters\n\nThis is a relatively simple step as we are only using the IPCC default parameters (but the model could be extended by calculating more specific model parameters for specific use cases in the future, _e.g._, for specific crop types, etc.)\n\n1. Select model parameters.\n2. Retrieve the sand content of the soil.\n\nThe default parameters provided by the [IPCC (2019)](https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html) are shown in Table 1.\n\n**Table 1**. Globally calibrated model parameters to be used to estimate SOC changes for mineral soils with the Tier 2 steady-state method. Adapted from [IPCC (2019), volume 4, chapter 5, table 5.5A](https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html).\n\n| Parameter | value | minimum | maximum | sd | description |\n| -------------------------------- | ------- | ------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `active_decay_factor` | 7.4 | - | - | n/a | Decay rate constant under optimal conditions for decomposition of the active sub-pool. |\n| `slow_decay_factor` | 0.209 | 0.058 | 0.3 | 0.566 | Decay rate constant under optimal conditions for decomposition of the slow sub-pool. |\n| `passive_decay_factor` | 0.00689 | 0.005 | 0.01 | 0.00125 | Decay rate constant under optimal conditions for decomposition of the passive sub-pool. |\n| `f_1` | 0.378 | 0.01 | 0.8 | 0.0719 | Fraction of metabolic dead organic matter decay. |\n| `f_2_full_tillage` | 0.455 | - | - | n/a | Fraction of structural dead organic matter decay products transferred the active sub-pool under full tillage (source Vol 4. Ch. 5 Excel attachment). |\n| `f_2_reduced_tillage` | 0.477 | - | - | n/a | Fraction of structural dead organic matter decay products transferred the active sub-pool under reduced tillage (source Vol 4. Ch. 5 Excel attachment). |\n| `f_2_no_tillage` | 0.5 | - | - | n/a | Fraction of structural dead organic matter decay products transferred the active sub-pool under no tillage (source Vol 4. Ch. 5 Excel attachment). |\n| `f_2_unknown_tillage` | 0.368 | 0.007 | 0.5 | 0.0998 | Fraction of structural dead organic matter decay products transferred the active sub-pool under unknown tillage. |\n| `f_3` | 0.455 | 0.1 | 0.8 | 0.201 | Fraction of structural dead organic matter decay products transferred to the slow sub-pool. |\n| `f_5` | 0.0855 | 0.037 | 0.1 | 0.0122 | Fraction of active sub-pool decay products transferred to the passive sub-pool. |\n| `f_6` | 0.0504 | 0.02 | 0.19 | 0.0280 | Fraction of slow sub-pool decay products transferred to the passive sub-pool. |\n| `f_7` | 0.42 | - | - | n/a | Fraction of slow sub-pool decay products transferred to the active sub-pool. |\n| `f_8` | 0.45 | - | - | n/a | Fraction of passive sub-pool decay products transferred to the active sub-pool. |\n| `tillage_factor_full_tillage` | 3.036 | 1.4 | 4.0 | 0.579 | Full tillage disturbance modifier for decay rates. |\n| `tillage_factor_reduced_tillage` | 2.075 | 1.0 | 3.0 | 0.569 | Reduced tillage disturbance modifier for decay rates. |\n| `tillage_factor_no_tillage` | 1 | - | - | n/a | No tillage disturbance modifier for decay rates. |\n| `maximum_temperature` | 45 | - | - | n/a | Maximum monthly average temperature for decomposition. |\n| `optimum_temperature` | 33.69 | 30.7 | 35.34 | 0.66 | Optimum temperature to estimate temperature modifier on decomposition. |\n| `water_factor_slope` | 1.331 | 0.8 | 2.0 | 0.386 | Slope parameter for estimating annual water factors. |\n| `default_carbon_content` | 0.42 | - | - | n/a | The default carbon content of crop residues as a decimal proportion of dry matter mass. |\n\n### Step 3: Pre-processing climate and carbon input data\n\n1. Calculate the annual temperature factors from the monthly average temperature data (see `_run_annual_temperature_factors`).\n2. Calculate the annual water factors from the monthly sum precipitation, monthly sum PET, and monthly irrigation used (see `_run_annual_water_factors`).\n3. Calculate annual organic carbon input, the average nitrogen content of carbon sources, and the average lignin content of carbon sources (see `_run_annual_organic_carbon_inputs`).\n\n### Step 4: Running the model\n\nThis is to describe the sequence of what the model (`_run_soc_stocks`) does, in the following order:\n\n1. Calculates the _f_4_ parameter based on the sand content of the soil.\n2. Retrieves the correct _f_2_ parameter for each year in the time series based on the tillage category.\n3. Retrieves the correct tillage factor for each year in the time series based on the tillage category.\n4. Separates the time series into \"run-in\" and \"inventory\". The \"run-in\" consists of the first five years of the time series; it is used by the model to calculate an initial value of SOC stock. It is mandatory for Tier 2 to work. The five years of the \"run-in\" are averaged by the model to create the first year of the \"inventory\". Then, all subsequent years in the time series are added to the \"inventory\" without any manipulation. The last year of the inventory would correspond to the final value of SOC stock calculated by the model. (See `time_series_to_inventory` helper function.)\n5. Calculates the steady-state SOC stock (in kg C / ha) for each year in the **inventory** for the active, slow and passive sub-pools. (The steady-state corresponds to the SOC stock of each sub-pool if the soil was at equilibrium under specific management practices and climatic conditions.)\n6. Calculates the estimated SOC stock (in kg C / ha) for each year in the **inventory** for the active, slow and passive sub-pools based on the steady-state SOC stock value and the annual decay factors. The initial SOC stock is the steady-state value of the first year of the inventory (_i.e._ the average of the five years of the run-in).\n7. Calculates the total SOC stock for each year of the **inventory** by summing together the SOC stock values from each of the three sub-pools.\n8. Calculate row-wise mean (this will be the output node's `value`) and other descriptive statistics.\n\n### Tier 2 model cut-off points:\n\n- If there are fewer than 5 successive inventory years overall on a [Site](/schema/Site), Tier 2 **cannot** run. This is due to the fact that the Tier 2 methodology requires five consecutive years of run-in data to estimate the initial SOC stock. A Tier 1 methodology should be considered instead.\n- If there are gaps in the time series, the Tier 2 model **cannot** be used as it requires the knowledge of the previous years' SOC stocks to calculate the next. It would be preferable to use a Tier 1 approach instead, as Tier 1 can interpolate between years. However, if separate time series of longer than 5 years each can be constructed for a single [Site](/schema/Site), then the Tier 2 model can work.\n- If the amount of all the carbon inputs is not included in [Cycles](/schema/Cycle) (_e.g._, we know that the above ground and below ground crop residues are left on the field but we cannot estimate how much crop residues there are), the model will still run, but the outputted SOC stocks will be underestimated. Data completeness when it comes to carbon inputs is paramount for the Tier 2 SOC model. In cases when only some of the overall carbon inputs are quantified and included in [Cycles](/schema/Cycle), we recommend to use the Tier 1 SOC model instead.\n\n## Data recommendations\n\nThe Tier 2 model **cannot** run for years where the total carbon input to the soil is equal to 0 kg (as such a situation is not realistic and is beyond the bounds of the mathematics used by the model). This means that if the mass of each carbon source applied to the soil is not given in the upload and cannot be estimated using other information provided in the upload, the total carbon input will default to 0 kg, and Tier 2 will not run. If possible, a Tier 1 approach should be used instead.\n\n## Example\n\n### Site measurements\n\n| Measurement | Value | Unit |\n| ------------------------------------------------- | ----- | ---- |\n| `sandContent` | 25 | % |\n| `temperatureMonthly`<sup>\\*</sup> | 16 | °C |\n| `precipitationMonthly`<sup>\\*</sup> | 45 | mm |\n| `potentialEvapotranspirationMonthly`<sup>\\*</sup> | 88 | mm |\n\n<sup>\\*</sup> Average value for brevity.\n\n### Carbon source properties\n\n| Carbon source | `carbonContent` (%) | `nitrogenContent` (%) | `ligninContent` (%) |\n| ------------------------------------ | ------------------- | --------------------- | ------------------- |\n| `aboveGroundCropResidueIncorporated` | 42 | 0.7 | 5.3 |\n| `belowGroundCropResidue` | 42 | 0.9 | 7.3 |\n| `manureDryKgMass` | 38.4 | 2.65 | 9.67 |\n\n### Site measurements\n\n| Year | `IpccManagementCategory` | `belowGroundCropResidue` (kg ha<sup>-1</sup>) | `aboveGroundCropResidueIncorporated` (kg ha<sup>-1</sup>) | `manureDryKgMass` (kg ha<sup>-1</sup>) | Carbon input (kg C ha<sup>-1</sup>) | Avg. N content<sup>\\*</sup> (%) | Avg. lignin content<sup>\\*</sup> (%) | `organicCarbonPerHa` (kg C ha<sup>-1</sup>) |\n| ---- | ------------------------ | --------------------------------------------- | --------------------------------------------------------- | -------------------------------------- | ----------------------------------- | ------------------------------- | ------------------------------------ | ------------------------------------------- |\n| 2014 | `FULL_TILLAGE` | 3570 | 0 | 0 | 1500 | 0.9 | 7.3 | - |\n| 2015 | `FULL_TILLAGE` | 3570 | 0 | 0 | 1500 | 0.9 | 7.3 | - |\n| 2016 | `FULL_TILLAGE` | 3570 | 0 | 0 | 1500 | 0.9 | 7.3 | - |\n| 2017 | `FULL_TILLAGE` | 3570 | 3570 | 0 | 3000 | 0.9 | 7.3 | - |\n| 2018 | `FULL_TILLAGE` | 3570 | 3570 | 0 | 3000 | 0.9 | 7.3 | 31409 |\n| 2019 | `REDUCED_TILLAGE` | 3570 | 3570 | 0 | 3000 | 0.9 | 7.3 | 32215 |\n| 2020 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 34238 |\n| 2021 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 35501 |\n| 2022 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 36472 |\n| 2023 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 37234 |\n\n<sup>\\*</sup> Average of carbon sources, weighted by dry matter mass.\n\n### Model results\n\nFigures 2 and 3 display the Tier 2 SOC model outputs, aggregated for the entire SOC stock for the 0 - 30 cm depth interval (Figure 2) or desaggregated into the three carbon sub-pools used by the model - active, passive & slow (Figure 3). As illustrated on Figure 2, the change from full tillage to reduced tillage in 2019 followed by the addition of animal manure from 2020 onwards lead to significantly higher carbon inputs entering and remaining in the system, which translates into sharply increasing SOC stocks between 2019 and 2023.\n\n\n\n**Figure 2**. Graph displaying the aggregated Tier 2 SOC model outputs for the 0 - 30 cm soil depth interval.\n\n\n\n**Figure 3**. Graph displaying the Tier 2 SOC model outputs desaggregated into the three carbon sub-pools (active, passive and slow) for the 0 - 30 cm soil depth interval.\n\n## Discussion\n\nNew reporting standards require SOC models to be Tier 2 or above. Therefore, where possible (_i.e._, for croplands remaining croplands with reported annual yields), the Tier 2 methodology should be used instead of the Tier 1 methodology. While the Tier 2 methodology does have high data requirements, the HESTIA platform will attempt to gap-fill missing data (_e.g._, missing monthly climate data and crop residue yields and properties) to help the model run on as many [Sites](/schema/Site) as possible.\n\nOther than the high data requirements, the model does have some additional limitations:\n- If `startDate` and `endDate` are not provided on [Cycles'](/schema/Cycle) `waterRegime` practice nodes, the model will assume that irrigation is applied for the entirety of the [Cycle](/schema/Cycle)'s duration. This could result in SOC losses being underestimated (or SOC gains being overestimated) if irrigation was only applied during certain months.\n- Known issues with carbon inputs:\n - Any discarded crops that remain on the field (`discardedCropIncorporated` and `discardedCropLeftOnField`) must have the properties `carbonContent`, `nitrogenContent` and `ligninContent` specified to be counted as a valid carbon source. If any of these properties is missing, the carbon input from these sources will **not** be counted. Therefore, for [Sites](/schema/Site) where discarded crops remain on the field, SOC losses could be overestimated (see [issue 759](https://gitlab.com/hestia-earth/hestia-engine-models/-/issues/759)).\n - Carbon inputs from cover crops (`landCover` [Product](/schema/Product)s with one of [Properties](/schema/Property): `coverCrop`, `catchCrop`, `shortfallowCrop` or `coverCrop`) are estimated using the [BSI (2012, p. 12)](https://knowledge.bsigroup.com/products/assessment-of-life-cycle-greenhouse-gas-emissions-from-horticultural-products-supplementary-requirements-for-the-cradle-to-gate-stages-of-ghg-assessments-of-horticultural-products-undertaken-in-accordance-with-pas-2050) above and below ground biomass stock value for annual crops of 4,000 kg ha<sup>-1</sup>.\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\n\n\n\n\n\n\n\n\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/organicCarbonPerHa\">organicCarbonPerHa</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 2 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 href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> with <code>cropland</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#term\">term</a> with <a href=\"https://hestia.earth/term/sandContent\">sandContent</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> 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 optional:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n</ul>\n</li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/temperatureMonthly\">temperatureMonthly</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/precipitationMonthly\">precipitationMonthly</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/potentialEvapotranspirationMonthly\">potentialEvapotranspirationMonthly</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n</ul>\n</li>\n<li>related to:<ul>\n<li>a list of <a href=\"https://hestia.earth/schema/Cycle\">Cycles</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/null#endDate\">endDate</a> and a list of <a href=\"https://hestia.earth/schema/null#products\">products</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Product#term\">term</a> with <a href=\"https://hestia.earth/term/aboveGroundCropResidueLeftOnField\">aboveGroundCropResidueLeftOnField</a> <strong>or</strong> <a href=\"https://hestia.earth/term/aboveGroundCropResidueIncorporated\">aboveGroundCropResidueIncorporated</a> <strong>or</strong> <a href=\"https://hestia.earth/term/belowGroundCropResidue\">belowGroundCropResidue</a> <strong>or</strong> <a href=\"https://hestia.earth/term/discardedCropLeftOnField\">discardedCropLeftOnField</a> <strong>or</strong> <a href=\"https://hestia.earth/term/discardedCropIncorporated\">discardedCropIncorporated</a> and <a href=\"https://hestia.earth/schema/Product#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/Product#properties\">properties</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/carbonContent\">carbonContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/nitrogenContent\">nitrogenContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/ligninContent\">ligninContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/null#inputs\">inputs</a> with:</li>\n</ul>\n</li>\n<li><a href=\"https://hestia.earth/schema/Input#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=organicFertiliser\">organicFertiliser</a> <strong>or</strong> <a href=\"https://hestia.earth/glossary?termType=soilAmendment\">soilAmendment</a> and <a href=\"https://hestia.earth/schema/Input#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/Input#properties\">properties</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/carbonContent\">carbonContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/nitrogenContent\">nitrogenContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/ligninContent\">ligninContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/null#practices\">practices</a> with:</li>\n</ul>\n</li>\n<li><a href=\"https://hestia.earth/schema/Practice#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=tillage\">tillage</a> and <a href=\"https://hestia.earth/schema/Practice#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Practice#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=waterRegime\">waterRegime</a> and <a href=\"https://hestia.earth/schema/Term#name\">name</a> containing "irrigated" and <a href=\"https://hestia.earth/schema/Practice#value\">value</a> and <a href=\"https://hestia.earth/schema/Practice#startDate\">startDate</a> and <a href=\"https://hestia.earth/schema/Practice#endDate\">endDate</a> and optional:</li>\n<li><a href=\"https://hestia.earth/schema/null#startDate\">startDate</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/crop.csv\">crop.csv</a> -> <code>IPCC_LAND_USE_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/landCover.csv\">landCover.csv</a> -> <code>IPCC_LAND_USE_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/tillage.csv\">tillage.csv</a> -> <code>IPCC_TILLAGE_MANAGEMENT_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -> <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
|
|
1
|
+
{"tags":{"author":["Florian Payen"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["IPCC (2019) Tier 2"],"citation":["Payen, F. (2025) Soil organic carbon stock modelling on HESTIA."],"tag":["soc modelling"],"modelId":["organicCarbonPerHa"],"modelRequires":["sandContent","temperatureMonthly","precipitationMonthly","potentialEvapotranspirationMonthly","aboveGroundCropResidueLeftOnField","aboveGroundCropResidueIncorporated","belowGroundCropResidue","discardedCropLeftOnField","discardedCropIncorporated","carbonContent","nitrogenContent","ligninContent"]},"content":"# Organic carbon (per ha)\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 IPCC Tier 2 steady-state method is used to estimate soil organic carbon stock changes in the 0 - 30 cm depth interval for croplands remaining croplands.\n\nThis approach estimates carbon stock changes using annual carbon input data (through crop residues and organic amendments); annual tillage data; monthly irrigation data; and monthly climate data (temperature, precipitation and potential evapotranspiration). The HESTIA platform constructs an annual inventory of this data (sourcing data from [Site](/schema/Site) nodes and their linked [Cycle](/schema/Cycle) nodes). The inventory is used to model the annual carbon gains and losses of three organic carbon sub-pool: active, slow and passive (Figure 1). A final `organicCarbonPerHa` value is calculated by summing together these three sub-pools.\n\n](/assets/organicCarbonPerHa-figure9.png)\n\n**Figure 1**. A diagram of organic carbon flows between carbon sub-pools [(IPCC, 2019, volume 4, chapter 5, box 5.1B)](https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html).\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### Step 1: Building the time series using Site and Cycle data\n\nThis step consists of retrieving and organising the input data for the model. For each year in the time series, we need:\n\n1. Climate data: `temperatureMonthly` (deg C), `precipitationMonthly` (mm), and `potentialEvapotranspirationMonthly` (PET) (mm month<sup>-1</sup>).\n2. Organic carbon sources (with a `value` (kg) and the the properties `carbonContent` (%), `nitrogenContent` (%), and `ligninContent` (%)). Carbon sources include: `aboveGroundCropResidueLeftOnField`, `aboveGroundCropResidueIncorporated`, `belowGroundCropResidue`, `discardedCropLeftOnField`, `discardedCropIncorporated`, `Organic fertilisers` and specific `Soil amendments`.\n3. _(Optional)_ irrigation: whether or not irrigation is used for each month in the time series.\n4. _(Optional)_ annual IPCC tillage category for each month in the time series: `FULL_TILLAGE`, `REDUCED_TILLAGE`, `NO_TILLAGE`, or `OTHER` (unknown tillage).\n\n### Step 2: Retrieving model parameters\n\nThis is a relatively simple step as we are only using the IPCC default parameters (but the model could be extended by calculating more specific model parameters for specific use cases in the future, _e.g._, for specific crop types, etc.)\n\n1. Select model parameters.\n2. Retrieve the sand content of the soil.\n\nThe default parameters provided by the [IPCC (2019)](https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html) are shown in Table 1.\n\n**Table 1**. Globally calibrated model parameters to be used to estimate SOC changes for mineral soils with the Tier 2 steady-state method. Adapted from [IPCC (2019), volume 4, chapter 5, table 5.5A](https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html).\n\n| Parameter | value | minimum | maximum | sd | description |\n| -------------------------------- | ------- | ------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `active_decay_factor` | 7.4 | - | - | n/a | Decay rate constant under optimal conditions for decomposition of the active sub-pool. |\n| `slow_decay_factor` | 0.209 | 0.058 | 0.3 | 0.566 | Decay rate constant under optimal conditions for decomposition of the slow sub-pool. |\n| `passive_decay_factor` | 0.00689 | 0.005 | 0.01 | 0.00125 | Decay rate constant under optimal conditions for decomposition of the passive sub-pool. |\n| `f_1` | 0.378 | 0.01 | 0.8 | 0.0719 | Fraction of metabolic dead organic matter decay. |\n| `f_2_full_tillage` | 0.455 | - | - | n/a | Fraction of structural dead organic matter decay products transferred the active sub-pool under full tillage (source Vol 4. Ch. 5 Excel attachment). |\n| `f_2_reduced_tillage` | 0.477 | - | - | n/a | Fraction of structural dead organic matter decay products transferred the active sub-pool under reduced tillage (source Vol 4. Ch. 5 Excel attachment). |\n| `f_2_no_tillage` | 0.5 | - | - | n/a | Fraction of structural dead organic matter decay products transferred the active sub-pool under no tillage (source Vol 4. Ch. 5 Excel attachment). |\n| `f_2_unknown_tillage` | 0.368 | 0.007 | 0.5 | 0.0998 | Fraction of structural dead organic matter decay products transferred the active sub-pool under unknown tillage. |\n| `f_3` | 0.455 | 0.1 | 0.8 | 0.201 | Fraction of structural dead organic matter decay products transferred to the slow sub-pool. |\n| `f_5` | 0.0855 | 0.037 | 0.1 | 0.0122 | Fraction of active sub-pool decay products transferred to the passive sub-pool. |\n| `f_6` | 0.0504 | 0.02 | 0.19 | 0.0280 | Fraction of slow sub-pool decay products transferred to the passive sub-pool. |\n| `f_7` | 0.42 | - | - | n/a | Fraction of slow sub-pool decay products transferred to the active sub-pool. |\n| `f_8` | 0.45 | - | - | n/a | Fraction of passive sub-pool decay products transferred to the active sub-pool. |\n| `tillage_factor_full_tillage` | 3.036 | 1.4 | 4.0 | 0.579 | Full tillage disturbance modifier for decay rates. |\n| `tillage_factor_reduced_tillage` | 2.075 | 1.0 | 3.0 | 0.569 | Reduced tillage disturbance modifier for decay rates. |\n| `tillage_factor_no_tillage` | 1 | - | - | n/a | No tillage disturbance modifier for decay rates. |\n| `maximum_temperature` | 45 | - | - | n/a | Maximum monthly average temperature for decomposition. |\n| `optimum_temperature` | 33.69 | 30.7 | 35.34 | 0.66 | Optimum temperature to estimate temperature modifier on decomposition. |\n| `water_factor_slope` | 1.331 | 0.8 | 2.0 | 0.386 | Slope parameter for estimating annual water factors. |\n| `default_carbon_content` | 0.42 | - | - | n/a | The default carbon content of crop residues as a decimal proportion of dry matter mass. |\n\n### Step 3: Pre-processing climate and carbon input data\n\n1. Calculate the annual temperature factors from the monthly average temperature data (see `_run_annual_temperature_factors`).\n2. Calculate the annual water factors from the monthly sum precipitation, monthly sum PET, and monthly irrigation used (see `_run_annual_water_factors`).\n3. Calculate annual organic carbon input, the average nitrogen content of carbon sources, and the average lignin content of carbon sources (see `_run_annual_organic_carbon_inputs`).\n\n### Step 4: Running the model\n\nThis is to describe the sequence of what the model (`_run_soc_stocks`) does, in the following order:\n\n1. Calculates the _f_4_ parameter based on the sand content of the soil.\n2. Retrieves the correct _f_2_ parameter for each year in the time series based on the tillage category.\n3. Retrieves the correct tillage factor for each year in the time series based on the tillage category.\n4. Separates the time series into \"run-in\" and \"inventory\". The \"run-in\" consists of the first five years of the time series; it is used by the model to calculate an initial value of SOC stock. It is mandatory for Tier 2 to work. The five years of the \"run-in\" are averaged by the model to create the first year of the \"inventory\". Then, all subsequent years in the time series are added to the \"inventory\" without any manipulation. The last year of the inventory would correspond to the final value of SOC stock calculated by the model. (See `time_series_to_inventory` helper function.)\n5. Calculates the steady-state SOC stock (in kg C / ha) for each year in the **inventory** for the active, slow and passive sub-pools. (The steady-state corresponds to the SOC stock of each sub-pool if the soil was at equilibrium under specific management practices and climatic conditions.)\n6. Calculates the estimated SOC stock (in kg C / ha) for each year in the **inventory** for the active, slow and passive sub-pools based on the steady-state SOC stock value and the annual decay factors. The initial SOC stock is the steady-state value of the first year of the inventory (_i.e._ the average of the five years of the run-in).\n7. Calculates the total SOC stock for each year of the **inventory** by summing together the SOC stock values from each of the three sub-pools.\n8. Calculate row-wise mean (this will be the output node's `value`) and other descriptive statistics.\n\n### Tier 2 model cut-off points:\n\n- If there are fewer than 5 successive inventory years overall on a [Site](/schema/Site), Tier 2 **cannot** run. This is due to the fact that the Tier 2 methodology requires five consecutive years of run-in data to estimate the initial SOC stock. A Tier 1 methodology should be considered instead.\n- If there are gaps in the time series, the Tier 2 model **cannot** be used as it requires the knowledge of the previous years' SOC stocks to calculate the next. It would be preferable to use a Tier 1 approach instead, as Tier 1 can interpolate between years. However, if separate time series of longer than 5 years each can be constructed for a single [Site](/schema/Site), then the Tier 2 model can work.\n- If the amount of all the carbon inputs is not included in [Cycles](/schema/Cycle) (_e.g._, we know that the above ground and below ground crop residues are left on the field but we cannot estimate how much crop residues there are), the model will still run, but the outputted SOC stocks will be underestimated. Data completeness when it comes to carbon inputs is paramount for the Tier 2 SOC model. In cases when only some of the overall carbon inputs are quantified and included in [Cycles](/schema/Cycle), we recommend to use the Tier 1 SOC model instead.\n\n## Data recommendations\n\nThe Tier 2 model **cannot** run for years where the total carbon input to the soil is equal to 0 kg (as such a situation is not realistic and is beyond the bounds of the mathematics used by the model). This means that if the mass of each carbon source applied to the soil is not given in the upload and cannot be estimated using other information provided in the upload, the total carbon input will default to 0 kg, and Tier 2 will not run. If possible, a Tier 1 approach should be used instead.\n\n## Example\n\n### Site measurements\n\n| Measurement | Value | Unit |\n| ------------------------------------------------- | ----- | ---- |\n| `sandContent` | 25 | % |\n| `temperatureMonthly`<sup>\\*</sup> | 16 | °C |\n| `precipitationMonthly`<sup>\\*</sup> | 45 | mm |\n| `potentialEvapotranspirationMonthly`<sup>\\*</sup> | 88 | mm |\n\n<sup>\\*</sup> Average value for brevity.\n\n### Carbon source properties\n\n| Carbon source | `carbonContent` (%) | `nitrogenContent` (%) | `ligninContent` (%) |\n| ------------------------------------ | ------------------- | --------------------- | ------------------- |\n| `aboveGroundCropResidueIncorporated` | 42 | 0.7 | 5.3 |\n| `belowGroundCropResidue` | 42 | 0.9 | 7.3 |\n| `manureDryKgMass` | 38.4 | 2.65 | 9.67 |\n\n### Site measurements\n\n| Year | `IpccManagementCategory` | `belowGroundCropResidue` (kg ha<sup>-1</sup>) | `aboveGroundCropResidueIncorporated` (kg ha<sup>-1</sup>) | `manureDryKgMass` (kg ha<sup>-1</sup>) | Carbon input (kg C ha<sup>-1</sup>) | Avg. N content<sup>\\*</sup> (%) | Avg. lignin content<sup>\\*</sup> (%) | `organicCarbonPerHa` (kg C ha<sup>-1</sup>) |\n| ---- | ------------------------ | --------------------------------------------- | --------------------------------------------------------- | -------------------------------------- | ----------------------------------- | ------------------------------- | ------------------------------------ | ------------------------------------------- |\n| 2014 | `FULL_TILLAGE` | 3570 | 0 | 0 | 1500 | 0.9 | 7.3 | - |\n| 2015 | `FULL_TILLAGE` | 3570 | 0 | 0 | 1500 | 0.9 | 7.3 | - |\n| 2016 | `FULL_TILLAGE` | 3570 | 0 | 0 | 1500 | 0.9 | 7.3 | - |\n| 2017 | `FULL_TILLAGE` | 3570 | 3570 | 0 | 3000 | 0.9 | 7.3 | - |\n| 2018 | `FULL_TILLAGE` | 3570 | 3570 | 0 | 3000 | 0.9 | 7.3 | 31409 |\n| 2019 | `REDUCED_TILLAGE` | 3570 | 3570 | 0 | 3000 | 0.9 | 7.3 | 32215 |\n| 2020 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 34238 |\n| 2021 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 35501 |\n| 2022 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 36472 |\n| 2023 | `REDUCED_TILLAGE` | 3570 | 3570 | 7810 | 6000 | 1.8 | 8.5 | 37234 |\n\n<sup>\\*</sup> Average of carbon sources, weighted by dry matter mass.\n\n### Model results\n\nFigures 2 and 3 display the Tier 2 SOC model outputs, aggregated for the entire SOC stock for the 0 - 30 cm depth interval (Figure 2) or desaggregated into the three carbon sub-pools used by the model - active, passive & slow (Figure 3). As illustrated on Figure 2, the change from full tillage to reduced tillage in 2019 followed by the addition of animal manure from 2020 onwards lead to significantly higher carbon inputs entering and remaining in the system, which translates into sharply increasing SOC stocks between 2019 and 2023.\n\n\n\n**Figure 2**. Graph displaying the aggregated Tier 2 SOC model outputs for the 0 - 30 cm soil depth interval.\n\n\n\n**Figure 3**. Graph displaying the Tier 2 SOC model outputs desaggregated into the three carbon sub-pools (active, passive and slow) for the 0 - 30 cm soil depth interval.\n\n## Discussion\n\nNew reporting standards require SOC models to be Tier 2 or above. Therefore, where possible (_i.e._, for croplands remaining croplands with reported annual yields), the Tier 2 methodology should be used instead of the Tier 1 methodology. While the Tier 2 methodology does have high data requirements, the HESTIA platform will attempt to gap-fill missing data (_e.g._, missing monthly climate data and crop residue yields and properties) to help the model run on as many [Sites](/schema/Site) as possible.\n\nOther than the high data requirements, the model does have some additional limitations:\n- If `startDate` and `endDate` are not provided on [Cycles'](/schema/Cycle) `waterRegime` practice nodes, the model will assume that irrigation is applied for the entirety of the [Cycle](/schema/Cycle)'s duration. This could result in SOC losses being underestimated (or SOC gains being overestimated) if irrigation was only applied during certain months.\n- Known issues with carbon inputs:\n - Any discarded crops that remain on the field (`discardedCropIncorporated` and `discardedCropLeftOnField`) must have the properties `carbonContent`, `nitrogenContent` and `ligninContent` specified to be counted as a valid carbon source. If any of these properties is missing, the carbon input from these sources will **not** be counted. Therefore, for [Sites](/schema/Site) where discarded crops remain on the field, SOC losses could be overestimated (see [issue 759](https://gitlab.com/hestia-earth/hestia-engine-models/-/issues/759)).\n - Carbon inputs from cover crops (`landCover` [Product](/schema/Product)s with one of [Properties](/schema/Property): `coverCrop`, `catchCrop`, `shortfallowCrop` or `coverCrop`) are estimated using the [BSI (2012, p. 12)](https://knowledge.bsigroup.com/products/assessment-of-life-cycle-greenhouse-gas-emissions-from-horticultural-products-supplementary-requirements-for-the-cradle-to-gate-stages-of-ghg-assessments-of-horticultural-products-undertaken-in-accordance-with-pas-2050) above and below ground biomass stock value for annual crops of 4,000 kg ha<sup>-1</sup>.\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\n\n\n\n\n\n\n\n\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/organicCarbonPerHa\">organicCarbonPerHa</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 2 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 href=\"https://hestia.earth/schema/Site#siteType\">siteType</a> with <code>cropland</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#term\">term</a> with <a href=\"https://hestia.earth/term/sandContent\">sandContent</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> 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 optional:<ul>\n<li><a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n</ul>\n</li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/temperatureMonthly\">temperatureMonthly</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/precipitationMonthly\">precipitationMonthly</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/potentialEvapotranspirationMonthly\">potentialEvapotranspirationMonthly</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> and <a href=\"https://hestia.earth/schema/Measurement#dates\">dates</a></li>\n</ul>\n</li>\n<li>related to:<ul>\n<li>a list of <a href=\"https://hestia.earth/schema/Cycle\">Cycles</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/null#endDate\">endDate</a> and a list of <a href=\"https://hestia.earth/schema/null#products\">products</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Product#term\">term</a> with <a href=\"https://hestia.earth/term/aboveGroundCropResidueLeftOnField\">aboveGroundCropResidueLeftOnField</a> <strong>or</strong> <a href=\"https://hestia.earth/term/aboveGroundCropResidueIncorporated\">aboveGroundCropResidueIncorporated</a> <strong>or</strong> <a href=\"https://hestia.earth/term/belowGroundCropResidue\">belowGroundCropResidue</a> <strong>or</strong> <a href=\"https://hestia.earth/term/discardedCropLeftOnField\">discardedCropLeftOnField</a> <strong>or</strong> <a href=\"https://hestia.earth/term/discardedCropIncorporated\">discardedCropIncorporated</a> and <a href=\"https://hestia.earth/schema/Product#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/Product#properties\">properties</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/carbonContent\">carbonContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/nitrogenContent\">nitrogenContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/ligninContent\">ligninContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/null#inputs\">inputs</a> with:</li>\n</ul>\n</li>\n<li><a href=\"https://hestia.earth/schema/Input#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=organicFertiliser\">organicFertiliser</a> <strong>or</strong> <a href=\"https://hestia.earth/glossary?termType=soilAmendment\">soilAmendment</a> and <a href=\"https://hestia.earth/schema/Input#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/Input#properties\">properties</a> with:<ul>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/carbonContent\">carbonContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/nitrogenContent\">nitrogenContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Property#term\">term</a> with <a href=\"https://hestia.earth/term/ligninContent\">ligninContent</a> and <a href=\"https://hestia.earth/schema/Property#value\">value</a> and a list of <a href=\"https://hestia.earth/schema/null#practices\">practices</a> with:</li>\n</ul>\n</li>\n<li><a href=\"https://hestia.earth/schema/Practice#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=tillage\">tillage</a> and <a href=\"https://hestia.earth/schema/Practice#value\">value</a></li>\n<li><a href=\"https://hestia.earth/schema/Practice#term\">term</a> of <a href=\"https://hestia.earth/schema/Term#termType\">termType</a> = <a href=\"https://hestia.earth/glossary?termType=waterRegime\">waterRegime</a> and <a href=\"https://hestia.earth/schema/Term#name\">name</a> containing "irrigated" and <a href=\"https://hestia.earth/schema/Practice#value\">value</a> and <a href=\"https://hestia.earth/schema/Practice#startDate\">startDate</a> and <a href=\"https://hestia.earth/schema/Practice#endDate\">endDate</a> and optional:</li>\n<li><a href=\"https://hestia.earth/schema/null#startDate\">startDate</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/crop.csv\">crop.csv</a> -> <code>IPCC_LAND_USE_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/landCover.csv\">landCover.csv</a> -> <code>IPCC_LAND_USE_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/tillage.csv\">tillage.csv</a> -> <code>IPCC_TILLAGE_MANAGEMENT_CATEGORY</code></li>\n<li><a href=\"https://hestia.earth/glossary/lookups/measurement.csv\">measurement.csv</a> -> <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":"# Sand content\n\n\n\n\n"}
|
|
1
|
+
{"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"tag":["Soil content"]},"content":"# Sand content\n\n## Overview\n\nThis model takes a site with geospatial content but no existing soil content measurements and gap-fills mean sand 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 sand 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":["sandContent"],"citation":["[FAO & IIASA (2023) Harmonized World Soil Database Version 2.0.](https://dx.doi.org/10.4060/cc3823en)"],"modelRequires":["clayContent","sandContent","siltContent"]},"content":"# Sand 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/sandContent\">sandContent</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<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/z__sv8swbjhp\">FAO & IIASA (2023)</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<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> -> <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":["sandContent"],"citation":["[FAO & IIASA (2023) Harmonized World Soil Database Version 2.0.](https://dx.doi.org/10.4060/cc3823en)"],"modelRequires":["clayContent","sandContent","siltContent"]},"content":"# Sand content\n\n## Overview\n\nThis model takes a site with geospatial content but no existing soil content measurements and gap-fills mean sand 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 sand 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/sandContent\">sandContent</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<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/z__sv8swbjhp\">FAO & IIASA (2023)</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<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> -> <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":"# Silt content\n\n\n\n\n"}
|
|
1
|
+
{"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"tag":["Soil content"]},"content":"# Silt content\n\n## Overview\n\nThis model takes a site with existing measurements and gap-fills silt content values.\n\n## Data sources\n\nData is taken from the Harmonized World Soil Database Version 2.0 and existing soil content measurements.\n\n## Model logic\n\n - Existing measurement values for `clayContent` and `sandContent` are collected.\n - `siltContent` is calculated as the remainder from 100 after other soil content has been subtracted.\n\n$siltContent = 100 - ~clayContent + sandContent~$\n\n\n\n\n\n"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"tags":{"author":["Guillaume Royer"],"group":["Site: Measurements"],"subgroup":["Soil"],"tab":["Geospatial Database"],"modelId":["siltContent"],"citation":["[FAO & IIASA (2023) Harmonized World Soil Database Version 2.0.](https://dx.doi.org/10.4060/cc3823en)"],"modelRequires":["clayContent","sandContent"]},"content":"# Silt content\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/siltContent\">siltContent</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<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/z__sv8swbjhp\">FAO & IIASA (2023)</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#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> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> <code>>= 0</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/sandContent\">sandContent</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> <code>>= 0</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> -> <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":["siltContent"],"citation":["[FAO & IIASA (2023) Harmonized World Soil Database Version 2.0.](https://dx.doi.org/10.4060/cc3823en)"],"modelRequires":["clayContent","sandContent"]},"content":"# Silt content\n\n## Overview\n\nThis model takes a site with existing measurements and gap-fills silt content values.\n\n## Data sources\n\nData is taken from the Harmonized World Soil Database Version 2.0 and existing soil content measurements.\n\n## Model logic\n\n - Existing measurement values for `clayContent` and `sandContent` are collected.\n - `siltContent` is calculated as the remainder from 100 after other soil content has been subtracted.\n\n$siltContent = 100 - ~clayContent + sandContent~$\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/siltContent\">siltContent</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<li><a href=\"https://hestia.earth/schema/Measurement#source\">source</a> with <a href=\"https://hestia.earth/source/z__sv8swbjhp\">FAO & IIASA (2023)</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#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> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> <code>>= 0</code></li>\n<li><a href=\"https://hestia.earth/schema/Measurement#term\">term</a> with <a href=\"https://hestia.earth/term/sandContent\">sandContent</a> and <a href=\"https://hestia.earth/schema/Measurement#value\">value</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthUpper\">depthUpper</a> <code>>= 0</code> and <a href=\"https://hestia.earth/schema/Measurement#depthLower\">depthLower</a> <code>>= 0</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> -> <code>siteTypesAllowed</code></li>\n</ul>\n</div>\n </div>\n \n</div>"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ export interface IGuideIndexPageContent {
|
|
|
16
16
|
createdAt: string;
|
|
17
17
|
updatedAt?: string;
|
|
18
18
|
tags?: Record<string, string[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Added when listing from index
|
|
21
|
+
*/
|
|
22
|
+
parentId?: string;
|
|
19
23
|
}
|
|
20
24
|
export interface IGuideIndexPage {
|
|
21
25
|
content?: IGuideIndexPageContent;
|
|
@@ -30,6 +34,7 @@ export interface IGuideIndex {
|
|
|
30
34
|
}
|
|
31
35
|
export declare const loadIndex: () => IGuideIndex;
|
|
32
36
|
export declare const listPages: (key: keyof IGuideIndex) => IGuideIndexPageContent[];
|
|
37
|
+
export declare const indexPages: (index: IGuideIndex) => IGuideIndexPageContent[];
|
|
33
38
|
export declare const findPage: (key: keyof IGuideIndex, id: string) => IGuideIndexPageContent;
|
|
34
39
|
export interface IGuidePageContent {
|
|
35
40
|
content: string;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __read = (this && this.__read) || function (o, n) {
|
|
3
14
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
15
|
if (!m) return o;
|
|
@@ -25,19 +36,26 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
25
36
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
37
|
};
|
|
27
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.loadPage = exports.findPage = exports.listPages = exports.loadIndex = void 0;
|
|
39
|
+
exports.loadPage = exports.findPage = exports.indexPages = exports.listPages = exports.loadIndex = void 0;
|
|
29
40
|
var loadIndex = function () { return require("./content/index.json"); };
|
|
30
41
|
exports.loadIndex = loadIndex;
|
|
42
|
+
var flatPages = function (_a, parentId) {
|
|
43
|
+
var content = _a.content, pages = _a.pages;
|
|
44
|
+
if (parentId === void 0) { parentId = ""; }
|
|
45
|
+
return __spreadArray([
|
|
46
|
+
__assign(__assign({}, content), { parentId: parentId })
|
|
47
|
+
], __read(Object.values(pages || {}).flatMap(function (values) {
|
|
48
|
+
return flatPages(values, content.id);
|
|
49
|
+
})), false).filter(Boolean);
|
|
50
|
+
};
|
|
31
51
|
var listPages = function (key) {
|
|
32
|
-
return (0, exports.loadIndex)()[key].flatMap(flatPages);
|
|
52
|
+
return (0, exports.loadIndex)()[key].flatMap(function (value) { return flatPages(value); });
|
|
33
53
|
};
|
|
34
54
|
exports.listPages = listPages;
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
return __spreadArray([
|
|
38
|
-
content
|
|
39
|
-
], __read(Object.values(pages || {}).flatMap(function (values) { return flatPages(values); })), false).filter(Boolean);
|
|
55
|
+
var indexPages = function (index) {
|
|
56
|
+
return Object.keys(index).flatMap(exports.listPages);
|
|
40
57
|
};
|
|
58
|
+
exports.indexPages = indexPages;
|
|
41
59
|
var findPage = function (key, id) {
|
|
42
60
|
return (0, exports.listPages)(key).find(function (page) { return page.id === id; });
|
|
43
61
|
};
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
]
|
|
11
11
|
},
|
|
12
12
|
"optional": {
|
|
13
|
+
"@doc": "if the primary product is a temporary crop, additional properties are required",
|
|
13
14
|
"products": [
|
|
14
15
|
{
|
|
15
16
|
"@type": "Product",
|
|
@@ -17,10 +18,33 @@
|
|
|
17
18
|
"term.termType": "crop"
|
|
18
19
|
}
|
|
19
20
|
],
|
|
20
|
-
"
|
|
21
|
+
"or": [
|
|
22
|
+
{
|
|
23
|
+
"@doc": "if startDateDefinition is `harvest of previous crop`, no further properties are required",
|
|
24
|
+
"startDateDefinition": "harvest of previous crop"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"@doc": "if startDateDefinition is `soil preparation date`, `sowing date` or `transplanting date`, further properties are required",
|
|
28
|
+
"startDateDefinition": [
|
|
29
|
+
"soil preparation date",
|
|
30
|
+
"sowing date",
|
|
31
|
+
"transplanting date"
|
|
32
|
+
],
|
|
33
|
+
"practices": [
|
|
34
|
+
{
|
|
35
|
+
"@type": "Practice",
|
|
36
|
+
"term.@id": "shortFallowDuration",
|
|
37
|
+
"value": ""
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
]
|
|
21
42
|
}
|
|
22
43
|
}
|
|
23
44
|
},
|
|
45
|
+
"LOOKUPS": {
|
|
46
|
+
"crop": "cropGroupingFAO"
|
|
47
|
+
},
|
|
24
48
|
"RETURNS": {
|
|
25
49
|
"the duration as a `number`": ""
|
|
26
50
|
}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
"infrastructure": [
|
|
9
9
|
{
|
|
10
10
|
"@type": "Infrastructure",
|
|
11
|
-
"defaultLifespan": "",
|
|
12
11
|
"inputs": [
|
|
13
12
|
{
|
|
14
13
|
"@type": "Input",
|
|
@@ -16,10 +15,13 @@
|
|
|
16
15
|
"material",
|
|
17
16
|
"substrate"
|
|
18
17
|
],
|
|
19
|
-
"value": "",
|
|
20
|
-
"lifespan": ""
|
|
18
|
+
"value": "> 0",
|
|
19
|
+
"lifespan": "> 0"
|
|
21
20
|
}
|
|
22
|
-
]
|
|
21
|
+
],
|
|
22
|
+
"optional": {
|
|
23
|
+
"defaultLifespan": "> 0"
|
|
24
|
+
}
|
|
23
25
|
}
|
|
24
26
|
]
|
|
25
27
|
}
|
|
@@ -35,8 +37,5 @@
|
|
|
35
37
|
"statsDefinition": ""
|
|
36
38
|
}
|
|
37
39
|
]
|
|
38
|
-
},
|
|
39
|
-
"LOOKUPS": {
|
|
40
|
-
"material": ""
|
|
41
40
|
}
|
|
42
41
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"REQUIREMENTS": {
|
|
3
|
+
"Cycle": {
|
|
4
|
+
"emissions": [
|
|
5
|
+
{
|
|
6
|
+
"@type": "Emission",
|
|
7
|
+
"value": "",
|
|
8
|
+
"term.@id": "co2ToAirSoilOrganicCarbonStockChangeLandUseChange",
|
|
9
|
+
"depth": "30"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"@type": "Emission",
|
|
13
|
+
"value": "",
|
|
14
|
+
"term.@id": "co2ToAirSoilOrganicCarbonStockChangeManagementChange",
|
|
15
|
+
"depth": "30"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"optional": {
|
|
19
|
+
"endDate": "",
|
|
20
|
+
"site": {
|
|
21
|
+
"@type": "Site",
|
|
22
|
+
"measurements": [
|
|
23
|
+
{
|
|
24
|
+
"@type": "Measurement",
|
|
25
|
+
"value": "",
|
|
26
|
+
"term.@id": "ecoClimateZone"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"products": [
|
|
31
|
+
{
|
|
32
|
+
"@type": "Product",
|
|
33
|
+
"term.@id": "riceGrainInHuskFlooded"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"practices": [
|
|
37
|
+
{
|
|
38
|
+
"@type": "Practice",
|
|
39
|
+
"term.termType": "waterRegime"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"RETURNS": {
|
|
46
|
+
"Emission": [
|
|
47
|
+
{
|
|
48
|
+
"value": "",
|
|
49
|
+
"min": "",
|
|
50
|
+
"max": "",
|
|
51
|
+
"sd": "",
|
|
52
|
+
"methodTier": "tier 1",
|
|
53
|
+
"statsDefinition": "simulated",
|
|
54
|
+
"methodModelDescription": [
|
|
55
|
+
"Aggregated version",
|
|
56
|
+
"Disaggregated version"
|
|
57
|
+
],
|
|
58
|
+
"depth": 30
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"LOOKUPS": {
|
|
63
|
+
"waterRegime": [
|
|
64
|
+
"IPCC_2019_N2O_rice",
|
|
65
|
+
"IPCC_2019_N2O_rice-min",
|
|
66
|
+
"IPCC_2019_N2O_rice-max"
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -6,12 +6,32 @@
|
|
|
6
6
|
{
|
|
7
7
|
"@type": "Emission",
|
|
8
8
|
"value": "",
|
|
9
|
-
"term.@id": "nh3ToAirFuelCombustion"
|
|
9
|
+
"term.@id": "nh3ToAirFuelCombustion",
|
|
10
|
+
"inputs": [
|
|
11
|
+
{
|
|
12
|
+
"@type": "Input",
|
|
13
|
+
"value": "",
|
|
14
|
+
"term.termType": "fuel",
|
|
15
|
+
"optional": {
|
|
16
|
+
"operation": ""
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
]
|
|
10
20
|
},
|
|
11
21
|
{
|
|
12
22
|
"@type": "Emission",
|
|
13
23
|
"value": "",
|
|
14
|
-
"term.@id": "noxToAirFuelCombustion"
|
|
24
|
+
"term.@id": "noxToAirFuelCombustion",
|
|
25
|
+
"inputs": [
|
|
26
|
+
{
|
|
27
|
+
"@type": "Input",
|
|
28
|
+
"value": "",
|
|
29
|
+
"term.termType": "fuel",
|
|
30
|
+
"optional": {
|
|
31
|
+
"operation": ""
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
15
35
|
}
|
|
16
36
|
],
|
|
17
37
|
"optional": {
|
|
@@ -42,7 +62,9 @@
|
|
|
42
62
|
"Emission": [
|
|
43
63
|
{
|
|
44
64
|
"value": "",
|
|
45
|
-
"methodTier": "tier 1"
|
|
65
|
+
"methodTier": "tier 1",
|
|
66
|
+
"inputs": "",
|
|
67
|
+
"operation": ""
|
|
46
68
|
}
|
|
47
69
|
]
|
|
48
70
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"REQUIREMENTS": {
|
|
3
|
+
"Site": {
|
|
4
|
+
"siteType": "glass or high accessible cover",
|
|
5
|
+
"infrastructure": [
|
|
6
|
+
{
|
|
7
|
+
"@type": "Infrastructure",
|
|
8
|
+
"term.termType": "building",
|
|
9
|
+
"none": {
|
|
10
|
+
"inputs": [
|
|
11
|
+
{
|
|
12
|
+
"@type": "Input"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"RETURNS": {
|
|
21
|
+
"Infrastructure": [
|
|
22
|
+
{
|
|
23
|
+
"defaultLifespan": "",
|
|
24
|
+
"inputs": ""
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"LOOKUPS": {
|
|
29
|
+
"building": [
|
|
30
|
+
"defaultLifespan",
|
|
31
|
+
"materialTermIds",
|
|
32
|
+
"substrateTermIds"
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|