- STELLA EQUATIONS -


The following equations represent the model documented in this paper. These equations were parsed by the translation software to run in conjunction with the immigration algorithm within a parrallel processing environment.


 

BROOD_DESIRE = IF (F_SG_EGGS_1+F_SG_EGGS_2 > 0) THEN .1
ELSE IF (F_SG_JUVENILES > 0) THEN .4
ELSE 1
DOCUMENT:  Units = 0-1 factor representing relative desire to remain in the current location based on maternal instincts.

DESIRE_TO_MIGRATE = (1-GENERAL_ATTRACTION) * MAX(0.0,NESTING_DESIRE * BROOD_DESIRE - NOISE_FACTOR)
GENERAL_ATTRACTION = SNOW_COVER_FACTOR*SAGE_BRUSH_FACTOR*NOISE_FACTOR
DOCUMENT:  Units =  0-1 index measuring the attraction of a cell to the grouse.   0 = unattractive and 1 = attractive.  

LEK_ATTRACTION = CV_LEK_DIST*MALES_ON_LEK
DOCUMENT:  This equation presumes that attractiveness increases as the noise from the Lek increases - which itself is simply presumed to be a linear function of the number of males on the lek and the distance to the lek.   This ignores any internal driving motivation based on hormonal states within the females.

MALES_ON_LEK = GRAPH(CV_WEEK)
(4.00, 0.00), (5.00, 9.50), (6.00, 26.0), (7.00, 54.5), (8.00, 82.5), (9.00, 100), (10.0, 68.0), (11.0, 99.5), (12.0, 86.5), (13.0, 53.0), (14.0, 24.5), (15.0, 10.0), (16.0, 0.00) 
DOCUMENT:  Units = Total number of males expected on the lek.  

NESTING_DESIRE = GRAPH(F_SG_PREGNANT)
(0.00, 1.00), (1.00, 1.00), (2.00, 0.915), (3.00, 0.705), (4.00, 0.505), (5.00, 0.38), (6.00, 0.29), (7.00, 0.225), (8.00, 0.205), (9.00, 0.185), (10.0, 0.185) 
DOCUMENT:  Units = 0-1 factor representing the desire of the  female to remain in her current position based on the point she is in her pregnancy.  

NOISE_FACTOR = GRAPH(CVH_NOISE_INDEX)
(0.00, 1.00), (0.1, 0.97), (0.2, 0.895), (0.3, 0.65), (0.4, 0.36), (0.5, 0.185), (0.6, 0.075), (0.7, 0.045), (0.8, 0.025), (0.9, 0.01), (1, 0.00) 
DOCUMENT:  Units = 0-1 factor representing noise as a function of military exercises in the cell.

SAGE_BRUSH_FACTOR = GRAPH(CVP_SAGEBRUSH)
(0.00, 0.1), (3.00, 0.13), (6.00, 0.2), (9.00, 0.465), (12.0, 0.775), (15.0, 0.905), (18.0, 0.96), (21.0, 0.985), (24.0, 0.995), (27.0, 0.995), (30.0, 1.00) 
DOCUMENT:  Units = 0-1 factor representing migration desire as a function of sage brush densities.

SNOW_COVER_FACTOR = GRAPH(CVS_SNOW)
(0.00, 1.00), (1.80, 0.96), (3.60, 0.825), (5.40, 0.465), (7.20, 0.29), (9.00, 0.195), (10.8, 0.135), (12.6, 0.09), (14.4, 0.05), (16.2, 0.025), (18.0, 0.00) 
DOCUMENT:  Units = 0-1 index measuring the  desire to migrate as a function of snow depth.  

CVH_COMPACTION = SOIL_COMPACTION_INDEX
DOCUMENT:  Units= percent of land compacted

CVH_NOISE_INDEX = NOISE_INDEX
DOCUMENT:  Units = ranges from 0 (no noise) to 1 (full noise impact)

CVH_VEG_DAMAGE_INDEX = VEG_DAMAGE
DOCUMENT:  Units =  value that ranges from 0 (no damage) to 1000 (complete damage).  

CVP_AGROPYRON = AG_COVER
DOCUMENT:  Units = percent cover of Agropyron Spicatum

CVP_FORB = FB_COVER
DOCUMENT:  Units = percent cover of forbs

CVP_SAGEBRUSH = SB_COVER
DOCUMENT:  Units = percent cover of sagebrush

CVS_SNOW = SM_SNOW_PAC
DOCUMENT:  Units = millimeters of water stored in the snow.  

CVS_SOIL_MOISTURE = AVAILABLE_SOIL_MOISTURE
DOCUMENT:   Units = millimeters

CVS_TEMPERATURE = SM_TEMPERATURE
CV_ASPECT = 180
DOCUMENT:  Units = degrees

CV_ELEVATION = 800
DOCUMENT:  Units = meters above sea level

CV_ENCAMP_HR = 2000
DOCUMENT:  Units =  personnel encampment hours per 100 hectares per exercise.

CV_LEK_DIST = 100
DOCUMENT:  Units = meters 

CV_SLOPE = 1
DOCUMENT:  Units = degrees of incline

CV_SOIL_PERM = 0
DOCUMENT:  Soil permeability in ? units

CV_TRAK_VEH_HR = 10
DOCUMENT:  Units = moving tracked vehicle hours per 100 hectares per exercise

CV_TROOP_HR = 100
DOCUMENT:   Units = active troop hours per 100 hectares per exercise

CV_UTRAK_VEH_HR = 10
DOCUMENT:  Units = moving untracked vehicle hours per 100 hectares per exercise

CV_WATER_HOLDING_CAPACITY = 45.0
DOCUMENT:  Units = millimeters of water in the first 15 centimeters of soil with 100% saturation.

CV_WEEK = MOD(TIME,52)
DOCUMENT:  Units = weeks

CV_WETNESS_INDEX = 1.0
DOCUMENT:  Units = constant   

FIRE_DAMAGE = 0
DOCUMENT:  Units = 1 (fire) or 0 (no fire)

