USDAForestService / ForestVegetationSimulator

Forest Vegetation Simulation (FVS) - Growth and Yield Modeling software
Other
41 stars 26 forks source link

Feature request: simpler support for cycles, intervals, and inventory year #42

Closed jgrn307 closed 7 months ago

jgrn307 commented 7 months ago

When pulling from FIA data, the INVYR for a given plot can vary quite a bit, so the NUMCYCLES and TIMEINT 0 have to be tweaked in each keyfile if you want a set of FVS runs that are all "synced" to the same set of output dates. While I can tweak this manually, I'd like to suggest a feature request that makes this easier. Namely, within the keyfile, a "reference" year is provided (which will be the first year to be output from the run), and "stop year" is provided (the last year or as close to the last year as is possible), and a single INTERVAL for outputs is provided as well. Internal to FVS, TIMEINT 0 should be auto-calculated such that the difference between the INVYR from the input data and the "reference" year (which will be set to year "0" for all outputs) is the same as TIMEINT 0's "cycle length", and the NUMCYCLES is auto-calculated based on the "standard" intervals (TIMEINT 1's length). This way, no matter what the INVYR from the data is used, the model always outputs the same sets of years and ends the same year, and the user can easily tweak the interval length without having to also re-figure out the NUMCYCLEs.

This would be backwards compatible with the existing runs, but just make running FVS with varying INVYR a lot easier.

DavidLRfs commented 7 months ago

Had bit of a time understanding exactly what you are wanting to do but... The controls for reporting years you mention are present in the FVS Interface with the Common starting year, Common ending year and Additional output reporting years (if desired). They are implemented so that output for all stands in a given run have common cycle boundary years to accommodate user analysis and the composite tables generation (which is performed by the interface). The timing controls for the individual stands in a run are automatically generated by the interface to achieve this. The FVS base model is a single stand model and has no information regarding any other stands in a serial run that may exist. Yes, a FVS run may contain one or more stands but those stands are processed/projected completely independent of one another by the FVS base model. The default FVS_Summary file will always include a record of output for the inventory year and every cycle (growth interval) of the projection, no suppression of that output will be available. The year will always reflect the actual calendar year the output associated with that year represents. To modify the inventory years of a datasets from the year the data was collected would invalidate the datasets and one must also be observant of the default cycle (or interval) length for the FVS variant they are using because those are the period lengths on which the growth and mortality equations were developed. I believe there is discussion on this topic in the Essential FVS document. The interface offers options to filter and download individual output tables in .xlxs or .csv format and then the user can view and analyze the output using any software they choose. They could also make a copy the SQLite output database generated by the run in the project folder. So, if you are performing multiple runs, just make sure that you specify the same Common starting year for all runs and it would have to be no earlier than the most recent inventory year.