The plot is an 11×11 grid of trees, each carrying its own age. Every tree grows continuously, its canopy size following a saturating curve so growth is fast while young and slows near maturity. On a fixed cutting cycle the stand is harvested: selective logging removes the single oldest trees scattered across the grid every cycle (uneven-aged management, closer to continuous-cover forestry), while clear-cut removes one contiguous patch of trees sized to the harvest rate (even-aged management — the classic industrial rotation). Cleared cells sit bare until regeneration succeeds; each year a bare cell has a chance (the regeneration success slider) of a seedling taking hold. If regeneration keeps failing, bare ground accumulates and the stand's total carbon stock never recovers.
canopy(age) = 0.25 + 0.75·(1 − e^−age/30)
biomass(age) ∝ min(age, 150)^0.75
P(regen this year) = 1 − (1 − regenRate)^dt_years
- Harvest rate — the fraction of the stand removed at each cutting-cycle event.
- Cutting cycle — years between harvest events; a short cycle never lets a stand reach old growth.
- Regeneration success — annual probability a bare cell replants; low values leave visible bare gaps that erode the stand's age structure and carbon stock over time.
- Simulation speed — how many simulated years pass per real second, so multi-decade rotations are visible without waiting.
Real-world relevance: this is the trade-off behind REDD+ and sustainable-yield forestry — a fast rotation with poor regeneration liquidates old-growth carbon stock permanently, while a longer cycle with reliable regeneration and selective removal keeps a mixed age structure and a standing carbon reservoir even while still producing timber.