TEST_AGROPYRON = GRAPH(MOD(TIME,52))
(0.00, 30.0), (1.00, 30.0), (2.00, 30.0), (3.00, 30.0), (4.00, 30.0), (5.00, 30.0), (6.00, 30.0), (7.00, 30.0), (8.00, 30.0), (9.00, 30.0), (10.0, 30.0), (11.0, 29.9), (12.0, 29.9), (13.0, 29.9), (14.0, 29.9), (15.0, 29.9), (16.0, 29.9), (17.0, 29.9), (18.0, 29.9), (19.0, 29.9), (20.0, 29.9), (21.0, 29.9), (22.0, 29.9), (23.0, 29.9), (24.0, 29.9), (25.0, 29.9), (26.0, 29.9), (27.0, 29.9), (28.0, 29.9), (29.0, 29.9), (30.0, 29.9), (31.0, 29.9), (32.0, 29.9), (33.0, 29.9), (34.0, 29.9), (35.0, 29.9), (36.0, 29.9), (37.0, 29.9), (38.0, 29.9), (39.0, 29.9), (40.0, 29.9), (41.0, 29.9), (42.0, 29.9), (43.0, 29.9), (44.0, 29.9), (45.0, 29.8), (46.0, 29.8), (47.0, 29.8), (48.0, 29.8), (49.0, 29.8), (50.0, 29.8), (51.0, 29.8) 
DOCUMENT:  Units = Time vs. cover

TEST_COMPACTION = GRAPH(MOD(TIME,52))
(0.00, 0.00), (1.00, 0.00), (2.00, 0.00), (3.00, 0.00), (4.00, 0.00), (5.00, 0.00), (6.00, 0.00), (7.00, 0.00), (8.00, 0.00), (9.00, 0.00), (10.0, 0.00), (11.0, 0.71), (12.0, 0.71), (13.0, 0.7), (14.0, 0.69), (15.0, 0.69), (16.0, 0.68), (17.0, 0.67), (18.0, 0.67), (19.0, 0.66), (20.0, 0.65), (21.0, 0.65), (22.0, 0.64), (23.0, 0.63), (24.0, 0.63), (25.0, 0.62), (26.0, 0.61), (27.0, 0.61), (28.0, 0.6), (29.0, 0.6), (30.0, 0.59), (31.0, 0.58), (32.0, 0.58), (33.0, 0.57), (34.0, 0.57), (35.0, 0.56), (36.0, 0.56), (37.0, 0.55), (38.0, 0.54), (39.0, 0.54), (40.0, 0.53), (41.0, 0.53), (42.0, 0.52), (43.0, 0.52), (44.0, 0.51), (45.0, 0.51), (46.0, 0.5), (47.0, 0.5), (48.0, 0.49), (49.0, 0.49), (50.0, 0.48), (51.0, 0.48) 
DOCUMENT:  Units = time vs. compaction 

TEST_FORB = GRAPH(MOD(TIME,52))
(0.00, 6.00), (1.00, 5.99), (2.00, 5.98), (3.00, 5.97), (4.00, 5.95), (5.00, 5.94), (6.00, 5.93), (7.00, 5.92), (8.00, 5.91), (9.00, 5.90), (10.0, 5.89), (11.0, 5.87), (12.0, 5.86), (13.0, 5.85), (14.0, 5.84), (15.0, 5.82), (16.0, 5.81), (17.0, 5.80), (18.0, 5.79), (19.0, 5.78), (20.0, 5.77), (21.0, 5.76), (22.0, 5.75), (23.0, 5.74), (24.0, 5.72), (25.0, 5.71), (26.0, 5.70), (27.0, 5.69), (28.0, 5.68), (29.0, 5.67), (30.0, 5.66), (31.0, 5.65), (32.0, 5.64), (33.0, 5.63), (34.0, 5.61), (35.0, 5.60), (36.0, 5.59), (37.0, 5.58), (38.0, 5.57), (39.0, 5.56), (40.0, 5.55), (41.0, 5.54), (42.0, 5.53), (43.0, 5.52), (44.0, 5.51), (45.0, 5.50), (46.0, 5.49), (47.0, 5.48), (48.0, 5.47), (49.0, 5.46), (50.0, 5.44), (51.0, 5.43) 
DOCUMENT:  Units = time vs. cover

TEST_NOISE = GRAPH(MOD(TIME,52))
(0.00, 0.00), (1.00, 0.00), (2.00, 0.00), (3.00, 0.00), (4.00, 0.00), (5.00, 0.00), (6.00, 0.00), (7.00, 0.00), (8.00, 0.00), (9.00, 0.00), (10.0, 1.00), (11.0, 0.00), (12.0, 0.00), (13.0, 0.00), (14.0, 0.00), (15.0, 0.00), (16.0, 0.00), (17.0, 0.00), (18.0, 0.00), (19.0, 0.00), (20.0, 0.00), (21.0, 0.00), (22.0, 0.00), (23.0, 0.00), (24.0, 0.00), (25.0, 0.00), (26.0, 0.00), (27.0, 0.00), (28.0, 0.00), (29.0, 0.00), (30.0, 0.00), (31.0, 0.00), (32.0, 0.00), (33.0, 0.00), (34.0, 0.00), (35.0, 0.00), (36.0, 0.00), (37.0, 0.00), (38.0, 0.00), (39.0, 0.00), (40.0, 0.00), (41.0, 0.00), (42.0, 0.00), (43.0, 0.00), (44.0, 0.00), (45.0, 0.00), (46.0, 0.00), (47.0, 0.00), (48.0, 0.00), (49.0, 0.00), (50.0, 0.00), (51.0, 0.00) 
DOCUMENT:  Units = time vs. noise

TEST_SAGEBRUSH = GRAPH(MOD(TIME,52))
(0.00, 18.0), (1.00, 18.0), (2.00, 18.0), (3.00, 18.0), (4.00, 18.0), (5.00, 18.0), (6.00, 18.0), (7.00, 17.9), (8.00, 17.9), (9.00, 17.9), (10.0, 17.9), (11.0, 17.9), (12.0, 17.9), (13.0, 17.9), (14.0, 17.9), (15.0, 17.9), (16.0, 17.9), (17.0, 17.9), (18.0, 17.9), (19.0, 17.9), (20.0, 17.9), (21.0, 17.8), (22.0, 17.8), (23.0, 17.8), (24.0, 17.8), (25.0, 17.8), (26.0, 17.8), (27.0, 17.8), (28.0, 17.8), (29.0, 17.8), (30.0, 17.8), (31.0, 17.8), (32.0, 17.8), (33.0, 17.8), (34.0, 17.8), (35.0, 17.7), (36.0, 17.7), (37.0, 17.7), (38.0, 17.7), (39.0, 17.7), (40.0, 17.7), (41.0, 17.7), (42.0, 17.7), (43.0, 17.7), (44.0, 17.7), (45.0, 17.7), (46.0, 17.7), (47.0, 17.7), (48.0, 17.7), (49.0, 17.6), (50.0, 17.6), (51.0, 17.6) 
DOCUMENT:  Units = time vs. cover

