SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_teb_garden_initn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE DIAG_TEB_GARDEN_INIT_n(HPROGRAM,KLU,KSW)
00003 !     #####################
00004 !
00005 !!****  *DIAG_TEB_GARDEN_INIT_n* - routine to initialize TEB-ISBA diagnostic variables
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      V. Masson   *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    02/2003 
00031 !!      modified    11/2003 by P. LeMoigne: surface cumulated energy budget
00032 !!      modified    10/2004 by P. LeMoigne: surface miscellaneous fields
00033 !!      B. Decharme    2008    New diag for water budget and allow to reset
00034 !               cumulatives variables at the beginning of a run
00035 !-------------------------------------------------------------------------------
00036 !
00037 !*       0.    DECLARATIONS
00038 !              ------------
00039 !
00040 USE MODD_SURF_PAR,          ONLY : XUNDEF
00041 USE MODD_TEB_VEG_n,         ONLY : CHORT, CPHOTO
00042 USE MODD_TEB_GARDEN_n,      ONLY : NGROUND_LAYER, TSNOW, XABC
00043 USE MODD_TYPE_DATE_SURF
00044 USE MODD_DIAG_SURF_ATM_n,   ONLY : LREAD_BUDGETC
00045 USE MODD_DIAG_TEB_n,        ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS
00046 USE MODD_DIAG_MISC_TEB_n,   ONLY : LSURF_MISC_BUDGET  
00047 USE MODD_DIAG_TEB_GARDEN_n, ONLY : XRN, XH, XGFLUX, XLEI, XRI, XCD, XCDN, XCH, XCE, &
00048                                    XTS, XTSRAD, XFAPAR, XFAPIR, XFAPAR_BS, XFAPIR_BS, &
00049                                    XDFAPARC, XDFAPIRC, XZ0_WITH_SNOW, XZ0H_WITH_SNOW, &
00050                                    XZ0EFF, XQS, XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, &
00051                                    XFMU, XFMV, XLEG, XLEGI, XLEV, XLES, XLER, XLETR, &
00052                                    XEVAP, XDRAIN, XRUNOFF, XHORT, XDRIP, XMELT, XRRVEG, &
00053                                    XHV,  XSWI, XTSWI, XTWSNOW, XTDSNOW, XSEUIL, XGPP, &
00054                                    XRESP_AUTO, XRESP_ECO, XALBT, XEMIST, XCG, XC1, XC2, &
00055                                    XWGEQ, XCT, XRS, XHU, XHUG, XRESTORE, XUSTAR, XDLAI_EFFC, & 
00056                                    XIACAN, XSNOWTEMP, XSNOWLIQ, XSNOWDZ, XSNOWHMASS,        &
00057                                    XMELTADV, XIACAN, XIRRIG_FLUX  
00058 !
00059 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00060 USE PARKIND1  ,ONLY : JPRB
00061 !
00062 IMPLICIT NONE
00063 !
00064 !*       0.1   Declarations of arguments
00065 !              -------------------------
00066 !
00067 INTEGER, INTENT(IN)         :: KLU       ! size of arrays
00068 INTEGER, INTENT(IN)         :: KSW       ! spectral bands
00069  CHARACTER(LEN=6), INTENT(IN):: HPROGRAM  ! program calling
00070 !
00071 !*       0.2   Declarations of local variables
00072 !              -------------------------------
00073 !
00074 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00075  CHARACTER(LEN=12) :: YREC           ! Name of the article to be read
00076 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00077 !
00078 !-------------------------------------------------------------------------------
00079 !
00080 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GARDEN_INIT_N',0,ZHOOK_HANDLE)
00081 !
00082 ALLOCATE(XRI     (KLU)) 
00083 !
00084 XRI         = XUNDEF
00085 !
00086 ALLOCATE(XCD     (KLU)) 
00087 ALLOCATE(XCH     (KLU)) 
00088 ALLOCATE(XRN     (KLU)) 
00089 ALLOCATE(XH      (KLU)) 
00090 ALLOCATE(XGFLUX  (KLU)) 
00091 ALLOCATE(XQS     (KLU)) 
00092 !
00093 XCD         = XUNDEF
00094 XCH         = XUNDEF
00095 XRN         = XUNDEF
00096 XH          = XUNDEF
00097 XGFLUX      = XUNDEF
00098 XQS         = XUNDEF
00099 !
00100 ALLOCATE(XLEI    (KLU)) 
00101 ALLOCATE(XLEG    (KLU)) 
00102 ALLOCATE(XLEGI   (KLU)) 
00103 ALLOCATE(XLEV    (KLU)) 
00104 ALLOCATE(XLES    (KLU)) 
00105 ALLOCATE(XLER    (KLU)) 
00106 ALLOCATE(XLETR   (KLU)) 
00107 ALLOCATE(XEVAP   (KLU)) 
00108 ALLOCATE(XDRAIN  (KLU)) 
00109 ALLOCATE(XRUNOFF (KLU)) 
00110 ALLOCATE(XHORT   (KLU)) 
00111 ALLOCATE(XDRIP   (KLU)) 
00112 ALLOCATE(XRRVEG  (KLU)) 
00113 ALLOCATE(XMELT   (KLU)) 
00114 ALLOCATE(XIRRIG_FLUX(KLU))
00115 !
00116 XLEI        = XUNDEF
00117 XLEG        = XUNDEF
00118 XLEGI       = XUNDEF
00119 XLEV        = XUNDEF
00120 XLES        = XUNDEF
00121 XLER        = XUNDEF
00122 XLETR       = XUNDEF
00123 XEVAP       = XUNDEF
00124 XDRAIN      = XUNDEF
00125 XRUNOFF     = XUNDEF
00126 XHORT       = XUNDEF
00127 XDRIP       = XUNDEF
00128 XRRVEG      = XUNDEF
00129 XMELT       = XUNDEF
00130 XIRRIG_FLUX = XUNDEF
00131 !
00132 ALLOCATE(XCG     (KLU)) 
00133 ALLOCATE(XC1     (KLU)) 
00134 ALLOCATE(XC2     (KLU)) 
00135 ALLOCATE(XWGEQ   (KLU)) 
00136 ALLOCATE(XCT     (KLU)) 
00137 ALLOCATE(XRS     (KLU)) 
00138 ALLOCATE(XCDN    (KLU)) 
00139 ALLOCATE(XHU     (KLU)) 
00140 ALLOCATE(XHUG    (KLU)) 
00141 ALLOCATE(XRESTORE(KLU)) 
00142 ALLOCATE(XUSTAR  (KLU)) 
00143 IF (CPHOTO/='NON') THEN
00144   ALLOCATE(XIACAN  (KLU,SIZE(XABC)          ))
00145 ELSE
00146   ALLOCATE(XIACAN  (0,0))
00147 END IF
00148 !
00149 XCG         = XUNDEF
00150 XC1         = XUNDEF
00151 XC2         = XUNDEF
00152 XWGEQ       = XUNDEF
00153 XCT         = XUNDEF
00154 XRS         = XUNDEF
00155 XCDN        = XUNDEF
00156 XHU         = XUNDEF
00157 XHUG        = XUNDEF
00158 XRESTORE    = XUNDEF
00159 XUSTAR      = XUNDEF
00160 IF (CPHOTO/='NON') THEN
00161   XIACAN    = XUNDEF
00162 END IF
00163 !
00164 ALLOCATE(XSNOWTEMP(KLU,TSNOW%NLAYER        )) 
00165 ALLOCATE(XSNOWLIQ (KLU,TSNOW%NLAYER        )) 
00166 ALLOCATE(XSNOWDZ  (KLU,TSNOW%NLAYER        )) 
00167 ALLOCATE(XSNOWHMASS(KLU)) 
00168 ALLOCATE(XMELTADV  (KLU)) 
00169 !
00170 XSNOWTEMP   = XUNDEF
00171 XSNOWLIQ    = XUNDEF
00172 XSNOWDZ     = XUNDEF
00173 XSNOWHMASS  = XUNDEF
00174 XMELTADV    = XUNDEF
00175 !
00176 ALLOCATE(XHV     (KLU))
00177 ALLOCATE(XALBT   (KLU)) 
00178 ALLOCATE(XEMIST  (KLU)) 
00179 !
00180 XHV               = XUNDEF
00181 XALBT             = XUNDEF
00182 XEMIST            = XUNDEF
00183 !
00184 ALLOCATE(XFAPAR    (KLU))
00185 ALLOCATE(XFAPIR    (KLU))
00186 ALLOCATE(XFAPAR_BS (KLU))
00187 ALLOCATE(XFAPIR_BS (KLU))
00188 ALLOCATE(XDFAPARC  (KLU))
00189 ALLOCATE(XDFAPIRC  (KLU))
00190 ALLOCATE(XDLAI_EFFC(KLU))
00191 !
00192 XFAPAR     = XUNDEF
00193 XFAPIR     = XUNDEF
00194 XFAPAR_BS  = XUNDEF
00195 XFAPIR_BS  = XUNDEF
00196 XDFAPARC   = XUNDEF
00197 XDFAPIRC   = XUNDEF
00198 XDLAI_EFFC = XUNDEF
00199 !
00200 !* surface energy budget
00201 !
00202 !IF (LSURF_BUDGET) THEN
00203   !
00204   ALLOCATE(XSWD      (KLU))
00205   ALLOCATE(XSWU      (KLU))
00206   ALLOCATE(XSWBD     (KLU,KSW))
00207   ALLOCATE(XSWBU     (KLU,KSW))
00208   ALLOCATE(XLWD      (KLU))
00209   ALLOCATE(XLWU      (KLU))
00210   ALLOCATE(XFMU      (KLU))
00211   ALLOCATE(XFMV      (KLU))
00212   !
00213   XSWD     = XUNDEF
00214   XSWU     = XUNDEF
00215   XSWBD    = XUNDEF
00216   XSWBU    = XUNDEF
00217   XLWD     = XUNDEF
00218   XLWU     = XUNDEF
00219   XFMU     = XUNDEF
00220   XFMV     = XUNDEF
00221   !
00222 !END IF
00223 !
00224 !* surface temperature and parameters at 2m
00225 !
00226 ALLOCATE(XTS    (KLU))
00227 XTS     = XUNDEF
00228 ALLOCATE(XTSRAD (KLU))
00229 XTSRAD  = XUNDEF
00230 !
00231 !* miscellaneous surface fields
00232 !
00233 IF (LSURF_MISC_BUDGET) THEN
00234   ALLOCATE(XSWI    (KLU,NGROUND_LAYER))
00235   ALLOCATE(XTSWI   (KLU,NGROUND_LAYER))
00236   ALLOCATE(XTWSNOW (KLU))
00237   ALLOCATE(XTDSNOW (KLU))
00238   XSWI     = XUNDEF
00239   XTSWI    = XUNDEF
00240   XTWSNOW  = XUNDEF
00241   XTDSNOW  = XUNDEF
00242 ELSE
00243   ALLOCATE(XSWI    (0,0))
00244   ALLOCATE(XTSWI   (0,0))
00245   ALLOCATE(XTWSNOW (0))
00246   ALLOCATE(XTDSNOW (0))
00247 ENDIF
00248 !
00249 ALLOCATE(XALBT   (KLU))
00250 ALLOCATE(XGPP    (KLU))
00251 ALLOCATE(XRESP_AUTO  (KLU))
00252 ALLOCATE(XRESP_ECO   (KLU))
00253 !
00254 XALBT    = XUNDEF
00255 XGPP     = XUNDEF
00256 XRESP_AUTO   = XUNDEF
00257 XRESP_ECO    = XUNDEF  
00258 !
00259 !END IF
00260 !
00261 !* transfer coefficients
00262 !
00263 !IF (LCOEF) THEN
00264   !
00265   ALLOCATE(XCE            (KLU))
00266   ALLOCATE(XZ0_WITH_SNOW  (KLU))
00267   ALLOCATE(XZ0H_WITH_SNOW (KLU))
00268   ALLOCATE(XZ0EFF         (KLU))
00269   !
00270   XCE            = XUNDEF
00271   XZ0_WITH_SNOW  = XUNDEF
00272   XZ0H_WITH_SNOW = XUNDEF
00273   XZ0EFF         = XUNDEF
00274 !END IF
00275 !
00276 !
00277 !* surface humidity
00278 !
00279 !IF (LSURF_VARS) THEN
00280   ALLOCATE(XQS            (KLU))
00281   !
00282   XQS            = XUNDEF
00283 !END IF
00284 !
00285 !* Irrigation threshold
00286 !
00287 !IF (LAGRIP) THEN
00288   ALLOCATE(XSEUIL(KLU))
00289   !
00290   XSEUIL         = XUNDEF
00291 !END IF
00292 !
00293 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GARDEN_INIT_N',1,ZHOOK_HANDLE)
00294 !
00295 !-------------------------------------------------------------------------------
00296 !
00297 END SUBROUTINE DIAG_TEB_GARDEN_INIT_n