Subject: Fire and Fuels Extension Update
Name:  Stephanie Rebain
Date:  11/10/2009
Variants affected: All

Description:
Additional surface fuel size classes were added for improved modeling of down woody debris.  
(New down wood reports will be available at a future time.)
The original fuels classes were :
0 - .25"
.25 - 1"
1 - 3"
3 - 6"
6 - 12"
> 12"
litter
duff

The new fuels classes are:
0 - .25"
.25 - 1"
1 - 3"
3 - 6"
6 - 12"
12 - 20"
20 - 35"
35 - 50"
> 50"
litter
duff

The addition of these new fuels classes affect the 1) FuelInit keyword, 2) FuelMove keyword,
3) FuelLoad event monitor function, and the 4) FVS_StandInit input database table.

1) The FuelInit keyword was modified.  Three new fields (10-12) were added to this keyword.
These changes are backward compatible so all old FuelInit keywords will still work.  Fuel 
that was in the > 12" category, will now be in the 12 - 20" class, and larger size classes will be 
zero by default.

FUELINIT: Set the amount of dead fuel in each fuel size class. Values left blank are 
replaced with variant-dependent defaults shown in the documentation for the individual 
variants. Individual fuel loadings can also be set within the StandInit table of an 
input FVS database.

Field 1:	Initial fuel load for fuel 0-1 inch (tons/acre). (This loading gets divided 
equally between the 0-0.25 inch class and the 0.25-1 inch class and may be overridden
with fields 8 and 9)
Field 2:	Initial fuel load for fuel 1-3 inch (tons/acre).
Field 3:	Initial fuel load for fuel 3-6 inch (tons/acre).
Field 4:	Initial fuel load for fuel 6-12 inch (tons/acre).
Field 5:	Initial fuel load for fuel 12-20 inch (tons/acre).
Field 6:	Initial fuel load for litter (tons/acre).
Field 7:	Initial fuel load for duff (tons/acre).
Field 8:	Initial fuel load for the 0-0.25 inch class (tons/acre).
Field 9:	Initial fuel load for the 0.25-1 inch class (tons/acre).
Field 10:	Initial fuel load for the 20-35 inch class (tons/acre).
Field 11:	Initial fuel load for the 35-50 inch class (tons/acre).
Field 12:	Initial fuel load for the > 50 inch class (tons/acre).

2) The FuelMove keyword was modified - these changes are not necessarily backward compatible, so
FuelMove keywords in old *.key or *.kcp files should be checked.  However, although the categories
for fields 2 and 3 have changed (see below), old FuelMove keywords should work as planned unless 
litter or duff was being added, removed, or moved to/from another category.  It may also be necessary to
add additonal FuelMove keywords to as simulation in cases where you are chipping very large fuel so
that the new fuel classes are incorporated (e.g.  whenever the source fuel pool was set to 6=>12 inch)

The original FuelMove parameters were:

FUELMOVE: Move fuel between size classes to simulate fuel treatments.  This keyword can be used to simulate the chipping or chunking of large fuel that is made smaller in size.  The amount of fuel to move can be specified in five different ways (see fields 3-7); if values are provided for more than one method, the FFE will use the method that results in the largest transfer. Setting the source pool to 0=none implies that fuel is being imported from outside and setting the destination pool to 0=none implies that fuel is being removed. The order FUELMOVE keywords are entered into the keyword file is important, especially if proportions are used. FFE processes keywords in the scheduled order and removes the fuel from the source pool at that time. The fuel is not added to the destination pool until all keywords for the year have been processed.
Field 1:	The FVS cycle number or the calendar year; default is 1.
Field 2:	Source fuel pool (0=none, 1=<0.25 inch, 2=0.25-1 inch, 3=1-3 inch, 4=3-6 inch, 
          5=6-12 inch, 6=>12 inch, 7=litter, 8=duff); default is 6.
Field 3:	Destination fuel pool; same codes used as field 2; default is 8.
Field 4:	Amount of fuel (tons/acre) to move from the source pool; default is 0.
Field 5:	Proportion of source fuel to move; default is 0.
Field 6:	Residual fuel (tons/acre) to leave in the source pool; default is 999.
Field 7:	Final amount (tons/acre) of fuel in the target; default is 0.

The new FuelMove parameters are:

FUELMOVE: Move fuel between size classes to simulate fuel treatments.  This keyword can be used to simulate the chipping or chunking of large fuel that is made smaller in size.  The amount of fuel to move can be specified in five different ways (see fields 3-7); if values are provided for more than one method, the FFE will use the method that results in the largest transfer. Setting the source pool to 0=none implies that fuel is being imported from outside and setting the destination pool to 0=none implies that fuel is being removed. The order FUELMOVE keywords are entered into the keyword file is important, especially if proportions are used. FFE processes keywords in the scheduled order and removes the fuel from the source pool at that time. The fuel is not added to the destination pool until all keywords for the year have been processed.
Field 1:	The FVS cycle number or the calendar year; default is 1.
Field 2:	Source fuel pool (0=none, 1=<0.25 inch, 2=0.25-1 inch, 3=1-3 inch, 4=3-6 inch, 
          5=6-12 inch, 6=12-20 inch, 7=20-35 inch, 8=35-50 inch, 9=>50 inch, 
          10=litter, 11=duff); default is 6.