TEST_SNOW = GRAPH(MOD(TIME,52))
(0.00, 30.0), (1.00, 29.4), (2.00, 28.4), (3.00, 26.7), (4.00, 24.8), (5.00, 22.2), (6.00, 19.8), (7.00, 17.4), (8.00, 13.9), (9.00, 10.7), (10.0, 6.65), (11.0, 2.08), (12.0, 0.33), (13.0, 0.03), (14.0, 0.00), (15.0, 0.00), (16.0, 0.00), (17.0, 0.00), (18.0, 0.00), (19.0, 0.00), (20.0, 0.00), (21.0, 0.00), (22.0, 0.00), (23.0, 0.00), (24.0, 0.00), (25.0, 0.00), (26.0, 0.00), (27.0, 0.00), (28.0, 0.00), (29.0, 0.00), (30.0, 0.00), (31.0, 0.00), (32.0, 0.00), (33.0, 0.00), (34.0, 0.00), (35.0, 0.00), (36.0, 0.00), (37.0, 0.00), (38.0, 0.00), (39.0, 0.00), (40.0, 0.00), (41.0, 0.00), (42.0, 0.00), (43.0, 0.00), (44.0, 0.00), (45.0, 0.00), (46.0, 0.00), (47.0, 0.00), (48.0, 6.29), (49.0, 12.6), (50.0, 19.0), (51.0, 25.5) 
DOCUMENT:  Units = time vs  snow

TEST_SOIL_MOISTURE = GRAPH(MOD(TIME,52))
(0.00, 10.0), (1.00, 7.18), (2.00, 5.64), (3.00, 4.55), (4.00, 3.75), (5.00, 3.31), (6.00, 3.37), (7.00, 4.05), (8.00, 5.55), (9.00, 7.71), (10.0, 9.99), (11.0, 11.8), (12.0, 9.46), (13.0, 7.26), (14.0, 5.72), (15.0, 4.61), (16.0, 3.78), (17.0, 3.12), (18.0, 2.59), (19.0, 2.16), (20.0, 1.80), (21.0, 1.51), (22.0, 1.27), (23.0, 1.06), (24.0, 0.89), (25.0, 0.75), (26.0, 0.63), (27.0, 0.53), (28.0, 0.45), (29.0, 0.38), (30.0, 0.32), (31.0, 0.27), (32.0, 0.23), (33.0, 0.19), (34.0, 0.16), (35.0, 0.14), (36.0, 0.12), (37.0, 0.1), (38.0, 0.08), (39.0, 0.07), (40.0, 0.06), (41.0, 0.05), (42.0, 0.04), (43.0, 0.04), (44.0, 0.03), (45.0, 0.03), (46.0, 0.02), (47.0, 0.02), (48.0, 0.02), (49.0, 0.01), (50.0, 0.01), (51.0, 0.01) 
TEST_TEMPERATURE = GRAPH(MOD(TIME,52))
(0.00, -2.50), (1.00, -1.65), (2.00, -0.8), (3.00, 0.05), (4.00, 0.9), (5.00, 1.90), (6.00, 2.94), (7.00, 3.99), (8.00, 5.03), (9.00, 6.11), (10.0, 7.22), (11.0, 8.33), (12.0, 9.44), (13.0, 10.5), (14.0, 11.6), (15.0, 12.6), (16.0, 13.7), (17.0, 14.7), (18.0, 15.5), (19.0, 16.3), (20.0, 17.0), (21.0, 17.8), (22.0, 18.6), (23.0, 19.5), (24.0, 20.4), (25.0, 21.2), (26.0, 21.5), (27.0, 21.2), (28.0, 20.9), (29.0, 20.6), (30.0, 20.1), (31.0, 19.1), (32.0, 18.2), (33.0, 17.2), (34.0, 16.3), (35.0, 14.9), (36.0, 13.4), (37.0, 12.0), (38.0, 10.6), (39.0, 8.99), (40.0, 7.28), (41.0, 5.57), (42.0, 3.86), (43.0, 2.61), (44.0, 1.84), (45.0, 1.07), (46.0, 0.3), (47.0, -0.41), (48.0, -0.93), (49.0, -1.45), (50.0, -1.98), (51.0, -2.50) 
TEST_VEG_DAMAGE = GRAPH(MOD(TIME,52))
(0.00, 0.00), (1.00, 0.00), (2.00, 0.00), (3.00, 0.00), (4.00, 0.00), (5.00, 0.84), (6.00, 0.00), (7.00, 0.00), (8.00, 0.00), (9.00, 0.00), (10.0, 1.00), (11.0, 0.00), (12.0, 0.00), (13.0, 0.00), (14.0, 0.00), (15.0, 0.00), (16.0, 0.00), (17.0, 0.00), (18.0, 0.00), (19.0, 0.00), (20.0, 0.00), (21.0, 0.00), (22.0, 0.00), (23.0, 0.00), (24.0, 0.00), (25.0, 0.00), (26.0, 0.00), (27.0, 0.00), (28.0, 0.00), (29.0, 0.00), (30.0, 0.00), (31.0, 0.00), (32.0, 0.00), (33.0, 0.00), (34.0, 0.00), (35.0, 0.00), (36.0, 0.00), (37.0, 0.00), (38.0, 0.00), (39.0, 0.00), (40.0, 0.00), (41.0, 0.00), (42.0, 0.00), (43.0, 0.00), (44.0, 0.00), (45.0, 0.00), (46.0, 0.00), (47.0, 0.00), (48.0, 0.00), (49.0, 0.00), (50.0, 0.00), (51.0, 0.00) 
Training_Schedule = GRAPH(MOD(TIME,52))
(0.00, 0.00), (1.00, 0.00), (2.00, 1.00), (3.00, 0.00), (4.00, 0.00), (5.00, 0.00), (6.00, 1.00), (7.00, 0.00), (8.00, 0.00), (9.00, 0.00), (10.0, 0.00), (11.0, 0.00), (12.0, 0.00), (13.0, 0.00), (14.0, 0.00), (15.0, 0.00), (16.0, 0.00), (17.0, 0.00), (18.0, 0.00), (19.0, 0.00), (20.0, 0.00), (21.0, 0.00), (22.0, 0.00), (23.0, 0.00), (24.0, 0.00), (25.0, 0.00), (26.0, 0.00), (27.0, 0.00), (28.0, 0.00), (29.0, 0.00), (30.0, 0.00), (31.0, 0.00), (32.0, 0.00), (33.0, 0.00), (34.0, 0.00), (35.0, 0.00), (36.0, 0.00), (37.0, 0.00), (38.0, 0.00), (39.0, 0.00), (40.0, 0.00), (41.0, 0.00), (42.0, 0.00), (43.0, 0.00), (44.0, 0.00), (45.0, 0.00), (46.0, 0.00), (47.0, 0.00), (48.0, 0.00), (49.0, 0.00), (50.0, 0.00), (51.0, 0.00) 
DOCUMENT:  Units = 1(training regime) or 0 (no training)

