Savanna - Landscape and Regional Ecosystem Model User Guide Michael B. Coughenour and Daniel C. McNulty-Huffman Natural Resource Ecology Laboratory Colorado State University Ft. Collins, Colorado 80523 USA Table of Contents List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv Part I. Using the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Model Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing Parameter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Time Frame of a Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Spatial Extent of a Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Model Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Weather Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Stochastic Weather . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Ungulates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Imposing a Fire Regime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Plant Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Soil Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Model Parameterization Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 2 3 3 3 5 5 7 7 Section II. Model Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Parameter and Data File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Parameter Files - Functional Grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Run Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Climate Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Snow Submodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Soil Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Primary Production Submodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Plant Population Submodels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Plant Fire Responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Ungulate Submodels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Spatial Input Data (Maps) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Subarea Cover Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Elevation Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Soils Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Tree Canopy Cover Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Shrub Canopy Cover Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Tree Height Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Shrub Height Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Tree Species Composition Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Vegetation Type Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Herbaceous Root Biomass Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 ii Fire Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Maps That Affect Ungulate Spatial Distributions . . . . . . . . . . . . . . . . . . . . 18 Monthly Precipitation Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Section III. Model Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output Summarized by Output File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Biom1.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Biom2.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pptsnw.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tree1.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tree2.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shrub1.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shrub2.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Consum.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diag1.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diag2.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diag3.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diag4.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diag5.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pop.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bdrate.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagpop.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wolf.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Report.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reportc.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Image.img . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Graphical Output Tools and Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Temporal Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spatial Output via GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quick Spatial Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 19 19 19 20 20 20 21 21 21 22 22 22 23 23 23 24 24 24 24 25 25 26 26 26 26 Section IV. Procedural Organization of the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Section V. Subroutines and Their Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Subroutine Name and Function List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 iii List of Figures Figure 1. Program Procedure Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Figure 2. Tree diagram of the Savanna model code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Figure 3. Tree diagram for subroutine SVLAND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 List of Tables Table 1. Calling routines for parameter files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Table 2. Parameter file list. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 iv Part I. Using the Model Model Execution The executable file will have a .exe file name extension. The model is run by entering the name of the executable file at the prompt. All of the required parameter files, data files and map files must be located in the current directory. As the simulation proceeds, the month, year, and total number of elapsed months are displayed on the screen. Changing Parameter Values Parameters for the Savanna model are distributed among many input files. In general, parameters files correspond to specific submodels or a specific instances of a submodel. For example, the net primary production submodel has a parameter file for each plant species or functional group. Parameter files are simply ascii text files and they may be edited using any text editor. Parameter files have a .prm file name extension. Changing the Time Frame of a Simulation The parameter file simcon.prm contains the parameters which control the length of the simulation. On the thirteenth line is the starting month, ending month and starting year. The ending month is the total number of months that will be simulated, less the starting month. The starting month must be in the range 1-12. The first year of a simulation should correspond to the first year on the ascii weather file, and the first year on the ungulate population file, if one is used. Changing the Spatial Extent of a Simulation The parameter file spacedat.prm contains the parameters which define the spatial structure of a run. The number of rows and columns in the study area are specified on the first line of the file. These must correspond to the dimensions of the input raster (grid-cell) maps. On the second line, a block of contiguous grid cells can be specified by its starting and ending rows and columns. To simulate a single grid-cell, set the starting and ending rows both equal to the row number of the single cell, and likewise set the starting and ending columns equal to the column number of the single cell. In the model, row 1 is the bottom row, so the cell at row 0 column 0 is the lower left corner cell as in a cartesian coordinate system. The numbers of subareas and facets is also defined here, but these are not altered once the model is configured for a particular location. The model is currently hard-coded so that facet 1 is herbaceous, 2 is woody (trees), 3 is overstory shrubs. 1 Controlling Model Output The file simcon.prm contains parameters for controlling the time interval between writes to output files. The .out output files provide monthly outputs if the value of dtpmon is set to 1. Output is bimonthly if dtpmon is set to 2, outputs are annual if dtpmon is set to 12, and so on. The report.out file is a detailed summary of one to several grid cells (normally one). The yearly interval for producing report.out output is given by dtprn, on the parameter file simcon.prm. Within each of the years when there is output, there is output on months flagged with 1's in the maccum parameter array (an array of twelve integers). Normally, report output should be annual, on one month per year. Accumulators are also reset on the months flagged on maccum. Thus, the accumulators (eg. total NPP) on the report.out file will be cumulative since the last output. The number of locations (grid cells) and the row and column numbers of each of the cells that is to be reported upon are specified on the last two lines on simcom.prm. Map output is also controlled by parameters on simcon.prm. The parameter imagsv flags map output on (1) or off (0). Normally, output is a map of mean grid-cell variable values rather than values for individual facets (ie. it is a space-weighted average of individual facet values). To save grid-cell scale output, set nfout and nsout to zero. Otherwise, a specific facet on a specific subarea can be specified by their corresponding indices in nfout and nsout, respectively. Map (image) output can be saved monthly, or on intermittent months as flagged on imagmon, an array of 12 integer values. For example to save values at peak summer biomass and in the dead of winter, one would flag months one and seven. Diagnostic output for primary production for a single plant type, and water budgets on a single facet of a single grid cell are written to diag*.out files. The exact facet location is specified by parameters on simcon.prm. The grid cell row and column, facet and subarea indices are given by nrdiag,ncdiag,nfdiag,nsdiag. The corresponding names of the subareas and facets should appear on the spacedat.prm file. The plant type or species index is specified by nspdiag. This is not the index of the plant species as suggested by its order on the plfile.prm file. It is the index of the plant species or type in a mixture of plants on a facet, as specified on the sppmix.prm file. If in doubt, the diagnostic species name is written to the screen at the end of the run. Diagnostic output for a single ungulate species is written to diagpop.out. The species is specified on the parameter file popprm.prm. The index of the species corresponds to its order on the parameter file. Changing the Weather Data The names of weather data files used by the simulation are specified on simcon.prm. The parameter iwthr on simcon.prm is an option flag that controls the source of precipitation data. If iwthr is 1, then precipitation is read from a binary precipitation map file. If iwthr is 2, then precipitation data are read from th main base station weather file, which contains monthly precipitation and temperatures. Then precipitation is spatially uniform. If iwthr is 3, 2 then the main base precipitation data are used, but spatially patterned according to data on the binary precipitation map file. If iwthr is 4, then elevation corrected spatial interpolation is used to calculate precipitation in each grid cell. Then a site precipitation file is used, which contains precipitation data for two or more weather stations. The base station data file contains the spatial coordinates and elevations of the weather stations. Temperature data always come from the main base station weather file, however this data is adjusted for elevation using the lapse rates on the weather.prm file. Mean monthly humidity, daylength, solar radiation are also specified on the file weather.prm. Using Stochastic Weather Stochastic weather is generated by flagging the value of iranw to 1 on the simcon.prm parameter file. When this flag is switched on (set to 1), weather years are randomly picked from the main base station weather file, (and the binary precipitation map file if iwthr is set to 1). If there is a single year on the file, presumably the mean year, this year will be used repeatedly. Normal variation is added to the mean, as specified by the coefficients of variation for rainfall and temperature on the parameter file weather.prm. The number of years on the main base station weather file that is specified on simcon.prm file is used in the randomization process. Managing Ungulates The ungulate population submodel may be switched on or off by the flag ihmodl (0off, 1-on) on the second line of the simcon.prm parameter file. If the population submodel is on, then all the animal species specified on the popprm.prm, distc.prm and cons.prm parameter files will be simulated. Initial population densities are given on the file popprm.prm. Note, there is a parameter called mstrtp on the simcon.prm file that specifies the first month into the simulation to begin simulating ungulate populations. This is needed because when the simulation is first started, live and dead leaf biomasses are initialized to zero. Therefore, ungulates will respond unrealistically until the first forage is produced. Set the mstrtp parameter to the first month when an acceptable forage standing crop is expected (eg. month 5 in a temperate system). The model is initalized with zero forage mass due to the difficulty of reading in maps of initial values for each and every forage variable (green, dead, stems, CAG, for all species) on all of the facets. If the ungulate population submodel is switched off, and the number of ungulate species is greater than zero as specified by nspcon on the same line of simcon.prm, then the model will use ungulate population dynamics data from a data file. The name of the file with that data is specified on the second line of the parameter file distc.prm. The model will simulate herbivory and ungulate energy balances, but total offtake will be dependent on the number of animals on the population data file. Additionally, if ihmodl is set to 2, the population model will run, but predicted results for one or more species will be overridden. If the data override feature is on, then the data on 3 the population dynamics data file for selected species will override model predictions. The parameter ipopfix on the simcon.prm file specifies which species predictions will be overridden. This is useful, for example, when during model calibation, when working on one species in an environment where the other species have not yet been calibrated, or for perturbation experiments. Ungulate population data files are structured as follows. Each line contains one year of data, with values for each ungulate species read across. The format is not fixed so the number of spaces is not important. Culling can be invoked in one of two ways. The first method is to specify numbers of animals removed each year. If the parameter icull is set to 1, annual cull data will be read from a file called cullden.dat, which contains culling data in density units (animals/km2). If icull is set to 2, the data will be read from a file called cullrt.dat, which is file of annual culling rates (ie. proportions of the herd culled). Each line on these files gives a year and a list of numbers of animals, culled for each species. The second method is to use a culling rule specified on the file cull.prm. This method is used if icull is set to 3. Every year, on month moncull, populations are reduced to the specified densities cden (by species). In addition the model will attempt to manage herd composition to achieve the proportions specified by the parameter prsz, for each species. The prsz array contains desired proportions of newborns, immature females and males, and mature females and males, in that order. Forced ungulate distributions can be simulated using "force" maps. If the flag for using force maps on the third line of the distc.prm parameter file is on, then file force.prm will be opened. The file force.prm contains a list of force map file names for controlling ungulate distributions. For each ungulate species, 1-3 force maps can be employed. Each force map is in effect on the flagged months on the force.prm file. Each force map has its own list of flagged months. For example, bison could be confined to a wintering paddock during the month of January by flagging month 1 only. The corresponding force map will have 0 values on grid cells outside the paddock and 1's elsewhere. Using this technique, animals could also be rotated among paddocks on a fixed schedule, using a separate force map for each paddock. There is also an option on the force.prm file to use force maps having values ranging from 0-100. Then, the values are used as weighting factors in determining habitat suitability. For example, relatively more animals will be placed in cells having a value of 100, than 50. Imposing a Fire Regime Savanna does not simulate fire spread or behavior. Instead, fire severity maps (generated from data or from a model) must be provided as model input. To impose fire, set the flag ifiref on the sixth line of the simcon.prm parameter file equal to 1. Then, the data file fires.dat is opened and the date and name of the first fire map is read. If the date of the first fire precedes the first year and month of the simulation, the model will read down to the first scheduled fire. When the simulated time reaches the scheduled fire date, fire maps will be read for each subarea. 4 The file fires.dat is a list of all scheduled fires, their year and month of occurrence, and the names of the corresponding fire severity maps. Fire maps must be provided for each subarea, however, the same map can be used for many subareas. For example, fires might be routinely more severe in runon areas than runoff areas. If fire severity does not differ among subareas, then the same fire map is specified for each subarea. The fire map is a map of fire severity codes. At present, three severity levels are allowed (eg. none=0, light=1, severe=2). Each level elicits plant responses as parameterized on the file fireresp.prm. Specifying Plant Composition There are two ways to prescribe which plant types occur on which facets/subareas. First, if the parameter icinit is set to 1 on the sppmix.prm file, then specific species mixtures of plants will be assigned to each facet type in all grid cells. Mixtures are simple species lists, not proportions. For example, on the tree facet of upland subareas in every grid cell, there could be a deciduous tree, an evergreen tree, an understory shrub and a shade-tolerant herbaceous plant. These are the plants that potentially occur on that facet. Whether or not they actually occur is a simulated outcome of the model. The second way is to use a vegetation type map, if icinit is set to 2. Then, species mixtures will be assigned to each facet according to the vegetation type of the grid cell. A lookup table ( file vegfacet.dat) specifies the potential species mixtures for each facet of each vegetation type. The plant types that are included in each species mixture are specified on the parameter file sppmix.prm. Each mixture is described by the number of herb, shrub, and tree species it contains. The indices of the plant type that compose the mixture are specified. These plant type indices correspond to the order of plant types on the file plfile.prm, which is a list of NPP model parameter file names. In early versions of the model, the shrub population, tree population and NPP submodels were more or less independent. To reduce memory requirements, the number of shrub and tree types in the shrub and tree population models were limited to the maximum number of shrubs and trees types in the ecosystem. As a result, the NPP, shrub population and tree population models currently use different indices to point to the same plant species. Although this will be rectified in future versions of the model, the current version requires some means to align indices in the three models. The plant type indices of the NPP model (all herbs, shrubs, trees) correspond to the ordering of plant types on the file plfile.prm. The plant type indices of the shrub population model correspond to the ordering of plant types on the file shbfile.prm. The plant type indices of the tree population model correspond to the ordering of plant types on the file treecon.prm. On the sixth and seventh lines of the sppmix.prm file, are parameter arrays that point to the indices in the NPP model which correspond to indices in the shrub and tree population models. Conversely, on the ninth line is a parameter array that points to the indices in the shrub model which correspond to indices in the NPP model, and on the eleventh line is a parameter array which points to the indices in the tree model which correspond to indices in the NPP model. 5 So far, we have only specified which plant types occur on which facets. We have not specified their proportions. The initial proportions of herbaceous species in each facet mixture are specified on the file hrbfile.prm. This file either contains a list of file names for herb root biomass on each facet, followed by proportional composition of that root biomass into plant types, or it contains a list of total initial root biomass for each facet type, followed by the proportional composition of the root biomass into plant types. The initial proportions of shrub species are specified on the file shfile.prm. This file either contains a list of file names for shrub height maps on each facet, followed by the proportional composition of the corresponding root biomass into shrub types, or it contains a list of shrub heights for each facet type, followed by the proportional composition of the corresponding root biomass into shrub types. The initial proportions of tree species are specified on map inputs. The file trspfil.prm is a list of file names for the maps of percentage composition (percent of total tree canopy cover) of each tree type on each subarea. There must be one map for every tree type on every subarea. For example, if there is a runoff and runon subarea, and there are coniferous and deciduous tree types in the system, then there must be four maps, for the percentage of each tree type on each subarea. Trees must also be distributed among the six size classes. Rather than reading in a map for each size class, the model uses mean tree height as an indicator of the distribution of heights among size classes. The file trhtfil.prm contains the file names of mean tree height maps for each class of subarea. In addition, trhtfil.prm contains a list of parameter arrays that describe the proportional distribution of trees among size classes in relationship to the mean tree height. In summary, total herb and shrub biomass densities are either specified by typical values for each class of facet, or they are specified on maps of root biomass or shrub heights for each class of facet. Herb and shrub compositions are specified by facet type. Tree composition is specified by percentage-of-canopy-cover composition maps for each tree type. Tree biomass density is an outcome of total tree canopy cover, the composition of that cover by tree type, the mean tree height, and the distribution of plants among size classes for each of six mean tree heights. Specifying Soil Properties The parameter file soil.prm is essentially a lookup table specifying soil properties for each soil type on the soils maps. Each line on the file is a list of parameters for a single soil type. Across each row, are the following parameters: soil type index, depth of bottom layer (cm), volumetric field capacity, volumetric wilting point, volumetric pore space, minimum runoff curve number, maximum runoff curve number, bare soil evaporation parameter, bare soil evaporation depth (mm), depth of bottom of top layer, depth of bottom of second layer (cm), fraction of infiltration routed to layer two by crack flow, fraction of infiltration routed to layer 3 from layer 2 by crack flow. A Model Parameterization Strategy 6 The key to model parameterization and calibration is an incremental or iterative approach. Ideally, process models should be parameterizable based on current knowledge. However, this is an ideal. Modeling and model parameterization are processes in which gaps in knowledge are identified. Model parameterization may, in fact, be a long-term process of parameter refinement. Model parameterization for a site might follow these basic steps. 1. Prepare an ascii weather file and spatial precipitation map file if it is used. 2. Refine the weather parameters in the weather.prm file. 3. Define the spatial extent and grid-cell size of the system. 4. Define the subareas and facets in the system. Function differences among these patch types should be significant at the ecosystem level of organization. (The model is currently limited to herbaceous, woody and shrub facets in that order). 5. Identify plant functional groups or species that confer functionally significant properties at the ecosystem level of organization. 6. Ascribe potential occurrence of plant functional types to particular landscape facets classes (file sppmix.prm). 6. Prepare maps for model input - eg. subarea maps, soils maps, tree and shrub cover maps, tree and shrub height maps, elevation map, tree composition maps. 7. Estimate initial parameter values based on best available information. Although these values may seem like good estimates, any parameter estimate is subject to error. Thus, an iterative process of parameter refinement is essential. 8. Use working copies of plant parameter (NPP and population models) files as initial approximations or templates. While many of these parameters will be incorrect, they will at least be useful as a template for identifying what parameters are needed, and typical values for the parameters. They also provide reasonable values for parameters where there is little information. 9. Turn off the ungulate and wolf models. 10. Try to simulate a single grid-cell. 11. Begin a detailed diagnostic examination of each plant species on each facet in the model. Set the diagnostic facet and subarea, and the diagnostic plant species on the simcon.prm file. Begin an iterative process; run the model, refine parameter estimates, rerun the model and examine model predictions. Simulate a single year to begin with. Leave alone parameter values which have a high degree of confidence. Concentrate on refining parameter estimates with a low degree of confidence. Do this for each plant type on each facet until each species on each facet behaves in a realistic manner. 12. Incrementally substitute parameter values. Fill in parameter values on the working parameter files with best estimates. Change one or several parameter values at a time, rerun the model to ensure that the new values are at least workable, then change several more parameter values and repeat the process until an initial set of revised parameter files is produced. 13. Simulate other single grid-cells to ensure that the model produces reasonable predictions across a wider range of soil types and climatic variation. 14. Simulate larger systems, with more grid cells. Pay increased attention to system level outputs. 7 15. Once the vegetation submodels are working, begin to calibrate the ungulate submodels. Again, use working parameter files as templates. 16. Turn on and calibrate the wolf (predation) submodel. 17. Continue to compare model predictions to observations and refine parameter estimates. 8 Section II. Model Inputs Parameter and Data File Formats Parameter files are structured to match the order of parameter read statements in the model source code. The order of lines on a parameter file is therefore critical. On each line of a parameter file, except for the soil.prm file, there is a parameter value followed by a slash, the parameter name and a comment describing the parameter. Everything to the right of the slash is ignored by the program - it is only to make the parameter files more readable. Parameter files may be edited by any word processor or text editor. However precautions must be taken to ensure that carriage returns are not inserted onto the ends of lines automatically. Many of the parameter file lines are quite long due to the comment. Set a long line length or use a small font size when using such word processors. Since most all of the parameter files are commented, there is little need to discuss exact parameter file contents or structure here. The format of each parameter file can be examined directly by looking at known working copies. If there is a doubt about the ordering of parameters on a file, the code must be consulted. The ordering of "read" statements in the model code can generally by followed even by non-programmers. However, it should be noted that some parameter files are organized into blocks of parameter lines for each plant or ungulate species. For example, there may be a block of parameters for plant species 1, followed by a block of parameters for plant species 2 and so on. These blocks should be discernable on working parameter files. A list of calling routines for each parameter file is provided in Table 1. Parameters may be composed of one to many numeric values, delimited by commas. Parameter digits, decimals and commas can be in any column, ie. the model uses listdirected, unformatted reads. Some parameters are names, ie. ascii strings. In some cases the name must be enclosed in single quotes (refer to a working file). In the documentation, most of the functions are parameterized as a series of connected straight line segments. Then parameters are arrays having several x-y pairs of elements to be used in linear interpolation by the alint function. The alint function linearly interpolates between points on a graph. The x,y coordinates for the points are the elements of the parameter array. The ordering of the elements is: x(1),y(1),x(2),y(2),...x(n),y(n). The number of x,y pairs is fixed. If there are n x,y pairs (four values) on a known working parameter file, then this means that the model assumes that there will be n x,y pairs on the file. More or fewer values will produce serious errors. A second rule is that the x values must be in ascending order. Thirdly, the alint function does not extrapolate. The presumed value of y at x values less than x(1) is y(1). The presumed value of y at x values greater than x(n) is y(n). If fewer than n x,y coordinates are needed for a parameterization, the extra x,y coordinates can be given identical values as the last needed pair. For example the list: 9 0.,1.,2.,2.5,3.,2.5; produces an identical result as the list 0.,1.,2.,2.5. If three x,y pairs are expected by the model, the first list must be used even though the last value has no meaning. In some cases, an alint parameter may be set to have no effect. For example, if the function is a 0-1 multiplier, then a value of 1 has no effect. To make the parameter inoperative, set y equal to 1.0 for all x. For example; 0.,1.,2.,1.,3.,1. will have no effect for a multiplier function. The main base station weather data file and the site precipitation file (if used) are the only files that use a fixed format, ie. the digits and decimals must be in the correct columns. The format for both files is (5x,4x,1x,12(1x,f6.1)). On the monthly weather file, each year is composed of three lines. On the first line is an array of twelve monthly precipitation values (mm). On the second and third lines are the minimum and maximum monthly temperatures, respectively. Comments are placed in the first 9 columns of each row. On a base station precipitation file, each line contains monthly values (mm) for a year for a single base station. Missing values are not allowed on the main base station weather file. Missing values are allowed on a site precipitation file, and must be encoded as -9.0. 10 Table 1. Calling routines for parameter files. Parameter File Name Calling Routine Fixed Name Files condtn.prm cons.prm consnow.prm cull.prm distc.prm fireresp.prm force.prm hrbfile.prm pabvinit.for plfile.prm popprm.prm shbfile.prm shfile.prm simcon.prm slfile.prm snow.prm soil.prm spacedat.prm sppmix.prm subfile.prm weather.prm treecon.prm trhtfil.prm trspfil.prm wolf.prm wtable.prm enbudgt.for consume.for consume.for cullinit.for distrib.for firesp.for distrib.for pbinit.for abvginit.for plinit.for popinit.for shrinit.for shrinit.for init.for init.for init.for init.for init.for sppinit.for init.for init.for wdinit.for wdinit.for wdinit.for wolf.for init.for Variably Named Files primary producer model parameter files shrub population parameter files tree population parameter files producer.for shrinit.for wdinit.for Data Files ascii weather data files base station data ungulate population dynamics file init.for,monwethr.for init.for main.for 11 fires.dat init.for Parameter Files - Functional Grouping Run Control The file simcon.prm contains the parameters that control a simulation. On it are various option flags and timing parameters (eg. starting and ending times). The location and plant type for detailed diagnostic output are specified here. Parameters specifying soil nitrogen processes are located here until a soil decomposition/nitrogen model is attached. The file spacedat.prm contains parameters describing the spatial configuration of the system, such as the number of rows and columns, subareas, facets and their names. If a block of contiguous grid cells is simulated (a subset of the data on input maps), then this is where the range of cells is specified. Climate Data The file weather.prm contains temperature lapse rates, monthly humidity, radiation, precipitation, parameters for potential evapotranspiration, and paramters of the regression equation that relates monthly storm number to monthly rainfall. The names of other weather files are given on simcon.prm (see section on Changing Weather Data). Snow Submodel The file snow.prm contains parameters for snow melting. Soil Parameters The file soils.prm contains the soil parameters for each soil type in the system. The file wtable.prm gives water table depths by soil type. Primary Production Submodel The file plfile.prm has the names of the parameter files for each plant type or species. Primary production submodel parameters are for each plant type or species occur in individual files, the names of which are specified in plfile.prm. Most of these files are specified by the user on the file "plfile.prm". A parameter file called pabvinit.prm initializes aboveground plant biomass variables, by specifying shoot:root ratios and dead N:B ratio for each plant species type. Roots are already initialized, so this is an easy way to initialize shoots. Plant Population Submodels Herbaceous population parameters are presently located on the primary production submodel parameter files for the herbaceous species. The file treecon.prm is a list of file names with parameters for each tree species or functional group. The tree population parameter files specified on the file treecon.prm contain the parameters for tree establishment, mortality, and morphology for each tree species or functional group. 12 The file shbfile.prm contains the list of filenames with shrub population parameters. Shrub population parameter files contain parameters for shrub establishment, mortality and morphology. Plant Fire Responses The parameters describing how plants respond to fire are located on the file fireresp.prm. Ungulate Submodels The simcon.prm file has parameters that control whether the population model is on or off. The number of ungulate species is also specied on this file. The file condtn.prm contains parameters for the simple energy balance submodel. The file enbal.prm contains parameters for the more detailed energy requirement calculation, which is optional. The file cons.prm contains parameters for the herbivory submodel, such as digestibilities of plant tissues, dietary preferences, functional responses, maximum intake rates, and unavailable forage. The file distc.prm contains parameters for the ungulate spatial distribution submodel. The file consnow.prm contains parameters for the effects of snow depth on forage intake rate. Ungulate population data input can be read from a file with herbivore population sizes or densities for each species, one year of data per line. The name of this file is specified on distc.prm. If ungulates distributions are affected by water, the file watrfil.prm must contain lists of water map file names, and parameters describing how ungulates respond to water. Ungulate population parameters are located on the file popprm.prm, along with initial population densities. The file cull.prm specifies if and how ungulate populations are to be culled. 13 Table 2. Parameter file list. Parameter Files with Fixed File Names condtn.prm cons.prm consnow.prm cull.prm distc.prm enbal.prm fireresp.prm fires.dat force.prm hrbfile.prm pabvinit.prm plfile.prm shbfile.prm shfile.prm simcon.prm slfile.prm snow.prm soil.prm spacedat.prm sppmix.prm subfile.prm weather.prm treecon.prm trhtfil.prm trspfil.prm wolf.prm wtable.prm Ungulate energy balance parameters. Ungulate herbivory parameters. Snow effects on ungulate herbivory parameters. Ungulate culling parameters. Ungulate spatial distribution submodel parameters. Ungulate detailed energy requirement parameters. Plant fire response parameters. A list of fire map filenames. Ungulate forced spatial distribution parameters. Initial herbaceous root biomass and species composition Initial aboveground biomass and N:C ratios. Primary production submodel parameter file names. Shrub population parameter file names. Shrub height map file names and species composition. Simulation control parameters. Soils map file names. Snow and snow crusting submodel parameters. Soil parameters. Spatial extent of study area, number of facets, subareas. Defines which plant species occur on which subareas. Subarea cover map, tree and shrub cover map file names. Weather data. List of tree population parameter file names. List of tree height map file names. List of tree species composition map file names. Wolf submodel parameters. Water table depths for each soil type. Primary Production Model Parameter Files - Example File Names Specific to Elk Island N.P. aspen.prm sedge.prm hazel.prm shdgrass.prm spruce.prm sungrass.prm willow.prm Aspen (deciduous trees) Sedge (wetland herbaceous plants) Hazel (upland shrubs) Shade-adapted herbaceous plants (upland tree understory) Spruce - (coniferous trees) Sun-adapted herbaceous plants (upland) Willow (wetland shrubs) 14 Table 2. continued. Shrub and Tree Population Parameter Files - Example File Names Specific to Elk Island N.P. aspnpop.prm hazpop.prm spruce.prm willpop.prm Aspen (deciduous trees) Hazel (upland shrubs) Spruce (coniferous trees) Willow (wetland shrubs) Weather Data Files - Example File Names Specific to Elk Island N.P. ei8190_m.wth ei3890_m.wth Monthly weather data 1981-1990. Monthly weather data 1938-1990. Ungulate Population Dynamics Data Files - Example File Names Specific to Elk Island N.P. popm3590.dat popi6090.dat Elk, bison and moose populations the main park 1935-90. Elk, bison and moose population in isolation area 1960-1990. 15 Spatial Input Data (Maps) General Spatial data take the form of raster (grid) maps. Data may be read in ARC GRID or GRASS ascii formats or in IDRISI binary format. The option to read ARCINFO vs. GRASS vs. IDRISI is specified by a flag on the file simcon.prm. The ARC GRID ascii format is described in ESRI documentation. The first fourteen lines contain header information. Thereafter each line of data corresponds to a single row on a map. Row one, at the top of a map, is the first line in the file. The GRASS ascii format is much like the ARC GRID format, with 14 rows of header information. The header is formatted differently, but the data are formatted essentially the same as on ARC GRID files. Ascii data can be real or integer, but non-categorical data will be converted to real on input, The IDRISI binary format is discribed in their documentation. All IDRISI input files that are non-categorical must be real (4 byte) numbers for Savanna. Categorical data (eg. soils, vegetation, fire, force maps) must be integer (2 byte) numbers. The record length of the files is either 4 or 2 bytes. Numbering starts with the top row of a map, with columns looping within rows. Rather than open all the .doc files for each map, the program expects to find a small file called llcoord.dat with the x and y coordinates of the lower left corner of all the maps in the study area. Subarea Cover Maps These are maps of the percentage of each grid cell covered by a subarea. One map must be provided for each subarea. The total cover of all types of subareas must be 100%. The names of the subarea maps are specified on the file subfile.prm. The units are percentages. Elevation Map An elevation map, giving mean elevation in each grid cell must be provided. The name of this map is specified on simcon.prm. Units are meters. Soils Maps A soils map is needed for each subarea. The names of these maps are listed on the file slfile.prm. Units are soil type indices (ordinal numbers). The soils map for the first subarea is also used as a general mask for the study area. A zero value indicates a masked grid cell. Data are categorical. Tree Canopy Cover Maps These are maps of the percentages of each subarea in a grid cell covered by tree canopy. There must be one map for each subarea. The names of the files are specified on subfile.prm. Units are percentages. Shrub Canopy Cover Maps 16 These are maps of the percentages of each subarea in a grid cell covered by shrub canopy. For each subarea, a map must be provided for both overstory and understory shrub cover. The names of these files are specified on subfile.prm. Units are percentages. Since understory shrub cover is presumed to occur beneath tree canopies, understory shrub cover on a subarea of a grid cell should not exceed tree cover. Similarly, overstory shrub cover plus tree cover cannot exceed 100%. Tree Height Maps Tree height maps are used to initialize the tree population size class distributions. A mean tree height map for each subarea is required (ie. one for upland and one for wetland trees). The names of the map files are specified on the trhtfil.prm parameter file. Units are meters. Shrub Height Maps Shrub height maps are optionally used as specified by a flag on the file shfile.prm. Otherwise, characteristic shrub heights are specified for overstory and understory shrubs on each subarea. Shrub heights are used to initialize plant sizes (roots/plant). File names are given on shfile.prm. Units are meters. Tree Species Composition Maps Total tree canopy cover is divided among tree species according to values on these maps. There must be a single map for each tree species/group on each subarea. For example, if there are two tree groups and two subareas, four maps are needed. The names of these maps are specified on the file trspfil.prm. The units are percentages. Vegetation Type Map Plant mixtures can be assigned to each facet of each grid cell depending on the vegetation type that dominates the grid cell (icinit=2 on the sppmix.prm file). Vegetation types are read in from a vegetation map. In turn, a lookup table (file vegfacet.dat) related mixtures on facets to the vegetation types on the map. Data are categorical. Herbaceous Root Biomass Maps Herbaceous root biomass maps are used if the flag on the hrbfile.prm parameter file is set to one. Otherwise, a typical root mass for each facet type is given. If maps are used, a map for each facet type is needed. Units are g/m2 roots. Fire Maps If fires are simulated, the distribution of each fire must be recorded on a fire map. The names of the fire map files are specified on the file fires.dat. Fire maps are maps of fire severity codes. There must be at least one fire severity class in addition to the unburned class (eg. 0=unburned, 1=burned). Up to three classes may be used (eg. 1=light, 2=moderate, 3=intense fire damage). Data are categorical. Maps That Affect Ungulate Spatial Distributions 17 These maps are only required when the factor in question is being used to calculate habitat suitability. These options are invoked by flags on the distrib.prm parameter file. Slope Map. A slope map is only needed if ungulate habitat suitability is affected by slope. The units on the map are percent slope. The name of the slope map is specified on the distrib.prm parameter file. Preferred Area Map. This is simply a map of 0s and 1s indicating whether the cell is a preferred area or not. The name of this file is specified on the distrib.prm file if this option is used. Data are categorical. Force Maps. These are maps rating the suitability of each grid cell by some degree of external "force". For example this may be used to describe fenced out areas, danger due to proximity to predators. The force suitability index ranges in value from 0-1. Force map file names are specified on the force.prm parameter file. Data are categorical. Water Maps. The names of the water map files are specified on the file watrfil.prm. For each type of water (eg. seasonal freshwater wells), a map of minimum distance to water (km) and a map of effective discharge (m 3/d) must be supplied. Monthly Precipitation Maps Dynamic rainfall maps are optional, as set by a flag on the simcon.prm parameter file. The file name is specified in the simcon.prm parameter file. The data are encoded as mm*10. The maps for each month are stored sequentially on a single binary (random access) file. The first record for each month corresponds to the bottom map row, and each record is a string of two byte integers corresponding to map columns. Thus, the first record number of a given date may be computed as the number of rows per map times the number of months to skip, plus one. 18 Section III. Model Output Preface Model outputs are written to numerous output files, all of which have a *.out file name extension. Most output files are organized to be usable by plotting or presentation graphics software, to plot variable values against simulated time. These are referred to as temporal plot files. They are comma-delimited, with the month/year in the first column. Temporal plot file output is usually saved at monthly intervals, however the output interval can be changed by a parameter on simcon.prm. Most of the output files contain ecosystemlevel output, that is they are area-weighted values over all of the facets and grid cells in the ecosystem. Diagnostic output files (diag*.out) are temporal plot files for a single species on a single facet of a single grid-cell. Tabular output files (report.out and reportc.out) are not formatted for plotting, but are used to examine model details. Finally, the image file image.img is a compressed, binary formatted file of dynamic output maps. Output Summarized by Output File Biom1.out This file contains system-level rainfall, plant production, and consumption by herbivores, broken down into herbaceous and shrub functional groups. Tree NPP and consumption is on file tree2.out. The routine with the write statement is svland.for Variables 1. yppt- Accumulated Precipitation (mm) 2. yranpp(1) - Accumulated aboveground production of herbs (g/m2) 3. yranpp(2) - Accumulated aboveground production of shrubs (g/m2) 4. yrbnpp(1) - Accumulated belowground production of herbs (g/m2) 5. yrbnpp(2) - Accumulated belowground production of shrubs (g/m2) 6. yrcon(1) - Accumulated herbivore offtake of herbs (g/m2) 7. yrcon(2) - Accumulated herbivore offtake of shrubs (g/m2) Biom2.out This file contains system-level standing stocks of leaf, wood/stem, roots by functional group (herb, shrub, tree). The routine with the write statement is svland.for Variables 1. sysppt - Monthly precipitation (mm) 2. sysgb(1) - Green leaf mass of herbs (g/m2) 3. sysgb(2) - Green leaf mass of shrubs (g/m2) 4. sysgb(3) - Green leaf mass of trees (g/m2) 5. syswd(1) - Stem mass of herbs (g/m2) 6. syswd(2) - Stem mass of shrubs (g/m2) 7. totgrn - Total green leaf mass plus herb stems (g/m2) 8. sysrt(1) - Root mass of herbs (g/m2) 19 9. sysrt(2) - Root mass of shrubs (g/m2) 10. sysrt(3) - Root mass of trees (g/m2) Pptsnw.out This file contains system-level data for precipitation and snow water content, depth and crusting. Variables 1. yppt - Accumulated precipitation (mm) 2. sysppt - Monthly precipitation (mm) 3. syspet - Monthly potential evapotranspiration (mm) 4. ppt3m - Running mean precipitation in last 3 months (mm) 5. ppt12m - Running mean precipitation in last 12 months (mm) 6. snodep - Snow depth (cm) 7. avgcrst - Proportion of grid cells crusted over during month Tree1.out This file contains system-level tree cover. Woody cover and population densities by subarea and tree type. The writing routine is trsysout.for. Note that what is written depends on the particular assignment of tree species to subareas in the application. Here, Elk Island N.P. variables are shown. Variables 1. sysppt - Annual precipitation (mm) 2. syscvr - Total tree cover (fraction) 3. subc(1) - Tree cover on uplands (fraction) 4. subc(2) - Tree cover on wetlands (fraction) 5. sbtot(1,1) - Density of deciduous upland trees (#/km2 subarea) 6. sbtot(2,1) - Density of coniferous upland trees (#/km2 subarea) 7. sbtot(1,2) - Density of deciduous wetland trees (#/km2 subarea) 8. sbtot(2,2) - Density of coniferous wetland trees (#/km2 subarea) Tree2.out This file contains system-level annual production accumulators for all trees analogous to biom1.out. The routine with the write statement is trsysout.for Variables 1. sysppt - Annual precipitation (mm) 2. syswdg - Wood production (g/m2) 3. sysrtg - Root production (g/m2) 4. syslfg - Leaf production (g/m2) 5. syshbv - Herbivore offtake (g/m2) 20 Shrub1.out This file contains system-level shrub cover on each subarea and current annual stem biomass in g/m2 of subarea. The routine with the write statement is shsysout.for. It might be useful to divide items 2 and 4 by tree cover (wdcvr(nsub,narea) to get understory cover per unit of tree cover. Note that what is written depends on the particular assignment of shrub species to subareas in the application. Variables - 1. subco(2,1) - Understory upland shrub cover (on subarea) 2. subco(3,1) - Overstory upland shrub cover (on subarea) 3. subco(2,2) - Understory wetland shrub cover (on subarea) 4. subco(3,2) - Overstory wetland shrub cover (on subarea) 5. subcg(2,1) - Understory upland current annual stem growth (g/m2) 6. subcg(3,1) - Overstory upland current annual stem growth (g/m2) 7. subcg(2,2) - Understory wetland current annual stem growth (g/m2) 8. subcg(3,2) - Overstory wetland current annual stem growth (g/m2) Shrub2.out This file contains system-level shrub population densities on each subarea and wood biomass in g/m2 of subarea. The routine with the write statement is shsysout.for. It may be useful to divide all understory items by the overstory tree cover on the subarea to express results in terms of per ha of tree cover (see note for shrub1.out). Note that what is written depends on the particular assignment of shrub species to subareas in the application. Variables - 1. subp(2,1) - Understory upland population density (#/ha subarea) 2. subp(3,1) - Overstory upland population density (#/ha subarea) 3. subp(2,2) - Understory wetland population density (#/ha subarea) 4. subp(3,2) - Overstory wetland population density (#/ha subarea) 5. subb(2,1) - Understory upland current annual stem growth (g/m2) 6. subb(3,1) - Overstory upland current annual stem growth (g/m2) 7. subb(2,2) - Understory wetland current annual stem growth (g/m2) 8. subb(3,2) - Overstory wetland current annual stem growth (g/m2) Consum.out This file contains herbivore condition indices, mean available graze to grazers, mean available browse to browser, mean digestibilities of diets. The routine with the write statement is svland.for. The species referred to are particular to the application (Elk Island N.P.). Variables - 1. cond(1) - Condition index of elk. 2. cond(2) - Condition index of bison. 3. cond(3) - Condition index of moose. 4. sysgrz(1) - Mean available graze for elk (g/m2) 5. sysgrz(2) - Mean available graze for bison (g/m2) 6. sysbrs(3) - Mean available browse for moose (g/m2) 8. digest(1) - Digestibility of elk diet 21 9. digest(2) - Digestibility of bison diet 10. digest(3) - Digestibility of moose diet Diag1.out This file contains diagnostic output for a single plant species on a single location (a facet on a grid cell). The plant type and location are specied on simcon.prm. The routine with the write statement is producer.for. Variables 1. ppt(narea) - Monthly precipitation for the grid cell. 2. gbiom(nsp,nloc) - Green leaf biomass (g/m2 facet) 3. wood(nsp,nloc) - Stem (wood) biomass (g/m2 facet) 4. cagw(nsp,nloc) - Current annual stem biomass (g/m2 facet) 5. root(nsp,nloc) - Root biomass (g/m2 facet) 6. dedb(nsp,nloc) - Dead leaf (and stem for herbs) (g/m2 facet) 7. glai(nsp) - green leaf area index 8. dlai(nsp) - dead leaf area index Diag2.out This file contains diagnostic output for a single plant species on a single location (a facet on a grid cell). Phenology, plant nitrogen, snow and soil water. The routine with the write statement is producer.for. Variables 1. phen(nsp,nloc) - Phenophase (0-4) 2. phendd(nsp,nloc) - Total degree days in growth cycle 3. pnc(nsp,nloc) - Plant N:B ratio (gN/g biomass) 4. pnclf(nsp,nloc) - Green leaf N:B ratio (gN/g biomass) 5. wc(nsp) - Available water:PET ratio, (Avlwt:PET), (no dimensions) 6. swatr(1,nloc) - Soil water content, top layer (mm) 7. swatr(1,nloc) - Soil water content, middle layer (mm) 8. swatr(3,nloc) - Soil water content, bottom layer (mm) 9. snowat(nloc) - Snow water content (mm) 10. ncrust(nloc) - Snow crusting flag Diag3.out This file contains diagnostic output for a single plant species on a single location (a facet on a grid cell). Effects on stomatal conductance and photosynthesis, potential and realized stomatal conductance, Ps rate. The routine with the write statement is producer.for Variables 1. efnp(nsp,nloc) - Effect of leaf nitrogen on Cs, Ps (0-1) 2. eftp(nsp,nloc) - Effect of temperature on Cs, Ps (0-1) 3. efwp(nsp,nloc) - Effect of Avlwt:PET on Cs, Ps 4. eflp(nsp,nloc) - Effect of light on Cs, Ps 5. cs(nsp) - Potential stomatal conductance before being limited by competition (cm 3/mg leaf/d) 6. cs1a(nsp) - Realized stomatal conductance after limitation by competition (cm 3/mg leaf/d) 7. psrt(nsp) - Potential photosynthesis rate before competition 22 limitation (g/g/d) 8. psrta(nsp) - Realized Ps rate after competition (g/g/d) Diag4.out This file contains diagnostic output for a single plant species on a single location (a facet on a grid cell). Production accumulators, soil nitrogen. The routine with write statement is the producer.for Variables 1. totabp - Total aboveground production (g/m2 facet). If the diagnostic species is a tree, this is leaf production only. 2. totbnp - Total belowground production (g/m2 facet). This is blank if the diagnostic species is a tree. 3. totnpp - Total above plus belowground production (g/m2 facet) 4. totcon - Total herbivore offtake (g/m2 facet) 5. totnup - Total plant nitrogen uptake (g/m2 facet) 6. totnfl - Total nitrogen return to soil (gN/m2 facet) 7. smint - Soil mineral nitrogen (gN/m2 facet) 8. som1(nloc) - Active pool organic soil nitrogen (gN/m2 facet) 9. tsdcon - Total herbivore offtake of seeds (g/m2 facet). This is blank if the diagnostic species is a tree. Diag5.out This file contains diagnostic output for a single plant species on a single location (a facet on a grid cell). Seed biomass and herbaceous, shrub plant populations. The routine with writes is producer.for Variables 1. wc(nloc) - Available water:PET ratio 2. seedp(nsp,nloc) - Seed mass on plant (g/m2 facet) 3. seeds(nsp,nloc) - Seed mass in soil (g/m2 facet) 4. tsdcon - Herbivore offtake of seeds (g/m2 facet) 5. rsz - Plant size (g root/plant) 6. pnum - Plant density (#/m2 - herbs, #/ha - shrubs) 7. temper - Mean daily temperature (oC) Pop.out This file contains ungulate population sizes, culling offtakes. The routine with writes is popd.for. Species referred to are specific to the application (Elk Island N.P.). Variables 1. hpopt(1) - Elk number (total # in system) 2. hpopt(2) - Bison number (total #) 3. hpopt(3) - Moose number (total #) 4. hpopt(4) - reserved 5. Cull(1) - Total elk culled (total #/month) 6. Cull(2) - Total bison culled (#/month) 7. Cull(3) - Total moose culled (#/month) 8. cull(4) - reserved 23 Bdrate.out This file contains ungulate birth and death rates. The routine with the write statement is popd.out. Species are specific to the application. Variables 1. birtht(1) - Elk born (#/month) 2. birtht(2) - Bison born (#/month) 3. birtht(3) - Moose born (#/month) 4. death(1) - Elk mortality (#/month) 5. death(2) - Bison mortality (#/month) 6. death(3) - Moose mortality (#/month) 7-9. hpopt(1-4) - Ungulate population sizes, as in pop.out Diagpop.out This file contains diagnostic ungulate population output, for a single species specified on the popprm.prm file. The routine with the write statement is popd.out. Variables 1. brr - birth rate (#/#/month) 2. drr(1) - death rate of newborn (#/#/month) 3. drr(2) - death rate of immature females (#/#/month) 4. drr(3) - death rate of immature males (#/#/month) 5. drr(4) - death rate of mature females (#/#/month) 6. drr(5) - death rate of mature males (#/#/month) 7. cond - condition index of the species 8. conges - mean condition index during gestation period Wolf.out This file contains the wolf model output. The routine with the write statement is wolf.for Variables 1. wolfn - Wolf population size (total # in system) 2. r - intrinsic rate of increase (yr-1) 3. fresp -functional response (same units as r, yr-1) 4. twdisp - total wolfs left system (#/yr) 5. prkill1 - elk killed (animals/yr) 6. prkill2 - bison killed (animals/yr) 7. prkill3 - moose killed (animals/yr) Report.out This is a tabular output file that provides a detailed report of the model for one to several grid-cells. This report is useful during the model calibration process, but can be used anytime to verify model performance. The output grid-cell(s) is specified in the simcon.prm parameter file. The report is generally written once per year, but the interval can be changed by parameters on simcon.prm. For example, reports can be produced every other year, bimonthly in the alternating year (refer to simcon.prm parameter file description). Outputs are summarized by plant species or type, at the facet level and at the grid cell level. Here, one can examine how all the facets on a grid cell are behaving. The grid-cell level output is a 24 cover-weighted average of facet level results. This file also contains a detailed breakdown of the water budget of each facet. Reportc.out This file contains ungulate diet compositions, total forage intakes and components of their energy balance. Output is at the ecosystem level. Here, ungulate diets are summarized by plant type and tissue type. This information is useful when calibrating dietary preference indices. Total ungulate forage intake is useful since it can be compared to forage availability to analyze how near stocking rates are to carrying capacity, or how food limited the populations are. Components of the energy balance are given, including costs of traveling and distance to water. Image.img This is a compressed, binary (random access) file of map output from the model. The record length of the file is determined as the number of columns on a map times two. Each record contains a row of grid cell data. At present, 14 variables are saved as 2 byte integers. An ascii header file, image.hdr, accompanies image.img. The first ten lines of the header file contain: 1) number variables saved, 2) number of rows, 3) number of columns, 4) number of dates saved, 5) grid cell width (m), 6) xll- lower left hand corner longitude, 7) ylllower left hand corner latitude, 8) first month saved, 9) first year saved, 10) monthly flags indicating which months were saved. Lines 11-24 contain character names of each of the 14 variables. Lines 25 and 26 are minimum and maximum values of each variable, respectively. Each record of the image.img file holds the values for a single row of grid cells for a single date for a single variable. The record number can be computed from the grid-cell number and the date (image) number as where nr is the row number on a map (bottom is one). nimgsv is the index of the image (date) on the map, and nrows is the total number of rows on a map. The variables saved are 1) monthly precipitation (mm), 2) woody cover, 3) shrub cover, 4) total green biomass (g/m2), 5) herbaceous green biomass, 6) shrub green biomass, 7) tree green biomass, 8) snow water content (mm), 9) available forage for the selected ungulate and forage type (see simcon.prm), 10) not used, 11-14) densities of ungulates (#/km 2) species 1-4. Graphical Output Tools and Techniques Temporal Plots Temporal plot files should be readily imported into commercially available plotting and graphics programs. Some such programs, however, may not be able to handle the date 25 format which is: month/year. The month/year may need to be converted to a single number using a user-supplied program. Some software packages allow the creation of "templates" which are blank preformatted plots, often with hard-coded links to data files. Once the templates are created for each of the .out temporal plot files, only the templates need be called to view results. Spatial Output Using a GIS The img2gis.for (fortran) program is used to convert from the image file format of image.img to .asc ascii file formats that can be read into ARC GRID or GRASS, or to the binary real .img files and associated .doc files that can be read by IDRISI. The program gets information about the image.img file from the associated header file image.hdr. This has the number of rows and columns, the number of months and which months were stored, the variable names etc. The input parameters for a run of imagasc are read from a file called imget.dat, which species the format to write to, the variables to retrieve and the dates to retrieve. The first and last year are give, and flags for each of the 12 months. Flags retrieve each of the 14 variables currently saved on the image.img file. The output maps are written into file names with a nameing convention as follows. Characters 1-2 are the first 2 characters of the variable name. Characters 3-4 is the month in two digits (ie. 01 not 1). Characters 5-8 is the 4 digit year. Thus pr011990.asc is the name of the file for precipitation in January of 1990. The IDRISI map would be pr011990.img. It is suggested that this program be run in a separate directory from where the .asc or .img input files to the model are stored, so that the created output maps be deleted using a wildcard like "del *.img" without also erasing the input data. Quick Spatial Output The imagedis.bas (quick basic) program displays time series of images from maps that are stored on the image.img output file. The advantages of using this program rather than going through a GIS are that it accesses the image.img file directly, multiple months of output can be viewed on the same screen, and one can rapidly advance forward or backward among months of output. When the program asks to enter the filename with image data, state 'image.img'. The program shows the time range of the data on the file and asks if you would like to skip ahead some dates for the first image viewed. The program shows the variables that were saved as dynamic output maps. You select the variable to be displayed. The maximum and minimum values of the variable encountered during the simulation are displayed. The color code of the images will be scaled into classes that span the range between the minimum and maximum values. You can specify a range. A character string can be placed on the plot as a title. The code used to signify masked cells on the output maps on image.img is -999, which must be 26 specified. Images can be displayed a number of ways, from 1 to 12 images on a single screen. It is possible to display a paired comparison of two different variables side by side on the screen. When a paired comparison is chosen then you can compare two variables from the current file or with a variable on another same-length image.img file. When all the questions are entered the image(s) are displayed. You can toggle forward to another set of dates by pressing the + key (forward) or the - key (backward). The color scheme used ranges from warm tones (red) for lowest values, to cool tones (blue) for highest values (ie. red, orange, yellow, light-yellow, light green, green, light blue, blue, purple, white). 27 Section IV. Procedural Organization of the Model Introduction The code for the model, which is written in ANSI Standard Fortran-77, is organized into modular subroutines. The overall flow of procedures in the model is displayed in Fig. 1. The main program has a monthly time loop. The ungulate population model and the wolf model are called monthly. Portions of the tree population submodel are called annually. The main program calls the subroutine svland every month. Svland contains the weekly time step loop, and it calls most of the other submodels. Note that the ungulate distribution model is called monthly. Importantly, the weekly time step loop is within the grid-cell loop. The facet/subarea loop is within the weekly loop. A tree diagram of main program subroutine calls is provided in Fig. 2. A tree diagram of svland subroutine calls is shown in Fig. 3. Descriptions of subroutine functions are provided in Section VI. 28 Figure 1. Program Procedure Flow. Main Program Initialize Loop Over Months Fire Maps Read Call Svland Program Call Pastoralism Submodel (not used for Elk Island) Call Ungulate Population Submodels Call Wolf Model Call Tree Death, Sizes, Cover on Month 12 End Svland Program Read Weather Data Calculate Ungulate Spatial Distribution Loop Over Grid Cells Fire Effects on Plants Calculate Grid Cell Micromet Variables (Vdef, PET, T) Determine Grid Cell Precip Loop Over Weeks Calculate Runoff, Partitioning of Precipitation Snow Crust Distribute Herbivory Among Patches, Forage Loop Over Subareas and Facets Snow Submodel Bare Soil Evap Submodel Wood Biomass Allocation Pattern Ungulate Forage Intake Shrub Population Submodels Tree Germination Net Primary Production Submodel Soil Water Update Soil N Update Update Accumulators End End Update Accumulators Call Report Output Routine Call Image Output Routine Recalculate Animal Condition Index End 29 Figure 2. Tree diagram of the Savanna model code. P._ - program, S._ - subroutines, F._ function subprograms. The subtrees of the svland.f subroutine are shown in Figure 3. .)P.MAIN /)S.INIT * /)F.RAND * /)S.SPATLPPT * * /)F.XNORM * * * .)F.RAND * * .)S.MAPREADD * .)S.MAPREAD /)S.SPPINIT * .)S.MAPREAD /)S.PLINIT /)S.WDINIT * /)S.TREETHIN * /)S.MAPREAD * /)S.WDALLOC * .)S.TREECVR /)S.PBINIT * /)S.MAPREAD * /)S.TRWDENS * /)S.TRRDENS * .)F.ALINT /)S.SHRINIT * .)S.MAPREAD /)S.FIRERESP * /)S.HERBFIRE * /)S.TREEFIRE * * .)S.TRSUCKER * /)S.TRWDENS * /)S.TRRDENS * /)S.TREECVR * /)S.SHRBFIRE * .)F.ALINT /)S.DISTRIB * /)S.MAPREAD * .)F.ALINT /)S.CONSUME * /)F.CVRLOC * /)S.AVLFOR * * /)S.WDFORAV * * /)F.ALINT 30 Fig. 2. continued * * .)S.SHRBSIZ * /)F.ALINT * /)S.TREEBRWS * /)S.TRWDENS * .)S.TRRDENS /)S.ENBUDGT * .)F.ALINT * .)F.ENREQR /)S.POPINIT * .)F.ALINT /)S.CULLINIT /)S.WOLF /)S.MONWETHR /)S.MAPREAD /)F.RAND /)S.SVLAND (See separate diagram for subtrees) /)S.CULLPOP /)S.POPD * .)F.ALINT /)S.DELWTDTH .)S.TREECALL /)S.TREEPOP * /)S.WBSUB * /)S.TREEBIOG * * /)S.TRSHADE * * * /)S.AREAINDX * * * /)S.SHADING * * * /)F.ALINT * * * .)F.PMRAD * * .)F.CVRLOC * /)S.TREEDTH * * .)F.ALINT * /)S.TRWDENS * /)S.TRRDENS * .)S.TREECVR /)S.TREEREP .)S.TRSYSOUT 31 Figure 3. Tree diagram for subroutine SVLAND. .)S.SVNLAND /)F.RAND /)S.MAPREADD /)S.PPTINTER * . F.REGRESS /)S.SPATLPPT * /)F.XNORM * * .)F.RAND * .)S.MAPREADD /)F.XNORM * .)F.RAND /)S.MAVGPPT /)S.DISTRIB * /)S.MAPREAD * .)F.ALINT /)S.CRUST * /)F.ALINT * .)F.RAND /)S.FIRERESP * /)S.HERBFIRE * /)S.TREEFIRE * * .)S.TRSUCKER * /)S.TRWDENS * /)S.TRRDENS * /)S.TREECVR * /)S.SHRBFIRE * .)F.ALINT /)S.PRSTLR /)S.SURFRAD * .)S.AREAINDX /)S.STRMNUM /)S.STRMSIZ * .)F.RAND /)F.ALINT /)S.RUNSTRM * /)S.AREAINDX * .)S.SCSRUN /)S.ROUTE /)F.CVRLOC /)S.DIETPATCH * /)F.CVRLOC * .)S.AVLFOR 32 Figure 3. continued * /)S.WDFORAV * /)F.ALINT * .)S.SHRBSIZ /)S.SNOWPAK * .)F.ALINT /)S.BEVAP * .)S.EVAPR /)S.WDALLOC /)S.CONSUME * /)F.CVRLOC * /)S.AVLFOR * * /)S.WDFORAV * * /)F.ALINT * * .)S.SHRBSIZ * /)F.ALINT * /)S.TREEBRWS * /)S.TRWDENS * .)S.TRRDENS /)S.SHRBCVR /)S.SHRBSIZ /)S.SHRBDTH * .)F.ALINT /)S.TREEGRM * .)F.ALINT /)S.SHRBGRM * .)F.ALINT /)S.BIOMGRM * .)F.ALINT /)S.HRBDTH * .)F.ALINT /)S.PRODUCER * /)S.AREAINDX * /)F.ALINT * /)S.SHADING * /)F.PMRAD * /)S.TRSHADE * * /)S.AREAINDX * * /)S.SHADING * * /)F.ALINT * * .)F.PMRAD * .)S.POTNPP * /)F.ALINT 33 Figure 3. continued. * .)F.OPTTEMP /)S.DRAIN /)S.ACCUM /)S.ENBUDGT * .)F.ALINT /)S.REPORT * .)F.CVRLOC /)S.IMAGESV * .)F.CVRLOC /)S.CONDINDX /)S.SHSYSOUT .)S.CONSREP 34 Section V. Subroutines and Their Functions Introduction An alphabetized list of model subroutines is provided here. The model source code is heavily commented, and it may be instructive, even for non-programmers, to refer to the source code to understand exactly what the model is doing. It is often useful to use the UNIX grep utility to find where in the source code certain variables and parameters are used, where they are read in, and where they are written out. Subroutine Name and Function List abvginit.for - Initial aboveground biomass and nitrogen state variables for the plant production submodel. accum.for - Accumulates total net primary production (NPP) and water flows for each facet. Results are reported in the "report.out" output file. alint.for - Linearly interpolates between values supplied in table form. areaindx.for - Computes leaf and stem area indices for a plant type. avlfor.for - Calculates available forage mass in grams per square meter of patch or facet area, accounting for snow, ungrazable biomass and shrub size. bevap.for - Compute bare soil evaporation loss by looping over a rain day an subsequent norain days, calling evapsmp. biomgrm.for - The biomass-based seed germination/establishment and seed bank sub-model. condindx.for - Computes ungulate condition index due to weight changes and changes in age/sex ratios due to population dynamics. consrep.for - Writes summary output for ungulate forage consumption, such as forage intake and diet composition. Results are written to the "reportc.out" output file. consume.for - Initializes ungulate herbivory submodel. Calculates forage intake rate per animal of each forage type based on maximum intake rates, the results of the functional response, forage quality and snow cover. Based on the distribution of animal foraging days among forage types, it then calculates total forage offtake. 35 crust.for - Stochastically determines if there is a snow crusting event. cull.for - Culls ungulate herds based on data in the cull.dat input file or implements a rulebased cull. cvrloc.for - Computes the fraction of a grid cell covered by any facet. delwtdth.for - Calculates change in population animal condition index due to mortality, assuming animals in worst condition are the ones that die. dietpatc.for - Determine how herbivory is distributed among patches (facets) within a grid cell based on forage abundance and dietary preferences. Output can be viewed as the distribution of animal foraging days among forage types. distrib.for - Distributes herbivore populations among grid cells according to calculated habitat preference indices. drain.for - Drain water in excess of field capacity from each layer, into the next lowest layer according to a tipping bucket model. Also if the water table is within the soil profile, ensure water in the corresponding depth zone is saturating. enbudgt.for - Calculates ungulate energy budgets based on energy intake and costs of maintenance, travel, lactation. Uses energy budget to derive mean animal body weight. enreqr.for - The more detailed ungulate energy requirement calculation which accounts for temperature and thermoregulation. evapsmp.for - Compute bare soil evaporation using Ritchie's two stage model. fireresp.for - The fire response submodel. It calls routines that find plant responses to fire due to mortality and size reversals. Biomass losses are calculated here. herbfire.for - Finds herbaceous plant responses to fire. hrbdth.for - Calculates mortality of herbaceous plants. imagesv.for - Output image (map) data to a compressed binary file. init.for - The main initializing routine for the model. main.for - The main routine, with the monthly time loop. 36 mapread.for - Reads in an input map in either binary format or ARCINFO grid ascii file format. mapreadd.for - Reads in a monthly rainfall map in binary compressed format. mavgppt.for - Compute moving average rainfall or rainfall in last three and twelve months. monwethr.for - Read in data from a monthly weather file. norm.for - Sample from a normal distribution. opttemp.for - Calculate the effect of temperature on stomatal opening or photosynthesis using a bell shaped curve. pbinit.for - Initialize the state variables in the primary production submodel. plinit.for - Initialize the primary production submodel parameters. pmrad.for - Calculate the effect of light (photosynthetically active radiation) on stomatal opening and photosynthesis rate. popd.for - The ungulate population submodel. popinit.for - Initializes the ungulate population submodel. potnpp.for - Calculate the potential net primary production rate (before competition) based on stomatal conductance responses to water, light, temperature and nitrogen. pptinter.for - Does a spatial interpolation for precipitation, accounting for elevation effects if they are significant. producer.for - The primary routine of the primary production submodel. Calls potnpp.for, accounts for competitive interactions among plant species based on light, water and nitrogen, allocates production, tracks phenology, implements plant nitrogen uptake, transfers tissues to litter. The diagnostic output for plants and soil water is written from this routine, to diag1.out - diag5.out. prstlr.for - Computes potential evapotranspiration using the Priestly-Taylor equation. rand.for - Select a uniform random number. regress.for - Performs a regression of precipitation on elevation. 37 report.for - Write summary output to file "report.out" for a single or a limited number of grid cells. Output is reported for each facet and summarized for an entire grid cell. route.for - Calculates the fraction of precipitation that drains to various soil layers or is leached from the soil based on current soil water status, runoff, crack flow. runstrm.for - Calculates the fraction of rainfall that runs off by calling the routine scsrun.for. scsrun.for - Calculate runoff based on the SCS curve number method. shading.for - Determine the mean light intensity in a plant canopy. shrbcvr.for - Finds the fraction of a grid-cell subarea covered by shrubs based on total root biomass. It then corrects shrub biomass densities per meter square of facet based on the calculated change in cover on the subarea. shrbdth.for - Determines shrub mortality. shrbfire.for - Calculates shrub responses to fire. shrbgrm.for - Calculates shrub establishment rate in simple demographic terms. shrbsiz.for - Calculate shrub size in grams of root and stem per plant. shrinit.for - Initializes the shrub population model. shrsysout.for - Writes shrub population outputs to shrub1.out and shrub2.out. snow.for - Calculates snow accumulation and melting. spatlppt.for - Computes a spatial rainfall distribution for the whole system when only reading in single-valued monthly rainfall for a base station. Uses the spatial distributions on a monthly rainfall map file. sppinit.for - Initializes plant species indices defining what species occur on what facets and subareas. Reads in from the file sppmix.prm. strmnum.for - Determines the mean number of storms per month and mean storm size based on monthly rainfall. strmsiz.for - Randomly determine a storm size based on a gamma distribution, and mean storm size. 38 surfrad.for - Calculates the effect of leaf area and mulch shading on potential evapotranspiration rate at the soil surface. svland.for - This is called monthly from main.for and it in turn calls most of the other model modules, passing information from one module to another. It contains the micrometeorological equations as well as a highly simplified soil nitrogen submodel. The weekly loop within months is located in this routine. Some output functions are located here, primarily output written to the files biom1.out - biom4.out. treebiog.for - Calculates individual tree root and stem biomass growth based on the total production predicted by the net primary production submodel. It then calculates the fraction of trees promoted to the next size class. treebrws.for - Calculates responses of tree populations to browsing, including reversals of trees to smaller size classes and tree mortalities, and associated biomass transferred to litter due to tree mortality. treecall.for - Calls treepop.for and treesysout.for on an annual basis for each grid cell. treecvr.for - Compute fraction of a grid cell subarea covered by trees based on rooted area per tree and numbers of trees. treedth.for - Determine annual tree mortality rate. treefire.for - Assess how trees respond to fire. treegrm.for - Calculate tree establishment rate in simple demographic terms. treepop.for - The annual portions of the tree population submodel are called. These include tree death, tree size class promotions, and changes in tree cover. treerep.for - Output of shrub and tree population models for a selected grid cell to report.out. treethn.for - Implements a tree thinning curve relating tree density to tree size. It is used optionally to compute rooted area per tree in the wdinit.for routine. trrdens.for - Calculate mean root biomass densities on tree covered areas based on tree size class distributions and root biomass densities for each tree size class. trshade.for - Computes light incident on each size class and each type of tree on a subarea. Treats competition for light among different tree types. trsucker.for - Compute number of suckers produced by trees when the main stem is killed by fire. 39 trsysout.for - Output tree population information integrated over the entire study area, ie. tree numbers and cover, to tree1.out and tree2.out. trwdens.for - Compute wood and stem biomass density on tree covered areas based on tree size class distribution. Like trrdens.for. wbsub.for - Calculates total wood biomass per m2 of subarea based on tree numbers and sizes on the subarea. wdalloc.for - Calculates the morphometric wood/(wood+root) and leaf/wood ratios for a tree type based on the current size class distribution. wdforav.for - Computes amount of forage available to a herbivore based on the height of the tree and the herbivore. wdinit.for - Initializes the tree population model. wolf.for - The wolf predation and population dynamics submodel. 40
© Copyright 2026 Paperzz