SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/pack_diag_patchn.F90
Go to the documentation of this file.
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