SOIL_COMPACTION_INDEX(t) = SOIL_COMPACTION_INDEX(t - dt) + (NEW_COMPACTION - UNCOMPACTION) * dt
INIT SOIL_COMPACTION_INDEX = 0
DOCUMENT:  Units = Percent land compacted.

NEW_COMPACTION = COMPACTION * (1 - SOIL_COMPACTION_INDEX)
DOCUMENT:  Units = percent of land to be compacted.

UNCOMPACTION = SOIL_COMPACTION_INDEX * .01
DOCUMENT:  Units = percent land uncompacted every dt

CV_TRAK_VEH_NOISE = 10
DOCUMENT:  Units = Tracked vehicle hours in use per 100 hectares per exercise
NOISE_COEF_C = .5 
DOCUMENT:  Units = troop-hr noise units
NOISE_COEF_T = 1 
DOCUMENT:  units = troop-hr noise units

NOISE_COEF_TV = 100 
DOCUMENT:  units = troop-hr noise units

NOISE_COEF_UTV = 50 
DOCUMENT:  Units = troop-hr noise units

SOIL_COMPACT_COEF_C = .001
DOCUMENT:  Units = hectares compacted per troop-hour of bivouacing.

SOIL_COMPACT_COEF_T = .0001
DOCUMENT:  Units = hectares compacted per troop-hour of training

SOIL_COMPACT_COEF_TV = .15
DOCUMENT:  Units = hectares compacted per tracked-vehicle-hour of training

SOIL_COMPACT_COEF_UTV = .10
DOCUMENT:  Units = hectares compacted per untracked-vehicle-hour of training

SOIL_COM_C_MULT = CV_ENCAMP_HR * SOIL_COMPACT_COEF_C / 100
DOCUMENT:  Units = area damaged per hectare

SOIL_COM_TV_MULT = SOIL_COMPACT_COEF_TV * CV_TRAK_VEH_HR / 100
DOCUMENT:  Units = area damaged per hectare

SOIL_COM_T_MULT = SOIL_COMPACT_COEF_T * CV_TROOP_HR / 100
DOCUMENT:  Units = area damaged per hectare

SOIL_COM_UTV_MULT = SOIL_COMPACT_COEF_UTV * CV_UTRAK_VEH_HR / 100
DOCUMENT:  Units = area damaged per hectare

VEG_DAMAGE_COEF_C = 1
DOCUMENT:  Units = vegetation impact units per troop-hour of training

VEG_DAMAGE_COEF_T = 1 
DOCUMENT:  Units = vegetation impact units per troop-hour of training

VEG_DAMAGE_COEF_TV = 1000 
DOCUMENT:  Units = vegetation impact units per troop-hour of training

VEG_DAMAGE_COEF_UTV = 500 
DOCUMENT:  Units = vegetation impact units per troop-hour of training

VEG_DAMAGE_C_MULT = CV_ENCAMP_HR * VEG_DAMAGE_COEF_C / 100
DOCUMENT:  Units = vegetation impact units per hectare

VEG_DAMAGE_TV_MULT = CV_TRAK_VEH_HR * VEG_DAMAGE_COEF_TV / 100
DOCUMENT:  Units = vegetation impact units per hectare

VEG_DAMAGE_T_MULT = VEG_DAMAGE_COEF_T * CV_TROOP_HR / 100
DOCUMENT:  Units = vegetation impact units per hectare

VEG_DAMAGE_UTV_MULT = VEG_DAMAGE_COEF_UTV * CV_UTRAK_VEH_HR / 100
DOCUMENT:  Units = vegetation impact units per hectare

COMPACTION = GRAPH(Training_Schedule * (SOIL_COM_TV_MULT + SOIL_COM_UTV_MULT + SOIL_COM_C_MULT + SOIL_COM_T_MULT) / 10000)
(0.00, 0.00), (1.00, 0.36), (2.00, 0.55), (3.00, 0.7), (4.00, 0.8), (5.00, 0.88), (6.00, 0.93), (7.00, 0.97), (8.00, 0.99), (9.00, 0.995), (10.0, 1.00) 
DOCUMENT:  Units = 0 -1 index measuring total compaction of the system per exercise.

NOISE_INDEX = GRAPH(Training_Schedule*CV_TRAK_VEH_NOISE)
(0.00, 0.00), (10.0, 0.235), (20.0, 0.44), (30.0, 0.59), (40.0, 0.695), (50.0, 0.78), (60.0, 0.85), (70.0, 0.92), (80.0, 0.97), (90.0, 0.995), (100, 1.00) 
DOCUMENT:  Units = 0-100 percent index per excercise

VEG_DAMAGE = GRAPH(Training_Schedule * (VEG_DAMAGE_UTV_MULT + VEG_DAMAGE_TV_MULT + VEG_DAMAGE_C_MULT + VEG_DAMAGE_T_MULT))
(0.00, 0.00), (100, 0.365), (200, 0.555), (300, 0.705), (400, 0.795), (500, 0.865), (600, 0.92), (700, 0.96), (800, 0.98), (900, 0.995), (1000, 1.00) 
DOCUMENT:  1. Compute HA-damaged/HA/Exercise by summing the following:
    Troop-hours/HA/Exercise * HA-damaged/Troop-hour 
    TV-hours/HA/Exercise * HA-damaged/TV-hour
    UTV-hours/HA/Exercise * HA-damaged/UTV-hour
    Bivouac-hours/HA/Exercise * HA-damaged/Bivouac-hour
