Table recipes
A DATABASE block names the tables a run may write, and naming one is never enough on its own.
The option is accepted whether or not the run does what the writer reports on, and the table is then
simply absent: the projection succeeds, the database is written, and nothing says the table is missing.
This page gives the second thing each table needs.
Every recipe here has been run, and every table in the Checked column has been compared against a
standalone FVSbc built from the same source and found to match value for value.
The keyword set that produces each table is in the repository note
notes/reference/oracle-coverage.md; this page is the contract, and that note is the evidence.
Always
These need only their option, plus the keyword where one is named.
Table |
Option |
Also needs |
|---|---|---|
|
|
|
|
|
a |
|
|
a |
|
|
a |
|
|
a |
|
|
a |
The fire-model block
Put ``FMIN`` before ``INVYEAR``. FUELOUT and POTFIRE capture the inventory year when they are
read, and FVS treats a positive value as “suppress this report” — read after INVYEAR they switch
their own reports off and the tables are silently absent. The validator warns.
Table |
Option |
Also needs |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
|
SIMFIRE schedules a fire: SIMFIRE=1,20,1,21,1,100,1 is cycle 1, wind 20 km/h, moisture
condition 1, 21 °C, FFE mortality, the whole stand, early spring. Without one, the fire tables report
the initial state and the mortality table never appears.
The event tables
Table |
Option |
Also needs |
|---|---|---|
|
|
a |
|
|
an |
|
|
an |
The blocks
RDIN, MISTOE and ESTAB are blocks of keywords, written by the same writer as everything
else and checked against their readers’ own tables. A hand-spaced line is read as different numbers with
no error, which is why they are not lines any more.
Table |
Block |
Option |
|---|---|---|
|
|
|
|
|
|
The dwarf-mistletoe tables also need an infection. The rating enters through the damage columns —
code 30 with the Hawksworth rating as the severity — and NEWSPRED is what makes the per-tree
table appear. Without it, three of the four are written and the fourth is not.
FVS_InvReference
It needs no keyword at all and is written on every run: species limits, site indices and volume
equations, one row per species. It is produced by DBSREFERENCE, which fvs.f calls immediately
after STATS.
Before `0.18.0` no run of this package produced it. The extension is driven by PyFVS’s
src/api/fvs_step.f90, an extraction of fvs.f’s initialisation that calls STATS and omitted
DBSREFERENCE; the original fvs_ is dead code in the extension, so the writer was compiled in and
never called. The build recipe’s PyFVS patch set now carries the missing call.
The two that are not recipes
FVS_Erroris written only when FVS logs something. A run that logs nothing has no such table, and that is a clean run.
Note
FVS_Regen_SitePrep’s PcntNone, PcntMech and PcntBurn cannot be relied on. FVS
decides whether to sample site preparation by branching on a local, LOAD, that it only assigns
when the stand is more than twenty years past inventory or a site-preparation keyword is present —
so an ordinary run reads an uninitialised value. Two builds of the same source disagree. Every other
table in the same run is unaffected; notes/triage.md carries the evidence.