SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_flake_initn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE DIAG_FLAKE_INIT_n(KLU,KSW)
00003 !     #####################
00004 !
00005 !!****  *DIAG_FLAKE_INIT_n* - routine to initialize FLAKE 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_DIAG_FLAKE_n, ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS,   &
00038                                   XRN, XH, XLE, XLEI, XGFLUX, XRI,      &
00039                                   XCD, XCH, XCE, XZ0, XZ0H,             &
00040                                   XT2M, XQ2M, XHU2M,                    &
00041                                   XZON10M, XMER10M, XQS,                &
00042                                   XSWD, XSWU, XLWD, XLWU,               &
00043                                   XSWBD, XSWBU, XFMU, XFMV  
00044 !
00045 !
00046 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00047 USE PARKIND1  ,ONLY : JPRB
00048 !
00049 IMPLICIT NONE
00050 !
00051 !*       0.1   Declarations of arguments
00052 !              -------------------------
00053 !
00054 INTEGER, INTENT(IN) :: KLU   ! size of arrays
00055 INTEGER, INTENT(IN) :: KSW   ! number of SW spectral bands
00056 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00057 !
00058 !*       0.2   Declarations of local variables
00059 !              -------------------------------
00060 !
00061 !-------------------------------------------------------------------------------
00062 !
00063 !* surface energy budget
00064 !
00065 IF (LHOOK) CALL DR_HOOK('DIAG_FLAKE_INIT_N',0,ZHOOK_HANDLE)
00066 IF (LSURF_BUDGET) THEN
00067   ALLOCATE(XRN     (KLU))
00068   ALLOCATE(XH      (KLU))
00069   ALLOCATE(XLE     (KLU))
00070   ALLOCATE(XLEI    (KLU))
00071   ALLOCATE(XGFLUX  (KLU))
00072   ALLOCATE(XSWD    (KLU))
00073   ALLOCATE(XSWU    (KLU))
00074   ALLOCATE(XLWD    (KLU))
00075   ALLOCATE(XLWU    (KLU))
00076   ALLOCATE(XSWBD   (KLU,KSW))
00077   ALLOCATE(XSWBU   (KLU,KSW))
00078   ALLOCATE(XFMU    (KLU))
00079   ALLOCATE(XFMV    (KLU))
00080   !
00081   XRN      = XUNDEF
00082   XH       = XUNDEF
00083   XLE      = XUNDEF
00084   XLEI     = XUNDEF
00085   XGFLUX   = XUNDEF
00086   XSWD     = XUNDEF
00087   XSWU     = XUNDEF
00088   XLWD     = XUNDEF
00089   XLWU     = XUNDEF
00090   XSWBD    = XUNDEF
00091   XSWBU    = XUNDEF
00092   XFMU     = XUNDEF
00093   XFMV     = XUNDEF
00094 ELSE
00095   ALLOCATE(XRN     (0))
00096   ALLOCATE(XH      (0))
00097   ALLOCATE(XLE     (0))
00098   ALLOCATE(XLEI    (0))
00099   ALLOCATE(XGFLUX  (0))
00100   ALLOCATE(XSWD    (0))
00101   ALLOCATE(XSWU    (0))
00102   ALLOCATE(XLWD    (0))
00103   ALLOCATE(XLWU    (0))
00104   ALLOCATE(XSWBD   (0,0))
00105   ALLOCATE(XSWBU   (0,0))
00106   ALLOCATE(XFMU    (0))
00107   ALLOCATE(XFMV    (0))
00108 ENDIF
00109 !
00110 !* parameters at 2m
00111 !
00112 IF (N2M>=1) THEN
00113   ALLOCATE(XRI     (KLU))
00114   ALLOCATE(XT2M    (KLU))
00115   ALLOCATE(XQ2M    (KLU))
00116   ALLOCATE(XHU2M   (KLU))
00117   ALLOCATE(XZON10M (KLU))
00118   ALLOCATE(XMER10M (KLU))
00119   !
00120   XRI      = XUNDEF
00121   XT2M     = XUNDEF
00122   XQ2M     = XUNDEF
00123   XHU2M    = XUNDEF
00124   XZON10M  = XUNDEF
00125   XMER10M  = XUNDEF
00126 ELSE
00127   ALLOCATE(XRI     (0))
00128   ALLOCATE(XT2M    (0))
00129   ALLOCATE(XQ2M    (0))
00130   ALLOCATE(XHU2M   (0))
00131   ALLOCATE(XZON10M (0))
00132   ALLOCATE(XMER10M (0))
00133 END IF
00134 !
00135 !* transfer coefficients
00136 !
00137 IF (LCOEF) THEN
00138   ALLOCATE(XCD     (KLU))
00139   ALLOCATE(XCH     (KLU))
00140   ALLOCATE(XCE     (KLU))
00141   ALLOCATE(XZ0     (KLU))
00142   ALLOCATE(XZ0H    (KLU))
00143   !
00144   XCD      = XUNDEF
00145   XCH      = XUNDEF
00146   XCE      = XUNDEF
00147   XZ0      = XUNDEF
00148   XZ0H     = XUNDEF
00149 ELSE
00150   ALLOCATE(XCD     (0))
00151   ALLOCATE(XCH     (0))
00152   ALLOCATE(XCE     (0))
00153   ALLOCATE(XZ0     (0))
00154   ALLOCATE(XZ0H    (0))
00155 END IF
00156 !
00157 !
00158 !* surface humidity
00159 !
00160 IF (LSURF_VARS) THEN
00161   ALLOCATE(XQS     (KLU))
00162   !
00163   XQS      = XUNDEF
00164 ELSE
00165   ALLOCATE(XQS     (0))
00166 END IF
00167 IF (LHOOK) CALL DR_HOOK('DIAG_FLAKE_INIT_N',1,ZHOOK_HANDLE)
00168 !
00169 !-------------------------------------------------------------------------------
00170 !
00171 END SUBROUTINE DIAG_FLAKE_INIT_n