Changeset 2644
- Timestamp:
- Oct 2, 2016, 6:55:08 PM (8 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90
r2601 r2644 111 111 INTEGER :: flag_aerosol 112 112 INTEGER :: flag_aerosol_strat 113 LOGICAL :: flag_bc_internal_mixture 113 114 LOGICAL :: new_aod 114 115 REAL :: bl95_b0, bl95_b1 … … 131 132 ok_ade, ok_aie, ok_cdnc, aerosol_couple, & 132 133 flag_aerosol, flag_aerosol_strat, new_aod, & 133 bl95_b0, bl95_b1,&134 flag_bc_internal_mixture, bl95_b0, bl95_b1, & 134 135 read_climoz, & 135 136 alp_offset) -
LMDZ5/trunk/libf/phylmd/conf_phys_m.F90
r2580 r2644 19 19 ok_ade, ok_aie, ok_cdnc, aerosol_couple, & 20 20 flag_aerosol, flag_aerosol_strat, new_aod, & 21 bl95_b0, bl95_b1,&21 flag_bc_internal_mixture, bl95_b0, bl95_b1,& 22 22 read_climoz, & 23 23 alp_offset) … … 64 64 ! ok_cdnc, ok cloud droplet number concentration 65 65 ! flag_aerosol_strat : flag pour les aerosols stratos 66 ! flag_bc_internal_mixture : use BC internal mixture if true 66 67 ! bl95_b*: parameters in the formula to link CDNC to aerosol mass conc 67 68 ! … … 77 78 INTEGER :: flag_aerosol 78 79 INTEGER :: flag_aerosol_strat 80 LOGICAL :: flag_bc_internal_mixture 79 81 LOGICAL :: new_aod 80 82 REAL :: bl95_b0, bl95_b1 … … 95 97 INTEGER, SAVE :: flag_aerosol_omp 96 98 INTEGER, SAVE :: flag_aerosol_strat_omp 99 LOGICAL, SAVE :: flag_bc_internal_mixture_omp 97 100 LOGICAL, SAVE :: new_aod_omp 98 101 REAL,SAVE :: bl95_b0_omp, bl95_b1_omp … … 398 401 flag_aerosol_strat_omp = 0 399 402 CALL getin('flag_aerosol_strat',flag_aerosol_strat_omp) 403 404 ! 405 !Config Key = flag_bc_internal_mixture 406 !Config Desc = state of mixture for BC aerosols 407 ! - n = external mixture 408 ! - y = internal mixture 409 !Config Def = n 410 !Config Help = Used in physiq.F / aeropt 411 ! 412 flag_bc_internal_mixture_omp = .false. 413 CALL getin('flag_bc_internal_mixture',flag_bc_internal_mixture_omp) 400 414 401 415 ! Temporary variable for testing purpose! … … 2136 2150 flag_aerosol=flag_aerosol_omp 2137 2151 flag_aerosol_strat=flag_aerosol_strat_omp 2152 flag_bc_internal_mixture=flag_bc_internal_mixture_omp 2138 2153 new_aod=new_aod_omp 2139 2154 aer_type = aer_type_omp … … 2311 2326 IF (ok_aie .AND. .NOT. ok_cdnc) THEN 2312 2327 CALL abort_physic('conf_phys', 'ok_cdnc must be set to y if ok_aie is activated',1) 2328 ENDIF 2329 2330 ! BC internal mixture is only possible with RRTM & NSW=6 & flag_aerosol=6 or aerosol_couple 2331 IF (flag_bc_internal_mixture .AND. NSW.NE.6) THEN 2332 CALL abort_physic('conf_phys', 'flag_bc_internal_mixture can only be activated with NSW=6',1) 2333 ENDIF 2334 IF (flag_bc_internal_mixture .AND. iflag_rrtm.NE.1) THEN 2335 CALL abort_physic('conf_phys', 'flag_bc_internal_mixture can only be activated with RRTM',1) 2336 ENDIF 2337 IF (flag_bc_internal_mixture .AND. flag_aerosol.NE.6) THEN 2338 CALL abort_physic('conf_phys', 'flag_bc_internal_mixture can only be activated with flag_aerosol=6',1) 2313 2339 ENDIF 2314 2340 -
LMDZ5/trunk/libf/phylmd/physiq_mod.F90
r2640 r2644 983 983 INTEGER, SAVE :: flag_aerosol 984 984 !$OMP THREADPRIVATE(flag_aerosol) 985 LOGICAL, SAVE :: flag_bc_internal_mixture 986 !$OMP THREADPRIVATE(flag_bc_internal_mixture) 985 987 LOGICAL, SAVE :: new_aod 986 988 !$OMP THREADPRIVATE(new_aod) … … 1140 1142 ok_ade, ok_aie, ok_cdnc, aerosol_couple, & 1141 1143 flag_aerosol, flag_aerosol_strat, new_aod, & 1142 bl95_b0, bl95_b1, &1144 flag_bc_internal_mixture, bl95_b0, bl95_b1, & 1143 1145 ! nv flags pour la convection et les 1144 1146 ! poches froides … … 3388 3390 ! 3389 3391 CALL readaerosol_optic_rrtm( debut, aerosol_couple, & 3390 new_aod, flag_aerosol, itap, jD_cur-jD_ref, &3392 new_aod, flag_aerosol, flag_bc_internal_mixture, itap, jD_cur-jD_ref, & 3391 3393 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, & 3392 3394 tr_seri, mass_solu_aero, mass_solu_aero_pi, & -
LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
r2634 r2644 3 3 ! 4 4 5 SUBROUTINE AEROPT_5WV_RRTM(& 6 pdel, m_allaer, delt, & 7 RHcl, ai, flag_aerosol, & 8 pplay, t_seri, & 5 SUBROUTINE AEROPT_5WV_RRTM( & 6 pdel, m_allaer, & 7 RHcl, ai, flag_aerosol, & 8 flag_bc_internal_mixture, & 9 pplay, t_seri, & 9 10 tausum, tau ) 10 11 … … 54 55 ! 55 56 REAL, DIMENSION(klon,klev), INTENT(in) :: pdel 56 REAL, INTENT(in) :: delt57 57 REAL, DIMENSION(klon,klev,naero_tot), INTENT(in) :: m_allaer 58 58 REAL, DIMENSION(klon,klev), INTENT(in) :: RHcl ! humidite relative ciel clair 59 59 INTEGER,INTENT(in) :: flag_aerosol 60 LOGICAL,INTENT(in) :: flag_bc_internal_mixture 60 61 REAL, DIMENSION(klon,klev), INTENT(in) :: pplay 61 62 REAL, DIMENSION(klon,klev), INTENT(in) :: t_seri … … 106 107 107 108 ! 109 ! BC internal mixture 110 ! 111 INTEGER, PARAMETER :: nbclassbc = 5 ! Added by Rong Wang/OB for the 5 fractions 112 ! of BC in the soluble mode: 113 ! bc_content/0.001, 0.01, 0.02, 0.05, ! 0.1/ 114 ! for Maxwell-Garnet internal mixture 115 ! Detailed theory can be found in R. Wang Estimation of global black carbon ! direct 116 ! radiative forcing and its uncertainty constrained by observations. J. 117 ! Geophys. Res. Atmos. Added by R. Wang and OB 118 REAL :: alpha_MG_5wv(nbre_RH,las,nbclassbc) 119 120 ! 108 121 ! Proprietes optiques 109 122 ! 110 REAL :: fact_RH(nbre_RH) 111 INTEGER :: n 123 REAL :: fact_RH(nbre_RH), BC_massfra 124 INTEGER :: n, classbc 112 125 113 126 ! From here on we look at the optical parameters at 5 wavelengths: … … 117 130 DATA alpha_aers_5wv/ & 118 131 ! bc soluble 119 7.930,7.930,7.930,7.930,7.930,7.930, & 120 7.930,7.930,10.893,12.618,14.550,16.613, & 121 7.658,7.658,7.658,7.658,7.658,7.658, & 122 7.658,7.658,10.351,11.879,13.642,15.510, & 123 7.195,7.195,7.195,7.195,7.195,7.195, & 124 7.195,7.195,9.551,10.847,12.381,13.994, & 125 6.736,6.736,6.736,6.736,6.736,6.736, & 126 6.736,6.736,8.818,9.938,11.283,12.687, & 127 6.277,6.277,6.277,6.277,6.277,6.277, & 128 6.277,6.277,8.123,9.094,10.275,11.501, & 132 7.930,7.930,7.930,7.930,7.930,7.930,7.930,7.930,10.893,12.618,14.550,16.613, & 133 7.658,7.658,7.658,7.658,7.658,7.658,7.658,7.658,10.351,11.879,13.642,15.510, & 134 7.195,7.195,7.195,7.195,7.195,7.195,7.195,7.195,9.551,10.847,12.381,13.994, & 135 6.736,6.736,6.736,6.736,6.736,6.736,6.736,6.736,8.818,9.938,11.283,12.687, & 136 6.277,6.277,6.277,6.277,6.277,6.277,6.277,6.277,8.123,9.094,10.275,11.501, & 129 137 ! pom soluble 130 6.676,6.676,6.676,6.676,6.710,6.934, & 131 7.141,7.569,8.034,8.529,9.456,10.511, & 132 5.109,5.109,5.109,5.109,5.189,5.535, & 133 5.960,6.852,8.008,9.712,12.897,19.676, & 134 3.718,3.718,3.718,3.718,3.779,4.042, & 135 4.364,5.052,5.956,7.314,9.896,15.688, & 136 2.849,2.849,2.849,2.849,2.897,3.107, & 137 3.365,3.916,4.649,5.760,7.900,12.863, & 138 2.229,2.229,2.229,2.229,2.268,2.437, & 139 2.645,3.095,3.692,4.608,6.391,10.633, & 138 6.676,6.676,6.676,6.676,6.710,6.934,7.141,7.569,8.034,8.529,9.456,10.511, & 139 5.109,5.109,5.109,5.109,5.189,5.535,5.960,6.852,8.008,9.712,12.897,19.676, & 140 3.718,3.718,3.718,3.718,3.779,4.042,4.364,5.052,5.956,7.314,9.896,15.688, & 141 2.849,2.849,2.849,2.849,2.897,3.107,3.365,3.916,4.649,5.760,7.900,12.863, & 142 2.229,2.229,2.229,2.229,2.268,2.437,2.645,3.095,3.692,4.608,6.391,10.633, & 140 143 ! Sulfate (Accumulation) 141 5.751,6.215,6.690,7.024,7.599,8.195, & 142 9.156,10.355,12.660,14.823,18.908,24.508, & 143 4.320,4.675,5.052,5.375,5.787,6.274, & 144 7.066,8.083,10.088,12.003,15.697,21.133, & 145 3.079,3.351,3.639,3.886,4.205,4.584, & 146 5.206,6.019,7.648,9.234,12.391,17.220, & 147 2.336,2.552,2.781,2.979,3.236,3.540, & 148 4.046,4.711,6.056,7.388,10.093,14.313, & 149 1.777,1.949,2.134,2.292,2.503,2.751, & 150 3.166,3.712,4.828,5.949,8.264,11.922, & 144 5.751,6.215,6.690,7.024,7.599,8.195,9.156,10.355,12.660,14.823,18.908,24.508, & 145 4.320,4.675,5.052,5.375,5.787,6.274,7.066,8.083,10.088,12.003,15.697,21.133, & 146 3.079,3.351,3.639,3.886,4.205,4.584,5.206,6.019,7.648,9.234,12.391,17.220, & 147 2.336,2.552,2.781,2.979,3.236,3.540,4.046,4.711,6.056,7.388,10.093,14.313, & 148 1.777,1.949,2.134,2.292,2.503,2.751,3.166,3.712,4.828,5.949,8.264,11.922, & 151 149 ! Sulfate (Coarse) 152 5.751,6.215,6.690,7.024,7.599,8.195, & 153 9.156,10.355,12.660,14.823,18.908,24.508, & 154 4.320,4.675,5.052,5.375,5.787,6.274, & 155 7.066,8.083,10.088,12.003,15.697,21.133, & 156 3.079,3.351,3.639,3.886,4.205,4.584, & 157 5.206,6.019,7.648,9.234,12.391,17.220, & 158 2.336,2.552,2.781,2.979,3.236,3.540, & 159 4.046,4.711,6.056,7.388,10.093,14.313, & 160 1.777,1.949,2.134,2.292,2.503,2.751, & 161 3.166,3.712,4.828,5.949,8.264,11.922, & 150 5.751,6.215,6.690,7.024,7.599,8.195,9.156,10.355,12.660,14.823,18.908,24.508, & 151 4.320,4.675,5.052,5.375,5.787,6.274,7.066,8.083,10.088,12.003,15.697,21.133, & 152 3.079,3.351,3.639,3.886,4.205,4.584,5.206,6.019,7.648,9.234,12.391,17.220, & 153 2.336,2.552,2.781,2.979,3.236,3.540,4.046,4.711,6.056,7.388,10.093,14.313, & 154 1.777,1.949,2.134,2.292,2.503,2.751,3.166,3.712,4.828,5.949,8.264,11.922, & 162 155 ! seasalt seasalt Super Coarse Soluble (SS) 163 0.218, 0.272, 0.293, 0.316, 0.343, 0.380, & 164 0.429, 0.501, 0.636, 0.755, 0.967, 1.495, & 165 0.221, 0.275, 0.297, 0.320, 0.348, 0.383, & 166 0.432, 0.509, 0.640, 0.759, 0.972, 1.510, & 167 0.224, 0.279, 0.301, 0.324, 0.352, 0.388, & 168 0.438, 0.514, 0.647, 0.768, 0.985, 1.514, & 169 0.227, 0.282, 0.303, 0.327, 0.356, 0.392, & 170 0.441, 0.518, 0.652, 0.770, 0.987, 1.529, & 171 0.230, 0.285, 0.306, 0.330, 0.359, 0.396, & 172 0.446, 0.522, 0.656, 0.777, 0.993, 1.539, & 156 0.218, 0.272, 0.293, 0.316, 0.343, 0.380, 0.429, 0.501, 0.636, 0.755, 0.967, 1.495, & 157 0.221, 0.275, 0.297, 0.320, 0.348, 0.383, 0.432, 0.509, 0.640, 0.759, 0.972, 1.510, & 158 0.224, 0.279, 0.301, 0.324, 0.352, 0.388, 0.438, 0.514, 0.647, 0.768, 0.985, 1.514, & 159 0.227, 0.282, 0.303, 0.327, 0.356, 0.392, 0.441, 0.518, 0.652, 0.770, 0.987, 1.529, & 160 0.230, 0.285, 0.306, 0.330, 0.359, 0.396, 0.446, 0.522, 0.656, 0.777, 0.993, 1.539, & 173 161 ! seasalt seasalt Coarse Soluble (CS) 174 0.578, 0.706, 0.756, 0.809, 0.876, 0.964, & 175 1.081, 1.256, 1.577, 1.858, 2.366, 3.613, & 176 0.598, 0.725, 0.779, 0.833, 0.898, 0.990, & 177 1.109, 1.290, 1.609, 1.889, 2.398, 3.682, & 178 0.619, 0.750, 0.802, 0.857, 0.927, 1.022, & 179 1.141, 1.328, 1.648, 1.939, 2.455, 3.729, & 180 0.633, 0.767, 0.820, 0.879, 0.948, 1.044, & 181 1.167, 1.353, 1.683, 1.969, 2.491, 3.785, & 182 0.648, 0.785, 0.838, 0.896, 0.967, 1.066, & 183 1.192, 1.381, 1.714, 2.006, 2.531, 3.836, & 162 0.578, 0.706, 0.756, 0.809, 0.876, 0.964, 1.081, 1.256, 1.577, 1.858, 2.366, 3.613, & 163 0.598, 0.725, 0.779, 0.833, 0.898, 0.990, 1.109, 1.290, 1.609, 1.889, 2.398, 3.682, & 164 0.619, 0.750, 0.802, 0.857, 0.927, 1.022, 1.141, 1.328, 1.648, 1.939, 2.455, 3.729, & 165 0.633, 0.767, 0.820, 0.879, 0.948, 1.044, 1.167, 1.353, 1.683, 1.969, 2.491, 3.785, & 166 0.648, 0.785, 0.838, 0.896, 0.967, 1.066, 1.192, 1.381, 1.714, 2.006, 2.531, 3.836, & 184 167 ! seasalt seasalt Accumulation Soluble (AS) 185 4.432, 5.899, 6.505, 7.166, 7.964, 7.962, & 186 9.232,11.257,14.979,18.337,24.223,37.811, & 187 3.298, 4.569, 5.110, 5.709, 6.446, 6.268, & 188 7.396, 9.246,12.787,16.113,22.197,37.136, & 189 2.340, 3.358, 3.803, 4.303, 4.928, 4.696, & 190 5.629, 7.198,10.308,13.342,19.120,34.296, & 191 1.789, 2.626, 2.999, 3.422, 3.955, 3.730, & 192 4.519, 5.864, 8.593,11.319,16.653,31.331, & 193 1.359, 2.037, 2.343, 2.693, 3.139, 2.940, & 194 3.596, 4.729, 7.076, 9.469,14.266,28.043 / 168 4.432, 5.899, 6.505, 7.166, 7.964, 7.962, 9.232,11.257,14.979,18.337,24.223,37.811, & 169 3.298, 4.569, 5.110, 5.709, 6.446, 6.268, 7.396, 9.246,12.787,16.113,22.197,37.136, & 170 2.340, 3.358, 3.803, 4.303, 4.928, 4.696, 5.629, 7.198,10.308,13.342,19.120,34.296, & 171 1.789, 2.626, 2.999, 3.422, 3.955, 3.730, 4.519, 5.864, 8.593,11.319,16.653,31.331, & 172 1.359, 2.037, 2.343, 2.693, 3.139, 2.940, 3.596, 4.729, 7.076, 9.469,14.266,28.043 / 195 173 196 174 DATA alpha_aeri_5wv/ & … … 201 179 ! pom insoluble 202 180 5.042, 3.101, 1.890, 1.294, 0.934/ 181 182 ! internal mixture 183 DATA alpha_MG_5wv/ & 184 ! bc content = 0.001 185 7.930,7.930,7.930,7.930,7.930,7.930,7.930,7.930,10.893,12.618,14.550,16.613, & 186 7.658,7.658,7.658,7.658,7.658,7.658,7.658,7.658,10.351,11.879,13.642,15.510, & 187 7.195,7.195,7.195,7.195,7.195,7.195,7.195,7.195,9.551,10.847,12.381,13.994, & 188 6.736,6.736,6.736,6.736,6.736,6.736,6.736,6.736,8.818,9.938,11.283,12.687, & 189 6.277,6.277,6.277,6.277,6.277,6.277,6.277,6.277,8.123,9.094,10.275,11.501, & 190 ! bc content = 0.01 191 7.930,7.930,7.930,7.930,7.930,7.930,7.930,7.930,10.893,12.618,14.550,16.613, & 192 7.658,7.658,7.658,7.658,7.658,7.658,7.658,7.658,10.351,11.879,13.642,15.510, & 193 7.195,7.195,7.195,7.195,7.195,7.195,7.195,7.195,9.551,10.847,12.381,13.994, & 194 6.736,6.736,6.736,6.736,6.736,6.736,6.736,6.736,8.818,9.938,11.283,12.687, & 195 6.277,6.277,6.277,6.277,6.277,6.277,6.277,6.277,8.123,9.094,10.275,11.501, & 196 ! bc content = 0.02 197 7.930,7.930,7.930,7.930,7.930,7.930,7.930,7.930,10.893,12.618,14.550,16.613, & 198 7.658,7.658,7.658,7.658,7.658,7.658,7.658,7.658,10.351,11.879,13.642,15.510, & 199 7.195,7.195,7.195,7.195,7.195,7.195,7.195,7.195,9.551,10.847,12.381,13.994, & 200 6.736,6.736,6.736,6.736,6.736,6.736,6.736,6.736,8.818,9.938,11.283,12.687, & 201 6.277,6.277,6.277,6.277,6.277,6.277,6.277,6.277,8.123,9.094,10.275,11.501, & 202 ! bc content = 0.05 203 7.930,7.930,7.930,7.930,7.930,7.930,7.930,7.930,10.893,12.618,14.550,16.613, & 204 7.658,7.658,7.658,7.658,7.658,7.658,7.658,7.658,10.351,11.879,13.642,15.510, & 205 7.195,7.195,7.195,7.195,7.195,7.195,7.195,7.195,9.551,10.847,12.381,13.994, & 206 6.736,6.736,6.736,6.736,6.736,6.736,6.736,6.736,8.818,9.938,11.283,12.687, & 207 6.277,6.277,6.277,6.277,6.277,6.277,6.277,6.277,8.123,9.094,10.275,11.501, & 208 ! bc content = 0.10 209 7.930,7.930,7.930,7.930,7.930,7.930,7.930,7.930,10.893,12.618,14.550,16.613, & 210 7.658,7.658,7.658,7.658,7.658,7.658,7.658,7.658,10.351,11.879,13.642,15.510, & 211 7.195,7.195,7.195,7.195,7.195,7.195,7.195,7.195,9.551,10.847,12.381,13.994, & 212 6.736,6.736,6.736,6.736,6.736,6.736,6.736,6.736,8.818,9.938,11.283,12.687, & 213 6.277,6.277,6.277,6.277,6.277,6.277,6.277,6.277,8.123,9.094,10.275,11.501 / 214 203 215 ! 204 216 ! Initialisations … … 251 263 aerosol_name(8) = id_ASSSM_phy 252 264 aerosol_name(9) = id_CIDUSTM_phy 253 aerosol_name(10) 265 aerosol_name(10)= id_CSSO4M_phy 254 266 ENDIF 255 267 … … 289 301 soluble=.TRUE. 290 302 spsol=3 291 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD303 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 292 304 ELSEIF (aerosol_name(m).EQ.id_CSSO4M_phy) THEN 293 305 soluble=.TRUE. 294 306 spsol=4 295 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD307 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 296 308 ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN 297 309 soluble=.TRUE. … … 325 337 IF (soluble) THEN ! For soluble aerosol 326 338 339 !--treat special case of soluble BC internal mixture 340 IF (spsol.EQ.1 .AND. flag_bc_internal_mixture) THEN 341 342 DO k=1, klev 343 DO i=1, klon 344 345 BC_massfra = m_allaer(i,k,id_ASBCM_phy)/(m_allaer(i,k,id_ASBCM_phy)+m_allaer(i,k,id_ASSO4M_phy)) 346 347 IF (BC_massfra.GE.0.10) THEN 348 classbc = 5 349 ELSEIF (BC_massfra.GE.0.05) THEN 350 classbc = 4 351 ELSEIF (BC_massfra.GE.0.02) THEN 352 classbc = 3 353 ELSEIF (BC_massfra.GE.0.01) THEN 354 classbc = 2 355 ELSE 356 classbc = 1 357 ENDIF 358 359 tau_ae5wv_int = alpha_MG_5wv(RH_num(i,k),la,classbc)+DELTA(i,k)* & 360 (alpha_MG_5wv(RH_num(i,k)+1,la,classbc) - & 361 alpha_MG_5wv(RH_num(i,k),la,classbc)) 362 tau(i,k,la,aerindex) = m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*tau_ae5wv_int*fac 363 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 364 ENDDO 365 ENDDO 366 367 !--other cases of soluble aerosols 368 ELSE 369 327 370 DO k=1, klev 328 371 DO i=1, klon … … 334 377 ENDDO 335 378 ENDDO 379 380 ENDIF 336 381 337 ELSE ! For insoluble aerosol 382 ! cases of insoluble aerosol 383 ELSE 338 384 339 385 DO k=1, klev -
LMDZ5/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90
r2634 r2644 3 3 ! 4 4 SUBROUTINE AEROPT_6BANDS_RRTM ( & 5 pdel, m_allaer, delt,RHcl, &5 pdel, m_allaer, RHcl, & 6 6 tau_allaer, piz_allaer, & 7 7 cg_allaer, m_allaer_pi, & 8 flag_aerosol, zrho )8 flag_aerosol, flag_bc_internal_mixture, zrho ) 9 9 10 10 USE dimphy … … 28 28 ! 29 29 REAL, DIMENSION(klon,klev), INTENT(in) :: pdel 30 REAL, INTENT(in) :: delt31 30 REAL, DIMENSION(klon,klev,naero_tot), INTENT(in) :: m_allaer 32 31 REAL, DIMENSION(klon,klev,naero_tot), INTENT(in) :: m_allaer_pi 33 32 REAL, DIMENSION(klon,klev), INTENT(in) :: RHcl ! humidite relative ciel clair 34 33 INTEGER, INTENT(in) :: flag_aerosol 34 LOGICAL, INTENT(in) :: flag_bc_internal_mixture 35 35 REAL, DIMENSION(klon,klev), INTENT(in) :: zrho 36 36 ! … … 71 71 72 72 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: tau_ae 73 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: tau_ae_pi74 73 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: piz_ae 75 74 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: cg_ae 75 76 REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) :: tau_ae_pi 77 REAL, DIMENSION(klon,klev,id_ASBCM_phy:id_ASBCM_phy,nbands_sw_rrtm) :: piz_ae_pi 78 REAL, DIMENSION(klon,klev,id_ASBCM_phy:id_ASBCM_phy,nbands_sw_rrtm) :: cg_ae_pi 76 79 ! 77 80 ! Proprietes optiques … … 83 86 REAL:: piz_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble) !-- unit 84 87 REAL:: piz_aeri_6bands(nbands_sw_rrtm,naero_insoluble) !-- unit 85 86 INTEGER :: id 87 REAL :: tmp_var, tmp_var_pi 88 ! 89 ! BC internal mixture 90 ! 91 INTEGER, PARAMETER :: nbclassbc = 5 ! Added by Rong Wang/OB for the 5 fractions 92 ! of BC in the soluble mode: 93 ! bc_content/0.001, 0.01, 0.02, 0.05, 0.1/ 94 ! for Maxwell-Garnet internal mixture 95 ! Detailed theory can be found in R. Wang Estimation of global black carbon direct 96 ! radiative forcing and its uncertainty constrained by observations. J. 97 ! Geophys. Res. Atmos. Added by R. Wang and OB 98 REAL :: alpha_MG_6bands(nbre_RH,nbands_sw_rrtm,nbclassbc) 99 REAL :: cg_MG_6bands(nbre_RH,nbands_sw_rrtm,nbclassbc) 100 REAL :: piz_MG_6bands(nbre_RH,nbands_sw_rrtm,nbclassbc) 101 ! 102 INTEGER :: id, classbc, classbc_pi 103 REAL :: tmp_var, tmp_var_pi, BC_massfra, BC_massfra_pi 104 105 ! 106 REAL, PARAMETER :: tau_min = 1.e-15 107 ! REAL, PARAMETER :: tau_min = 1.e-7 88 108 89 109 !*************************************************************************** … … 268 288 0.973, 0.973, 0.972, 0.940, 0.816, 0.663 / 269 289 290 ! Added by R. Wang (July 31 2016) 291 ! properties for BC assuming Maxwell-Garnett rule and internal mixture 292 293 DATA alpha_MG_6bands/ & 294 ! bc content = 0.001 295 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 296 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 297 5.900, 5.900, 5.900, 5.900, 5.900, 6.502, 7.151, 8.496, 9.818, 9.965,10.124,11.564, & 298 4.284, 4.284, 4.284, 4.284, 4.284, 4.721, 5.193, 6.169, 7.129, 7.236, 7.352, 8.397, & 299 2.163, 2.163, 2.163, 2.163, 2.163, 2.384, 2.622, 3.115, 3.600, 3.654, 3.712, 4.240, & 300 0.966, 0.966, 0.966, 0.966, 0.966, 1.065, 1.171, 1.392, 1.608, 1.632, 1.658, 1.894, & 301 ! bc content = 0.01 302 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 303 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 304 5.900, 5.900, 5.900, 5.900, 5.900, 6.502, 7.151, 8.496, 9.818, 9.965,10.124,11.564, & 305 4.284, 4.284, 4.284, 4.284, 4.284, 4.721, 5.193, 6.169, 7.129, 7.236, 7.352, 8.397, & 306 2.163, 2.163, 2.163, 2.163, 2.163, 2.384, 2.622, 3.115, 3.600, 3.654, 3.712, 4.240, & 307 0.966, 0.966, 0.966, 0.966, 0.966, 1.065, 1.171, 1.392, 1.608, 1.632, 1.658, 1.894, & 308 ! bc content = 0.02 309 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 310 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 311 5.900, 5.900, 5.900, 5.900, 5.900, 6.502, 7.151, 8.496, 9.818, 9.965,10.124,11.564, & 312 4.284, 4.284, 4.284, 4.284, 4.284, 4.721, 5.193, 6.169, 7.129, 7.236, 7.352, 8.397, & 313 2.163, 2.163, 2.163, 2.163, 2.163, 2.384, 2.622, 3.115, 3.600, 3.654, 3.712, 4.240, & 314 0.966, 0.966, 0.966, 0.966, 0.966, 1.065, 1.171, 1.392, 1.608, 1.632, 1.658, 1.894, & 315 ! bc content = 0.05 316 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 317 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 318 5.900, 5.900, 5.900, 5.900, 5.900, 6.502, 7.151, 8.496, 9.818, 9.965,10.124,11.564, & 319 4.284, 4.284, 4.284, 4.284, 4.284, 4.721, 5.193, 6.169, 7.129, 7.236, 7.352, 8.397, & 320 2.163, 2.163, 2.163, 2.163, 2.163, 2.384, 2.622, 3.115, 3.600, 3.654, 3.712, 4.240, & 321 0.966, 0.966, 0.966, 0.966, 0.966, 1.065, 1.171, 1.392, 1.608, 1.632, 1.658, 1.894, & 322 ! bc content = 0.10 323 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 324 6.497, 6.497, 6.497, 6.497, 6.497, 7.160, 7.875, 9.356,10.811,10.974,11.149,12.734, & 325 5.900, 5.900, 5.900, 5.900, 5.900, 6.502, 7.151, 8.496, 9.818, 9.965,10.124,11.564, & 326 4.284, 4.284, 4.284, 4.284, 4.284, 4.721, 5.193, 6.169, 7.129, 7.236, 7.352, 8.397, & 327 2.163, 2.163, 2.163, 2.163, 2.163, 2.384, 2.622, 3.115, 3.600, 3.654, 3.712, 4.240, & 328 0.966, 0.966, 0.966, 0.966, 0.966, 1.065, 1.171, 1.392, 1.608, 1.632, 1.658, 1.894 / 329 330 DATA cg_MG_6bands/ & 331 ! bc content = 0.001 332 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 333 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 334 0.643, 0.643, 0.643, 0.654, 0.662, 0.670, 0.677, 0.688, 0.698, 0.704, 0.707, 0.715, & 335 0.513, 0.513, 0.513, 0.522, 0.530, 0.536, 0.542, 0.552, 0.560, 0.565, 0.568, 0.575, & 336 0.321, 0.321, 0.321, 0.323, 0.325, 0.327, 0.328, 0.331, 0.333, 0.334, 0.335, 0.337, & 337 0.153, 0.153, 0.153, 0.149, 0.145, 0.142, 0.139, 0.135, 0.130, 0.128, 0.127, 0.123, & 338 ! bc content = 0.01 339 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 340 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 341 0.643, 0.643, 0.643, 0.654, 0.662, 0.670, 0.677, 0.688, 0.698, 0.704, 0.707, 0.715, & 342 0.513, 0.513, 0.513, 0.522, 0.530, 0.536, 0.542, 0.552, 0.560, 0.565, 0.568, 0.575, & 343 0.321, 0.321, 0.321, 0.323, 0.325, 0.327, 0.328, 0.331, 0.333, 0.334, 0.335, 0.337, & 344 0.153, 0.153, 0.153, 0.149, 0.145, 0.142, 0.139, 0.135, 0.130, 0.128, 0.127, 0.123, & 345 ! bc content = 0.02 346 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 347 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 348 0.643, 0.643, 0.643, 0.654, 0.662, 0.670, 0.677, 0.688, 0.698, 0.704, 0.707, 0.715, & 349 0.513, 0.513, 0.513, 0.522, 0.530, 0.536, 0.542, 0.552, 0.560, 0.565, 0.568, 0.575, & 350 0.321, 0.321, 0.321, 0.323, 0.325, 0.327, 0.328, 0.331, 0.333, 0.334, 0.335, 0.337, & 351 0.153, 0.153, 0.153, 0.149, 0.145, 0.142, 0.139, 0.135, 0.130, 0.128, 0.127, 0.123, & 352 ! bc content = 0.05 353 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 354 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 355 0.643, 0.643, 0.643, 0.654, 0.662, 0.670, 0.677, 0.688, 0.698, 0.704, 0.707, 0.715, & 356 0.513, 0.513, 0.513, 0.522, 0.530, 0.536, 0.542, 0.552, 0.560, 0.565, 0.568, 0.575, & 357 0.321, 0.321, 0.321, 0.323, 0.325, 0.327, 0.328, 0.331, 0.333, 0.334, 0.335, 0.337, & 358 0.153, 0.153, 0.153, 0.149, 0.145, 0.142, 0.139, 0.135, 0.130, 0.128, 0.127, 0.123, & 359 ! bc content = 0.10 360 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 361 0.721, 0.721, 0.721, 0.729, 0.735, 0.741, 0.746, 0.754, 0.762, 0.766, 0.769, 0.775, & 362 0.643, 0.643, 0.643, 0.654, 0.662, 0.670, 0.677, 0.688, 0.698, 0.704, 0.707, 0.715, & 363 0.513, 0.513, 0.513, 0.522, 0.530, 0.536, 0.542, 0.552, 0.560, 0.565, 0.568, 0.575, & 364 0.321, 0.321, 0.321, 0.323, 0.325, 0.327, 0.328, 0.331, 0.333, 0.334, 0.335, 0.337, & 365 0.153, 0.153, 0.153, 0.149, 0.145, 0.142, 0.139, 0.135, 0.130, 0.128, 0.127, 0.123 / 366 367 DATA piz_MG_6bands/ & 368 ! bc content = 0.001 369 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 370 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 371 0.445, 0.445, 0.445, 0.445, 0.445, 0.521, 0.583, 0.679, 0.741, 0.747, 0.753, 0.798, & 372 0.394, 0.394, 0.394, 0.394, 0.394, 0.477, 0.545, 0.649, 0.718, 0.724, 0.730, 0.779, & 373 0.267, 0.267, 0.267, 0.267, 0.267, 0.365, 0.446, 0.571, 0.652, 0.660, 0.667, 0.725, & 374 0.121, 0.121, 0.121, 0.121, 0.121, 0.139, 0.155, 0.178, 0.193, 0.195, 0.196, 0.207, & 375 ! bc content = 0.01 376 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 377 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 378 0.445, 0.445, 0.445, 0.445, 0.445, 0.521, 0.583, 0.679, 0.741, 0.747, 0.753, 0.798, & 379 0.394, 0.394, 0.394, 0.394, 0.394, 0.477, 0.545, 0.649, 0.718, 0.724, 0.730, 0.779, & 380 0.267, 0.267, 0.267, 0.267, 0.267, 0.365, 0.446, 0.571, 0.652, 0.660, 0.667, 0.725, & 381 0.121, 0.121, 0.121, 0.121, 0.121, 0.139, 0.155, 0.178, 0.193, 0.195, 0.196, 0.207, & 382 ! bc content = 0.02 383 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 384 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 385 0.445, 0.445, 0.445, 0.445, 0.445, 0.521, 0.583, 0.679, 0.741, 0.747, 0.753, 0.798, & 386 0.394, 0.394, 0.394, 0.394, 0.394, 0.477, 0.545, 0.649, 0.718, 0.724, 0.730, 0.779, & 387 0.267, 0.267, 0.267, 0.267, 0.267, 0.365, 0.446, 0.571, 0.652, 0.660, 0.667, 0.725, & 388 0.121, 0.121, 0.121, 0.121, 0.121, 0.139, 0.155, 0.178, 0.193, 0.195, 0.196, 0.207, & 389 ! bc content = 0.05 390 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 391 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 392 0.445, 0.445, 0.445, 0.445, 0.445, 0.521, 0.583, 0.679, 0.741, 0.747, 0.753, 0.798, & 393 0.394, 0.394, 0.394, 0.394, 0.394, 0.477, 0.545, 0.649, 0.718, 0.724, 0.730, 0.779, & 394 0.267, 0.267, 0.267, 0.267, 0.267, 0.365, 0.446, 0.571, 0.652, 0.660, 0.667, 0.725, & 395 0.121, 0.121, 0.121, 0.121, 0.121, 0.139, 0.155, 0.178, 0.193, 0.195, 0.196, 0.207, & 396 ! bc content = 0.10 397 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 398 0.460, 0.460, 0.460, 0.460, 0.460, 0.534, 0.594, 0.688, 0.748, 0.754, 0.760, 0.803, & 399 0.445, 0.445, 0.445, 0.445, 0.445, 0.521, 0.583, 0.679, 0.741, 0.747, 0.753, 0.798, & 400 0.394, 0.394, 0.394, 0.394, 0.394, 0.477, 0.545, 0.649, 0.718, 0.724, 0.730, 0.779, & 401 0.267, 0.267, 0.267, 0.267, 0.267, 0.365, 0.446, 0.571, 0.652, 0.660, 0.667, 0.725, & 402 0.121, 0.121, 0.121, 0.121, 0.121, 0.139, 0.155, 0.178, 0.193, 0.195, 0.196, 0.207 / 403 270 404 !----BEGINNING OF CALCULATIONS 271 405 … … 342 476 343 477 tau_ae(:,:,:,:)=0. 344 tau_ae_pi(:,:,:,:)=0.345 478 piz_ae(:,:,:,:)=0. 346 479 cg_ae(:,:,:,:)=0. 480 481 tau_ae_pi(:,:,:,:)=0. 482 piz_ae_pi(:,:,:,:)=0. 483 cg_ae_pi(:,:,:,:)=0. 347 484 348 485 DO m=1,nb_aer ! tau is only computed for each mass … … 357 494 soluble=.TRUE. 358 495 spsol=3 359 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD496 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 360 497 ELSEIF (aerosol_name(m).EQ.id_CSSO4M_phy) THEN 361 498 soluble=.TRUE. 362 499 spsol=4 363 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD500 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 364 501 ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN 365 502 soluble=.TRUE. … … 384 521 ENDIF 385 522 523 !--shortname for aerosol index 386 524 id=aerosol_name(m) 387 525 388 526 IF (soluble) THEN 389 527 390 DO k=1, klev 391 DO i=1, klon 392 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 393 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 394 395 DO inu=1,NSW 396 397 tau_ae2b_int= alpha_aers_6bands(RH_num(i,k),inu,spsol)+ & 398 delta(i,k)* (alpha_aers_6bands(RH_num(i,k)+1,inu,spsol) - & 399 alpha_aers_6bands(RH_num(i,k),inu,spsol)) 528 !--here we treat the special case of soluble BC internal mixture with Maxwell-Garnett rule 529 IF (spsol.EQ.1 .AND. flag_bc_internal_mixture) THEN 530 531 DO k=1, klev 532 DO i=1, klon 533 534 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 535 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 536 537 ! Calculate the dry BC/(BC+SUL) mass ratio for all (natural+anthropogenic) aerosols 538 BC_massfra = m_allaer(i,k,id_ASBCM_phy)/(m_allaer(i,k,id_ASBCM_phy)+m_allaer(i,k,id_ASSO4M_phy)) 539 540 IF (BC_massfra.GE.0.10) THEN 541 classbc = 5 542 ELSEIF (BC_massfra.GE.0.05) THEN 543 classbc = 4 544 ELSEIF (BC_massfra.GE.0.02) THEN 545 classbc = 3 546 ELSEIF (BC_massfra.GE.0.01) THEN 547 classbc = 2 548 ELSE 549 classbc = 1 550 ENDIF 551 552 ! Calculate the dry BC/(BC+SUL) mass ratio for natural aerosols 553 BC_massfra_pi = m_allaer_pi(i,k,id_ASBCM_phy)/(m_allaer_pi(i,k,id_ASBCM_phy)+m_allaer_pi(i,k,id_ASSO4M_phy)) 554 555 IF (BC_massfra_pi.GE.0.10) THEN 556 classbc_pi = 5 557 ELSEIF (BC_massfra_pi.GE.0.05) THEN 558 classbc_pi = 4 559 ELSEIF (BC_massfra_pi.GE.0.02) THEN 560 classbc_pi = 3 561 ELSEIF (BC_massfra_pi.GE.0.01) THEN 562 classbc_pi = 2 563 ELSE 564 classbc_pi = 1 565 ENDIF 566 567 DO inu=1,NSW 568 569 !--all aerosols 570 tau_ae2b_int= alpha_MG_6bands(RH_num(i,k),inu,classbc)+ & 571 delta(i,k)* (alpha_MG_6bands(RH_num(i,k)+1,inu,classbc) - & 572 alpha_MG_6bands(RH_num(i,k),inu,classbc)) 400 573 401 piz_ae2b_int = piz_aers_6bands(RH_num(i,k),inu,spsol) + &402 delta(i,k)* (piz_aers_6bands(RH_num(i,k)+1,inu,spsol) - &403 piz_aers_6bands(RH_num(i,k),inu,spsol))574 piz_ae2b_int = piz_MG_6bands(RH_num(i,k),inu,classbc) + & 575 delta(i,k)* (piz_MG_6bands(RH_num(i,k)+1,inu,classbc) - & 576 piz_MG_6bands(RH_num(i,k),inu,classbc)) 404 577 405 cg_ae2b_int = cg_aers_6bands(RH_num(i,k),inu,spsol) + & 406 delta(i,k)* (cg_aers_6bands(RH_num(i,k)+1,inu,spsol) - & 407 cg_aers_6bands(RH_num(i,k),inu,spsol)) 408 409 tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int 410 tau_ae_pi(i,k,id,inu) = tmp_var_pi* tau_ae2b_int 411 piz_ae(i,k,id,inu) = piz_ae2b_int 412 cg_ae(i,k,id,inu) = cg_ae2b_int 413 578 cg_ae2b_int = cg_MG_6bands(RH_num(i,k),inu,classbc) + & 579 delta(i,k)* (cg_MG_6bands(RH_num(i,k)+1,inu,classbc) - & 580 cg_MG_6bands(RH_num(i,k),inu,classbc)) 581 582 tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int 583 piz_ae(i,k,id,inu) = piz_ae2b_int 584 cg_ae(i,k,id,inu) = cg_ae2b_int 585 586 !--natural aerosols 587 tau_ae2b_int= alpha_MG_6bands(RH_num(i,k),inu,classbc_pi)+ & 588 delta(i,k)* (alpha_MG_6bands(RH_num(i,k)+1,inu,classbc_pi) - & 589 alpha_MG_6bands(RH_num(i,k),inu,classbc_pi)) 590 591 piz_ae2b_int = piz_MG_6bands(RH_num(i,k),inu,classbc_pi) + & 592 delta(i,k)* (piz_MG_6bands(RH_num(i,k)+1,inu,classbc_pi) - & 593 piz_MG_6bands(RH_num(i,k),inu,classbc_pi)) 594 595 cg_ae2b_int = cg_MG_6bands(RH_num(i,k),inu,classbc_pi) + & 596 delta(i,k)* (cg_MG_6bands(RH_num(i,k)+1,inu,classbc_pi) - & 597 cg_MG_6bands(RH_num(i,k),inu,classbc_pi)) 598 599 tau_ae_pi(i,k,id,inu) = tmp_var_pi* tau_ae2b_int 600 piz_ae_pi(i,k,id,inu) = piz_ae2b_int 601 cg_ae_pi(i,k,id,inu) = cg_ae2b_int 602 603 ENDDO 414 604 ENDDO 415 605 ENDDO 416 ENDDO 606 607 !--else treat all other cases of soluble aerosols 608 ELSE 609 610 DO k=1, klev 611 DO i=1, klon 612 tmp_var=m_allaer(i,k,spsol)/1.e6*zdh(i,k)*fac 613 tmp_var_pi=m_allaer_pi(i,k,spsol)/1.e6*zdh(i,k)*fac 614 615 DO inu=1,NSW 616 617 tau_ae2b_int= alpha_aers_6bands(RH_num(i,k),inu,spsol)+ & 618 delta(i,k)* (alpha_aers_6bands(RH_num(i,k)+1,inu,spsol) - & 619 alpha_aers_6bands(RH_num(i,k),inu,spsol)) 620 621 piz_ae2b_int = piz_aers_6bands(RH_num(i,k),inu,spsol) + & 622 delta(i,k)* (piz_aers_6bands(RH_num(i,k)+1,inu,spsol) - & 623 piz_aers_6bands(RH_num(i,k),inu,spsol)) 624 625 cg_ae2b_int = cg_aers_6bands(RH_num(i,k),inu,spsol) + & 626 delta(i,k)* (cg_aers_6bands(RH_num(i,k)+1,inu,spsol) - & 627 cg_aers_6bands(RH_num(i,k),inu,spsol)) 628 629 tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int 630 tau_ae_pi(i,k,id,inu) = tmp_var_pi* tau_ae2b_int 631 piz_ae(i,k,id,inu) = piz_ae2b_int 632 cg_ae(i,k,id,inu) = cg_ae2b_int 633 634 ENDDO 635 ENDDO 636 ENDDO 637 638 !--external mixture case for soluble BC 639 IF (spsol.EQ.1) THEN 640 piz_ae_pi(:,:,id,:) = piz_ae(:,:,id,:) 641 cg_ae_pi(:,:,id,:) = cg_ae(:,:,id,:) 642 ENDIF 643 644 ENDIF 417 645 418 646 ELSE ! For all aerosol insoluble components … … 443 671 DO k=1, klev 444 672 DO i=1, klon 445 !--a nthropogenicaerosol673 !--all (natural + anthropogenic) aerosol 446 674 tau_allaer(i,k,2,inu)=tau_ae(i,k,id_ASSO4M_phy,inu)+tau_ae(i,k,id_CSSO4M_phy,inu)+ & 447 675 tau_ae(i,k,id_ASBCM_phy,inu)+tau_ae(i,k,id_AIBCM_phy,inu)+ & … … 449 677 tau_ae(i,k,id_ASSSM_phy,inu)+tau_ae(i,k,id_CSSSM_phy,inu)+ & 450 678 tau_ae(i,k,id_SSSSM_phy,inu)+ tau_ae(i,k,id_CIDUSTM_phy,inu) 451 tau_allaer(i,k,2,inu)=MAX(tau_allaer(i,k,2,inu), 1e-15)452 453 piz_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ &454 tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ &455 tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)+ &456 tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ &457 tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ &458 tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ &459 tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ &460 tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ &461 tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ &679 tau_allaer(i,k,2,inu)=MAX(tau_allaer(i,k,2,inu),tau_min) 680 681 piz_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ & 682 tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ & 683 tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)+ & 684 tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ & 685 tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ & 686 tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ & 687 tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ & 688 tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ & 689 tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ & 462 690 tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) & 463 691 /tau_allaer(i,k,2,inu) 464 piz_allaer(i,k,2,inu)=MAX(piz_allaer(i,k,2,inu),0.01) 692 piz_allaer(i,k,2,inu)=MIN(MAX(piz_allaer(i,k,2,inu),0.01),1.0) 693 IF (tau_allaer(i,k,2,inu).LE.tau_min) piz_allaer(i,k,2,inu)=1.0 465 694 466 695 cg_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+ & 467 696 tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+ & 468 tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)*cg_ae(i,k,id_ASBCM_phy,inu)+ &469 tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ &697 tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)*cg_ae(i,k,id_ASBCM_phy,inu)+ & 698 tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ & 470 699 tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ & 471 700 tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+ & 472 tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ &473 tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ &474 tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ &701 tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ & 702 tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ & 703 tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ & 475 704 tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ & 476 705 (tau_allaer(i,k,2,inu)*piz_allaer(i,k,2,inu)) 706 cg_allaer(i,k,2,inu)=MIN(MAX(cg_allaer(i,k,2,inu),0.0),1.0) 477 707 478 708 !--natural aerosol 709 !--ASBCM aerosols take _pi value because of internal mixture option 479 710 tau_allaer(i,k,1,inu)=tau_ae_pi(i,k,id_ASSO4M_phy,inu)+tau_ae_pi(i,k,id_CSSO4M_phy,inu)+ & 480 711 tau_ae_pi(i,k,id_ASBCM_phy,inu)+tau_ae_pi(i,k,id_AIBCM_phy,inu)+ & … … 482 713 tau_ae_pi(i,k,id_ASSSM_phy,inu)+tau_ae_pi(i,k,id_CSSSM_phy,inu)+ & 483 714 tau_ae_pi(i,k,id_SSSSM_phy,inu)+ tau_ae_pi(i,k,id_CIDUSTM_phy,inu) 484 tau_allaer(i,k,1,inu)=MAX(tau_allaer(i,k,1,inu), 1e-15)485 486 piz_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ &487 tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ &488 tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae (i,k,id_ASBCM_phy,inu)+&489 tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ &490 tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ &491 tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ &492 tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ &493 tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ &494 tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ &715 tau_allaer(i,k,1,inu)=MAX(tau_allaer(i,k,1,inu),tau_min) 716 717 piz_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ & 718 tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ & 719 tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae_pi(i,k,id_ASBCM_phy,inu)+ & 720 tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ & 721 tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ & 722 tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ & 723 tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ & 724 tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ & 725 tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ & 495 726 tau_ae_pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) & 496 727 /tau_allaer(i,k,1,inu) 497 piz_allaer(i,k,1,inu)=MAX(piz_allaer(i,k,1,inu),0.01) 498 499 cg_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+ & 500 tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+ & 501 tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)*cg_ae(i,k,id_ASBCM_phy,inu)+ & 502 tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ & 503 tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ & 504 tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+ & 505 tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ & 506 tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ & 507 tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ & 728 piz_allaer(i,k,1,inu)=MIN(MAX(piz_allaer(i,k,1,inu),0.01),1.0) 729 IF (tau_allaer(i,k,1,inu).LE.tau_min) piz_allaer(i,k,1,inu)=1.0 730 731 cg_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+ & 732 tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+ & 733 tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae_pi(i,k,id_ASBCM_phy,inu)*cg_ae_pi(i,k,id_ASBCM_phy,inu)+ & 734 tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ & 735 tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ & 736 tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+ & 737 tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ & 738 tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ & 739 tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ & 508 740 tau_ae_pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ & 509 741 (tau_allaer(i,k,1,inu)*piz_allaer(i,k,1,inu)) 742 cg_allaer(i,k,1,inu)=MIN(MAX(cg_allaer(i,k,1,inu),0.0),1.0) 510 743 511 744 ENDDO … … 513 746 ENDDO 514 747 515 !--waveband 2 and all aerosol 748 !--waveband 2 and all aerosol (third index = 2) 516 749 inu=2 517 750 DO i=1, klon -
LMDZ5/trunk/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90
r2504 r2644 2 2 ! 3 3 SUBROUTINE readaerosol_optic_rrtm(debut, aerosol_couple, & 4 new_aod, flag_aerosol, itap, rjourvrai, &4 new_aod, flag_aerosol, flag_bc_internal_mixture, itap, rjourvrai, & 5 5 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, & 6 6 tr_seri, mass_solu_aero, mass_solu_aero_pi, & … … 32 32 LOGICAL, INTENT(IN) :: new_aod 33 33 INTEGER, INTENT(IN) :: flag_aerosol 34 LOGICAL, INTENT(IN) :: flag_bc_internal_mixture 34 35 INTEGER, INTENT(IN) :: itap 35 36 REAL, INTENT(IN) :: rjourvrai … … 303 304 !--new aerosol properties 304 305 ! aeropt_6bands for rrtm 305 CALL aeropt_6bands_rrtm( &306 pdel, m_allaer, pdtphys, rhcl,&307 tau_aero, piz_aero, cg_aero, 308 m_allaer_pi, flag_aerosol, &309 zrho )306 CALL aeropt_6bands_rrtm( & 307 pdel, m_allaer, rhcl, & 308 tau_aero, piz_aero, cg_aero, & 309 m_allaer_pi, flag_aerosol, & 310 flag_bc_internal_mixture, zrho ) 310 311 311 312 ! aeropt_5wv only for validation and diagnostics 312 CALL aeropt_5wv_rrtm( & 313 pdel, m_allaer, & 314 pdtphys, rhcl, aerindex, & 315 flag_aerosol, pplay, t_seri, & 313 CALL aeropt_5wv_rrtm( & 314 pdel, m_allaer, & 315 rhcl, aerindex, & 316 flag_aerosol, & 317 flag_bc_internal_mixture, & 318 pplay, t_seri, & 316 319 tausum_aero, tau3d_aero ) 317 320
Note: See TracChangeset
for help on using the changeset viewer.