Skip to content

Releases: mihiarc/pyfvs

v0.3.0 — Multi-Variant + Taper Volume

06 Feb 17:46

Choose a tag to compare

What's New

Taper-Based Volume System

Replaced combined-variable equations with NVEL taper models for accurate stem profile and merchandising calculations.

  • Clark model — 3-segment profile with analytic integration for Eastern variants (SN, NE, CS, LS) using R8 and R9 coefficients
  • Flewelling model — 4-segment variable-shape profile for Western variants (PN, WC, OP) covering Douglas-fir, Western Hemlock, and Western Red Cedar
  • Merchandising — Scribner Decimal C, International 1/4", and Doyle board-foot rules with per-log bucking and variant-specific trim/stump rules
  • Combined-variable equations retained as automatic fallback for species without taper coefficients

New Regional Variants (Full Infrastructure)

Seven variants now have complete variant-specific bark ratio, crown ratio, mortality, volume, and SDI models:

Variant Region Species Smoke Test (50yr)
SN Southern US 90 500 TPA LP SI=70 → 7,793 ft³/ac
LS Lake States 67 500 TPA RN SI=65 → 7,774 ft³/ac
PN Pacific NW Coast 39 400 TPA DF SI=120 → 15,029 ft³/ac
WC West Cascades 37 400 TPA DF SI=120 → 13,246 ft³/ac
NE Northeast 108 500 TPA RM SI=60 → 89 BA
CS Central States 96 500 TPA WO SI=70 → 2,743 ft³/ac
OP ORGANON PNW 18 400 TPA DF SI=120 → 28,395 ft³/ac

Three additional variants (CA, OC, WS) have diameter growth models and species configs but use default SN infrastructure for other components.

Variant-Specific Models Added

  • Bark ratio: LSBarkRatioModel (constant, Raile 1982), PNBarkRatioModel (3 equation types, 16 groups), CSBarkRatioModel
  • Crown ratio: LSCrownRatioModel (TWIGS), PNCrownRatioModel (Weibull + Redwood logistic), CSCrownRatioModel
  • Mortality: LSMortalityModel / CSMortalityModel (4-group background + VARADJ), standard SDI model for PN/WC/OP with variant-specific maximums
  • SDI maximums: Per-species values for all 7 implemented variants

Bug Fixes

  • Fixed RELHT propagation — stand now sets tree._top_height before grow()
  • Fixed mortality probability — changed from additive to multiplicative 1-(1-mort)*(1-rip)
  • Fixed O(n²) PBAL calculation — now O(n) via cumulative sum
  • Fixed WC/PN bark ratio parameter passing (was hardcoded 0.90)
  • Fixed version mismatch between __init__.py and pyproject.toml

Other Changes

  • Updated project description and keywords for multi-variant coverage
  • Updated README with variant comparison tables, volume system docs, and multi-variant examples
  • Python 3.12+ required (dropped 3.9-3.11)
  • ~1,000 tests, ~21,000 lines of source

Install

pip install fvs-python==0.3.0