Ignore:
Timestamp:
Oct 14, 2016, 2:57:28 PM (8 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes r2640:2664 into testing branch

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90

    r2641 r2669  
    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
Note: See TracChangeset for help on using the changeset viewer.