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