Python implementation of the Forest Vegetation Simulator - Part of the FIA Python Ecosystem
Project description
Forest growth modeling in Python
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
- FVS Southern Variant Documentation
- Bechtold & Patterson (2005) "The Enhanced Forest Inventory and Analysis Program"
Citation
@software{pyfvs2025,
title = {pyFVS: Python Implementation of the Forest Vegetation Simulator},
author = {Mihiar, Christopher},
year = {2025},
url = {https://fiatools.org}
}
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84a88661212e7cdd6598418b08540ae1dfa93c204e8b66d1061ec03602d83168
|
|
| MD5 |
c4784e0c2cbe939e592deb983a19f875
|
|
| BLAKE2b-256 |
ab4d54f4a284eb9ed61d53da5acd92460f7b6c2c5e3a3a195ef8a8e809ef6b84
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a0c180e87ee4de06e822d3149c7385b4d98b68f664acfe2ff22637753191d37
|
|
| MD5 |
294448e183804657963d6fcd32b2a7cf
|
|
| BLAKE2b-256 |
8a17c39edc83dee608d83d5e9b2826c21390c1a076df0774ccb5d24a052aea41
|