Skip to main content

Python implementation of the Forest Vegetation Simulator - Part of the FIA Python Ecosystem

Project description

pyFVS

Forest growth modeling in Python

FIAtools Ecosystem PyPI Documentation License: MIT Python 3.9+

Part of the FIAtools Python Ecosystem
pyFIA · gridFIA · pyFVS · askFIA


A Python implementation of the Forest Vegetation Simulator (FVS) Southern variant. Simulate growth and yield for loblolly, shortleaf, longleaf, and slash pine from age 0 to 50 years.

Supported Species

Code Species Scientific Name
LP Loblolly Pine Pinus taeda
SP Shortleaf Pine Pinus echinata
LL Longleaf Pine Pinus palustris
SA Slash Pine Pinus elliottii

Quick Start

pip install pyfvs
from pyfvs import Stand

# Initialize a planted stand
stand = Stand.initialize_planted(
    species="LP",
    trees_per_acre=500,
    site_index=70
)

# Simulate 50 years of growth
stand.grow(years=50)

# Get results
metrics = stand.get_metrics()
print(f"Final volume: {metrics['volume']:.0f} ft³/acre")

Growth Models

pyFVS implements individual tree growth models from FVS documentation:

Height-Diameter (Curtis-Arney)

height = 4.5 + p2 × exp(-p3 × DBH^p4)

Large Tree Diameter Growth

ln(DDS) = β₁ + β₂×ln(DBH) + β₃×DBH² + β₄×ln(CR) + β₅×RH + β₆×SI + ...

Small Tree Height Growth (Chapman-Richards)

height = c1 × SI^c2 × (1 - exp(c3 × age))^(c4 × SI^c5)

Architecture

Tree Initial State
       │
       ▼
   DBH >= 3.0? ──No──► Small Tree Model
       │                    │
      Yes                   ▼
       │            Height Growth
       ▼                    │
  Large Tree Model          ▼
       │            Height-Diameter
       ▼                    │
  Predict ln(DDS)           ▼
       │              Update DBH
       ▼                    │
  Calculate DBH Growth      │
       │                    │
       └────────┬───────────┘
                ▼
        Update Crown Ratio
                │
                ▼
        Crown Competition
                │
                ▼
        Updated Tree State

Configuration

Species parameters are stored in YAML configuration files:

# cfg/species/lp_loblolly_pine.yaml
species_code: "LP"
common_name: "Loblolly Pine"
height_diameter:
  p2: 243.860648
  p3: 4.28460566
  p4: -0.47130185
bark_ratio:
  b1: -0.48140
  b2: 0.91413

Output

pyFVS generates yield tables with standard forest metrics:

Age TPA QMD Height BA Volume
0 500 0.5 1.0 0.7 0
10 485 4.2 28.5 47.2 892
20 420 7.8 52.1 139.8 3,241
30 310 10.4 68.3 182.5 5,128
... ... ... ... ... ...

Integration with pyFIA

from pyfia import FIA
from pyfvs import Stand

# Get current stand conditions from FIA
with FIA("database.duckdb") as db:
    db.clip_by_state(37)
    stand_data = db.get_stand_summary(plot_id="123")

# Initialize pyFVS with FIA data
stand = Stand.from_fia_data(stand_data)
stand.grow(years=30)

The FIAtools Ecosystem

pyFVS is part of the FIAtools Python ecosystem - a unified suite of open-source tools for forest inventory analysis:

Tool Purpose Key Features
pyFIA Survey & plot data DuckDB backend, 10-100x faster than EVALIDator
gridFIA Spatial raster analysis 327 species at 30m resolution, Zarr storage
pyFVS Growth simulation Chapman-Richards curves, yield projections
askFIA AI interface Natural language queries for forest data

Explore the full ecosystem at fiatools.org

References

Citation

@software{pyfvs2025,
  title = {pyFVS: Python Implementation of the Forest Vegetation Simulator},
  author = {Mihiar, Christopher},
  year = {2025},
  url = {https://fiatools.org}
}

Affiliation

Developed in collaboration with USDA Forest Service Research & Development. pyFVS is a Python implementation of the Forest Vegetation Simulator and is part of the FIA Python Ecosystem.


fiatools.org · Python Ecosystem for Forest Inventory Applications
Built by Chris Mihiar · USDA Forest Service Southern Research Station

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fvs_python-0.2.4.tar.gz (385.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fvs_python-0.2.4-py3-none-any.whl (540.4 kB view details)

Uploaded Python 3

File details

Details for the file fvs_python-0.2.4.tar.gz.

File metadata

  • Download URL: fvs_python-0.2.4.tar.gz
  • Upload date:
  • Size: 385.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for fvs_python-0.2.4.tar.gz
Algorithm Hash digest
SHA256 1c2e979975a0430cbb0a735ffa222c057b0342275a4bf1f48dbd7f90e7a160f1
MD5 e663d30b64877561391ada7091229f25
BLAKE2b-256 f331fdc9b8fc35f13cdf25cd850422ab64b26481bffd03b55825f0ea82944b10

See more details on using hashes here.

File details

Details for the file fvs_python-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: fvs_python-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 540.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for fvs_python-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f5128ca68851388c4d07ac8b0df147a20421910ded6b06cf80be4e8c184a7fb7
MD5 d0a1555d81ac2f65f23df191a01d50ab
BLAKE2b-256 806a6c61b17ea529f91164ebc9bae24f1207e8ae4184e6af3fec073ea0cf191b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page