SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_teb_greenroof_initn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE DIAG_TEB_GREENROOF_INIT_n(HPROGRAM,KLU,KSW)
00003 !     #####################
00004 !
00005 !!****  *DIAG_TEB_GREENROOF_INIT_n* - routine to initialize TEB-ISBA diagnostic variables
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!    Based on diag_teb_garden_initn
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!      V. Masson   *Meteo France*      
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original                  02/2003 
00032 !!      modified                  11/2003  by P. LeMoigne: surface cumulated energy budget
00033 !!      modified                  10/2004  by P. LeMoigne: surface miscellaneous fields
00034 !!      B. Decharme               2008     New diag for water budget and allow to reset
00035 !!                                         cumulatives variables at the beginning of a run
00036 !       C. de Munck & A. Lemonsu  09/2011  Greenroofs
00037 !-------------------------------------------------------------------------------
00038 !
00039 !*       0.    DECLARATIONS
00040 !              ------------
00041 !
00042 USE MODD_SURF_PAR,             ONLY : XUNDEF
00043 USE MODD_TEB_VEG_n,            ONLY : CPHOTO, CHORT
00044 USE MODD_TEB_GREENROOF_n,      ONLY : NLAYER_GR
00045 USE MODD_TYPE_DATE_SURF
00046 USE MODD_DIAG_SURF_ATM_n,      ONLY : LREAD_BUDGETC
00047 USE MODD_DIAG_TEB_n,           ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS
00048 USE MODD_DIAG_MISC_TEB_n,      ONLY : LSURF_EVAP_BUDGET, LSURF_MISC_BUDGET  
00049 USE MODD_DIAG_TEB_GREENROOF_n, ONLY : XRN, XH, XGFLUX, XLEI, XRI, XCD, XCDN, XCH, XCE, &
00050                                       XTS, XTSRAD,                                     &
00051                                       XZ0_WITH_SNOW, XZ0H_WITH_SNOW, XZ0EFF, XQS,      &
00052                                       XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, XFMU, XFMV,&
00053                                       XLEG, XLEGI, XLEV, XLES, XLER, XLETR, XEVAP,     &
00054                                       XDRAIN, XRUNOFF, XHORT, XDRIP, XMELT,            &
00055                                       XRRVEG, XHV,  XSWI, XTSWI, XTWSNOW,              &
00056                                       XTDSNOW, XSEUIL, XGPP, XRESP_AUTO, XRESP_ECO,    &
00057                                       XALBT, XEMIST, XALBT,                            &
00058                                       XCG, XC1, XC2, XWGEQ, XCT, XRS, XHU, XHUG,       &
00059                                       XRESTORE, XUSTAR,                                &
00060                                       XSNOWTEMP, XSNOWLIQ, XSNOWDZ, XSNOWHMASS,        &
00061                                       XMELTADV, XIACAN  
00062 !
00063 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00064 USE PARKIND1  ,ONLY : JPRB
00065 !
00066 IMPLICIT NONE
00067 !
00068 !*       0.1   Declarations of arguments
00069 !              -------------------------
00070 !
00071 INTEGER, INTENT(IN)         :: KLU       ! size of arrays
00072 INTEGER, INTENT(IN)         :: KSW       ! spectral bands
00073  CHARACTER(LEN=6), INTENT(IN):: HPROGRAM  ! program calling
00074 !
00075 !*       0.2   Declarations of local variables
00076 !              -------------------------------
00077 !
00078 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00079  CHARACTER(LEN=12) :: YREC           ! Name of the article to be read
00080 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00081 !
00082 !-------------------------------------------------------------------------------
00083 !
00084 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GREENROOF_INIT_N',0,ZHOOK_HANDLE)
00085 XCG         = XUNDEF
00086 XC1         = XUNDEF
00087 XC2         = XUNDEF
00088 XWGEQ       = XUNDEF
00089 XCT         = XUNDEF
00090 XRS         = XUNDEF
00091 XHU         = XUNDEF
00092 XHUG        = XUNDEF
00093 XHV         = XUNDEF
00094 XRESTORE    = XUNDEF
00095 XRI         = XUNDEF
00096 XUSTAR      = XUNDEF
00097 XRN         = XUNDEF
00098 XH          = XUNDEF
00099 XGFLUX      = XUNDEF
00100 XSNOWTEMP   = XUNDEF
00101 XSNOWLIQ    = XUNDEF
00102 XSNOWDZ     = XUNDEF
00103 XSNOWHMASS  = XUNDEF
00104 XMELTADV    = XUNDEF
00105 IF (CPHOTO/='NON') THEN
00106   XIACAN    = XUNDEF
00107 END IF
00108 XCD         = XUNDEF
00109 XCDN        = XUNDEF
00110 XCH         = XUNDEF
00111 XQS         = XUNDEF
00112 XLEI        = XUNDEF
00113 XLEG        = XUNDEF
00114 XLEGI       = XUNDEF
00115 XLEV        = XUNDEF
00116 XLES        = XUNDEF
00117 XLER        = XUNDEF
00118 XLETR       = XUNDEF
00119 XEVAP       = XUNDEF
00120 XDRAIN      = XUNDEF
00121 XRUNOFF     = XUNDEF
00122 XHORT       = XUNDEF
00123 XDRIP       = XUNDEF
00124 XRRVEG      = XUNDEF
00125 XMELT       = XUNDEF
00126 XALBT       = XUNDEF
00127 XEMIST      = XUNDEF
00128 !
00129 !* surface energy budget
00130 !
00131 !IF (LSURF_BUDGET) THEN
00132   !
00133   ALLOCATE(XSWD      (KLU))
00134   ALLOCATE(XSWU      (KLU))
00135   ALLOCATE(XSWBD     (KLU,KSW))
00136   ALLOCATE(XSWBU     (KLU,KSW))
00137   ALLOCATE(XLWD      (KLU))
00138   ALLOCATE(XLWU      (KLU))
00139   ALLOCATE(XFMU      (KLU))
00140   ALLOCATE(XFMV      (KLU))
00141   !
00142   XSWD     = XUNDEF
00143   XSWU     = XUNDEF
00144   XSWBD    = XUNDEF
00145   XSWBU    = XUNDEF
00146   XLWD     = XUNDEF
00147   XLWU     = XUNDEF
00148   XFMU     = XUNDEF
00149   XFMV     = XUNDEF
00150   !
00151 !END IF
00152 !
00153 !* surface temperature and parameters at 2m
00154 !
00155 ALLOCATE(XTS    (KLU))
00156 XTS     = XUNDEF
00157 ALLOCATE(XTSRAD (KLU))
00158 XTSRAD  = XUNDEF
00159 !
00160 !* miscellaneous surface fields
00161 !
00162 IF (LSURF_MISC_BUDGET) THEN
00163   !
00164   ALLOCATE(XSWI    (KLU,NLAYER_GR))
00165   ALLOCATE(XTSWI   (KLU,NLAYER_GR))
00166   ALLOCATE(XTWSNOW (KLU))
00167   ALLOCATE(XTDSNOW (KLU))
00168   XSWI     = XUNDEF
00169   XTSWI    = XUNDEF
00170   XTWSNOW  = XUNDEF
00171   XTDSNOW  = XUNDEF
00172 ENDIF
00173 
00174 
00175   ALLOCATE(XALBT   (KLU))
00176   ALLOCATE(XGPP    (KLU))
00177   ALLOCATE(XRESP_AUTO  (KLU))
00178   ALLOCATE(XRESP_ECO   (KLU))
00179   !
00180   XALBT    = XUNDEF
00181   XGPP     = XUNDEF
00182   XRESP_AUTO   = XUNDEF
00183   XRESP_ECO    = XUNDEF  
00184   !
00185 !END IF
00186 !
00187 !* transfer coefficients
00188 !
00189 !IF (LCOEF) THEN
00190   !
00191   ALLOCATE(XCE            (KLU))
00192   ALLOCATE(XZ0_WITH_SNOW  (KLU))
00193   ALLOCATE(XZ0H_WITH_SNOW (KLU))
00194   ALLOCATE(XZ0EFF         (KLU))
00195   !
00196   XCE            = XUNDEF
00197   XZ0_WITH_SNOW  = XUNDEF
00198   XZ0H_WITH_SNOW = XUNDEF
00199   XZ0EFF         = XUNDEF
00200 !END IF
00201 !
00202 !
00203 !* surface humidity
00204 !
00205 !IF (LSURF_VARS) THEN
00206   ALLOCATE(XQS            (KLU))
00207   !
00208   XQS            = XUNDEF
00209 !END IF
00210 !
00211 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GREENROOF_INIT_N',1,ZHOOK_HANDLE)
00212 !
00213 !
00214 !-------------------------------------------------------------------------------
00215 !
00216 END SUBROUTINE DIAG_TEB_GREENROOF_INIT_n