DEFINITION MODULE TrSpecCalc;
(*******************************************************************
Module TrSpecCalc (Version 1.0)
Copyright (c) 2005-2006 by Dimitrios Gyalistras and ETH Zurich.
Purpose Procedures to compute establishment, growth,
and litter production of trees.
Remarks This module is part of the package Trees.
Programming
o Design
Dimitrios Gyalistras 25/05/2005
o Implementation
Dimitrios Gyalistras 25/05/2005
ETH Zurich
Systems Ecology
CHN E 35.1
Universitaetstrasse 16
8092 Zurich
SWITZERLAND
URLs:
<mailto:RAMSES@env.ethz.ch>
<http://www.sysecol.ethz.ch>
<http://www.sysecol.ethz.ch/SimSoftware/RAMSES>
Last revision of definition: 15/12/2005 DG
*******************************************************************)
FROM TreeSpecies IMPORT
TreeSpeciesType;
(************************************)
(*##### Tree establishment #####*)
(************************************)
PROCEDURE WinterTemperLim24( uWiT, kWiTN : REAL ): BOOLEAN;
PROCEDURE WinterTemperLim29( uWiT, kWiTN, kWiTX: REAL ): BOOLEAN;
PROCEDURE LightLim24( kLy, kLAtt, gLAI: REAL ): BOOLEAN;
PROCEDURE LightLim26( kLy, kLAtt, gLAI: REAL ): BOOLEAN;
PROCEDURE BrowsingLim( kBrow, uBrPr, browsU: REAL ): BOOLEAN;
PROCEDURE DegDaysLim24( uDD, kDDMin, kDDMax: REAL ): BOOLEAN;
PROCEDURE DegDaysLim29( uDD, kDDMin : REAL ): BOOLEAN;
(*****************************)
(*##### Tree growth #####*)
(*****************************)
PROCEDURE LightGrowthFactorForClim( cumLA, kLAtt, kLa: REAL ): REAL;
PROCEDURE LightGrowthFactorZelig ( cumLA, kLAtt, kLa: REAL ): REAL;
PROCEDURE LightGrowthFactorDG ( cumLA, kLAtt, kLa: REAL ): REAL;
PROCEDURE SoilMoistureGrowthFactor24( kDrT, uDrStress: REAL ): REAL;
PROCEDURE SoilMoistureGrowthFactor29( kDrT, kFl, kWaTD, uDrStress: REAL ): REAL;
PROCEDURE DegreeDayGrowthFactor24( kDDMin, kDDMax, uDD: REAL ): REAL;
PROCEDURE DegreeDayGrowthFactor29( kDDMin, kDDSl, uDD: REAL ): REAL;
PROCEDURE SoilNitrogenGrowthFactor( kN1, kN2, uAvN: REAL ): REAL;
PROCEDURE CalcTreeGrowth( D, gH : REAL; (* tree state *)
kG, kHMax, kB2, kB3 : REAL; (* growth parameters *)
gALGF, gSMGF, gDDGF, gSNGF : REAL; (* growth factors *)
VAR gF : REAL; (* compound growth factor *)
VAR DIncMax : REAL; (* maximum posible diameter increment *)
VAR DInc : REAL ); (* actual diameter increment *)
(******************************)
(*##### Tree biomass #####*)
(******************************)
PROCEDURE CalcTreeBiomass24( D : REAL; (* diameter at breast height, cm *)
kA1, kA2 : REAL; (* parameters *)
kB2, kB3 : REAL; (* parameters *)
kC1, kC2 : REAL; (* parameters *)
VAR gH : REAL; (* tree height, cm *)
VAR gSBio : REAL; (* dry stemwood biomass *)
VAR gFolW : REAL; (* dry foliage biomass *)
VAR gFolA : REAL ); (* leaf area *)
PROCEDURE CalcTreeBiomass26( specType : TreeSpeciesType;
D : REAL; (* diameter at breast height, cm *)
kA1, kA2 : REAL; (* parameters *)
kB2, kB3 : REAL; (* parameters *)
kC1, kC2 : REAL; (* parameters *)
kFRT : REAL; (* foliage retention time *)
kAFW : REAL; (* ash-free weight of litter *)
VAR gH : REAL; (* tree height, cm *)
VAR gSBio : REAL; (* dry stemwood biomass *)
VAR gTBio : REAL; (* dry twigwood biomass (wood < 3" diameter) *)
VAR gRBio : REAL; (* dry large root biomass *)
VAR gFRBio : REAL; (* dry fine root biomass *)
VAR gFolW : REAL; (* dry foliage biomass *)
VAR gFolA : REAL ); (* leaf area *)
(******************************************)
(*##### Litter production (FC24) #####*)
(******************************************)
TYPE
LitterType24 = ( leafFast, leafMedium, leafSlow, fineRt24, twigs24, wood24 );
LitterRealArr24 = ARRAY [ MIN(LitterType24)..MAX(LitterType24) ] OF REAL;
PROCEDURE GetLitterTypeIdent24( l: LitterType24; VAR ident: ARRAY OF CHAR );
PROCEDURE SetLitterRealArr24( VAR litter: LitterRealArr24; val: REAL );
PROCEDURE AddLitterRealArr24( VAR litter1, litter2: LitterRealArr24 ); (* sum is returned in litter2 *)
PROCEDURE ScalarMultLitterRealArr24( scalar: REAL; VAR litter: LitterRealArr24 );
PROCEDURE CalcLivingTreeLitterProduction24( kLQ : INTEGER; (* leaf litter type *)
specType : TreeSpeciesType;
D : REAL; (* diameter at breast height, cm *)
gFolW : REAL; (* dry foliage biomass *)
kFRT : REAL; (* foliage retention time *)
kTwig : REAL; (* twig litter production parameter *)
kAFW : REAL; (* ash-free weight of litter *)
kRSR : REAL; (* root:shoot ratio of litter *)
VAR litter : LitterRealArr24 );
PROCEDURE CalcDeadTreeLitterProduction24( kLQ : INTEGER; (* leaf litter type *)
D : REAL; (* diameter at breast height, cm *)
gFolW : REAL; (* dry foliage biomass *)
gSBio : REAL; (* dry stemwood biomass *)
kTwig : REAL; (* twig litter production parameter *)
kAFW : REAL; (* ash-free weight of litter *)
kRSR : REAL; (* root:shoot ratio of litter *)
VAR litter : LitterRealArr24 );
(******************************************)
(*##### Litter production (FC26) #####*)
(******************************************)
TYPE
LitterType26 = ( leaf1, leaf2, leaf3, leaf4, needle1, needle2, fineRt26, twigs26, wood26 );
LitterRealArr26 = ARRAY [ MIN(LitterType26)..MAX(LitterType26) ] OF REAL;
PROCEDURE GetLitterTypeIdent26( l: LitterType26; VAR ident: ARRAY OF CHAR );
PROCEDURE SetLitterRealArr26( VAR litter: LitterRealArr26; val: REAL );
PROCEDURE AddLitterRealArr26( VAR litter1, litter2: LitterRealArr26 ); (* sum is returned in litter2 *)
PROCEDURE ScalarMultLitterRealArr26( scalar: REAL; VAR litter: LitterRealArr26 );
PROCEDURE CalcLivingTreeLitterProduction26( kLQ : INTEGER; (* leaf litter type *)
specType : TreeSpeciesType;
D : REAL; (* diameter at breast height, cm *)
gFolW : REAL; (* dry foliage biomass *)
kFRT : REAL; (* foliage retention time *)
kTwig : REAL; (* twig litter production parameter *)
kAFW : REAL; (* ash-free weight of litter *)
VAR litter : LitterRealArr26 );
PROCEDURE CalcLivingTreesLitterProduction26( nTrees : INTEGER; (* number of trees *)
kLQ : INTEGER; (* leaf litter type *)
specType : TreeSpeciesType;
D : REAL; (* diameter at breast height, cm *)
gFolW : REAL; (* dry foliage biomass *)
kFRT : REAL; (* foliage retention time *)
kTwig : REAL; (* twig litter production parameter *)
kAFW : REAL; (* ash-free weight of litter *)
VAR litter : LitterRealArr26 );
PROCEDURE CalcDeadTreeLitterProduction26( kLQ : INTEGER; (* leaf litter type *)
gFolW : REAL; (* dry foliage biomass *)
gSBio : REAL; (* dry stemwood biomass *)
gTBio : REAL; (* dry twigwood biomass *)
gFRBio : REAL; (* dry fine root biomass *)
gRBio : REAL; (* dry large root biomass *)
kAFW : REAL; (* ash-free weight of litter *)
VAR litter : LitterRealArr26 );
END TrSpecCalc.