Calibrating FVS on a budget, part 3: growth

Calibrating growth to an expected rate can improve long-term yields.
growth and yield
FVS
Author

Matt Russell

Published

September 23, 2026

NOTE: This is the final post in the Calibrating FVS on a Budget series. Check out the recent posts on calibrating mortality and adding regeneration for more.

In a series of recent posts, I’ve shown how to better align FVS-projected growth of spruce-fir stands in Maine. We accomplished this by changing how mortality is calculated with FVS (by changing the SDIMAX keyword) and adding natural regeneration that we expect in these stands dominated by shade tolerant species (and isn’t done by default in FVS).

Our goal is to align the growth that we expect with the growth that FVS predicts. From the previous posts, modifying the SDIMAX keyword brought the average annual growth down from the overpredictions that FVS made out-of-the-box, and adding regeneration didn’t move the needle much on growth. So, growth is still too high relative to our target growth of 0.48 cords/ac/yr (informed from Forest Inventory and Analysis data).

Too much growth can be related to not enough mortality or too much growth in the increment equations. This is difficult to tease apart, but FVS is generally known to overpredict growth. For example, volume equations in FVS overpredict up to 49% more volume compared to regional equations and predict 27% more carbon sequestration in California forests.

Our next tool is to use the FixDG keyword to lower the growth that is being predicted. The FixDG keyword allows a user to apply a diameter growth multiplier to each observation. So if our model predicts a growth rate of 1.0 inches every 10 years, a multiplier of 0.9 moves tree growth down to 0.9 inches over a decade. It’s a great tool that fits our theme: calibrating on a budget.

Case study: Maine spruce-fir data

As a reminder, this case study uses Forest Inventory and Analysis plots from Maine. All plots were measured between 2020 and 2024. These plots were further queried to select all single-condition plots on timberland in the spruce/fir forest type group (FORTYPGR = 120) found in the Acadian Plains and Hills ecoregion (ecoregion 211). In total, 332 plots with 18,869 tree observations were used.

Following up on the previous posts, this analysis was built off the simulation that changed the SDIMAX keyword and added regeneration using the NATURAL keyword. For this example, I ran six iterations of the simulation at different multiplier values for the FixDG keyword: 1.0, 0.9, 0.8, 0.7, 0.6, and 0.5. This produced a range of predicted growth across simulations.

Remember, our interest is in calibrating the model to a target growth rate of 0.48 cords/ac/yr a value informed by FIA data. Including the SDImax modification along with adding natural regeneration led to an average MAI of 0.82 +/- 0.42 cords/ac/yr.

The growth below shows the average mean annual increment at six levels of the FixDG multiplier. The dashed line indicates the FIA average of 0.48 cords/acre/year:

As you can see, lowering the FixDG multiplier value to somewhere between 0.5 and 0.6 will match the average FIA growth rate to 0.48 cords/acre/year. We could run additional FVS simulations with FixDG values between 0.5 and 0.6 to home in on the appropriate value, or we could take a midpoint of 0.55 to be our multiplier value.

As a reminder, our FVS out-of-the-box growth was around 1.0 cord/acre/yr before we started calibrating. Now we’ve cut the growth by about half to align it with expected growth rates for the region and forest type:

To summarize what we’ve accomplished in these posts, here are the keywords to align these 300+ spruce-fir plots in Maine to provide reasonable growth:

  • Change the SDIMAX keyword to use 541.6 to reflect recent research based on the species and ecological region.
  • Add 25 seedlings per acre each of balsam fir and red spruce every 10 years using the NATURAL keyword.
  • Modify the FixDG keyword to 0.55, applied to all species and all diameter classes of trees.

A few highlights from this approach:

  1. Consider height growth modifiers, too. There is also a FixHtG keyword that allows one to modify height growth. In my experience this keyword is much more sensitive than FixDG, but it may be useful to you. It may work best for younger trees, especially where many FVS variants implement separate diameter and height growth equations for large- and small-diameter trees.

  2. The FixDG keyword is flexible. There are several other parameters you could add to the FixDG keyword. For example, you could add the multiplier value only to a tree that has a diameter between two values. I often use this if I want to “throttle back” the diameter growth of only large-diameter trees. For example, the FixDG keyword can be modified to apply only to trees above 20-inches in diameter. If the out-of-the-box growth seems to work well for young and smaller-diameter trees, this might be an ideal approach. You can also add the multiplier to only a specific species or group of species.

  3. Calibrate growth after adjusting mortality and adding regeneration. This is a matter of preference, but one that I’ve found works well for many of the eastern FVS variants. Tame the growth by adjusting mortality, add the regeneration that you expect, and finally, dial in the growth with the growth multipliers.

In summary, this series showed how to align our FVS growth projections to a benchmark growth rate. The key is to have a solid understanding of what growth to expect, and then working backwards from there. In many ways this approach is a method that relies on tinkering with iterative simulations. It reminds me of a speech that Franklin Delano Roosevelt gave while he was still governor of New York at the time of the Great Depression, telling his audience:

“The country demands bold, persistent experimentation.”

May you be bold and persistent in your work in FVS.

By Matt Russell. Subscribe to our monthly email newsletter for data and analytics trends in the forest products industry. We send one email on the last Thursday of every month.