TreeMig Code
Loading...
Searching...
No Matches
Mort.f90
Go to the documentation of this file.
1!==============================================================================
2!
3! Name : Mort
4!
5! Purpose:
6!
7! Remarks: contains the SUBROUTINE
8!
9! Mort (<LocalDynOneTimeStep<LocalDynOneTimeStep<DistrLocalDynThisTime<
10! TimeLoop<TreeMig)
11!
12!==============================================================================
13! design : H. Lischke, N. Zimmermann
14! author(s) : H. Lischke, N. Zimmermann
15! implementation : H. Lischke, N. Zimmermann
16! cleaner : T.J. Loeffler
17! copyright : (c) 1999, 03 by H. Lischke
18!==============================================================================
19!=====================================================================
51!===============================================================
52SUBROUTINE mort(isp, heightcl, lightcl, srvinhl, numb, disturbanceMort, thiscell)
53
54 ! <CALL modules for TYPE definitions and +- fixed variables>---------------------------------------------------------------
55 use all_par, only: speccl, spec, currstateincell ! Use species parameters
56
57 IMPLICIT NONE
58
59 ! <Passed variables>--------------------------------------------------------------------------------
60 INTEGER, INTENT(in) :: isp, & ! number of species [=spec]
61 heightcl, & ! height class [=height]
62 lightcl ! light class [=ilight]
63 REAL, INTENT(in) :: numb ! # of trees [=nInH <- rNoTreesUnderCond]
64 REAL, INTENT(in) :: disturbanceMort ! mortality in this cell by disturbance
65 REAL, INTENT(out) :: srvinhl ! remaining ind. per spec/heightcl/light class [=survNInH]
66
67 ! <Local variables>---------------------------------------------------------------------------------
68 REAL :: gfc, & ! Stress factor due to growth stress [=rStessDepDiam]
69 efc, & ! Stress factor due to env. stress [=rStressDepOther]
70 cmp, & ! Comparison of growth- and enviro.-stress factors [=compare]
71 cmplow, & ! This is "cmp" of the lower light class [=compareOld]
72 vmort, & ! Stress related mortality [=rStresvmort]
73 tmort ! Total mortality (constant & stress based) [=totalMort]
74
75 TYPE(currstateincell), INTENT(inout):: thiscell
76 ! <Here the SUBROUTINE starts>**********************************************************************
77 !----- determine, whether growth dependent vitality is bigger than threshold (0.0003)
78 gfc = speccl(isp)%growthVitality(heightcl, lightcl)/0.0003
79
80 !-----determine, whether environment dependent vitality is bigger than threshold (0.1)
81 efc = speccl(isp)%envVitality(heightcl, lightcl)/0.1
82
83 !----- get the more severe of them (minimum)
84 cmp = min(gfc, efc)
85
86 if (cmp < 1.0) then !----- if lower vitality below threshold, set variable mortality to 1
87 vmort = 1.0
88 else ! -----determine mortalities in next lower light class
89 if (lightcl > 1) then !----- more light than in first light class
90 if (cmp == efc) then
91 cmplow = speccl(isp)%envVitality(heightcl, lightcl - 1)/0.1
92 else
93 cmplow = speccl(isp)%growthVitality(heightcl, lightcl - 1)/0.0003
94 end if
95 else !----- first light class, verrrry dark!
96 cmplow = 0.0
97 end if
98
99 !----- interpolate if next lower light class is below threshold
100 if (cmplow < 1.0) then
101 vmort = (1.0 - cmplow)/(cmp - cmplow)
102 else
103 vmort = 0.0
104 end if
105 end if
106 !----- determine total mortality
107 ! if (heightcl >= 0) then
108 if (heightcl > 0) then
109 tmort = min(spec(isp)%cmort + disturbancemort + vmort*0.184, 1.0) ! Mortality is assumed to act only after 3 subseqent bad years, but distributed over the years
110 else
111 tmort = min(spec(isp)%cmort + disturbancemort + vmort, 1.0) ! Mortality is assumed to act directly in sapling heigth class
112 ! tmort = MIN (spec(isp)%cmort + disturbanceMort + vmort* 0.184, 1.0) !
113 end if
114 !----- determine survivors
115 srvinhl = (1.0 - tmort)*numb
116 !----- update state variable
117 thiscell%sp(isp)%numin(heightcl) = thiscell%sp(isp)%numin(heightcl) - (tmort*numb)
118 if (thiscell%sp(isp)%numin(heightcl) < 0) then
119 thiscell%sp(isp)%numin(heightcl) = 0.0
120 end if
121
122end SUBROUTINE mort
123!done
subroutine mort(isp, heightcl, lightcl, srvinhl, numb, disturbancemort, thiscell)
Mort.
Definition Mort.f90:53
type(specpropertiesincl), dimension(maxspc) speccl
Definition All_par.f90:346
type(specproperties), dimension(maxspc) spec
Definition All_par.f90:345