! ! 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