SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
pack_isba_patch_get_sizen.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 pack_isba_patch_get_size_n (I, PKI, &
7  kpatch)
8 !##############################################
9 !
10 !
11 !!**** *PACK_ISBA_PATCH_GET_SIZE_n * - packs ISBA variables
12 !!
13 !! PURPOSE
14 !! -------
15 !
16 !!** METHOD
17 !! ------
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !!
23 !! AUTHOR
24 !! ------
25 !! V. Masson and A. boone
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !! Original 01/2004
30 !! B. Decharme 2008 floodplains
31 !! B. Decharme 01/2009 Good dim for XP_TG
32 !! A.L. Gibelin 04/2009 : BIOMASS and RESP_BIOMASS arrays
33 !! A.L. Gibelin 04/2009 : TAU_WOOD for NCB option
34 !! A.L. Gibelin 05/2009 : Add carbon spinup
35 !! A.L. Gibelin 06/2009 : Soil carbon variables for CNT option
36 !! A.L. Gibelin 07/2009 : Suppress RDK and transform GPP as a diagnostic
37 !! A.L. Gibelin 07/2009 : Suppress PPST and PPSTF as outputs
38 !! B. Decharme 04/2013 : DIF lateral subsurface drainage
39 !! water table / surface coupling
40 !! P Samuelsson 10/2014 : MEB
41 !!
42 !!------------------------------------------------------------------
43 !
44 !
45 USE modd_isba_n, ONLY : isba_t
46 USE modd_pack_isba, ONLY : pack_isba_t
47 !
48 USE modd_data_cover_par, ONLY : nvegtype
49 !
50 USE modd_agri, ONLY : lagrip
51 USE modd_treedrag, ONLY : ltreedrag
52 !
53 !
54 USE yomhook ,ONLY : lhook, dr_hook
55 USE parkind1 ,ONLY : jprb
56 !
57 IMPLICIT NONE
58 !
59 !
60 TYPE(isba_t), INTENT(INOUT) :: i
61 TYPE(pack_isba_t), INTENT(INOUT) :: pki
62 !
63 INTEGER, INTENT(IN) :: kpatch
64 !
65 REAL(KIND=JPRB) :: zhook_handle
66 !------------------------------------------------------------------------
67 IF (lhook) CALL dr_hook('PACK_ISBA_PATCH_GET_SIZE_N',0,zhook_handle)
68 !
69 pki%NSIZE_LSIMPLE=0
70 pki%NSIZE_L0=0
71 !
72 pki%NSIZE_NSIMPLE=0
73 pki%NSIZE_N0=0
74 !
75 pki%NSIZE_TSIMPLE=0
76 pki%NSIZE_T0=0
77 !
78 pki%NSIZE_SIMPLE=67
79 pki%NSIZE_GROUND=11
80 pki%NSIZE_VEGTYPE=1
81 pki%NSIZE_TG=1
82 pki%NSIZE_SNOW=2
83 pki%NSIZE_ALB=2
84 pki%NSIZE_2=0
85 pki%NSIZE_BIOMASS=0
86 pki%NSIZE_LITTER=0
87 pki%NSIZE_SOILCARB=0
88 pki%NSIZE_LITTLEVS=0
89 !
90 pki%NSIZE_0=0
91 pki%NSIZE_00=0
92 pki%NSIZE_000=0
93 pki%NSIZE_01=0
94 !
95 IF (i%TSNOW%SCHEME=='EBA') THEN
96  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+1
97 ELSE
98  pki%NSIZE_0=pki%NSIZE_0+1
99 ENDIF
100 !
101 IF (i%TSNOW%SCHEME=='3-L' .OR. i%TSNOW%SCHEME=='CRO') THEN
102  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+4
103  pki%NSIZE_SNOW=pki%NSIZE_SNOW+2
104 ELSE
105  pki%NSIZE_0=pki%NSIZE_0+4
106  pki%NSIZE_00=pki%NSIZE_00+2
107 ENDIF
108 !
109 IF(i%TSNOW%SCHEME=='CRO') THEN
110  pki%NSIZE_SNOW=pki%NSIZE_SNOW+3
111 ELSE
112  pki%NSIZE_00=pki%NSIZE_00+3
113 ENDIF
114 !
115 IF(i%LGLACIER) THEN
116  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+1
117 ELSE
118  pki%NSIZE_0=pki%NSIZE_0+1
119 ENDIF
120 !
121 IF (i%CSCOND=='PL98'.OR.i%CISBA=='DIF') THEN
122  pki%NSIZE_GROUND=pki%NSIZE_GROUND+3
123 ELSE
124  pki%NSIZE_01=pki%NSIZE_01+3
125 ENDIF
126 !
127 IF (i%CISBA=='2-L' .OR. i%CISBA=='3-L') THEN
128  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+7
129  pki%NSIZE_2=pki%NSIZE_2+1
130 ELSE
131  pki%NSIZE_0=pki%NSIZE_0+7
132  pki%NSIZE_00=pki%NSIZE_00+1
133 ENDIF
134 !
135 IF (i%CISBA=='DIF') THEN
136  pki%NSIZE_GROUND=pki%NSIZE_GROUND+4
137  pki%NSIZE_NSIMPLE=pki%NSIZE_NSIMPLE+1
138  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+2
139 ELSE
140  pki%NSIZE_01=pki%NSIZE_01+4
141  pki%NSIZE_N0=pki%NSIZE_N0+1
142  pki%NSIZE_0=pki%NSIZE_0+2
143 ENDIF
144 !
145 IF (i%CISBA=='DIF'.AND.i%CRUNOFF=='SGH') THEN
146  pki%NSIZE_GROUND=pki%NSIZE_GROUND+1
147 ELSE
148  pki%NSIZE_01=pki%NSIZE_01+1
149 ENDIF
150 !
151 IF (i%LTR_ML) THEN
152  pki%NSIZE_SIMPLE = pki%NSIZE_SIMPLE+4
153 ELSE
154  pki%NSIZE_0 = pki%NSIZE_0+4
155 ENDIF
156 !
157 IF (i%CPHOTO=='NON') THEN
158  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+1
159 ELSE
160  pki%NSIZE_0 = pki%NSIZE_0+1
161 ENDIF
162 !
163 IF (i%CPHOTO/='NON'.OR.ltreedrag) THEN
164  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+1
165 ELSE
166  pki%NSIZE_0 = pki%NSIZE_0+1
167 ENDIF
168 !
169 IF (i%CPHOTO/='NON') THEN
170  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+22
171  pki%NSIZE_BIOMASS=pki%NSIZE_BIOMASS+2
172 ELSE
173  pki%NSIZE_0=pki%NSIZE_0+22
174  pki%NSIZE_00=pki%NSIZE_00+2
175 ENDIF
176 !
177 IF (i%CPHOTO=='AST' .OR. i%CPHOTO=='LST' .OR. i%CPHOTO=='NIT' .OR. i%CPHOTO=='NCB') THEN
178  pki%NSIZE_LSIMPLE=pki%NSIZE_LSIMPLE+1
179  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+4
180 ELSE
181  pki%NSIZE_L0=pki%NSIZE_L0+1
182  pki%NSIZE_0=pki%NSIZE_0+4
183 ENDIF
184 !
185 IF (i%CPHOTO=='LAI' .OR. i%CPHOTO=='LST' .OR. i%CPHOTO=='NIT' .OR. i%CPHOTO=='NCB') THEN
186  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+2
187  pki%NSIZE_TSIMPLE=pki%NSIZE_TSIMPLE+2
188  IF (lagrip) THEN
189  pki%NSIZE_LSIMPLE=pki%NSIZE_LSIMPLE+2
190  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+1
191  ELSE
192  pki%NSIZE_L0=pki%NSIZE_L0+2
193  pki%NSIZE_0=pki%NSIZE_0+1
194  ENDIF
195 ELSE
196  pki%NSIZE_L0=pki%NSIZE_L0+2
197  pki%NSIZE_0=pki%NSIZE_0+3
198  pki%NSIZE_T0=pki%NSIZE_T0+2
199 ENDIF
200 !
201 IF(i%CPHOTO=='NIT' .OR. i%CPHOTO=='NCB') THEN
202  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+4
203 ELSE
204  pki%NSIZE_0=pki%NSIZE_0+4
205 ENDIF
206 !
207 IF (i%CPHOTO=='NCB') THEN
208  pki%NSIZE_BIOMASS=pki%NSIZE_BIOMASS+1
209  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+1
210 ELSE
211  pki%NSIZE_00=pki%NSIZE_00+1
212  pki%NSIZE_0=pki%NSIZE_0+1
213 ENDIF
214 !
215 IF (i%CRESPSL=='CNT') THEN
216  pki%NSIZE_LITTER=pki%NSIZE_LITTER+1
217  pki%NSIZE_SOILCARB=pki%NSIZE_SOILCARB+1
218  pki%NSIZE_LITTLEVS=pki%NSIZE_LITTLEVS+1
219  pki%NSIZE_BIOMASS=pki%NSIZE_BIOMASS+1
220 ELSE
221  pki%NSIZE_000=pki%NSIZE_000+1
222  pki%NSIZE_00=pki%NSIZE_00+3
223 ENDIF
224 !
225 IF (i%CRAIN=='SGH') THEN
226  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+1
227 ELSE
228  pki%NSIZE_0=pki%NSIZE_0+1
229 ENDIF
230 ! MEB STUFF START
231 IF (i%LMEB_PATCH(kpatch))THEN
232  pki%NSIZE_SIMPLE=pki%NSIZE_SIMPLE+12
233 ! NSIZE_GROUND=NSIZE_GROUND+1
234 ELSE
235  pki%NSIZE_0=pki%NSIZE_0+12
236 ! NSIZE_01=NSIZE_01+1
237 ENDIF
238 ! Old MEB varibales now eliminated
239 pki%NSIZE_0=pki%NSIZE_0+7
240 pki%NSIZE_01=pki%NSIZE_01+1
241 ! MEB STUFF END
242 !
243 IF (lhook) CALL dr_hook('PACK_ISBA_PATCH_GET_SIZE_N',1,zhook_handle)
244 !------------------------------------------------------------------------
245 END SUBROUTINE pack_isba_patch_get_size_n
subroutine pack_isba_patch_get_size_n(I, PKI, KPATCH)