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.
Appendix 239<br />
END Immobilization;<br />
PROCEDURE M<strong>in</strong>eralization;<br />
VAR humMDelta: REAL;<br />
BEGIN<br />
IF HOM 0.0 THEN<br />
gAETM := Rm<strong>in</strong>( uAET / (kAET-uAET), 1.0 );<br />
IF gLNC 0.0 THEN<br />
(* new formulation based on data <strong>in</strong> Pastor et al. (1984), avoids occurrence<br />
<strong>of</strong> m<strong>in</strong>eralization values <strong>of</strong> ±∞ (pole <strong>in</strong> Pastor & Post formulation *)<br />
humusNM<strong>in</strong> := Rmax( k5 + k6/gLNC, 0.0005 ) * decMlt * gAETM * HOM;<br />
ELSE<br />
humusNM<strong>in</strong> := HN * kM<strong>in</strong> * decMlt * gAETM;<br />
END; (* IF *)<br />
HNNew := HN - humusNM<strong>in</strong>;<br />
humMDelta := HOM * humusNM<strong>in</strong> / HN;<br />
IF HOM < humMDelta THEN HALT END;<br />
HOMNew := HOM - humMDelta;<br />
totCO2 := totCO2 + humMDelta;<br />
totNM<strong>in</strong> := totNM<strong>in</strong> + humusNM<strong>in</strong>;<br />
ELSE<br />
HOMNew := 0.0;<br />
HNNew := 0.0;<br />
END; (* IF *)<br />
END M<strong>in</strong>eralization;<br />
(*****************************)<br />
(* Monitor<strong>in</strong>g & statistics *)<br />
(*****************************)<br />
PROCEDURE DeclareStatArrays( arrLen : INTEGER );<br />
BEGIN<br />
statArrAvN := notExist<strong>in</strong>gStatArray;<br />
DeclStatArray( statArrAvN, arrLen );<br />
DeclDispMV( statArrAvN, fs, meanAvN, fs, timeIsIndep );<br />
DeclStatArrayForOutput( statArrAvN, "Available nitrogen", "kg/ha", 0.0 );<br />
statArrLitM := notExist<strong>in</strong>gStatArray;<br />
DeclStatArray( statArrLitM, arrLen );<br />
DeclDispMV( statArrLitM, fs, meanLitM, fs, timeIsIndep );<br />
DeclStatArrayForOutput( statArrLitM, "Litter mass", "t/ha", 0.0 );<br />
statArrHumM := notExist<strong>in</strong>gStatArray;<br />
DeclStatArray( statArrHumM, arrLen );<br />
DeclDispMV( statArrHumM, fs, meanHumM, fs, timeIsIndep );<br />
DeclStatArrayForOutput( statArrHumM, "Humus mass", "t/ha", 0.0 );<br />
END DeclareStatArrays;<br />
PROCEDURE DisplayStatArrays;<br />
BEGIN<br />
IF NOT ExperimentAborted() THEN<br />
DisplayArray( statArrAvN, TRUE, prob950 );<br />
DisplayArray( statArrLitM, TRUE, prob950 );<br />
DisplayArray( statArrHumM, TRUE, prob950 );<br />
END;<br />
END DisplayStatArrays;<br />
PROCEDURE Monitor<strong>in</strong>g;<br />
VAR t: REAL;<br />
<strong>in</strong>dex: INTEGER;<br />
BEGIN<br />
IF ExperimentRunn<strong>in</strong>g() THEN<br />
IF exp.type = estimEquil THEN<br />
t := 0.0;<br />
<strong>in</strong>dex := 1;<br />
ELSE<br />
t := CurrentTime();<br />
<strong>in</strong>dex := TRUNC( (t-tzero)/hm + 0.5 ) + 1;<br />
END;<br />
IF NOT ((exp.type = estimEquil) AND (CurrentTime()