Forest Management in ForestStudio
How the model decides when to harvest, which trees to take, and what must stay
In ForestStudio, harvests are not booked in a calendar. You describe a strategy and a set of limits, and an intervention happens only when the forest itself is ready for it.
That makes management adaptive. If a dry decade slows growth, or a storm opens up a stand, the next thinning simply comes later, or lighter, without you rewriting the plan. Every management scenario answers three questions:
When
Can a harvest happen?
Only when the management unit is dense enough, and only if the resulting cut is worth doing.
Which
Which trees are taken?
Each tree gets a removal probability based on its diameter, so you can thin from below or from above.
What stays
What must be respected?
Limits on how much is cut, plus species rules that protect large wood and habitat trees.
Decisions are made per management unit
A management unit (MU) is the piece of forest a forester plans for as one: typically a stand. In ForestStudio it is also the level at which every management decision is assessed. There is no harvest plan for the landscape as a whole, and no decision is taken for a single hexagonal cell.
Landscape
Results are added up
The landscape is the sum of its management units. Harvested volume, revenue and forest metrics are reported per MU and then totalled.
Management unit
Decisions are assessed here
Each year, each MU is checked on its own: is its basal area above its target, do its limits allow a harvest, is the resulting intensity inside its window?
Tree
The harvest is carried out
Once an MU qualifies, individual trees inside it are selected and removed, following the MU’s thinning curve and its species rules.
What this means in practice:
- Each MU has its own rules. A spruce stand and an oak stand in the same forest can follow completely different strategies, each with its own targets and limits.
- Each MU has its own timing. One MU can be thinned this year while its neighbour, still below its target, waits. Interventions are therefore spread over the years and across the forest without anyone scheduling them.
- The numbers that trigger a decision are MU averages. Basal area, harvested basal area and harvest intensity are all calculated over the whole MU, per hectare. A dense corner of an MU does not trigger a thinning by itself.
- Species rules live inside an MU. A target diameter or a habitat-tree requirement is set for a species in a given MU, so the same species can be treated differently elsewhere.
Throughout this page, the tags MU level and Species level show where each rule is set.
Three ways to manage a stand
Management is defined per management unit (MU), and rules can be refined per species inside each MU. ForestStudio supports rotation forestry, continuous-cover forestry and mixtures of both through three building blocks:
Thinning
Selective removal of some trees so the remaining ones have more space. The core of every scenario.
Clear-cut and planting
Harvest a whole MU in a chosen simulation year, then replant it with the species you want.
Femelschlag in development
Small gaps cut inside a stand so that new trees can regenerate in the light.
Thinning
Instead of removing trees at random, thinning follows clear and repeatable rules. Every simulation year, and independently for each management unit, the model walks through five stages:
Enough basal area to justify an intervention.
A removal probability for every tree, adjusted by species rules.
A pool of trees eligible for harvest, ranked by priority.
Add trees one by one until a limit is reached.
Too weak or too heavy? Then nothing is cut this year.
1 Is the stand ready?
MU level
Thinning is only considered when the management unit is dense enough. Density is measured as basal area: the cross-sectional area of all stems, in m² per hectare. You set a target basal area, and as long as the MU is below it, nothing happens.
\[BA_{\text{MU}} < BA_{\text{target}} \quad \Rightarrow \quad P_{\text{remove},\,i} = 0 \quad \text{for every tree } i \text{ in the MU}\]
where the basal area of the MU is the sum over its trees, scaled to one hectare:
\[BA_{\text{MU}} = \frac{10\,000}{A_{\text{total}}} \sum_{i \in \text{MU}} BA_i\]
with \(A_{\text{total}}\) the MU area in m² and \(BA_i\) the basal area of tree \(i\) in m². The threshold is the parameter target_basal_area.
2 Which trees?
MU level Species level
The thinning curve
Each tree receives a probability of being removed that depends only on its diameter at breast height (DBH). The shape of that relationship is an S-shaped (logistic) curve controlled by two numbers: a sets the overall level of the probability, and b how it changes with tree size.
\[P_{\text{remove},\,i} = \frac{1}{1 + e^{-(a \,+\, b \cdot \text{DBH}_i)}}\]
with \(\text{DBH}_i\) the diameter of tree \(i\) in cm. The more negative \(a + b \cdot \text{DBH}_i\), the closer the probability is to 0; the more positive, the closer to 1.
The sign of b decides the style of thinning:
From below · b < 0
Smaller, weaker trees are the most likely to go. The strongest and tallest trees get more room.
From above · b > 0
Larger trees are the most likely to go, which favours the growth of smaller, younger trees.
Size-neutral · b ≈ 0
A partial cut that does not favour any tree size. With a very negative a, nothing is thinned at all.
Try it: shape your own thinning curve
Pick a starting strategy, then move a and b. The dots are example trees: the darker the dot, the more likely that tree is removed.
Typical values to start from:
| Strategy | Typical a |
Typical b |
Effect |
|---|---|---|---|
| Thinning from above | −8 to −3 | 0.05 to 0.15 | Targets larger trees |
| Thinning from below | 0 to 5 | −0.3 to −0.1 | Targets smaller trees |
| Size-neutral | −3 to −1 | −0.01 to 0.01 | Size-independent |
Species rules that override the curve
The curve treats all species alike. Three optional rules, set per species within an MU, can then push a tree’s probability to 1 or to 0:
Forces removal
Target diameter
Once a tree of this species reaches the target diameter, its removal probability becomes 1. It joins the harvest candidates first, although the limits in stages 4 and 5 still decide whether it is finally cut.
Protects
Large wood
Keeps big trees of valuable species (oak or beech, for example). If large trees of the species make up less than a minimum share of the MU’s basal area, their removal probability becomes 0. “Large” means 50 cm DBH by default.
Protects
Habitat trees
Reserves a number of big trees per hectare for biodiversity. Selected habitat trees get a removal probability of 0 and are never harvested. More below.
Target diameter. For each species \(s\) with a target_diameter \(D_s^{\text{target}}\):
\[\text{DBH}_i \geq D^{\text{target}}_s \quad \Rightarrow \quad P_{\text{remove},\,i} = 1\]
Large wood. The share of the MU’s basal area held by large trees of species \(s\) is
\[LW_{\text{MU},s} = \frac{\sum_{i \in \text{MU}_s,\ \text{DBH}_i > 50} BA_i}{BA_{\text{MU}}}\]
and if it is below the minimum share large_wood (\(LW_s^{\min}\)), the large trees of that species are protected:
\[LW_{\text{MU},s} < LW_s^{\min} \quad \Rightarrow \quad P_{\text{remove},\,i} = 0 \quad \text{for trees of } s \text{ with } \text{DBH}_i > 50\]
If a rule is not defined for a species, the thinning curve applies unchanged.
3 Draw the candidates
Probabilities are now turned into a concrete list of trees:
- Trees with probability 1 are always candidates.
- Trees with probability 0 are never candidates.
- For every tree in between, the model “flips a weighted coin”: a tree with a 30% probability becomes a candidate about three times out of ten.
The candidates are then ranked from highest to lowest probability, so trees forced in by a target diameter come first. This ranking matters in the next stage, because the harvest may stop before the end of the list.
For every tree with \(0 < P_{\text{remove},\,i} < 1\), a random draw decides whether it becomes a candidate:
\[\text{Candidate}_i \sim \text{Bernoulli}\left(P_{\text{remove},\,i}\right)\]
The candidate list \(C^*\) is then ordered so that
\[P_{\text{remove},\,i} \ge P_{\text{remove},\,j} \quad \text{whenever tree } i \text{ comes before tree } j\]
Because of the coin flip, two runs of the same scenario will not remove exactly the same trees. The strategy is the same, the individual trees differ.
4 Build the harvest
MU level
The model goes down the ranked list and adds trees to the harvest one at a time. It stops as soon as the next tree would break either of two limits:
Minimum basal area
The floor that must remain standing after the thinning. It keeps the stand from being opened up too much.
Maximum harvest basal area
An optional cap on how much basal area can be removed in one intervention. If it is not set, there is no cap.
Reaching a limit does not cancel the thinning. It only means no further trees are added.
With \(BA_{\text{removed},\,k+1}\) the cumulative basal area removed if the next candidate were included:
\[BA_{\text{MU}} - BA_{\text{removed},\,k+1} < BA_{\text{residual,min}} \quad \Rightarrow \quad \text{stop adding trees}\]
\[BA_{\text{removed},\,k+1} > BA_{\text{harvest,max}} \quad \Rightarrow \quad \text{stop adding trees}\]
The parameters are minimum_basal_area and max_harvest_ba, both in m²/ha.
5 Check the result
MU level
Finally the model looks at the harvest as a whole. The harvest intensity is the share of the MU’s basal area that would be removed. The thinning goes ahead only if the intensity lies between a minimum and a maximum that you define. Outside that window, the whole intervention is cancelled for that year and no trees are cut.
- Minimum intensity avoids returning to the same MU every year for a handful of trees, which would not pay off. For example,
0.16means at least 16% of the basal area. - Maximum intensity avoids over-thinning and destabilising the stand. For example,
0.30.
If you leave them empty, the window is 0 to 1 and any harvest is accepted.
\[BA_{\text{removed}} = \frac{10\,000}{A_{\text{total}}} \sum_{i \in R} BA_i \qquad HI = \frac{BA_{\text{removed}}}{BA_{\text{MU}}}\]
with \(R\) the trees in the harvest and \(A_{\text{total}}\) the MU area in m². The thinning goes ahead only if
\[HI_{\min} \le HI \le HI_{\max}\]
set by harvest_intensity_min and harvest_intensity_max.
See the rules at work
The limits above are what create a harvesting cycle. Nobody tells the model to thin “every 12 years”: the interval falls out of how fast the stand grows back to its target basal area.
Try it: a stand over 100 years
A simplified stand, standing for one management unit, grows towards its natural limit. Move the limits and watch when thinnings happen, and how strong they are.
Habitat trees
Species level Protects
Habitat trees are large trees deliberately left standing for biodiversity. In ForestStudio they are a living commitment, not a one-time marking: every year the model checks that the MU still holds enough of them.
You define three things, plus an optional subsidy that feeds into the economic assessment:
| Parameter | Meaning |
|---|---|
habitat_trees_per_ha |
How many habitat trees to keep per hectare in the MU |
habitat_tree_species |
Which species qualify. Several can be listed, e.g. fsyl;qrob;aalb |
habitat_tree_min_dbh |
Minimum diameter (cm) to qualify, the same for all listed species |
habitat_subsidy (optional) |
Annual payment per retained habitat tree or per hectare |
Among the trees that qualify, the largest ones are chosen until the target number is met. From then on:
- they cannot be harvested;
- they keep growing and still count towards the MU’s basal area, including the minimum basal area that must remain;
- they can still die from natural mortality or disturbances, and when one does, another qualifying tree takes its place at the next yearly check;
- a dead habitat tree can be salvaged only if salvage logging is enabled.
A tree \(i\) qualifies as a habitat tree if its species is in the listed set \(S_H\) and it is large enough:
\[species_i \in S_H \quad \land \quad DBH_i \ge D_H^{\min}\]
The number of habitat trees to keep in the MU is
\[N_H^{target} = A_{MU}\,[\text{ha}] \times H_{ha}\]
The \(N_H^{target}\) largest qualifying trees form the habitat set \(H^*\), and they are protected:
\[P_{\text{remove},\,i} = 0 \quad \text{for all } i \in H^*\]
Clear-cut and planting
MU level
For rotation forestry, an entire management unit can be harvested in one go and then replanted. Thinning rules still apply to the MU in the other years, so a rotation scenario is simply thinning plus a scheduled clear-cut.
1 · The trigger
A clear-cut happens in the simulation year you choose (year 30 of the run, not the calendar year 2030). It does not depend on the age of the stand.
2 · The harvest
All trees in the MU are removed, whatever their age, size or species. The basal area removed equals the whole stock of the MU.
3 · The new stand
Optionally, the MU is replanted in the same year with the species and density (trees/ha) you define. More than one species can be planted. Leave these empty and nothing is planted.
Planted trees are spread evenly over all the cells of the management unit. They start at age 0 with a planting size of 7 cm.
In the clear-cut year:
\[P_{\text{remove},\,i} = 1 \quad \text{for every tree } i \text{ in the MU} \qquad BA_{\text{removed}} = BA_{\text{MU}}\]
The number of trees planted is the planting density times the MU area:
\[N_{\text{new}} = \text{planting\_density}\ [\text{trees/ha}] \times A_{MU}\ [\text{ha}]\]
Parameter reference
Management is set at two levels, so the model reads two main tables: one row per management unit, and one row per species within a management unit. Clear-cuts and Femelschlag have their own tables.
| Parameter | What it does | Units | Required | Default |
|---|---|---|---|---|
mu_id |
Management unit the row applies to | – | Yes | – |
a |
Intercept of the thinning curve | – | Yes | – |
b |
Slope of the thinning curve: negative thins from below, positive from above | – | Yes | – |
target_basal_area |
Basal area the MU must reach before thinning is considered | m²/ha | Yes | – |
minimum_basal_area |
Basal area that must remain after thinning | m²/ha | No | 0 |
max_harvest_ba |
Most basal area that can be removed in one intervention | m²/ha | No | no cap |
harvest_intensity_min |
Weakest intervention allowed, as a share of basal area | 0–1 | No | 0 |
harvest_intensity_max |
Strongest intervention allowed, as a share of basal area | 0–1 | No | 1 |
harvest_manual |
true for motor-manual harvest (chainsaw), false for a harvester. Changes the costs, not the trees removed |
true / false | No | false |
| Parameter | What it does | Units | Required | Default |
|---|---|---|---|---|
mu_id |
Management unit the row applies to | – | Yes | – |
species |
Species the rule applies to (species codes) | code | Yes | – |
target_diameter |
Trees of the species at or above this diameter get removal probability 1 | cm | No | none |
large_wood |
Minimum share of MU basal area in large trees of the species. Below it, those large trees are protected | 0–1 | No | none |
large_wood_diameter |
Diameter from which a tree counts as large wood | cm | No | 50 |
habitat_trees_per_ha |
Habitat trees to keep per hectare | trees/ha | No | none |
habitat_tree_species |
Species that qualify as habitat trees | codes | No | none |
habitat_tree_min_dbh |
Minimum diameter to qualify as a habitat tree | cm | No | none |
habitat_subsidy |
Annual payment per habitat tree or per hectare | – | No | none |
| Parameter | What it does | Units | Required | Default |
|---|---|---|---|---|
mu_id |
Management unit to clear-cut | – | No | none |
year_clearcut |
Simulation year of the clear-cut (not a calendar year) | years | No | none |
species |
Species to plant afterwards | code | No | none |
planting_density |
Density of the planting | trees/ha | No | none |
If species and density are left empty, nothing is planted after the clear-cut.
| Parameter | What it does | Units | Required | Default |
|---|---|---|---|---|
mu_id |
Management unit where the system is applied | – | Yes | – |
Trigger_basal_area |
Basal area the MU must exceed before a gap-cut is allowed | m²/ha | Yes | – |
| Gap size | Size of the gap | ha | No | 0.3 |
species |
Species to plant in the gap | code | No | none |
Planting_density |
Density of the planting in the gap | trees/ha | No | none |
In the app, a management scenario is edited through three tables.
Thinning (one row per management unit)
| Column | Description |
|---|---|
| MU ID | Unique MU identifier |
| A | Intercept parameter of the thinning curve |
| B | Slope parameter of the thinning curve |
| Basal Area | Minimum basal area to consider thinning; also the lower limit for the MU’s basal area |
| Min Intensity | Minimum harvest intensity (proportion of basal area removed) |
| Max Intensity | Maximum harvest intensity |
| Manual Harvest | Affects the cost calculation (TRUE = manual harvest) |
| Actions | Visualise the thinning curve for different A and B |
Species Specific (one row per species and management unit)
| Column | Description |
|---|---|
| MU ID | Management unit identifier |
| Species | Species receiving the parameters |
| Large Wood | Minimum proportion of trees with DBH ≥ 50 cm above which removal of large trees is allowed |
| Target Diameter | Diameter above which the probability of removal is set to 1 (actual removal still depends on the MU’s basal area) |
Clear Cut
| Column | Description |
|---|---|
| MU ID | Management unit identifier |
| Year | Simulation year, from one to the duration of the simulation, in which to clear-cut the MU |
| Density | Trees per hectare to plant after the clear-cut |
| Species | Species to be planted |