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