SURFEX v7.3
General documentation of Surfex
|
00001 ! ###################### 00002 MODULE MODD_DIAG_WATFLUX_n 00003 ! ###################### 00004 ! 00005 !!**** *MODD_DIAG_WATFLUX - declaration of diagnostics for WATFLUX scheme 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 !! 00011 !!** IMPLICIT ARGUMENTS 00012 !! ------------------ 00013 !! None 00014 !! 00015 !! REFERENCE 00016 !! --------- 00017 !! 00018 !! AUTHOR 00019 !! ------ 00020 !! V. Masson *Meteo France* 00021 !! 00022 !! MODIFICATIONS 00023 !! ------------- 00024 !! Original 01/2004 00025 !! Modified 01/2006 : sea flux parameterization. 00026 ! 00027 !* 0. DECLARATIONS 00028 ! ------------ 00029 ! 00030 ! 00031 ! 00032 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00033 USE PARKIND1 ,ONLY : JPRB 00034 ! 00035 IMPLICIT NONE 00036 00037 TYPE DIAG_WATFLUX_t 00038 !------------------------------------------------------------------------------ 00039 ! 00040 REAL :: XDIAG_TSTEP ! time step for diagnostics writing 00041 ! 00042 INTEGER :: N2M ! flag for 2 meters (and 10 meters) quantities 00043 LOGICAL :: L2M_MIN_ZS ! flag for 2 meters quantities evaluated on 00044 ! ! the minimum orographyy of the grid 00045 LOGICAL :: LSURF_BUDGET ! flag for surface energy budget 00046 LOGICAL :: LRAD_BUDGET ! flag for radiative energy budget 00047 LOGICAL :: LCOEF ! flag for transfer coefficients 00048 LOGICAL :: LSURF_VARS ! flag for surface variables 00049 LOGICAL :: LSURF_BUDGETC ! flag for surface cumulated energy budget 00050 LOGICAL :: LRESET_BUDGETC ! flag for surface cumulated energy budget 00051 ! 00052 !* averaged variables 00053 ! 00054 REAL, POINTER, DIMENSION(:) :: XRI ! Bulk-Richardson number (-) 00055 REAL, POINTER, DIMENSION(:) :: XCD ! drag coefficient for wind (W/s2) 00056 REAL, POINTER, DIMENSION(:) :: XCH ! drag coefficient for heat (W/s) 00057 REAL, POINTER, DIMENSION(:) :: XCE ! drag coefficient for vapor (W/s/K) 00058 REAL, POINTER, DIMENSION(:) :: XZ0 ! roughness length for momentum (m) 00059 REAL, POINTER, DIMENSION(:) :: XZ0H ! roughness length for heat (m) 00060 REAL, POINTER, DIMENSION(:) :: XRN ! net radiation at surface (W/m2) 00061 REAL, POINTER, DIMENSION(:) :: XH ! sensible heat flux (W/m2) 00062 REAL, POINTER, DIMENSION(:) :: XLE ! total latent heat flux (W/m2) 00063 REAL, POINTER, DIMENSION(:) :: XLEI ! sublimation latent heat flux (W/m2) 00064 REAL, POINTER, DIMENSION(:) :: XGFLUX ! net soil-vegetation flux (W/m2) 00065 REAL, POINTER, DIMENSION(:) :: XT2M ! air temperature at 2 meters (K) 00066 REAL, POINTER, DIMENSION(:) :: XT2M_MIN ! Minimum air temperature at 2 meters (K) 00067 REAL, POINTER, DIMENSION(:) :: XT2M_MAX ! Maximum air temperature at 2 meters (K) 00068 REAL, POINTER, DIMENSION(:) :: XQ2M ! air humidity at 2 meters (kg/kg) 00069 REAL, POINTER, DIMENSION(:) :: XHU2M ! air relative humidity at 2 meters(-) 00070 REAL, POINTER, DIMENSION(:) :: XHU2M_MIN! Minimum relative humidity at 2 meters (-) 00071 REAL, POINTER, DIMENSION(:) :: XHU2M_MAX! Maximum relative humidity at 2 meters (-) 00072 REAL, POINTER, DIMENSION(:) :: XQS ! air humidity at surface (kg/kg) 00073 REAL, POINTER, DIMENSION(:) :: XZON10M ! zonal wind at 10 meters (m/s) 00074 REAL, POINTER, DIMENSION(:) :: XMER10M ! meridian wind at 10 meters (m/s) 00075 REAL, POINTER, DIMENSION(:) :: XWIND10M ! wind at 10 meters (m/s) 00076 REAL, POINTER, DIMENSION(:) :: XWIND10M_MAX! Maximum wind at 10 meters (m/s) 00077 REAL, POINTER, DIMENSION(:) :: XLWD ! downward long wave radiation (W/m2) 00078 REAL, POINTER, DIMENSION(:) :: XLWU ! upward long wave radiation (W/m2) 00079 REAL, POINTER, DIMENSION(:) :: XSWD ! downward short wave radiation (W/m2) 00080 REAL, POINTER, DIMENSION(:) :: XSWU ! upward short wave radiation (W/m2) 00081 REAL, POINTER, DIMENSION(:,:) :: XSWBD ! downward short wave radiation by spectral band (W/m2) 00082 REAL, POINTER, DIMENSION(:,:) :: XSWBU ! upward short wave radiation by spectral band (W/m2) 00083 REAL, POINTER, DIMENSION(:) :: XFMU ! horizontal momentum flux zonal (kg/ms2) 00084 REAL, POINTER, DIMENSION(:) :: XFMV ! horizontal momentum flux meridian (kg/ms2) 00085 REAL, POINTER, DIMENSION(:) :: XDIAG_TS ! water surface temperature (K) 00086 ! 00087 !* cumulated averaged variables 00088 ! 00089 REAL, POINTER, DIMENSION(:) :: XRNC ! net radiation at surface (J/m2) 00090 REAL, POINTER, DIMENSION(:) :: XHC ! sensible heat flux (J/m2) 00091 REAL, POINTER, DIMENSION(:) :: XLEC ! total latent heat flux (J/m2) 00092 REAL, POINTER, DIMENSION(:) :: XLEIC ! sublimation latent heat flux (J/m2) 00093 REAL, POINTER, DIMENSION(:) :: XGFLUXC ! net soil-vegetation flux (J/m2) 00094 REAL, POINTER, DIMENSION(:) :: XLWDC ! downward long wave radiation (J/m2) 00095 REAL, POINTER, DIMENSION(:) :: XLWUC ! upward long wave radiation (J/m2) 00096 REAL, POINTER, DIMENSION(:) :: XSWDC ! downward short wave radiation (J/m2) 00097 REAL, POINTER, DIMENSION(:) :: XSWUC ! upward short wave radiation (J/m2) 00098 REAL, POINTER, DIMENSION(:) :: XFMUC ! horizontal momentum flux zonal (kg/ms) 00099 REAL, POINTER, DIMENSION(:) :: XFMVC ! horizontal momentum flux meridian (kg/ms) 00100 ! 00101 !------------------------------------------------------------------------------ 00102 ! 00103 00104 END TYPE DIAG_WATFLUX_t 00105 00106 TYPE(DIAG_WATFLUX_t), ALLOCATABLE, TARGET, SAVE :: DIAG_WATFLUX_MODEL(:) 00107 00108 REAL, POINTER :: XDIAG_TSTEP=>NULL() 00109 !$OMP THREADPRIVATE(XDIAG_TSTEP) 00110 INTEGER, POINTER :: N2M=>NULL() 00111 !$OMP THREADPRIVATE(N2M) 00112 LOGICAL, POINTER :: L2M_MIN_ZS=>NULL() 00113 !$OMP THREADPRIVATE(L2M_MIN_ZS) 00114 LOGICAL, POINTER :: LSURF_BUDGET=>NULL() 00115 !$OMP THREADPRIVATE(LSURF_BUDGET) 00116 LOGICAL, POINTER :: LRAD_BUDGET=>NULL() 00117 !$OMP THREADPRIVATE(LRAD_BUDGET) 00118 LOGICAL, POINTER :: LCOEF=>NULL() 00119 !$OMP THREADPRIVATE(LCOEF) 00120 LOGICAL, POINTER :: LSURF_VARS=>NULL() 00121 !$OMP THREADPRIVATE(LSURF_VARS) 00122 LOGICAL, POINTER :: LSURF_BUDGETC=>NULL() 00123 !$OMP THREADPRIVATE(LSURF_BUDGETC) 00124 LOGICAL, POINTER :: LRESET_BUDGETC=>NULL() 00125 !$OMP THREADPRIVATE(LRESET_BUDGETC) 00126 REAL, POINTER, DIMENSION(:) :: XRI=>NULL() 00127 !$OMP THREADPRIVATE(XRI) 00128 REAL, POINTER, DIMENSION(:) :: XCD=>NULL() 00129 !$OMP THREADPRIVATE(XCD) 00130 REAL, POINTER, DIMENSION(:) :: XCH=>NULL() 00131 !$OMP THREADPRIVATE(XCH) 00132 REAL, POINTER, DIMENSION(:) :: XCE=>NULL() 00133 !$OMP THREADPRIVATE(XCE) 00134 REAL, POINTER, DIMENSION(:) :: XZ0=>NULL() 00135 !$OMP THREADPRIVATE(XZ0) 00136 REAL, POINTER, DIMENSION(:) :: XZ0H=>NULL() 00137 !$OMP THREADPRIVATE(XZ0H) 00138 REAL, POINTER, DIMENSION(:) :: XRN=>NULL() 00139 !$OMP THREADPRIVATE(XRN) 00140 REAL, POINTER, DIMENSION(:) :: XH=>NULL() 00141 !$OMP THREADPRIVATE(XH) 00142 REAL, POINTER, DIMENSION(:) :: XLE=>NULL() 00143 !$OMP THREADPRIVATE(XLE) 00144 REAL, POINTER, DIMENSION(:) :: XLEI=>NULL() 00145 !$OMP THREADPRIVATE(XLEI) 00146 REAL, POINTER, DIMENSION(:) :: XGFLUX=>NULL() 00147 !$OMP THREADPRIVATE(XGFLUX) 00148 REAL, POINTER, DIMENSION(:) :: XT2M=>NULL() 00149 !$OMP THREADPRIVATE(XT2M) 00150 REAL, POINTER, DIMENSION(:) :: XT2M_MIN=>NULL() 00151 !$OMP THREADPRIVATE(XT2M_MIN) 00152 REAL, POINTER, DIMENSION(:) :: XT2M_MAX=>NULL() 00153 !$OMP THREADPRIVATE(XT2M_MAX) 00154 REAL, POINTER, DIMENSION(:) :: XQ2M=>NULL() 00155 !$OMP THREADPRIVATE(XQ2M) 00156 REAL, POINTER, DIMENSION(:) :: XHU2M=>NULL() 00157 !$OMP THREADPRIVATE(XHU2M) 00158 REAL, POINTER, DIMENSION(:) :: XHU2M_MIN=>NULL() 00159 !$OMP THREADPRIVATE(XHU2M_MIN) 00160 REAL, POINTER, DIMENSION(:) :: XHU2M_MAX=>NULL() 00161 !$OMP THREADPRIVATE(XHU2M_MAX) 00162 REAL, POINTER, DIMENSION(:) :: XQS=>NULL() 00163 !$OMP THREADPRIVATE(XQS) 00164 REAL, POINTER, DIMENSION(:) :: XZON10M=>NULL() 00165 !$OMP THREADPRIVATE(XZON10M) 00166 REAL, POINTER, DIMENSION(:) :: XMER10M=>NULL() 00167 !$OMP THREADPRIVATE(XMER10M) 00168 REAL, POINTER, DIMENSION(:) :: XWIND10M=>NULL() 00169 !$OMP THREADPRIVATE(XWIND10M) 00170 REAL, POINTER, DIMENSION(:) :: XWIND10M_MAX=>NULL() 00171 !$OMP THREADPRIVATE(XWIND10M_MAX) 00172 REAL, POINTER, DIMENSION(:) :: XLWD=>NULL() 00173 !$OMP THREADPRIVATE(XLWD) 00174 REAL, POINTER, DIMENSION(:) :: XLWU=>NULL() 00175 !$OMP THREADPRIVATE(XLWU) 00176 REAL, POINTER, DIMENSION(:) :: XSWD=>NULL() 00177 !$OMP THREADPRIVATE(XSWD) 00178 REAL, POINTER, DIMENSION(:) :: XSWU=>NULL() 00179 !$OMP THREADPRIVATE(XSWU) 00180 REAL, POINTER, DIMENSION(:,:) :: XSWBD=>NULL() 00181 !$OMP THREADPRIVATE(XSWBD) 00182 REAL, POINTER, DIMENSION(:,:) :: XSWBU=>NULL() 00183 !$OMP THREADPRIVATE(XSWBU) 00184 REAL, POINTER, DIMENSION(:) :: XFMU=>NULL() 00185 !$OMP THREADPRIVATE(XFMU) 00186 REAL, POINTER, DIMENSION(:) :: XFMV=>NULL() 00187 !$OMP THREADPRIVATE(XFMV) 00188 REAL, POINTER, DIMENSION(:) :: XRNC=>NULL() 00189 !$OMP THREADPRIVATE(XRNC) 00190 REAL, POINTER, DIMENSION(:) :: XHC=>NULL() 00191 !$OMP THREADPRIVATE(XHC) 00192 REAL, POINTER, DIMENSION(:) :: XLEC=>NULL() 00193 !$OMP THREADPRIVATE(XLEC) 00194 REAL, POINTER, DIMENSION(:) :: XLEIC=>NULL() 00195 !$OMP THREADPRIVATE(XLEIC) 00196 REAL, POINTER, DIMENSION(:) :: XGFLUXC=>NULL() 00197 !$OMP THREADPRIVATE(XGFLUXC) 00198 REAL, POINTER, DIMENSION(:) :: XLWDC=>NULL() 00199 !$OMP THREADPRIVATE(XLWDC) 00200 REAL, POINTER, DIMENSION(:) :: XLWUC=>NULL() 00201 !$OMP THREADPRIVATE(XLWUC) 00202 REAL, POINTER, DIMENSION(:) :: XSWDC=>NULL() 00203 !$OMP THREADPRIVATE(XSWDC) 00204 REAL, POINTER, DIMENSION(:) :: XSWUC=>NULL() 00205 !$OMP THREADPRIVATE(XSWUC) 00206 REAL, POINTER, DIMENSION(:) :: XFMUC=>NULL() 00207 !$OMP THREADPRIVATE(XFMUC) 00208 REAL, POINTER, DIMENSION(:) :: XFMVC=>NULL() 00209 !$OMP THREADPRIVATE(XFMVC) 00210 REAL, POINTER, DIMENSION(:) :: XDIAG_TS=>NULL() 00211 !$OMP THREADPRIVATE(XDIAG_TS) 00212 00213 CONTAINS 00214 00215 SUBROUTINE DIAG_WATFLUX_GOTO_MODEL(KFROM, KTO, LKFROM) 00216 LOGICAL, INTENT(IN) :: LKFROM 00217 INTEGER, INTENT(IN) :: KFROM, KTO 00218 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00219 ! 00220 ! Save current state for allocated arrays 00221 IF (LKFROM) THEN 00222 DIAG_WATFLUX_MODEL(KFROM)%XRI=>XRI 00223 DIAG_WATFLUX_MODEL(KFROM)%XCD=>XCD 00224 DIAG_WATFLUX_MODEL(KFROM)%XCH=>XCH 00225 DIAG_WATFLUX_MODEL(KFROM)%XCE=>XCE 00226 DIAG_WATFLUX_MODEL(KFROM)%XZ0=>XZ0 00227 DIAG_WATFLUX_MODEL(KFROM)%XZ0H=>XZ0H 00228 DIAG_WATFLUX_MODEL(KFROM)%XRN=>XRN 00229 DIAG_WATFLUX_MODEL(KFROM)%XH=>XH 00230 DIAG_WATFLUX_MODEL(KFROM)%XLE=>XLE 00231 DIAG_WATFLUX_MODEL(KFROM)%XLEI=>XLEI 00232 DIAG_WATFLUX_MODEL(KFROM)%XGFLUX=>XGFLUX 00233 DIAG_WATFLUX_MODEL(KFROM)%XT2M=>XT2M 00234 DIAG_WATFLUX_MODEL(KFROM)%XT2M_MIN=>XT2M_MIN 00235 DIAG_WATFLUX_MODEL(KFROM)%XT2M_MAX=>XT2M_MAX 00236 DIAG_WATFLUX_MODEL(KFROM)%XQ2M=>XQ2M 00237 DIAG_WATFLUX_MODEL(KFROM)%XHU2M=>XHU2M 00238 DIAG_WATFLUX_MODEL(KFROM)%XHU2M_MIN=>XHU2M_MIN 00239 DIAG_WATFLUX_MODEL(KFROM)%XHU2M_MAX=>XHU2M_MAX 00240 DIAG_WATFLUX_MODEL(KFROM)%XQS=>XQS 00241 DIAG_WATFLUX_MODEL(KFROM)%XZON10M=>XZON10M 00242 DIAG_WATFLUX_MODEL(KFROM)%XMER10M=>XMER10M 00243 DIAG_WATFLUX_MODEL(KFROM)%XWIND10M=>XWIND10M 00244 DIAG_WATFLUX_MODEL(KFROM)%XWIND10M_MAX=>XWIND10M_MAX 00245 DIAG_WATFLUX_MODEL(KFROM)%XLWD=>XLWD 00246 DIAG_WATFLUX_MODEL(KFROM)%XLWU=>XLWU 00247 DIAG_WATFLUX_MODEL(KFROM)%XSWD=>XSWD 00248 DIAG_WATFLUX_MODEL(KFROM)%XSWU=>XSWU 00249 DIAG_WATFLUX_MODEL(KFROM)%XSWBD=>XSWBD 00250 DIAG_WATFLUX_MODEL(KFROM)%XSWBU=>XSWBU 00251 DIAG_WATFLUX_MODEL(KFROM)%XFMU=>XFMU 00252 DIAG_WATFLUX_MODEL(KFROM)%XFMV=>XFMV 00253 DIAG_WATFLUX_MODEL(KFROM)%XRNC=>XRNC 00254 DIAG_WATFLUX_MODEL(KFROM)%XHC=>XHC 00255 DIAG_WATFLUX_MODEL(KFROM)%XLEC=>XLEC 00256 DIAG_WATFLUX_MODEL(KFROM)%XLEIC=>XLEIC 00257 DIAG_WATFLUX_MODEL(KFROM)%XGFLUXC=>XGFLUXC 00258 DIAG_WATFLUX_MODEL(KFROM)%XLWDC=>XLWDC 00259 DIAG_WATFLUX_MODEL(KFROM)%XLWUC=>XLWUC 00260 DIAG_WATFLUX_MODEL(KFROM)%XSWDC=>XSWDC 00261 DIAG_WATFLUX_MODEL(KFROM)%XSWUC=>XSWUC 00262 DIAG_WATFLUX_MODEL(KFROM)%XFMUC=>XFMUC 00263 DIAG_WATFLUX_MODEL(KFROM)%XFMVC=>XFMVC 00264 DIAG_WATFLUX_MODEL(KFROM)%XDIAG_TS=>XDIAG_TS 00265 ENDIF 00266 ! 00267 ! Current model is set to model KTO 00268 IF (LHOOK) CALL DR_HOOK('MODD_DIAG_WATFLUX_N:DIAG_WATFLUX_GOTO_MODEL',0,ZHOOK_HANDLE) 00269 XDIAG_TSTEP=>DIAG_WATFLUX_MODEL(KTO)%XDIAG_TSTEP 00270 N2M=>DIAG_WATFLUX_MODEL(KTO)%N2M 00271 L2M_MIN_ZS=>DIAG_WATFLUX_MODEL(KTO)%L2M_MIN_ZS 00272 LSURF_BUDGET=>DIAG_WATFLUX_MODEL(KTO)%LSURF_BUDGET 00273 LRAD_BUDGET=>DIAG_WATFLUX_MODEL(KTO)%LRAD_BUDGET 00274 LCOEF=>DIAG_WATFLUX_MODEL(KTO)%LCOEF 00275 LSURF_VARS=>DIAG_WATFLUX_MODEL(KTO)%LSURF_VARS 00276 LSURF_BUDGETC=>DIAG_WATFLUX_MODEL(KTO)%LSURF_BUDGETC 00277 LRESET_BUDGETC=>DIAG_WATFLUX_MODEL(KTO)%LRESET_BUDGETC 00278 XRI=>DIAG_WATFLUX_MODEL(KTO)%XRI 00279 XCD=>DIAG_WATFLUX_MODEL(KTO)%XCD 00280 XCH=>DIAG_WATFLUX_MODEL(KTO)%XCH 00281 XCE=>DIAG_WATFLUX_MODEL(KTO)%XCE 00282 XZ0=>DIAG_WATFLUX_MODEL(KTO)%XZ0 00283 XZ0H=>DIAG_WATFLUX_MODEL(KTO)%XZ0H 00284 XRN=>DIAG_WATFLUX_MODEL(KTO)%XRN 00285 XH=>DIAG_WATFLUX_MODEL(KTO)%XH 00286 XLE=>DIAG_WATFLUX_MODEL(KTO)%XLE 00287 XLEI=>DIAG_WATFLUX_MODEL(KTO)%XLEI 00288 XGFLUX=>DIAG_WATFLUX_MODEL(KTO)%XGFLUX 00289 XT2M=>DIAG_WATFLUX_MODEL(KTO)%XT2M 00290 XT2M_MIN=>DIAG_WATFLUX_MODEL(KTO)%XT2M_MIN 00291 XT2M_MAX=>DIAG_WATFLUX_MODEL(KTO)%XT2M_MAX 00292 XQ2M=>DIAG_WATFLUX_MODEL(KTO)%XQ2M 00293 XHU2M=>DIAG_WATFLUX_MODEL(KTO)%XHU2M 00294 XHU2M_MIN=>DIAG_WATFLUX_MODEL(KTO)%XHU2M_MIN 00295 XHU2M_MAX=>DIAG_WATFLUX_MODEL(KTO)%XHU2M_MAX 00296 XQS=>DIAG_WATFLUX_MODEL(KTO)%XQS 00297 XZON10M=>DIAG_WATFLUX_MODEL(KTO)%XZON10M 00298 XMER10M=>DIAG_WATFLUX_MODEL(KTO)%XMER10M 00299 XWIND10M=>DIAG_WATFLUX_MODEL(KTO)%XWIND10M 00300 XWIND10M_MAX=>DIAG_WATFLUX_MODEL(KTO)%XWIND10M_MAX 00301 XLWD=>DIAG_WATFLUX_MODEL(KTO)%XLWD 00302 XLWU=>DIAG_WATFLUX_MODEL(KTO)%XLWU 00303 XSWD=>DIAG_WATFLUX_MODEL(KTO)%XSWD 00304 XSWU=>DIAG_WATFLUX_MODEL(KTO)%XSWU 00305 XSWBD=>DIAG_WATFLUX_MODEL(KTO)%XSWBD 00306 XSWBU=>DIAG_WATFLUX_MODEL(KTO)%XSWBU 00307 XFMU=>DIAG_WATFLUX_MODEL(KTO)%XFMU 00308 XFMV=>DIAG_WATFLUX_MODEL(KTO)%XFMV 00309 XRNC=>DIAG_WATFLUX_MODEL(KTO)%XRNC 00310 XHC=>DIAG_WATFLUX_MODEL(KTO)%XHC 00311 XLEC=>DIAG_WATFLUX_MODEL(KTO)%XLEC 00312 XLEIC=>DIAG_WATFLUX_MODEL(KTO)%XLEIC 00313 XGFLUXC=>DIAG_WATFLUX_MODEL(KTO)%XGFLUXC 00314 XLWDC=>DIAG_WATFLUX_MODEL(KTO)%XLWDC 00315 XLWUC=>DIAG_WATFLUX_MODEL(KTO)%XLWUC 00316 XSWDC=>DIAG_WATFLUX_MODEL(KTO)%XSWDC 00317 XSWUC=>DIAG_WATFLUX_MODEL(KTO)%XSWUC 00318 XFMUC=>DIAG_WATFLUX_MODEL(KTO)%XFMUC 00319 XFMVC=>DIAG_WATFLUX_MODEL(KTO)%XFMVC 00320 XDIAG_TS=>DIAG_WATFLUX_MODEL(KTO)%XDIAG_TS 00321 IF (LHOOK) CALL DR_HOOK('MODD_DIAG_WATFLUX_N:DIAG_WATFLUX_GOTO_MODEL',1,ZHOOK_HANDLE) 00322 00323 END SUBROUTINE DIAG_WATFLUX_GOTO_MODEL 00324 00325 SUBROUTINE DIAG_WATFLUX_ALLOC(KMODEL) 00326 INTEGER, INTENT(IN) :: KMODEL 00327 INTEGER :: J 00328 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00329 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_WATFLUX_N:DIAG_WATFLUX_ALLOC",0,ZHOOK_HANDLE) 00330 ALLOCATE(DIAG_WATFLUX_MODEL(KMODEL)) 00331 DO J=1,KMODEL 00332 NULLIFY(DIAG_WATFLUX_MODEL(J)%XRI) 00333 NULLIFY(DIAG_WATFLUX_MODEL(J)%XCD) 00334 NULLIFY(DIAG_WATFLUX_MODEL(J)%XCH) 00335 NULLIFY(DIAG_WATFLUX_MODEL(J)%XCE) 00336 NULLIFY(DIAG_WATFLUX_MODEL(J)%XZ0) 00337 NULLIFY(DIAG_WATFLUX_MODEL(J)%XZ0H) 00338 NULLIFY(DIAG_WATFLUX_MODEL(J)%XRN) 00339 NULLIFY(DIAG_WATFLUX_MODEL(J)%XH) 00340 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLE) 00341 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLEI) 00342 NULLIFY(DIAG_WATFLUX_MODEL(J)%XGFLUX) 00343 NULLIFY(DIAG_WATFLUX_MODEL(J)%XT2M) 00344 NULLIFY(DIAG_WATFLUX_MODEL(J)%XT2M_MIN) 00345 NULLIFY(DIAG_WATFLUX_MODEL(J)%XT2M_MAX) 00346 NULLIFY(DIAG_WATFLUX_MODEL(J)%XQ2M) 00347 NULLIFY(DIAG_WATFLUX_MODEL(J)%XHU2M) 00348 NULLIFY(DIAG_WATFLUX_MODEL(J)%XHU2M_MIN) 00349 NULLIFY(DIAG_WATFLUX_MODEL(J)%XHU2M_MAX) 00350 NULLIFY(DIAG_WATFLUX_MODEL(J)%XQS) 00351 NULLIFY(DIAG_WATFLUX_MODEL(J)%XZON10M) 00352 NULLIFY(DIAG_WATFLUX_MODEL(J)%XMER10M) 00353 NULLIFY(DIAG_WATFLUX_MODEL(J)%XWIND10M) 00354 NULLIFY(DIAG_WATFLUX_MODEL(J)%XWIND10M_MAX) 00355 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLWD) 00356 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLWU) 00357 NULLIFY(DIAG_WATFLUX_MODEL(J)%XSWD) 00358 NULLIFY(DIAG_WATFLUX_MODEL(J)%XSWU) 00359 NULLIFY(DIAG_WATFLUX_MODEL(J)%XSWBD) 00360 NULLIFY(DIAG_WATFLUX_MODEL(J)%XSWBU) 00361 NULLIFY(DIAG_WATFLUX_MODEL(J)%XFMU) 00362 NULLIFY(DIAG_WATFLUX_MODEL(J)%XFMV) 00363 NULLIFY(DIAG_WATFLUX_MODEL(J)%XDIAG_TS) 00364 NULLIFY(DIAG_WATFLUX_MODEL(J)%XRNC) 00365 NULLIFY(DIAG_WATFLUX_MODEL(J)%XHC) 00366 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLEC) 00367 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLEIC) 00368 NULLIFY(DIAG_WATFLUX_MODEL(J)%XGFLUXC) 00369 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLWDC) 00370 NULLIFY(DIAG_WATFLUX_MODEL(J)%XLWUC) 00371 NULLIFY(DIAG_WATFLUX_MODEL(J)%XSWDC) 00372 NULLIFY(DIAG_WATFLUX_MODEL(J)%XSWUC) 00373 NULLIFY(DIAG_WATFLUX_MODEL(J)%XFMUC) 00374 NULLIFY(DIAG_WATFLUX_MODEL(J)%XFMVC) 00375 ENDDO 00376 DIAG_WATFLUX_MODEL(:)%XDIAG_TSTEP=0. 00377 DIAG_WATFLUX_MODEL(:)%N2M=0 00378 DIAG_WATFLUX_MODEL(:)%L2M_MIN_ZS=.FALSE. 00379 DIAG_WATFLUX_MODEL(:)%LSURF_BUDGET=.FALSE. 00380 DIAG_WATFLUX_MODEL(:)%LRAD_BUDGET=.FALSE. 00381 DIAG_WATFLUX_MODEL(:)%LCOEF=.FALSE. 00382 DIAG_WATFLUX_MODEL(:)%LSURF_VARS=.FALSE. 00383 DIAG_WATFLUX_MODEL(:)%LSURF_BUDGETC=.FALSE. 00384 DIAG_WATFLUX_MODEL(:)%LRESET_BUDGETC=.FALSE. 00385 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_WATFLUX_N:DIAG_WATFLUX_ALLOC",1,ZHOOK_HANDLE) 00386 END SUBROUTINE DIAG_WATFLUX_ALLOC 00387 00388 SUBROUTINE DIAG_WATFLUX_DEALLO 00389 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00390 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_WATFLUX_N:DIAG_WATFLUX_DEALLO",0,ZHOOK_HANDLE) 00391 IF (ALLOCATED(DIAG_WATFLUX_MODEL)) DEALLOCATE(DIAG_WATFLUX_MODEL) 00392 IF (LHOOK) CALL DR_HOOK("MODD_DIAG_WATFLUX_N:DIAG_WATFLUX_DEALLO",1,ZHOOK_HANDLE) 00393 END SUBROUTINE DIAG_WATFLUX_DEALLO 00394 00395 END MODULE MODD_DIAG_WATFLUX_n