SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_teb_initn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE DIAG_TEB_INIT_n(HPROGRAM,KLU,KSW)
00003 !     #####################
00004 !
00005 !!****  *DIAG_TEB_INIT_n* - routine to initialize TEB 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    01/2004 
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 !
00036 USE MODD_SURF_PAR,   ONLY : XUNDEF
00037 USE MODD_TYPE_DATE_SURF
00038 USE MODD_TEB_n,      ONLY : CBEM
00039 USE MODD_DIAG_TEB_n, ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS, &
00040                               XRN, XH, XLE, XGFLUX, XRI,            &
00041                               XCD, XCH, XCE, XZ0, XZ0H,             &
00042                               XT2M, XQ2M, XHU2M,                    &
00043                               XZON10M, XMER10M, XSFCO2, XQS,        &
00044                               XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, &
00045                               XFMU, XFMV  
00046 !
00047 USE MODD_DIAG_UTCI_TEB_n,   ONLY : XUTCI_OUTSUN, XUTCI_OUTSHADE, XTRAD_SUN, &
00048                                    XTRAD_SHADE, XUTCI_IN, LUTCI
00049 
00050 !
00051 USE MODI_READ_SURF
00052 !
00053 !
00054 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00055 USE PARKIND1  ,ONLY : JPRB
00056 !
00057 IMPLICIT NONE
00058 !
00059 !*       0.1   Declarations of arguments
00060 !              -------------------------
00061 !
00062 INTEGER, INTENT(IN) :: KLU   ! size of arrays
00063 INTEGER, INTENT(IN) :: KSW   ! spectral bands
00064  CHARACTER(LEN=6), INTENT(IN):: HPROGRAM  ! program calling
00065 !
00066 !*       0.2   Declarations of local variables
00067 !              -------------------------------
00068 !
00069 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00070  CHARACTER(LEN=12) :: YREC           ! Name of the article to be read
00071 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00072 !
00073 !-------------------------------------------------------------------------------
00074 !
00075 !* surface energy budget
00076 !
00077 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_INIT_N',0,ZHOOK_HANDLE)
00078 IF (LSURF_BUDGET) THEN
00079   ALLOCATE(XRN     (KLU))
00080   ALLOCATE(XH      (KLU))
00081   ALLOCATE(XLE     (KLU))
00082   ALLOCATE(XGFLUX  (KLU))
00083   ALLOCATE(XSWD    (KLU))
00084   ALLOCATE(XSWU    (KLU))
00085   ALLOCATE(XSWBD   (KLU,KSW))
00086   ALLOCATE(XSWBU   (KLU,KSW))
00087   ALLOCATE(XLWD    (KLU))
00088   ALLOCATE(XLWU    (KLU))
00089   ALLOCATE(XFMU    (KLU))
00090   ALLOCATE(XFMV    (KLU))
00091   ALLOCATE(XSFCO2  (KLU))
00092   !
00093   XRN      = XUNDEF
00094   XH       = XUNDEF
00095   XLE      = XUNDEF
00096   XGFLUX   = XUNDEF
00097   XSWD     = XUNDEF
00098   XSWU     = XUNDEF
00099   XSWBD    = XUNDEF
00100   XSWBU    = XUNDEF
00101   XLWD     = XUNDEF
00102   XLWU     = XUNDEF
00103   XFMU     = XUNDEF
00104   XFMV     = XUNDEF
00105   XSFCO2   = XUNDEF
00106 ELSE
00107   ALLOCATE(XRN     (0))
00108   ALLOCATE(XH      (0))
00109   ALLOCATE(XLE     (0))
00110   ALLOCATE(XGFLUX  (0))
00111   ALLOCATE(XSWD    (0))
00112   ALLOCATE(XSWU    (0))
00113   ALLOCATE(XSWBD   (0,0))
00114   ALLOCATE(XSWBU   (0,0))  
00115   ALLOCATE(XLWD    (0))
00116   ALLOCATE(XLWU    (0))
00117   ALLOCATE(XFMU    (0))
00118   ALLOCATE(XFMV    (0))
00119   ALLOCATE(XSFCO2  (0))
00120 END IF
00121 !
00122 !* parameters at 2m
00123 !
00124 IF (N2M>=1) THEN
00125   ALLOCATE(XRI     (KLU))
00126   ALLOCATE(XT2M    (KLU))
00127   ALLOCATE(XQ2M    (KLU))
00128   ALLOCATE(XHU2M   (KLU))
00129   ALLOCATE(XZON10M (KLU))
00130   ALLOCATE(XMER10M (KLU))
00131   !
00132   XRI      = XUNDEF
00133   XT2M     = XUNDEF
00134   XQ2M     = XUNDEF
00135   XHU2M    = XUNDEF
00136   XZON10M  = XUNDEF
00137   XMER10M  = XUNDEF
00138 ELSE
00139   ALLOCATE(XRI      (0))
00140   ALLOCATE(XT2M     (0))
00141   ALLOCATE(XQ2M     (0))
00142   ALLOCATE(XHU2M    (0))
00143   ALLOCATE(XZON10M  (0))
00144   ALLOCATE(XMER10M  (0))  
00145 END IF
00146 !!
00147 !* miscellaneous fields
00148 !
00149 IF (N2M>0 .AND. LUTCI) THEN
00150   !
00151   ALLOCATE(XUTCI_IN       (KLU))
00152   ALLOCATE(XUTCI_OUTSUN   (KLU))
00153   ALLOCATE(XUTCI_OUTSHADE (KLU))
00154   ALLOCATE(XTRAD_SUN      (KLU))
00155   ALLOCATE(XTRAD_SHADE    (KLU))
00156   !
00157   XUTCI_IN        = XUNDEF
00158   XUTCI_OUTSUN    = XUNDEF
00159   XUTCI_OUTSHADE  = XUNDEF
00160   XTRAD_SUN       = XUNDEF
00161   XTRAD_SHADE     = XUNDEF
00162   !  
00163 ELSE
00164   ALLOCATE(XUTCI_IN       (0))
00165   ALLOCATE(XUTCI_OUTSUN   (0))
00166   ALLOCATE(XUTCI_OUTSHADE (0))
00167   ALLOCATE(XTRAD_SUN      (0))
00168   ALLOCATE(XTRAD_SHADE    (0))        
00169 ENDIF
00170 !
00171 !* transfer coefficients
00172 !
00173 IF (LCOEF) THEN
00174   ALLOCATE(XCD     (KLU))
00175   ALLOCATE(XCH     (KLU))
00176   ALLOCATE(XCE     (KLU))
00177   ALLOCATE(XZ0     (KLU))
00178   ALLOCATE(XZ0H    (KLU))
00179   !
00180   XCD      = XUNDEF
00181   XCH      = XUNDEF
00182   XCE      = XUNDEF
00183   XZ0      = XUNDEF
00184   XZ0H     = XUNDEF
00185 ELSE
00186   ALLOCATE(XCD     (0))
00187   ALLOCATE(XCH     (0))
00188   ALLOCATE(XCE     (0))
00189   ALLOCATE(XZ0     (0))
00190   ALLOCATE(XZ0H    (0))
00191 END IF
00192 !
00193 !
00194 !* surface humidity
00195 !
00196 IF (LSURF_VARS) THEN
00197   ALLOCATE(XQS     (KLU))
00198   !
00199   XQS      = XUNDEF
00200 ELSE
00201   ALLOCATE(XQS     (0))  
00202 END IF
00203 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_INIT_N',1,ZHOOK_HANDLE)
00204 !
00205 !-------------------------------------------------------------------------------
00206 !
00207 END SUBROUTINE DIAG_TEB_INIT_n