SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE PACK_DIAG_PATCH_n(KSIZE,KSW) 00003 !############################################## 00004 ! 00005 !!**** *PACK_DIAG_PATCH_n* - packs ISBA diagnostics 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! REFERENCE 00014 !! --------- 00015 !! 00016 !! 00017 !! AUTHOR 00018 !! ------ 00019 !! V. Masson 00020 !! 00021 !! MODIFICATIONS 00022 !! ------------- 00023 !! Original 01/2004 00024 !! Modified 10/2004 by P. Le Moigne: Halstead coefficient 00025 !! Modified 10/2005 by P. Le Moigne: Allocation (not EBA case) 00026 !! Modified 2008 by B. Decharme : Allocation for the floodplains 00027 !! Modified 04-09 by A.L. Gibelin : Add carbon diagnostics 00028 !! 00029 !!------------------------------------------------------------------ 00030 ! 00031 ! 00032 USE MODD_ISBA_n, ONLY : TSNOW, CPHOTO, LTR_ML, NGROUND_LAYER, XABC, & 00033 LGLACIER 00034 USE MODD_DIAG_ISBA_n, ONLY : N2M 00035 USE MODD_DIAG_MISC_ISBA_n, ONLY : LSURF_MISC_BUDGET 00036 ! 00037 USE MODD_DIAG_EVAP_ISBA_n, ONLY : LWATER_BUDGET 00038 ! 00039 USE MODD_PACK_DIAG_ISBA, ONLY : XP_RNSNOW, XP_HSNOW, XP_HPSNOW, XP_SMELTFLUX, & 00040 XP_GFLUXSNOW, XP_USTARSNOW, & 00041 XP_GRNDFLUX, XP_SRSFC, XP_RRSFC, XP_LESL, & 00042 XP_CDSNOW, XP_CHSNOW, XP_SNOWTEMP, & 00043 XP_SNOWLIQ, XP_SNOWDZ, XP_SNOWHMASS, & 00044 XP_RN_ISBA, XP_H_ISBA, XP_LEG_ISBA, & 00045 XP_LEGI_ISBA, XP_LEV_ISBA, XP_LETR_ISBA, & 00046 XP_USTAR_ISBA, XP_LER_ISBA, & 00047 XP_LE_ISBA, XP_GFLUX_ISBA, XP_MELTADV, & 00048 XP_LEI_ISBA, XP_IACAN, & 00049 XP_CH, XP_CD, XP_CDN, XP_RI, XP_HU, XP_HUG, & 00050 XP_RN, XP_H, XP_LEI, XP_LEG, & 00051 XP_LEGI, XP_LEV, & 00052 XP_LES, XP_LER, XP_LETR, XP_EVAP, XP_GFLUX, & 00053 XP_RESTORE, XP_DRAIN, XP_RUNOFF, XP_MELT, & 00054 XP_SNOWFREE_ALB, XP_Z0_WITH_SNOW, & 00055 XP_Z0H_WITH_SNOW, XP_Z0EFF, & 00056 XP_CG, XP_C1, XP_C2, XP_WGEQ, XP_CT, XP_RS, & 00057 XP_T2M, XP_Q2M, XP_HU2M, & 00058 XP_ZON10M, XP_MER10M, XP_HV, & 00059 XP_SNOWFREE_ALB_VEG, XP_SNOWFREE_ALB_SOIL, & 00060 XP_SWI, XP_TSWI, XP_QS, XP_CE, & 00061 XP_TWSNOW, XP_TDSNOW, & 00062 XP_SWD, XP_SWU, XP_SWBD, XP_SWBU, & 00063 XP_LWD, XP_LWU, XP_FMU, XP_FMV, XP_HORT, & 00064 XP_DRIP, XP_ALBT, XP_IFLOOD, XP_PFLOOD, & 00065 XP_LE_FLOOD, XP_LEI_FLOOD, XP_ICEFLUX, & 00066 XP_RRVEG, XP_TS, XP_TSRAD, & 00067 XP_GPP, XP_RESP_AUTO, XP_RESP_ECO, & 00068 XP_FAPAR, XP_FAPIR, XP_FAPAR_BS, XP_FAPIR_BS, & 00069 XP_IRRIG_FLUX, XP_DWG, XP_DWGI, XP_DWR, & 00070 XP_DSWE, XP_WATBUD, & 00071 XBLOCK_SIMPLE, XBLOCK_GROUND, XBLOCK_SNOW, & 00072 XBLOCK_KSW, XBLOCK_ABC, XBLOCK_0, XBLOCK_00, & 00073 NSIZE_SIMPLE, NSIZE_GROUND, NSIZE_SNOW, & 00074 NSIZE_KSW, NSIZE_ABC, NSIZE_0, NSIZE_00 00075 00076 ! 00077 USE MODI_ABOR1_SFX 00078 ! 00079 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00080 USE PARKIND1 ,ONLY : JPRB 00081 ! 00082 IMPLICIT NONE 00083 ! 00084 INTEGER, INTENT(IN) :: KSIZE, KSW 00085 ! 00086 INTEGER :: ISIZE_SIMPLE, ISIZE_GROUND, ISIZE_SNOW, ISIZE_KSW, 00087 ISIZE_ABC, ISIZE_0, ISIZE_00 00088 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00089 ! 00090 !------------------------------------------------------------------------ 00091 IF (LHOOK) CALL DR_HOOK('PACK_DIAG_PATCH_N',0,ZHOOK_HANDLE) 00092 ! 00093 ! Packed surface module variables: 00094 ! 00095 ALLOCATE(XBLOCK_SIMPLE(KSIZE,NSIZE_SIMPLE)) 00096 ALLOCATE(XBLOCK_GROUND(KSIZE,NGROUND_LAYER,NSIZE_GROUND)) 00097 ALLOCATE(XBLOCK_SNOW(KSIZE,TSNOW%NLAYER,NSIZE_SNOW)) 00098 ALLOCATE(XBLOCK_KSW(KSIZE,KSW,NSIZE_KSW)) 00099 ALLOCATE(XBLOCK_ABC(KSIZE,SIZE(XABC),NSIZE_ABC)) 00100 ALLOCATE(XBLOCK_0(0,NSIZE_0)) 00101 ALLOCATE(XBLOCK_00(0,0,NSIZE_00)) 00102 ! 00103 ISIZE_SIMPLE=0 00104 ISIZE_GROUND=0 00105 ISIZE_SNOW=0 00106 ISIZE_KSW=0 00107 ISIZE_ABC=0 00108 ISIZE_0=0 00109 ISIZE_00=0 00110 ! 00111 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00112 XP_CH => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00113 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00114 XP_CE => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00115 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00116 XP_CD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00117 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00118 XP_CDN => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00119 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00120 XP_RI => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00121 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00122 XP_HU => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00123 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00124 XP_HUG => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00125 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00126 XP_ALBT => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00127 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00128 XP_RN => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00129 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00130 XP_H => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00131 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00132 XP_LEI => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00133 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00134 XP_LEG => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00135 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00136 XP_LEGI => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00137 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00138 XP_LEV => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00139 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00140 XP_LES => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00141 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00142 XP_LER => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00143 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00144 XP_LETR => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00145 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00146 XP_GFLUX => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00147 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00148 XP_EVAP => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00149 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00150 XP_RESTORE => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00151 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00152 XP_DRAIN => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00153 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00154 XP_RUNOFF => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00155 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00156 XP_MELT => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00157 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00158 XP_MELTADV => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00159 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00160 XP_SRSFC => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00161 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00162 XP_RRSFC => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00163 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00164 XP_SNOWFREE_ALB=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00165 ! 00166 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00167 XP_HORT => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00168 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00169 XP_DRIP => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00170 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00171 XP_RRVEG => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00172 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00173 XP_IRRIG_FLUX=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00174 ! 00175 ISIZE_KSW = ISIZE_KSW + 1 00176 XP_SWBD => XBLOCK_KSW(:,:,ISIZE_KSW) 00177 ISIZE_KSW = ISIZE_KSW + 1 00178 XP_SWBU => XBLOCK_KSW(:,:,ISIZE_KSW) 00179 ! 00180 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00181 XP_SWD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00182 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00183 XP_SWU => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00184 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00185 XP_LWD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00186 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00187 XP_LWU => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00188 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00189 XP_FMU => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00190 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00191 XP_FMV => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00192 ! 00193 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00194 XP_Z0_WITH_SNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00195 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00196 XP_Z0H_WITH_SNOW=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00197 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00198 XP_Z0EFF => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00199 ! 00200 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00201 XP_CG => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00202 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00203 XP_C1 => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00204 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00205 XP_C2 => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00206 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00207 XP_WGEQ => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00208 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00209 XP_CT => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00210 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00211 XP_RS => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00212 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00213 XP_HV => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00214 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00215 XP_QS => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00216 ! 00217 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00218 XP_TS => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00219 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00220 XP_TSRAD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00221 ! 00222 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00223 XP_RESP_AUTO => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00224 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00225 XP_RESP_ECO => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00226 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00227 XP_GPP => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00228 ! 00229 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00230 XP_IFLOOD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00231 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00232 XP_PFLOOD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00233 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00234 XP_LE_FLOOD => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00235 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00236 XP_LEI_FLOOD=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00237 ! 00238 IF (TSNOW%SCHEME=='3-L' .OR. TSNOW%SCHEME=='CRO') THEN 00239 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00240 XP_RNSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00241 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00242 XP_HSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00243 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00244 XP_HPSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00245 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00246 XP_SMELTFLUX => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00247 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00248 XP_GFLUXSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00249 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00250 XP_USTARSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00251 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00252 XP_GRNDFLUX => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00253 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00254 XP_LESL => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00255 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00256 XP_CDSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00257 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00258 XP_CHSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00259 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00260 XP_SNOWHMASS => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00261 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00262 XP_RN_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00263 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00264 XP_H_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00265 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00266 XP_LEG_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00267 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00268 XP_LEGI_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00269 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00270 XP_LEV_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00271 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00272 XP_LETR_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00273 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00274 XP_USTAR_ISBA=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00275 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00276 XP_LER_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00277 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00278 XP_LE_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00279 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00280 XP_LEI_ISBA => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00281 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00282 XP_GFLUX_ISBA=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00283 ISIZE_SNOW = ISIZE_SNOW + 1 00284 XP_SNOWLIQ => XBLOCK_SNOW(:,:,ISIZE_SNOW) 00285 ISIZE_SNOW = ISIZE_SNOW + 1 00286 XP_SNOWDZ => XBLOCK_SNOW(:,:,ISIZE_SNOW) 00287 ELSE 00288 ISIZE_0 = ISIZE_0 + 1 00289 XP_RNSNOW => XBLOCK_0(:,ISIZE_0) 00290 ISIZE_0 = ISIZE_0 + 1 00291 XP_HSNOW => XBLOCK_0(:,ISIZE_0) 00292 ISIZE_0 = ISIZE_0 + 1 00293 XP_HPSNOW => XBLOCK_0(:,ISIZE_0) 00294 ISIZE_0 = ISIZE_0 + 1 00295 XP_SMELTFLUX => XBLOCK_0(:,ISIZE_0) 00296 ISIZE_0 = ISIZE_0 + 1 00297 XP_GFLUXSNOW => XBLOCK_0(:,ISIZE_0) 00298 ISIZE_0 = ISIZE_0 + 1 00299 XP_USTARSNOW => XBLOCK_0(:,ISIZE_0) 00300 ISIZE_0 = ISIZE_0 + 1 00301 XP_GRNDFLUX => XBLOCK_0(:,ISIZE_0) 00302 ISIZE_0 = ISIZE_0 + 1 00303 XP_LESL => XBLOCK_0(:,ISIZE_0) 00304 ISIZE_0 = ISIZE_0 + 1 00305 XP_CDSNOW => XBLOCK_0(:,ISIZE_0) 00306 ISIZE_0 = ISIZE_0 + 1 00307 XP_CHSNOW => XBLOCK_0(:,ISIZE_0) 00308 ISIZE_0 = ISIZE_0 + 1 00309 XP_SNOWHMASS => XBLOCK_0(:,ISIZE_0) 00310 ISIZE_0 = ISIZE_0 + 1 00311 XP_RN_ISBA => XBLOCK_0(:,ISIZE_0) 00312 ISIZE_0 = ISIZE_0 + 1 00313 XP_H_ISBA => XBLOCK_0(:,ISIZE_0) 00314 ISIZE_0 = ISIZE_0 + 1 00315 XP_LEG_ISBA => XBLOCK_0(:,ISIZE_0) 00316 ISIZE_0 = ISIZE_0 + 1 00317 XP_LEGI_ISBA => XBLOCK_0(:,ISIZE_0) 00318 ISIZE_0 = ISIZE_0 + 1 00319 XP_LEV_ISBA => XBLOCK_0(:,ISIZE_0) 00320 ISIZE_0 = ISIZE_0 + 1 00321 XP_LETR_ISBA => XBLOCK_0(:,ISIZE_0) 00322 ISIZE_0 = ISIZE_0 + 1 00323 XP_USTAR_ISBA=> XBLOCK_0(:,ISIZE_0) 00324 ISIZE_0 = ISIZE_0 + 1 00325 XP_LER_ISBA => XBLOCK_0(:,ISIZE_0) 00326 ISIZE_0 = ISIZE_0 + 1 00327 XP_LE_ISBA => XBLOCK_0(:,ISIZE_0) 00328 ISIZE_0 = ISIZE_0 + 1 00329 XP_LEI_ISBA => XBLOCK_0(:,ISIZE_0) 00330 ISIZE_0 = ISIZE_0 + 1 00331 XP_GFLUX_ISBA=> XBLOCK_0(:,ISIZE_0) 00332 ISIZE_00 = ISIZE_00 + 1 00333 XP_SNOWLIQ => XBLOCK_00(:,:,ISIZE_00) 00334 ISIZE_00 = ISIZE_00 + 1 00335 XP_SNOWDZ => XBLOCK_00(:,:,ISIZE_00) 00336 END IF 00337 ! 00338 IF(TSNOW%SCHEME/='EBA') THEN 00339 ISIZE_SNOW = ISIZE_SNOW + 1 00340 XP_SNOWTEMP => XBLOCK_SNOW(:,:,ISIZE_SNOW) 00341 ELSE 00342 ISIZE_00 = ISIZE_00 + 1 00343 XP_SNOWTEMP => XBLOCK_00(:,:,ISIZE_00) 00344 ENDIF 00345 ! 00346 IF(TSNOW%SCHEME=='EBA') THEN 00347 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00348 XP_SNOWFREE_ALB_VEG=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00349 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00350 XP_SNOWFREE_ALB_SOIL=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00351 ELSE 00352 ISIZE_0 = ISIZE_0 + 1 00353 XP_SNOWFREE_ALB_VEG=> XBLOCK_0(:,ISIZE_0) 00354 ISIZE_0 = ISIZE_0 + 1 00355 XP_SNOWFREE_ALB_SOIL=> XBLOCK_0(:,ISIZE_0) 00356 ENDIF 00357 ! 00358 IF (LTR_ML) THEN 00359 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00360 XP_FAPAR => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00361 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00362 XP_FAPIR => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00363 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00364 XP_FAPAR_BS => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00365 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00366 XP_FAPIR_BS => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00367 ELSE 00368 ISIZE_0 = ISIZE_0 + 1 00369 XP_FAPAR => XBLOCK_0(:,ISIZE_0) 00370 ISIZE_0 = ISIZE_0 + 1 00371 XP_FAPIR => XBLOCK_0(:,ISIZE_0) 00372 ISIZE_0 = ISIZE_0 + 1 00373 XP_FAPAR_BS => XBLOCK_0(:,ISIZE_0) 00374 ISIZE_0 = ISIZE_0 + 1 00375 XP_FAPIR_BS => XBLOCK_0(:,ISIZE_0) 00376 END IF 00377 ! 00378 IF (CPHOTO/='NON') THEN 00379 ISIZE_ABC = ISIZE_ABC + 1 00380 XP_IACAN => XBLOCK_ABC(:,:,ISIZE_ABC) 00381 ELSE 00382 ISIZE_00 = ISIZE_00 + 1 00383 XP_IACAN => XBLOCK_00(:,:,ISIZE_00) 00384 END IF 00385 ! 00386 IF (N2M>=1) THEN 00387 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00388 XP_T2M => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00389 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00390 XP_Q2M => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00391 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00392 XP_HU2M => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00393 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00394 XP_ZON10M => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00395 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00396 XP_MER10M => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00397 ELSE 00398 ISIZE_0 = ISIZE_0 + 1 00399 XP_T2M => XBLOCK_0(:,ISIZE_0) 00400 ISIZE_0 = ISIZE_0 + 1 00401 XP_Q2M => XBLOCK_0(:,ISIZE_0) 00402 ISIZE_0 = ISIZE_0 + 1 00403 XP_HU2M => XBLOCK_0(:,ISIZE_0) 00404 ISIZE_0 = ISIZE_0 + 1 00405 XP_ZON10M => XBLOCK_0(:,ISIZE_0) 00406 ISIZE_0 = ISIZE_0 + 1 00407 XP_MER10M => XBLOCK_0(:,ISIZE_0) 00408 END IF 00409 ! 00410 IF (LSURF_MISC_BUDGET) THEN 00411 ISIZE_GROUND = ISIZE_GROUND + 1 00412 XP_SWI => XBLOCK_GROUND(:,:,ISIZE_GROUND) 00413 ISIZE_GROUND = ISIZE_GROUND + 1 00414 XP_TSWI => XBLOCK_GROUND(:,:,ISIZE_GROUND) 00415 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00416 XP_TWSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00417 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00418 XP_TDSNOW => XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00419 ELSE 00420 ISIZE_00 = ISIZE_00 + 1 00421 XP_SWI => XBLOCK_00(:,:,ISIZE_00) 00422 ISIZE_00 = ISIZE_00 + 1 00423 XP_TSWI => XBLOCK_00(:,:,ISIZE_00) 00424 ISIZE_0 = ISIZE_0 + 1 00425 XP_TWSNOW => XBLOCK_0(:,ISIZE_0) 00426 ISIZE_0 = ISIZE_0 + 1 00427 XP_TDSNOW => XBLOCK_0(:,ISIZE_0) 00428 ENDIF 00429 ! 00430 IF(LGLACIER)THEN 00431 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00432 XP_ICEFLUX=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00433 ELSE 00434 ISIZE_0 = ISIZE_0 + 1 00435 XP_ICEFLUX=> XBLOCK_0(:,ISIZE_0) 00436 ENDIF 00437 ! 00438 IF(LWATER_BUDGET)THEN 00439 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00440 XP_DWG=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00441 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00442 XP_DWGI=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00443 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00444 XP_DWR=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00445 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00446 XP_DSWE=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00447 ISIZE_SIMPLE = ISIZE_SIMPLE + 1 00448 XP_WATBUD=> XBLOCK_SIMPLE(:,ISIZE_SIMPLE) 00449 ELSE 00450 ISIZE_0 = ISIZE_0 + 1 00451 XP_DWG=> XBLOCK_0(:,ISIZE_0) 00452 ISIZE_0 = ISIZE_0 + 1 00453 XP_DWGI=> XBLOCK_0(:,ISIZE_0) 00454 ISIZE_0 = ISIZE_0 + 1 00455 XP_DWR=> XBLOCK_0(:,ISIZE_0) 00456 ISIZE_0 = ISIZE_0 + 1 00457 XP_DSWE=> XBLOCK_0(:,ISIZE_0) 00458 ISIZE_0 = ISIZE_0 + 1 00459 XP_WATBUD=> XBLOCK_0(:,ISIZE_0) 00460 ENDIF 00461 ! 00462 IF (ISIZE_SIMPLE.GT.NSIZE_SIMPLE) & 00463 CALL ABOR1_SFX("PACK_DIAG_PATCH_n: PROBLEM DEFINING SIZE_SIMPLE / NUMBER OF FIELDS") 00464 IF (ISIZE_GROUND.GT.NSIZE_GROUND) & 00465 CALL ABOR1_SFX("PACK_DIAG_PATCH_n: PROBLEM DEFINING SIZE_GROUND / NUMBER OF FIELDS") 00466 IF (ISIZE_SNOW.GT.NSIZE_SNOW) & 00467 CALL ABOR1_SFX("PACK_DIAG_PATCH_n: PROBLEM DEFINING SIZE_SNOW / NUMBER OF FIELDS") 00468 IF (ISIZE_KSW.GT.NSIZE_KSW) & 00469 CALL ABOR1_SFX("PACK_DIAG_PATCH_n: PROBLEM DEFINING SIZE_KSW / NUMBER OF FIELDS") 00470 IF (ISIZE_ABC.GT.NSIZE_ABC) & 00471 CALL ABOR1_SFX("PACK_DIAG_PATCH_n: PROBLEM DEFINING SIZE_3 / NUMBER OF FIELDS") 00472 IF (ISIZE_0.GT.NSIZE_0) & 00473 CALL ABOR1_SFX("PACK_DIAG_PATCH_n: PROBLEM DEFINING SIZE_0 / NUMBER OF FIELDS") 00474 IF (ISIZE_00.GT.NSIZE_00) & 00475 CALL ABOR1_SFX("PACK_DIAG_PATCH_n: PROBLEM DEFINING SIZE_00 / NUMBER OF FIELDS") 00476 ! 00477 IF (LHOOK) CALL DR_HOOK('PACK_DIAG_PATCH_N',1,ZHOOK_HANDLE) 00478 !------------------------------------------------------------------------ 00479 ! 00480 END SUBROUTINE PACK_DIAG_PATCH_n