diff --git a/base/algkey.f b/base/algkey.f index 54836bd136720033c01953f7b4c32cc9a5712310..80839aa7348c132420d73747033e76e0d28fe032 100644 --- a/base/algkey.f +++ b/base/algkey.f @@ -19,7 +19,7 @@ C CTAB1 - 8 = THE TABLES THAT CONTAIN THE KEYWORDS. C IOPT1 - 8 = THE TABLES THAT CONTAIN THE OPCODES. C INTEGER IRC,NUM,LEN,N1,I,N2,N3,N4,N5,N6,N7,N8 - PARAMETER (N1=1,N2=8,N3=26,N4=21,N5=22,N6=41,N7=29,N8=34) + PARAMETER (N1=1,N2=8,N3=26,N4=21,N5=22,N6=41,N7=31,N8=34) CHARACTER CTOK*20,CTAB1(N1)*1,CTAB2(N2)*2,CTAB3(N3)*3,CTAB4(N4)*4, > CTAB5(N5)*5,CTAB6(N6)*6,CTAB7(N7)*7,CTAB8(N8)*8 INTEGER IOPT1(N1),IOPT2(N2),IOPT3(N3),IOPT4(N4),IOPT5(N5), @@ -78,6 +78,7 @@ C 115 BSDIMAX C 116 BSDI C 117 BRDEN C 118 BRDEN2 +C 119 BHTWTBA C C 126 HABTYPE C 127 SLOPE @@ -125,6 +126,7 @@ C 215 ARDEN C 216 ADBHWTBA C 217 ARDEN2 C 218 ASDI2 +C 219 AHTWTBA C C GROUP 3 VARIABLES, THOSE KNOWN AFTER CYCLE 1. C @@ -298,11 +300,11 @@ C > 'BSDIMAX','ASDIMAX','BSCLASS','ASCLASS','BSTRDBH', > 'ASTRDBH','MINSOIL','BCANCOV','ACANCOV','POTFLEN', > 'PCTCOST','PROPSTK','SALVVOL','POINTID','STRSTAT', - > 'TREEBIO'/, + > 'TREEBIO','BHTWTBA','AHTWTBA'/, > IOPT7 /401,404,405,10400,126,131,7008,7004,10500, > 10600,133,406,7009,115,213,416,417,418, > 419,421,424,425,11900,436,144,12300,12400,12500, - > 12900/ + > 12900,119,219/ C DATA CTAB8 /'NUMTREES', > 'AVBTCUFT','AVBMCUFT','MSPERIOD','CENDYEAR', diff --git a/base/fvs.f b/base/fvs.f index 6ed5553572e8fa32d7ca21eb68c0356090ace710..cdcccbeac01c8eb793f88ff61790a3eea372ac90 100644 --- a/base/fvs.f +++ b/base/fvs.f @@ -50,15 +50,10 @@ C !DEC$ ATTRIBUTES DLLEXPORT, C, DECORATE, ALIAS : "FVS" :: FVS !DEC$ ATTRIBUTES REFERENCE :: IRTNCD -Cx INTEGER I,IA,N,K,NTODO,ITODO,IACTK,IDAT,NP !Remove these INTEGER I,IA,N,K REAL STAGEA,STAGEB LOGICAL DEBUG,LCVGO INTEGER IBA -Cx CHARACTER*150 SYSCMD !Remove these -Cx INTEGER MYACT(1) !Remove these -Cx REAL PRM(1) !Remove these -Cx DATA MYACT/100/ !Remove these INTEGER IRSTRTCD,ISTOPDONE,IRTNCD,ISTOPRES,lenCl C C ****************** EXECUTION BEGINS ****************** @@ -83,6 +78,7 @@ C FIND THE RESTART, AND BRANCH AS REQUIRED call fvsRestart (IRSTRTCD) call fvsGetRtnCode(IRTNCD) + IF (DEBUG) WRITE(JOSTND,*) "In FVS, IRSTRTCD=",IRSTRTCD, > " IRTNCD=",IRTNCD if (IRTNCD.ne.0) return @@ -164,12 +160,6 @@ C C CALCULATE TREES/ACRE ( = LOAD PROB ) C CALL NOTRE - CALL fvsStopPoint (7,ISTOPRES) - IF (ISTOPRES.NE.0) RETURN - CALL fvsGetRtnCode(IRTNCD) - IF (IRTNCD.NE.0) RETURN -C BRANCH HERE IF RESTARTING FROM STOPCODE 7 - 19 CONTINUE C C WESTERN ROOT DISEASE MODEL VER. 3.0 INITIALIZATION C @@ -190,6 +180,15 @@ C THE CYCLE-1 OPTIONS. C CALL OPCSET(ICYC) C +C PROCESS STOPPOINT 7 + + CALL fvsStopPoint (7,ISTOPRES) + IF (ISTOPRES.NE.0) RETURN + CALL fvsGetRtnCode(IRTNCD) + IF (IRTNCD.NE.0) RETURN +C BRANCH HERE IF RESTARTING FROM STOPCODE 7 + 19 CONTINUE +C C CALIBRATE GROWTH FUNCTIONS AND FILL GAPS C SDICLS IS CALLED HERE SO CROWNS WILL DUB CORRECTLY IN VARIANTS C USING THE WEIBULL DISTRIBUTION diff --git a/base/grincr.f b/base/grincr.f index 593492013e2fcb80e73fce0bd3cb6846f8c3958f..a2c266f66cf141630eae5177f5f0fe3061abed49 100644 --- a/base/grincr.f +++ b/base/grincr.f @@ -78,7 +78,7 @@ C CALL fvsGetRestartCode (ISTOPRES) IF (DEBUG) WRITE (JOSTND,5) ICYC,ISTOPRES,NPLT 5 FORMAT (/' IN GRINCR, ICYC=',I3,'; ISTOPRES=',I3,'; NPLT=',A) - GOTO (1,16,17,71,72), ISTOPRES+1 + GOTO (1,16,17,71,72,1), ISTOPRES+1 C STOP HAS NOT OCCURED diff --git a/base/tregro.f b/base/tregro.f index 8d795f79df47c54741fea9547657a5fc3a687279..e2dad76d1e8f094786c54db65e92b9bf8dc89ec9 100644 --- a/base/tregro.f +++ b/base/tregro.f @@ -36,7 +36,7 @@ C----------- CALL fvsGetRestartCode (ISTOPRES) IF (DEBUG) WRITE(JOSTND,2) ICYC,ISTOPRES 2 FORMAT (' IN TREGRO, ICYC=',I3,' ISTOPRES=',I3) - IF (ISTOPRES.GE.5) GOTO 10 + IF (ISTOPRES.GE.5 .and. .not. ISTOPRES.EQ.7) GOTO 10 C----------- C CALL GRINCR TO COMPUTE INCREMENTS AND SEE IF BUG MODELS ARE ACTIVE. C----------- diff --git a/bin/FVSon_sourceList.txt b/bin/FVSon_sourceList.txt index 074bccbee19859f48eccc67bcd0ff10004a5a171..42e99ab84d6ff461e595abd9ccd535aa3d34ab6a 100644 --- a/bin/FVSon_sourceList.txt +++ b/bin/FVSon_sourceList.txt @@ -554,7 +554,6 @@ ../volume/regndftdata.inc ../volume/wdbkwtdata.inc -../vvolume/fvsvol.f ../vvolume/twigbf.f ../vvolume/twigcf.f diff --git a/canada/bc/initre.f b/canada/bc/initre.f index 1604c90ca4dc64167f4baef4612a92f7478603e6..637f61d250dd82d3b989c2b0db391c7d5f30bf3b 100644 --- a/canada/bc/initre.f +++ b/canada/bc/initre.f @@ -1184,6 +1184,11 @@ C ENDIF PRMS(1)=EFF IF (LNOTBK(2)) PRMS(1)=ARRAY(2) + IF (PRMS(1).LT.0.) THEN + CALL KEYDMP (JOSTND,IRECNT,KEYWRD,ARRAY,KARD) + CALL ERRGRO (.TRUE.,4) + GOTO 10 + ENDIF IF (LNOTBK(3)) THEN PRMS(2)=ARRAY(3) I=2 diff --git a/common/INCLUDESVN.F77 b/common/INCLUDESVN.F77 index 36574b8d4852b9c67a6e4dd997b6a7702bbf9573..6c322f7ef3874f93f1a5de57e70d18dfab043931 100644 --- a/common/INCLUDESVN.F77 +++ b/common/INCLUDESVN.F77 @@ -3,6 +3,6 @@ C---------- C COMMON C---------- C - DATA SVN/"FS2023.1"/ + DATA SVN/"FS2023.2"/ C C-----END SEGMENT \ No newline at end of file diff --git a/fire/base/fmcfir.f b/fire/base/fmcfir.f index 8a012b3acd1a3943fbe9780c07196db5e4e6633c..c940498ef6fec46b88f73167eec071b884804827 100644 --- a/fire/base/fmcfir.f +++ b/fire/base/fmcfir.f @@ -51,6 +51,28 @@ C VARIABLE DECLARATIONS. LOGICAL DEBUG INTEGER I,J REAL WMULT,SAVWND,FLAME,BYRAM,RINIT1,CFB +C +C INITIALIZE VARAIBLES THAT ARE NOT PASSED AS PARAMETERS. +C + I = 0 + J = 0 + IRTNCD = 0 + OLDND = 0 + OLDNL = 0 + B = 0.0 + BOUNDL = 0.0 + BOUNDU = 0.0 + BYRAM = 0.0 + CFB = 0.0 + DIFF = 0.0 + HPA2 = 0.0 + HPA3 = 0.0 + INIT1 = 0.0 + FLAME = 0.0 + OLDEPT = 0.0 + RACT = 0.0 + RINIT1 = 0.0 + SAVWND = 0.0 CALL DBCHK (DEBUG,'FMCFIR',6,ICYC) IF (DEBUG) WRITE(JOSTND,7) ICYC,FMOIS,CBD diff --git a/sn/sitsetNC.f b/sn/sitsetNC.f deleted file mode 100644 index c92364136bd995e9aef32489f744c24d73bf49fa..0000000000000000000000000000000000000000 --- a/sn/sitsetNC.f +++ /dev/null @@ -1,789 +0,0 @@ - SUBROUTINE SITSET - IMPLICIT NONE -C---------- -C SN $Id$ -C---------- -C THIS SUBROUTINE LOADS THE SITEAR ARRAY WITH A SITE INDEX FOR EACH -C SPECIES WHICH WAS NOT ASSIGNED A SITE INDEX BY KEYWORD. LOGIC -C DEVELOPED BY DONNELLY, FMSC. WRITES FIA SPECIES CODE/FVS SPECIES -C CODE TRANSLATION TABLE -C THIS SUBROUTINE FOLLOWS SE-TWIGS SUBROUTINES BLOCK1, CONV1, AND -C CONV2. -C---------- -COMMONS -C -C - INCLUDE 'PRGPRM.F77' -C -C - INCLUDE 'COEFFS.F77' -C -C - INCLUDE 'CONTRL.F77' -C -C - INCLUDE 'PLOT.F77' -C -C - INCLUDE 'VARCOM.F77' -C -C - INCLUDE 'VOLSTD.F77' -C -C - INCLUDE 'SNCOM.F77' -C -C -COMMONS -C -C - INTEGER IFIASP, ERRFLAG - INTEGER I,IMAPSP,IGRP,IMGSP,IXTMP - INTEGER IREGN,IFORST,INTDIST,ISPC,J - REAL RSISP,A,B,C,D,XTMP - CHARACTER FORST*2,DIST*2,PROD*2,VAR*2,VOLEQ*10 - LOGICAL DEBUG - REAL SIMAX(MAXSP), SIMIN(MAXSP), SDICON(MAXSP) - INTEGER ISNSIS(43),ISNGRP(43),MAPSI(MAXSP), MGSISP(9) - REAL MGRSI(9), MGSI, MGSPIX, MGSION -C---------- -C LOAD SDI MAXIMUM VALUES -C---------- - DATA SDICON / - & 655., 354., 412., 499., 490., 385., 490., 332., 398., 398., - & 310., 529., 480., 499., 692., 623., 518., 371., 344., 421., - & 590., 371., 371., 400., 350., 375., 276., 492., 420., 422., - & 257., 147., 364., 414., 408., 423., 414., 338., 492., 430., - & 155., 283., 283., 430., 478., 492., 415., 492., 492., 492., - & 422., 277., 726., 430., 704., 304., 164., 492., 499., 648., - & 520., 384., 361., 315., 342., 405., 326., 387., 384., 326., - & 417., 336., 365., 417., 414., 342., 311., 370., 410., 343., - & 447., 492., 526., 282., 263., 282., 227., 354., 492., 421./ -C---------- -C THIS ARRAY CONTAINS OFFICIAL SITE SPECIES USED IN FIA DATA AND -C IS CONTAINED IN THE SN SPECIES LIST -C---------- - DATA ISNSIS/ - & 5, 6, 11, 17, 64, 35, 47, 75, 78, 15, - & 16, 44, 59, 76, 45, 8, 12, 13, 2, 1, - & 3, 7, 4, 14, 34, 61, 65, 87, 74, 10, - & 20, 22, 24, 25, 33, 60, 62, 63, 66, 69, - & 71, 73, 83/ -C---------- -C THIS ARRAY CONTAINS A MAP FROM THE OFFICIAL SITE SPECIES TO AN -C INDEX GROUP. -C---------- - DATA ISNGRP/ - & 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, - & 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, - & 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, - & 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - & 9, 9, 9/ -C---------- -C THIS ARRAY CONTAINS A MAP TO ESTIMATE INDIVIDUAL SITE INDICIES. -C---------- - DATA MAPSI/ - & 5, 5, 5, 5, 1, 1, 5, 4, 9, 8, - & 1, 4, 4, 5, 3, 3, 1, 9, 9, 9, - & 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - & 9, 9, 9, 6, 2, 9, 9, 9, 9, 9, - & 9, 9, 9, 3, 3, 9, 2, 9, 9, 9, - & 9, 9, 9, 9, 9, 9, 9, 9, 3, 9, - & 6, 9, 9, 2, 6, 9, 9, 9, 9, 9, - & 9, 9, 9, 7, 2, 3, 9, 2, 9, 9, - & 9, 9, 9, 9, 9, 9, 6, 5, 9, 9/ -C---------- -C ARRAY TO IDENTIFY THE "MASTER GROUP" SPECIES WHICH HAVE PUBLISHED -C REFERENCES TO ALLOW DIRECT TRANSFORMATION OF SITE INDEX BETWEEN -C SPECIES (DOOLITTLE 1958). SITE INDEX COMPARISONS...SOUTHERN -C APPALACHIANS, SOIL SCIENCE OF AMERICA PROC. 22(5):455-458; -C USDA FS(R8) 1992. SILVICULTURAL...PRESCRIPTION FIELD BOOK, P.19) -C---------- -C--MASTER GROUP NO.1 2 3 4 5 6 7 8 9 - DATA MGSISP /5, 64, 45, 12, 14, 65, 74, 10, 63/ -C---------- -C ARRAYS CONTAINING MAX AND MIN SITE INDEX BY SPECIES AND -C MODIFIED FOR USE IN HEIGHT GROWTH SITE INDEX SCALING. -C THIS PROCESS IS ESPECIALLY IMPORTANT FOR THE SHORTER TREE SPECIES. -C---------- - DATA SIMIN/ - & 15, 15, 15, 35, 35, 35, 45, 45, 35, 25, - & 35, 40, 40, 35, 30, 30, 35, 35, 35, 35, - & 30, 35, 25, 35, 35, 15, 25, 30, 15, 15, - & 15, 15, 35, 35, 35, 35, 35, 25, 15, 15, - & 35, 35, 35, 30, 30, 35, 25, 35, 15, 35, - & 15, 15, 30, 35, 35, 15, 15, 15, 30, 40, - & 30, 35, 25, 25, 25, 30, 25, 25, 35, 25, - & 35, 35, 30, 25, 25, 15, 25, 25, 30, 25, - & 15, 15, 35, 35, 35, 35, 35, 15, 15, 15/ -C - DATA SIMAX/ - & 100, 70, 80, 100, 105, 105, 90, 125, 70, 95, - & 105, 135, 125, 95, 120, 120, 90, 70, 70, 85, - & 105, 100, 90, 85, 70, 40, 85, 90, 90, 40, - & 45, 70, 85, 105, 95, 85, 105, 120, 50, 65, - & 70, 85, 85, 125, 135, 125, 115, 125, 75, 125, - & 40, 55, 105, 105, 95, 40, 70, 60, 120, 125, - & 90, 105, 115, 115, 115, 125, 65, 65, 95, 65, - & 95, 75, 115, 115, 115, 125, 85, 115, 65, 95, - & 110, 80, 90, 90, 90, 90, 90, 55, 55, 55/ -C----------- -C SEE IF WE NEED TO DO SOME DEBUG. -C----------- - CALL DBCHK (DEBUG,'SITSET',6,ICYC) -C---------- -C SET DEFAULT SITE INDEX. -C IF SITE INDEX SPECIES IS BLANK, USE WHITE OAK. IF NOT BLANK, CHECK -C TO SEE IF IT IS A RECOGNIZED SN SITE SPECIES. IF NOT, SET TO WHITE OAK. -C FVS SEQUENCE No. 63 AND SITE INDEX OF 70 -C---------- - IF(ISISP .LE. 0) ISISP=63 - DO 100 I=1,43 - IF(ISISP .EQ. ISNSIS(I))THEN - IMAPSP=I - GO TO 101 - ENDIF - 100 CONTINUE - ISISP=63 - IMAPSP=38 - 101 CONTINUE - IF(SITEAR(ISISP) .LE. 0.0) SITEAR(ISISP)=70. -C---------- -C BOUND INPUT SITE INDEX HERE -C (VALUES FROM DONNELLY, 02/2000) -C---------- - IF (SITEAR(ISISP) .LE. SIMIN(ISISP)) THEN - SITEAR(ISISP) = SIMIN(ISISP) - WRITE (JOSTND,110) JSP(ISISP), SITEAR(ISISP) - ENDIF - IF (SITEAR(ISISP) .GE. SIMAX(ISISP)) THEN - SITEAR(ISISP) = SIMAX(ISISP) - WRITE (JOSTND,110) JSP(ISISP), SITEAR(ISISP) - ENDIF - 110 FORMAT('***** WARNING - THE SITE SPECIES (',A4,') SITE INDEX VALU - 1E WAS OUTSIDE OF THE ALLOWABLE RANGE, THE VALUE USED WAS ',F5.1) -C---------- -C COMPUTE RELATIVE SITE INDEX FOR SITE SPECIES -C---------- - RSISP = (SITEAR(ISISP)-SIMIN(ISISP))/(SIMAX(ISISP)-SIMIN(ISISP)) -C---------- -C FOR MASTER GROUP SPECIES, FIND INDEX EQUATION COEFFICIENTS FOR -C X-AXIS VALUE CORRESPONDING TO SITE SPECIES SI. FIRST, FIND -C MASTER GROUP NUMBER OF SITE INDEX SPECIES. THEN, DETERMINE -C COEFFICIENTS TO BE USED IN EQUATION TO COMPUTE TRANSFORMATION -C INDEX. -C---------- - IGRP=ISNGRP(IMAPSP) - IF(IGRP .EQ. 1) THEN - IF (PCOM(1:1) .EQ. 'M') THEN -C---------- -C MOUNTAIN -C---------- - A = -7.1837 - B = 0.1633 - ELSE -C---------- -C OTHER -C---------- - A = -10.0 - B = 0.2 - ENDIF - ELSEIF (IGRP.EQ.2) THEN - IF (PCOM(1:1) .EQ. 'M') THEN - A = -8.6809 - B = 0.1702 - ELSE - A = -12.0 - B = 0.2 - IF(ISISP .EQ. 78) THEN - A = -16.0 - B = 0.2667 - ENDIF - ENDIF - ELSEIF (IGRP.EQ.3) THEN - A = -4.0 - B = 0.1 - ELSEIF (IGRP.EQ.4) THEN - A = -9.4118 - B = 0.1569 - ELSEIF (IGRP.EQ.5) THEN - A = -9.3913 - B = 0.1739 - ELSEIF (IGRP.EQ.6) THEN - A = -10.0 - B = 0.2 - ELSEIF (IGRP .EQ. 7) THEN - A = -8.6809 - B = 0.1702 - ELSEIF (IGRP.EQ.8) THEN - A = -7.1837 - B = 0.1633 - ELSEIF (IGRP.EQ.9) THEN - IF (PCOM(1:1) .EQ. 'M') THEN - A = -8.7442 - B = 0.186 - ELSE - A = -10.0 - B = 0.2 - ENDIF - ENDIF -C---------- -C USING A, B COEFFS FROM ABOVE, COMPUTE SITE TRANSFORM INDEX: -C FIRST, FIND MASTER GROUP SPECIES FROM MASTER GROUP SITE INDEX ARRAY, -C GIVEN THE GROUP NUMBER OF THE ACTUAL SITE INDEX SPECIES -C SECOND, COMPUTE MASTER GROUP SPECIES OWN SITE INDEX -C THIRD, GIVEN MASTER GROUP SPECIES OWN SITE INDEX, COMPUTE MASTER -C GROUP SITE SPECIES TRANSFORM INDEX -C---------- - IMGSP = MGSISP(IGRP) - MGSION = RSISP * ( SIMAX(IMGSP) - SIMIN(IMGSP) ) + SIMIN(IMGSP) - MGSPIX = A + B*MGSION -C---------- -C FIRST, FIND THE COEFFICIENTS NEEDED TO ESTIMATE THE SITE INDEX FOR -C EACH OF THE MASTER GROUP SPECIES. THEN, USING THE COEFFS C AND D, -C COMPUTE THE SITE INDEX FOR EACH MASTER GROUP SPECIES (MGSI). -C THEN, COMPUTE THE RELATIVE SITE INDEX FOR EACH MASTER GROUP -C SPECIES (MGRSI) BASED ON ITS SITE INDEX POSITION IN ITS RANGE -C FROM ITS SIMIN TO ITS SIMAX. -C---------- - DO 130 I=1, 9 - IF (I.EQ.1) THEN - IF (PCOM(1:1) .EQ. 'M') THEN - C = 44. - D = 6.13 - ELSE - C = 50. - D = 5. - ENDIF - ELSEIF (I.EQ.2) THEN - IF (PCOM(1:1) .EQ. 'M') THEN - C = 51. - D = 5.88 - ELSE - C = 60. - D = 5. - IF(ISISP .EQ. 78) THEN - C = 60. - D = 3.75 - ENDIF - ENDIF - ELSEIF (I.EQ.3) THEN - C = 40. - D = 10. - ELSEIF (I.EQ.4) THEN - C = 60. - D = 6.38 - ELSEIF (I.EQ.5) THEN - C = 54. - D = 5.75 - ELSEIF (I.EQ.6) THEN - C = 50. - D = 5. - ELSEIF (I.EQ.7) THEN - C = 51. - D = 5.88 - ELSEIF (I .EQ. 8) THEN - C = 44. - D = 6.13 - ELSEIF( I .EQ. 9.) THEN - IF (PCOM(1:1) .EQ. 'M') THEN - C = 47. - D = 5.38 - ELSE - C = 50. - D = 5. - ENDIF - ENDIF - MGSI = C + D * MGSPIX - MGRSI(I) = ( MGSI - SIMIN(MGSISP(I))) / - & ( SIMAX(MGSISP(I)) - SIMIN(MGSISP(I))) - 130 CONTINUE -C---------- -C GIVEN THE TRANSFORMED RELATIVE SITE INDEX VALUES FOR EACH OF THE -C MASTER GROUP SPECIES, COMPUTE AN ESTIMATED SITE INDEX VALUE FOR -C EACH SPECIES POSSIBLE IN THE VARIANT. EACH SPECIES IS -C ASSOCIATED WITH ONE OF THE MASTER GROUP SPECIES. THE RELATIVE -C SITE INDEX THEN SCALES THE POTENTIAL RANGE OF SITE INDEX VALUES -C USED IN THE HEIGHT GROWTH EQUATION (CARMEAN, NC-128) ASSIGNED -C TO EACH SPECIES. ALSO, EACH SITE INDEX VALUE IS CHECKED TO BE -C SURE IT IS WITHIN MIN AND MAX BOUNDS. -C---------- - DO 150 I = 1, MAXSP - IF ( SITEAR(I) .EQ. 0. ) THEN - SITEAR(I) = MGRSI(MAPSI(I))*(SIMAX(I) - SIMIN(I)) + SIMIN(I) - IF (DEBUG) WRITE(JOSTND,*)'I, SITEAR= ',I,' ',SITEAR(I) - IF (SITEAR(I) .LE. SIMIN(I)) THEN - IF(DEBUG) WRITE(JOSTND,155) JSP(I), SITEAR(I),SIMIN(I) - SITEAR(I) = SIMIN(I) - ENDIF - IF (SITEAR(I) .GE. SIMAX(I)) THEN - IF(DEBUG) WRITE(JOSTND,155) JSP(I), SITEAR(I),SIMAX(I) - SITEAR(I) = SIMAX(I) - ENDIF - ENDIF - 155 FORMAT('*** WARNING - THE SITE SPECIES (',A4,f5.1,')SITE INDEX - 1 WAS OUTSIDE OF THE ALLOWABLE RANGE, THE VALUE USED WAS ',F5.1) - 150 CONTINUE -C---------- -C END OF SITE DUBBING LOGIC -C---------- -C SET SDIDEF VALUES IF NOT SET BY KEYWORD. -C---------- - DO 15 I=1,MAXSP - IF(SDIDEF(I) .LE. 0.) THEN - IF(BAMAX .GT. 0.)THEN - SDIDEF(I)=BAMAX/(0.5454154*(PMSDIU/100.)) - ELSE - SDIDEF(I) = SDICON(I) - ENDIF - ENDIF - 15 CONTINUE -C START DIGESTION OF FOREST TYPE VARIABLE -C---------- - IF(IFORTP .GT. 999) THEN -C---------- -C THE LAST 3 CHARACTERS INDICATE THE FOREST TYPE AND THE FIRST -C CHARACTER INDICATE THAT THE USER SETS THE FOREST TYPE TO BE -C CONSTANT FOR ALL CYCLES. THE FIELD 3 INPUT IS DECODED -C AND LFLAGV IS SET TO TRUE TO INDICATE CONSTANT FOREST TYPE -C---------- - XTMP= FLOAT(IFORTP) - XTMP= XTMP/1000. + 0.00001 - IXTMP= INT(XTMP) - IFORTP= INT((XTMP-REAL(IXTMP))*1000.) - LFLAGV= .TRUE. - ENDIF -C---------- -C LOAD VOLUME DEFAULT MERCH. SPECS. -C---------- - IF(ISEFOR.NE.0)THEN - IREGN = KODFOR/10000 - IFORST=KODFOR/100-IREGN*100 - WRITE(FORST,'(I2)')IFORST - IF(IFORST.LT.10)FORST(1:1)='0' - INTDIST = KODFOR - (KODFOR/100)*100 - WRITE(DIST,'(I2)')INTDIST - IF(INTDIST.LT.10)DIST(1:1)='0' - ELSE - IF(KODFOR .GT. 1000)THEN - IFORST = KODFOR/100-900 - ELSE - IFORST = KODFOR-900 - ENDIF - DIST=' ' - IREGN=9 - VOLEQ(1:7)='900CLKE' - WRITE(FORST,'(I2)')IFORST - IF(IFORST.LT.10)FORST(1:1)='0' - ENDIF -C - DO ISPC=1,MAXSP - IF(IREGN.EQ.8)THEN - IF(DBHMIN(ISPC).LE.0.)THEN !SET **DBHMIN** DEFAULT - IF((ISPC.LE.17).OR.(ISPC.EQ.88))THEN !SOFTWOODS - IF(IFOR.EQ.11)THEN - IF((KODIST.EQ.3).OR.(KODIST.EQ.10))THEN - DBHMIN(ISPC)=5.6 - ELSE - DBHMIN(ISPC)=8.0 - ENDIF - ELSE - IF((ISPC.EQ.7).OR.(ISPC.EQ.13))THEN - DBHMIN(ISPC)=6. - ELSE - DBHMIN(ISPC)=4. - ENDIF - ENDIF - ELSE !HARDWOODS - IF(IFOR.EQ.11)THEN - IF((KODIST.EQ.3).OR.(KODIST.EQ.10))THEN - DBHMIN(ISPC)=6. - ELSE - DBHMIN(ISPC)=8. - ENDIF - ELSE - IF((ISPC.EQ.39).OR.(ISPC.EQ.43).OR.(ISPC.EQ.44).OR. - & (ISPC.EQ.52).OR.(ISPC.EQ.53).OR.(ISPC.EQ.55).OR. - & (ISPC.EQ.63))THEN - DBHMIN(ISPC)=6. - ELSE - DBHMIN(ISPC)=4. - ENDIF - ENDIF - ENDIF - ENDIF - IF(TOPD(ISPC).LE.0.)THEN !SET **TOPD** DEFAULT - IF(IFOR.EQ.11)THEN - TOPD(ISPC)=3.5 - ELSE - TOPD(ISPC)=4. - ENDIF - ENDIF - IF(BFMIND(ISPC).LE.0.)THEN !SET **BFMIND** DEFAULT - IF((ISPC.LE.17).OR.(ISPC.EQ.88))THEN !SOFTWOODS - SELECT CASE(IFOR) - CASE(10) - IF(ISPC.EQ.2)THEN - BFMIND(ISPC)=9. - ELSE - BFMIND(ISPC)=10. - ENDIF - CASE(11) - IF((KODIST.EQ.3).OR.(KODIST.EQ.10))THEN - BFMIND(ISPC)=11.0 - ELSEIF((ISPC.EQ.2).OR.(ISPC.EQ.12).OR. ! SYP, SPRUCE, FIR GROUP - & (ISPC.EQ.15).OR.(ISPC.EQ.16).OR.(ISPC.EQ.17))THEN - BFMIND(ISPC)=12. - ELSE - BFMIND(ISPC)=10. - ENDIF - CASE DEFAULT - BFMIND(ISPC)=10. - END SELECT - ELSE !HARDWOODS - IF(IFOR.EQ.11)THEN - IF((KODIST.EQ.3).OR.(KODIST.EQ.10))THEN - BFMIND(ISPC)=13. - ELSE - BFMIND(ISPC)=15. - ENDIF - ELSE - BFMIND(ISPC)=12. - ENDIF - ENDIF - ENDIF - IF(BFTOPD(ISPC).LE.0.)THEN !SET **BFTOPD** DEFAULT - IF((ISPC.LE.17).OR.(JSP(ISPC)(1:2).EQ.'OS'))THEN - IF(IFOR.EQ.11)THEN - IF((KODIST.EQ.3).OR.(KODIST.EQ.10))THEN - BFTOPD(ISPC)=6.3 - ELSEIF((ISPC.EQ.2).OR.(ISPC.EQ.12).OR. ! SYP, SPRUCE, FIR GROUP - & (ISPC.EQ.15).OR.(ISPC.EQ.16).OR.(ISPC.EQ.17))THEN - BFTOPD(ISPC)=9. - ELSE - BFTOPD(ISPC)=6.3 - ENDIF - ELSE - BFTOPD(ISPC)=7. - ENDIF - ELSE !HARDWOODS - IF(IFOR.EQ.11)THEN - IF((KODIST.EQ.3).OR.(KODIST.EQ.10))THEN - BFTOPD(ISPC)=8. - ELSE - BFTOPD(ISPC)=11. - ENDIF - ELSE - BFTOPD(ISPC)=9. - ENDIF - ENDIF - ENDIF - ELSE !REGION 9 - IF(DBHMIN(ISPC).LE.0.)THEN !SET **DBHMIN** DEFAULT - IF((ISPC.LE.17).OR.(ISPC.EQ.88))THEN !SOFTWOODS - DBHMIN(ISPC)=5. - ELSE !HARDWOODS - SELECT CASE(IFOR) - CASE(5) - DBHMIN(ISPC)=5. - CASE DEFAULT - DBHMIN(ISPC)=6. - END SELECT - ENDIF - ENDIF - IF(TOPD(ISPC).LE.0.)THEN !SET **TOPD** DEFAULT - IF(ISPC.LE.17)THEN !SOFTWOODS - TOPD(ISPC)=4. - ELSE !HARDWOODS - SELECT CASE (IFOR) - CASE(8) - TOPD(ISPC)=5. - CASE DEFAULT - TOPD(ISPC)=4. - END SELECT - ENDIF - ENDIF - IF(BFMIND(ISPC).LE.0.)THEN !SET **BFMIND** DEFAULT - IF(ISPC.LE.17)THEN !SOFTWOODS - SELECT CASE(IFOR) - CASE(5) - BFMIND(ISPC)=9. - IF(ISPC.EQ.2)BFMIND(ISPC)=6. - CASE DEFAULT - BFMIND(ISPC)=9. - END SELECT - ELSE !HARDWOODS - SELECT CASE(IFOR) - CASE(5) - BFMIND(ISPC)=9. - CASE DEFAULT - BFMIND(ISPC)=11. - END SELECT - ENDIF - ENDIF - IF(BFTOPD(ISPC).LE.0.)THEN !SET **BFTOPD** DEFAULT - IF(ISPC.LE.17)THEN !SOFTWOOD - SELECT CASE(IFOR) - CASE(5) - BFTOPD(ISPC)=7.6 - IF(ISPC.EQ.2)BFTOPD(ISPC)=5. - CASE DEFAULT - BFTOPD(ISPC)=7.6 - END SELECT - ELSE !HARDWOODS - SELECT CASE(IFOR) - CASE(5) - BFTOPD(ISPC)=7.6 - CASE DEFAULT - BFTOPD(ISPC)=9.6 - END SELECT - ENDIF - ENDIF - ENDIF - ENDDO -C---------- -C LOAD VOLUME EQUATION ARRAYS FOR ALL SPECIES -C---------- - PROD=' ' - VAR='SN' -C - DO ISPC=1,MAXSP - READ(FIAJSP(ISPC),'(I4)')IFIASP - IF(((METHC(ISPC).EQ.6).OR.(METHC(ISPC).EQ.9)).AND. - & (VEQNNC(ISPC).EQ.' '))THEN - - PROD='02' - CALL VOLEQDEF(VAR,IREGN,FORST,DIST,IFIASP,PROD,VOLEQ,ERRFLAG) - VEQNNC(ISPC)=VOLEQ - - IF(DEBUG)WRITE(16,*)'VAR,IREGN,FORST,DIST,IFIASP,PROD,VOLEQ,', - & 'ERRFLAG= ',VAR,IREGN,FORST,DIST,IFIASP,PROD,VOLEQ,ERRFLAG - ENDIF - IF(((METHB(ISPC).EQ.6).OR.(METHB(ISPC).EQ.9)).AND. - & (VEQNNB(ISPC).EQ.' '))THEN - PROD='01' - CALL VOLEQDEF(VAR,IREGN,FORST,DIST,IFIASP,PROD,VOLEQ,ERRFLAG) - VEQNNB(ISPC)=VOLEQ - ENDIF - ENDDO -C---------- -C HT-DBH COEFFICIENTS -C---------- - HT1(1)= 4.5084 - HT1(2)= 4.0374 - HT1(3)= 4.5084 - HT1(4)= 4.2899 - HT1(5)= 4.6271 - HT1(6)= 4.6561 - HT1(7)= 4.7258 - HT1(8)= 4.5991 - HT1(9)= 4.2139 - HT1(10)= 4.3898 - HT1(11)= 4.5457 - HT1(12)= 4.6090 - HT1(13)= 4.6897 - HT1(14)= 4.4718 - HT1(15)= 4.6171 - HT1(16)= 4.4603 - HT1(17)= 4.5084 - HT1(18)= 4.3164 - HT1(19)= 4.2378 - HT1(20)= 4.3379 - HT1(21)= 4.5991 - HT1(22)= 4.4834 - HT1(23)= 4.5697 - HT1(24)= 4.4388 - HT1(25)= 4.4522 - HT1(26)= 3.8550 - HT1(27)= 4.5128 - HT1(28)= 4.9396 - HT1(29)= 4.4207 - HT1(30)= 3.7512 - HT1(31)= 3.7301 - HT1(32)= 4.4091 - HT1(33)= 4.4772 - HT1(34)= 4.4819 - HT1(35)= 4.5959 - HT1(36)= 4.6155 - HT1(37)= 4.6155 - HT1(38)= 4.3734 - HT1(39)= 4.4009 - HT1(40)= 4.4931 - HT1(41)= 4.0151 - HT1(42)= 4.5018 - HT1(43)= 4.5018 - HT1(44)= 4.5920 - HT1(45)= 4.6892 - HT1(46)= 4.4004 - HT1(47)= 4.6067 - HT1(48)= 4.4004 - HT1(49)= 4.3609 - HT1(50)= 4.4004 - HT1(51)= 3.9678 - HT1(52)= 3.9613 - HT1(53)= 4.4330 - HT1(54)= 4.3802 - HT1(55)= 4.4334 - HT1(56)= 4.0322 - HT1(57)= 4.1352 - HT1(58)= 4.0965 - HT1(59)= 4.6355 - HT1(60)= 4.9396 - HT1(61)= 4.9396 - HT1(62)= 4.3286 - HT1(63)= 4.5463 - HT1(64)= 4.5225 - HT1(65)= 4.5142 - HT1(66)= 4.7342 - HT1(67)= 3.9365 - HT1(68)= 4.4375 - HT1(69)= 4.5710 - HT1(70)= 3.9191 - HT1(71)= 4.6135 - HT1(72)= 4.3420 - HT1(73)= 4.5577 - HT1(74)= 4.4618 - HT1(75)= 4.5202 - HT1(76)= 4.6106 - HT1(77)= 4.2496 - HT1(78)= 4.4747 - HT1(79)= 4.2959 - HT1(80)= 4.4299 - HT1(81)= 4.4911 - HT1(82)= 4.3383 - HT1(83)= 4.5820 - HT1(84)= 4.3744 - HT1(85)= 4.5992 - HT1(86)= 4.6008 - HT1(87)= 4.6238 - HT1(88)= 4.3898 - HT1(89)= 3.9392 - HT1(90)= 3.9089 -C - HT2(1)= -6.0116 - HT2(2)= -4.2964 - HT2(3)= -6.0116 - HT2(4)= -4.1019 - HT2(5)= -6.4095 - HT2(6)= -6.2258 - HT2(7)= -6.7703 - HT2(8)= -5.9111 - HT2(9)= -4.5419 - HT2(10)= -5.7183 - HT2(11)= -6.8000 - HT2(12)= -6.1896 - HT2(13)= -6.8801 - HT2(14)= -5.0078 - HT2(15)= -6.2684 - HT2(16)= -5.0577 - HT2(17)= -6.0116 - HT2(18)= -4.0582 - HT2(19)= -4.1080 - HT2(20)= -3.8214 - HT2(21)= -6.6706 - HT2(22)= -4.5431 - HT2(23)= -5.7172 - HT2(24)= -4.0872 - HT2(25)= -4.5758 - HT2(26)= -2.6623 - HT2(27)= -4.9918 - HT2(28)= -8.1838 - HT2(29)= -5.1435 - HT2(30)= -2.5539 - HT2(31)= -2.7758 - HT2(32)= -4.8464 - HT2(33)= -4.7206 - HT2(34)= -4.5314 - HT2(35)= -6.4497 - HT2(36)= -6.2945 - HT2(37)= -6.2945 - HT2(38)= -5.3135 - HT2(39)= -5.0560 - HT2(40)= -4.6501 - HT2(41)= -4.3314 - HT2(42)= -5.6123 - HT2(43)= -5.6123 - HT2(44)= -5.1719 - HT2(45)= -4.9605 - HT2(46)= -4.7519 - HT2(47)= -5.2030 - HT2(48)= -4.7519 - HT2(49)= -4.1423 - HT2(50)= -4.7519 - HT2(51)= -3.2510 - HT2(52)= -3.1993 - HT2(53)= -4.5383 - HT2(54)= -4.7903 - HT2(55)= -4.5709 - HT2(56)= -3.0833 - HT2(57)= -3.7450 - HT2(58)= -3.9250 - HT2(59)= -5.2776 - HT2(60)= -8.1838 - HT2(61)= -8.1838 - HT2(62)= -4.0922 - HT2(63)= -5.2287 - HT2(64)= -4.9401 - HT2(65)= -5.2205 - HT2(66)= -6.2674 - HT2(67)= -4.4599 - HT2(68)= -4.6654 - HT2(69)= -6.0922 - HT2(70)= -4.3503 - HT2(71)= -5.7613 - HT2(72)= -5.1193 - HT2(73)= -4.9595 - HT2(74)= -4.8786 - HT2(75)= -4.8896 - HT2(76)= -5.4380 - HT2(77)= -4.8061 - HT2(78)= -4.8698 - HT2(79)= -5.3332 - HT2(80)= -4.9920 - HT2(81)= -5.7928 - HT2(82)= -4.5018 - HT2(83)= -5.0903 - HT2(84)= -4.5257 - HT2(85)= -7.7428 - HT2(86)= -7.2732 - HT2(87)= -7.4847 - HT2(88)= -5.7183 - HT2(89)= -3.4279 - HT2(90)= -3.0149 -C---------- -C LOAD FORT BRAGG HT-DBH CONSTANTS -C---------- - IF(IFOR .EQ. 20)THEN - ITYPE=176 - PCOM='232BQ' - HT1(5) = 4.705 - HT2(5) = -7.904 - HT1(6) = 4.787 - HT2(6) = -8.015 - HT1(8) = 4.562 - HT2(8) = -7.314 - HT1(11) = 4.806 - HT2(11) = -9.573 - HT1(13) = 4.79 - HT2(13) = -8.5 - WRITE(JOSTND,310) - 310 FORMAT(/,T12,'ECOLOGICAL UNIT CODE CHANGED TO 232BQ FOR ', - & 'FURTHER PROCESSING OF FORT BRAGG LOCATION.') - ENDIF -C---------- -C IF FIA CODES WERE IN INPUT DATA, WRITE TRANSLATION TABLE -C--------- - IF(LFIA) THEN - CALL FIAHEAD(JOSTND) - WRITE(JOSTND,311) (NSP(I,1)(1:2),FIAJSP(I),I=1,MAXSP) - 311 FORMAT ((T12,8(A3,'=',A6,:,'; '),A,'=',A6)) - ENDIF -C---------- -C WRITE VOLUME EQUATION NUMBER TABLE -C---------- - CALL VOLEQHEAD(JOSTND) - WRITE(JOSTND,230)(NSP(J,1)(1:2),VEQNNC(J),VEQNNB(J),J=1,MAXSP) - 230 FORMAT(4(2X,A2,4X,A10,1X,A10,1X)) -C - RETURN - END diff --git a/tests/APIviaR/Rapi.R b/tests/APIviaR/Rapi.R index 7938e1bd7b521ee415081e35cd58c2c6f3bc7e6e..9717237db394604458cdf675bd4ded07986b49d8 100644 --- a/tests/APIviaR/Rapi.R +++ b/tests/APIviaR/Rapi.R @@ -21,10 +21,10 @@ fvsGetSpeciesCodes() # list supported activity codes fvsAddActivity() + ## first run fvsSetCmdLine("--keywordfile=base.key") -fvsRun(7,0) fvsRun(2,2030) fvsGetStandIDs() @@ -36,9 +36,13 @@ fvsGetEventMonitorVariables(c("myaba","another")) # get and output tree attributes fvsGetTreeAttrs(treeAttrs) +fvsSetSpeciesAttrs(list(baimult=rep(1.1,fvsGetDims()["maxspecies"]), + mortmult=rep(.9,fvsGetDims()["maxspecies"]))) + # get and set some species attributes -spAttrs = fvsGetSpeciesAttrs(c("spsdi","spccf","spsiteindx")) +spAttrs = fvsGetSpeciesAttrs(c("baimult","spsdi","spccf","spsiteindx")) spAttrs + rtn = fvsSetSpeciesAttrs(spAttrs) cat ("rtn = ",rtn,"\n") @@ -68,10 +72,10 @@ fvsRun(2,1993) addtrees <- fvsGetTreeAttrs(treeAttrs) addtrees <- subset(addtrees,dbh<2)[,c("dbh","species","ht","cratio","plot","tpa")] -# these trees will be added to the run at 2013 +cat ("these trees will be added to the run at 2013\n") addtrees -# add a yearloss and thindbh for 1993 +# add a yardloss and thindbh for 1993 fvsAddActivity(1993,"base_yardloss",c(0.50, 0.70, 0.50)) fvsAddActivity(1993,"base_thindbh",c(0.00,12.00,1.00,0.00,0.00)) @@ -82,7 +86,13 @@ fvsRun(6,2013) fvsAddTrees(addtrees) fvsGetTreeAttrs(treeAttrs) -# continue the run +# continyue the run until 2033, stoppoint 2, then simulate a harvest of 50% OF species 3 +fvsRun(2,2033) +curTrees <- fvsGetTreeAttrs(c("species")) +cut = ifelse(curTrees$species == 3, .5, 0) +fvsCutNow(cut) + +## continue the run fvsRun(0,0) #get and output summary statistics @@ -108,5 +118,15 @@ rtn = fvsInteractRun( BeforeEstab= 'testInteract("BeforeEstab")', SimEnd = 'testInteract("SimEnd ")') +## test stop point 7 +fvsSetCmdLine("--keywordfile=base.key") +fvsRun() +sp7no=fvsGetSummary() +fvsSetCmdLine("--keywordfile=base.key") +fvsRun(7,0) +fvsRun() +sp7yes=fvsGetSummary() +good=identical(sp7no,sp7yes) +cat("stop point 7 test result=",good," (should be TRUE)\n") diff --git a/tests/APIviaR/Rapi.out.save b/tests/APIviaR/Rapi.out.save index a8fa2b944fa688e468badda2c5c07fa567691102..681639dadb85072734410eda3d46025044daf08a 100644 --- a/tests/APIviaR/Rapi.out.save +++ b/tests/APIviaR/Rapi.out.save @@ -93,10 +93,10 @@ FIRE_FIRECALC FIRE_FMODLIST FIRE_DWDVLOUT FIRE_DWDCVOUT FIRE_FUELSOFT ECON_PRETEND ECON_SEVSTART ECON_SPECCST ECON_SPECRVN ECON_STRTECON 2605 2606 2607 2608 2609 > +> > ## first run > fvsSetCmdLine("--keywordfile=base.key") > -> fvsRun(7,0) > fvsRun(2,2030) > fvsGetStandIDs() $standid @@ -115,7 +115,7 @@ $caseID > # get and output some event monitor vars > fvsGetEventMonitorVariables(c("year","atpa","aba","mybba","myaba")) year atpa aba mybba myaba -2030.0000 304.4408 141.0889 168.7893 NA +2030.0000 307.2265 172.4059 193.3801 NA > fvsSetEventMonitorVariables(c("myaba"=100,"another"=40)) myaba another 100 40 @@ -125,90 +125,94 @@ $caseID > > # get and output tree attributes > fvsGetTreeAttrs(treeAttrs) - id species mort tpa dbh dg ht htg -1 2 3 10.29142189 20.4682312 1.678765 0.5866715 16.65636 4.604872 -2 1 7 0.27842575 1.6952267 15.281013 0.7665377 91.15569 5.572211 -3 3 5 0.59748030 12.7302189 16.855713 2.2833567 60.32154 9.761889 -4 4 2 1.37338877 5.0652695 11.012908 0.5496902 101.78405 7.568492 -5 6 2 1.33261085 5.0999622 11.277776 0.5611172 90.30397 7.877872 -6 7 10 1.06424570 12.8430958 12.993237 1.0930848 79.98120 11.461862 -7 8 2 1.00618315 5.1955986 12.592658 0.6805229 26.56939 7.339866 -8 9 7 0.74133623 3.4611406 13.053571 0.6513138 78.45146 5.644176 -9 10 3 2.51961565 21.2285614 9.044286 0.8614073 56.49363 9.150453 -10 11 10 0.46931779 6.3893256 14.554098 1.2434406 104.32206 10.502921 -11 12 3 2.19425249 20.2144814 6.494591 1.1192942 43.74465 8.999683 -12 13 3 2.34797287 21.3213196 7.367777 1.0106540 48.13527 9.255739 -13 15 10 6.24889994 18.3654690 3.915861 1.3710003 23.96049 6.892507 -14 16 4 1.03240430 18.6644363 13.506378 2.0913668 61.09373 11.758255 -15 17 3 0.22147359 3.2999592 16.254520 1.3114643 92.25987 8.026136 -16 18 4 0.70238388 13.9762793 15.525357 2.3892155 75.00743 12.183318 -17 19 3 0.05823968 0.8660454 19.121544 1.1642838 90.77489 7.120629 -18 21 7 0.66698068 2.9526844 12.509987 0.6474876 78.58387 5.688611 -19 22 3 0.16091673 2.6922588 17.254103 1.4688196 83.46574 8.360339 -20 23 7 1.07763290 4.5791121 11.868750 0.6292896 78.16882 5.707335 -21 24 4 0.09215502 1.8837103 19.708401 2.1484137 99.95087 10.734131 -22 25 3 0.28781253 4.3731151 16.666887 1.3094826 87.33125 8.041270 -23 26 10 2.54132724 17.8161030 7.545887 0.8644714 64.19512 13.010925 -24 27 8 3.97675920 15.3325596 1.777608 0.7810817 14.43044 4.016884 -25 28 8 0.97798365 16.0743351 11.666499 1.3415613 54.24817 7.967665 -26 29 8 1.95124960 21.8180885 8.892857 0.7949734 52.72723 7.302122 -27 30 4 0.59156483 11.6742659 15.900087 2.2676849 65.83318 11.940054 - crwdth cratio age plot tcuft mcuft bdft plotsize mgmtcd -1 5.812934 55 40 2 0.10000 0.000000 0.0000 0 2 -2 14.127638 29 40 2 53.50000 49.299999 270.0000 0 1 -3 25.903976 78 40 3 43.60001 39.500000 190.0000 0 1 -4 11.968929 19 40 3 25.50000 24.000000 130.0000 0 1 -5 12.109860 20 40 4 21.47563 20.369787 100.5915 0 2 -6 14.592689 41 40 4 29.60000 26.700001 140.0000 0 1 -7 12.245586 29 40 4 8.30000 6.000000 10.0000 0 1 -8 11.688579 21 40 4 34.20000 31.299999 170.0000 0 1 -9 11.607659 22 40 5 9.70000 8.599999 50.0000 0 1 -10 15.369819 41 40 5 48.30000 46.200001 260.0000 0 1 -11 12.252167 53 40 1 4.00000 0.000000 0.0000 0 2 -12 12.007977 38 40 1 5.60000 3.900000 20.0000 0 2 -13 7.873136 65 40 1 1.00000 0.000000 0.0000 0 3 -14 19.165800 66 40 1 23.80000 18.799999 90.0000 0 1 -15 17.957514 32 40 6 47.80000 42.299999 220.0000 0 1 -16 21.748480 76 40 6 38.80000 33.200001 170.0000 0 1 -17 19.097799 30 40 6 63.60000 59.100002 330.0000 0 1 -18 11.198975 20 40 8 31.80000 28.200001 140.0000 0 2 -19 19.492014 40 40 8 42.24366 38.055603 198.9270 0 2 -20 10.991472 21 40 8 28.70000 25.000000 130.0000 0 1 -21 24.194674 61 40 9 84.90000 74.900002 410.0000 0 1 -22 17.938925 31 40 9 47.40000 42.599998 230.0000 0 1 -23 10.376421 43 40 10 8.30000 6.800000 40.0000 0 2 -24 5.240022 65 40 10 0.20000 0.000000 0.0000 0 2 -25 13.614552 60 40 10 17.00000 14.100000 60.0000 0 1 -26 9.443884 21 40 10 10.10000 8.500000 40.0000 0 1 -27 20.606344 64 40 11 34.40000 30.200003 140.0000 0 1 + id species mort tpa dbh dg ht htg +1 2 3 5.9764795 11.703694 2.106737 0.4840353 19.31215 3.582005 +2 1 7 0.7015545 3.096018 14.819185 0.6226397 96.43296 5.118442 +3 3 5 0.9053202 14.429884 15.579575 1.8464403 68.93443 9.155409 +4 4 2 1.7551249 4.842361 10.855013 0.4708748 109.41888 6.930491 +5 6 2 1.7070651 4.814987 10.999720 0.4773073 98.38235 7.277725 +6 7 10 2.0188510 13.007945 10.952437 0.6981430 95.31825 10.164910 +7 8 2 1.4854553 5.040408 11.845120 0.5236015 34.39922 7.264559 +8 9 7 1.1431966 3.764103 12.371732 0.5262651 83.89598 5.238081 +9 10 3 3.4912140 17.712557 7.978105 0.6522441 57.41324 7.909767 +10 11 10 0.7851101 8.212758 14.027614 0.9264679 117.49553 8.883680 +11 12 3 3.1449480 16.517807 5.719432 0.8473253 41.39857 7.105887 +12 13 3 3.2801156 17.503468 6.423943 0.8108368 45.91443 7.558331 +13 15 10 5.9291925 17.425850 4.091025 0.4857495 29.02637 6.737612 +14 16 4 1.4670962 21.045235 14.144825 1.9049301 71.04697 11.335133 +15 17 3 0.4795011 5.759114 16.415119 1.1805582 100.72453 7.424264 +16 18 4 1.0276721 16.299068 16.221830 2.2305317 85.56437 11.623179 +17 19 3 0.2983986 3.596692 18.712023 1.0776949 99.11540 6.777545 +18 21 7 1.0989718 3.739047 12.503526 0.5282278 83.93179 5.231350 +19 22 3 0.4182620 5.470648 17.646286 1.2897835 92.05586 7.667734 +20 23 7 1.4380805 4.451651 11.388887 0.5319605 83.84326 5.362871 +21 24 4 0.3189368 5.191728 20.908792 2.0174351 110.28760 9.948197 +22 25 3 0.5493898 6.473873 15.777290 1.1849594 97.53134 7.675017 +23 26 10 3.8563030 16.678608 7.294916 0.6442704 67.67924 10.789137 +24 27 8 1.8950896 9.589748 2.479595 0.7722368 17.39054 3.465405 +25 28 8 1.3673648 17.241978 11.411366 1.1381159 61.82631 7.598182 +26 29 8 2.2778049 20.732975 8.370291 0.6709471 55.15468 6.729373 +27 30 4 0.8784083 13.912024 16.462238 2.0897293 76.85712 11.487197 + crwdth cratio age plot tcuft mcuft bdft plotsize mgmtcd +1 6.577499 55 40 2 0.20000 0.00000 0.0000 0 2 +2 12.835247 23 40 2 53.80000 48.80000 270.0000 0 1 +3 25.181452 72 40 3 40.70000 35.60000 190.0000 0 1 +4 11.663081 17 40 3 26.80000 24.80000 140.0000 0 1 +5 11.626649 17 40 4 21.11336 19.53453 111.1721 0 2 +6 12.463078 36 40 4 25.30000 23.60000 120.0000 0 1 +7 11.557233 23 40 4 8.60000 6.70000 30.0000 0 1 +8 10.519159 17 40 4 33.40000 30.50000 160.0000 0 1 +9 10.156955 17 40 5 7.80000 6.50000 40.0000 0 1 +10 14.609336 38 40 5 50.80000 46.70000 270.0000 0 1 +11 11.424382 53 40 1 3.00000 0.00000 0.0000 0 2 +12 11.383348 41 40 1 4.20000 0.00000 0.0000 0 2 +13 7.940616 64 40 1 1.20000 0.00000 0.0000 0 3 +14 19.808756 61 40 1 30.90000 26.70000 130.0000 0 1 +15 17.664047 29 40 6 52.90000 49.20000 280.0000 0 1 +16 22.548592 73 40 6 49.80000 44.00000 230.0000 0 1 +17 18.644283 28 40 6 66.80000 60.20000 330.0000 0 1 +18 10.591420 17 40 8 34.10000 30.50000 160.0000 0 2 +19 19.419891 37 40 8 46.01444 40.61188 220.6279 0 2 +20 9.969191 17 40 8 28.70000 26.40000 150.0000 0 1 +21 25.095003 59 40 9 107.10000 96.89999 560.0000 0 1 +22 17.106232 28 40 9 47.60000 43.40000 230.0000 0 1 +23 9.953178 40 40 10 8.20000 6.40000 40.0000 0 2 +24 6.204528 65 40 10 0.30000 0.00000 0.0000 0 2 +25 13.271747 54 40 10 18.70000 15.90000 70.0000 0 1 +26 8.891997 18 40 10 9.50000 7.70000 40.0000 0 1 +27 21.283850 60 40 11 44.20000 38.30000 190.0000 0 1 +> +> fvsSetSpeciesAttrs(list(baimult=rep(1.1,fvsGetDims()["maxspecies"]), ++ mortmult=rep(.9,fvsGetDims()["maxspecies"]))) > > # get and set some species attributes -> spAttrs = fvsGetSpeciesAttrs(c("spsdi","spccf","spsiteindx")) +> spAttrs = fvsGetSpeciesAttrs(c("baimult","spsdi","spccf","spsiteindx")) > spAttrs - spsdi spccf spsiteindx -1 841.2368 0.00000 0.00000 -2 841.2368 10.00603 0.00000 -3 841.2368 42.67542 0.00000 -4 841.2368 62.87671 0.00000 -5 841.2368 18.12446 0.00000 -6 841.2368 0.00000 0.00000 -7 841.2368 10.60415 0.00000 -8 841.2368 17.35216 0.00000 -9 841.2368 0.00000 0.00000 -10 841.2368 21.71263 0.00000 -11 841.2368 0.00000 0.00000 -12 841.2368 0.00000 0.00000 -13 841.2368 0.00000 28.33386 -14 841.2368 0.00000 0.00000 -15 841.2368 0.00000 16.00000 -16 841.2368 0.00000 13.00000 -17 841.2368 0.00000 28.33386 -18 841.2368 0.00000 60.00000 -19 841.2368 0.00000 98.00000 -20 841.2368 0.00000 60.00000 -21 841.2368 0.00000 60.00000 -22 841.2368 0.00000 98.00000 -23 841.2368 0.00000 0.00000 + baimult spsdi spccf spsiteindx +1 1.1 841.2368 0.000000 0.00000 +2 1.1 841.2368 9.027432 0.00000 +3 1.1 841.2368 48.435181 0.00000 +4 1.1 841.2368 85.434265 0.00000 +5 1.1 841.2368 17.980297 0.00000 +6 1.1 841.2368 0.000000 0.00000 +7 1.1 841.2368 12.298176 0.00000 +8 1.1 841.2368 16.629766 0.00000 +9 1.1 841.2368 0.000000 0.00000 +10 1.1 841.2368 20.217075 0.00000 +11 1.1 841.2368 0.000000 0.00000 +12 1.1 841.2368 0.000000 0.00000 +13 1.1 841.2368 0.000000 28.33386 +14 1.1 841.2368 0.000000 0.00000 +15 1.1 841.2368 0.000000 16.00000 +16 1.1 841.2368 0.000000 13.00000 +17 1.1 841.2368 0.000000 28.33386 +18 1.1 841.2368 0.000000 60.00000 +19 1.1 841.2368 0.000000 98.00000 +20 1.1 841.2368 0.000000 60.00000 +21 1.1 841.2368 0.000000 60.00000 +22 1.1 841.2368 0.000000 98.00000 +23 1.1 841.2368 0.000000 0.00000 +> > rtn = fvsSetSpeciesAttrs(spAttrs) > cat ("rtn = ",rtn,"\n") rtn = 0 @@ -229,28 +233,28 @@ rtn = 0 > # get and output summary statistics > fvsGetSummary() #year 2060 and 2070 should be equal Year Age Tpa TCuFt MCuFt BdFt RTpa RTCuFt RMCuFt RBdFt ATBA ATCCF ATTopHt -1 1990 60 536 1592 1015 5238 0 0 0 0 76 91 0 -2 2000 70 471 1422 957 4755 0 0 0 0 78 89 51 -3 2010 80 368 2316 1751 8502 0 0 0 0 108 118 62 -4 2020 90 304 3461 2778 13774 0 0 0 0 141 145 64 -5 2030 100 264 4648 3977 20191 0 0 0 0 169 167 73 -6 2040 110 228 5806 5090 26773 0 0 0 0 190 181 80 -7 2050 120 195 6876 6090 32755 0 0 0 0 204 192 91 -8 2060 130 167 7885 7098 39707 0 0 0 0 215 199 100 -9 2070 140 167 7885 7098 39707 0 0 0 0 215 199 100 -10 2080 150 138 8680 7925 46424 0 0 0 0 219 199 107 -11 2090 160 119 9579 8748 52847 0 0 0 0 226 202 115 +1 1990 60 536 1592 1015 5238 0 0 0 0 77 91 63 +2 2000 70 431 2580 1989 10253 0 0 0 0 111 127 74 +3 2010 80 358 3770 3001 15127 0 0 0 0 144 155 80 +4 2020 90 307 5019 4245 21368 0 0 0 0 172 177 84 +5 2030 100 262 6216 5385 28665 0 0 0 0 193 191 90 +6 2040 110 225 7557 6680 36638 0 0 0 0 214 205 98 +7 2050 120 194 8855 8011 45354 0 0 0 0 231 216 107 +8 2060 130 167 10058 9200 54130 0 0 0 0 244 223 114 +9 2070 140 167 10058 9200 54130 0 0 0 0 244 223 114 +10 2080 150 139 10978 10180 61885 0 0 0 0 250 225 119 +11 2090 160 121 11999 11098 69313 0 0 0 0 258 230 125 PrdLen Acc Mort SampWt ForTyp SizeCls StkCls -1 10 38 55 11 201 2 3 -2 10 102 13 11 201 2 3 -3 10 132 17 11 201 1 3 -4 10 149 31 11 201 1 2 -5 10 162 46 11 201 1 2 -6 10 169 62 11 267 1 2 -7 10 173 72 11 267 1 2 +1 10 111 12 11 201 2 3 +2 10 140 21 11 201 1 3 +3 10 162 37 11 201 1 2 +4 10 173 53 11 201 1 2 +5 10 197 63 11 267 1 2 +6 10 204 74 11 267 1 2 +7 10 206 86 11 267 1 2 8 10 0 0 11 267 1 2 -9 10 172 93 11 267 1 2 -10 10 172 82 11 267 1 2 +9 10 202 110 11 267 1 2 +10 10 200 98 11 267 1 2 11 0 0 0 11 267 1 2 > > # run the next stand in the set, no stoping. @@ -263,7 +267,8 @@ rtn = 0 > addtrees <- fvsGetTreeAttrs(treeAttrs) > addtrees <- subset(addtrees,dbh<2)[,c("dbh","species","ht","cratio","plot","tpa")] > -> # these trees will be added to the run at 2013 +> cat ("these trees will be added to the run at 2013\n") +these trees will be added to the run at 2013 > addtrees dbh species ht cratio plot tpa 1 0.1 3 2 55 2 90.00001 @@ -272,7 +277,7 @@ rtn = 0 13 0.1 10 3 65 1 90.00001 24 0.1 8 2 65 10 30.00000 > -> # add a yearloss and thindbh for 1993 +> # add a yardloss and thindbh for 1993 > fvsAddActivity(1993,"base_yardloss",c(0.50, 0.70, 0.50)) > fvsAddActivity(1993,"base_thindbh",c(0.00,12.00,1.00,0.00,0.00)) > @@ -297,10 +302,16 @@ rtn = 0 5 0.500000 65 5 1 0 0 0 0 2 6 1.187158 65 5 10 0 0 0 0 2 > -> # continue the run +> # continyue the run until 2033, stoppoint 2, then simulate a harvest of 50% OF species 3 +> fvsRun(2,2033) +> curTrees <- fvsGetTreeAttrs(c("species")) +> cut = ifelse(curTrees$species == 3, .5, 0) +> fvsCutNow(cut) +> +> ## continue the run > fvsRun(0,0) - IE FVS VARIANT -- RV:20220311 + IE FVS VARIANT -- RV:20230106 STAND = S248112 MANAGEMENT CODE = NONE @@ -313,19 +324,19 @@ rtn = 0 TREES TOP TOTAL TREES TOTAL MERCH TOP PER YR YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR ---- ----- --- --- --- ---- ----- ----- ----- ----- --- --- --- ---- --- --- -1990 536 76 0 0 0.0 1592 0 0 0 76 0 0 0.0 38 55 -2000 471 78 180 51 5.5 1422 0 0 0 78 180 51 5.5 102 13 -2010 368 108 225 62 7.4 2316 0 0 0 108 225 62 7.4 132 17 -2020 304 141 267 64 9.2 3461 0 0 0 141 267 64 9.2 149 31 -2030 264 169 300 73 10.8 4648 0 0 0 169 300 73 10.8 162 46 -2040 228 190 320 80 12.4 5806 0 0 0 190 320 80 12.4 169 62 -2050 195 204 329 91 13.9 6876 0 0 0 204 329 91 13.9 173 72 -2060 167 215 333 100 15.4 7885 0 0 0 215 333 100 15.4 0 0 -2070 167 215 333 100 15.4 7885 0 0 0 215 333 100 15.4 172 93 -2080 138 219 325 107 17.1 8680 0 0 0 219 325 107 17.1 172 82 -2090 119 226 324 115 18.6 9579 0 0 0 226 324 115 18.6 0 0 +1990 536 77 184 63 5.1 1592 0 0 0 77 184 63 5.1 111 12 +2000 431 111 236 74 6.9 2580 0 0 0 111 236 74 6.9 140 21 +2010 358 144 281 80 8.6 3770 0 0 0 144 281 80 8.6 162 37 +2020 307 172 314 84 10.1 5019 0 0 0 172 314 84 10.1 173 53 +2030 262 193 334 90 11.6 6216 0 0 0 193 334 90 11.6 197 63 +2040 225 214 352 98 13.2 7557 0 0 0 214 352 98 13.2 204 74 +2050 194 231 364 107 14.8 8855 0 0 0 231 364 107 14.8 206 86 +2060 167 244 369 114 16.4 10058 0 0 0 244 369 114 16.4 0 0 +2070 167 244 369 114 16.4 10058 0 0 0 244 369 114 16.4 202 110 +2080 139 250 361 119 18.2 10978 0 0 0 250 361 119 18.2 200 98 +2090 121 258 361 125 19.8 11999 0 0 0 258 361 125 19.8 0 0 - IE FVS VARIANT -- RV:20220311 + IE FVS VARIANT -- RV:20230106 STAND = S248112 MANAGEMENT CODE = NONE @@ -350,7 +361,7 @@ YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR 2080 114 241 338 126 19.7 11058 0 0 0 241 338 126 19.7 181 99 2090 99 246 335 133 21.3 11880 0 0 0 246 335 133 21.3 0 0 - IE FVS VARIANT -- RV:20220311 + IE FVS VARIANT -- RV:20230106 STAND = S248112 MANAGEMENT CODE = NONE @@ -367,9 +378,9 @@ YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR 2000 4 5 7 77 14.6 130 0 0 0 5 7 77 14.6 5 0 2010 4 6 9 85 16.3 172 0 0 0 6 9 85 16.3 5 1 2020 249 7 24 21 2.3 216 0 0 0 7 24 21 2.3 30 0 -2030 233 26 64 44 4.5 514 0 0 0 26 64 44 4.5 96 1 -2040 218 59 125 64 7.1 1469 0 0 0 59 125 64 7.1 158 4 -2050 212 99 188 78 9.3 3011 0 0 0 99 188 78 9.3 186 14 +2030 233 26 64 44 4.5 514 65 204 700 17 44 37 4.3 82 0 +2040 158 44 92 64 7.1 1131 0 0 0 44 92 64 7.1 150 2 +2050 155 78 146 83 9.6 2610 0 0 0 78 146 83 9.6 174 9 > > #get and output summary statistics > fvsGetSummary() @@ -378,25 +389,25 @@ YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR 2 2000 70 4 130 116 562 0 0 0 0 5 5 77 3 2010 80 4 172 151 782 0 0 0 0 6 5 85 4 2020 90 249 216 197 1060 0 0 0 0 7 8 21 -5 2030 100 233 514 247 1400 0 0 0 0 26 30 44 -6 2040 110 218 1469 1110 7048 0 0 0 0 59 65 64 -7 2050 120 212 3011 2420 12446 0 0 0 0 99 104 78 -8 2060 130 203 4730 4344 22552 0 0 0 0 137 135 88 -9 2070 140 190 6395 5832 31023 0 0 0 0 170 160 96 -10 2080 150 176 7904 7021 38959 0 0 0 0 195 173 104 -11 2090 160 161 9230 8554 47889 0 0 0 0 214 182 111 +5 2030 100 233 514 247 1400 65 204 124 700 17 19 37 +6 2040 110 158 1131 917 5293 0 0 0 0 44 46 64 +7 2050 120 155 2610 2209 12334 0 0 0 0 78 79 83 +8 2060 130 150 4267 3768 21201 0 0 0 0 112 103 94 +9 2070 140 143 6009 5622 31104 0 0 0 0 144 125 105 +10 2080 150 134 7649 7018 39512 0 0 0 0 170 141 114 +11 2090 160 125 9143 8624 50051 0 0 0 0 192 152 122 PrdLen Acc Mort SampWt ForTyp SizeCls StkCls 1 10 4 0 11 201 2 3 2 10 5 0 11 999 5 5 3 10 5 1 11 999 5 5 4 10 30 0 11 999 5 5 -5 10 96 1 11 201 3 4 -6 10 158 4 11 201 2 4 -7 10 186 14 11 201 1 3 -8 10 196 30 11 201 1 2 -9 10 199 48 11 201 1 2 -10 10 197 65 11 201 1 2 -11 0 0 0 11 201 1 2 +5 10 82 0 11 201 3 4 +6 10 150 2 11 221 2 4 +7 10 174 9 11 221 1 3 +8 10 195 21 11 221 1 3 +9 10 200 36 11 221 1 2 +10 10 201 52 11 221 1 2 +11 0 0 0 11 221 1 2 > > # continue the run for the next stand. > fvsRun() @@ -496,12 +507,12 @@ msg= BeforeEM2 ids= S248112 NONE year= 2010 msg= AfterEM2 ids= S248112 NONE year= 2010 msg= BeforeAdd ids= S248112 NONE year= 2010 msg= BeforeEstab ids= S248112 NONE year= 2010 -2060 203 137 241 88 11.1 4730 0 0 0 137 241 88 11.1 196 30 -2070 190 170 282 96 12.8 6395 0 0 0 170 282 96 12.8 199 48 -2080 176 195 310 104 14.3 7904 0 0 0 195 310 104 14.3 197 65 -2090 161 214 329 111 15.6 9230 0 0 0 214 329 111 15.6 0 0 +2060 150 112 194 94 11.7 4267 0 0 0 112 194 94 11.7 195 21 +2070 143 144 234 105 13.6 6009 0 0 0 144 234 105 13.6 200 36 +2080 134 170 265 114 15.3 7649 0 0 0 170 265 114 15.3 201 52 +2090 125 192 287 122 16.8 9143 0 0 0 192 287 122 16.8 0 0 - IE FVS VARIANT -- RV:20220311 + IE FVS VARIANT -- RV:20230106 STAND = S248112 MANAGEMENT CODE = NONE @@ -526,7 +537,7 @@ YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR 2080 114 241 338 126 19.7 11058 0 0 0 241 338 126 19.7 181 99 2090 99 246 335 133 21.3 11880 0 0 0 246 335 133 21.3 0 0 - IE FVS VARIANT -- RV:20220311 + IE FVS VARIANT -- RV:20230106 STAND = S248112 MANAGEMENT CODE = NONE @@ -551,7 +562,7 @@ YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR 2080 116 240 339 125 19.5 11212 0 0 0 240 339 125 19.5 180 101 2090 101 244 334 131 21.1 12010 0 0 0 244 334 131 21.1 0 0 - IE FVS VARIANT -- RV:20220311 + IE FVS VARIANT -- RV:20230106 STAND = S248112 MANAGEMENT CODE = NONE @@ -611,6 +622,17 @@ msg= BeforeAdd ids= S248112 NONE year= 2080 msg= BeforeEstab ids= S248112 NONE year= 2080 msg= SimEnd ids= S248112 NONE year= 2080 > +> ## test stop point 7 +> fvsSetCmdLine("--keywordfile=base.key") +> fvsRun() +> sp7no=fvsGetSummary() +> fvsSetCmdLine("--keywordfile=base.key") +> fvsRun(7,0) +> fvsRun() +> sp7yes=fvsGetSummary() +> good=identical(sp7no,sp7yes) +> cat("stop point 7 test result=",good," (should be TRUE)\n") +stop point 7 test result= TRUE (should be TRUE) > > > @@ -622,3 +644,53 @@ msg= SimEnd ids= S248112 NONE year= 2080 2070 131 236 342 120 18.1 10213 0 0 0 236 342 120 18.1 181 97 2080 114 241 338 126 19.7 11058 0 0 0 241 338 126 19.7 181 99 2090 99 246 335 133 21.3 11880 0 0 0 246 335 133 21.3 0 0 + + IE FVS VARIANT -- RV:20230106 + + + STAND = S248112 MANAGEMENT CODE = NONE + + + SUMMARY STATISTICS (BASED ON TOTAL STAND AREA) +---------------------------------------------------------------------------- + START OF SIMULATION PERIOD REMOVALS/ACRE AFTER TREATMENT GROWTH + ---------------------------- ----------------- ---------------- CU FT + TREES TOP TOTAL TREES TOTAL MERCH TOP PER YR +YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR +---- ----- --- --- --- ---- ----- ----- ----- ----- --- --- --- ---- --- --- +1990 536 77 184 63 5.1 1592 0 0 0 77 184 63 5.1 111 12 +2000 431 111 236 74 6.9 2580 0 0 0 111 236 74 6.9 140 21 +2010 358 144 281 80 8.6 3770 0 0 0 144 281 80 8.6 162 37 +2020 307 172 314 84 10.1 5019 0 0 0 172 314 84 10.1 173 53 +2030 262 193 334 90 11.6 6216 0 0 0 193 334 90 11.6 182 68 +2040 221 209 344 97 13.2 7351 0 0 0 209 344 97 13.2 186 80 +2050 187 220 347 106 14.7 8418 0 0 0 220 347 106 14.7 188 88 +2060 159 229 346 113 16.3 9422 0 0 0 229 346 113 16.3 187 94 +2070 135 235 343 119 17.9 10352 0 0 0 235 343 119 17.9 184 98 +2080 116 240 339 125 19.5 11212 0 0 0 240 339 125 19.5 180 101 +2090 101 244 334 131 21.1 12010 0 0 0 244 334 131 21.1 0 0 + + IE FVS VARIANT -- RV:20230106 + + + STAND = S248112 MANAGEMENT CODE = NONE + + + SUMMARY STATISTICS (BASED ON TOTAL STAND AREA) +---------------------------------------------------------------------------- + START OF SIMULATION PERIOD REMOVALS/ACRE AFTER TREATMENT GROWTH + ---------------------------- ----------------- ---------------- CU FT + TREES TOP TOTAL TREES TOTAL MERCH TOP PER YR +YEAR /ACRE BA SDI HT QMD CU FT /ACRE CU FT BD FT BA SDI HT QMD ACC MOR +---- ----- --- --- --- ---- ----- ----- ----- ----- --- --- --- ---- --- --- +1990 536 77 184 63 5.1 1592 0 0 0 77 184 63 5.1 111 12 +2000 431 111 236 74 6.9 2580 0 0 0 111 236 74 6.9 140 21 +2010 358 144 281 80 8.6 3770 0 0 0 144 281 80 8.6 162 37 +2020 307 172 314 84 10.1 5019 0 0 0 172 314 84 10.1 173 53 +2030 262 193 334 90 11.6 6216 0 0 0 193 334 90 11.6 182 68 +2040 221 209 344 97 13.2 7351 0 0 0 209 344 97 13.2 186 80 +2050 187 220 347 106 14.7 8418 0 0 0 220 347 106 14.7 188 88 +2060 159 229 346 113 16.3 9422 0 0 0 229 346 113 16.3 187 94 +2070 135 235 343 119 17.9 10352 0 0 0 235 343 119 17.9 184 98 +2080 116 240 339 125 19.5 11212 0 0 0 240 339 125 19.5 180 101 +2090 101 244 334 131 21.1 12010 0 0 0 244 334 131 21.1 0 0 diff --git a/tests/FVSie/iet01.key b/tests/FVSie/iet01.key index 7a641b9afabab44ddf24c1426f26e19877d4554a..946e4257ea659f967bb0203f483afabdf91d18f9 100644 --- a/tests/FVSie/iet01.key +++ b/tests/FVSie/iet01.key @@ -121,6 +121,8 @@ MistPrt 1. MisTable 0. ALL End THINPRSC 1990.0 0.999 +* this thinpres should cause an error +THINPRSC 1990.0 -1 SPECPREF 2020.0 2.0 999.0 SPECPREF 2020.0 7.0 9999.0 THINBTA 2020.0 157.0 diff --git a/vbase/evtstv.f b/vbase/evtstv.f index e7bacbe9901c3061ceb4ec4baac903fc6db645ae..54763dd943c7a62237342121ca4f17c5e27639bc 100644 --- a/vbase/evtstv.f +++ b/vbase/evtstv.f @@ -86,6 +86,7 @@ C 115 BSDIMAX BEFORE THIN SDI MAX C 116 BSDI BEFORE CUT STAND DENSITY INDEX. C 117 BRDEN BEFORE CUT RELATIVE DENSITY (CURTIS) C 118 BRDEN2 BEFORE CUT RELATIVE DENSITY (SILVAH) +C 119 BHTWTBA BEFORE THIN HEIGHT WEIGHTED BY BA C C 126 HABTYPE STAND HABITAT TYPE AS USED BY THE MODEL. C 127 SLOPE STAND SLOPE CODE (RECODED FROM INPUT). @@ -135,6 +136,7 @@ C 215 ARDEN AFTER THIN RELATIVE DENSITY (CURTIS) C 216 ADBHWTBA AFTER CUT AVERAGE DBH OF OVERSTORY TREES (FOR INFORMS) C 217 ARDEN2 AFTER THIN RELATIVE DENSITY (SILVAH) C 218 ASDI2 ZEIDE SUMMATION AFTER THIN STAND DENSITY INDEX +c 219 AHTWTBA AFTER THIN HEIGHT WEIGHTED BY BA C C GROUP 3, THOSE KNOWN AFTER CYCLE 1. C @@ -245,6 +247,7 @@ C DO 6 I=1,MAXSP BCCFSP(I)=RELDSP(I) 6 CONTINUE + TSTV1(19)=0 !initialize so debug output is consistent. IF (ICYC.LE.1) THEN TSTV1(27)=ISLOP TSTV1(28)=IASPEC @@ -395,6 +398,14 @@ C---------- 60 CONTINUE TSTV1(47)=0. IF(BA.GT.0.0 .AND. GROSPC.GT.0.0) TSTV1(47)=(TADWBA/BA) +C Add logic for BHTWTBA + TADWBA=0. + DO I=1,ITRN + TADWBA = TADWBA + HT(I)*(DBH(I)**2)*0.0054542*PROB(I) + END DO + TSTV1(19)=0 + IF(BA.GT.0.0 .AND. GROSPC.GT.0.0) TSTV1(19)=(TADWBA/BA) + C---------- C C IF PAST CYCLE 1, SET GROUP 3 VARIABLES, THOSE KNOWN IN PHASE 1, @@ -477,6 +488,13 @@ C IF(BA.GT.0.0 .AND. GROSPC.GT.0.0)TSTV2(16)=(TADWBA/BA) CALL RDCLS2(0,0.,999.,1,CRD,0) TSTV2(17)=CRD/GROSPC +C Add logic for AHTWTBA here + TADWBA = 0. + DO I=1,ITRN + TADWBA = TADWBA + HT(I)*(DBH(I)**2)*0.0054542*PROB(I) + END DO + TSTV2(19)=0 + IF(BA.GT.0.0 .AND. GROSPC .GT. 0.0)TSTV2(19)=(TADWBA/BA) C C LOAD GROUP 5 VARIABLES. C diff --git a/vbase/initre.f b/vbase/initre.f index 450c47dd775dab1d955dec642d2c43c47c24e872..f075f12ec0f4f6d80c8479f5c5f586b6c6d1b929 100644 --- a/vbase/initre.f +++ b/vbase/initre.f @@ -399,7 +399,7 @@ C > '; HABITAT TYPE=',I3, > '; AGE=',I5,'; ASPECT AZIMUTH IN DEGREES= ',F4.0, > '; SLOPE= ' ,F4.0,'%'/ - > T12,'ELEVATION(10''S FEET)=',F5.1,'; REFERENCE CODE= ',A4) + > T12,'ELEVATION(100''S FEET)=',F5.1,'; REFERENCE CODE= ',A4) C CASE ('SN') WRITE(JOSTND,135) KODFOR,PCOM, @@ -869,7 +869,7 @@ C > '; HABITAT TYPE=',I3, > '; AGE=',I5,'; ASPECT AZIMUTH IN DEGREES= ',F4.0, > '; SLOPE= ',F4.0,'%'/ - > T12,'ELEVATION(10''S FEET)=',F5.1,'; REFERENCE CODE= ',A4) + > T12,'ELEVATION(100''S FEET)=',F5.1,'; REFERENCE CODE= ',A4) C CASE ('SN') IF(LKECHO)WRITE(JOSTND,2413) KEYWRD,KODFOR,PCOM, @@ -1112,6 +1112,11 @@ C ENDIF PRMS(1)=EFF IF (LNOTBK(2)) PRMS(1)=ARRAY(2) + IF (PRMS(1).LT.0.) THEN + CALL KEYDMP (JOSTND,IRECNT,KEYWRD,ARRAY,KARD) + CALL ERRGRO (.TRUE.,4) + GOTO 10 + ENDIF IF (LNOTBK(3)) THEN PRMS(2)=ARRAY(3) I=2 diff --git a/vbase/revise.f b/vbase/revise.f index 083b7db9e5ea2a60c26c4377bdb15a6e0db95cea..027f8591b0e88019ae79e31c62cc79500c5cc289 100644 --- a/vbase/revise.f +++ b/vbase/revise.f @@ -18,117 +18,140 @@ C---------- C SOUTHEAST ALASKA / COASTAL BRITISH COLUMBIA C---------- CASE('AK') - REV = '20230106.1' + REV = '20230518' + C---------- C BLUE MOUNTAINS C---------- CASE('BM') - REV = '20230106.1' + REV = '20230518' + C---------- C INLAND CALIFORNIA / SOUTHERN CASCADES C---------- CASE('CA') - REV = '20230106.1' + REV = '20230518' + C---------- C CENTRAL IDAHO C---------- CASE('CI') - REV = '20230106.1' + REV = '20230518' + C---------- C CENTRAL ROCKIES C---------- CASE('CR') - REV = '20230106.1' + REV = '20230518' + C---------- C CENTRAL STATES C---------- CASE('CS') - REV = '20230106.1' + REV = '20230518' + C---------- C EAST CASCADES C---------- CASE('EC') - REV = '20230106.1' + REV = '20230518' + C---------- C EASTERN MONTANA C---------- CASE('EM') - REV = '20230106.1' + REV = '20230518' + C---------- C INLAND EMPIRE (AKA NI23) C---------- CASE('IE') - REV = '20230106.1' + REV = '20230518' + C---------- C KOOTENAI / KANIKSU / TALLY LAKE C---------- CASE('KT') - REV = '20230106.1' + REV = '20230518' + C---------- C LAKE STATES C---------- CASE('LS') - REV = '20230106.1' + REV = '20230518' + C---------- C KLAMATH MOUNTAINS C---------- CASE('NC') - REV = '20230106.1' + REV = '20230518' + C---------- C NORTHEAST STATES C---------- CASE('NE') - REV = '20230106.1' + REV = '20230518' + C---------- C SOUTHWEST OREGON ORGANON C---------- CASE('OC') - REV = '20230106.1' + REV = '20230518' + C---------- C NORTHWEST OREGON ORGANON C---------- CASE('OP') - REV = '20230106.1' + REV = '20230518' + C---------- C PACIFIC NORTHWEST C---------- CASE('PN') - REV = '20230106.1' + REV = '20230518' + C---------- C SOUTHERN C---------- CASE('SN') - REV = '20230106.1' + REV = '20230518' + C---------- C SOUTH CENTRAL OREGON / NORTHEAST CALIFORNIA C---------- CASE('SO') - REV = '20230106.1' + REV = '20230518' + C---------- C TETONS C---------- CASE('TT') - REV = '20230106.1' + REV = '20230518' + C---------- C UTAH C---------- CASE('UT') - REV = '20230106.1' + REV = '20230518' + C---------- C WEST CASCADES C---------- CASE('WC') - REV = '20230106.1' + REV = '20230518' + C---------- C WESTERN SIERRA NEVADA C---------- CASE('WS') - REV = '20230106.1' + REV = '20230518' + C---------- C ANY OTHER VARIANT C---------- CASE DEFAULT - REV = '20230106.1' + REV = '20230518' + C END SELECT C diff --git a/vvolume/fvsvol.f b/vvolume/fvsvol.f index 54fc821deb73b1d61e95d6a9f757f9c1f6c08e8d..660d07abfc8e160f84657c93b45b74e164ac003f 100644 --- a/vvolume/fvsvol.f +++ b/vvolume/fvsvol.f @@ -37,7 +37,7 @@ C---------- REAL FC,DBTBH,TVOL1,TVOL2,TVOL4,TVOL7,TDIBB,TDIBC REAL NOLOGP,NOLOGS REAL BOLHT(21),LOGLEN(20),TVOL(15) - REAL HT1PRD,HT2PRD,X1,MTOPP,MTOPS,STUMP,TOPDIAM + REAL HT1PRD,HT2PRD,MTOPP,MTOPS,STUMP,TOPDIAM REAL XTOPD,HTC1,HTC2 REAL DRCOB,UPSHT1,UPSHT2,UPSD1,UPSD2,AVGZ1,AVGZ2 LOGICAL TKILL,CTKFLG,BTKFLG,LCONE,DEBUG @@ -173,7 +173,6 @@ C I1=0 ! no longer in use a.o. 10/28/2022 to prevent address space poll I15=15 ! Dimension of VOL(x) array I20=20 ! second dimension of LOGVOL(,x) array, dimension of LOGLEN(x) I21=21 ! first dimension of LOGDIA(x,) array, dimension of BOLHT(x) -C X1=0. ! no longer in use a.o. 10/28/2022 to prevent address space pollution C Initialize independant volinit variables to prevent shared address space HTLOG = 0 ! Replaces I1 in position 11 of volinit call @@ -248,8 +247,8 @@ C & 'CALLING VOLINIT CF ISPC,IREGN,FORST,VOLEQ = ', & ISPC,IREGN,FORST,VOLEQ IF(DEBUG)WRITE(JOSTND,*) - & ' TOPDIAM,MTOPS,STUMP,D,X1,HTTYPE,H,I1 = ', - & TOPDIAM,MTOPS,STUMP,D,X1,HTTYPE,H,I1 + & ' TOPDIAM,MTOPS,STUMP,D,DRCOB,HTTYPE,H,I1 = ', + & TOPDIAM,MTOPS,STUMP,D,DRCOB,HTTYPE,H,I1 IF(DEBUG)WRITE(JOSTND,*)' HT1PRD,HT2PRD,IFC,DBTBH,BARK = ', & HT1PRD,HT2PRD,IFC,DBTBH,BARK IF(DEBUG)WRITE(JOSTND,*)' CUTFLG,BFPFLG,CUPFLG,CDPFLG,SPFLG = ', @@ -352,7 +351,6 @@ C I1=0 ! no longer in use a.o. 10/28/2022 to prevent address space polluti I15=15 I20=20 I21=21 -C X1=0. ! no longer in use a.o. 10/28/2022 to prevent address space pollution C Initialize independant volinit variables to prevent shared address space HTLOG = 0 ! Replaces I1 in position 11 of volinit call @@ -410,8 +408,8 @@ C CONSTANTS & 'CALLING VOLINIT BF ISPC,IREGN,FORST,VOLEQ = ', & ISPC,IREGN,FORST,VOLEQ IF(DEBUG)WRITE(JOSTND,*) - & ' MTOPP,MTOPS,STUMP,D,X1,HTTYPE,H,I1 = ', - & MTOPP,MTOPS,STUMP,D,X1,HTTYPE,H,I1 + & ' MTOPP,MTOPS,STUMP,D,DRCOB,HTTYPE,H,I1 = ', + & MTOPP,MTOPS,STUMP,D,DRCOB,HTTYPE,H,I1 IF(DEBUG)WRITE(JOSTND,*)' HT1PRD,HT2PRD,IFC,DBTBH,BARK = ', & HT1PRD,HT2PRD,IFC,DBTBH,BARK IF(DEBUG)WRITE(JOSTND,*)' CUTFLG,BFPFLG,CUPFLG,CDPFLG,SPFLG = ',