Field 3:	Destination fuel pool; same codes used as field 2; default is 11.
Field 4:	Amount of fuel (tons/acre) to move from the source pool; default is 0.
Field 5:	Proportion of source fuel to move; default is 0.
Field 6:	Residual fuel (tons/acre) to leave in the source pool; default is 999.
Field 7:	Final amount (tons/acre) of fuel in the target; default is 0.

3) The FuelLoad event monitor function was modified and these changes are not backward compatible.
FuelLoad functions in old *.key or *.kcp files should be checked and updated.  For example, in the past
FUELLOAD(1,8) would represent the sum of all surface fuel categories, but with the current software
FUELLOAD(1,8) represents the sum of surface fuel up to 50" and does not include litter and duff and 
down wood greater than 50".  

The original FUELLOAD function was as follows:
FUELLOAD(arg1, arg2) is the total tons/acre of fuel in the stand for a range of fuel size classes. 
The lower limit of the range is defined using arg1 and the upper limit is arg2.  The value of arg1
and arg2 can be the same.  A coding system is used to specify the classes, where 
1 is >=0 to <0.25 inch, 
2 is >=0.25 to < 1 inch, 
3 is >=1 to <3 inches, 
4 is >=3 to <6 inches, 
5 is >=6 to <12 inches, 
6 is >=12 inches, 
7=litter, and 
8=duff. 

The new FUELLOAD function is:
FUELLOAD(arg1, arg2) is the total tons/acre of fuel in the stand for a range of fuel size classes. 
The lower limit of the range is defined using arg1 and the upper limit is arg2.  The value of arg1
and arg2 can be the same.  A coding system is used to specify the classes, where 
1 is >=0 to <0.25 inch, 
2 is >=0.25 to < 1 inch, 
3 is >=1 to <3 inches, 
4 is >=3 to <6 inches, 
5 is >=6 to <12 inches, 
6 is >=12 to <20 inches, 
7 is >=20 to <35 inches, 
8 is >=35 to <50 inches, 
9 is >=50 inches, 
10=litter, and 
11=duff. 

4) The FVS_StandInit input data table structure has changed slightly.  Originally fuel was entered
through the following columns:

Fuel_0_25	-	Initial tons per acre of 0 to 0.25 inch fuel 
Fuel_25_1	-	Initial tons per acre of 0.25 to 1 inch fuel 
Fuel_0_1	-	Initial tons per acre of 0 to 1 inch fuel, if not using previous two fields
Fuel_1_3	-	Initial tons per acre of 1 to 3 inch fuel
Fuel_3_6	-	Initial tons per acre of 3 to 6 inch fuel
Fuel_6_12	-	Initial tons per acre of 6 to 12 inch fuel
Fuel_gt_12	-	Initial tons per acre of greater than 12 inch fuel.
Fuel_Litter	-	Initial tons per acre of litter
Fuel_Duff	-	Initial tons per acre of duff

New columns were created for larger size down wood so the input columns are now:
Fuel_0_25	-	Initial tons per acre of 0 to 0.25 inch fuel 
Fuel_25_1	-	Initial tons per acre of 0.25 to 1 inch fuel 
Fuel_0_1	-	Initial tons per acre of 0 to 1 inch fuel, if not using previous two fields
Fuel_1_3	-	Initial tons per acre of 1 to 3 inch fuel
Fuel_3_6	-	Initial tons per acre of 3 to 6 inch fuel
Fuel_6_12	-	Initial tons per acre of 6 to 12 inch fuel
Fuel_12_20 or Fuel_gt_12 -	Initial tons per acre of 12 to 20 inch fuel.  
                            (If both columns are present, the first is used.)
Fuel_20_35	-	Initial tons per acre of 20 to 35 inch fuel
Fuel_35_50	-	Initial tons per acre of 35 to 50 inch fuel
Fuel_gt_50	-	Initial tons per acre of greater than 50 inch fuel
Fuel_Litter	-	Initial tons per acre of litter
Fuel_Duff	-	Initial tons per acre of duff

This change is backward compatible.  Databases with the old fuels columns will work fine. In this case,
the tons/acre in the Fuel_gt_12 column will all be put in the 12 - 20" class and the larger
size classes will be 0.
    
Impact on users:
See description above for impacts on old files containing the FUELLOAD event monitor function 
and FUELMOVE keyword.  In addition, when using updated versions of the Suppose interface and
viewing/editing a FUELINIT keyword created with an older version of Suppose, Suppose will crash,
so this keyword cannot be edited directly (it must be deleted and re-added if edits are necessary). 
If you need help updating old files, please contact the FVS helpdesk.

Modified Files:
fire/base/common/fmparm.f77 - changed MXFLCL from 8 to 11
fire/base/common/fmcom.f77 - changed a comment for CWD
fire/base/common/fmfcom.f77 - adjusted dimensions of variable BURNED

