SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DIAG_WATFLUX_n(HPROGRAM, & 00003 PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS, & 00004 PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M, & 00005 PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, PFMU, PFMV, & 00006 PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, & 00007 PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, & 00008 PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX ) 00009 ! ############################################################################### 00010 ! 00011 !!**** *DIAG_WATFLUX_n * - diagnostics for lakes 00012 !! 00013 !! PURPOSE 00014 !! ------- 00015 ! 00016 !!** METHOD 00017 !! ------ 00018 !! 00019 !! REFERENCE 00020 !! --------- 00021 !! 00022 !! 00023 !! AUTHOR 00024 !! ------ 00025 !! V. Masson 00026 !! 00027 !! MODIFICATIONS 00028 !! ------------- 00029 !! Original 01/2004 00030 !! Modified 08/2009 : cumulated diag & t2m min/max 00031 !!------------------------------------------------------------------ 00032 ! 00033 00034 ! 00035 USE MODD_SURF_PAR, ONLY : XUNDEF 00036 USE MODD_WATFLUX_n, ONLY : TTIME 00037 USE MODD_DIAG_WATFLUX_n, ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_BUDGETC, LSURF_VARS, & 00038 XRN, XH, XLE, XLEI, XGFLUX, XRI, XCD, XCH, XCE, & 00039 XQS, XZ0, XZ0H, XT2M, XQ2M, XHU2M, XZON10M, XMER10M, & 00040 XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, XFMU, XFMV,& 00041 XRNC, XHC, XLEC, XGFLUXC, XSWDC, XSWUC, XLWDC, & 00042 XLWUC, XFMUC, XFMVC, XT2M_MIN, XT2M_MAX, XLEIC, & 00043 XDIAG_TS, XHU2M_MIN, XHU2M_MAX, XWIND10M, XWIND10M_MAX 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 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00054 ! 00055 REAL, DIMENSION(:), INTENT(OUT) :: PRN ! Net radiation (W/m2) 00056 REAL, DIMENSION(:), INTENT(OUT) :: PH ! Sensible heat flux (W/m2) 00057 REAL, DIMENSION(:), INTENT(OUT) :: PLE ! Total latent heat flux (W/m2) 00058 REAL, DIMENSION(:), INTENT(OUT) :: PLEI ! Sublimation latent heat flux (W/m2) 00059 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX ! Storage flux (W/m2) 00060 REAL, DIMENSION(:), INTENT(OUT) :: PRI ! Richardson number (-) 00061 REAL, DIMENSION(:), INTENT(OUT) :: PCD ! drag coefficient (W/s2) 00062 REAL, DIMENSION(:), INTENT(OUT) :: PCH ! transf. coef heat (W/s) 00063 REAL, DIMENSION(:), INTENT(OUT) :: PCE ! transf. coef vapor (W/s/K) 00064 REAL, DIMENSION(:), INTENT(OUT) :: PQS 00065 REAL, DIMENSION(:), INTENT(OUT) :: PZ0 ! rough. length wind (m) 00066 REAL, DIMENSION(:), INTENT(OUT) :: PZ0H ! rough. length heat (m) 00067 REAL, DIMENSION(:), INTENT(OUT) :: PTS ! surface temperature (K) 00068 REAL, DIMENSION(:), INTENT(OUT) :: PT2M ! temperature at 2m (K) 00069 REAL, DIMENSION(:), INTENT(OUT) :: PQ2M ! humidity at 2m (kg/kg) 00070 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M ! relative humidity at 2m (-) 00071 REAL, DIMENSION(:), INTENT(OUT) :: PZON10M ! zonal wind at 10m (m/s) 00072 REAL, DIMENSION(:), INTENT(OUT) :: PMER10M ! meridian wind at 10m(m/s) 00073 REAL, DIMENSION(:), INTENT(OUT) :: PSWD ! incoming short-wave radiation (W/m2) 00074 REAL, DIMENSION(:), INTENT(OUT) :: PSWU ! upward short-wave radiation (W/m2) 00075 REAL, DIMENSION(:), INTENT(OUT) :: PLWD ! incoming long-wave radiation (W/m2) 00076 REAL, DIMENSION(:), INTENT(OUT) :: PLWU ! upward long-wave radiation (W/m2) 00077 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBD ! incoming short-wave radiation by spectral band (W/m2) 00078 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBU ! upward short-wave radiation by spectral band (W/m2) 00079 REAL, DIMENSION(:), INTENT(OUT) :: PFMU ! zonal momentum flux (Pa) 00080 REAL, DIMENSION(:), INTENT(OUT) :: PFMV ! meridian momentum flux (Pa) 00081 REAL, DIMENSION(:), INTENT(OUT) :: PRNC ! Net radiation (J/m2) 00082 REAL, DIMENSION(:), INTENT(OUT) :: PHC ! Sensible heat flux (J/m2) 00083 REAL, DIMENSION(:), INTENT(OUT) :: PLEC ! Total latent heat flux (J/m2) 00084 REAL, DIMENSION(:), INTENT(OUT) :: PLEIC ! Sublimation latent heat flux (J/m2) 00085 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUXC ! Storage flux (J/m2) 00086 REAL, DIMENSION(:), INTENT(OUT) :: PSWDC ! incoming short wave radiation (J/m2) 00087 REAL, DIMENSION(:), INTENT(OUT) :: PSWUC ! outgoing short wave radiation (J/m2) 00088 REAL, DIMENSION(:), INTENT(OUT) :: PLWDC ! incoming long wave radiation (J/m2) 00089 REAL, DIMENSION(:), INTENT(OUT) :: PLWUC ! outgoing long wave radiation (J/m2) 00090 REAL, DIMENSION(:), INTENT(OUT) :: PFMUC ! zonal friction 00091 REAL, DIMENSION(:), INTENT(OUT) :: PFMVC ! meridian friction 00092 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MIN ! Minimum temperature at 2m (K) 00093 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MAX ! Maximum temperature at 2m (K) 00094 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MIN! Minimum relative humidity at 2m (-) 00095 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MAX! Maximum relative humidity at 2m (-) 00096 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M ! wind at 10m (m/s) 00097 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M_MAX! Maximum wind at 10m (m/s) 00098 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00099 ! 00100 ! 00101 !* 0.2 declarations of local variables 00102 ! 00103 !------------------------------------------------------------------------------------- 00104 ! 00105 IF (LHOOK) CALL DR_HOOK('DIAG_WATFLUX_N',0,ZHOOK_HANDLE) 00106 IF (LSURF_BUDGET) THEN 00107 PRN = XRN 00108 PH = XH 00109 PLE = XLE 00110 PLEI = XLEI 00111 PGFLUX = XGFLUX 00112 PSWD = XSWD 00113 PSWU = XSWU 00114 PLWD = XLWD 00115 PLWU = XLWU 00116 PSWBD = XSWBD 00117 PSWBU = XSWBU 00118 PFMU = XFMU 00119 PFMV = XFMV 00120 END IF 00121 ! 00122 IF (LSURF_BUDGETC) THEN 00123 PRNC = XRNC 00124 PHC = XHC 00125 PLEC = XLEC 00126 PLEIC = XLEIC 00127 PGFLUXC = XGFLUXC 00128 PSWDC = XSWDC 00129 PSWUC = XSWUC 00130 PLWDC = XLWDC 00131 PLWUC = XLWUC 00132 PFMUC = XFMUC 00133 PFMVC = XFMVC 00134 END IF 00135 ! 00136 IF (N2M>=1 .OR. LSURF_BUDGET .OR. LSURF_BUDGETC) PTS = XDIAG_TS 00137 ! 00138 IF (N2M>=1) THEN 00139 PRI = XRI 00140 PT2M = XT2M 00141 PT2M_MIN = XT2M_MIN 00142 PT2M_MAX = XT2M_MAX 00143 PQ2M = XQ2M 00144 PHU2M = XHU2M 00145 PHU2M_MIN= XHU2M_MIN 00146 PHU2M_MAX= XHU2M_MAX 00147 PZON10M = XZON10M 00148 PMER10M = XMER10M 00149 PWIND10M = XWIND10M 00150 PWIND10M_MAX = XWIND10M_MAX 00151 END IF 00152 ! 00153 IF (LCOEF) THEN 00154 PCD = XCD 00155 PCH = XCH 00156 PCE = XCE 00157 PZ0 = XZ0 00158 PZ0H = XZ0H 00159 END IF 00160 ! 00161 IF (LSURF_VARS) THEN 00162 PQS = XQS 00163 ENDIF 00164 ! 00165 IF (LHOOK) CALL DR_HOOK('DIAG_WATFLUX_N',1,ZHOOK_HANDLE) 00166 ! 00167 !------------------------------------------------------------------------------------- 00168 ! 00169 END SUBROUTINE DIAG_WATFLUX_n