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