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.

Appendix 231<br />

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

(* Procedure TreeEstablishment *)<br />

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

PROCEDURE TreeEstablishment( VAR firstSp: SpeciesPtr;<br />

uWiT: REAL; uDD, gLAI, totalTrees, kPatchSize: REAL );<br />

VAR sp: SpeciesPtr;<br />

nrNewTrees: INTEGER;<br />

gAL, kThres, totTrees, browsU, gBirthNr, time: REAL;<br />

gWFlag, gLFlag, gBFlag, gDFlag, gIFlag, birthOK: BOOLEAN;<br />

BEGIN<br />

gBirthNr := FLOAT( TRUNC(kEstNr*kPatchSize + 0.5) );<br />

gAL := Exp( -kLAtt*gLAI ); (* available light on forest floor *)<br />

totTrees := totalTrees;<br />

time := CurrentTime();<br />

browsU := U(); (* random number for brows<strong>in</strong>g *)<br />

sp := firstSp;<br />

WHILE sp NIL DO<br />

WITH sp^ DO<br />

(* criterion 1: w<strong>in</strong>ter temperature (Woodward 1987, 1988, Prentice &<br />

Helmisaari 1991) *)<br />

gWFlag := uWiT < p.kWiT;<br />

IF gWFlag THEN INC( limCounter[1] ) END;<br />

(* criterion 2: available light on forest floor (Ellenberg 1986) *)<br />

IF p.kLy < 5 THEN kThres := 0.025*FLOAT(p.kLy - 1);<br />

ELSE kThres := 0.1*FLOAT(p.kLy) - 0.4;<br />

END;<br />

gLFlag := gAL < kThres;<br />

IF gLFlag THEN INC( limCounter[2] ) END;<br />

(* criterion 3: brows<strong>in</strong>g (Kienast 1987, Dengler 1992) *)<br />

gBFlag := browsU < FLOAT(p.kBrow-1)*uBrPr/30.0;<br />

IF gBFlag THEN INC( limCounter[3] ) END;<br />

(* criterion 4: degree-days (Shugart 1984) *)<br />

gDFlag := (uDD < p.kDDM<strong>in</strong>) OR (uDD > p.kDDMax);<br />

IF gDFlag THEN INC( limCounter[4] ) END;<br />

(* criterion 5: immigration <strong>of</strong> species *)<br />

gIFlag := time < p.kImmYr;<br />

(* check if birth is <strong>in</strong>hibited *)<br />

birthOK := NOT gWFlag AND NOT gLFlag AND NOT gBFlag AND<br />

NOT gDFlag AND NOT gIFlag;<br />

(* establish sapl<strong>in</strong>gs if establishment is possible *)<br />

IF birthOK AND (U() < kEstP ) THEN<br />

nrNewTrees := TRUNC( U()*gBirthNr ) + 1; (* determ<strong>in</strong>e number <strong>of</strong> trees *)<br />

IF (gLAI < 1.0) AND (firstNewCohort NIL) THEN<br />

firstNewCohort^.nrTrees := firstNewCohort^.nrTrees + nrNewTrees;<br />

ELSE<br />

CreateCohort( firstNewCohort, kInitDBH, nrNewTrees );<br />

END; (* IF *)<br />

totTrees := totTrees + FLOAT( nrNewTrees );<br />

ELSE<br />

INC( limCounter[5] ); (* count number <strong>of</strong> birth <strong>in</strong>hibitions *)<br />

END; (* IF *)<br />

INC( limCounter[6] ); (* count number <strong>of</strong> loops *)<br />

END; (* WITH *)<br />

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

END; (* WHILE *)<br />

END TreeEstablishment;<br />

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

(* Procedure UpdateGap *)<br />

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

PROCEDURE UpdateGap( VAR firstSp: SpeciesPtr; uDD, uDrStr: REAL );<br />

VAR sp: SpeciesPtr;<br />

cohort: CohortPtr;<br />

t, DInc: REAL;<br />

BEGIN<br />

t := CurrentTime();<br />

sp := firstSp;<br />

WHILE sp NIL DO<br />

WITH sp^ DO<br />

cohort := firstCohort;<br />

WHILE cohort NIL DO<br />

cohort^.D := cohort^.D + cohort^.DInc;<br />

IF mon.monTreeR<strong>in</strong>gs THEN<br />

DInc := cohort^.DInc * 5.0;<br />

(* corresponds to /2 *10; r<strong>in</strong>g width is half <strong>of</strong> diameter <strong>in</strong>crement and is<br />

converted from cm to mm *)<br />

WriteTreeR<strong>in</strong>gs( sp, t, cohort^.nrOfCohort, DInc, uDD, uDrStr );<br />

END; (* IF *)<br />

INC(cohort^.age);<br />

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

END;<br />

END; (* WITH *)<br />

MergeCohorts( sp );<br />

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

END; (* WHILE *)<br />

END UpdateGap;<br />

BEGIN<br />

kFRT[deciduous] := 1.0;<br />

kFRT[coniferous] := 5.0; (* Bossel et al. 1985 *)<br />

END FCPDynamic.

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

Saved successfully!

Ooh no, something went wrong!