SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
vegetation_update_greenroof.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE vegetation_update_greenroof (DTCO, DTI, IG, I, T, TOP, TVG, DTGD, GRM, &
7  tptime,ptstep,klu)
8 ! ##########################################################################
9 !
10 !!**** *GREENROOF*
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 !
16 !!** METHOD
17 ! ------
18 !
19 !
20 !! EXTERNAL
21 !! --------
22 !!
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !!
28 !! REFERENCE
29 !! ---------
30 !!
31 !!
32 !! AUTHOR
33 !! ------
34 !!
35 !! A. Lemonsu * Meteo-France *
36 !!
37 !! MODIFICATIONS
38 !! -------------
39 !! Original 05/2009
40 !-------------------------------------------------------------------------------
41 !
42 !* 0. DECLARATIONS
43 ! ------------
44 !
46 USE modd_data_isba_n, ONLY : data_isba_t
47 USE modd_isba_grid_n, ONLY : isba_grid_t
48 USE modd_isba_n, ONLY : isba_t
49 USE modd_teb_n, ONLY : teb_t
54 !
56 !
57 USE modi_vegetation_update
58 !
59 !
60 USE yomhook ,ONLY : lhook, dr_hook
61 USE parkind1 ,ONLY : jprb
62 !
63 IMPLICIT NONE
64 !
65 !* 0.1 Declarations of arguments
66 !
67 !
68 !
69 TYPE(data_cover_t), INTENT(INOUT) :: dtco
70 TYPE(data_isba_t), INTENT(INOUT) :: dti
71 TYPE(isba_grid_t), INTENT(INOUT) :: ig
72 TYPE(isba_t), INTENT(INOUT) :: i
73 TYPE(teb_t), INTENT(INOUT) :: t
74 TYPE(teb_options_t), INTENT(INOUT) :: top
75 TYPE(teb_veg_options_t), INTENT(INOUT) :: tvg
76 TYPE(data_teb_garden_t), INTENT(INOUT) :: dtgd
77 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: grm
78 !
79 TYPE(date_time) , INTENT(IN) :: tptime ! current date and time from teb
80 REAL , INTENT(IN) :: ptstep ! time step
81 INTEGER, INTENT(IN) :: klu ! number of points
82 !
83 !
84 !* 0.2 Declarations of local variables
85 !
86 REAL, DIMENSION(KLU,1) :: zz0effip
87 REAL, DIMENSION(KLU,1) :: zz0effim
88 REAL, DIMENSION(KLU,1) :: zz0effjp
89 REAL, DIMENSION(KLU,1) :: zz0effjm
90 REAL, DIMENSION(KLU) :: zaosip
91 REAL, DIMENSION(KLU) :: zaosim
92 REAL, DIMENSION(KLU) :: zaosjp
93 REAL, DIMENSION(KLU) :: zaosjm
94 REAL, DIMENSION(KLU) :: zho2ip
95 REAL, DIMENSION(KLU) :: zho2im
96 REAL, DIMENSION(KLU) :: zho2jp
97 REAL, DIMENSION(KLU) :: zho2jm
98 REAL, DIMENSION(KLU,1) :: zlai
99 REAL, DIMENSION(KLU,1) :: zveg
100 REAL, DIMENSION(KLU,1) :: zz0
101 REAL, DIMENSION(KLU,1) :: zalbnir
102 REAL, DIMENSION(KLU,1) :: zalbvis
103 REAL, DIMENSION(KLU,1) :: zalbuv
104 REAL, DIMENSION(KLU,1) :: zemis
105 REAL, DIMENSION(KLU,1) :: zrsmin
106 REAL, DIMENSION(KLU,1) :: zgamma
107 REAL, DIMENSION(KLU,1) :: zwrmax_cf
108 REAL, DIMENSION(KLU,1) :: zrgl
109 REAL, DIMENSION(KLU,1) :: zcv
110 REAL, DIMENSION(KLU,1) :: zgmes
111 REAL, DIMENSION(KLU,1) :: zbslai
112 REAL, DIMENSION(KLU,1) :: zlaimin
113 REAL, DIMENSION(KLU,1) :: zsefold
114 REAL, DIMENSION(KLU,1) :: zgc
115 REAL, DIMENSION(KLU,1) :: zdmax
116 REAL, DIMENSION(KLU,1) :: zf2i
117 LOGICAL, DIMENSION(KLU,1) :: gstress
118 REAL, DIMENSION(KLU,1) :: zalbnir_veg
119 REAL, DIMENSION(KLU,1) :: zalbvis_veg
120 REAL, DIMENSION(KLU,1) :: zalbuv_veg
121 REAL, DIMENSION(KLU,1) :: zalbnir_soil
122 REAL, DIMENSION(KLU,1) :: zalbvis_soil
123 REAL, DIMENSION(KLU,1) :: zalbuv_soil
124 REAL, DIMENSION(KLU,1) :: zce_nitro
125 REAL, DIMENSION(KLU,1) :: zcf_nitro
126 REAL, DIMENSION(KLU,1) :: zcna_nitro
127 ! MEB stuff
128 REAL, DIMENSION(KLU,1) :: zgndlitter
129 REAL, DIMENSION(KLU,1) :: zrglgv
130 REAL, DIMENSION(KLU,1) :: zgammagv
131 REAL, DIMENSION(KLU,1) :: zrsmingv
132 REAL, DIMENSION(KLU,1) :: zwrmax_cfgv
133 REAL, DIMENSION(KLU,1) :: zh_veg
134 REAL, DIMENSION(KLU,1) :: zlaigv
135 REAL, DIMENSION(KLU,1) :: zz0litter
136 !
137 TYPE (date_time), DIMENSION(KLU,1) :: tzseed
138 TYPE (date_time), DIMENSION(KLU,1) :: tzreap
139 REAL, DIMENSION(KLU,1) :: zwatsup
140 REAL, DIMENSION(KLU,1) :: zirrig
141 LOGICAL :: gupdated ! T if VEGETATION_UPDATE has reset fields
142 !
143 REAL(KIND=JPRB) :: zhook_handle
144 !
145 !-------------------------------------------------------------------------------
146 !
147 !* 1. various initialisations
148 ! -----------------------
149 !
150 IF (lhook) CALL dr_hook('VEGETATION_UPDATE_GREENROF',0,zhook_handle)
151 !
152 !* orographic roughness not used
153 !
154 zaosip = 0.
155 zaosim = 0.
156 zaosjp = 0.
157 zaosjm = 0.
158 zho2ip = 0.
159 zho2im = 0.
160 zho2jp = 0.
161 zho2jm = 0.
162 !
163 !* vegetation parameters to update
164 !
165 zveg(:,1) = grm%TGRPE%CUR%XVEG
166 zz0(:,1) = grm%TGRPE%CUR%XZ0
167 zalbnir(:,1) = grm%TGRPE%CUR%XALBNIR
168 zalbvis(:,1) = grm%TGRPE%CUR%XALBVIS
169 zalbuv(:,1) = grm%TGRPE%CUR%XALBUV
170 zemis(:,1) = grm%TGRPE%CUR%XEMIS
171 zrsmin(:,1) = grm%TGRP%XRSMIN
172 zgamma(:,1) = grm%TGRP%XGAMMA
173 zwrmax_cf(:,1) = grm%TGRP%XWRMAX_CF
174 zrgl(:,1) = grm%TGRP%XRGL
175 zcv(:,1) = grm%TGRP%XCV
176 zgmes(:,1) = grm%TGRP%XGMES
177 zbslai(:,1) = grm%TGRP%XBSLAI
178 zlaimin(:,1) = grm%TGRP%XLAIMIN
179 zsefold(:,1) = grm%TGRP%XSEFOLD
180 zgc(:,1) = grm%TGRP%XGC
181 zdmax(:,1) = grm%TGRP%XDMAX
182 zf2i(:,1) = grm%TGRP%XF2I
183 gstress(:,1) = grm%TGRP%LSTRESS
184 zalbnir_veg(:,1) = grm%TGRP%XALBNIR_VEG
185 zalbvis_veg(:,1) = grm%TGRP%XALBVIS_VEG
186 zalbuv_veg(:,1) = grm%TGRP%XALBUV_VEG
187 zalbnir_soil(:,1) = grm%TGRP%XALBNIR_SOIL
188 zalbvis_soil(:,1) = grm%TGRP%XALBVIS_SOIL
189 zalbuv_soil(:,1) = grm%TGRP%XALBUV_SOIL
190 zce_nitro(:,1) = grm%TGRP%XCE_NITRO
191 zcf_nitro(:,1) = grm%TGRP%XCF_NITRO
192 zcna_nitro(:,1) = grm%TGRP%XCNA_NITRO
193 ! --------------------------------------------------------------------------------------
194 ! Vegetation update (in case of non-interactive vegetation):
195 ! --------------------------------------------------------------------------------------
196 !
197 gupdated=.false.
198 IF (tvg%CPHOTO=='NON' .OR. tvg%CPHOTO=='AGS' .OR. tvg%CPHOTO=='AST') THEN
199  CALL vegetation_update(dtco, dti, dtgd, grm%DTGR, ig, i, grm%TGRO, &
200  ptstep,tptime,top%XCOVER,top%LCOVER, &
201  tvg%CISBA,(.NOT. grm%TGRO%LPAR_GREENROOF), tvg%CPHOTO, .false., &
202  tvg%LTR_ML, 'GR ', &
203  zlai,zveg,zz0, &
204  zalbnir,zalbvis,zalbuv,zemis, &
205  zrsmin,zgamma,zwrmax_cf, &
206  zrgl,zcv, &
207  zgmes,zbslai,zlaimin,zsefold,zgc,zdmax, &
208  zf2i, gstress, &
209  zaosip,zaosim,zaosjp,zaosjm, &
210  zho2ip,zho2im,zho2jp,zho2jm, &
211  zz0effip,zz0effim,zz0effjp,zz0effjm, &
212  tvg%CALBEDO, zalbnir_veg, zalbvis_veg, zalbuv_veg, &
213  zalbnir_soil, zalbvis_soil, zalbuv_soil, &
214  zce_nitro, zcf_nitro, zcna_nitro, &
215  tzseed, tzreap, zwatsup, zirrig, &
216  zgndlitter, zrglgv,zgammagv, &
217  zrsmingv, zwrmax_cfgv, &
218  zh_veg, zlaigv, zz0litter, &
219  gupdated, oabsent=(t%CUR%XGREENROOF==0.) )
220 END IF
221 !
222 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
223 grm%TGRPE%CUR%XVEG = zveg(:,1)
224 grm%TGRPE%CUR%XZ0 = zz0(:,1)
225 grm%TGRPE%CUR%XALBNIR = zalbnir(:,1)
226 grm%TGRPE%CUR%XALBVIS = zalbvis(:,1)
227 grm%TGRPE%CUR%XALBUV = zalbuv(:,1)
228 grm%TGRPE%CUR%XEMIS = zemis(:,1)
229 grm%TGRP%XRSMIN = zrsmin(:,1)
230 grm%TGRP%XGAMMA = zgamma(:,1)
231 grm%TGRP%XWRMAX_CF = zwrmax_cf(:,1)
232 grm%TGRP%XRGL = zrgl(:,1)
233 grm%TGRP%XCV = zcv(:,1)
234 grm%TGRP%XGMES = zgmes(:,1)
235 grm%TGRP%XBSLAI = zbslai(:,1)
236 grm%TGRP%XLAIMIN = zlaimin(:,1)
237 grm%TGRP%XSEFOLD = zsefold(:,1)
238 grm%TGRP%XGC = zgc(:,1)
239 grm%TGRP%XDMAX = zdmax(:,1)
240 grm%TGRP%XF2I = zf2i(:,1)
241 grm%TGRP%LSTRESS = gstress(:,1)
242 grm%TGRP%XALBNIR_VEG = zalbnir_veg(:,1)
243 grm%TGRP%XALBVIS_VEG = zalbvis_veg(:,1)
244 grm%TGRP%XALBUV_VEG = zalbuv_veg(:,1)
245 grm%TGRP%XALBNIR_SOIL = zalbnir_soil(:,1)
246 grm%TGRP%XALBVIS_SOIL = zalbvis_soil(:,1)
247 grm%TGRP%XALBUV_SOIL = zalbuv_soil(:,1)
248 grm%TGRP%XCE_NITRO = zce_nitro(:,1)
249 grm%TGRP%XCF_NITRO = zcf_nitro(:,1)
250 grm%TGRP%XCNA_NITRO = zcna_nitro(:,1)
251 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
252 !
253 IF (lhook) CALL dr_hook('VEGETATION_UPDATE_GREENROOF',1,zhook_handle)
254 !
255 !-------------------------------------------------------------------------------
256 !
257 !
258 END SUBROUTINE vegetation_update_greenroof
subroutine vegetation_update(DTCO, DTI, DTGD, DTGR, IG, I, TGRO, PTSTEP, TTIME, PCOVER, OCOVER, HISBA, OECOCLIMAP, HPHOTO, OAGRIP, OTR_ML, HSFTYPE, PLAI, PVEG, PZ0, PALBNIR, PALBVIS, PALBUV, PEMIS, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PGMES, PBSLAI, PLAIMIN, PSEFOLD, PGC, PDMAX, PF2I, OSTRESS, PAOSIP, PAOSIM, PAOSJP, PAOSJM, PHO2IP, PHO2IM, PHO2JP, PHO2JM, PZ0EFFIP, PZ0EFFIM, PZ0EFFJP, PZ0EFFJM, HALBEDO, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PCE_NITRO, PCF_NITRO, PCNA_NITRO, TPSEED, TPREAP, PWATSUP, PIRRIG, PGNDLITTER, PRGLGV, PGAMMAGV, PRSMINGV, PWRMAX_CFGV, PH_VEG, PLAIGV, PZ0LITTER, ODUPDATED, OABSENT)
subroutine vegetation_update_greenroof(DTCO, DTI, IG, I, T, TOP, TVG, DTGD, GRM, TPTIME, PTSTEP, KLU)