[27]:
from IPython.display import display, Markdown
import os
import json
from libcbm import resources
import pandas as pd
import numpy as np
from numpy.random import default_rng
from libcbm.model.cbm_exn import cbm_exn_model
from libcbm.model.cbm_exn import cbm_exn_spinup
from libcbm.model.cbm_exn import cbm_exn_step
from libcbm.model.cbm_exn.cbm_exn_parameters import parameters_factory
from libcbm.model.model_definition.model_variables import ModelVariables
[28]:
rng = default_rng()
n_stands = 10
[29]:
# load the default bundled parameters
parameters = parameters_factory(resources.get_cbm_exn_parameters_dir())
Fully dynamic modelling with cbm_exn¶
This document illustrates a scheme to simulate with fully dynamic pools, fluxes and flow in libcbm using the cbm_exn package.
This outlines a component of a highly efficient method for processing C flows in a CBM-Like model, producing outputs that are compatible with current reporting methods, and systems.
The approach makes the hard coded model pool, flow, flux in CBM-CFS3 fully dynamic, and definable via high level language in the cbm_exn package.
Prior to this improvement, using CBM-CFS3, it was only possible to modify parameters for the pool-flows withing the hard-coded model structure. This opens up opportunities to evaluate changes to model structure dynamically, in addition to modifiying pool flows.
In addition the architecture opens opportunities for using machine learning both for informing pool flow parameters and the model structure itself.
The document explains the basic structure of the default parameters and configuration in cbm_exn
, and also shows the an example of the default pool flows generated in dataframe form, and describes their format.
While only the default pool flows (based on CBM-CFS3) are presented here, it’s important to note if the general format is followed it’s possible to alter model pool-flow-flux structure via high level programming language. The default values could potentially be used as a template to accomplish this.
Sections below are:
Operation DataFrame: a description of the storage scheme for mult-dimensional pool flow proportions within dataframe structures.
Default spinup operation dataframes: examples of spinup ops derived from the cbm_exn default parameters and example simulation area input
Default step operation dataframes: example of step ops also derived from the same inputs
Appendix1, Appendix2: the default parameters, and example simulation area used.
[30]:
# read some packaged net increments, derived from a
# simulation of the same growth curve used in CBM-CFS3
# tutorial 1
net_increments = pd.read_csv(
os.path.join(
resources.get_test_resources_dir(),
"cbm_exn_net_increments",
"net_increments.csv",
)
)
[31]:
# the same set of increments are repeated for each stand in this example
n_stands = 1000
increments = None
for s in range(n_stands):
s_increments = net_increments.copy()
s_increments.insert(0, "row_idx", s)
s_increments = s_increments.rename(
columns={
"SoftwoodMerch": "merch_inc",
"SoftwoodFoliage": "foliage_inc",
"SoftwoodOther": "other_inc",
}
)
increments = pd.concat([increments, s_increments])
[32]:
# create the require inputs for spinup
spinup_input = {
"parameters": pd.DataFrame(
{
# random age
"age": rng.integers(low=0, high=60, size=n_stands, dtype="int"),
"area": np.full(n_stands, 1, dtype="int"),
"delay": np.full(n_stands, 0, dtype="int"),
"return_interval": np.full(n_stands, 125, dtype="int"),
"min_rotations": np.full(n_stands, 10, dtype="int"),
"max_rotations": np.full(n_stands, 30, dtype="int"),
"spatial_unit_id": np.full(
n_stands, 17, dtype="int"
), # ontario/mixedwood plains
"species": np.full(n_stands, 20, dtype="int"), # red pine
"mean_annual_temperature": np.arange(
0, 2, 2 / n_stands
), # make a temperature ramp
"historical_disturbance_type": np.full(n_stands, 1, dtype="int"),
"last_pass_disturbance_type": np.full(n_stands, 1, dtype="int"),
}
),
"increments": increments,
}
[33]:
spinup_vars = cbm_exn_spinup.prepare_spinup_vars(
ModelVariables.from_pandas(spinup_input),
parameters,
)
spinup_op_list = cbm_exn_spinup.get_default_op_list()
spinup_ops = cbm_exn_spinup.get_default_ops(parameters, spinup_vars)
[34]:
spinup_op_list
[34]:
['growth',
'snag_turnover',
'biomass_turnover',
'overmature_decline',
'growth',
'dom_decay',
'slow_decay',
'slow_mixing',
'disturbance']
Operation dataframes¶
Operation dataframes are multi-dimensional sparse matrices, using column-name-formatting to denote the dimensions.
The rationale for this design apporach is that multi-dimensional arrays lack interoperable standards that would work with many different high level languages simulataneously. Dataframes however are well supported by several high level languages.
Each dataframe has pool flow columns, where the column name is of the form:
pool_source_name.pool_sink_name
Each row can be interpreted as a pool flow matrix (in sparse coordinate form). By default unspecified diagnal values (those where pool_source_name
is equal to pool_sink_name
) will be assigned a value of 1.
There are 4 basic types of dataframes with regards to mapping to simulation space. These are covered in the next section
Single row¶
The single row is a matrix that is applied to all simulation areas. See the slow_mixing
dataframe in the following section.
Simulation-aligned¶
the dataframe has a row for each simulation area in subsequent spinup or step calls. Each row represents a matrix that is 1:1 with simulation areas This type is appropriate for processes that vary by simulation area. See the dom_decay
dataframe in the followin section.
Property-indexed¶
A property-index dataframe has one or more values that correspond to values stored in the current simulation state. This type of dataframe contains 1 or more columns of the form:
[table_name.variable_name]
Where a simulation table, series name pair is surrounded by left and right brackets.
An example of this is if one flow matrix is defined for each spatial unit identifier. See the disturbance
dataframe in the following section for an example.
Both Simulation-aligned, and Property-indexed¶
If a dataframe is both simulation aligned and property indexed each row corresponds to both a simulation area, and 1 or more properties within the simulation areas. The following pattern of columns is present in this type of dataframe:
[row_idx], [table_name_1.variable_name_1], ... [table_name_N.variable_name_N]
An example of this is a dataframe of matrices where each row corresponds to the simulation areas, and to simulation age. See the spinup growth dataframe in the following section.
Default spinup operation dataframes¶
The default spinup operation dataframes are generated as a function of the default parameters (see appendix 1) and the simulation area input (Appendix 2).
The libcbm.model.cbm_exn.cbm_exn_spinup.spinup function can directly ingest operations in this format via the ops
parameter.
Within a spinup timestep these operations are applied in the following order by default. The order and naming of these operation is user-specifyable via passing a string list to the op_sequence
parameter of the above linked function
growth
snag_turnover
biomass_turnover
overmature_decline
growth
dom_decay
slow_decay
slow_mixing
disturbance
[35]:
for op in spinup_ops:
display(Markdown(f"## {op['name']}"))
display(op["op_data"])
snag_turnover¶
[parameters.spatial_unit_id] | [parameters.sw_hw] | StemSnag.StemSnag | StemSnag.MediumSoil | BranchSnag.BranchSnag | BranchSnag.AboveGroundFastSoil | |
---|---|---|---|---|---|---|
0 | 1 | 0 | 0.968 | 0.032 | 0.9 | 0.1 |
1 | 3 | 0 | 0.968 | 0.032 | 0.9 | 0.1 |
2 | 4 | 0 | 0.968 | 0.032 | 0.9 | 0.1 |
3 | 5 | 0 | 0.968 | 0.032 | 0.9 | 0.1 |
4 | 6 | 0 | 0.968 | 0.032 | 0.9 | 0.1 |
... | ... | ... | ... | ... | ... | ... |
91 | 52 | 1 | 0.968 | 0.032 | 0.9 | 0.1 |
92 | 53 | 1 | 0.968 | 0.032 | 0.9 | 0.1 |
93 | 54 | 1 | 0.968 | 0.032 | 0.9 | 0.1 |
94 | 58 | 1 | 0.968 | 0.032 | 0.9 | 0.1 |
95 | 59 | 1 | 0.968 | 0.032 | 0.9 | 0.1 |
96 rows × 6 columns
biomass_turnover¶
[parameters.spatial_unit_id] | [parameters.sw_hw] | Merch.StemSnag | Foliage.AboveGroundVeryFastSoil | Other.BranchSnag | Other.AboveGroundFastSoil | CoarseRoots.AboveGroundFastSoil | CoarseRoots.BelowGroundFastSoil | FineRoots.AboveGroundVeryFastSoil | FineRoots.BelowGroundVeryFastSoil | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 0.0050 | 0.10 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
1 | 3 | 0 | 0.0060 | 0.05 | 0.0075 | 0.0225 | 0.01 | 0.01 | 0.3205 | 0.3205 |
2 | 4 | 0 | 0.0050 | 0.10 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
3 | 5 | 0 | 0.0067 | 0.15 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
4 | 6 | 0 | 0.0067 | 0.15 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
91 | 52 | 1 | 0.0050 | 0.95 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
92 | 53 | 1 | 0.0060 | 0.95 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
93 | 54 | 1 | 0.0045 | 0.95 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
94 | 58 | 1 | 0.0060 | 0.95 | 0.0075 | 0.0225 | 0.01 | 0.01 | 0.3205 | 0.3205 |
95 | 59 | 1 | 0.0050 | 0.95 | 0.0100 | 0.0300 | 0.01 | 0.01 | 0.3205 | 0.3205 |
96 rows × 10 columns
dom_decay¶
AboveGroundVeryFastSoil.AboveGroundVeryFastSoil | AboveGroundVeryFastSoil.AboveGroundSlowSoil | AboveGroundVeryFastSoil.CO2 | BelowGroundVeryFastSoil.BelowGroundVeryFastSoil | BelowGroundVeryFastSoil.BelowGroundSlowSoil | BelowGroundVeryFastSoil.CO2 | AboveGroundFastSoil.AboveGroundFastSoil | AboveGroundFastSoil.AboveGroundSlowSoil | AboveGroundFastSoil.CO2 | BelowGroundFastSoil.BelowGroundFastSoil | ... | BelowGroundFastSoil.CO2 | MediumSoil.MediumSoil | MediumSoil.AboveGroundSlowSoil | MediumSoil.CO2 | StemSnag.StemSnag | StemSnag.AboveGroundSlowSoil | StemSnag.CO2 | BranchSnag.BranchSnag | BranchSnag.AboveGroundSlowSoil | BranchSnag.CO2 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.866038 | 0.024783 | 0.109179 | 0.750000 | 0.042500 | 0.207500 | 0.928250 | 0.012198 | 0.059552 | 0.928250 | ... | 0.059552 | 0.981300 | 0.003179 | 0.015521 | 0.990650 | 0.001590 | 0.007760 | 0.964125 | 0.006099 | 0.029776 |
1 | 0.866012 | 0.024788 | 0.109201 | 0.749965 | 0.042506 | 0.207529 | 0.928240 | 0.012199 | 0.059561 | 0.928240 | ... | 0.059561 | 0.981297 | 0.003179 | 0.015523 | 0.990649 | 0.001590 | 0.007762 | 0.964120 | 0.006100 | 0.029780 |
2 | 0.865986 | 0.024793 | 0.109222 | 0.749931 | 0.042512 | 0.207558 | 0.928230 | 0.012201 | 0.059569 | 0.928230 | ... | 0.059569 | 0.981295 | 0.003180 | 0.015525 | 0.990647 | 0.001590 | 0.007763 | 0.964115 | 0.006100 | 0.029785 |
3 | 0.865959 | 0.024798 | 0.109243 | 0.749896 | 0.042518 | 0.207586 | 0.928220 | 0.012203 | 0.059577 | 0.928220 | ... | 0.059577 | 0.981292 | 0.003180 | 0.015527 | 0.990646 | 0.001590 | 0.007764 | 0.964110 | 0.006101 | 0.029789 |
4 | 0.865933 | 0.024802 | 0.109264 | 0.749861 | 0.042524 | 0.207615 | 0.928210 | 0.012204 | 0.059586 | 0.928210 | ... | 0.059586 | 0.981290 | 0.003181 | 0.015530 | 0.990645 | 0.001590 | 0.007765 | 0.964105 | 0.006102 | 0.029793 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
995 | 0.837367 | 0.030087 | 0.132546 | 0.713024 | 0.048786 | 0.238190 | 0.917638 | 0.014002 | 0.068360 | 0.917638 | ... | 0.068360 | 0.978534 | 0.003649 | 0.017817 | 0.989267 | 0.001825 | 0.008908 | 0.958819 | 0.007001 | 0.034180 |
996 | 0.837335 | 0.030093 | 0.132572 | 0.712985 | 0.048793 | 0.238223 | 0.917627 | 0.014003 | 0.068370 | 0.917627 | ... | 0.068370 | 0.978531 | 0.003650 | 0.017819 | 0.989266 | 0.001825 | 0.008910 | 0.958813 | 0.007002 | 0.034185 |
997 | 0.837304 | 0.030099 | 0.132597 | 0.712945 | 0.048799 | 0.238256 | 0.917615 | 0.014005 | 0.068379 | 0.917615 | ... | 0.068379 | 0.978528 | 0.003650 | 0.017822 | 0.989264 | 0.001825 | 0.008911 | 0.958808 | 0.007003 | 0.034190 |
998 | 0.837272 | 0.030105 | 0.132623 | 0.712905 | 0.048806 | 0.238289 | 0.917604 | 0.014007 | 0.068389 | 0.917604 | ... | 0.068389 | 0.978525 | 0.003651 | 0.017824 | 0.989263 | 0.001825 | 0.008912 | 0.958802 | 0.007004 | 0.034194 |
999 | 0.837240 | 0.030111 | 0.132649 | 0.712865 | 0.048813 | 0.238322 | 0.917592 | 0.014009 | 0.068398 | 0.917592 | ... | 0.068398 | 0.978522 | 0.003651 | 0.017826 | 0.989261 | 0.001826 | 0.008913 | 0.958796 | 0.007005 | 0.034199 |
1000 rows × 21 columns
slow_decay¶
AboveGroundSlowSoil.AboveGroundSlowSoil | AboveGroundSlowSoil.CO2 | BelowGroundSlowSoil.BelowGroundSlowSoil | BelowGroundSlowSoil.CO2 | |
---|---|---|---|---|
0 | 0.994340 | 0.005660 | 0.9967 | 0.0033 |
1 | 0.994339 | 0.005661 | 0.9967 | 0.0033 |
2 | 0.994337 | 0.005663 | 0.9967 | 0.0033 |
3 | 0.994336 | 0.005664 | 0.9967 | 0.0033 |
4 | 0.994335 | 0.005665 | 0.9967 | 0.0033 |
... | ... | ... | ... | ... |
995 | 0.993128 | 0.006872 | 0.9967 | 0.0033 |
996 | 0.993127 | 0.006873 | 0.9967 | 0.0033 |
997 | 0.993126 | 0.006874 | 0.9967 | 0.0033 |
998 | 0.993124 | 0.006876 | 0.9967 | 0.0033 |
999 | 0.993123 | 0.006877 | 0.9967 | 0.0033 |
1000 rows × 4 columns
slow_mixing¶
AboveGroundSlowSoil.BelowGroundSlowSoil | AboveGroundSlowSoil.AboveGroundSlowSoil | |
---|---|---|
0 | 0.006 | 0.994 |
disturbance¶
[parameters.spatial_unit_id] | [state.disturbance_type] | [parameters.sw_hw] | AboveGroundFastSoil.AboveGroundFastSoil | AboveGroundFastSoil.AboveGroundSlowSoil | AboveGroundFastSoil.BelowGroundFastSoil | AboveGroundFastSoil.CH4 | AboveGroundFastSoil.CO | AboveGroundFastSoil.CO2 | AboveGroundFastSoil.MediumSoil | ... | Other.Other | Other.Products | Products.Products | StemSnag.AboveGroundSlowSoil | StemSnag.CH4 | StemSnag.CO | StemSnag.CO2 | StemSnag.MediumSoil | StemSnag.Products | StemSnag.StemSnag | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 0 | 1.000000 | 0.0 | 0.0 | 0.000000 | 0.000000 | 0.000000 | 0.0 | ... | 1.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
1 | 3 | 0 | 0 | 1.000000 | 0.0 | 0.0 | 0.000000 | 0.000000 | 0.000000 | 0.0 | ... | 1.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
2 | 4 | 0 | 0 | 1.000000 | 0.0 | 0.0 | 0.000000 | 0.000000 | 0.000000 | 0.0 | ... | 1.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
3 | 5 | 0 | 0 | 1.000000 | 0.0 | 0.0 | 0.000000 | 0.000000 | 0.000000 | 0.0 | ... | 1.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
4 | 6 | 0 | 0 | 1.000000 | 0.0 | 0.0 | 0.000000 | 0.000000 | 0.000000 | 0.0 | ... | 1.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
12747 | 52 | 1 | 1 | 0.386657 | 0.0 | 0.0 | 0.006133 | 0.055201 | 0.552009 | 0.0 | ... | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 |
12748 | 53 | 1 | 1 | 0.444126 | 0.0 | 0.0 | 0.005559 | 0.050029 | 0.500287 | 0.0 | ... | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 |
12749 | 54 | 1 | 1 | 0.448397 | 0.0 | 0.0 | 0.005516 | 0.049644 | 0.496443 | 0.0 | ... | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 |
12750 | 58 | 1 | 1 | 0.338494 | 0.0 | 0.0 | 0.006615 | 0.059536 | 0.595355 | 0.0 | ... | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 |
12751 | 59 | 1 | 1 | 0.338494 | 0.0 | 0.0 | 0.006615 | 0.059536 | 0.595355 | 0.0 | ... | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 |
12752 rows × 101 columns
growth¶
[row_idx] | [state.age] | Input.Merch | Input.Other | Input.Foliage | Input.CoarseRoots | Input.FineRoots | |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0.009449 | 0.009383 | 0.020006 | 0.004955 | 0.003667 |
1 | 0 | 1 | 0.041615 | 0.049833 | 0.040492 | 0.016929 | 0.012362 |
2 | 0 | 2 | 0.085850 | 0.094331 | 0.054661 | 0.030487 | 0.021648 |
3 | 0 | 3 | 0.138499 | 0.138077 | 0.066074 | 0.045285 | 0.030783 |
4 | 0 | 4 | 0.197727 | 0.179735 | 0.075630 | 0.061304 | 0.039282 |
... | ... | ... | ... | ... | ... | ... | ... |
70995 | 999 | 66 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
70996 | 999 | 67 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
70997 | 999 | 68 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
70998 | 999 | 69 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
70999 | 999 | 70 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
71000 rows × 7 columns
overmature_decline¶
[row_idx] | [state.age] | Merch.StemSnag | Other.BranchSnag | Other.AboveGroundFastSoil | Foliage.AboveGroundVeryFastSoil | CoarseRoots.AboveGroundFastSoil | CoarseRoots.BelowGroundFastSoil | FineRoots.AboveGroundVeryFastSoil | FineRoots.BelowGroundVeryFastSoil | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
1 | 0 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2 | 0 | 2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | 0 | 3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | 0 | 4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
70995 | 999 | 66 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
70996 | 999 | 67 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
70997 | 999 | 68 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
70998 | 999 | 69 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
70999 | 999 | 70 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
71000 rows × 10 columns
Run the spinup routine with the default operations passed as a parameter
[36]:
with cbm_exn_model.initialize() as model:
cbm_vars = cbm_exn_spinup.spinup(
model, spinup_vars, ops=spinup_ops, op_sequence=spinup_op_list
)
[37]:
# initialize parameters for stepping (values for illustration)
cbm_vars["parameters"]["mean_annual_temperature"].assign(1.1)
cbm_vars["parameters"]["merch_inc"].assign(0.1)
cbm_vars["parameters"]["foliage_inc"].assign(0.01)
cbm_vars["parameters"]["other_inc"].assign(0.05)
cbm_vars["parameters"]["disturbance_type"].assign(
rng.choice([0, 1, 4], n_stands, p=[0.98, 0.01, 0.01])
)
[38]:
step_ops_sequence = cbm_exn_step.get_default_annual_process_op_sequence()
step_disturbance_ops_sequence = (
cbm_exn_step.get_default_disturbance_op_sequence()
)
step_ops = cbm_exn_step.get_default_ops(parameters, cbm_vars)
[39]:
step_disturbance_ops_sequence
[39]:
['disturbance']
[40]:
step_ops_sequence
[40]:
['growth',
'snag_turnover',
'biomass_turnover',
'overmature_decline',
'growth',
'dom_decay',
'slow_decay',
'slow_mixing']
Step processes¶
With the exception of growth and overmature decline, the default step processes use an identical process for generation as the spinup processes, and so only growth and overmature decline are shown below.
The difference is that by default in stepping, growth and overmature decline dataframes are both Simulation-aligned.
The libcbm.model.cbm_exn.cbm_exn_step.step function can directly ingest operations in this format via the ops
parameter
[41]:
for op in step_ops:
name = op["name"]
if name in ["growth", "overmature_decline"]:
display(Markdown(f"## {name}"))
display(op["op_data"])
growth¶
Input.Merch | Input.Other | Input.Foliage | Input.CoarseRoots | Input.FineRoots | |
---|---|---|---|---|---|
0 | 0.05 | 0.025 | 0.005 | 0.017196 | 0.000564 |
1 | 0.05 | 0.025 | 0.005 | 0.013941 | 0.003819 |
2 | 0.05 | 0.025 | 0.005 | 0.017014 | 0.000746 |
3 | 0.05 | 0.025 | 0.005 | 0.017046 | 0.000714 |
4 | 0.05 | 0.025 | 0.005 | 0.017068 | 0.000692 |
... | ... | ... | ... | ... | ... |
995 | 0.05 | 0.025 | 0.005 | 0.014380 | 0.003380 |
996 | 0.05 | 0.025 | 0.005 | 0.017109 | 0.000651 |
997 | 0.05 | 0.025 | 0.005 | 0.015855 | 0.001905 |
998 | 0.05 | 0.025 | 0.005 | 0.014380 | 0.003380 |
999 | 0.05 | 0.025 | 0.005 | 0.016869 | 0.000891 |
1000 rows × 5 columns
overmature_decline¶
Merch.StemSnag | Other.BranchSnag | Other.AboveGroundFastSoil | Foliage.AboveGroundVeryFastSoil | CoarseRoots.AboveGroundFastSoil | CoarseRoots.BelowGroundFastSoil | FineRoots.AboveGroundVeryFastSoil | FineRoots.BelowGroundVeryFastSoil | |
---|---|---|---|---|---|---|---|---|
0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
995 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
996 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
997 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
998 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
1000 rows × 8 columns
run a timestep with the specified parameters
[42]:
with cbm_exn_model.initialize() as model:
cbm_vars = cbm_exn_step.step(
model,
cbm_vars,
ops=step_ops,
step_op_sequence=step_ops_sequence,
disturbance_op_sequence=step_disturbance_ops_sequence,
)
[43]:
cbm_vars["pools"].to_pandas()
[43]:
Input | Merch | Foliage | Other | CoarseRoots | FineRoots | AboveGroundVeryFastSoil | BelowGroundVeryFastSoil | AboveGroundFastSoil | BelowGroundFastSoil | MediumSoil | AboveGroundSlowSoil | BelowGroundSlowSoil | StemSnag | BranchSnag | CO2 | CH4 | CO | NO2 | Products | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1.0 | 73.280370 | 7.178385 | 21.031789 | 20.379709 | 2.151192 | 9.947479 | 1.968485 | 10.564232 | 2.449042 | 57.708379 | 38.779972 | 127.722972 | 22.150185 | 1.350400 | 7723.799871 | 8.475443 | 76.277752 | 0.0 | 0.0 |
1 | 1.0 | 7.774118 | 1.920598 | 5.284176 | 2.297170 | 1.028144 | 2.180844 | 0.769231 | 14.300553 | 6.267484 | 59.129590 | 34.133895 | 129.648400 | 54.009079 | 3.155953 | 7608.867436 | 8.474532 | 76.269556 | 0.0 | 0.0 |
2 | 1.0 | 89.648104 | 8.665880 | 25.289823 | 25.107673 | 2.332372 | 12.248857 | 2.156594 | 13.017832 | 2.845668 | 52.095064 | 41.999048 | 127.418286 | 18.394004 | 1.710146 | 7789.726276 | 8.473622 | 76.261360 | 0.0 | 0.0 |
3 | 1.0 | 86.794134 | 8.390010 | 24.485410 | 24.270207 | 2.296434 | 11.722687 | 2.114842 | 12.323974 | 2.721871 | 53.695097 | 41.024695 | 127.446422 | 19.127702 | 1.623961 | 7770.320595 | 8.472711 | 76.253165 | 0.0 | 0.0 |
4 | 1.0 | 84.872181 | 8.204230 | 23.943693 | 23.705336 | 2.273127 | 11.412086 | 2.089355 | 11.959022 | 2.658248 | 54.497336 | 40.548368 | 127.473572 | 19.574634 | 1.574184 | 7760.799934 | 8.471801 | 76.244972 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
995 | 1.0 | 9.338820 | 2.147632 | 6.058011 | 2.751865 | 1.143006 | 2.266580 | 0.757995 | 11.935299 | 4.905127 | 53.628358 | 32.404702 | 124.955399 | 50.929667 | 2.618341 | 7638.111865 | 7.617916 | 68.560102 | 0.0 | 0.0 |
996 | 1.0 | 81.277491 | 7.856761 | 22.930502 | 22.646881 | 2.231494 | 9.202949 | 1.790814 | 9.963568 | 2.183926 | 48.055328 | 37.770128 | 122.998702 | 19.467886 | 1.445742 | 7774.280777 | 7.617101 | 68.552767 | 0.0 | 0.0 |
997 | 1.0 | 17.020424 | 3.072825 | 9.243063 | 4.991417 | 1.521245 | 3.487677 | 1.076058 | 10.145725 | 3.619583 | 54.966027 | 32.991306 | 124.594030 | 43.196613 | 1.716888 | 7654.197317 | 7.616286 | 68.545434 | 0.0 | 0.0 |
998 | 1.0 | 9.338820 | 2.147632 | 6.058011 | 2.751865 | 1.143006 | 2.265884 | 0.757736 | 11.929870 | 4.902391 | 53.611115 | 32.398762 | 124.940633 | 50.926692 | 2.617775 | 7638.186920 | 7.615472 | 68.538101 | 0.0 | 0.0 |
999 | 1.0 | 29.410534 | 3.937428 | 11.838268 | 8.248054 | 1.783289 | 4.867150 | 1.355955 | 8.783199 | 2.640505 | 55.291161 | 33.722775 | 124.187274 | 35.563809 | 1.235053 | 7674.474894 | 7.614657 | 68.530769 | 0.0 | 0.0 |
1000 rows × 20 columns
[44]:
cbm_vars["flux"].to_pandas()
[44]:
DisturbanceCO2Production | DisturbanceCH4Production | DisturbanceCOProduction | DisturbanceBioCO2Emission | DisturbanceBioCH4Emission | DisturbanceBioCOEmission | DecayDOMCO2Emission | DisturbanceProduction | DisturbanceDOMProduction | DeltaBiomass_AG | ... | DisturbanceFineLitterInput | DisturbanceVFastAGToAir | DisturbanceVFastBGToAir | DisturbanceFastAGToAir | DisturbanceFastBGToAir | DisturbanceMediumToAir | DisturbanceSlowAGToAir | DisturbanceSlowBGToAir | DisturbanceStemSnagToAir | DisturbanceBranchSnagToAir | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.819715 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.199927 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.308425 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.188081 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.118937 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
995 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.784433 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
996 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.391971 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
997 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.772003 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
998 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.783260 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.819926 | 0.0 | 0.0 | 0.16 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
1000 rows × 47 columns
Appendix 1: CBM EXN Default parameters¶
[45]:
for k, v in parameters._data.items():
display(Markdown(f"## {k}"))
if isinstance(v, list):
display(Markdown(f"```json\n{json.dumps(v, indent=4)}\n```"))
else:
display(v)
pools¶
[
"Input",
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots",
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag",
"CO2",
"CH4",
"CO",
"NO2",
"Products"
]
flux¶
[
{
"name": "DisturbanceCO2Production",
"process": "Disturbance",
"source_pools": [
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots",
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"CO2"
]
},
{
"name": "DisturbanceCH4Production",
"process": "Disturbance",
"source_pools": [
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots",
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"CH4"
]
},
{
"name": "DisturbanceCOProduction",
"process": "Disturbance",
"source_pools": [
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots",
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"CO"
]
},
{
"name": "DisturbanceBioCO2Emission",
"process": "Disturbance",
"source_pools": [
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots"
],
"sink_pools": [
"CO2"
]
},
{
"name": "DisturbanceBioCH4Emission",
"process": "Disturbance",
"source_pools": [
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots"
],
"sink_pools": [
"CH4"
]
},
{
"name": "DisturbanceBioCOEmission",
"process": "Disturbance",
"source_pools": [
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots"
],
"sink_pools": [
"CO"
]
},
{
"name": "DecayDOMCO2Emission",
"process": "Decay",
"source_pools": [
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"CO2"
]
},
{
"name": "DisturbanceProduction",
"process": "Disturbance",
"source_pools": [
"Merch",
"Foliage",
"Other",
"CoarseRoots",
"FineRoots"
],
"sink_pools": [
"Products"
]
},
{
"name": "DisturbanceDOMProduction",
"process": "Disturbance",
"source_pools": [
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"Products"
]
},
{
"name": "DeltaBiomass_AG",
"process": "Growth and Turnover",
"source_pools": [
"Input"
],
"sink_pools": [
"Merch",
"Foliage",
"Other"
]
},
{
"name": "DeltaBiomass_BG",
"process": "Growth and Turnover",
"source_pools": [
"Input"
],
"sink_pools": [
"CoarseRoots",
"FineRoots"
]
},
{
"name": "TurnoverMerchLitterInput",
"process": "Growth and Turnover",
"source_pools": [
"Merch"
],
"sink_pools": [
"StemSnag"
]
},
{
"name": "TurnoverFolLitterInput",
"process": "Growth and Turnover",
"source_pools": [
"Foliage"
],
"sink_pools": [
"AboveGroundVeryFastSoil"
]
},
{
"name": "TurnoverOthLitterInput",
"process": "Growth and Turnover",
"source_pools": [
"Other"
],
"sink_pools": [
"AboveGroundFastSoil",
"BranchSnag"
]
},
{
"name": "TurnoverCoarseLitterInput",
"process": "Growth and Turnover",
"source_pools": [
"CoarseRoots"
],
"sink_pools": [
"AboveGroundFastSoil",
"BelowGroundFastSoil"
]
},
{
"name": "TurnoverFineLitterInput",
"process": "Growth and Turnover",
"source_pools": [
"FineRoots"
],
"sink_pools": [
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil"
]
},
{
"name": "DecayVFastAGToAir",
"process": "Decay",
"source_pools": [
"AboveGroundVeryFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecayVFastBGToAir",
"process": "Decay",
"source_pools": [
"BelowGroundVeryFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecayFastAGToAir",
"process": "Decay",
"source_pools": [
"AboveGroundFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecayFastBGToAir",
"process": "Decay",
"source_pools": [
"BelowGroundFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecayMediumToAir",
"process": "Decay",
"source_pools": [
"MediumSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecaySlowAGToAir",
"process": "Decay",
"source_pools": [
"AboveGroundSlowSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecaySlowBGToAir",
"process": "Decay",
"source_pools": [
"BelowGroundSlowSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecayStemSnagToAir",
"process": "Decay",
"source_pools": [
"StemSnag"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DecayBranchSnagToAir",
"process": "Decay",
"source_pools": [
"BranchSnag"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceMerchToAir",
"process": "Disturbance",
"source_pools": [
"Merch"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceFolToAir",
"process": "Disturbance",
"source_pools": [
"Foliage"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceOthToAir",
"process": "Disturbance",
"source_pools": [
"Other"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceCoarseToAir",
"process": "Disturbance",
"source_pools": [
"CoarseRoots"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceFineToAir",
"process": "Disturbance",
"source_pools": [
"FineRoots"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceDOMCO2Emission",
"process": "Disturbance",
"source_pools": [
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"CO2"
]
},
{
"name": "DisturbanceDOMCH4Emission",
"process": "Disturbance",
"source_pools": [
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"CH4"
]
},
{
"name": "DisturbanceDOMCOEmission",
"process": "Disturbance",
"source_pools": [
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"MediumSoil",
"AboveGroundSlowSoil",
"BelowGroundSlowSoil",
"StemSnag",
"BranchSnag"
],
"sink_pools": [
"CO"
]
},
{
"name": "DisturbanceMerchLitterInput",
"process": "Disturbance",
"source_pools": [
"Merch"
],
"sink_pools": [
"StemSnag",
"MediumSoil",
"AboveGroundSlowSoil"
]
},
{
"name": "DisturbanceFolLitterInput",
"process": "Disturbance",
"source_pools": [
"Foliage"
],
"sink_pools": [
"AboveGroundVeryFastSoil",
"BelowGroundVeryFastSoil"
]
},
{
"name": "DisturbanceOthLitterInput",
"process": "Disturbance",
"source_pools": [
"Other"
],
"sink_pools": [
"AboveGroundFastSoil",
"BranchSnag",
"BelowGroundFastSoil"
]
},
{
"name": "DisturbanceCoarseLitterInput",
"process": "Disturbance",
"source_pools": [
"CoarseRoots"
],
"sink_pools": [
"AboveGroundFastSoil",
"BelowGroundFastSoil"
]
},
{
"name": "DisturbanceFineLitterInput",
"process": "Disturbance",
"source_pools": [
"FineRoots"
],
"sink_pools": [
"AboveGroundVeryFastSoil",
"AboveGroundFastSoil",
"BelowGroundFastSoil",
"BelowGroundVeryFastSoil"
]
},
{
"name": "DisturbanceVFastAGToAir",
"process": "Disturbance",
"source_pools": [
"AboveGroundVeryFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceVFastBGToAir",
"process": "Disturbance",
"source_pools": [
"BelowGroundVeryFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceFastAGToAir",
"process": "Disturbance",
"source_pools": [
"AboveGroundFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceFastBGToAir",
"process": "Disturbance",
"source_pools": [
"BelowGroundFastSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceMediumToAir",
"process": "Disturbance",
"source_pools": [
"MediumSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceSlowAGToAir",
"process": "Disturbance",
"source_pools": [
"AboveGroundSlowSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceSlowBGToAir",
"process": "Disturbance",
"source_pools": [
"BelowGroundSlowSoil"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceStemSnagToAir",
"process": "Disturbance",
"source_pools": [
"StemSnag"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
},
{
"name": "DisturbanceBranchSnagToAir",
"process": "Disturbance",
"source_pools": [
"BranchSnag"
],
"sink_pools": [
"CO2",
"CH4",
"CO",
"NO2"
]
}
]
slow_mixing_rate¶
id | rate | |
---|---|---|
0 | 1 | 0.006 |
turnover_parameters¶
spatial_unit_id | sw_hw | FoliageFallRate | StemAnnualTurnoverRate | BranchTurnoverRate | CoarseRootTurnProp | FineRootTurnProp | OtherToBranchSnagSplit | CoarseRootAGSplit | FineRootAGSplit | StemSnag | BranchSnag | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 0.10 | 0.0050 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
1 | 3 | 0 | 0.05 | 0.0060 | 0.03 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
2 | 4 | 0 | 0.10 | 0.0050 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
3 | 5 | 0 | 0.15 | 0.0067 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
4 | 6 | 0 | 0.15 | 0.0067 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
91 | 52 | 1 | 0.95 | 0.0050 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
92 | 53 | 1 | 0.95 | 0.0060 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
93 | 54 | 1 | 0.95 | 0.0045 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
94 | 58 | 1 | 0.95 | 0.0060 | 0.03 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
95 | 59 | 1 | 0.95 | 0.0050 | 0.04 | 0.02 | 0.641 | 0.25 | 0.5 | 0.5 | 0.032 | 0.1 |
96 rows × 12 columns
species¶
species_id | species_name | genus_id | genus_name | forest_type_id | forest_type_name | |
---|---|---|---|---|---|---|
0 | 1 | Spruce | 1 | Spruce | 1 | Softwood |
1 | 2 | Black spruce | 1 | Spruce | 1 | Softwood |
2 | 3 | Red spruce | 1 | Spruce | 1 | Softwood |
3 | 4 | Norway spruce | 1 | Spruce | 1 | Softwood |
4 | 5 | Engelmann spruce | 1 | Spruce | 1 | Softwood |
... | ... | ... | ... | ... | ... | ... |
189 | 191 | Other broadleaved species - Genus type | 12 | Other broad-leaved species | 3 | Hardwood |
190 | 192 | Unspecified broadleaved species - Genus type | 13 | Unspecified broad-leaved species | 3 | Hardwood |
191 | 193 | Missing value - Genus type | 14 | Missing Value | 1 | Softwood |
192 | 194 | Softwood forest type | 14 | Missing Value | 1 | Softwood |
193 | 195 | Hardwood forest type | 14 | Missing Value | 3 | Hardwood |
194 rows × 6 columns
root_parameters¶
id | hw_a | sw_a | hw_b | frp_a | frp_b | frp_c | biomass_to_carbon_rate | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 1.576 | 0.222 | 0.615 | 0.072 | 0.354 | -0.060212 | 0.5 |
decay_parameters¶
pool | base_decay_rate | reference_temp | q10 | prop_to_atmosphere | max_rate | |
---|---|---|---|---|---|---|
0 | AboveGroundVeryFastSoil | 0.35500 | 10.0 | 2.65 | 0.815 | 1.0 |
1 | BelowGroundVeryFastSoil | 0.50000 | 10.0 | 2.00 | 0.830 | 1.0 |
2 | AboveGroundFastSoil | 0.14350 | 10.0 | 2.00 | 0.830 | 1.0 |
3 | BelowGroundFastSoil | 0.14350 | 10.0 | 2.00 | 0.830 | 1.0 |
4 | MediumSoil | 0.03740 | 10.0 | 2.00 | 0.830 | 1.0 |
5 | AboveGroundSlowSoil | 0.01500 | 10.0 | 2.65 | 1.000 | 1.0 |
6 | BelowGroundSlowSoil | 0.00330 | 10.0 | 1.00 | 1.000 | 1.0 |
7 | StemSnag | 0.01870 | 10.0 | 2.00 | 0.830 | 1.0 |
8 | BranchSnag | 0.07175 | 10.0 | 2.00 | 0.830 | 1.0 |
disturbance_matrix_value¶
disturbance_matrix_id | source_pool | sink_pool | proportion | |
---|---|---|---|---|
0 | 2 | Merch | StemSnag | 0.68624 |
1 | 2 | Merch | CO2 | 0.28102 |
2 | 2 | Merch | CH4 | 0.00316 |
3 | 2 | Merch | CO | 0.02842 |
4 | 2 | Foliage | CO2 | 0.85570 |
... | ... | ... | ... | ... |
14788 | 960 | MediumSoil | MediumSoil | 1.00000 |
14789 | 960 | AboveGroundSlowSoil | AboveGroundSlowSoil | 1.00000 |
14790 | 960 | BelowGroundSlowSoil | BelowGroundSlowSoil | 1.00000 |
14791 | 960 | StemSnag | StemSnag | 1.00000 |
14792 | 960 | BranchSnag | BranchSnag | 1.00000 |
14793 rows × 4 columns
disturbance_matrix_association¶
spatial_unit_id | disturbance_type_id | sw_hw | disturbance_matrix_id | |
---|---|---|---|---|
0 | 1 | 0 | 0 | 27 |
1 | 3 | 0 | 0 | 27 |
2 | 4 | 0 | 0 | 27 |
3 | 5 | 0 | 0 | 27 |
4 | 6 | 0 | 0 | 27 |
... | ... | ... | ... | ... |
12747 | 52 | 1 | 1 | 850 |
12748 | 53 | 1 | 1 | 862 |
12749 | 54 | 1 | 1 | 845 |
12750 | 58 | 1 | 1 | 888 |
12751 | 59 | 1 | 1 | 880 |
12752 rows × 4 columns
Appendix 2: simulation parameters used to generate op-dataframes¶
Net C increments¶
These are derived from Tutorial 1 of the CBM-CFS3 Operational-Scale toolbox. Each simulation area is assigned the same set of increments.
[46]:
display(increments)
row_idx | age | merch_inc | foliage_inc | other_inc | |
---|---|---|---|---|---|
0 | 0 | 1 | 0.018897 | 0.040012 | 0.018766 |
1 | 0 | 2 | 0.083230 | 0.080984 | 0.099667 |
2 | 0 | 3 | 0.171700 | 0.109322 | 0.188663 |
3 | 0 | 4 | 0.276997 | 0.132148 | 0.276154 |
4 | 0 | 5 | 0.395454 | 0.151260 | 0.359470 |
... | ... | ... | ... | ... | ... |
65 | 999 | 66 | 0.000000 | 0.000000 | 0.000000 |
66 | 999 | 67 | 0.000000 | 0.000000 | 0.000000 |
67 | 999 | 68 | 0.000000 | 0.000000 | 0.000000 |
68 | 999 | 69 | 0.000000 | 0.000000 | 0.000000 |
69 | 999 | 70 | 0.000000 | 0.000000 | 0.000000 |
70000 rows × 5 columns
Simulation areas¶
[47]:
display(spinup_input["parameters"])
sw_hw | age | area | delay | return_interval | min_rotations | max_rotations | spatial_unit_id | species | mean_annual_temperature | historical_disturbance_type | last_pass_disturbance_type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 41 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 0.000 | 1 | 1 |
1 | 0 | 13 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 0.002 | 1 | 1 |
2 | 0 | 55 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 0.004 | 1 | 1 |
3 | 0 | 51 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 0.006 | 1 | 1 |
4 | 0 | 49 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 0.008 | 1 | 1 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
995 | 0 | 14 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 1.990 | 1 | 1 |
996 | 0 | 46 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 1.992 | 1 | 1 |
997 | 0 | 18 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 1.994 | 1 | 1 |
998 | 0 | 14 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 1.996 | 1 | 1 |
999 | 0 | 23 | 1 | 0 | 125 | 10 | 30 | 17 | 20 | 1.998 | 1 | 1 |
1000 rows × 12 columns
[ ]: