SURFEX v7.3
General documentation of Surfex
|
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