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.1.tar.gz (155.3 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.1-py3-none-any.whl (102.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyfvs_fia-0.2.1.tar.gz
  • Upload date:
  • Size: 155.3 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.1.tar.gz
Algorithm Hash digest
SHA256 84a88661212e7cdd6598418b08540ae1dfa93c204e8b66d1061ec03602d83168
MD5 c4784e0c2cbe939e592deb983a19f875
BLAKE2b-256 ab4d54f4a284eb9ed61d53da5acd92460f7b6c2c5e3a3a195ef8a8e809ef6b84

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyfvs_fia-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 102.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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7a0c180e87ee4de06e822d3149c7385b4d98b68f664acfe2ff22637753191d37
MD5 294448e183804657963d6fcd32b2a7cf
BLAKE2b-256 8a17c39edc83dee608d83d5e9b2826c21390c1a076df0774ccb5d24a052aea41

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