SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/modd_teb_gardenn.F90
Go to the documentation of this file.
00001 !##################
00002 MODULE MODD_TEB_GARDEN_n
00003 !##################
00004 !
00005 !!****  *MODD_TEB_GARDEN - declaration of packed surface parameters for ISBA scheme
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!
00011 !!**  IMPLICIT ARGUMENTS
00012 !!    ------------------
00013 !!      None 
00014 !!
00015 !!    REFERENCE
00016 !!    ---------
00017 !!
00018 !!    AUTHOR
00019 !!    ------
00020 !!      A. Lemonsu   *Meteo France*
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!      Original       01/2011
00025 !!
00026 !-------------------------------------------------------------------------------
00027 !
00028 !*       0.   DECLARATIONS
00029 !             ------------
00030 !
00031 USE MODD_TYPE_SNOW
00032 !
00033 !
00034 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00035 USE PARKIND1  ,ONLY : JPRB
00036 !
00037 IMPLICIT NONE
00038 
00039 TYPE TEB_GARDEN_OPTIONS_t
00040 !-------------------------------------------------------------------------------
00041 !
00042 ! type of initialization of vegetation: from cover types (ecoclimap) or parameters prescribed
00043 !
00044   LOGICAL                              :: LPAR_GARDEN      ! T: parameters computed from ecoclimap
00045 !                                                          ! F: they are read in the file
00046 !
00047 ! Number of inside garden vegetation (not TEB) patches and of layers
00048 ! 
00049 !
00050   INTEGER                              :: NGROUND_LAYER    ! number of ground layers
00051 !
00052   INTEGER                              :: NLAYER_HORT
00053   INTEGER                              :: NLAYER_DUN
00054 !
00055   REAL, POINTER, DIMENSION(:)          :: XSOILGRID        ! Soil layer grid as reference for DIF
00056 !
00057 END TYPE TEB_GARDEN_OPTIONS_t
00058 !-------------------------------------------------------------------------------
00059 TYPE TEB_GARDEN_PGD_t
00060 !-------------------------------------------------------------------------------
00061 !
00062 ! Mask and number of grid elements containing patches/tiles:
00063 !
00064   REAL, POINTER, DIMENSION(:,:) :: XVEGTYPE          ! fraction of each vegetation type for
00065 !                                                    ! each grid mesh                          (-)
00066 !-------------------------------------------------------------------------------
00067 !
00068 ! Averaged Surface radiative parameters:
00069 !
00070   REAL, POINTER, DIMENSION(:)   :: XALBNIR_DRY       ! dry soil near-infra-red albedo          (-)
00071   REAL, POINTER, DIMENSION(:)   :: XALBVIS_DRY       ! dry soil visible albedo                 (-)
00072   REAL, POINTER, DIMENSION(:)   :: XALBUV_DRY        ! dry soil UV albedo                      (-)
00073   REAL, POINTER, DIMENSION(:)   :: XALBNIR_WET       ! wet soil near-infra-red albedo          (-)
00074   REAL, POINTER, DIMENSION(:)   :: XALBVIS_WET       ! wet soil visible albedo                 (-)
00075   REAL, POINTER, DIMENSION(:)   :: XALBUV_WET        ! wet soil UV albedo                      (-)
00076   REAL, POINTER, DIMENSION(:)   :: XALBNIR_SOIL      ! soil near-infra-red albedo              (-)
00077   REAL, POINTER, DIMENSION(:)   :: XALBVIS_SOIL      ! soil visible albedo                     (-)
00078   REAL, POINTER, DIMENSION(:)   :: XALBUV_SOIL       ! soil UV albedo                          (-)
00079   REAL, POINTER, DIMENSION(:)   :: XALBNIR_TSOIL     ! total near-infra-red albedo of wet soil (-)
00080   REAL, POINTER, DIMENSION(:)   :: XALBVIS_TSOIL     ! total visible albedo of soil            (-)
00081 !
00082 !-------------------------------------------------------------------------------
00083 !
00084 ! Input Parameters, per patch:
00085 !
00086 ! - vegetation + bare soil:
00087 !
00088   REAL, POINTER, DIMENSION(:) :: XZ0_O_Z0H         ! ratio of surface roughness lengths
00089 !                                                    ! (momentum to heat)                      (-)
00090 !
00091 ! - vegetation:
00092 !
00093   REAL, POINTER, DIMENSION(:) :: XALBNIR_VEG       ! vegetation near-infra-red albedo        (-)
00094   REAL, POINTER, DIMENSION(:) :: XALBVIS_VEG       ! vegetation visible albedo               (-)
00095   REAL, POINTER, DIMENSION(:) :: XALBUV_VEG        ! vegetation UV albedo                    (-)
00096   REAL, POINTER, DIMENSION(:)   :: XALBNIR_TVEG      ! total near-infra-red albedo of vegetation (-)
00097   REAL, POINTER, DIMENSION(:)   :: XALBVIS_TVEG      ! total visible albedo of vegetation        (-)  
00098 !
00099 ! - vegetation: default option (Jarvis) and general parameters:
00100 !
00101   REAL, POINTER, DIMENSION(:) :: XWRMAX_CF         ! coefficient for maximum water 
00102 !                                                      ! interception 
00103 !                                                      ! storage capacity on the vegetation      (-)
00104   REAL, POINTER, DIMENSION(:) :: XRSMIN            ! minimum stomatal resistance             (s/m)
00105   REAL, POINTER, DIMENSION(:) :: XGAMMA            ! coefficient for the calculation
00106 !                                                      ! of the surface stomatal
00107 !                                                      ! resistance
00108   REAL, POINTER, DIMENSION(:) :: XCV               ! vegetation thermal inertia coefficient  (K m2/J)
00109   REAL, POINTER, DIMENSION(:) :: XRGL              ! maximum solar radiation
00110 !                                                      ! usable in photosynthesis                (W/m2)
00111   REAL, POINTER, DIMENSION(:,:) :: XROOTFRAC       ! root fraction profile ('DIF' option)
00112 !
00113 !-------------------------------------------------------------------------------
00114 !
00115 ! - vegetation: Ags parameters ('AGS', 'LAI', 'AST', 'LST', 'NIT', 'NCB' options)
00116 !
00117 !  REAL,              DIMENSION(3)   :: XABC             ! abscissa needed for integration
00118   REAL, POINTER,     DIMENSION(:)   :: XABC       ! abscissa needed for integration
00119 !                                                 ! of net assimilation and stomatal
00120 !                                                 ! conductance over canopy depth           (-)
00121 !  REAL,              DIMENSION(3)   :: XPOI             ! Gaussian weights for integration
00122   REAL, POINTER,     DIMENSION(:)   :: XPOI       ! Gaussian weights for integration
00123 !                                                 ! of net assimilation and stomatal
00124 !                                                 ! conductance over canopy depth           (-)
00125   REAL, POINTER, DIMENSION(:)    :: XBSLAI        ! ratio d(biomass)/d(lai)                 (kg/m2)
00126   REAL, POINTER, DIMENSION(:)    :: XLAIMIN       ! minimum LAI (Leaf Area Index)           (m2/m2)
00127   REAL, POINTER, DIMENSION(:)    :: XSEFOLD       ! e-folding time for senescence           (s)
00128   REAL, POINTER, DIMENSION(:)    :: XH_TREE       ! height of trees                         (m)
00129   REAL, POINTER, DIMENSION(:)    :: XANF          ! total assimilation over canopy          (
00130   REAL, POINTER, DIMENSION(:)    :: XANMAX        ! maximum photosynthesis rate             (
00131   REAL, POINTER, DIMENSION(:)    :: XFZERO        ! ideal value of F, no photo- 
00132 !                                                     ! respiration or saturation deficit       (
00133   REAL, POINTER, DIMENSION(:)    :: XEPSO         ! maximum initial quantum use             
00134 !                                                     ! efficiency                              (mg J-1 PAR)
00135   REAL, POINTER, DIMENSION(:)    :: XGAMM         ! CO2 conpensation concentration          (ppm)
00136   REAL, POINTER, DIMENSION(:)    :: XQDGAMM       ! Log of Q10 function for CO2 conpensation 
00137 !                                                 ! concentration                           (-)
00138   REAL, POINTER, DIMENSION(:)    :: XGMES         ! mesophyll conductance                   (m s-1)
00139   REAL, POINTER, DIMENSION(:)    :: XRE25         ! Ecosystem respiration parameter         (kg/kg.m.s-1)
00140   REAL, POINTER, DIMENSION(:)    :: XQDGMES       ! Log of Q10 function for mesophyll conductance  (-)
00141   REAL, POINTER, DIMENSION(:)    :: XT1GMES       ! reference temperature for computing 
00142 !                                                     ! compensation concentration function for 
00143 !                                                     ! mesophyll conductance: minimum
00144 !                                                     ! temperature                             (K)
00145   REAL, POINTER, DIMENSION(:)    :: XT2GMES       ! reference temperature for computing 
00146 !                                                     ! compensation concentration function for 
00147 !                                                     ! mesophyll conductance: maximum
00148 !                                                     ! temperature                             (K)
00149   REAL, POINTER, DIMENSION(:)    :: XAMAX         ! leaf photosynthetic capacity            (mg m-2 s-1)
00150   REAL, POINTER, DIMENSION(:)    :: XQDAMAX       ! Log of Q10 function for leaf photosynthetic 
00151 !                                                     ! capacity                                (-)
00152   REAL, POINTER, DIMENSION(:)    :: XT1AMAX       ! reference temperature for computing 
00153 !                                                     ! compensation concentration function for 
00154 !                                                     ! leaf photosynthetic capacity: minimum
00155 !                                                     ! temperature                             (K)
00156   REAL, POINTER, DIMENSION(:)    :: XT2AMAX       ! reference temperature for computing 
00157 !                                                     ! compensation concentration function for 
00158 !                                                     ! leaf photosynthetic capacity: maximum
00159 !                                                     ! temperature                             (K)
00160 !                                      
00161 
00162 !-------------------------------------------------------------------------------
00163 !
00164 ! - vegetation: Ags Stress parameters ('AST', 'LST', 'NIT', 'NCB' options)
00165 !
00166   LOGICAL, POINTER, DIMENSION(:) :: LSTRESS       ! vegetation response type to water
00167 !                                                     ! stress (true:defensive false:offensive) (-)
00168   REAL, POINTER, DIMENSION(:)    :: XF2I          ! critical normilized soil water 
00169 !                                                     ! content for stress parameterisation
00170   REAL, POINTER, DIMENSION(:)    :: XGC           ! cuticular conductance                   (m s-1)
00171   REAL, POINTER, DIMENSION(:)    :: XAH           ! coefficients for herbaceous water stress 
00172 !                                                     ! response (offensive or defensive)       (log(mm/s))
00173   REAL, POINTER, DIMENSION(:)    :: XBH           ! coefficients for herbaceous water stress 
00174 !                                                     ! response (offensive or defensive)       (-)
00175   REAL, POINTER, DIMENSION(:)    :: XDMAX         ! maximum air saturation deficit
00176 !                                                     ! tolerate by vegetation                  (kg/kg)
00177 !
00178 !-------------------------------------------------------------------------------
00179 !
00180 ! - vegetation: Ags Nitrogen-model parameters ('NIT', 'NCB' option)
00181 !
00182   REAL, POINTER, DIMENSION(:)    :: XCE_NITRO       ! leaf aera ratio sensitivity to 
00183 !                                                       ! nitrogen concentration                (m2/kg)
00184   REAL, POINTER, DIMENSION(:)    :: XCF_NITRO       ! lethal minimum value of leaf area
00185 !                                                       ! ratio                                 (m2/kg)
00186   REAL, POINTER, DIMENSION(:)    :: XCNA_NITRO      ! nitrogen concentration of active 
00187 !                                                       ! biomass                               (kg/kg)
00188   REAL, POINTER, DIMENSION(:)    :: XBSLAI_NITRO   ! biomass/LAI ratio from nitrogen 
00189 !                                                       ! decline theory                        (kg/m2)
00190 !
00191 !-------------------------------------------------------------------------------
00192 !
00193 ! - soil: primary parameters
00194 !
00195   REAL, POINTER, DIMENSION(:,:)    :: XSAND          ! sand fraction                           (-)
00196   REAL, POINTER, DIMENSION(:,:)    :: XCLAY          ! clay fraction                           (-)
00197   REAL, POINTER, DIMENSION(:)      :: XRUNOFFB       ! sub-grid surface runoff slope parameter (-)
00198   REAL, POINTER, DIMENSION(:)      :: XWDRAIN        ! continuous drainage parameter           (-)
00199   REAL, POINTER, DIMENSION(:)      :: XTAUICE        ! soil freezing characteristic timescale  (s)
00200   REAL, POINTER, DIMENSION(:)      :: XGAMMAT        ! 'Force-Restore' timescale when using a
00201 !                                                    ! prescribed lower boundary temperature   (1/days)
00202   REAL, POINTER, DIMENSION(:,:)    :: XDG            ! soil layer thicknesses                  (m)
00203 !                                                    ! NOTE: in Force-Restore mode, the 
00204 !                                                    ! uppermost layer thickness is superficial
00205 !                                                    ! and is only explicitly used for soil 
00206 !                                                    ! water phase changes                     (m)
00207   REAL, POINTER, DIMENSION(:)      :: XRUNOFFD       ! depth over which sub-grid runoff is
00208 !                                                    ! computed: in Force-Restore this is the
00209 !                                                    ! total soil column ('2-L'), or root zone
00210 !                                                    ! ('3-L'). For the 'DIF' option, it can
00211 !                                                    ! be any depth within soil column         (m)
00212 !
00213   REAL, POINTER, DIMENSION(:,:)  :: XSOILWGHT      ! ISBA-DIF: weights for vertical
00214   REAL, POINTER, DIMENSION(:,:)  :: XDZG           ! soil layers thicknesses (DIF option)
00215   REAL, POINTER, DIMENSION(:,:)  :: XDZDIF         ! distance between consecuative layer mid-points (DIF option)
00216 !
00217   INTEGER, POINTER, DIMENSION(:) :: NWG_LAYER      ! Number of soil moisture layers for DIF
00218   REAL, POINTER, DIMENSION(:)    :: XDROOT         ! effective root depth for DIF (m)
00219   REAL, POINTER, DIMENSION(:)    :: XDG2           ! root depth for DIF as 3-L (m)
00220 !-------------------------------------------------------------------------------
00221 !
00222 ! - soil: Secondary parameters: hydrology
00223 !
00224   REAL, POINTER, DIMENSION(:)    :: XC1SAT         ! 'Force-Restore' C1 coefficient at 
00225 !                                                    ! saturation                              (-)
00226   REAL, POINTER, DIMENSION(:)    :: XC2REF         ! 'Force-Restore' reference value of C2   (-)
00227   REAL, POINTER, DIMENSION(:,:)  :: XC3            ! 'Force-Restore' C3 drainage coefficient (m)
00228   REAL, POINTER, DIMENSION(:)      :: XC4B           ! 'Force-Restore' sub-surface vertical 
00229 !                                                    ! diffusion coefficient (slope parameter) (-)
00230   REAL, POINTER, DIMENSION(:)    :: XC4REF         ! 'Force-Restore' sub-surface vertical 
00231 !                                                    ! diffusion coefficient                   (-)
00232   REAL, POINTER, DIMENSION(:)      :: XACOEF         ! 'Force-Restore' surface vertical 
00233 !                                                    ! diffusion coefficient                   (-)
00234   REAL, POINTER, DIMENSION(:)      :: XPCOEF         ! 'Force-Restore' surface vertical 
00235 !                                                    ! diffusion coefficient                   (-)
00236   REAL, POINTER, DIMENSION(:,:)    :: XWFC           ! field capacity volumetric water content
00237 !                                                      ! profile                                 (m3/m3)
00238   REAL, POINTER, DIMENSION(:,:)    :: XWWILT         ! wilting point volumetric water content 
00239 !                                                      ! profile                                 (m3/m3)
00240   REAL, POINTER, DIMENSION(:,:)    :: XWSAT          ! porosity profile                        (m3/m3) 
00241   REAL, POINTER, DIMENSION(:,:)    :: XBCOEF         ! soil water CH78 b-parameter             (-)
00242   REAL, POINTER, DIMENSION(:,:)  :: XCONDSAT       ! hydraulic conductivity at saturation    (m/s)
00243   REAL, POINTER, DIMENSION(:,:)  :: XMPOTSAT       ! matric potential at saturation          (m)
00244 !
00245 !-------------------------------------------------------------------------------
00246 !
00247 ! - soil: Secondary parameters: thermal 
00248 !
00249   REAL, POINTER, DIMENSION(:)      :: XCGSAT         ! soil thermal inertia coefficient at 
00250 !                                                      ! saturation                              (K m2/J)
00251   REAL, POINTER, DIMENSION(:,:)    :: XHCAPSOIL      ! soil heat capacity                      (J/K/m3)
00252   REAL, POINTER, DIMENSION(:,:)    :: XCONDDRY       ! soil dry thermal conductivity           (W/m/K)
00253   REAL, POINTER, DIMENSION(:,:)    :: XCONDSLD       ! soil solids thermal conductivity        (W/m/K)
00254   REAL, POINTER, DIMENSION(:)      :: XTDEEP         ! prescribed deep soil temperature 
00255 !                                                    ! (optional)                              (K) 
00256   REAL, POINTER, DIMENSION(:)     :: XPCPS
00257   REAL, POINTER, DIMENSION(:)     :: XPLVTT
00258   REAL, POINTER, DIMENSION(:)     :: XPLSTT 
00259 !-------------------------------------------------------------------------------
00260 !
00261 ! - SGH scheme
00262 !                                                     
00263   REAL, POINTER, DIMENSION(:)  :: XD_ICE    !depth of the soil column for the calculation
00264 !                                              of the frozen soil fraction (m)
00265   REAL, POINTER, DIMENSION(:)  :: XKSAT_ICE !hydraulic conductivity at saturation
00266 !                                              over frozen area (m s-1)                                     
00267 !-------------------------------------------------------------------------------
00268 !
00269 ! Type of vegetation (simplification of vegetation charaterization)
00270  CHARACTER(LEN=4)             :: CTYPE_HVEG   ! type of high vegetation
00271  CHARACTER(LEN=4)             :: CTYPE_LVEG   ! type of low vegetation
00272  CHARACTER(LEN=4)             :: CTYPE_NVEG   ! type of bare soil (no vegetation)
00273 !-------------------------------------------------------------------------------
00274 !
00275 END TYPE TEB_GARDEN_PGD_t
00276 !
00277 TYPE TEB_GARDEN_PGD_EVOL_t
00278 !!-------------------------------------------------------------------------------
00279 !
00280 ! - Vegetation: Ags Prognostic (YPHOTO = ('LAI', 'LST', or 'NIT') or prescribed (YPHOTO='NON', 'AGS' or 'LST')
00281 !
00282   REAL, POINTER, DIMENSION(:) :: XLAI          ! Leaf Area Index                         (m2/m2)
00283   REAL, POINTER, DIMENSION(:) :: XVEG          ! vegetation cover fraction               (-)
00284   REAL, POINTER, DIMENSION(:) :: XALBNIR       ! near-infra-red albedo                   (-)
00285   REAL, POINTER, DIMENSION(:) :: XALBVIS       ! visible albedo                          (-)
00286   REAL, POINTER, DIMENSION(:) :: XALBUV        ! UV albedo                               (-)
00287   REAL, POINTER, DIMENSION(:) :: XEMIS         ! surface emissivity                      (-)
00288   REAL, POINTER, DIMENSION(:) :: XZ0           ! surface roughness length                (m)
00289 !
00290 !-------------------------------------------------------------------------------
00291 END TYPE TEB_GARDEN_PGD_EVOL_t
00292 
00293 TYPE TEB_GARDEN_t
00294 !-------------------------------------------------------------------------------
00295 !
00296 ! Prognostic variables:
00297 !
00298 ! - Snow Cover:
00299 !
00300   TYPE(SURF_SNOW)                       :: TSNOW         ! snow state: 
00301 !                                                      ! scheme type/option                      (-)
00302 !                                                      ! number of layers                        (-)
00303 !                                                      ! snow (& liq. water) content             (kg/m2)
00304 !                                                      ! heat content                            (J/m2)
00305 !                                                      ! temperature                             (K)
00306 !                                                      ! density                                 (kg m-3)
00307 !
00308 !-------------------------------------------------------------------------------
00309 !
00310 ! - Soil and vegetation heat and water:
00311 !
00312   REAL, POINTER, DIMENSION(:)     :: XWR           ! liquid water retained on the
00313 !                                                      ! foliage of the vegetation
00314 !                                                      ! canopy                                  (kg/m2)
00315   REAL, POINTER, DIMENSION(:,:)   :: XTG           ! surface and sub-surface soil 
00316 !                                                      ! temperature profile                     (K)
00317   REAL, POINTER, DIMENSION(:,:)   :: XWG           ! soil volumetric water content profile   (m3/m3)
00318   REAL, POINTER, DIMENSION(:,:)   :: XWGI          ! soil liquid water equivalent volumetric 
00319 !                                                      ! ice content profile                     (m3/m3)
00320   REAL, POINTER, DIMENSION(:)     :: XRESA         ! aerodynamic resistance                  (s/m)
00321 !
00322 !-------------------------------------------------------------------------------
00323 !
00324 ! - Vegetation: Ags Prognostic (YPHOTO = 'AGS', 'LAI', 'AST', 'LST', 'NIT', 'NCB')
00325 !
00326   REAL, POINTER, DIMENSION(:)     :: XAN           ! net CO2 assimilation                    (mg/m2/s)
00327   REAL, POINTER, DIMENSION(:)     :: XANDAY        ! daily net CO2 assimilation              (mg/m2)
00328   REAL, POINTER, DIMENSION(:)     :: XANFM         ! maximum leaf assimilation               (mg/m2/s)
00329   REAL, POINTER, DIMENSION(:)     :: XLE           ! evapotranspiration                      (W/m2)
00330   REAL, POINTER, DIMENSION(:)     :: XFAPARC       ! Fapar of vegetation (cumul)
00331   REAL, POINTER, DIMENSION(:)     :: XFAPIRC       ! Fapir of vegetation (cumul)
00332   REAL, POINTER, DIMENSION(:)     :: XLAI_EFFC     ! Effective LAI (cumul)
00333   REAL, POINTER, DIMENSION(:)     :: XMUS          ! cos zenithal angle (cumul)     
00334 !
00335 !-------------------------------------------------------------------------------
00336 !
00337 ! - Vegetation: Ags Prognostic (YPHOTO = 'NIT', 'NCB')
00338 !
00339   REAL, POINTER, DIMENSION(:,:)   :: XRESP_BIOMASS    ! daily cumulated respiration of 
00340 !                                                       ! biomass                              (kg/m2/s)
00341   REAL, POINTER, DIMENSION(:,:)   :: XBIOMASS         ! biomass of previous day              (kg/m2) 
00342 !
00343 !
00344 !-------------------------------------------------------------------------------
00345 !
00346 ! - Snow and flood fractions and total albedo at time t:
00347 !
00348   REAL, POINTER, DIMENSION(:) :: XPSNG         ! Snow fraction over ground
00349   REAL, POINTER, DIMENSION(:) :: XPSNV         ! Snow fraction over vegetation
00350   REAL, POINTER, DIMENSION(:) :: XPSNV_A       ! Snow fraction over vegetation
00351   REAL, POINTER, DIMENSION(:) :: XPSN          ! Total Snow fraction
00352 ! 
00353   REAL, POINTER, DIMENSION(:)   :: XSNOWFREE_ALB     ! snow free albedo                        (-)
00354   REAL, POINTER, DIMENSION(:)   :: XSNOWFREE_ALB_VEG ! snow free albedo for vegetation         (-)
00355   REAL, POINTER, DIMENSION(:)   :: XSNOWFREE_ALB_SOIL! snow free albedo for soil
00356 !-------------------------------------------------------------------------------
00357 !                                 
00358 END TYPE TEB_GARDEN_t
00359 
00360 
00361 TYPE(TEB_GARDEN_OPTIONS_t), ALLOCATABLE, TARGET, SAVE :: TEB_GARDEN_OPTIONS_MODEL(:)
00362 TYPE(TEB_GARDEN_PGD_t),     ALLOCATABLE, TARGET, SAVE :: TEB_GARDEN_PGD_MODEL(:)
00363 TYPE(TEB_GARDEN_PGD_EVOL_t),ALLOCATABLE, TARGET, SAVE :: TEB_GARDEN_PGD_EVOL_MODEL(:,:)
00364 TYPE(TEB_GARDEN_t),         ALLOCATABLE, TARGET, SAVE :: TEB_GARDEN_MODEL(:,:)
00365 
00366 LOGICAL, POINTER              :: LPAR_GARDEN=>NULL()
00367 !$OMP THREADPRIVATE(LPAR_GARDEN)
00368 REAL, POINTER, DIMENSION(:,:) :: XVEGTYPE=>NULL()
00369 !$OMP THREADPRIVATE(XVEGTYPE)
00370 INTEGER, POINTER              :: NGROUND_LAYER=>NULL()
00371 !$OMP THREADPRIVATE(NGROUND_LAYER)
00372 INTEGER, POINTER              :: NLAYER_HORT=>NULL()
00373 !$OMP THREADPRIVATE(NLAYER_HORT)
00374 INTEGER, POINTER              :: NLAYER_DUN=>NULL()
00375 !$OMP THREADPRIVATE(NLAYER_DUN)
00376 REAL, POINTER, DIMENSION(:)   :: XSOILGRID=>NULL()
00377 !$OMP THREADPRIVATE(XSOILGRID)
00378 REAL, POINTER, DIMENSION(:)   :: XALBNIR_DRY=>NULL()
00379 !$OMP THREADPRIVATE(XALBNIR_DRY)
00380 REAL, POINTER, DIMENSION(:)   :: XALBVIS_DRY=>NULL()
00381 !$OMP THREADPRIVATE(XALBVIS_DRY)
00382 REAL, POINTER, DIMENSION(:)   :: XALBUV_DRY=>NULL()
00383 !$OMP THREADPRIVATE(XALBUV_DRY)
00384 REAL, POINTER, DIMENSION(:)   :: XALBNIR_WET=>NULL()
00385 !$OMP THREADPRIVATE(XALBNIR_WET)
00386 REAL, POINTER, DIMENSION(:)   :: XALBVIS_WET=>NULL()
00387 !$OMP THREADPRIVATE(XALBVIS_WET)
00388 REAL, POINTER, DIMENSION(:)   :: XALBUV_WET=>NULL()
00389 !$OMP THREADPRIVATE(XALBUV_WET)
00390 REAL, POINTER, DIMENSION(:) :: XALBNIR_SOIL=>NULL()
00391 !$OMP THREADPRIVATE(XALBNIR_SOIL)
00392 REAL, POINTER, DIMENSION(:) :: XALBVIS_SOIL=>NULL()
00393 !$OMP THREADPRIVATE(XALBVIS_SOIL)
00394 REAL, POINTER, DIMENSION(:) :: XALBUV_SOIL=>NULL()
00395 !$OMP THREADPRIVATE(XALBUV_SOIL)
00396 REAL, POINTER, DIMENSION(:)   :: XALBNIR_TSOIL=>NULL()
00397 !$OMP THREADPRIVATE(XALBNIR_TSOIL)
00398 REAL, POINTER, DIMENSION(:)   :: XALBVIS_TSOIL=>NULL()
00399 !$OMP THREADPRIVATE(XALBVIS_TSOIL)
00400 REAL, POINTER, DIMENSION(:) :: XZ0_O_Z0H=>NULL()
00401 !$OMP THREADPRIVATE(XZ0_O_Z0H)
00402 REAL, POINTER, DIMENSION(:) :: XALBNIR=>NULL()
00403 !$OMP THREADPRIVATE(XALBNIR)
00404 REAL, POINTER, DIMENSION(:) :: XALBVIS=>NULL()
00405 !$OMP THREADPRIVATE(XALBVIS)
00406 REAL, POINTER, DIMENSION(:) :: XALBUV=>NULL()
00407 !$OMP THREADPRIVATE(XALBUV)
00408 REAL, POINTER, DIMENSION(:) :: XEMIS=>NULL()
00409 !$OMP THREADPRIVATE(XEMIS)
00410 REAL, POINTER, DIMENSION(:) :: XZ0=>NULL()
00411 !$OMP THREADPRIVATE(XZ0)
00412 REAL, POINTER, DIMENSION(:) :: XALBNIR_VEG=>NULL()
00413 !$OMP THREADPRIVATE(XALBNIR_VEG)
00414 REAL, POINTER, DIMENSION(:) :: XALBVIS_VEG=>NULL()
00415 !$OMP THREADPRIVATE(XALBVIS_VEG)
00416 REAL, POINTER, DIMENSION(:) :: XALBUV_VEG=>NULL()
00417 !$OMP THREADPRIVATE(XALBUV_VEG)
00418 REAL, POINTER, DIMENSION(:)   :: XALBNIR_TVEG=>NULL()
00419 !$OMP THREADPRIVATE(XALBNIR_TVEG)
00420 REAL, POINTER, DIMENSION(:)   :: XALBVIS_TVEG=>NULL()
00421 !$OMP THREADPRIVATE(XALBVIS_TVEG)
00422 REAL, POINTER, DIMENSION(:) :: XVEG=>NULL()
00423 !$OMP THREADPRIVATE(XVEG)
00424 REAL, POINTER, DIMENSION(:) :: XWRMAX_CF=>NULL()
00425 !$OMP THREADPRIVATE(XWRMAX_CF)
00426 REAL, POINTER, DIMENSION(:) :: XRSMIN=>NULL()
00427 !$OMP THREADPRIVATE(XRSMIN)
00428 REAL, POINTER, DIMENSION(:) :: XGAMMA=>NULL()
00429 !$OMP THREADPRIVATE(XGAMMA)
00430 REAL, POINTER, DIMENSION(:) :: XCV=>NULL()
00431 !$OMP THREADPRIVATE(XCV)
00432 REAL, POINTER, DIMENSION(:) :: XRGL=>NULL()
00433 !$OMP THREADPRIVATE(XRGL)
00434 REAL, POINTER, DIMENSION(:,:) :: XROOTFRAC=>NULL()
00435 !$OMP THREADPRIVATE(XROOTFRAC)
00436 REAL, DIMENSION(:), POINTER :: XABC=>NULL()
00437 !$OMP THREADPRIVATE(XABC)
00438 REAL, DIMENSION(:), POINTER :: XPOI=>NULL()
00439 !$OMP THREADPRIVATE(XPOI)
00440 REAL, POINTER, DIMENSION(:)    :: XBSLAI=>NULL()
00441 !$OMP THREADPRIVATE(XBSLAI)
00442 REAL, POINTER, DIMENSION(:)    :: XLAIMIN=>NULL()
00443 !$OMP THREADPRIVATE(XLAIMIN)
00444 REAL, POINTER, DIMENSION(:)    :: XLAI=>NULL()
00445 !$OMP THREADPRIVATE(XLAI)
00446 REAL, POINTER, DIMENSION(:)    :: XSEFOLD=>NULL()
00447 !$OMP THREADPRIVATE(XSEFOLD)
00448 REAL, POINTER, DIMENSION(:)    :: XH_TREE=>NULL()
00449 !$OMP THREADPRIVATE(XH_TREE)
00450 REAL, POINTER, DIMENSION(:)    :: XANF=>NULL()
00451 !$OMP THREADPRIVATE(XANF)
00452 REAL, POINTER, DIMENSION(:)    :: XANMAX=>NULL()
00453 !$OMP THREADPRIVATE(XANMAX)
00454 REAL, POINTER, DIMENSION(:)    :: XFZERO=>NULL()
00455 !$OMP THREADPRIVATE(XFZERO)
00456 REAL, POINTER, DIMENSION(:)    :: XEPSO=>NULL()
00457 !$OMP THREADPRIVATE(XEPSO)
00458 REAL, POINTER, DIMENSION(:)    :: XGAMM=>NULL()
00459 !$OMP THREADPRIVATE(XGAMM)
00460 REAL, POINTER, DIMENSION(:)    :: XQDGAMM=>NULL()
00461 !$OMP THREADPRIVATE(XQDGAMM)
00462 REAL, POINTER, DIMENSION(:)    :: XGMES=>NULL()
00463 !$OMP THREADPRIVATE(XGMES)
00464 REAL, POINTER, DIMENSION(:)    :: XRE25=>NULL()
00465 !$OMP THREADPRIVATE(XRE25)
00466 REAL, POINTER, DIMENSION(:)    :: XQDGMES=>NULL()
00467 !$OMP THREADPRIVATE(XQDGMES)
00468 REAL, POINTER, DIMENSION(:)    :: XT1GMES=>NULL()
00469 !$OMP THREADPRIVATE(XT1GMES)
00470 REAL, POINTER, DIMENSION(:)    :: XT2GMES=>NULL()
00471 !$OMP THREADPRIVATE(XT2GMES)
00472 REAL, POINTER, DIMENSION(:)    :: XAMAX=>NULL()
00473 !$OMP THREADPRIVATE(XAMAX)
00474 REAL, POINTER, DIMENSION(:)    :: XQDAMAX=>NULL()
00475 !$OMP THREADPRIVATE(XQDAMAX)
00476 REAL, POINTER, DIMENSION(:)    :: XT1AMAX=>NULL()
00477 !$OMP THREADPRIVATE(XT1AMAX)
00478 REAL, POINTER, DIMENSION(:)    :: XT2AMAX=>NULL()
00479 !$OMP THREADPRIVATE(XT2AMAX)
00480 LOGICAL, POINTER, DIMENSION(:) :: LSTRESS=>NULL()
00481 !$OMP THREADPRIVATE(LSTRESS)
00482 REAL, POINTER, DIMENSION(:)    :: XF2I=>NULL()
00483 !$OMP THREADPRIVATE(XF2I)
00484 REAL, POINTER, DIMENSION(:)    :: XGC=>NULL()
00485 !$OMP THREADPRIVATE(XGC)
00486 REAL, POINTER, DIMENSION(:)    :: XAH=>NULL()
00487 !$OMP THREADPRIVATE(XAH)
00488 REAL, POINTER, DIMENSION(:)    :: XBH=>NULL()
00489 !$OMP THREADPRIVATE(XBH)
00490 REAL, POINTER, DIMENSION(:)    :: XDMAX=>NULL()
00491 !$OMP THREADPRIVATE(XDMAX)
00492 REAL, POINTER, DIMENSION(:)    :: XCE_NITRO=>NULL()
00493 !$OMP THREADPRIVATE(XCE_NITRO)
00494 REAL, POINTER, DIMENSION(:)    :: XCF_NITRO=>NULL()
00495 !$OMP THREADPRIVATE(XCF_NITRO)
00496 REAL, POINTER, DIMENSION(:)    :: XCNA_NITRO=>NULL()
00497 !$OMP THREADPRIVATE(XCNA_NITRO)
00498 REAL, POINTER, DIMENSION(:)    :: XBSLAI_NITRO=>NULL()
00499 !$OMP THREADPRIVATE(XBSLAI_NITRO)
00500 REAL, POINTER, DIMENSION(:,:)    :: XSAND=>NULL()
00501 !$OMP THREADPRIVATE(XSAND)
00502 REAL, POINTER, DIMENSION(:,:)    :: XCLAY=>NULL()
00503 !$OMP THREADPRIVATE(XCLAY)
00504 REAL, POINTER, DIMENSION(:)      :: XRUNOFFB=>NULL()
00505 !$OMP THREADPRIVATE(XRUNOFFB)
00506 REAL, POINTER, DIMENSION(:)      :: XWDRAIN=>NULL()
00507 !$OMP THREADPRIVATE(XWDRAIN)
00508 REAL, POINTER, DIMENSION(:)      :: XTAUICE=>NULL()
00509 !$OMP THREADPRIVATE(XTAUICE)
00510 REAL, POINTER, DIMENSION(:)      :: XGAMMAT=>NULL()
00511 !$OMP THREADPRIVATE(XGAMMAT)
00512 REAL, POINTER, DIMENSION(:,:)  :: XDG=>NULL()
00513 !$OMP THREADPRIVATE(XDG)
00514 REAL, POINTER, DIMENSION(:)    :: XRUNOFFD=>NULL()
00515 !$OMP THREADPRIVATE(XRUNOFFD)
00516 REAL, POINTER, DIMENSION(:,:)  :: XSOILWGHT=>NULL()
00517 !$OMP THREADPRIVATE(XSOILWGHT)
00518 REAL, POINTER, DIMENSION(:,:)  :: XDZG=>NULL()
00519 !$OMP THREADPRIVATE(XDZG)
00520 REAL, POINTER, DIMENSION(:,:)  :: XDZDIF=>NULL()
00521 !$OMP THREADPRIVATE(XDZDIF)
00522 INTEGER, POINTER, DIMENSION(:) :: NWG_LAYER=>NULL()
00523 !$OMP THREADPRIVATE(NWG_LAYER)
00524 REAL, POINTER, DIMENSION(:)    :: XDROOT=>NULL()
00525 !$OMP THREADPRIVATE(XDROOT)
00526 REAL, POINTER, DIMENSION(:)    :: XDG2=>NULL()
00527 !$OMP THREADPRIVATE(XDG2)
00528 REAL, POINTER, DIMENSION(:)    :: XC1SAT=>NULL()
00529 !$OMP THREADPRIVATE(XC1SAT)
00530 REAL, POINTER, DIMENSION(:)    :: XC2REF=>NULL()
00531 !$OMP THREADPRIVATE(XC2REF)
00532 REAL, POINTER, DIMENSION(:,:)  :: XC3=>NULL()
00533 !$OMP THREADPRIVATE(XC3)
00534 REAL, POINTER, DIMENSION(:)      :: XC4B=>NULL()
00535 !$OMP THREADPRIVATE(XC4B)
00536 REAL, POINTER, DIMENSION(:)    :: XC4REF=>NULL()
00537 !$OMP THREADPRIVATE(XC4REF)
00538 REAL, POINTER, DIMENSION(:)      :: XACOEF=>NULL()
00539 !$OMP THREADPRIVATE(XACOEF)
00540 REAL, POINTER, DIMENSION(:)      :: XPCOEF=>NULL()
00541 !$OMP THREADPRIVATE(XPCOEF)
00542 REAL, POINTER, DIMENSION(:,:)  :: XWFC=>NULL()
00543 !$OMP THREADPRIVATE(XWFC)
00544 REAL, POINTER, DIMENSION(:,:)  :: XWWILT=>NULL()
00545 !$OMP THREADPRIVATE(XWWILT)
00546 REAL, POINTER, DIMENSION(:,:)  :: XWSAT=>NULL()
00547 !$OMP THREADPRIVATE(XWSAT)
00548 REAL, POINTER, DIMENSION(:,:)  :: XBCOEF=>NULL()
00549 !$OMP THREADPRIVATE(XBCOEF)
00550 REAL, POINTER, DIMENSION(:,:)  :: XCONDSAT=>NULL()
00551 !$OMP THREADPRIVATE(XCONDSAT)
00552 REAL, POINTER, DIMENSION(:,:)    :: XMPOTSAT=>NULL()
00553 !$OMP THREADPRIVATE(XMPOTSAT)
00554 REAL, POINTER, DIMENSION(:)      :: XCGSAT=>NULL()
00555 !$OMP THREADPRIVATE(XCGSAT)
00556 REAL, POINTER, DIMENSION(:,:)    :: XHCAPSOIL=>NULL()
00557 !$OMP THREADPRIVATE(XHCAPSOIL)
00558 REAL, POINTER, DIMENSION(:,:)    :: XCONDDRY=>NULL()
00559 !$OMP THREADPRIVATE(XCONDDRY)
00560 REAL, POINTER, DIMENSION(:,:)    :: XCONDSLD=>NULL()
00561 !$OMP THREADPRIVATE(XCONDSLD)
00562 REAL, POINTER, DIMENSION(:)      :: XTDEEP=>NULL()
00563 !$OMP THREADPRIVATE(XTDEEP)
00564 TYPE(SURF_SNOW), POINTER :: TSNOW=>NULL()
00565 !$OMP THREADPRIVATE(TSNOW)
00566 REAL, POINTER, DIMENSION(:)     :: XWR=>NULL()
00567 !$OMP THREADPRIVATE(XWR)
00568 REAL, POINTER, DIMENSION(:,:)   :: XTG=>NULL()
00569 !$OMP THREADPRIVATE(XTG)
00570 REAL, POINTER, DIMENSION(:,:)   :: XWG=>NULL()
00571 !$OMP THREADPRIVATE(XWG)
00572 REAL, POINTER, DIMENSION(:,:)   :: XWGI=>NULL()
00573 !$OMP THREADPRIVATE(XWGI)
00574 REAL, POINTER, DIMENSION(:)     :: XRESA=>NULL()
00575 !$OMP THREADPRIVATE(XRESA)
00576 REAL, POINTER, DIMENSION(:)     :: XPCPS=>NULL()
00577 !$OMP THREADPRIVATE(XPCPS)
00578 REAL, POINTER, DIMENSION(:)     :: XPLVTT=>NULL()
00579 !$OMP THREADPRIVATE(XPLVTT)
00580 REAL, POINTER, DIMENSION(:)     :: XPLSTT=>NULL()
00581 !$OMP THREADPRIVATE(XPLSTT)
00582 REAL, POINTER, DIMENSION(:)     :: XAN=>NULL()
00583 !$OMP THREADPRIVATE(XAN)
00584 REAL, POINTER, DIMENSION(:)     :: XANDAY=>NULL()
00585 !$OMP THREADPRIVATE(XANDAY)
00586 REAL, POINTER, DIMENSION(:)     :: XANFM=>NULL()
00587 !$OMP THREADPRIVATE(XANFM)
00588 REAL, POINTER, DIMENSION(:)     :: XLE=>NULL()
00589 !$OMP THREADPRIVATE(XLE)
00590 REAL, POINTER, DIMENSION(:)     :: XFAPARC=>NULL()
00591 !$OMP THREADPRIVATE(XFAPARC)
00592 REAL, POINTER, DIMENSION(:)     :: XFAPIRC=>NULL()
00593 !$OMP THREADPRIVATE(XFAPIRC)
00594 REAL, POINTER, DIMENSION(:)     :: XLAI_EFFC=>NULL()
00595 !$OMP THREADPRIVATE(XLAI_EFFC)
00596 REAL, POINTER, DIMENSION(:)     :: XMUS=>NULL()
00597 !$OMP THREADPRIVATE(XMUS)
00598 REAL, POINTER, DIMENSION(:,:)   :: XRESP_BIOMASS=>NULL()
00599 !$OMP THREADPRIVATE(XRESP_BIOMASS)
00600 REAL, POINTER, DIMENSION(:,:)   :: XBIOMASS=>NULL()
00601 !$OMP THREADPRIVATE(XBIOMASS)
00602 !
00603 REAL, POINTER, DIMENSION(:) :: XPSNG=>NULL()
00604 !$OMP THREADPRIVATE(XPSNG)
00605 REAL, POINTER, DIMENSION(:) :: XPSNV=>NULL()
00606 !$OMP THREADPRIVATE(XPSNV)
00607 REAL, POINTER, DIMENSION(:) :: XPSNV_A=>NULL()
00608 !$OMP THREADPRIVATE(XPSNV_A)
00609 REAL, POINTER, DIMENSION(:) :: XPSN=>NULL()
00610 !$OMP THREADPRIVATE(XPSN)
00611 REAL, POINTER, DIMENSION(:)   :: XSNOWFREE_ALB=>NULL()
00612 !$OMP THREADPRIVATE(XSNOWFREE_ALB)
00613 REAL, POINTER, DIMENSION(:)   :: XSNOWFREE_ALB_VEG=>NULL()
00614 !$OMP THREADPRIVATE(XSNOWFREE_ALB_VEG)
00615 REAL, POINTER, DIMENSION(:)   :: XSNOWFREE_ALB_SOIL=>NULL()
00616 !$OMP THREADPRIVATE(XSNOWFREE_ALB_SOIL)
00617 !
00618 !SGH scheme
00619 !
00620 REAL, POINTER, DIMENSION(:)  :: XD_ICE=>NULL()
00621 !$OMP THREADPRIVATE(XD_ICE)
00622 REAL, POINTER, DIMENSION(:)  :: XKSAT_ICE=>NULL()
00623 !$OMP THREADPRIVATE(XKSAT_ICE)
00624 !
00625 ! Type of vegetation (simplification of veg characterization)
00626  CHARACTER(LEN=4), POINTER :: CTYPE_HVEG=>NULL()
00627 !$OMP THREADPRIVATE(CTYPE_HVEG)
00628  CHARACTER(LEN=4), POINTER :: CTYPE_LVEG=>NULL()
00629 !$OMP THREADPRIVATE(CTYPE_LVEG)
00630  CHARACTER(LEN=4), POINTER :: CTYPE_NVEG=>NULL()
00631 !$OMP THREADPRIVATE(CTYPE_NVEG)
00632 !
00633 CONTAINS
00634 
00635 SUBROUTINE TEB_GARDEN_OPTIONS_GOTO_MODEL(KFROM, KTO, LKFROM)
00636 LOGICAL, INTENT(IN) :: LKFROM
00637 INTEGER, INTENT(IN) :: KFROM, KTO
00638 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00639 !
00640 ! Current model is set to model KTO
00641 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_N:TEB_GARDEN_OPTIONS_GOTO_MODEL',0,ZHOOK_HANDLE)
00642 IF (LKFROM) THEN
00643 TEB_GARDEN_OPTIONS_MODEL(KTO)%XSOILGRID=>XSOILGRID
00644 ENDIF
00645 LPAR_GARDEN=>TEB_GARDEN_OPTIONS_MODEL(KTO)%LPAR_GARDEN
00646 NGROUND_LAYER=>TEB_GARDEN_OPTIONS_MODEL(KTO)%NGROUND_LAYER
00647 NLAYER_HORT=>TEB_GARDEN_OPTIONS_MODEL(KTO)%NLAYER_HORT
00648 NLAYER_DUN=>TEB_GARDEN_OPTIONS_MODEL(KTO)%NLAYER_DUN
00649 XSOILGRID=>TEB_GARDEN_OPTIONS_MODEL(KTO)%XSOILGRID
00650 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_N:TEB_GARDEN_OPTIONS_GOTO_MODEL',1,ZHOOK_HANDLE)
00651 !
00652 END SUBROUTINE TEB_GARDEN_OPTIONS_GOTO_MODEL
00653 
00654 SUBROUTINE TEB_GARDEN_OPTIONS_ALLOC(KMODEL)
00655 INTEGER, INTENT(IN) :: KMODEL
00656 INTEGER :: J
00657 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00658 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_ALLOC",0,ZHOOK_HANDLE)
00659 ALLOCATE(TEB_GARDEN_OPTIONS_MODEL(KMODEL))
00660 DO J=1,KMODEL
00661   NULLIFY(TEB_GARDEN_OPTIONS_MODEL(J)%XSOILGRID)
00662 ENDDO
00663 TEB_GARDEN_OPTIONS_MODEL(:)%LPAR_GARDEN=.TRUE.
00664 TEB_GARDEN_OPTIONS_MODEL(:)%NGROUND_LAYER=0
00665 TEB_GARDEN_OPTIONS_MODEL(:)%NLAYER_HORT=0
00666 TEB_GARDEN_OPTIONS_MODEL(:)%NLAYER_DUN=0
00667 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_OPTIONS_ALLOC",1,ZHOOK_HANDLE)
00668 END SUBROUTINE TEB_GARDEN_OPTIONS_ALLOC
00669 
00670 SUBROUTINE TEB_GARDEN_OPTIONS_DEALLO
00671 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00672 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_OPTIONS_DEALLO",0,ZHOOK_HANDLE)
00673 IF (ALLOCATED(TEB_GARDEN_OPTIONS_MODEL)) DEALLOCATE(TEB_GARDEN_OPTIONS_MODEL)
00674 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_OPTIONS_DEALLO",1,ZHOOK_HANDLE)
00675 END SUBROUTINE TEB_GARDEN_OPTIONS_DEALLO
00676 
00677 
00678 SUBROUTINE TEB_GARDEN_GOTO_MODEL(KFROM, KTO, LKFROM, KFROM_PATCH, KTO_PATCH)
00679 LOGICAL, INTENT(IN) :: LKFROM
00680 INTEGER, INTENT(IN) :: KFROM, KTO
00681 INTEGER, INTENT(IN) :: KFROM_PATCH, KTO_PATCH
00682 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00683 !
00684 ! Save current state for allocated arrays
00685 IF (LKFROM) THEN
00686 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XWR=>XWR
00687 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XTG=>XTG
00688 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XWG=>XWG
00689 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XWGI=>XWGI
00690 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XRESA=>XRESA
00691 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XAN=>XAN
00692 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XANDAY=>XANDAY
00693 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XANFM=>XANFM
00694 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XLE=>XLE
00695 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XFAPARC=>XFAPARC
00696 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XFAPIRC=>XFAPIRC
00697 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XLAI_EFFC=>XLAI_EFFC
00698 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XMUS=>XMUS
00699 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XRESP_BIOMASS=>XRESP_BIOMASS
00700 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XBIOMASS=>XBIOMASS
00701 !
00702 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XPSNG=>XPSNG
00703 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XPSNV_A=>XPSNV_A
00704 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XPSNV=>XPSNV
00705 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XPSN=>XPSN
00706 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XSNOWFREE_ALB=>XSNOWFREE_ALB
00707 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XSNOWFREE_ALB_VEG=>XSNOWFREE_ALB_VEG
00708 TEB_GARDEN_MODEL(KFROM,KFROM_PATCH)%XSNOWFREE_ALB_SOIL=>XSNOWFREE_ALB_SOIL
00709 !
00710 ENDIF
00711 !
00712 ! Current model is set to model KTO
00713 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_N:TEB_GARDEN_GOTO_MODEL',0,ZHOOK_HANDLE)
00714 TSNOW=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%TSNOW
00715 XWR=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XWR
00716 XTG=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XTG
00717 XWG=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XWG
00718 XWGI=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XWGI
00719 XRESA=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XRESA
00720 XAN=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XAN
00721 XANDAY=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XANDAY
00722 XANFM=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XANFM
00723 XLE=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XLE
00724 XFAPARC=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XFAPARC
00725 XFAPIRC=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XFAPIRC
00726 XLAI_EFFC=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XLAI_EFFC
00727 XMUS=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XMUS
00728 XRESP_BIOMASS=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XRESP_BIOMASS
00729 XBIOMASS=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XBIOMASS
00730 !
00731 XPSNG=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XPSNG
00732 XPSNV_A=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XPSNV_A
00733 XPSNV=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XPSNV
00734 XPSN=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XPSN
00735 XSNOWFREE_ALB=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XSNOWFREE_ALB
00736 XSNOWFREE_ALB_VEG=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XSNOWFREE_ALB_VEG
00737 XSNOWFREE_ALB_SOIL=>TEB_GARDEN_MODEL(KTO,KTO_PATCH)%XSNOWFREE_ALB_SOIL
00738 !
00739 ! Types of vegetation (simplification of veg characterization)
00740 !
00741 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_N:TEB_GARDEN_GOTO_MODEL',1,ZHOOK_HANDLE)
00742 !
00743 END SUBROUTINE TEB_GARDEN_GOTO_MODEL
00744 
00745 SUBROUTINE TEB_GARDEN_ALLOC(KMODEL,KPATCH)
00746 INTEGER, INTENT(IN) :: KMODEL, KPATCH
00747 INTEGER :: J, JP
00748 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00749 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_ALLOC",0,ZHOOK_HANDLE)
00750 ALLOCATE(TEB_GARDEN_MODEL(KMODEL,KPATCH))
00751 DO J=1,KMODEL
00752  DO JP=1,KPATCH
00753   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XWR)
00754   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XTG)
00755   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XWG)
00756   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XWGI)
00757   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XRESA)
00758   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XAN)
00759   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XANDAY)
00760   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XANFM)
00761   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XLE)
00762   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XFAPARC)
00763   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XFAPIRC)
00764   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XLAI_EFFC)  
00765   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XMUS)    
00766   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XRESP_BIOMASS)
00767   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XBIOMASS)
00768   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XPSNG)
00769   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XPSNV)
00770   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XPSNV_A)
00771   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XPSN)
00772   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XSNOWFREE_ALB)
00773   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XSNOWFREE_ALB_VEG)
00774   NULLIFY(TEB_GARDEN_MODEL(J,JP)%XSNOWFREE_ALB_SOIL)
00775  ENDDO
00776 ENDDO
00777 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_ALLOC",1,ZHOOK_HANDLE)
00778 END SUBROUTINE TEB_GARDEN_ALLOC
00779 
00780 SUBROUTINE TEB_GARDEN_DEALLO
00781 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00782 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_DEALLO",0,ZHOOK_HANDLE)
00783 IF (ALLOCATED(TEB_GARDEN_MODEL)) DEALLOCATE(TEB_GARDEN_MODEL)
00784 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_N:TEB_GARDEN_DEALLO",1,ZHOOK_HANDLE)
00785 END SUBROUTINE TEB_GARDEN_DEALLO
00786 
00787 SUBROUTINE TEB_GARDEN_PGD_GOTO_MODEL(KFROM, KTO, LKFROM)
00788 LOGICAL, INTENT(IN) :: LKFROM
00789 INTEGER, INTENT(IN) :: KFROM, KTO
00790 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00791 !
00792 ! Save current state for allocated arrays
00793 IF (LKFROM) THEN
00794 TEB_GARDEN_PGD_MODEL(KFROM)%XVEGTYPE=>XVEGTYPE
00795 TEB_GARDEN_PGD_MODEL(KFROM)%XALBNIR_DRY=>XALBNIR_DRY
00796 TEB_GARDEN_PGD_MODEL(KFROM)%XALBVIS_DRY=>XALBVIS_DRY
00797 TEB_GARDEN_PGD_MODEL(KFROM)%XALBUV_DRY=>XALBUV_DRY
00798 TEB_GARDEN_PGD_MODEL(KFROM)%XALBNIR_WET=>XALBNIR_WET
00799 TEB_GARDEN_PGD_MODEL(KFROM)%XALBVIS_WET=>XALBVIS_WET
00800 TEB_GARDEN_PGD_MODEL(KFROM)%XALBUV_WET=>XALBUV_WET
00801 TEB_GARDEN_PGD_MODEL(KFROM)%XALBNIR_SOIL=>XALBNIR_SOIL
00802 TEB_GARDEN_PGD_MODEL(KFROM)%XALBVIS_SOIL=>XALBVIS_SOIL
00803 TEB_GARDEN_PGD_MODEL(KFROM)%XALBUV_SOIL=>XALBUV_SOIL
00804 TEB_GARDEN_PGD_MODEL(KFROM)%XALBNIR_TSOIL=>XALBNIR_TSOIL
00805 TEB_GARDEN_PGD_MODEL(KFROM)%XALBVIS_TSOIL=>XALBVIS_TSOIL
00806 TEB_GARDEN_PGD_MODEL(KFROM)%XZ0_O_Z0H=>XZ0_O_Z0H
00807 TEB_GARDEN_PGD_MODEL(KFROM)%XALBNIR_VEG=>XALBNIR_VEG
00808 TEB_GARDEN_PGD_MODEL(KFROM)%XALBVIS_VEG=>XALBVIS_VEG
00809 TEB_GARDEN_PGD_MODEL(KFROM)%XALBUV_VEG=>XALBUV_VEG
00810 TEB_GARDEN_PGD_MODEL(KFROM)%XALBNIR_TVEG=>XALBNIR_TVEG
00811 TEB_GARDEN_PGD_MODEL(KFROM)%XALBVIS_TVEG=>XALBVIS_TVEG
00812 TEB_GARDEN_PGD_MODEL(KFROM)%XWRMAX_CF=>XWRMAX_CF
00813 TEB_GARDEN_PGD_MODEL(KFROM)%XRSMIN=>XRSMIN
00814 TEB_GARDEN_PGD_MODEL(KFROM)%XGAMMA=>XGAMMA
00815 TEB_GARDEN_PGD_MODEL(KFROM)%XCV=>XCV
00816 TEB_GARDEN_PGD_MODEL(KFROM)%XRGL=>XRGL
00817 TEB_GARDEN_PGD_MODEL(KFROM)%XROOTFRAC=>XROOTFRAC
00818 TEB_GARDEN_PGD_MODEL(KFROM)%XABC=>XABC
00819 TEB_GARDEN_PGD_MODEL(KFROM)%XPOI=>XPOI
00820 TEB_GARDEN_PGD_MODEL(KFROM)%XBSLAI=>XBSLAI
00821 TEB_GARDEN_PGD_MODEL(KFROM)%XLAIMIN=>XLAIMIN
00822 TEB_GARDEN_PGD_MODEL(KFROM)%XSEFOLD=>XSEFOLD
00823 TEB_GARDEN_PGD_MODEL(KFROM)%XH_TREE=>XH_TREE
00824 TEB_GARDEN_PGD_MODEL(KFROM)%XANF=>XANF
00825 TEB_GARDEN_PGD_MODEL(KFROM)%XANMAX=>XANMAX
00826 TEB_GARDEN_PGD_MODEL(KFROM)%XFZERO=>XFZERO
00827 TEB_GARDEN_PGD_MODEL(KFROM)%XEPSO=>XEPSO
00828 TEB_GARDEN_PGD_MODEL(KFROM)%XGAMM=>XGAMM
00829 TEB_GARDEN_PGD_MODEL(KFROM)%XQDGAMM=>XQDGAMM
00830 TEB_GARDEN_PGD_MODEL(KFROM)%XGMES=>XGMES
00831 TEB_GARDEN_PGD_MODEL(KFROM)%XRE25=>XRE25
00832 TEB_GARDEN_PGD_MODEL(KFROM)%XQDGMES=>XQDGMES
00833 TEB_GARDEN_PGD_MODEL(KFROM)%XT1GMES=>XT1GMES
00834 TEB_GARDEN_PGD_MODEL(KFROM)%XT2GMES=>XT2GMES
00835 TEB_GARDEN_PGD_MODEL(KFROM)%XAMAX=>XAMAX
00836 TEB_GARDEN_PGD_MODEL(KFROM)%XQDAMAX=>XQDAMAX
00837 TEB_GARDEN_PGD_MODEL(KFROM)%XT1AMAX=>XT1AMAX
00838 TEB_GARDEN_PGD_MODEL(KFROM)%XT2AMAX=>XT2AMAX
00839 TEB_GARDEN_PGD_MODEL(KFROM)%LSTRESS=>LSTRESS
00840 TEB_GARDEN_PGD_MODEL(KFROM)%XF2I=>XF2I
00841 TEB_GARDEN_PGD_MODEL(KFROM)%XGC=>XGC
00842 TEB_GARDEN_PGD_MODEL(KFROM)%XAH=>XAH
00843 TEB_GARDEN_PGD_MODEL(KFROM)%XBH=>XBH
00844 TEB_GARDEN_PGD_MODEL(KFROM)%XDMAX=>XDMAX
00845 TEB_GARDEN_PGD_MODEL(KFROM)%XCE_NITRO=>XCE_NITRO
00846 TEB_GARDEN_PGD_MODEL(KFROM)%XCF_NITRO=>XCF_NITRO
00847 TEB_GARDEN_PGD_MODEL(KFROM)%XCNA_NITRO=>XCNA_NITRO
00848 TEB_GARDEN_PGD_MODEL(KFROM)%XBSLAI_NITRO=>XBSLAI_NITRO
00849 TEB_GARDEN_PGD_MODEL(KFROM)%XSAND=>XSAND
00850 TEB_GARDEN_PGD_MODEL(KFROM)%XCLAY=>XCLAY
00851 TEB_GARDEN_PGD_MODEL(KFROM)%XRUNOFFB=>XRUNOFFB
00852 TEB_GARDEN_PGD_MODEL(KFROM)%XWDRAIN=>XWDRAIN
00853 TEB_GARDEN_PGD_MODEL(KFROM)%XTAUICE=>XTAUICE
00854 TEB_GARDEN_PGD_MODEL(KFROM)%XGAMMAT=>XGAMMAT
00855 TEB_GARDEN_PGD_MODEL(KFROM)%XDG=>XDG
00856 TEB_GARDEN_PGD_MODEL(KFROM)%XRUNOFFD=>XRUNOFFD
00857 TEB_GARDEN_PGD_MODEL(KFROM)%XSOILWGHT=>XSOILWGHT
00858 TEB_GARDEN_PGD_MODEL(KFROM)%XDZG=>XDZG
00859 TEB_GARDEN_PGD_MODEL(KFROM)%XDZDIF=>XDZDIF
00860 TEB_GARDEN_PGD_MODEL(KFROM)%NWG_LAYER=>NWG_LAYER
00861 TEB_GARDEN_PGD_MODEL(KFROM)%XDROOT=>XDROOT
00862 TEB_GARDEN_PGD_MODEL(KFROM)%XDG2=>XDG2
00863 TEB_GARDEN_PGD_MODEL(KFROM)%XPCPS=>XPCPS
00864 TEB_GARDEN_PGD_MODEL(KFROM)%XPLVTT=>XPLVTT
00865 TEB_GARDEN_PGD_MODEL(KFROM)%XPLSTT=>XPLSTT
00866 TEB_GARDEN_PGD_MODEL(KFROM)%XC1SAT=>XC1SAT
00867 TEB_GARDEN_PGD_MODEL(KFROM)%XC2REF=>XC2REF
00868 TEB_GARDEN_PGD_MODEL(KFROM)%XC3=>XC3
00869 TEB_GARDEN_PGD_MODEL(KFROM)%XC4B=>XC4B
00870 TEB_GARDEN_PGD_MODEL(KFROM)%XC4REF=>XC4REF
00871 TEB_GARDEN_PGD_MODEL(KFROM)%XACOEF=>XACOEF
00872 TEB_GARDEN_PGD_MODEL(KFROM)%XPCOEF=>XPCOEF
00873 TEB_GARDEN_PGD_MODEL(KFROM)%XWFC=>XWFC
00874 TEB_GARDEN_PGD_MODEL(KFROM)%XWWILT=>XWWILT
00875 TEB_GARDEN_PGD_MODEL(KFROM)%XWSAT=>XWSAT
00876 TEB_GARDEN_PGD_MODEL(KFROM)%XBCOEF=>XBCOEF
00877 TEB_GARDEN_PGD_MODEL(KFROM)%XCONDSAT=>XCONDSAT
00878 TEB_GARDEN_PGD_MODEL(KFROM)%XMPOTSAT=>XMPOTSAT
00879 TEB_GARDEN_PGD_MODEL(KFROM)%XCGSAT=>XCGSAT
00880 TEB_GARDEN_PGD_MODEL(KFROM)%XHCAPSOIL=>XHCAPSOIL
00881 TEB_GARDEN_PGD_MODEL(KFROM)%XCONDDRY=>XCONDDRY
00882 TEB_GARDEN_PGD_MODEL(KFROM)%XCONDSLD=>XCONDSLD
00883 TEB_GARDEN_PGD_MODEL(KFROM)%XTDEEP=>XTDEEP
00884 !
00885 !
00886 !SGH scheme
00887 !                    
00888 TEB_GARDEN_PGD_MODEL(KFROM)%XD_ICE=>XD_ICE
00889 TEB_GARDEN_PGD_MODEL(KFROM)%XKSAT_ICE=>XKSAT_ICE
00890 ENDIF
00891 !
00892 ! Current model is set to model KTO
00893 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_PGD_N:TEB_GARDEN_PGD_GOTO_MODEL',0,ZHOOK_HANDLE)
00894 XVEGTYPE=>TEB_GARDEN_PGD_MODEL(KTO)%XVEGTYPE
00895 XALBNIR_DRY=>TEB_GARDEN_PGD_MODEL(KTO)%XALBNIR_DRY
00896 XALBVIS_DRY=>TEB_GARDEN_PGD_MODEL(KTO)%XALBVIS_DRY
00897 XALBUV_DRY=>TEB_GARDEN_PGD_MODEL(KTO)%XALBUV_DRY
00898 XALBNIR_WET=>TEB_GARDEN_PGD_MODEL(KTO)%XALBNIR_WET
00899 XALBVIS_WET=>TEB_GARDEN_PGD_MODEL(KTO)%XALBVIS_WET
00900 XALBUV_WET=>TEB_GARDEN_PGD_MODEL(KTO)%XALBUV_WET
00901 XALBNIR_SOIL=>TEB_GARDEN_PGD_MODEL(KTO)%XALBNIR_SOIL
00902 XALBVIS_SOIL=>TEB_GARDEN_PGD_MODEL(KTO)%XALBVIS_SOIL
00903 XALBUV_SOIL=>TEB_GARDEN_PGD_MODEL(KTO)%XALBUV_SOIL
00904 XALBNIR_TSOIL=>TEB_GARDEN_PGD_MODEL(KTO)%XALBNIR_TSOIL
00905 XALBVIS_TSOIL=>TEB_GARDEN_PGD_MODEL(KTO)%XALBVIS_TSOIL
00906 XZ0_O_Z0H=>TEB_GARDEN_PGD_MODEL(KTO)%XZ0_O_Z0H
00907 XALBNIR_VEG=>TEB_GARDEN_PGD_MODEL(KTO)%XALBNIR_VEG
00908 XALBVIS_VEG=>TEB_GARDEN_PGD_MODEL(KTO)%XALBVIS_VEG
00909 XALBUV_VEG=>TEB_GARDEN_PGD_MODEL(KTO)%XALBUV_VEG
00910 XALBNIR_TVEG=>TEB_GARDEN_PGD_MODEL(KTO)%XALBNIR_TVEG
00911 XALBVIS_TVEG=>TEB_GARDEN_PGD_MODEL(KTO)%XALBVIS_TVEG
00912 XWRMAX_CF=>TEB_GARDEN_PGD_MODEL(KTO)%XWRMAX_CF
00913 XRSMIN=>TEB_GARDEN_PGD_MODEL(KTO)%XRSMIN
00914 XGAMMA=>TEB_GARDEN_PGD_MODEL(KTO)%XGAMMA
00915 XCV=>TEB_GARDEN_PGD_MODEL(KTO)%XCV
00916 XRGL=>TEB_GARDEN_PGD_MODEL(KTO)%XRGL
00917 XROOTFRAC=>TEB_GARDEN_PGD_MODEL(KTO)%XROOTFRAC
00918 XABC=>TEB_GARDEN_PGD_MODEL(KTO)%XABC
00919 XPOI=>TEB_GARDEN_PGD_MODEL(KTO)%XPOI
00920 XBSLAI=>TEB_GARDEN_PGD_MODEL(KTO)%XBSLAI
00921 XLAIMIN=>TEB_GARDEN_PGD_MODEL(KTO)%XLAIMIN
00922 XSEFOLD=>TEB_GARDEN_PGD_MODEL(KTO)%XSEFOLD
00923 XH_TREE=>TEB_GARDEN_PGD_MODEL(KTO)%XH_TREE
00924 XANF=>TEB_GARDEN_PGD_MODEL(KTO)%XANF
00925 XANMAX=>TEB_GARDEN_PGD_MODEL(KTO)%XANMAX
00926 XFZERO=>TEB_GARDEN_PGD_MODEL(KTO)%XFZERO
00927 XEPSO=>TEB_GARDEN_PGD_MODEL(KTO)%XEPSO
00928 XGAMM=>TEB_GARDEN_PGD_MODEL(KTO)%XGAMM
00929 XQDGAMM=>TEB_GARDEN_PGD_MODEL(KTO)%XQDGAMM
00930 XGMES=>TEB_GARDEN_PGD_MODEL(KTO)%XGMES
00931 XRE25=>TEB_GARDEN_PGD_MODEL(KTO)%XRE25
00932 XQDGMES=>TEB_GARDEN_PGD_MODEL(KTO)%XQDGMES
00933 XT1GMES=>TEB_GARDEN_PGD_MODEL(KTO)%XT1GMES
00934 XT2GMES=>TEB_GARDEN_PGD_MODEL(KTO)%XT2GMES
00935 XAMAX=>TEB_GARDEN_PGD_MODEL(KTO)%XAMAX
00936 XQDAMAX=>TEB_GARDEN_PGD_MODEL(KTO)%XQDAMAX
00937 XT1AMAX=>TEB_GARDEN_PGD_MODEL(KTO)%XT1AMAX
00938 XT2AMAX=>TEB_GARDEN_PGD_MODEL(KTO)%XT2AMAX
00939 LSTRESS=>TEB_GARDEN_PGD_MODEL(KTO)%LSTRESS
00940 XF2I=>TEB_GARDEN_PGD_MODEL(KTO)%XF2I
00941 XGC=>TEB_GARDEN_PGD_MODEL(KTO)%XGC
00942 XAH=>TEB_GARDEN_PGD_MODEL(KTO)%XAH
00943 XBH=>TEB_GARDEN_PGD_MODEL(KTO)%XBH
00944 XDMAX=>TEB_GARDEN_PGD_MODEL(KTO)%XDMAX
00945 XCE_NITRO=>TEB_GARDEN_PGD_MODEL(KTO)%XCE_NITRO
00946 XCF_NITRO=>TEB_GARDEN_PGD_MODEL(KTO)%XCF_NITRO
00947 XCNA_NITRO=>TEB_GARDEN_PGD_MODEL(KTO)%XCNA_NITRO
00948 XBSLAI_NITRO=>TEB_GARDEN_PGD_MODEL(KTO)%XBSLAI_NITRO
00949 XSAND=>TEB_GARDEN_PGD_MODEL(KTO)%XSAND
00950 XCLAY=>TEB_GARDEN_PGD_MODEL(KTO)%XCLAY
00951 XRUNOFFB=>TEB_GARDEN_PGD_MODEL(KTO)%XRUNOFFB
00952 XWDRAIN=>TEB_GARDEN_PGD_MODEL(KTO)%XWDRAIN
00953 XTAUICE=>TEB_GARDEN_PGD_MODEL(KTO)%XTAUICE
00954 XGAMMAT=>TEB_GARDEN_PGD_MODEL(KTO)%XGAMMAT
00955 XDG=>TEB_GARDEN_PGD_MODEL(KTO)%XDG
00956 XRUNOFFD=>TEB_GARDEN_PGD_MODEL(KTO)%XRUNOFFD
00957 XSOILWGHT=>TEB_GARDEN_PGD_MODEL(KTO)%XSOILWGHT
00958 XDZG=>TEB_GARDEN_PGD_MODEL(KTO)%XDZG
00959 XDZDIF=>TEB_GARDEN_PGD_MODEL(KTO)%XDZDIF
00960 NWG_LAYER=>TEB_GARDEN_PGD_MODEL(KTO)%NWG_LAYER
00961 XDROOT=>TEB_GARDEN_PGD_MODEL(KTO)%XDROOT
00962 XDG2=>TEB_GARDEN_PGD_MODEL(KTO)%XDG2
00963 XPCPS=>TEB_GARDEN_PGD_MODEL(KTO)%XPCPS
00964 XPLVTT=>TEB_GARDEN_PGD_MODEL(KTO)%XPLVTT
00965 XPLSTT=>TEB_GARDEN_PGD_MODEL(KTO)%XPLSTT
00966 XC1SAT=>TEB_GARDEN_PGD_MODEL(KTO)%XC1SAT
00967 XC2REF=>TEB_GARDEN_PGD_MODEL(KTO)%XC2REF
00968 XC3=>TEB_GARDEN_PGD_MODEL(KTO)%XC3
00969 XC4B=>TEB_GARDEN_PGD_MODEL(KTO)%XC4B
00970 XC4REF=>TEB_GARDEN_PGD_MODEL(KTO)%XC4REF
00971 XACOEF=>TEB_GARDEN_PGD_MODEL(KTO)%XACOEF
00972 XPCOEF=>TEB_GARDEN_PGD_MODEL(KTO)%XPCOEF
00973 XWFC=>TEB_GARDEN_PGD_MODEL(KTO)%XWFC
00974 XWWILT=>TEB_GARDEN_PGD_MODEL(KTO)%XWWILT
00975 XWSAT=>TEB_GARDEN_PGD_MODEL(KTO)%XWSAT
00976 XBCOEF=>TEB_GARDEN_PGD_MODEL(KTO)%XBCOEF
00977 XCONDSAT=>TEB_GARDEN_PGD_MODEL(KTO)%XCONDSAT
00978 XMPOTSAT=>TEB_GARDEN_PGD_MODEL(KTO)%XMPOTSAT
00979 XCGSAT=>TEB_GARDEN_PGD_MODEL(KTO)%XCGSAT
00980 XHCAPSOIL=>TEB_GARDEN_PGD_MODEL(KTO)%XHCAPSOIL
00981 XCONDDRY=>TEB_GARDEN_PGD_MODEL(KTO)%XCONDDRY
00982 XCONDSLD=>TEB_GARDEN_PGD_MODEL(KTO)%XCONDSLD
00983 XTDEEP=>TEB_GARDEN_PGD_MODEL(KTO)%XTDEEP
00984 !
00985 !SGH scheme
00986 !
00987 XD_ICE=>TEB_GARDEN_PGD_MODEL(KTO)%XD_ICE
00988 XKSAT_ICE=>TEB_GARDEN_PGD_MODEL(KTO)%XKSAT_ICE
00989 !
00990 ! Types of vegetation (simplification of veg characterization)
00991 !
00992 CTYPE_HVEG=>TEB_GARDEN_PGD_MODEL(KTO)%CTYPE_HVEG
00993 CTYPE_LVEG=>TEB_GARDEN_PGD_MODEL(KTO)%CTYPE_LVEG
00994 CTYPE_NVEG=>TEB_GARDEN_PGD_MODEL(KTO)%CTYPE_NVEG
00995 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_PGD_N:TEB_GARDEN_PGD_GOTO_MODEL',1,ZHOOK_HANDLE)
00996 !
00997 END SUBROUTINE TEB_GARDEN_PGD_GOTO_MODEL
00998 
00999 SUBROUTINE TEB_GARDEN_PGD_ALLOC(KMODEL)
01000 INTEGER, INTENT(IN) :: KMODEL
01001 INTEGER :: J
01002 REAL(KIND=JPRB) :: ZHOOK_HANDLE
01003 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_N:TEB_GARDEN_PGD_ALLOC",0,ZHOOK_HANDLE)
01004 ALLOCATE(TEB_GARDEN_PGD_MODEL(KMODEL))
01005 DO J=1,KMODEL
01006   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XVEGTYPE)
01007   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBNIR_DRY)
01008   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBVIS_DRY)
01009   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBUV_DRY)
01010   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBNIR_WET)
01011   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBVIS_WET)
01012   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBUV_WET)
01013   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBNIR_SOIL)
01014   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBVIS_SOIL)
01015   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBUV_SOIL)
01016   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBNIR_TSOIL)
01017   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBVIS_TSOIL)  
01018   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XZ0_O_Z0H)
01019   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBNIR_VEG)
01020   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBVIS_VEG)
01021   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBUV_VEG)
01022   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBNIR_TVEG)
01023   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XALBVIS_TVEG)     
01024   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XWRMAX_CF)
01025   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XRSMIN)
01026   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XGAMMA)
01027   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCV)
01028   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XRGL)
01029   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XROOTFRAC)
01030   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XBSLAI)
01031   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XLAIMIN)
01032   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XSEFOLD)
01033   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XH_TREE)
01034   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XANF)
01035   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XANMAX)
01036   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XFZERO)
01037   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XEPSO)
01038   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XGAMM)
01039   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XQDGAMM)
01040   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XGMES)
01041   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XRE25)
01042   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XQDGMES)
01043   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XT1GMES)
01044   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XT2GMES)
01045   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XAMAX)
01046   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XQDAMAX)
01047   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XT1AMAX)
01048   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XT2AMAX)
01049   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%LSTRESS)
01050   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XF2I)
01051   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XGC)
01052   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XAH)
01053   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XBH)
01054   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XDMAX)
01055   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCE_NITRO)
01056   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCF_NITRO)
01057   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCNA_NITRO)
01058   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XBSLAI_NITRO)
01059   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XSAND)
01060   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCLAY)
01061   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XRUNOFFB)
01062   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XWDRAIN)
01063   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XTAUICE)
01064   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XGAMMAT)
01065   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XDG)
01066   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XRUNOFFD)
01067   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XSOILWGHT)
01068   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XDZG)
01069   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XDZDIF)
01070   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%NWG_LAYER)
01071   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XDROOT)
01072   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XDG2)  
01073   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XPCPS)
01074   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XPLVTT)
01075   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XPLSTT)  
01076   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XC1SAT)
01077   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XC2REF)
01078   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XC3)
01079   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XC4B)
01080   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XC4REF)
01081   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XACOEF)
01082   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XPCOEF)
01083   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XWFC)
01084   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XWWILT)
01085   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XWSAT)
01086   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XBCOEF)
01087   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCONDSAT)
01088   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XMPOTSAT)
01089   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCGSAT)
01090   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XHCAPSOIL)
01091   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCONDDRY)
01092   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XCONDSLD)
01093   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XTDEEP)
01094   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XD_ICE)
01095   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XKSAT_ICE)
01096   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XABC)
01097   NULLIFY(TEB_GARDEN_PGD_MODEL(J)%XPOI)
01098 ENDDO
01099 TEB_GARDEN_PGD_MODEL(:)%CTYPE_HVEG=' '
01100 TEB_GARDEN_PGD_MODEL(:)%CTYPE_LVEG=' '
01101 TEB_GARDEN_PGD_MODEL(:)%CTYPE_NVEG=' '
01102 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_N:TEB_GARDEN_PGD_ALLOC",1,ZHOOK_HANDLE)
01103 END SUBROUTINE TEB_GARDEN_PGD_ALLOC
01104 
01105 SUBROUTINE TEB_GARDEN_PGD_DEALLO
01106 REAL(KIND=JPRB) :: ZHOOK_HANDLE
01107 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_N:TEB_GARDEN_PGD_DEALLO",0,ZHOOK_HANDLE)
01108 IF (ALLOCATED(TEB_GARDEN_PGD_MODEL)) DEALLOCATE(TEB_GARDEN_PGD_MODEL)
01109 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_N:TEB_GARDEN_PGD_DEALLO",1,ZHOOK_HANDLE)
01110 END SUBROUTINE TEB_GARDEN_PGD_DEALLO
01111 
01112 
01113 
01114 SUBROUTINE TEB_GARDEN_PGD_EVOL_GOTO_MODEL(KFROM, KTO, LKFROM, KFROM_PATCH, KTO_PATCH)
01115 LOGICAL, INTENT(IN) :: LKFROM
01116 INTEGER, INTENT(IN) :: KFROM, KTO
01117 INTEGER, INTENT(IN) :: KFROM_PATCH, KTO_PATCH
01118 REAL(KIND=JPRB) :: ZHOOK_HANDLE
01119 !
01120 ! Save current state for allocated arrays
01121 IF (LKFROM) THEN
01122 TEB_GARDEN_PGD_EVOL_MODEL(KFROM,KFROM_PATCH)%XALBNIR=>XALBNIR
01123 TEB_GARDEN_PGD_EVOL_MODEL(KFROM,KFROM_PATCH)%XALBVIS=>XALBVIS
01124 TEB_GARDEN_PGD_EVOL_MODEL(KFROM,KFROM_PATCH)%XALBUV=>XALBUV
01125 TEB_GARDEN_PGD_EVOL_MODEL(KFROM,KFROM_PATCH)%XEMIS=>XEMIS
01126 TEB_GARDEN_PGD_EVOL_MODEL(KFROM,KFROM_PATCH)%XZ0=>XZ0
01127 TEB_GARDEN_PGD_EVOL_MODEL(KFROM,KFROM_PATCH)%XVEG=>XVEG
01128 TEB_GARDEN_PGD_EVOL_MODEL(KFROM,KFROM_PATCH)%XLAI=>XLAI
01129 ENDIF
01130 !
01131 ! Current model is set to model KTO
01132 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_PGD_EVOL_N:TEB_GARDEN_PGD_EVOL_GOTO_MODEL',0,ZHOOK_HANDLE)
01133 XALBNIR=>TEB_GARDEN_PGD_EVOL_MODEL(KTO,KTO_PATCH)%XALBNIR
01134 XALBVIS=>TEB_GARDEN_PGD_EVOL_MODEL(KTO,KTO_PATCH)%XALBVIS
01135 XALBUV=>TEB_GARDEN_PGD_EVOL_MODEL(KTO,KTO_PATCH)%XALBUV
01136 XEMIS=>TEB_GARDEN_PGD_EVOL_MODEL(KTO,KTO_PATCH)%XEMIS
01137 XZ0=>TEB_GARDEN_PGD_EVOL_MODEL(KTO,KTO_PATCH)%XZ0
01138 XVEG=>TEB_GARDEN_PGD_EVOL_MODEL(KTO,KTO_PATCH)%XVEG
01139 XLAI=>TEB_GARDEN_PGD_EVOL_MODEL(KTO,KTO_PATCH)%XLAI
01140 IF (LHOOK) CALL DR_HOOK('MODD_TEB_GARDEN_PGD_EVOL_N:TEB_GARDEN_PGD_EVOL_GOTO_MODEL',1,ZHOOK_HANDLE)
01141 !
01142 END SUBROUTINE TEB_GARDEN_PGD_EVOL_GOTO_MODEL
01143 
01144 SUBROUTINE TEB_GARDEN_PGD_EVOL_ALLOC(KMODEL,KPATCH)
01145 INTEGER, INTENT(IN) :: KMODEL,KPATCH
01146 INTEGER :: J, JP
01147 REAL(KIND=JPRB) :: ZHOOK_HANDLE
01148 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_EVOL_N:TEB_GARDEN_PGD_EVOL_ALLOC",0,ZHOOK_HANDLE)
01149 ALLOCATE(TEB_GARDEN_PGD_EVOL_MODEL(KMODEL,KPATCH))
01150 DO J=1,KMODEL
01151  DO JP=1,KPATCH
01152   NULLIFY(TEB_GARDEN_PGD_EVOL_MODEL(J,JP)%XALBNIR)
01153   NULLIFY(TEB_GARDEN_PGD_EVOL_MODEL(J,JP)%XALBVIS)
01154   NULLIFY(TEB_GARDEN_PGD_EVOL_MODEL(J,JP)%XALBUV)
01155   NULLIFY(TEB_GARDEN_PGD_EVOL_MODEL(J,JP)%XEMIS)
01156   NULLIFY(TEB_GARDEN_PGD_EVOL_MODEL(J,JP)%XZ0)
01157   NULLIFY(TEB_GARDEN_PGD_EVOL_MODEL(J,JP)%XVEG)
01158   NULLIFY(TEB_GARDEN_PGD_EVOL_MODEL(J,JP)%XLAI)
01159  END DO
01160 ENDDO
01161 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_EVOL_N:TEB_GARDEN_PGD_EVOL_ALLOC",1,ZHOOK_HANDLE)
01162 END SUBROUTINE TEB_GARDEN_PGD_EVOL_ALLOC
01163 
01164 SUBROUTINE TEB_GARDEN_PGD_EVOL_DEALLO
01165 REAL(KIND=JPRB) :: ZHOOK_HANDLE
01166 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_EVOL_N:TEB_GARDEN_PGD_EVOL_DEALLO",0,ZHOOK_HANDLE)
01167 IF (ALLOCATED(TEB_GARDEN_PGD_EVOL_MODEL)) DEALLOCATE(TEB_GARDEN_PGD_EVOL_MODEL)
01168 IF (LHOOK) CALL DR_HOOK("MODD_TEB_GARDEN_PGD_EVOL_N:TEB_GARDEN_PGD_EVOL_DEALLO",1,ZHOOK_HANDLE)
01169 END SUBROUTINE TEB_GARDEN_PGD_EVOL_DEALLO
01170 
01171 
01172 
01173 END MODULE MODD_TEB_GARDEN_n