08.09.2014 Views

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 ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

240 Appendix<br />

BEGIN<br />

DisableCommand( fMenu, litterCmd );<br />

IF ExperimentRunn<strong>in</strong>g() AND (CurrentSimNr() = 1 ) THEN<br />

IF exp.type = manyRuns THEN<br />

GetGlobSimPars(tzero, tend, h, er, c , hm);<br />

arrLen := TRUNC((tend-tzero)/hm+1.5);<br />

DeclareStatArrays( arrLen );<br />

ELSIF exp.type = estimEquil THEN<br />

DeclareStatArrays( 1 );<br />

ELSE<br />

(* do noth<strong>in</strong>g *)<br />

END;<br />

END;<br />

CalculateLign<strong>in</strong>Parameters;<br />

DeleteAllCohorts( first );<br />

IF NOT everyYear THEN<br />

IF allTypes THEN<br />

FOR i:= MIN(Litter) TO MAX(Litter) DO<br />

IF uLitt[i] 0.0 THEN CreateLitterCohort( first, uLitt[i], i ) END;<br />

END; (* FOR *)<br />

ELSE<br />

CreateLitterCohort( first, uLitt[type], type )<br />

END;<br />

END;<br />

END Initialize;<br />

PROCEDURE Input;<br />

VAR litter: LitterPtr;<br />

i: Litter;<br />

BEGIN<br />

IF everyYear THEN<br />

IF allTypes THEN<br />

FOR i:= MIN(Litter) TO MAX(Litter) DO<br />

IF uLitt[i] 0.0 THEN CreateLitterCohort( first, uLitt[i], i ) END;<br />

END; (* FOR *)<br />

ELSE<br />

CreateLitterCohort( first, uLitt[type], type );<br />

END;<br />

END;<br />

totCO2 := 0.0;<br />

totNimmob := 0.0;<br />

totNM<strong>in</strong> := 0.0;<br />

litterM := 0.0;<br />

litterN := 0.0;<br />

litter := first;<br />

WHILE litter NIL DO (* summation <strong>of</strong> total leaf litter *)<br />

WITH litter^ DO<br />

IF (type = leafFast) OR (type = leafMedium) OR (type = leafSlow) THEN<br />

litterM := litterM + LOM;<br />

litterN := litterN + LN;<br />

END;<br />

END; (* WHILE *)<br />

litter := litter^.next;<br />

END; (* WHILE *)<br />

IF litterM 0.0 THEN gLNC := litterN / litterM / 0.48;<br />

ELSE gLNC := 0.0;<br />

END; (* IF *)<br />

litterM := 0.0;<br />

litterN := 0.0;<br />

litter := first;<br />

WHILE litter NIL DO (* summation <strong>of</strong> total litter *)<br />

WITH litter^ DO<br />

litterM := litterM + LOM;<br />

litterN := litterN + LN;<br />

END; (* WHILE *)<br />

litter := litter^.next;<br />

END; (* WHILE *)<br />

totSOM := litterM + HOM; (* total soil organic matter *)<br />

END Input;<br />

PROCEDURE Dynamic;<br />

BEGIN<br />

M<strong>in</strong>eralization;<br />

Immobilization;<br />

uAvN := kNAtm + Rmax(totNM<strong>in</strong> - totNimmob, 0.0) * 1000.0;<br />

END Dynamic;<br />

PROCEDURE Output;<br />

BEGIN<br />

UpdateLitterCohorts;<br />

END Output;<br />

PROCEDURE Term<strong>in</strong>ate;<br />

BEGIN<br />

DeleteAllCohorts( first );<br />

IF ( (CurrentSimNr() MOD TRUNC(exp.nrRuns+0.5)) = 0 )<br />

AND ExperimentRunn<strong>in</strong>g() AND (exp.type = manyRuns) THEN<br />

DisplayStatArrays;<br />

END;<br />

EnableCommand( fMenu, litterCmd );<br />

END Term<strong>in</strong>ate;<br />

(******************)<br />

(* Menu command *)<br />

(******************)<br />

PROCEDURE LitterInput;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!