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