fire/base/src/fmin.f - modified processing of DUFFPROD, FUELDCAY, and FUELMULT keywords to account for new size 
                       classes in PRDUFF, TODUFF, and DKR arrays,
                       increased NVALS from 9 to 12, modified processing of FUELINIT keyword
                       modified processing of FUELMOVE keyword
                       updated length of RECORD in FMKEYRDR
fire/base/src/fmcwd.f - modified decay and accumulation of duff for new size classes,
                        modified processing of FUELMOVE keyword for new size classes
                        modified BP, BPH, and loop limits                   
fire/base/src/fmeff.f - adjusted the computation of TCWD2 array to account for new size classes
fire/base/src/fmcadd.f - adjusted litterfall accumulation equations since litter is now in position 10 instead of
                         7 in arrays CWD and CWDNEW
fire/base/src/fmscut.f - adjusted equation since litter is now in position 10 instead of 7 in array CWD 
fire/base/src/fmprun.f - adjusted equation since litter is now in position 10 instead of 7 in array CWD 
fire/base/src/fmhide.f - updated debug statement for new array positions in CWDNEW
fire/base/src/fmburn.f - updated CURRCWD array
fire/base/src/fmcfmd2.f -  updated CURRCWD array
fire/base/src/fmfout.f - adjusted printing of fuel consumption report for new size classes
fire/base/src/fmsoilheat.f - adjusted the loops to use MXFLCL and adjusted CWD array calculations
fire/base/src/fmdout.f - adjusted do loops to go to MXFLCL, adjusted variables LARGE2, TOTDUF, TOTLIT, ITON,
                         calculation of fuel > 12
fire/base/src/fmtret.f - adjusted loop limits
fire/base/src/fmmain.f - adjusted loop limit
fire/base/src/fmphotoval.f - adjusted arrays with photoseries info for new size classes

fire/ak/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/bm/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ca/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ci/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/cr/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/cs/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ec/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/em/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ie/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ls/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/nc/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ne/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ni/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/pn/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/sn/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/so/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/so33/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/tt/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ut/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/wc/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)
fire/ws/src/fmvinit.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays)

fire/ak/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/bm/src/fmcba.f - adjusted do loop to go to MXFLCL
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations   
                      adjusted processing of FUELINIT keyword                    
fire/ca/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/ci/src/fmcba.f - adjusted do loop to go to MXFLCL 
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations  
                      adjusted processing of FUELINIT keyword  
fire/cr/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/cs/src/fmcba.f - adjusted do loop to go to MXFLCL
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations
                      adjusted processing of FUELINIT keyword  
fire/ec/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/em/src/fmcba.f - adjusted do loop to go to MXFLCL
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations 
                      adjusted processing of FUELINIT keyword   
fire/ie/src/fmcba.f - adjusted do loop to go to MXFLCL    
                      added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/ls/src/fmcba.f - adjusted do loop to go to MXFLCL    
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations
                      adjusted processing of FUELINIT keyword
fire/nc/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/ne/src/fmcba.f - adjusted do loop to go to MXFLCL    
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations
                      adjusted processing of FUELINIT keyword
fire/ni/src/fmcba.f - adjusted do loop to go to MXFLCL    
                      added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/pn/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/sn/src/fmcba.f - adjusted do loop to go to MXFLCL    
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations
                      adjusted processing of FUELINIT keyword
fire/so/src/fmcba.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays),
                      adjusted do loop to go to MXFLCL
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations
                      adjusted processing of FUELINIT keyword
fire/so33/src/fmcba.f - initialized decay rate for extra size classes (dkr, prduff, toduff arrays),
                      adjusted do loop to go to MXFLCL
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations
                      adjusted processing of FUELINIT keyword
fire/tt/src/fmcba.f - adjusted do loop to go to MXFLCL    
                      added zeros for new classes in fuel initialization array(s)
                      adjusted variable declarations
                      adjusted processing of FUELINIT keyword
fire/ut/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/wc/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword
fire/ws/src/fmcba.f - added zeros for new classes in fuel initialization array(s)
                      adjusted processing of FUELINIT keyword

fire/ni/src/fmcons.f - adjusted the computation of TCWD array to account for new size classes, 
                       adjusted do loops to use MXFLCL, lengthened EMMFAC for the new size classes
fire/so/src/fmcons.f - adjusted the computation of TCWD array to account for new size classes,
                       adjusted do loops to use MXFLCL, lengthened EMMFAC for the new size classes
                       
base/src/svcwd.f - changed some comments, updated calculation of TCWD3 array
base/src/svstart.f - adjusted debug statement for new CWD array elements
base/src/evldx.f - adjusted call to FMEVCWD to allow arguments up to 11 for new size classes

dbs/src/dbsstandin.f - adjusted subroutine for processing of new fuels columns

fire/ppe/src/fmppput.f - adjusted variable BURNED
fire/ppe/src/fmppget.f - adjusted variable BURNED
fire/ppe/src/fmpphv.f - adjusted calculation of fmloads array, adjusted loop limit

Suppose files:
fire.kwd - modifed fuelinit and fuelmove keywords
fueltrt.prm - modified the mastication management action
mdoutputs.prm - modified the fuelload function compute window
function.evm - modified the fuelload function