Skip to main content
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

Metadata

Release files for pyfvs-fia 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyfvs-fia 0.2.3
File Size Uploaded
pyfvs_fia-0.2.3.tar.gz 250.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyfvs-fia 0.2.3
File Interpreter ABI Platform
pyfvs_fia-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 588.7 kB

Release files / pyfvs_fia-0.2.3.tar.gz

Download URL pyfvs_fia-0.2.3.tar.gz
Size 250.2 kB
Tags Source
SHA-256 checksum
How to use checksums
491da351d21ee75ea1be8fc26f3e9b57f644d7aa8ba70d44f68785dab02968dd
BLAKE2b-256 checksum
How to use checksums
e3ea9833592be7e054d07b3f92c3218ab3377eae22b1dfb8f26b2dc59d39616d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / pyfvs_fia-0.2.3-py3-none-any.whl

Download URL pyfvs_fia-0.2.3-py3-none-any.whl
Size 338.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22dc66b50a73972ea48bb0ff90b1943cc11807b13e632fecae52419f5b27e88b
BLAKE2b-256 checksum
How to use checksums
7c048aa2ad66d0da6cbea396b82443ab0d6d4cf9064609b526dd315d05d71732
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page