2. Compute HA-damaged/HA by multiplying:
    HA-damaged/HA/Exercise * Exercises
3. Compute noise index by sending HA-damaged/HA through graph

AG_COVER(t) = AG_COVER(t - dt) + (NEW_AG_COVER - AG_FIRE - AG_NATURAL_DEATH - AG_HUMAN_IMPACT - AG_CONSUMPTION) * dt
INIT AG_COVER = 30
DOCUMENT:  Units = percent cover

NEW_AG_COVER = MIN(NEW_AG,AG_COVER-59)
DOCUMENT:  Units = percent cover

AG_FIRE = IF FIRE_DAMAGE=1 THEN AG_COVER ELSE 0
DOCUMENT:  Units = percent agropyron cover

AG_NATURAL_DEATH =  AG_COVER*.005/52
DOCUMENT:  Units = percent cover dying

AG_HUMAN_IMPACT = IF( CVH_VEG_DAMAGE_INDEX > 0) THEN   AG_COVER-(CVH_VEG_DAMAGE_INDEX*AG_COVER) ELSE 0
DOCUMENT:  Units = percent cover left after a human impact

AG_CONSUMPTION =  AG_COVER*0
DOCUMENT:  Units = percent cover lost due to consumption

FB_COVER(t) = FB_COVER(t - dt) + (NEW_FB_COVER - FB_FIRE - FB_NAT_DEATH - FB_HUMAN_IMPACT - FB_CONSUMPTION) * dt
INIT FB_COVER = 6
DOCUMENT:  Units = percent cover forbs

NEW_FB_COVER = MIN(NEW_FB,FB_COVER-59)
DOCUMENT:  Units = percent cover 

FB_FIRE = IF FIRE_DAMAGE=1 THEN FB_COVER ELSE 0
DOCUMENT:  Units = percent cover consumed per fire

FB_NAT_DEATH =  FB_COVER*.1/52
DOCUMENT:  Units = percent cover 

FB_HUMAN_IMPACT =  IF (CVH_VEG_DAMAGE_INDEX>0) THEN FB_COVER-(CVH_VEG_DAMAGE_INDEX*FB_COVER) ELSE 0
DOCUMENT:  Units = 0 to 1 index representing percent cover.

FB_CONSUMPTION =  FB_COVER*0
DOCUMENT:  Units = percent cover lost due to consumption

SB_COVER(t) = SB_COVER(t - dt) + (NEW_SB_COVER - SB_FIRE - SB_NAT_DEATH - SB_HUMAN_IMPACT - SB_CONSUMPTION) * dt
INIT SB_COVER = 18
DOCUMENT:  Units = percent cover 

NEW_SB_COVER = MIN(NEW_SB,SB_COVER-25)
DOCUMENT:  Units = percent cover

SB_FIRE = IF FIRE_DAMAGE=1 THEN SB_COVER ELSE 0
DOCUMENT:  Units = percent cover burned

SB_NAT_DEATH =  SB_COVER*.02/52
DOCUMENT:  Units = percent cover 

SB_HUMAN_IMPACT =  IF (CVH_VEG_DAMAGE_INDEX>0) THEN SB_COVER-(CVH_VEG_DAMAGE_INDEX*SB_COVER) ELSE 0
DOCUMENT:  Units = percent cover

SB_CONSUMPTION =  SB_COVER*0
DOCUMENT:  Units = percent cover

AG_POST_FIRE_COVER = DELAY(AG_REGROWTH,78)
DOCUMENT:  Units = percent cover

AG_REGROWTH =  if FIRE_DAMAGE=1 THEN .05*TOTAL_COVER ELSE 0
DOCUMENT:  Units = percent cover 

FB_POST_FIRE_COVER = DELAY(FB_REGROWTH,78)
DOCUMENT:  Units = percent cover

FB_REGROWTH =  if FIRE_DAMAGE=1 THEN .05*TOTAL_COVER ELSE 0
DOCUMENT:  Units = percent cover 

NEW_AG = IF (CVS_TEMPERATUREÒ12.0) AND 
(CVS_TEMPERATUREÓ22.0) AND 
(CVS_SOIL_MOISTUREÒ8.0) AND 
(CVS_SOIL_MOISTUREÓ10.00) AND 
(CV_WEEKÒ15) AND 
(CV_WEEKÓ25) THEN  
AG_COVER *(AG_ASPECT_MOD* .02) +AG_POST_FIRE_COVER 
ELSE 0
DOCUMENT:  Units = percent cover added per dt

NEW_FB = IF (CVS_TEMPERATUREÒ12.0) AND 
(CVS_TEMPERATUREÓ22.0) AND 
(CVS_SOIL_MOISTUREÒ8.0) AND 
(CVS_SOIL_MOISTUREÓ10.00) AND 
(CV_WEEKÒ15) AND 
(CV_WEEKÓ25) THEN  
FB_COVER *(FB_ASPECT_MOD* .02) +FB_POST_FIRE_COVER 
ELSE 0
DOCUMENT:  Units = percent cover added per dt

NEW_SB = IF (CVS_TEMPERATUREÒ12.0) AND 
(CVS_TEMPERATUREÓ22.0) AND 
(CVS_SOIL_MOISTUREÒ8.0) AND 
(CVS_SOIL_MOISTUREÓ10.00) AND 
(CV_WEEKÒ15) AND 
(CV_WEEKÓ25) THEN  
SB_COVER *(SB_ASPECT_MOD* .02) +SB_POST_FIRE_COVER 
ELSE 0
DOCUMENT:  Units = percent cover added per dt

SB_POST_FIRE_COVER = DELAY(SB_REGROWTH,78)
DOCUMENT:  Units = percent cover 

SB_REGROWTH =  if FIRE_DAMAGE=1 THEN .05*TOTAL_COVER ELSE 0
DOCUMENT:  Units = percent cover

TOTAL_COVER = MIN(100,AG_COVER+FB_COVER+SB_COVER)
DOCUMENT:  Units = percent cover of all vegetation

AG_ASPECT_MOD = GRAPH(CV_ASPECT)
(0.00, 0.6), (36.4, 0.605), (72.8, 0.61), (109, 0.635), (146, 0.71), (182, 0.95), (218, 1.00), (255, 1.00), (291, 0.87), (328, 0.725), (364, 0.6) 
DOCUMENT:  Units = degrees

