SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_ideal_initn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE DIAG_IDEAL_INIT_n(KLU,KSW)
00003 !     #####################
00004 !
00005 !!****  *DIAG_IDEAL_INIT_n* - routine to initialize IDEAL 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 !!      P. Le Moigne   *Meteo France*   
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    04/2009 
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 !
00036 USE MODD_SURF_PAR,   ONLY : XUNDEF
00037 USE MODD_DIAG_IDEAL_n, ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS, &
00038                               XRN, XH, XLE, XGFLUX, XRI,            &
00039                               XCD, XCH, XCE, XZ0, XZ0H,             &
00040                               XT2M, XQ2M, XHU2M,                    &
00041                               XZON10M, XMER10M, XQS,                &
00042                               XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, &
00043                               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   ! 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_IDEAL_INIT_N',0,ZHOOK_HANDLE)
00066 IF (LSURF_BUDGET) THEN
00067   ALLOCATE(XRN     (KLU))
00068   ALLOCATE(XH      (KLU))
00069   ALLOCATE(XLE     (KLU))
00070   ALLOCATE(XGFLUX  (KLU))
00071   ALLOCATE(XSWD    (KLU))
00072   ALLOCATE(XSWU    (KLU))
00073   ALLOCATE(XSWBD   (KLU,KSW))
00074   ALLOCATE(XSWBU   (KLU,KSW))
00075   ALLOCATE(XLWD    (KLU))
00076   ALLOCATE(XLWU    (KLU))
00077   ALLOCATE(XFMU    (KLU))
00078   ALLOCATE(XFMV    (KLU))
00079   !
00080   XRN      = XUNDEF
00081   XH       = XUNDEF
00082   XLE      = XUNDEF
00083   XGFLUX   = XUNDEF
00084   XSWD     = XUNDEF
00085   XSWU     = XUNDEF
00086   XSWBD    = XUNDEF
00087   XSWBU    = XUNDEF
00088   XLWD     = XUNDEF
00089   XLWU     = XUNDEF
00090   XFMU     = XUNDEF
00091   XFMV     = XUNDEF
00092 ELSE
00093   ALLOCATE(XRN     (0))
00094   ALLOCATE(XH      (0))
00095   ALLOCATE(XLE     (0))
00096   ALLOCATE(XGFLUX  (0))
00097   ALLOCATE(XSWD    (0))
00098   ALLOCATE(XSWU    (0))
00099   ALLOCATE(XLWD    (0))
00100   ALLOCATE(XLWU    (0))
00101   ALLOCATE(XSWBD   (0,0))
00102   ALLOCATE(XSWBU   (0,0))
00103   ALLOCATE(XFMU    (0))
00104   ALLOCATE(XFMV    (0))
00105 END IF
00106 !
00107 !* parameters at 2m
00108 !
00109 IF (N2M>=1) THEN
00110   ALLOCATE(XRI     (KLU))
00111   ALLOCATE(XT2M    (KLU))
00112   ALLOCATE(XQ2M    (KLU))
00113   ALLOCATE(XHU2M   (KLU))
00114   ALLOCATE(XZON10M (KLU))
00115   ALLOCATE(XMER10M (KLU))
00116   !
00117   XRI      = XUNDEF
00118   XT2M     = XUNDEF
00119   XQ2M     = XUNDEF
00120   XHU2M    = XUNDEF
00121   XZON10M  = XUNDEF
00122   XMER10M  = XUNDEF
00123 ELSE
00124   ALLOCATE(XRI     (0))
00125   ALLOCATE(XT2M    (0))
00126   ALLOCATE(XQ2M    (0))
00127   ALLOCATE(XHU2M   (0))
00128   ALLOCATE(XZON10M (0))
00129   ALLOCATE(XMER10M (0))
00130 END IF
00131 !
00132 !* transfer coefficients
00133 !
00134 IF (LCOEF) THEN
00135   ALLOCATE(XCD     (KLU))
00136   ALLOCATE(XCH     (KLU))
00137   ALLOCATE(XCE     (KLU))
00138   ALLOCATE(XZ0     (KLU))
00139   ALLOCATE(XZ0H    (KLU))
00140   !
00141   XCD      = XUNDEF
00142   XCH      = XUNDEF
00143   XCE      = XUNDEF
00144   XZ0      = XUNDEF
00145   XZ0H     = XUNDEF
00146 ELSE
00147   ALLOCATE(XCD     (0))
00148   ALLOCATE(XCH     (0))
00149   ALLOCATE(XCE     (0))
00150   ALLOCATE(XZ0     (0))
00151   ALLOCATE(XZ0H    (0))
00152 END IF
00153 !
00154 !
00155 !* surface humidity
00156 !
00157 IF (LSURF_VARS) THEN
00158   ALLOCATE(XQS     (KLU))
00159   !
00160   XQS      = XUNDEF
00161 ELSE
00162   ALLOCATE(XQS     (0))
00163 END IF
00164 IF (LHOOK) CALL DR_HOOK('DIAG_IDEAL_INIT_N',1,ZHOOK_HANDLE)
00165 !
00166 !-------------------------------------------------------------------------------
00167 !
00168 END SUBROUTINE DIAG_IDEAL_INIT_n