SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DIAG_SEA_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, PSWBD, PSWBU, PLWD, PLWU, 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_SEA_n * - Chooses the surface schemes for sea diagnostics 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_SURF_ATM_n, ONLY : CSEA 00038 ! 00039 USE MODI_DIAG_SEAFLUX_n 00040 USE MODI_DIAG_IDEAL_n 00041 ! 00042 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00043 USE PARKIND1 ,ONLY : JPRB 00044 ! 00045 IMPLICIT NONE 00046 ! 00047 !* 0.1 declarations of arguments 00048 ! 00049 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00050 ! 00051 REAL, DIMENSION(:), INTENT(OUT) :: PRN ! Net radiation (W/m2) 00052 REAL, DIMENSION(:), INTENT(OUT) :: PH ! Sensible heat flux (W/m2) 00053 REAL, DIMENSION(:), INTENT(OUT) :: PLE ! Total latent heat flux (W/m2) 00054 REAL, DIMENSION(:), INTENT(OUT) :: PLEI ! Sublimation latent heat flux (W/m2) 00055 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX ! Storage flux (W/m2) 00056 REAL, DIMENSION(:), INTENT(OUT) :: PRI ! Richardson number (-) 00057 REAL, DIMENSION(:), INTENT(OUT) :: PCD ! drag coefficient (W/s2) 00058 REAL, DIMENSION(:), INTENT(OUT) :: PCH ! transf. coef heat (W/s) 00059 REAL, DIMENSION(:), INTENT(OUT) :: PCE ! transf. coef vapor (W/s/K) 00060 REAL, DIMENSION(:), INTENT(OUT) :: PQS 00061 REAL, DIMENSION(:), INTENT(OUT) :: PZ0 ! rough. length wind (m) 00062 REAL, DIMENSION(:), INTENT(OUT) :: PZ0H ! rough. length heat (m) 00063 REAL, DIMENSION(:), INTENT(OUT) :: PTS ! surface temperature (K) 00064 REAL, DIMENSION(:), INTENT(OUT) :: PT2M ! temperature at 2m (K) 00065 REAL, DIMENSION(:), INTENT(OUT) :: PQ2M ! humidity at 2m (kg/kg) 00066 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M ! relative humidity at 2m (-) 00067 REAL, DIMENSION(:), INTENT(OUT) :: PZON10M ! zonal wind at 10m (m/s) 00068 REAL, DIMENSION(:), INTENT(OUT) :: PMER10M ! meridian wind at 10m(m/s) 00069 REAL, DIMENSION(:), INTENT(OUT) :: PSWD ! incoming short wave radiation (W/m2) 00070 REAL, DIMENSION(:), INTENT(OUT) :: PSWU ! outgoing short wave radiation (W/m2) 00071 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBD ! incoming short wave radiation by spectral band(W/m2) 00072 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBU ! outgoing short wave radiation by spectral band(W/m2) 00073 REAL, DIMENSION(:), INTENT(OUT) :: PLWD ! incoming long wave radiation (W/m2) 00074 REAL, DIMENSION(:), INTENT(OUT) :: PLWU ! outgoing long wave radiation (W/m2) 00075 REAL, DIMENSION(:), INTENT(OUT) :: PFMU ! zonal friction 00076 REAL, DIMENSION(:), INTENT(OUT) :: PFMV ! meridian friction 00077 REAL, DIMENSION(:), INTENT(OUT) :: PRNC ! Net radiation (J/m2) 00078 REAL, DIMENSION(:), INTENT(OUT) :: PHC ! Sensible heat flux (J/m2) 00079 REAL, DIMENSION(:), INTENT(OUT) :: PLEC ! Total latent heat flux (J/m2) 00080 REAL, DIMENSION(:), INTENT(OUT) :: PLEIC ! Sublimation latent heat flux (J/m2) 00081 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUXC ! Storage flux (J/m2) 00082 REAL, DIMENSION(:), INTENT(OUT) :: PSWDC ! incoming short wave radiation (J/m2) 00083 REAL, DIMENSION(:), INTENT(OUT) :: PSWUC ! outgoing short wave radiation (J/m2) 00084 REAL, DIMENSION(:), INTENT(OUT) :: PLWDC ! incoming long wave radiation (J/m2) 00085 REAL, DIMENSION(:), INTENT(OUT) :: PLWUC ! outgoing long wave radiation (J/m2) 00086 REAL, DIMENSION(:), INTENT(OUT) :: PFMUC ! zonal friction 00087 REAL, DIMENSION(:), INTENT(OUT) :: PFMVC ! meridian friction 00088 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MIN ! Minimum temperature at 2m (K) 00089 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MAX ! Maximum temperature at 2m (K) 00090 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MIN! Minimum relative humidity at 2m (-) 00091 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MAX! Maximum relative humidity at 2m (-) 00092 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M ! wind at 10m (m/s) 00093 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M_MAX! Maximum wind at 10m (m/s) 00094 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00095 ! 00096 ! 00097 !* 0.2 declarations of local variables 00098 ! 00099 !------------------------------------------------------------------------------------- 00100 ! 00101 IF (LHOOK) CALL DR_HOOK('DIAG_SEA_N',0,ZHOOK_HANDLE) 00102 IF (CSEA=='SEAFLX') THEN 00103 CALL DIAG_SEAFLUX_n(HPROGRAM, & 00104 PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS,& 00105 PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M,& 00106 PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, PFMU, PFMV, & 00107 PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC, & 00108 PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC, & 00109 PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX ) 00110 ELSEIF (CSEA=='FLUX') THEN 00111 CALL DIAG_IDEAL_n(HPROGRAM, PQS, PZ0, PZ0H, PH, PLE, PRN, PGFLUX) 00112 PLEI = XUNDEF 00113 PRI = XUNDEF 00114 PCD = XUNDEF 00115 PCH = XUNDEF 00116 PCE = XUNDEF 00117 PTS = XUNDEF 00118 PT2M = XUNDEF 00119 PQ2M = XUNDEF 00120 PHU2M = XUNDEF 00121 PZON10M = XUNDEF 00122 PMER10M = XUNDEF 00123 PSWD = XUNDEF 00124 PSWU = XUNDEF 00125 PSWBD = XUNDEF 00126 PSWBU = XUNDEF 00127 PLWD = XUNDEF 00128 PLWU = XUNDEF 00129 PFMU = XUNDEF 00130 PFMV = XUNDEF 00131 PRNC = XUNDEF 00132 PHC = XUNDEF 00133 PLEC = XUNDEF 00134 PLEIC = XUNDEF 00135 PGFLUXC = XUNDEF 00136 PSWDC = XUNDEF 00137 PSWUC = XUNDEF 00138 PLWDC = XUNDEF 00139 PLWUC = XUNDEF 00140 PFMUC = XUNDEF 00141 PFMVC = XUNDEF 00142 PT2M_MIN = XUNDEF 00143 PT2M_MAX = XUNDEF 00144 PHU2M_MIN= XUNDEF 00145 PHU2M_MAX= XUNDEF 00146 PWIND10M = XUNDEF 00147 PWIND10M_MAX = XUNDEF 00148 ELSE IF (CSEA=='NONE ') THEN 00149 PRN = XUNDEF 00150 PH = XUNDEF 00151 PLE = XUNDEF 00152 PLEI = XUNDEF 00153 PGFLUX = XUNDEF 00154 PRI = XUNDEF 00155 PCD = XUNDEF 00156 PCH = XUNDEF 00157 PCE = XUNDEF 00158 PQS = XUNDEF 00159 PZ0 = XUNDEF 00160 PZ0H = XUNDEF 00161 PTS = XUNDEF 00162 PT2M = XUNDEF 00163 PQ2M = XUNDEF 00164 PHU2M = XUNDEF 00165 PZON10M = XUNDEF 00166 PMER10M = XUNDEF 00167 PSWD = XUNDEF 00168 PSWU = XUNDEF 00169 PSWBD = XUNDEF 00170 PSWBU = XUNDEF 00171 PLWD = XUNDEF 00172 PLWU = XUNDEF 00173 PFMU = XUNDEF 00174 PFMV = XUNDEF 00175 PRNC = XUNDEF 00176 PHC = XUNDEF 00177 PLEC = XUNDEF 00178 PLEIC = XUNDEF 00179 PGFLUXC = XUNDEF 00180 PSWDC = XUNDEF 00181 PSWUC = XUNDEF 00182 PLWDC = XUNDEF 00183 PLWUC = XUNDEF 00184 PFMUC = XUNDEF 00185 PFMVC = XUNDEF 00186 PT2M_MIN = XUNDEF 00187 PT2M_MAX = XUNDEF 00188 PHU2M_MIN= XUNDEF 00189 PHU2M_MAX= XUNDEF 00190 PWIND10M = XUNDEF 00191 PWIND10M_MAX = XUNDEF 00192 END IF 00193 IF (LHOOK) CALL DR_HOOK('DIAG_SEA_N',1,ZHOOK_HANDLE) 00194 ! 00195 !------------------------------------------------------------------------------------- 00196 ! 00197 END SUBROUTINE DIAG_SEA_n