!
! MPB in LPP Hazard Rating Event Monitor Addfile for FVS (Western Variants)
!
! PRELIMINARY RELEASE - FOR EVALUATION PURPOSES ONLY
!
! Prepared Jan, 2001 by:
!
! Anthony Courter, INTECS International Inc. for
!
! Forest Health Technology Enterprise Team
! 2150 Centre Avenue
! Building A, Suite 331
! Fort Collins, Colorado 80526-1891
!
! http://www.fs.fed.us/foresthealth/technology
!
! For more information, contact:
!
! Eric Smith elsmith@fs.fed.us 970 295-5841
!
! Slightly modified 12/01 by Andrew McMahan, INTECS International Inc.
!
!*****************************************************************************
! Provided by:
! Forest Health Protection's Forest Health Technology Enterprise Team (FHTET)
!
! Hazard ratings based on:
! "HAZARD RATING SYSTEM FOR MOUNTAIN PINE BEETLE IN LODGEPOLE PINE
! USING THE ORACLE DATABASE AND THE FOREST SERVICE IBM PLATFORM"
! by Carol Bell Randall, Entomologist, R-1 Forest Health Protection
! and Greg Tensmeyer, Management Systems, Idaho Panhandle National
! Forests, Published by Forest Health Protection, Report 00-6, April 2000
!
!*****************************************************************************
! GENERAL INSTRUCTIONS
!*****************************************************************************
!
! Target Species: Lodgepole Pine(LPP)
!
! MPB Hazard decreases with increasing altitude. As such, the user must
! determine location-specific "elevation breaks" which are used to
! delineate vertically-stratified Hazard zones. Consult your local
! entomologist prior to defining the Event Monitor variables EBREAK1 &
! EBREAK2 in Code Block 0. EBREAK1, the higher of the two elevation breaks,
! separates the "low" MPB Hazard from "moderate" MPB Hazard. EBREAK2, the
! lower elevation break, separates "moderate" MPB Hazard from High MPB Hazard.
!
! Nez Perce Nat'l Forest, Idaho: EBREAK1 = 7400, EBREAK2 = 5800
!
! Nez Perce EBREAKs determined using Shore and Safranyik's (1992)
! "location factor" index:
!
! "Low" if elevation > (24.4 * long) - 121.9 * lat) + 5045.1
! "Mod" if elevation > (24.4 * long) - 121.9 * lat) + 4545.1 (but < above)
!
! (where "lat" = degrees latitude, and "long" = degrees longitude)
!
! and using ~46 degrees latitude, ~116 degrees longitude.
!
! (EBREAKS above have been rounded to the nearest 100 feet.)
!
!*****************************************************************************
! Variable definitions (abbreviations used: BA= basal area; LPP=lodgepole
! pine; QMD= quadratic mean diameter; MPB = mountain pine beetle; TPA =
! trees per acre.)
!*****************************************************************************
!
! MPB_HAZ = the stand MPB hazard score: 1 (extremely low) to 14 (high)
! LPBA = the BA per acre of LPP.
! STANDBA = the BA per acre of all trees in the stand.
! PER_PINE = the percentage of basal area LPP relative to total stand BA.
! TPA3 = the total number of all trees per acre greater than 3" dbh.
! QMDLP5 = the QMD of LPP greater than 5" DBH.
! STANDAGE = the age of the stand as reported in the inventory year.
! ELEVFT = the elevation of the stand in feet.
!
! EBREAK1 = user defined elevation in feet above which MPB Hazard is Low
! (see Code Block 6)
! EBREAK2 = user defined elevation in feet above which MPB Hazard is
! Moderate (see Code Block 12)
!
! COUNT = Variable that is used as a incremental counter to insure correct
! Flow-of-Control within the Event Monitor. COUNT is used in
! conditional statements to assure that (seemingly) previously
! declared conditionals and/or variables are processed in the
! correct order.
!
! EJECT = Variable flag used to "stop" the stepwise logic once a hazard
! rating has been determined (i.e. once conditions in one of the
! "code blocks" has been evaluated to be TRUE)
!
!*****************************************************************************
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 0
!
! INITIALIZE VARIABLES prior to evaluation in Step-wise Progression Logic
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
COMPUTE 0
COUNT = 1
EJECT = 0
MPB_HAZ = 99
LPBA = SPMCDBH(2,LP,0,0,999,0,999,0)
STANDBA = BBA
PER_PINE = LPBA / BBA
TPA3 = SPMCDBH(1,LP,0,3,999,0,999,0)
QMDLP5 = SPMCDBH(5,LP,0,5,999,0,999,0)
STANDAGE = AGE
ELEVFT = ELEV
!EBREAK1 = (remove this and add your values here)
!EBREAK2 = (remove this and add your values here)
! Above two lines for users to enter their own values (if using values
! different than those below.
! If you want to "preserve" the EBREAKS entered below (i.e. if you want to
! "save" the values but not use them) comment-out the lines below (by entering
! an exclamation point in the first column) and fill in the EBREAKS that
! you want to use in the two lines above; then "activate" the two lines
! above by removing the leading exclamation points.
! Alternatively, you may delete the values below, and enter your own values
! in the lines below.
! EBREAKS below for Nez Perce
! and calculated using Lat 46 / Long 116, and rounded to nearest 100 foot
EBREAK1 = 7400
EBREAK2 = 5800
END
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Step-wise progression logic. A stand is assigned an ordinal MPB Hazard
! rating, from one to fourteen (1-14). The Event Monitor variable COUNT is
! used to assure sequential Flow-of-Control, whereas the variable EJECT
! ceases evaluation of stand conditions as soon as one of the following
! conditions evaluates to "True". These fourteen blocks of code are
! similar to the CASE statement found in other programming languages.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 1 - Extremely Low Hazard - Randall & Tensmeyer Hazard = 0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
PER_PINE EQ 0 AND COUNT EQ 1 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 1
EJECT = 1
END
ENDIF
IF
PER_PINE NE 0 AND COUNT EQ 1 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 2 - Low Hazard - Randall & Tensmeyer Hazard = 1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
PER_PINE LT 0.25 AND COUNT EQ 2 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 2
EJECT = 1
END
ENDIF
IF
PER_PINE GE 0.25 AND COUNT EQ 2 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 3 - Low Hazard - Randall & Tensmeyer Hazard = 2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
( STANDBA LT 80 OR STANDBA GT 250 ) AND COUNT EQ 3 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 3
EJECT = 1
END
ENDIF
IF
STANDBA GE 80 AND STANDBA LE 250 AND COUNT EQ 3 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 4 - Low Hazard - Randall & Tensmeyer Hazard = 3
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
( TPA3 LT 100 OR TPA3 GT 800 ) AND COUNT EQ 4 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 4
EJECT = 1
END
ENDIF
IF
TPA3 GE 100 AND TPA3 LE 800 AND COUNT EQ 4 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 5 - Low Hazard - Randall & Tensmeyer Hazard = 4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
QMDLP5 LT 6.0 AND COUNT EQ 5 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 5
EJECT = 1
END
ENDIF
IF
QMDLP5 GE 6.0 AND COUNT EQ 5 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 6 - Low Hazard - Randall & Tensmeyer Hazard = 4.5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
ELEVFT GT EBREAK1 AND COUNT EQ 6 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 6
EJECT = 1
END
ENDIF
IF
ELEVFT LE EBREAK1 AND COUNT EQ 6 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 7 - Low Hazard - Randall & Tensmeyer Hazard = 4.75
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
STANDAGE LT 60 AND COUNT EQ 7 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 7
EJECT = 1
END
ENDIF
IF
STANDAGE GE 60 AND COUNT EQ 7 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 8 - Moderate Hazard - Randall & Tensmeyer Hazard = 5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
PER_PINE GE 0.25 AND PER_PINE LT 0.50 AND COUNT EQ 8 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 8
EJECT = 1
END
ENDIF
IF
PER_PINE GE 0.50 AND COUNT EQ 8 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 9 - Moderate Hazard - Randall & Tensmeyer Hazard = 6
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
STANDBA GE 80 AND STANDBA LT 120 AND COUNT EQ 9 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 9
EJECT = 1
END
ENDIF
IF
STANDBA GE 120 AND COUNT EQ 9 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 10 - Moderate Hazard - Randall & Tensmeyer Hazard = 7
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
((TPA3 GE 100 AND TPA3 LT 300) OR (TPA3 GE 600 AND TPA3 LE 800)) AND &
COUNT EQ 10 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 10
EJECT = 1
END
ENDIF
IF
TPA3 GE 300 AND TPA3 LT 600 AND COUNT EQ 10 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 11 - Moderate Hazard - Randall & Tensmeyer Hazard = 8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
QMDLP5 LT 8.0 AND COUNT EQ 11 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 11
EJECT = 1
END
ENDIF
IF
QMDLP5 GE 8.0 AND COUNT EQ 11 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 12 - Moderate Hazard - Randall & Tensmeyer Hazard = 9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
ELEVFT GT EBREAK2 AND ELEVFT LE EBREAK1 AND COUNT EQ 12 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 12
EJECT = 1
END
ENDIF
IF
ELEVFT LE EBREAK2 AND COUNT EQ 12 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 13 - Moderate Hazard - Randall & Tensmeyer Hazard = 9.5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
STANDAGE GE 60 AND STANDAGE LT 80 AND COUNT EQ 13 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 13
EJECT = 1
END
ENDIF
IF
STANDAGE GE 80 AND COUNT EQ 13 AND EJECT EQ 0
THEN
COMPUTE 0
COUNT = COUNT + 1
END
ENDIF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Code Block 14 - High Hazard - Randall & Tensmeyer Hazard = 10
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF
COUNT EQ 14 AND EJECT EQ 0
THEN
COMPUTE 0
MPB_HAZ = 14
EJECT = 1
END
ENDIF