Initializing vegetation with target driven spinup - RHESSys/RHESSys GitHub Wiki
This is an alternative to LAI-read and/or traditional spin-up methods. For information on the method, see:
Hanan, E., Tague, C., Choate, J., Liu, M., Kolden, C., Adam, J.C., (2018) Accounting for disturbance history in models: using remote sensing to constrain carbon and nitrogen pool spin-up, Ecological Applications 28(5): 1197-1214. doi:10.1002/eap.1718
In past versions of RHESSys, users could choose between two methods for initializing vegetation carbon and nitrogen stores:
- they could spin up these pools from zero until they are stable based on characteristics in the vegetation definition files (i.e. spin-up), however, this method assumes the vegetation across the entire watershed is the same age, or
- users can use LAI-read to initialize carbon pools based on remote sensing data. LAI-read uses allometric tables (with ratios derived from literature) to initialize carbon/nitrogen stores from an LAI image. However, this approach can be problematic as allometric relationships are species and region specific and may not be available for the study site. Further, allometric relationships are approximate and this approximation does not guarantee that the resulting combination of plant component carbon and nutrient stores will be stable. Users frequently find that vegetation initialized using LAI-read are unstable (decline – sometime to zero) when the model is run using dynamic vegetation growth.
This new approach (target driven spin-up) merges the two existing methods for initializing vegetation carbon and nitrogen stores, where one or more real vegetation parameters derived from a spatial data layer (e.g. LAI from TM or MODIS, stem wood or total biomass from LiDAR, or even stand age maps etc.) are used to define targets for each patch. The model is then run in spin-up mode - which tracks C & N stores for each patch separately until the target value is reached. Once all patches have reached their target, the model outputs a world state that includes the appropriate C and N stores for all patches, which can then be used to initialize subsequent simulations.
- A spin-up target file that lists targets for each patch, to be stored in the tec directory (see example). This is created using an LAI (or other vegetation data layer) in ascii format, along with patch and hillslope maps. Note: users can include one or more targets. When running with multiple targets, each patch will spin up until all targets have been met. There is an R script (generateTargets.R) included in the RHESSysIOinR package that users can modify to create their target files using ascii data layers. Current targets that RHESSys is set up to process include:
- LAI
- Stemwood C
- Stand Age
The header for the target file should list:
- The number of strata (same as # of patches) in the worldfile
(note the # of patches is listed in the flowtable as well;
tips: if you used the same map to define the zone, patch, and stratum levels, then the num_zones state variable in the worldfile will give you the number of patches/stratum;
you can also find the number of stratum by querying the instances of patch_ID in the worldfile) - The number of targets types being used (e.g. LAI, stemwood, etc.)
- List each type of target that is used (i.e. LAI) - on consecutive lines
| # of stratum | ||||||
|---|---|---|---|---|---|---|
| #of target types | ||||||
| type of target | ||||||
| type of target | ||||||
| basin_ID | hill_ID | zone_ID | patch_ID | stratum_ID | Target_type | Target_type |
| ID | ID | ID | ID | ID | Target_value | Target_value |
Example (1 type of target: LAI):

2. A spinup definition file (store in the _defs_ directory).
This includes 2 parameters:
- Max years = the maximum number of years to allow the spin-up to run (e.g. 200 years), generally corresponds with the fire return interval for the ecosystem
- Tolerance = how close the modeled value should come to its target before the target is considered to be met.
Example:
-
Near the end of the command line (before -g -b, etc.) add the following:
-vegspinup ../path_to_target_file_location -
Separate worldfile that includes a spinup_object_ID state variable (with the appropriate ID number) at the stratum level (under each line that defines the veg_parm_ID).
-
Separate worldfile header that includes reference to the spin_up def file (appropriate path to file and file name)
Example:
When all patches have met their targets, or reached the maximum number of years, RHESSys will output a worldfile with the correct C and N stores for each patch.
-
When you are running in spin-up mode, you should not include output_world_state in the tecfile, because this will output a worldfile that includes C and N stores assuming the entire basin was spun up the full length of time. In spin-up mode, RHESSys will automatically output a world state that includes homogeneously aged patches.
-
On the command line, you must set your end date to be a full year longer than the max years defined in your def file (otherwise RHESSys won't output a world state, and you will have to redo your spin-up run).