FB_ASPECT_MOD = GRAPH(CV_ASPECT)
(0.00, 0.6), (36.4, 0.605), (72.8, 0.61), (109, 0.635), (146, 0.71), (182, 0.95), (218, 1.00), (255, 1.00), (291, 0.87), (328, 0.725), (364, 0.6) 
DOCUMENT:  Units = degrees

SB_ASPECT_MOD = GRAPH(CV_ASPECT)
(0.00, 0.6), (36.4, 0.605), (72.8, 0.61), (109, 0.635), (146, 0.71), (182, 0.95), (218, 1.00), (255, 1.00), (291, 0.87), (328, 0.725), (364, 0.6) 
DOCUMENT:  Units = degrees

F_SG_ADULTS(t) = F_SG_ADULTS(t - dt) + (SURVIVAL_2 - F_ADULT_DEATHS) * dt
INIT F_SG_ADULTS = 1{female grouse}
DOCUMENT:  Units = female adults per hectare (?)

SURVIVAL_2 = IF (CV_WEEK = 0) THEN F_SG_JUVENILES/DT ELSE 0
DOCUMENT:  Units = surviving female juveniles

F_ADULT_DEATHS = IF ( Random (0.0,1.0)  (F_ADULT_DEATH_1 - INT(F_ADULT_DEATH_1)))
THEN (1/DT) * (INT (F_ADULT_DEATH_1) +1) 
ELSE (1/DT) * ( INT (F_ADULT_DEATH_1))
DOCUMENT:  Units = number of female adult deaths

F_SG_EGGS_1(t) = F_SG_EGGS_1(t - dt) + (EGG_LAYING - EGG_SURV_1 - EGG_DEATH_1 - ABANDON_DEATH_1) * dt
INIT F_SG_EGGS_1 = 0
DOCUMENT:  Units = number of eggs

EGG_LAYING = IF (Random(0.0,1.0)  (EGG_LAY - INT(EGG_LAY)))
THEN (1/DT) * (INT(EGG_LAY) + 1)
ELSE (1/DT) * (INT(EGG_LAY))
DOCUMENT:  Units = number of eggs hatched per pair of grouse

EGG_SURV_1 = IF (Random(0.0,1.0)  (DT * F_SG_EGGS_1 - INT(DT * F_SG_EGGS_1)))
THEN (1/(DT * DT)) * (INT(DT * F_SG_EGGS_1) + 1)
ELSE (1/(DT * DT)) * (INT(DT * F_SG_EGGS_1) )
DOCUMENT:  Units = number of eggs 

EGG_DEATH_1 = IF (DT * Random(0.0,1.0)  (EGG_DEATH_A - INT(EGG_DEATH_A)))
THEN (1/DT) * (INT(EGG_DEATH_A) + 1)
ELSE (1/DT) * (INT(EGG_DEATH_A))
DOCUMENT:  Units = number of eggs

ABANDON_DEATH_1 = IF (F_SG_ADULTS = 0) THEN 1/DT * F_SG_EGGS_1 ELSE 0
DOCUMENT:  Units = number of eggs

F_SG_EGGS_2(t) = F_SG_EGGS_2(t - dt) + (EGG_SURV_1 - EGG_SURV_2 - EGG_DEATH_2 - ABANDON_DEATH_2) * dt
INIT F_SG_EGGS_2 = 0
DOCUMENT:  Units = number of eggs

EGG_SURV_1 = IF (Random(0.0,1.0)  (DT * F_SG_EGGS_1 - INT(DT * F_SG_EGGS_1)))
THEN (1/(DT * DT)) * (INT(DT * F_SG_EGGS_1) + 1)
ELSE (1/(DT * DT)) * (INT(DT * F_SG_EGGS_1) )
DOCUMENT:  Units = number of eggs 

EGG_SURV_2 = IF (Random(0.0,1.0)  (DT * F_SG_EGGS_2 - INT(DT * F_SG_EGGS_2)))
THEN (1/(DT * DT)) * (INT(DT * F_SG_EGGS_2) + 1)
ELSE (1/(DT * DT)) * (INT(DT * F_SG_EGGS_2) )
DOCUMENT:  Units = number of eggs

EGG_DEATH_2 = IF (DT * Random(0.0,1.0)  (EGG_DEATH_B - INT(EGG_DEATH_B)))
THEN (1/DT) * (INT(EGG_DEATH_B) + 1)
ELSE (1/DT) * (INT(EGG_DEATH_B))
ABANDON_DEATH_2 = IF (F_SG_ADULTS = 0) THEN 1/DT * F_SG_EGGS_2 ELSE 0
F_SG_JUVENILES(t) = F_SG_JUVENILES(t - dt) + (EGG_SURV_2 - F_JUVENILE_DEATH - SURVIVAL_2) * dt
INIT F_SG_JUVENILES = 0
EGG_SURV_2 = IF (Random(0.0,1.0)  (DT * F_SG_EGGS_2 - INT(DT * F_SG_EGGS_2)))
THEN (1/(DT * DT)) * (INT(DT * F_SG_EGGS_2) + 1)
ELSE (1/(DT * DT)) * (INT(DT * F_SG_EGGS_2) )
DOCUMENT:  Units = number of eggs

F_JUVENILE_DEATH = IF (DT * Random(0.0,1.0)  (F_JUVENILE_DEATH_1 - INT(F_JUVENILE_DEATH_1)))
THEN (1/DT) * (INT(F_JUVENILE_DEATH_1) + 1)
ELSE (1/DT) * (INT(F_JUVENILE_DEATH_1))
DOCUMENT:  Units = number of female juvenile deaths

SURVIVAL_2 = IF (CV_WEEK = 0) THEN F_SG_JUVENILES/DT ELSE 0
DOCUMENT:  Units = surviving female juveniles

F_SG_PREGNANT(t) = F_SG_PREGNANT(t - dt) + (FERTILIZE - GESTATE) * dt
INIT F_SG_PREGNANT = 0
DOCUMENT:  Units = number of pregnant female sage grouse

FERTILIZE = IF (CV_LEK_DIST = 0  & F_SG_PREGNANT = 0 & F_SG_JUVENILES = 0) THEN
F_SG_ADULTS*MALES_ON_LEK* 0.1
ELSE 0
DOCUMENT:  Units = number of female sage grouse fertilized per dt

GESTATE = DT
DOCUMENT:  Units = number of female sage grouse gestating per dt (?)

