Changeset 2644


Ignore:
Timestamp:
Oct 2, 2016, 6:55:08 PM (8 years ago)
Author:
oboucher
Message:

I introduced flag_bc_internal_mixture for BC/sulphate internal mixture.
Only works for iflag_rrtm=y, NSW=6 and flag_aerosol=6 or aerosol_couple.
It has no impact at the moment as LUT for aerosol properties will have to
be changed. But the plumbing work is already done....

Location:
LMDZ5/trunk/libf
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90

    r2601 r2644  
    111111  INTEGER :: flag_aerosol
    112112  INTEGER :: flag_aerosol_strat
     113  LOGICAL :: flag_bc_internal_mixture
    113114  LOGICAL :: new_aod
    114115  REAL    :: bl95_b0, bl95_b1
     
    131132                   ok_ade, ok_aie, ok_cdnc, aerosol_couple,             &
    132133                   flag_aerosol, flag_aerosol_strat, new_aod,           &
    133                    bl95_b0, bl95_b1,                                    &
     134                   flag_bc_internal_mixture, bl95_b0, bl95_b1,          &
    134135                   read_climoz,                                         &
    135136                   alp_offset)
  • LMDZ5/trunk/libf/phylmd/conf_phys_m.F90

    r2580 r2644  
    1919       ok_ade, ok_aie, ok_cdnc, aerosol_couple, &
    2020       flag_aerosol, flag_aerosol_strat, new_aod, &
    21        bl95_b0, bl95_b1,&
     21       flag_bc_internal_mixture, bl95_b0, bl95_b1,&
    2222       read_climoz, &
    2323       alp_offset)
     
    6464    ! ok_cdnc, ok cloud droplet number concentration
    6565    ! flag_aerosol_strat : flag pour les aerosols stratos
     66    ! flag_bc_internal_mixture : use BC internal mixture if true
    6667    ! bl95_b*: parameters in the formula to link CDNC to aerosol mass conc
    6768    !
     
    7778    INTEGER              :: flag_aerosol
    7879    INTEGER              :: flag_aerosol_strat
     80    LOGICAL              :: flag_bc_internal_mixture
    7981    LOGICAL              :: new_aod
    8082    REAL                 :: bl95_b0, bl95_b1
     
    9597    INTEGER, SAVE       :: flag_aerosol_omp
    9698    INTEGER, SAVE       :: flag_aerosol_strat_omp
     99    LOGICAL, SAVE       :: flag_bc_internal_mixture_omp
    97100    LOGICAL, SAVE       :: new_aod_omp
    98101    REAL,SAVE           :: bl95_b0_omp, bl95_b1_omp
     
    398401    flag_aerosol_strat_omp = 0
    399402    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)
    400414
    401415    ! Temporary variable for testing purpose!
     
    21362150    flag_aerosol=flag_aerosol_omp
    21372151    flag_aerosol_strat=flag_aerosol_strat_omp
     2152    flag_bc_internal_mixture=flag_bc_internal_mixture_omp
    21382153    new_aod=new_aod_omp
    21392154    aer_type = aer_type_omp
     
    23112326    IF (ok_aie .AND. .NOT. ok_cdnc) THEN
    23122327       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)
    23132339    ENDIF
    23142340
  • LMDZ5/trunk/libf/phylmd/physiq_mod.F90

    r2640 r2644  
    983983    INTEGER, SAVE :: flag_aerosol
    984984    !$OMP THREADPRIVATE(flag_aerosol)
     985    LOGICAL, SAVE :: flag_bc_internal_mixture
     986    !$OMP THREADPRIVATE(flag_bc_internal_mixture)
    985987    LOGICAL, SAVE :: new_aod
    986988    !$OMP THREADPRIVATE(new_aod)
     
    11401142            ok_ade, ok_aie, ok_cdnc, aerosol_couple,  &
    11411143            flag_aerosol, flag_aerosol_strat, new_aod, &
    1142             bl95_b0, bl95_b1, &
     1144            flag_bc_internal_mixture, bl95_b0, bl95_b1, &
    11431145                                ! nv flags pour la convection et les
    11441146                                ! poches froides
     
    33883390                   !
    33893391                   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, &
    33913393                        pdtphys, pplay, paprs, t_seri, rhcl, presnivs,  &
    33923394                        tr_seri, mass_solu_aero, mass_solu_aero_pi,  &
  • LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90

    r2634 r2644  
    33!
    44
    5 SUBROUTINE AEROPT_5WV_RRTM(&
    6    pdel, m_allaer, delt, &
    7    RHcl, ai, flag_aerosol, &
    8    pplay, t_seri, &
     5SUBROUTINE AEROPT_5WV_RRTM(  &
     6   pdel, m_allaer,           &
     7   RHcl, ai, flag_aerosol,   &
     8   flag_bc_internal_mixture, &
     9   pplay, t_seri,            &
    910   tausum, tau )
    1011
     
    5455  !
    5556  REAL, DIMENSION(klon,klev), INTENT(in)   :: pdel
    56   REAL, INTENT(in)                         :: delt
    5757  REAL, DIMENSION(klon,klev,naero_tot), INTENT(in) :: m_allaer
    5858  REAL, DIMENSION(klon,klev), INTENT(in)   :: RHcl     ! humidite relative ciel clair
    5959  INTEGER,INTENT(in)                       :: flag_aerosol
     60  LOGICAL,INTENT(in)                       :: flag_bc_internal_mixture
    6061  REAL, DIMENSION(klon,klev), INTENT(in)   :: pplay
    6162  REAL, DIMENSION(klon,klev), INTENT(in)   :: t_seri
     
    106107
    107108  !
     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  !
    108121  ! Proprietes optiques
    109122  !
    110   REAL :: fact_RH(nbre_RH)
    111   INTEGER :: n
     123  REAL :: fact_RH(nbre_RH), BC_massfra
     124  INTEGER :: n, classbc
    112125
    113126! From here on we look at the optical parameters at 5 wavelengths: 
     
    117130 DATA alpha_aers_5wv/ &
    118131                                ! 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,   &
    129137                                ! 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,  &
    140143                                ! 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,     &
    151149                                ! 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,     &
    162155                           ! 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, &
    173161                           ! 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, &
    184167                           ! 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 /
    195173
    196174  DATA alpha_aeri_5wv/ &
     
    201179                                 ! pom insoluble
    202180        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
    203215  !
    204216  ! Initialisations
     
    251263     aerosol_name(8) = id_ASSSM_phy
    252264     aerosol_name(9) = id_CIDUSTM_phy
    253      aerosol_name(10) = id_CSSO4M_phy
     265     aerosol_name(10)= id_CSSO4M_phy
    254266  ENDIF
    255267
     
    289301        soluble=.TRUE.
    290302        spsol=3
    291         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
     303        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
    292304    ELSEIF (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
    293305        soluble=.TRUE.
    294306        spsol=4
    295         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
     307        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
    296308    ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN
    297309        soluble=.TRUE.
     
    325337      IF (soluble) THEN            ! For soluble aerosol
    326338
     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
    327370          DO k=1, klev
    328371            DO i=1, klon
     
    334377            ENDDO
    335378          ENDDO
     379
     380        ENDIF
    336381 
    337       ELSE                         ! For insoluble aerosol
     382      ! cases of insoluble aerosol
     383      ELSE                         
    338384
    339385        DO k=1, klev
  • LMDZ5/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90

    r2634 r2644  
    33!
    44SUBROUTINE AEROPT_6BANDS_RRTM ( &
    5      pdel, m_allaer, delt, RHcl, &
     5     pdel, m_allaer, RHcl, &
    66     tau_allaer, piz_allaer, &
    77     cg_allaer, m_allaer_pi, &
    8      flag_aerosol, zrho )
     8     flag_aerosol, flag_bc_internal_mixture, zrho )
    99
    1010  USE dimphy
     
    2828  !
    2929  REAL, DIMENSION(klon,klev),     INTENT(in)  :: pdel
    30   REAL,                           INTENT(in)  :: delt
    3130  REAL, DIMENSION(klon,klev,naero_tot),   INTENT(in)  :: m_allaer
    3231  REAL, DIMENSION(klon,klev,naero_tot),   INTENT(in)  :: m_allaer_pi
    3332  REAL, DIMENSION(klon,klev),     INTENT(in)  :: RHcl       ! humidite relative ciel clair
    3433  INTEGER,                        INTENT(in)  :: flag_aerosol
     34  LOGICAL,                        INTENT(in)  :: flag_bc_internal_mixture
    3535  REAL, DIMENSION(klon,klev),     INTENT(in)  :: zrho
    3636  !
     
    7171
    7272  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  tau_ae
    73   REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  tau_ae_pi
    7473  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  piz_ae
    7574  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
    7679  !
    7780  ! Proprietes optiques
     
    8386  REAL:: piz_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)     !-- unit
    8487  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
    88108
    89109!***************************************************************************
     
    268288  0.973, 0.973, 0.972, 0.940, 0.816, 0.663 /
    269289
     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
    270404!----BEGINNING OF CALCULATIONS
    271405
     
    342476
    343477  tau_ae(:,:,:,:)=0.
    344   tau_ae_pi(:,:,:,:)=0.
    345478  piz_ae(:,:,:,:)=0.
    346479  cg_ae(:,:,:,:)=0.
     480
     481  tau_ae_pi(:,:,:,:)=0.
     482  piz_ae_pi(:,:,:,:)=0.
     483  cg_ae_pi(:,:,:,:)=0.
    347484   
    348485  DO m=1,nb_aer   ! tau is only computed for each mass
     
    357494        soluble=.TRUE.
    358495        spsol=3
    359         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
     496        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
    360497     ELSEIF  (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
    361498        soluble=.TRUE.
    362499        spsol=4
    363         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
     500        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
    364501     ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN
    365502         soluble=.TRUE.
     
    384521     ENDIF
    385522
     523    !--shortname for aerosol index
    386524    id=aerosol_name(m)
    387525
    388526    IF (soluble) THEN
    389527
    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))
    400573                   
    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))
    404577                   
    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
    414604           ENDDO
    415605         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
    417645       
    418646     ELSE    ! For all aerosol insoluble components
     
    443671     DO k=1, klev
    444672       DO i=1, klon
    445 !--anthropogenic aerosol
     673!--all (natural + anthropogenic) aerosol
    446674         tau_allaer(i,k,2,inu)=tau_ae(i,k,id_ASSO4M_phy,inu)+tau_ae(i,k,id_CSSO4M_phy,inu)+ &
    447675                               tau_ae(i,k,id_ASBCM_phy,inu)+tau_ae(i,k,id_AIBCM_phy,inu)+   &
     
    449677                               tau_ae(i,k,id_ASSSM_phy,inu)+tau_ae(i,k,id_CSSSM_phy,inu)+   &
    450678                               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)+     &
    462690                                tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) &
    463691                                /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
    465694
    466695         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)+ &
    467696                               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)+    &
    470699                               tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ &
    471700                               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)+    &
    475704                               tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ &
    476705                               (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)
    477707
    478708!--natural aerosol
     709!--ASBCM aerosols take _pi value because of internal mixture option
    479710         tau_allaer(i,k,1,inu)=tau_ae_pi(i,k,id_ASSO4M_phy,inu)+tau_ae_pi(i,k,id_CSSO4M_phy,inu)+ &
    480711                               tau_ae_pi(i,k,id_ASBCM_phy,inu)+tau_ae_pi(i,k,id_AIBCM_phy,inu)+   &
     
    482713                               tau_ae_pi(i,k,id_ASSSM_phy,inu)+tau_ae_pi(i,k,id_CSSSM_phy,inu)+   &
    483714                               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)+     &
    495726                                tau_ae_pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) &
    496727                                /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)+       &
    508740                               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))/ &
    509741                               (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)
    510743
    511744        ENDDO
     
    513746    ENDDO
    514747   
    515 !--waveband 2 and all aerosol
     748!--waveband 2 and all aerosol (third index = 2)
    516749  inu=2
    517750  DO i=1, klon
  • LMDZ5/trunk/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90

    r2504 r2644  
    22!
    33SUBROUTINE readaerosol_optic_rrtm(debut, aerosol_couple,  &
    4      new_aod, flag_aerosol, itap, rjourvrai, &
     4     new_aod, flag_aerosol, flag_bc_internal_mixture, itap, rjourvrai, &
    55     pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &
    66     tr_seri, mass_solu_aero, mass_solu_aero_pi, &
     
    3232  LOGICAL, INTENT(IN)                      :: new_aod
    3333  INTEGER, INTENT(IN)                      :: flag_aerosol
     34  LOGICAL, INTENT(IN)                      :: flag_bc_internal_mixture
    3435  INTEGER, INTENT(IN)                      :: itap
    3536  REAL, INTENT(IN)                         :: rjourvrai
     
    303304!--new aerosol properties
    304305  ! 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 )
    310311
    311312  ! 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,                &
    316319       tausum_aero, tau3d_aero )
    317320
Note: See TracChangeset for help on using the changeset viewer.