SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
write_cover_tex_isba.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 write_cover_tex_isba(KPATCH,KLAYER,HISBA)
7 ! ##########################
8 !
9 !!**** *WRITE_COVER_TEX* writes the ISBA data arrays into a tex file
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !! METHOD
15 !! ------
16 !!
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !! AUTHOR
28 !! ------
29 !!
30 !! V. Masson Meteo-France
31 !!
32 !! MODIFICATION
33 !! ------------
34 !!
35 !! Original 08/01/98
36 !!
37 !! R. Alkama 05/2012 : from 12 to 19 vegtype
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 !
43 !
44 !
46 !
47 USE modd_write_cover_tex,ONLY : ntex, cname, clang, nlines
48 USE modd_surf_par, ONLY : xundef
49 USE modd_data_cover, ONLY : xdata_nature, &
50  xdata_vegtype, xdata_h_tree, xdata_lai, &
51  xdata_root_depth, xdata_ground_depth
52 
53 USE modd_data_cover_par, ONLY : jpcover, nvegtype, nvt_no, nvt_rock, &
54  nvt_snow, nvt_tebd, nvt_bone, nvt_trbe, &
55  nvt_c3, nvt_c4, nvt_irr, nvt_gras, &
56  nvt_trog,nvt_park, nvt_trbd, nvt_tebe, &
57  nvt_tene, nvt_bobd, nvt_bond, nvt_bogr, &
58  nvt_shrb
59 !
60 USE modd_reprod_oper, ONLY : xeverg_veg, xeverg_rsmin
61 !
62 USE yomhook ,ONLY : lhook, dr_hook
63 USE parkind1 ,ONLY : jprb
64 !
65 IMPLICIT NONE
66 !
67 !* 0.1 Declaration of arguments
68 ! ------------------------
69 !
70 INTEGER, INTENT(IN) :: kpatch! number of patch
71 INTEGER, INTENT(IN) :: klayer! number of soil layers
72  CHARACTER(LEN=*), INTENT(IN) :: hisba ! type of soil (Force-Restore OR Diffusion)
73 !
74 !* 0.2 Declaration of local variables
75 ! ------------------------------
76 !
77 !
78 INTEGER :: i,j
79 !
80  CHARACTER(LEN=5), DIMENSION(NVEGTYPE) :: ydata_vegtype ! vegetation type
81  CHARACTER(LEN=6), DIMENSION(12 ) :: ydata_vegparam! vegetation parameters
82  CHARACTER(LEN=6) :: ystring6
83  CHARACTER(LEN=6), DIMENSION(12 ) :: ydata_month ! monthly veg. parameters
84 !
85  CHARACTER(LEN=40),DIMENSION(2) :: ypatch ! titles for each vegtype
86 !
87  CHARACTER(LEN=20) :: yfmt ! fortran format
88 !
89 INTEGER :: jpage ! current page when the number of classes
90  ! is too long to stand on one page only
91 INTEGER :: ip ! number of cover types on the current page
92 INTEGER :: jvegtype ! loop counter
93 !
94 !
95 LOGICAL :: gline ! flag to write an additional horizontal line
96 REAL(KIND=JPRB) :: zhook_handle
97 !
98 !-------------------------------------------------------------------------------
99 !
100 IF (lhook) CALL dr_hook('WRITE_COVER_TEX_ISBA',0,zhook_handle)
101 IF (ntex==0 .AND. lhook) CALL dr_hook('WRITE_COVER_TEX_ISBA',1,zhook_handle)
102 IF (ntex==0) RETURN
103 gline=.false.
104 !
105 !
106 i=0
107 
108 DO
109 
110  IF (i==jpcover) EXIT
111 
112  IF (clang=='EN') THEN
113  WRITE(ntex,*) '{\bf vegetation type and main ISBA parameters$^\star$}\\'
114  ELSE
115  WRITE(ntex,*) "{\bf type de v\'eg\'etation et param\`etres principaux d'ISBA $^\star$}\\"
116  END IF
117  WRITE(ntex,*) '\medskip\'
118  WRITE(NTEX,*) '\begin{tabular}{||r|l||c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c||}'
119  WRITE(NTEX,*) '\hline'
120  WRITE(NTEX,*) '\hline'
121 !
122 !* WARNING: check the cover type order in ini_data_cover routine
123 !
124  IF (CLANG=='en') THEN
125  WRITE(NTEX, '("&&bare&rocks&snow&broad.d&needl.e&ever-&C3&C4&irr.&grass&grass&irr. ")', ADVANCE='no')
126  WRITE(NTEX, '("broad.d&broad.e&needl.e&broad.d&needl.d&grass&shrubs\\")')
127  WRITE(NTEX, '("&&land&&&temp.&boreal&green&crops&crops&crops&C3&C4&grass&trop. ")', ADVANCE='no')
128  WRITE(NTEX, '("temp.&temp.&boreal&boreal&boreal&broad.\\")')
129  ELSE
130  WRITE(NTEX, '("&&sol&roc&neige&feuillu.d&coni.p&persis-&C3&C4&cult.&prairie&prairie ")', ADVANCE='no')
131  WRITE(NTEX, '("pelouse&feuillu.d&feuillu.p&aigui.p&feuillu.d&aigui.d&prairie&arbuste\\")')
132  WRITE(NTEX, '("&&nu&&&temp.&boreale&tants&cult.&cult.&irr.&&tropicale&&tropi.&temp. ")', ADVANCE='no')
133  WRITE(NTEX, '("temp.&boreale&boreale&boreale\\")')
134  END IF
135  WRITE(NTEX,*) '\hline'
136  WRITE(NTEX,*) '\hline'
137  IP=0
138  DO
139 
140  IF (I==JPCOVER) EXIT
141  I=I+1
142  IF (XDATA_NATURE(I)>0.) THEN
143  IP=IP+1
144  DO J=1,NVEGTYPE
145  IF (XDATA_VEGTYPE(I,J)==0.) THEN
146  YDATA_VEGTYPE(J) = ' '
147  ELSE
148  WRITE(YFMT,FMT='(a2,i1,a1,i1,a1)') '(f',NB(XDATA_VEGTYPE(I,J)),'.',DEC(XDATA_VEGTYPE(I,J)),')'
149  WRITE(YSTRING6, FMT=YFMT) XDATA_VEGTYPE(I,J)
150  YDATA_VEGTYPE(J) = YSTRING6
151  END IF
152  END DO
153 
154  WRITE(NTEX, FMT=*) &
155  I,' & ',CNAME(I ),' & ',YDATA_VEGTYPE(1 ),' & ',YDATA_VEGTYPE(2 ),' & ',&
156  YDATA_VEGTYPE(3 ),' & ',YDATA_VEGTYPE(4 ),' & ',YDATA_VEGTYPE(5 ),' & ',&
157  YDATA_VEGTYPE(6 ),' & ',YDATA_VEGTYPE(7 ),' & ',YDATA_VEGTYPE(8 ),' & ',&
158  YDATA_VEGTYPE(9 ),' & ',YDATA_VEGTYPE(10),' & ',YDATA_VEGTYPE(11),' & ',&
159  YDATA_VEGTYPE(12),' & ',YDATA_VEGTYPE(13),' & ',YDATA_VEGTYPE(14),' & ',&
160  YDATA_VEGTYPE(15),' & ',YDATA_VEGTYPE(16),' & ',YDATA_VEGTYPE(17),' & ',&
161  YDATA_VEGTYPE(18),' & ',YDATA_VEGTYPE(19),' '
162  WRITE(NTEX,*) '\hline'
163  GLINE=.TRUE.
164  END IF
165  CALL HLINE(NTEX,GLINE,I)
166  IF (IP==NLINES) EXIT
167  END DO
168  WRITE(NTEX,*) '\end{tabular}'
169 !
170 !-------------------------------------------------------------------------------
171 !
172  WRITE(NTEX,*) '\clearpage'
173 !
174 END DO
175 !
176 !-------------------------------------------------------------------------------
177 !
178  IF (CLANG=='en') THEN
179  WRITE(NTEX,*) '{\bf computation of other isba parameters}
180  WRITE(ntex,*) '\medskip\'
181  WRITE(NTEX,*) "Vegetation type, Leaf area index and height of vegetation (for trees)"
182  WRITE(NTEX,*) "are used in these computations.\"
183  WRITE(NTEX,*) '\bigskip
184  WRITE(ntex,*) '\underline{vegetation fraction}\'
185  WRITE(NTEX,*) '\medskip
186  WRITE(ntex,*) '\begin{tabular}{rll}'
187  WRITE(ntex,*) 'veg = & $1-e^{-0.6 lai}$ & for C3, C4 and irrigated crops\\'
188  WRITE(ntex,*) 'veg = & 0.95 & for boreale, temperate, tropical and irrigated grass\\'
189  WRITE(ntex,*) 'veg = & 0.95 & for broadleaf and coniferous trees\\'
190  IF(xeverg_veg==0.99)THEN
191  WRITE(ntex,*) 'veg = & 0.99 & for evergreen broadleaf trees\\'
192  ELSE
193  WRITE(ntex,*) 'veg = & 1.00 & for evergreen broadleaf trees\\'
194  ENDIF
195  WRITE(ntex,*) 'veg = & 0. & for bare soil, snow and rocks'
196  WRITE(ntex,*) '\end{tabular}'
197  WRITE(ntex,*) '\smallskip\'
198  WRITE(NTEX,*) 'when averaging is needed, it is performed arithmetically'
199  WRITE(NTEX,*) "\bigskip\"
200  WRITE(NTEX,*) '\underline{roughness length for momentum}
201  WRITE(ntex,*) '\medskip\'
202  WRITE(NTEX,*) 'the height of the vegetation(or obstacles over bare soils) is computed as:
203  WRITE(ntex,*) '\begin{tabular}{rll}'
204  WRITE(ntex,*) '$h_{veg}$ = & min $(1. , h_{allen})$ & for C3 crops\\'
205  WRITE(ntex,*) '$h_{veg}$ = & min $(2.5, h_{allen})$ & for C4 and irrigated crops\\'
206  WRITE(ntex,*) '$h_{veg}$ = & $h$ & for broadleaf, coniferous and evergreen trees\\'
207  WRITE(ntex,*) '$h_{veg}$ = & $lai/6$ & for grassland, tropical grassland and irrigated grass\\'
208  WRITE(ntex,*) '$h_{veg}$ = & 0.1 m & for bare soil\\'
209  WRITE(ntex,*) '$h_{veg}$ = & 1. m & for rocks\\'
210  WRITE(ntex,*) '$h_{veg}$ = & 0.01 m & for permanent snow and ice'
211  WRITE(ntex,*) '\end{tabular}'
212  WRITE(ntex,*) '\smallskip\'
213  WRITE(NTEX,*) 'where $h_{allen} = e^{(lai-3.5)/1.3}$
214  WRITE(ntex,*) 'The roughness length is deduced: $z_{0} = 0.13 h_{veg}$\'
215  WRITE(NTEX,*) 'when averaging is needed, it is performed according to the'
216  WRITE(NTEX,*) '$1/{\rm ln}^2(\frac{z_{0}}{10})$ quantities.'
217  WRITE(NTEX,*) "\bigskip\"
218  WRITE(NTEX,*) '\underline{emissivity}
219  WRITE(ntex,*) "\medskip\"
220  WRITE(NTEX,*) "emissivity is equal to 0.97 on the vegetated part(veg), "
221  WRITE(NTEX,*) "to 0.94 on bare soil and rocks, and to 1. on snow."
222  WRITE(NTEX,*) "averaging is linear."
223  WRITE(NTEX,*) "\bigskip
224  WRITE(ntex,*) '\underline{cumulative root fraction}\'
225  WRITE(NTEX,*) "\smallskip\"
226  WRITE(NTEX,*) "\begin{displaymath}"
227  WRITE(NTEX,*) "F_{root} =(1-\delta) \left[ \frac{1-A^{100\times z}}"
228  WRITE(NTEX,*) "{1 - A^{100\times d_2}} \right] + \delta \frac{z}{d_2}"
229  WRITE(NTEX,*) "\end{displaymath}"
230  WRITE(NTEX,*) "where $d_2$ is root depth, given for each 215 ecosystem (meters),"
231  WRITE(NTEX,*) "$z$ is depth (meters, "
232  WRITE(NTEX,*) "positive downwards), $\delta=0.05$ and $A$ is the extinction"
233  WRITE(NTEX,*) "coefficient after Jackson (1996) (see below).\"
234  WRITE(NTEX,*) "Averaging is linear."
235  WRITE(NTEX,*) "\bigskip\"
236  WRITE(NTEX,*) '\underline{other vegetation parameters}
237  WRITE(ntex,*) "\medskip\"
238  WRITE(NTEX,*) 'Other vegetation parameters are computed from the vegetation types.'
239  WRITE(NTEX,*) "the 'bare soil', 'rocks' and 'snow' vegetation types are not pertinent."
240  WRITE(NTEX,*) 'When averaging is needed,'
241  WRITE(NTEX,*) 'it is performed linearly, except for the $C_v$ parameter, where it is harmonic.'
242  WRITE(NTEX,*) '\medskip\'
243  WRITE(NTEX,*) '\begin{tabular}{||l||c|c|c|c|c|c|c|c|c|c||}'
244  WRITE(NTEX,*) '\hline'
245  WRITE(NTEX,*) '&$\alpha_{nir}$&$\alpha_{vis}$&$r_{s_{min}}$&$\gamma$&$rgl$&$gm$&$B/lai$&$e_{_{fold}}$&$C_v$&$A$\\'
246  WRITE(NTEX,*) '\hline'
247  WRITE(NTEX,*) 'brodleaf trees & .25 & .05 & 150 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$ & 0.966 \\'
248  WRITE(NTEX,*) 'coniferous trees & .15 & .05 & 150 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$ & 0.943 \\'
249  IF(XEVERG_RSMIN==250.)THEN
250  WRITE(NTEX,*) 'evergreen broadleaf trees & .21 & .05 & 250 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$ & 0.962 \\'
251  ELSE
252  WRITE(NTEX,*) 'evergreen broadleaf trees & .21 & .05 & 175 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$ & 0.962 \\'
253  ENDIF
254  WRITE(NTEX,*) 'C3 crops & .30 & .10 & 40 & 0. & 100 & .003 & .06 & 60. & 2. $10^{-5}$& 0.961 \\'
255  WRITE(NTEX,*) 'C4 crops & .30 & .10 & 120 & 0. & 100 & .003 & .06 & 60. & 2. $10^{-5}$ & 0.972 \\'
256  WRITE(NTEX,*) 'irr. crops & .30 & .10 & 120 & 0. & 100 & .003 & .06 & 60. & 2. $10^{-5}$ & 0.961 \\'
257  WRITE(NTEX,*) 'grassland & .30 & .10 & 40 & 0. & 100 & .020 & .36 & 90. & 2. $10^{-5}$& 0.943 \\'
258  WRITE(NTEX,*) 'trop. grass & .30 & .10 & 120 & 0. & 100 & .020 & .36 & 90. & 2. $10^{-5}$ & 0.972 \\'
259  WRITE(NTEX,*) 'irr. grass & .30 & .10 & 40 & 0. & 100 & .020 & .36 & 90. & 2. $10^{-5}$& 0.943 \\'
260  WRITE(NTEX,*) '\hline'
261  WRITE(NTEX,*) '\end{tabular}'
262  ELSE
263  WRITE(NTEX,*) "{\bf calcul des autres param\`etres d'ISBA}\"
264  WRITE(NTEX,*) '\medskip
265  WRITE(ntex,*) "Les types de v\'eg\'etation, l'indice foliaire et la hauteur de la v\'eg\'etation (pour les arbres)"
266  WRITE(ntex,*) "sont utilis\'es dans ces calculs.\"
267  WRITE(NTEX,*) '\bigskip\'
268  WRITE(NTEX,*) "\underline{fraction de vegetation}
269  WRITE(ntex,*) '\medskip\'
270  WRITE(NTEX,*) "\begin{tabular}{rll}"
271  WRITE(NTEX,*) "veg = & $1-e^{-0.6 lai}$ & pour les cultures (C3, C4 et irrigu\'ees)\\"
272  WRITE(NTEX,*) "veg = & 0.95 & pour les arbres (feuillus, conif\`eres)\\"
273  IF(XEVERG_VEG==0.99)THEN
274  WRITE(NTEX,*) "veg = & 0.99 & pour les feuillus persistants\\"
275  ELSE
276  WRITE(NTEX,*) "veg = & 1.00 & pour les feuillus persistants\\"
277  ENDIF
278  WRITE(NTEX,*) "veg = & 0.95 & pour la prairie, la prairie tropicale et la pelouse irrigu\'ee\\"
279  WRITE(NTEX,*) "veg = & 0. & pour les sols nus, la neige \'eternelle et les rochers"
280  WRITE(NTEX,*) "\end{tabular}"
281  WRITE(NTEX,*) "\smallskip\"
282  WRITE(NTEX,*) "Quand une moyenne est n\'ecessaire, elle est arithm\'etique."
283  WRITE(NTEX,*) "\bigskip\"
284  WRITE(NTEX,*) "\underline{longueur de rugosit\'e pour la quantit\'e de mouvement}\"
285  WRITE(NTEX,*) '\medskip
286  WRITE(ntex,*) "La hauteur de la v\'eg\'etation (ou des obstacles sur les sols nus) est calcul\'ee ainsi:\"
287  WRITE(NTEX,*) "\begin{tabular}{rll}"
288  WRITE(NTEX,*) "$h_{veg}$ = & min $(1. , h_{allen})$ & pour les cultures(c3)"
289  WRITE(NTEX,*) "$h_{veg}$ = & min $(2.5, h_{allen})$ & pour les cultures(c4 et irriguees)"
290  WRITE(NTEX,*) "$h_{veg}$ = & $h$ & pour les arbres(feuillus, conif\`eres et persistants)"
291  WRITE(NTEX,*) "$h_{veg}$ = & $lai/6$ & pour la prairie, la prairie tropicale et la pelouse irriguee"
292  WRITE(NTEX,*) "$h_{veg}$ = & 0.1 m & pour le sol nu"
293  WRITE(NTEX,*) "$h_{veg}$ = & 1. m & pour les rochers"
294  WRITE(NTEX,*) "$h_{veg}$ = & 0.01 m & pour les neiges eternelles et glaciers"
295  WRITE(NTEX,*) "\end{tabular}"
296  WRITE(NTEX,*) "\smallskip
297  WRITE(ntex,*) "avec $h_{allen} = e^{(lai-3.5)/1.3}$\"
298  WRITE(NTEX,*) "la longueur de rugosite de la surface en est deduite:"
299  WRITE(NTEX,*) "$z_{0} = 0.13 h_{veg}$
300  WRITE(ntex,*) "Quand une moyenne est n\'ecessaire, elle s'effectue sur les"
301  WRITE(ntex,*) "$1/{\rm ln}^2(\frac{z_{0}}{10})$."
302  WRITE(ntex,*) "\bigskip\"
303  WRITE(NTEX,*) "\underline{emissivite}
304  WRITE(ntex,*) '\medskip\'
305  WRITE(NTEX,*) "L'emissivite est egale a 0.97 sur la partie vegetale(veg), "
306  WRITE(NTEX,*) "0.94 sur la partie sol nu et rochers, et 1 sur la neige."
307  WRITE(NTEX,*) "les moyennes sont lineaires."
308  WRITE(NTEX,*) "\bigskip
309  WRITE(ntex,*) "\underline{fraction cumul\'ee de racines}\"
310  WRITE(NTEX,*) "\medskip
311  WRITE(ntex,*) "\begin{displaymath}"
312  WRITE(ntex,*) "F_{root} =(1-\delta) \left[ \frac{1-A^{100\times z}}"
313  WRITE(ntex,*) "{1 - A^{100\times d}} \right] + \delta \frac{z}{d_2}"
314  WRITE(ntex,*) "\end{displaymath}"
315  WRITE(ntex,*) "o\`u $d_2$ est la profondeur racinaire, "
316  WRITE(ntex,*) "donn\'ee pour chacun des 215 ecosyst\`emes (m\`etres),"
317  WRITE(ntex,*) "$z$ est la profondeur (m\`etres, "
318  WRITE(ntex,*) "positive vers le bas), $\delta=0.05$ et $A$ est le"
319  WRITE(ntex,*) "coefficient d'extinction d'apr\`es Jackson (1996) (voir ci-dessous).\"
320  WRITE(NTEX,*) "les moyennes sont lineaires."
321  WRITE(NTEX,*) "\bigskip
322  WRITE(ntex,*) "\underline{autres param\`etres de v\'eg\'etation}\"
323  WRITE(NTEX,*) '\medskip\'
324  WRITE(NTEX,*) "les autres param\`etres de vegetation sont deduits des types de vegetation."
325  WRITE(NTEX,*) "les types 'sol nu', 'rochers' et 'neige' ne sont pas pertinents."
326  WRITE(NTEX,*) "quand une moyenne est necessaire, elle est lineaire, sauf sur le param\`etre"
327  WRITE(NTEX,*) "$c_v$, o\`u elle est harmonique."
328  WRITE(NTEX,*) '\medskip\'
329  WRITE(NTEX,*) '\begin{tabular}{||l||c|c|c|c|c|c|c|c|c|c||}'
330  WRITE(NTEX,*) '\hline'
331  WRITE(NTEX,*) '&$\alpha_{nir}$&$\alpha_{vis}$&$r_{s_{min}}$&$\gamma$&$rgl$&$gm$&$B/lai$&$e_{_{fold}}$&$C_v$&$A$\\'
332  WRITE(NTEX,*) '\hline'
333  WRITE(NTEX,*) 'feuillus & .25 & .05 & 150 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$& 0.966 \\'
334  WRITE(NTEX,*) 'conif\`eres & .15 & .05 & 150 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$& 0.943 \\'
335  IF(XEVERG_RSMIN==250.)THEN
336  WRITE(NTEX,*) 'feuillus persistans & .21 & .05 & 250 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$& 0.962 \\'
337  ELSE
338  WRITE(NTEX,*) 'feuillus persistans & .21 & .05 & 175 & .04 & 30 & .001 & .25 & 365. & 1. $10^{-5}$& 0.962 \\'
339  ENDIF
340  WRITE(NTEX,*) 'cultures C3 & .30 & .10 & 40 & 0. & 100 & .003 & .06 & 60. & 2. $10^{-5}$& 0.961 \\'
341  WRITE(NTEX,*) 'cultures C4 & .30 & .10 & 120 & 0. & 100 & .003 & .06 & 60. & 2. $10^{-5}$& 0.972 \\'
342  WRITE(NTEX,*) 'cultures irr. & .30 & .10 & 120 & 0. & 100 & .003 & .06 & 60. & 2. $10^{-5}$& 0.961 \\'
343  WRITE(NTEX,*) 'prairies & .30 & .10 & 40 & 0. & 100 & .020 & .36 & 90. & 2. $10^{-5}$&0.943 \\'
344  WRITE(NTEX,*) 'prairies trop. & .30 & .10 & 120 & 0. & 100 & .020 & .36 & 90. & 2. $10^{-5}$& 0.972 \\'
345  WRITE(NTEX,*) 'pelouse & .30 & .10 & 40 & 0. & 100 & .020 & .36 & 90. & 2. $10^{-5}$& 0.943 \\'
346  WRITE(NTEX,*) '\hline'
347  WRITE(NTEX,*) '\end{tabular}'
348  END IF
349 !
350 !-------------------------------------------------------------------------------
351 !
352  WRITE(NTEX,*) '\clearpage'
353 !
354 !-------------------------------------------------------------------------------
355 !-------------------------------------------------------------------------------
356 !
357 DO JVEGTYPE=1,NVEGTYPE
358  !
359  I=0
360  !
361  DO
362  !
363  IF (I==JPCOVER) EXIT
364  !
365  IF (JVEGTYPE==NVT_ROCK) YPATCH = (/ 'rocks ', &
366  'les rochers ' /)
367  IF (JVEGTYPE==NVT_SNOW) THEN
368  YPATCH(1) = 'permanent snow and ice '
369  YPATCH(2) = "les neiges eternelles "
370  END IF
371  IF (JVEGTYPE==NVT_NO ) YPATCH = (/ 'bare soil ', &
372  'le sol nu ' /)
373  IF (JVEGTYPE==NVT_GRAS) YPATCH = (/ 'grasslands ', &
374  'les prairies ' /)
375  IF (JVEGTYPE==NVT_BOGR) YPATCH = (/ 'tundra and boreal grass ', &
376  'les prairies boreale ' /)
377  IF (JVEGTYPE==NVT_TROG) YPATCH = (/ 'tropical grasslands ', &
378  'les prairies tropicales ' /)
379  IF (JVEGTYPE==NVT_PARK) THEN
380  YPATCH(1) = 'irrigated grass '
381  YPATCH(2) = "les pelouses irriguees "
382  END IF
383  IF (JVEGTYPE==NVT_C3) YPATCH = (/ 'C3 crops ', &
384  'les cultures C3 ' /)
385  IF (JVEGTYPE==NVT_C4) YPATCH = (/ 'C4 crops ', &
386  'les cultures C4 ' /)
387  IF (JVEGTYPE==NVT_IRR ) THEN
388  YPATCH(1) = 'irrigated crops '
389  YPATCH(2) = "les cultures irriguees "
390  END IF
391  IF (JVEGTYPE==NVT_TEBD) YPATCH = (/ 'temperate broadleaf deciduous', &
392  'les feuillus decidus tempere ' /)
393  IF (JVEGTYPE==NVT_BONE) YPATCH = (/ 'boreal needleleaf evergreen ', &
394  'coniferes boreale persistant ' /)
395  IF (JVEGTYPE==NVT_TRBE) THEN
396  YPATCH(1) = 'equatorial evergreen forest '
397  YPATCH(2) = "les for\^ets equatoriales"
398  END IF
399  IF (JVEGTYPE==NVT_TRBD) YPATCH = (/ 'tropical broadleaf deciduous ', &
400  'feuillus decidus tropical ' /)
401  IF (JVEGTYPE==NVT_TEBE) YPATCH = (/ 'temperate broadleaf evergreen', &
402  'feuillus tempere persistant ' /)
403  IF (JVEGTYPE==NVT_TENE) YPATCH = (/ 'temperate needle. evergreen ', &
404  'coniferes tempere persistant ' /)
405  IF (JVEGTYPE==NVT_BOBD) YPATCH = (/ 'boreal broadleaf deciduous ', &
406  'coniferes decidus boreale ' /)
407  IF (JVEGTYPE==NVT_BOND) YPATCH = (/ 'boreal needleleaf deciduous ', &
408  'coniferes decidus boreale ' /)
409  IF (JVEGTYPE==NVT_SHRB) YPATCH = (/ 'broadleaf shrub ', &
410  'arbustes feuillus ' /)
411  !
412 .OR..OR. IF (JVEGTYPE==NVT_ROCK JVEGTYPE==NVT_SNOW JVEGTYPE==NVT_NO) THEN
413  IF (CLANG=='EN') THEN
414  WRITE(NTEX,*) '{\bf Ground depths for : ',YPATCH(1),'}\\'
415  ELSE
416  WRITE(NTEX,*) "{\bf profondeurs de sol pour : ",YPATCH(2),'}\\'
417  END IF
418 
419  WRITE(NTEX,*) '\medskip\'
420  WRITE(NTEX,*) '\begin{tabular}{||r|l||c|c||}'
421  WRITE(NTEX,*) '\hline'
422  WRITE(NTEX,*) '\hline'
423  WRITE(NTEX,*) '&&$d_2$&$d_3$\\'
424  WRITE(NTEX,*) '\hline'
425  WRITE(NTEX,*) '\hline'
426  ELSE
427  IF (CLANG=='EN') THEN
428  WRITE(NTEX,*) '{\bf Leaf Area Index and ground depths for : ',YPATCH(1),'}\\'
429  ELSE
430  WRITE(NTEX,*) "{\bf indice foliaire et profondeurs de sol pour : ",YPATCH(2),'}\\'
431  END IF
432  !
433 .OR..OR..OR. IF (JVEGTYPE==NVT_TEBD JVEGTYPE==NVT_BONE JVEGTYPE==NVT_TRBE &
434 .OR..OR..OR. JVEGTYPE==NVT_TRBD JVEGTYPE==NVT_TEBE JVEGTYPE==NVT_TENE &
435 .OR..OR. JVEGTYPE==NVT_BOBD JVEGTYPE==NVT_BOND JVEGTYPE==NVT_SHRB ) THEN
436  WRITE(NTEX,*) '\medskip\'
437  WRITE(NTEX,*) '\begin{tabular}{||r|l||c|c|c|c|c|c|c|c|c|c|c|c||c|c||c||}'
438  WRITE(NTEX,*) '\hline'
439  WRITE(NTEX,*) '\hline'
440  WRITE(NTEX,*) '&&01&02&03&04&05&06&07&08&09&10&11&12&$d_2$&$d_3$&$h$\\'
441  WRITE(NTEX,*) '\hline'
442  WRITE(NTEX,*) '\hline'
443  ELSE
444  WRITE(NTEX,*) '\medskip\'
445  WRITE(NTEX,*) '\begin{tabular}{||r|l||c|c|c|c|c|c|c|c|c|c|c|c||c|c||}'
446  WRITE(NTEX,*) '\hline'
447  WRITE(NTEX,*) '\hline'
448  WRITE(NTEX,*) '&&01&02&03&04&05&06&07&08&09&10&11&12&$d_2$&$d_3$\\'
449  WRITE(NTEX,*) '\hline'
450  WRITE(NTEX,*) '\hline'
451  END IF
452  END IF
453 
454  IP=0
455  DO
456  IF (I==JPCOVER) EXIT
457  I=I +1
458  !
459  IF (XDATA_VEGTYPE(I,JVEGTYPE)>0.) THEN
460  IP=IP+1
461  !
462  DO J=1,12
463  IF (XDATA_LAI(I,J,JVEGTYPE)==0.) THEN
464  YDATA_MONTH(J) = ' - '
465  ELSE
466  WRITE(YFMT,FMT='(A2,I1,A1,I1,A1)') '(F',NB(XDATA_LAI(I,3*J-1,JVEGTYPE)),'.',DEC(XDATA_LAI(I,3*J-1,JVEGTYPE)),')'
467  WRITE(YSTRING6, FMT=YFMT) XDATA_LAI(I,3*J-1,JVEGTYPE)
468  YDATA_MONTH(J) = YSTRING6
469  END IF
470  END DO
471  !
472  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_ROOT_DEPTH(I,JVEGTYPE)),'.',DEC(XDATA_ROOT_DEPTH(I,JVEGTYPE)),')'
473  WRITE(YSTRING6, FMT=YFMT) XDATA_ROOT_DEPTH(I,JVEGTYPE)
474  YDATA_VEGPARAM(1) = YSTRING6
475  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_GROUND_DEPTH(I,JVEGTYPE)),'.',DEC(XDATA_GROUND_DEPTH(I,JVEGTYPE)),')'
476  WRITE(YSTRING6, FMT=YFMT) XDATA_GROUND_DEPTH(I,JVEGTYPE)
477  YDATA_VEGPARAM(2) = YSTRING6
478  !
479  IF (JVEGTYPE==NVT_TEBD) THEN
480  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_TEBD)),'.',DEC(XDATA_H_TREE(I,NVT_TEBD)),')'
481  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_TEBD)
482  YDATA_VEGPARAM(3) = YSTRING6
483  ELSE IF (JVEGTYPE==NVT_BONE) THEN
484  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_BONE)),'.',DEC(XDATA_H_TREE(I,NVT_BONE)),')'
485  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_BONE)
486  YDATA_VEGPARAM(3) = YSTRING6
487  ELSE IF (JVEGTYPE==NVT_TRBE) THEN
488  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_TRBE)),'.',DEC(XDATA_H_TREE(I,NVT_TRBE)),')'
489  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_TRBE)
490  YDATA_VEGPARAM(3) = YSTRING6
491  ELSE IF (JVEGTYPE==NVT_TRBD) THEN
492  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_TRBD)),'.',DEC(XDATA_H_TREE(I,NVT_TRBD)),')'
493  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_TRBD)
494  YDATA_VEGPARAM(3) = YSTRING6
495  ELSE IF (JVEGTYPE==NVT_TEBE) THEN
496  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_TEBE)),'.',DEC(XDATA_H_TREE(I,NVT_TEBE)),')'
497  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_TEBE)
498  YDATA_VEGPARAM(3) = YSTRING6
499  ELSE IF (JVEGTYPE==NVT_TENE) THEN
500  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_TENE)),'.',DEC(XDATA_H_TREE(I,NVT_TENE)),')'
501  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_TENE)
502  YDATA_VEGPARAM(3) = YSTRING6
503  ELSE IF (JVEGTYPE==NVT_BOBD) THEN
504  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_BOBD)),'.',DEC(XDATA_H_TREE(I,NVT_BOBD)),')'
505  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_BOBD)
506  YDATA_VEGPARAM(3) = YSTRING6
507  ELSE IF (JVEGTYPE==NVT_BOND) THEN
508  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_BOND)),'.',DEC(XDATA_H_TREE(I,NVT_BOND)),')'
509  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_BOND)
510  YDATA_VEGPARAM(3) = YSTRING6
511  ELSE IF (JVEGTYPE==NVT_SHRB) THEN
512  WRITE(YFMT,'(A2,I1,A1,I1,A1)') '(F',NB(XDATA_H_TREE(I,NVT_SHRB)),'.',DEC(XDATA_H_TREE(I,NVT_SHRB)),')'
513  WRITE(YSTRING6, FMT=YFMT) XDATA_H_TREE(I,NVT_SHRB)
514  YDATA_VEGPARAM(3) = YSTRING6
515  ELSE
516  YDATA_VEGPARAM(3) = ' '
517  END IF
518  !
519 .OR..OR..OR. IF (JVEGTYPE==NVT_TEBD JVEGTYPE==NVT_BONE JVEGTYPE==NVT_TRBE &
520 .OR..OR..OR. JVEGTYPE==NVT_TRBD JVEGTYPE==NVT_TEBE JVEGTYPE==NVT_TENE &
521 .OR..OR. JVEGTYPE==NVT_BOBD JVEGTYPE==NVT_BOND JVEGTYPE==NVT_SHRB ) THEN
522  WRITE(NTEX, FMT=*) &
523  I,' & ',CNAME(I ),' & ',YDATA_MONTH(1 ), ' & ',YDATA_MONTH(2),' & ', &
524  YDATA_MONTH(3 ),' & ',YDATA_MONTH(4 ), ' & ',YDATA_MONTH(5),' & ', &
525  YDATA_MONTH(6 ),' & ',YDATA_MONTH(7 ), ' & ',YDATA_MONTH(8),' & ', &
526  YDATA_MONTH(9 ),' & ',YDATA_MONTH(10),' & ',YDATA_MONTH(11),' & ', &
527  YDATA_MONTH(12),' & ',YDATA_VEGPARAM(1),' & ',YDATA_VEGPARAM(2),' & ',YDATA_VEGPARAM(3),' \\'
528 .OR..OR. ELSE IF (JVEGTYPE==NVT_ROCK JVEGTYPE==NVT_SNOW JVEGTYPE==NVT_NO) THEN
529  WRITE(NTEX, FMT=*) &
530  I,' & ',CNAME(I),' & ',YDATA_VEGPARAM(1),' & ',YDATA_VEGPARAM(2),' \\'
531  ELSE
532  WRITE(NTEX, FMT=*) &
533  I,' & ',CNAME(I),' & ',YDATA_MONTH(1), ' & ',YDATA_MONTH(2), ' & ', &
534  YDATA_MONTH(3),' & ',YDATA_MONTH(4), ' & ',YDATA_MONTH(5), ' & ', &
535  YDATA_MONTH(6),' & ',YDATA_MONTH(7), ' & ',YDATA_MONTH(8), ' & ', &
536  YDATA_MONTH(9),' & ',YDATA_MONTH(10),' & ',YDATA_MONTH(11),' & ', &
537  YDATA_MONTH(12),' & ',YDATA_VEGPARAM(1),' & ',YDATA_VEGPARAM(2),' \\'
538  END IF
539  WRITE(NTEX,*) '\hline'
540  GLINE=.TRUE.
541  END IF
542  CALL HLINE(NTEX,GLINE,I)
543  IF (IP==NLINES) EXIT
544  END DO
545  !
546  WRITE(NTEX,*) '\end{tabular}'
547  !
548  WRITE(NTEX,*) '\clearpage'
549  END DO
550  !
551  !
552 !-------------------------------------------------------------------------------
553 END DO
554 IF (LHOOK) CALL DR_HOOK('WRITE_COVER_TEX_ISBA',1,ZHOOK_HANDLE)
555 !-------------------------------------------------------------------------------
556 !
557 END SUBROUTINE WRITE_COVER_TEX_ISBA
558 
subroutine soil(HC1DRY, HSCOND, HSNOW_ISBA, OGLACIER, PSNOWRHOM, PVEG, PCGSAT, PCGMAX, PC1SAT, PC2REF, PACOEF, PPCOEF, PCV, PPSN, PPSNG, PPSNV, PFFG, PFFV, PFF, PCG, PC1, PC2, PWGEQ, PCT, PCS, PFROZEN1, PTG, PWG, PWGI, PHCAPSOILZ, PCONDDRYZ, PCONDSLDZ, PBCOEF, PWSAT, PWWILT, HKSAT, PCONDSAT, PFFG_NOSNOW, PFFV_NOSNOW)
Definition: soil.F90:6
subroutine veg(PSW_RAD, PTA, PQA, PPS, PRGL, PLAI, PRSMIN, PGAMMA, PF2, PRS)
Definition: veg.F90:6
subroutine isba(HISBA, HPHOTO, OTR_ML, HRUNOFF, HKSAT, HRAIN, HHORT, HC1DRY, HSCOND, HSNOW_ISBA, HSNOWRES, HCPSURF, HSOILFRZ, HDIFSFCOND, TPTIME, OFLOOD, OTEMP_ARP, OGLACIER, OMEB, OFORC_MEASURE, OMEB_LITTER, OMEB_GNDRES, PTSTEP, HIMPLICIT_WIND, OAGRI_TO_GRASS, OSNOWDRIFT, OSNOWDRIFT_SUBLIM, OSNOW_ABS_ZENITH, HSNOWMETAMO, HSNOWRAD, PCGMAX, PZREF, PUREF, PDIRCOSZW, PTA, PQA, PEXNA, PRHOA, PPS, PEXNS, PRR, PSR, PZENITH, PSCA_SW, PSW_RAD, PLW_RAD, PVMOD, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PRSMIN, PRGL, PGAMMA, PCV, PRUNOFFD, PSOILWGHT, KLAYER_HORT, KLAYER_DUN, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, PALB, PWRMAX_CF, PVEG, PLAI, PEMIS, PZ0_WITH_SNOW, PZ0H_WITH_SNOW, PVEGTYPE, PZ0EFF, PRGLCV, PGAMMACV, PRSMINCV, PROOTFRACCV, PWRMAX_CFCV, PLAIV, PBSLAI, PLAIMIN, PH_VEG, PPALPHAN, PZ0G_WITHOUT_SNOW, PZ0_MEBV, PZ0H_MEBV, PZ0EFF_MEBV, PZ0_MEBN, PZ0H_MEBN, PZ0EFF_MEBN, PGNDLITTER, PRUNOFFB, PCGSAT, PC1SAT, PC2REF, PC3, PC4B, PC4REF, PACOEF, PPCOEF, PTAUICE, PWDRAIN, PTDEEP_A, PTDEEP_B, PGAMMAT, PPSN, PPSNG, PPSNV, PPSNV_A, PSNOWFREE_ALB_VEG, PSNOWFREE_ALB_SOIL, PIRRIG, PWATSUP, PTHRESHOLD, LIRRIGATE, LIRRIDAY, OSTRESSDEF, PGC, PF2I, PDMAX, PAH, PBH, PCSP, PGMES, PPOI, PFZERO, PEPSO, PGAMM, PQDGAMM, PQDGMES, PT1GMES, PT2GMES, PAMAX, PQDAMAX, PT1AMAX, PT2AMAX, PABC, PD_G, PDZG, PDZDIF, KWG_LAYER, PROOTFRAC, PWFC, PWWILT, PWSAT, PBCOEF, PCONDSAT, PMPOTSAT, PHCAPSOIL, PCONDDRY, PCONDSLD, PD_ICE, PKSAT_ICE, PMUF, PFF, PFFG, PFFV, PFFG_NOSNOW, PFFV_NOSNOW, PFFROZEN, PFALB, PFEMIS, PFFLOOD, PPIFLOOD, PIFLOOD, PPFLOOD, PLE_FLOOD, PLEI_FLOOD, PSODELX, PLAT, PLON, PTG, PWG, PWGI, PCPS, PLVTT, PLSTT, PWR, PWRL, PWRLI, PWRVN, PTV, PTL, PRESA, PANFM, PFSAT, PSNOWALB, PSNOWALBVIS, PSNOWALBNIR, PSNOWALBFIR, PSNOWSWE, PSNOWHEAT, PSNOWRHO, PSNOWGRAN1, PSNOWGRAN2, PSNOWHIST, PSNOWAGE, PGRNDFLUX, PHPSNOW, PSNOWHMASS, PRNSNOW, PHSNOW, PGFLUXSNOW, PUSTARSNOW, PSRSFC, PRRSFC, PLESL, PEMISNOW, PCDSNOW, PCHSNOW, PTS_RAD, PTS, PHV, PQS, PSNOWTEMP, PSNOWLIQ, PSNOWDZ, PCG, PC1, PC2, PWGEQ, PCT, PCH, PCD, PCDN, PRI, PHU, PHUG, PEMIST, PALBT, PRS, PLE, PRN, PH, PLEI, PLEGI, PLEG, PLEV, PLES, PLER, PLETR, PEVAP, PGFLUX, PRESTORE, PUSTAR, PDRAIN, PRUNOFF, PMELT, PMELTADV, PTC, PQC, PRN_ISBA, PH_ISBA, PLEG_ISBA, PLEGI_ISBA, PLEV_ISBA, PLETR_ISBA, PUSTAR_ISBA, PLER_ISBA, PLE_ISBA, PLEI_ISBA, PGFLUX_ISBA, PHORT, PDRIP, PRRVEG, PAC_AGG, PHU_AGG, PFAPARC, PFAPIRC, PMUS, PLAI_EFFC, PAN, PANDAY, PRESP_BIOMASS_INST, PIACAN, PANF, PGPP, PFAPAR, PFAPIR, PFAPAR_BS, PFAPIR_BS, PIRRIG_FLUX, PDEEP_FLUX, PSWNET_V, PSWNET_G, PSWNET_N, PSWNET_NS, PLWNET_V, PLWNET_G, PLWNET_N, PLEV_V_C, PLES_V_C, PH_V_C, PH_G_C, PLETR_G_C, PLETR_V_C, PLER_G_C, PLELITTER, PLELITTERI, PDRIPLIT, PRRLIT, PLER_V_C, PH_C_A, PH_N_C, PLE_C_A, PLE_V_C, PLE_G_C, PLE_N_C, PEVAP_N_C, PEVAP_G_C, PSR_GN, PMELTCV, PFRZCV, PSWDOWN_GN, PLWDOWN_GN, PIRRIG_GR, PTOPQS, PQSB, PSUBL, PFWTD, PWTD, PSNDRIFT)
Definition: isba.F90:6
subroutine hline(KTEX, GLINE, I)