On the Ecology of Mountainous Forests in a Changing Climate: A ...
On the Ecology of Mountainous Forests in a Changing Climate: A ...
On the Ecology of Mountainous Forests in a Changing Climate: A ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
244 Appendix<br />
TYPE<br />
Litter = (leafFast, leafMedium, leafSlow, roots, twigs, wood );<br />
VAR<br />
(* Variables l<strong>in</strong>k<strong>in</strong>g <strong>the</strong> submodels *)<br />
(*---------------------------------*)<br />
(* output <strong>of</strong> ForClim-E: *)<br />
uDD, (* annual sum <strong>of</strong> degree-days [°C*days] *)<br />
uDrStr, (* drought stress <strong>in</strong>dex [-] *)<br />
uWiT, (* m<strong>in</strong>imum w<strong>in</strong>ter temperature [°C] *)<br />
uAET: REAL; (* evapotranspiration [mm/yr] *)<br />
(* output <strong>of</strong> ForClim-P: *)<br />
uLitt: ARRAY [ MIN(Litter)..MAX(Litter) ] OF REAL;<br />
(* litter production [t/ha] *)<br />
(* output <strong>of</strong> ForClim-S: *)<br />
uAvN: REAL; (* available nitrogen [kg/ha] *)<br />
(* output <strong>of</strong> ForClim-D: *)<br />
uBrPr: REAL; (* brows<strong>in</strong>g pressure [0…10] *)<br />
(* The follow<strong>in</strong>g procedures serve to declare output variables<br />
as parameters when <strong>the</strong> correspond<strong>in</strong>g model is not present,<br />
i.e. <strong>the</strong> Remove procedure should be called when a model is <strong>in</strong>stalled,<br />
and <strong>the</strong> Declare procedure when it is removed *)<br />
PROCEDURE DeclConstEnvironment; PROCEDURE RemoveConstEnvironment;<br />
PROCEDURE DeclConstPlants; PROCEDURE RemoveConstPlants;<br />
PROCEDURE DeclConstSoil;<br />
PROCEDURE RemoveConstSoil;<br />
PROCEDURE DeclConstBrows<strong>in</strong>g; PROCEDURE RemoveConstBrows<strong>in</strong>g;<br />
(********************************************)<br />
(* Objects required for technical reasons *)<br />
(********************************************)<br />
TYPE<br />
ExperimentType = ( manyRuns, estimEquil );<br />
Experiment = RECORD<br />
type: ExperimentType;<br />
writeState, readState,<br />
<strong>in</strong>BatchMode, doSensAnalysis: BOOLEAN;<br />
outFileName, <strong>in</strong>FileName, batchFileName: ARRAY [0..127] OF CHAR;<br />
nrPo<strong>in</strong>ts, delta: INTEGER; (* for equilibrium estimation *)<br />
startYear, (* for equilibrium estimation *)<br />
nrRuns: REAL; (* for many runs *)<br />
END; (* RECORD *)<br />
VAR<br />
fe, (* ForClim-E *)<br />
fp, (* ForClim-P *)<br />
fs: Model; (* ForClim-S *)<br />
exp: Experiment;<br />
fMenu: Menu; (* ForClim menu *)<br />
configCmd: Command; (* Configure command *)<br />
FCResFileName: ARRAY [0..63] OF CHAR;<br />
PROCEDURE Power( base, exp: REAL ): REAL;<br />
(* straightforward and efficient implementation *)<br />
PROCEDURE Imax( i1,i2: INTEGER ): INTEGER;<br />
PROCEDURE Im<strong>in</strong>( i1,i2: INTEGER ): INTEGER;<br />
PROCEDURE Rmax( x1,x2: REAL ): REAL;<br />
PROCEDURE Rm<strong>in</strong>( x1,x2: REAL ): REAL;<br />
PROCEDURE SetRandomNumberSeeds( x, y, z: INTEGER );<br />
(* use this procedure and NOT SetSeeds from RandGen because <strong>of</strong> consistency<br />
<strong>in</strong> <strong>the</strong> ModelWorks parameter w<strong>in</strong>dow!<br />
*)<br />
PROCEDURE DeclMonitor<strong>in</strong>gProc( p: PROC );<br />
PROCEDURE RemoveMonitor<strong>in</strong>gProc( p: PROC );<br />
(* procedure for ModelWorks client monitor<strong>in</strong>g, must be declared here because<br />
ModelWorks does not support several simultaneous monitor<strong>in</strong>g procedures *)<br />
PROCEDURE DeclStatArrayForOutput( sa: StatArray; labelStr, unitStr: ARRAY OF CHAR;<br />
m<strong>in</strong>V: REAL );<br />
(* if <strong>the</strong> average <strong>of</strong> sa is below m<strong>in</strong>V, this StatArray is not used for<br />
display<strong>in</strong>g <strong>the</strong> equilibrium estimate *)<br />
PROCEDURE RemoveStatArrayFromOutput( sa: StatArray );<br />
(* to declare / remove StatArrays from a list common to all models *)<br />
PROCEDURE WriteStatArraysToFile( fn: ARRAY OF CHAR );<br />
(* writes StatArrays declared by means <strong>of</strong> DeclStatArrayForOutput to a text file *)<br />
PROCEDURE DisplayEquilibriumValues;<br />
PROCEDURE SaveEquilibriumState( fn : ARRAY OF CHAR );<br />
(* if fn is an empty str<strong>in</strong>g, a dialog box is produced prompt<strong>in</strong>g for <strong>the</strong> filename *)<br />
PROCEDURE DeclForestBase;<br />
(* to be be called by master program *)<br />
END ForestBase.<br />
The code <strong>of</strong> <strong>the</strong> implementation module ForestBase is available upon request from <strong>the</strong><br />
author.