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}
}

fiatools.org · Python Ecosystem for Forest Inventory Analysis
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

pyfvs_fia-0.2.3.tar.gz (250.2 kB view details)

Uploaded Source

Built Distribution

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

pyfvs_fia-0.2.3-py3-none-any.whl (338.5 kB view details)

Uploaded Python 3

File details

Details for the file pyfvs_fia-0.2.3.tar.gz.

File metadata

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

File hashes

Hashes for pyfvs_fia-0.2.3.tar.gz
Algorithm Hash digest
SHA256 491da351d21ee75ea1be8fc26f3e9b57f644d7aa8ba70d44f68785dab02968dd
MD5 ad2371f3e150b14f8e90dbdb0b09806c
BLAKE2b-256 e3ea9833592be7e054d07b3f92c3218ab3377eae22b1dfb8f26b2dc59d39616d

See more details on using hashes here.

File details

Details for the file pyfvs_fia-0.2.3-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pyfvs_fia-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 22dc66b50a73972ea48bb0ff90b1943cc11807b13e632fecae52419f5b27e88b
MD5 ffb23be4967e4c51a24b88662dcb0f34
BLAKE2b-256 7c048aa2ad66d0da6cbea396b82443ab0d6d4cf9064609b526dd315d05d71732

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