ADULT_SURV_FRAC = .30 
DOCUMENT:  Units = constant that gives adults surviving.

ADULT_WEEKS = 156
DOCUMENT:  Units = weeks

EGGS_PER_FEMALE = 6 
DOCUMENT:  Units = eggs

EGG_DEATH_A = IF (EGG_TOTAL = 0) THEN 0
ELSE (F_SG_EGGS_1/EGG_TOTAL) * SG_EGG_DEATH
DOCUMENT:  Units = number of eggs

EGG_DEATH_B = SG_EGG_DEATH-EGG_DEATH_A
DOCUMENT:  Units = number of eggs

EGG_LAY = IF (FERTILIZE Ð 0) THEN EGGS_PER_FEMALE ELSE 0
DOCUMENT:  Units = number of eggs 

EGG_SURV_FRACTION = .38
DOCUMENT:  Units = fraction of eggs surviving 

EGG_TOTAL = F_SG_EGGS_1+F_SG_EGGS_2
DOCUMENT:  Units = number of eggs

EGG_WEEKS = 2
DOCUMENT:  Units = weeks

F_ADULT_DEATH_1 = (1-MOD_ADULT_SUR_FRAC)*(F_SG_ADULTS/DT)
DOCUMENT:  Units = adult deaths

F_JUVENILE_DEATH_1 = DT * (1-MOD_JUV_SUR_FRAC) * F_SG_JUVENILES
DOCUMENT:  Units = juvenile deaths

F_SG_POPULATION = F_SG_ADULTS+F_SG_JUVENILES
DOCUMENT:  Units =  number of sage grouse 

JUV_WEEKS = 50
DOCUMENT:  Units = weeks

MOD_ADULT_SUR_FRAC = EXP(LOGN(ADULT_SURV_FRAC)*(DT/ADULT_WEEKS))
DOCUMENT:  Units = fraction of adults surviving

MOD_EGG_SUR_FRAC = 1/DT * ( 1 - EXP(LOGN(EGG_SURV_FRACTION)*(DT/EGG_WEEKS)))
DOCUMENT:  Units = fraction of eggs surviving

MOD_JUV_SUR_FRAC = (EXP(LOGN(JUV_SURV_FRACT)*(DT/JUV_WEEKS)))
DOCUMENT:  Units = fraction of juveniles surviving

SG_EGG_DEATH = DT * (1-MOD_EGG_SUR_FRAC) * EGG_TOTAL
DOCUMENT:  Units = number of eggs dying

JUV_SURV_FRACT = GRAPH(CVP_SAGEBRUSH)
(0.00, 0.16), (2.50, 0.16), (5.00, 0.18), (7.50, 0.22), (10.0, 0.27), (12.5, 0.355), (15.0, 0.47), (17.5, 0.6), (20.0, 0.7), (22.5, 0.775), (25.0, 0.8) 
DOCUMENT:  Units = fraction of juveniles surviving

CELL_SIZE = .09 
DOCUMENT:  Units = hectares

Hab = on_map
DOCUMENT:  Units = constant

on_map = 1
DOCUMENT:  Units = ?

AVAILABLE_SOIL_MOISTURE(t) = AVAILABLE_SOIL_MOISTURE(t - dt) + (SM_ACTUAL_INFILTRATION - SM_DECREASE) * dt
INIT AVAILABLE_SOIL_MOISTURE = 10
DOCUMENT:  Units = millimeters of water (stored in the top 15 centimeters)

SM_ACTUAL_INFILTRATION = SM_POTENTIAL_INFILTRATION*SM_INFILTRATION_RATE
SM_DECREASE = IF (SM_SWITCH = 1) THEN          {IN MILLIMETERS LOST FROM STORAGE}
     SM_ADJUSTED_AE
ELSE
     SM_PE_CONVERSION
DOCUMENT:  This is really the rate of evapotransporation from the soil in the specific cell being modeled.
((-400 + 30*SM_Temp - 0.4*SM_Temp*SM_Temp)*SM_Radiation_Index*SM_Cover)*10
IF SM_Temp > 26.5 THEN (-415.85+(32.42*SM_Temp)-(0.43*SM_Temp^2)) ELSE
SM_Cover*SM_Radiation_Index
IF SOIL_MOISTURE_STORAGE  SM_MAX AND SOIL_MOISTURE_STORAGE > SM_MIN THEN SM_PE_CONVERSION ELSE IF SOIL_MOISTURE_STORAGE  SM_MIN THEN SM_ADJUSTED_AE ELSE 0
SM_ADJUSTED_AE

SM_SNOW_PAC(t) = SM_SNOW_PAC(t - dt) + (SM_SNOW - SM_MELT) * dt
INIT SM_SNOW_PAC = 0
DOCUMENT:  Units = millimeters of water in the snow

SM_SNOW = IF SM_TEMPERATURE = 0 THEN SM_RAINFALL_CONVERSION 
ELSE 0.00
DOCUMENT:  Units = millimeters of water in the snow

SM_MELT = IF SM_TEMPERATURE >=  0 
THEN SM_MELT_VS_TEMP * SM_SNOW_PAC
ELSE 0.00
DOCUMENT:  Units = millimeters of water melting from the snow pack

SM_A = ((6.75/10.0^7.0) * SM_HEAT^3.00) - ((7.71/10.0^5.0) * SM_HEAT^2.00) + ((1.79/10.0^2.0) * SM_HEAT) + 0.49
DOCUMENT:  (0.0638*SM_HEAT^3) - (0.2724*SM_HEAT^2.0) + 
(0.0320*SM_HEAT) + 0.49
{ THE FULL EQUATION IS AS FOLLOWS: ((6.75/10)^7.0 * SM_HEAT^3.00) -((7.71/10)^5.0 * SM_HEAT^2.00) + ((1.79/10)^2.0 * SM_HEAT) + 0.49}

SM_ACTUAL_EVPT = AVAILABLE_SOIL_MOISTURE*SM_PERCENT_LOSS_FROM_STORAGE
DOCUMENT:  Units = millimeters of water

SM_ADJUSTED_AE = SM_ACTUAL_EVPT*SM_COVER_INDEX
SM_ASPECT_RECLASS = CV_ASPECT 
DOCUMENT:  Units = [constant = 1]

SM_AVAILABLE_SOIL_WATER = (AVAILABLE_SOIL_MOISTURE/CV_WATER_HOLDING_CAPACITY)*100
DOCUMENT:  Units = percent of the potential saturation

SM_BASE_ELEVATION = 800 
DOCUMENT:  Units = meters

SM_COVER_INDEX = 0.55*((LEAF_AREA_INDEX)^0.5)
SM_CRITICAL_PERCENT = 0.70
DOCUMENT:  Units = percent of maximum holding capacity

SM_HEAT =  (12/12) * ((118.44 / 5.0) ^1.514)

DOCUMENT:  Units = degrees Celsius

SM_MIN = SM_CRITICAL_PERCENT*CV_WATER_HOLDING_CAPACITY
DOCUMENT:  
                             ****SEE SM_CRITICAL_PERCENT****

SM_NEW_WATER = SM_RAINFALL_CONVERSION-SM_SNOW+SM_MELT
SM_PE_CONVERSION = (SM_POTENTIAL_EVPT/4.3)
{THIS SHOULD BE ZERO WHEN SOIL MOISTURE STORAGE IS LESS THAN THE MINIMUM SPECIFIED IN "SM_MIN" OR WHEN THE SM_STORAGE IS GREATER THAN THAT SPECIFIED IN "SM_MAX"}
SM_POTENTIAL_EVPT = IF SM_TEMPERATURE > 0.00 THEN 
16.0 * ((10.0 * (SM_TEMPERATURE / SM_HEAT )) ^ SM_A)
ELSE 0
SM_POTENTIAL_INFILTRATION = SM_COVER_INDEX * CV_WETNESS_INDEX * SM_NEW_WATER 
* SM_SOIL_TRANSMISSIVITY_INDEX
DOCUMENT:  Units = millimeters of water

SM_RAINFALL_CONVERSION = SM_RAINFALL_MM/4.3
DOCUMENT:  Units = millimeters of water per week

SM_SLOPE_RECLASS = CV_SLOPE 
DOCUMENT:  Units = constant [1]

SM_SOIL_TRANSMISSIVITY_INDEX = (1-CVH_COMPACTION)*CV_SOIL_PERM
DOCUMENT:  THIS WILL BE FOUND BY COMPUTIG [ln (Te/Ti)] WHERE Te = AVERAGE TRANSMISSIVITY AND Ti = TRANSMISSIVITY OF THE SPECIFIC CELL.  THE INDEX FROM THE HUMAN DISTURBANCE GROUP WILL BE USED TO MODIFY Te TO GET Ti.
This will be both spatially variable across cells, due to soil type and textural qualities, and temporally variable due to varied occurences and intensities of human disturbance.

SM_SWITCH = IF AVAILABLE_SOIL_MOISTURE Ó SM_MIN THEN 1 ELSE 0
{THIS SHOULD MAKE THE DECREASE WORK OFF OF THE "SM_ADJUSTED_AE" WHEN SM_STORAGE REACHES OR FALLS BELOW THE ALLOWED MINIMUM IN "SM_MIN"}
                                                              
                                                                           
SM_TEMPERATURE = SM_TEMP_CELSIUS+((CV_ELEVATION-SM_BASE_ELEVATION) *.01) * SM_SLOPE_RECLASS*SM_ASPECT_RECLASS 
DOCUMENT:  Units = degrees Celsius

SM_TEMP_CELSIUS = ((SM_BASE_TEMPERATURE-32.0)*5.0)/9.0
DOCUMENT:  Units = degrees celsius

SM_Veg_index_test = ((CVP_SAGEBRUSH/17.5)+
(CVP_AGROPYRON/88.5)+
(CVP_FORB/7.1)) / 3.0
LEAF_AREA_INDEX = GRAPH(SM_Veg_index_test)
(0.00, 0.00), (0.0526, 0.03), (0.105, 0.075), (0.158, 0.17), (0.211, 0.38), (0.263, 0.735), (0.316, 0.905), (0.368, 0.955), (0.421, 0.985), (0.474, 1.00), (0.526, 1.00), (0.579, 1.00), (0.632, 1.00), (0.684, 1.00), (0.737, 1.00), (0.789, 1.00), (0.842, 1.00), (0.895, 1.00), (0.947, 1.00), (1.00, 1.00) 
SM_BASE_TEMPERATURE = GRAPH(CV_WEEK)
(0.00, 27.5), (4.25, 34.0), (8.50, 42.0), (12.8, 50.5), (17.0, 58.5), (21.2, 64.4), (25.5, 71.0), (29.8, 68.6), (34.0, 61.3), (38.2, 50.5), (42.5, 37.4), (46.8, 31.5), (51.0, 27.5) 
DOCUMENT:  Units = degrees farenheit 

SM_INFILTRATION_RATE = GRAPH(SM_AVAILABLE_SOIL_WATER)
(0.00, 1.00), (11.1, 0.865), (22.2, 0.74), (33.3, 0.635), (44.4, 0.51), (55.6, 0.405), (66.7, 0.32), (77.8, 0.205), (88.9, 0.085), (100, 0.00) 
SM_MELT_VS_TEMP = GRAPH(SM_TEMPERATURE)
(0.00, 0.00), (1.50, 0.02), (3.00, 0.075), (4.50, 0.17), (6.00, 0.345), (7.50, 0.765), (9.00, 0.9), (10.5, 0.97), (12.0, 0.99), (13.5, 1.00), (15.0, 1.00) 
SM_PERCENT_LOSS_FROM_STORAGE = GRAPH(SM_AVAILABLE_SOIL_WATER)
(0.00, 0.28), (5.00, 0.3), (10.0, 0.325), (15.0, 0.375), (20.0, 0.455), (25.0, 0.585), (30.0, 0.765), (35.0, 0.88), (40.0, 0.94), (45.0, 0.975), (50.0, 0.985), (55.0, 1.00), (60.0, 1.00), (65.0, 1.00), (70.0, 1.00), (75.0, 1.00), (80.0, 1.00), (85.0, 1.00), (90.0, 1.00), (95.0, 1.00), (100, 1.00) 
SM_RAINFALL_MM = GRAPH(CV_WEEK)
(0.00, 28.0), (4.25, 20.0), (8.50, 12.0), (12.8, 11.0), (17.0, 14.0), (21.2, 16.0), (25.5, 5.00), (29.8, 5.00), (34.0, 11.0), (38.2, 14.0), (42.5, 25.0), (46.8, 27.0), (51.0, 28.0) 
DOCUMENT:  Units = millimeters of water per month