Changeset 2738


Ignore:
Timestamp:
Jan 2, 2017, 11:24:30 PM (8 years ago)
Author:
oboucher
Message:

Swapping the order of CSSO4 and ASSO4 aerosols (and fixing an issue on aerindex). Preparing the ground for nitrate aerosols (coarse soluble, accumulation soluble, coarse insoluble). Modifying the LW aeropt routine so that it is compatible with both INCA and climatological aerosols (for dust only). Adding a new flag ok_alw for activating aerosol direct LW effect (for dust only). This change is bit comparable for flag_aerosol=6, flag_rrtm=1, NSW=6.

Location:
LMDZ5/trunk/libf
Files:
7 edited

Legend:

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

    r2665 r2738  
    109109  INTEGER :: iflag_radia, iflag_cldcon, iflag_ratqs
    110110  REAL    :: ratqsbas, ratqshaut, tau_ratqs
    111   LOGICAL :: ok_ade, ok_aie, ok_cdnc, aerosol_couple
     111  LOGICAL :: ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple
    112112  INTEGER :: flag_aerosol
    113113  INTEGER :: flag_aerosol_strat
     
    131131                   iflag_cldcon,                                        &
    132132                   iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,            &
    133                    ok_ade, ok_aie, ok_cdnc, aerosol_couple,             &
     133                   ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple,     &
    134134                   flag_aerosol, flag_aerosol_strat, new_aod,           &
    135135                   flag_bc_internal_mixture, bl95_b0, bl95_b1,          &
  • LMDZ5/trunk/libf/phylmd/conf_phys_m.F90

    r2730 r2738  
    1717       iflag_cld_th, &
    1818       iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
    19        ok_ade, ok_aie, ok_cdnc, aerosol_couple, &
     19       ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple, &
    2020       flag_aerosol, flag_aerosol_strat, new_aod, &
    2121       flag_bc_internal_mixture, bl95_b0, bl95_b1,&
     
    6161    ! ok_instan:  sorties instantanees
    6262    ! ok_ade, ok_aie: apply or not aerosol direct and indirect effects
     63    ! ok_alw: activate aerosol LW effect
    6364    ! ok_cdnc, ok cloud droplet number concentration
    6465    ! flag_aerosol_strat : flag pour les aerosols stratos
     
    7475    LOGICAL              :: ok_LES
    7576    LOGICAL              :: callstats
    76     LOGICAL              :: ok_ade, ok_aie, ok_cdnc, aerosol_couple
     77    LOGICAL              :: ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple
    7778    INTEGER              :: flag_aerosol
    7879    INTEGER              :: flag_aerosol_strat
     
    9394    LOGICAL, SAVE       :: ok_LES_omp   
    9495    LOGICAL, SAVE       :: callstats_omp
    95     LOGICAL, SAVE       :: ok_ade_omp, ok_aie_omp, ok_cdnc_omp, aerosol_couple_omp
     96    LOGICAL, SAVE       :: ok_ade_omp, ok_aie_omp, ok_alw_omp, ok_cdnc_omp, aerosol_couple_omp
    9697    INTEGER, SAVE       :: flag_aerosol_omp
    9798    INTEGER, SAVE       :: flag_aerosol_strat_omp
     
    347348    ok_ade_omp = .FALSE.
    348349    CALL getin('ok_ade', ok_ade_omp)
     350
     351    !Config Key  = ok_alw
     352    !Config Desc = Aerosol longwave effect or not?
     353    !Config Def  = .FALSE.
     354    !Config Help = Used in radlwsw.F
     355    !
     356    ok_alw_omp = .FALSE.
     357    CALL getin('ok_alw', ok_alw_omp)
    349358
    350359    !
     
    21612170    ok_ade = ok_ade_omp
    21622171    ok_aie = ok_aie_omp
     2172    ok_alw = ok_alw_omp
    21632173    ok_cdnc = ok_cdnc_omp
    21642174    aerosol_couple = aerosol_couple_omp
     
    24682478    write(lunout,*)' ok_ade = ',ok_ade
    24692479    write(lunout,*)' ok_aie = ',ok_aie
     2480    write(lunout,*)' ok_alw = ',ok_alw
    24702481    write(lunout,*)' aerosol_couple = ', aerosol_couple
    24712482    write(lunout,*)' flag_aerosol = ', flag_aerosol
  • LMDZ5/trunk/libf/phylmd/physiq_mod.F90

    r2731 r2738  
    980980    ! Parameters
    981981    LOGICAL ok_ade, ok_aie    ! Apply aerosol (in)direct effects or not
     982    LOGICAL ok_alw            ! Apply aerosol LW effect or not
    982983    LOGICAL ok_cdnc ! ok cloud droplet number concentration (O. Boucher 01-2013)
    983984    REAL bl95_b0, bl95_b1   ! Parameter in Boucher and Lohmann (1995)
    984     SAVE ok_ade, ok_aie, ok_cdnc, bl95_b0, bl95_b1
    985     !$OMP THREADPRIVATE(ok_ade, ok_aie, ok_cdnc, bl95_b0, bl95_b1)
     985    SAVE ok_ade, ok_aie, ok_alw, ok_cdnc, bl95_b0, bl95_b1
     986    !$OMP THREADPRIVATE(ok_ade, ok_aie, ok_alw, ok_cdnc, bl95_b0, bl95_b1)
    986987    LOGICAL, SAVE :: aerosol_couple ! true  : calcul des aerosols dans INCA
    987988    ! false : lecture des aerosol dans un fichier
     
    11421143            fact_cldcon, facttemps,ok_newmicro,iflag_radia, &
    11431144            iflag_cld_th,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
    1144             ok_ade, ok_aie, ok_cdnc, aerosol_couple,  &
     1145            ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple,  &
    11451146            flag_aerosol, flag_aerosol_strat, new_aod, &
    11461147            flag_bc_internal_mixture, bl95_b0, bl95_b1, &
     
    15871588            jjmp1,nlevSTD,clevSTD,rlevSTD, dtime,ok_veget, &
    15881589            type_ocean,iflag_pbl,iflag_pbl_split,ok_mensuel,ok_journe, &
    1589             ok_hf,ok_instan,ok_LES,ok_ade,ok_aie,  &
     1590            ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, &
    15901591            read_climoz, phys_out_filestations, &
    15911592            new_aod, aerosol_couple, &
     
    32933294       !jq - introduce the aerosol direct and first indirect radiative forcings
    32943295       !jq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
    3295        IF (flag_aerosol .gt. 0) THEN
     3296       IF (flag_aerosol .GT. 0) THEN
    32963297          IF (iflag_rrtm .EQ. 0) THEN !--old radiation
    32973298             IF (.NOT. aerosol_couple) THEN
     
    33123313#ifdef CPP_RRTM
    33133314                IF (NSW.EQ.6) THEN
    3314                    !--new aerosol properties
     3315                   !--new aerosol properties SW and LW
    33153316                   !
    3316                    CALL readaerosol_optic_rrtm( debut, aerosol_couple, &
     3317                   CALL readaerosol_optic_rrtm( debut, aerosol_couple, ok_alw, &
    33173318                        new_aod, flag_aerosol, flag_bc_internal_mixture, itap, jD_cur-jD_ref, &
    33183319                        pdtphys, pplay, paprs, t_seri, rhcl, presnivs,  &
     
    33203321                        tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm,  &
    33213322                        tausum_aero, tau3d_aero)
    3322 
     3323                   !
    33233324                ELSE IF (NSW.EQ.2) THEN
    33243325                   !--for now we use the old aerosol properties
     
    33393340                   piz_aero_sw_rrtm(:,:,2,:)=piz_aero(:,:,2,:)
    33403341                   cg_aero_sw_rrtm (:,:,2,:)=cg_aero (:,:,2,:)
     3342                   !
     3343                   !--no LW optics
     3344                   tau_aero_lw_rrtm(:,:,:,:) = 1.e-15
     3345                   !
    33413346                ELSE
    33423347                   abort_message='Only NSW=2 or 6 are possible with ' &
     
    33443349                   CALL abort_physic(modname,abort_message,1)
    33453350                ENDIF
    3346 
    3347                 !--call LW optical properties for tropospheric aerosols
    3348                 !--only works for INCA aerosol (aerosol_couple = TRUE)
    3349                 CALL aeropt_lw_rrtm(aerosol_couple,paprs,tr_seri)
    3350                 !
    33513351#else
    33523352                abort_message='You should compile with -rrtm if running ' &
     
    33573357             ENDIF
    33583358          ENDIF
    3359        ELSE
     3359       ELSE   !--flag_aerosol = 0
    33603360          tausum_aero(:,:,:) = 0.
    33613361          mass_solu_aero(:,:) = 0.
  • LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90

    r2737 r2738  
    8383  INTEGER, PARAMETER :: la865 = 5
    8484  INTEGER, PARAMETER :: nbre_RH=12
    85   INTEGER, PARAMETER :: naero_soluble=7   !  1- BC soluble; 2- POM soluble; 3- SO4 acc.
    86                                           !  4- SO4 coarse; 5 seasalt super-C; 6 seasalt coarse; 7 seasalt acc.
    87   INTEGER, PARAMETER :: naero_insoluble=3 !  1- Dust; 2- BC insoluble; 3- POM insoluble
     85  INTEGER, PARAMETER :: naero_soluble=9   !  1- BC soluble; 2- POM soluble; 3- SO4 coarse
     86                                          !  4- SO4 acc; 5 seasalt super-C; 6 seasalt coarse; 7 seasalt acc.
     87                                          !  8- NO3 coarse; 9- NO3 accumulation
     88  INTEGER, PARAMETER :: naero_insoluble=4 !  1- Dust; 2- BC insoluble; 3- POM insoluble; 4- NO3 insoluble
    8889
    8990  REAL :: zrho
     
    101102  REAL :: zdh(klon,klev)
    102103 
    103    ! Soluble components 1- BC soluble; 2- POM soluble; 3- SO4 acc.; 4- SO4 coarse; 5 seasalt super-coarse; 6 seasalt coarse; 7 seasalt acc.
    104104  REAL :: alpha_aers_5wv(nbre_RH,las,naero_soluble)   ! Ext. coeff. ** m2/g
    105    ! Insoluble components 1- Dust: 2- BC; 3- POM
    106105  REAL :: alpha_aeri_5wv(las,naero_insoluble)         ! Ext. coeff. ** m2/g
    107106
     
    110109  !
    111110  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/
     111                                        ! of BC in the soluble mode:
     112                                        ! bc_content/0.001, 0.01, 0.02, 0.05, 0.1/
    114113  ! for Maxwell-Garnet internal mixture
    115114  ! Detailed theory can be found in R. Wang Estimation of global black carbon ! direct
     
    124123  INTEGER :: n, classbc
    125124
    126 ! From here on we look at the optical parameters at 5 wavelengths: 
    127 ! 443nm, 550, 670, 765 and 865 nm
    128 !                                   le 12 AVRIL 2006
    129 
     125! From here on we look at the optical parameters at 5 wavelengths 443, 550, 670, 765 and 865 nm
     126
    130127 DATA alpha_aers_5wv/ &
    131128                                ! bc soluble
     
    170167        2.340, 3.358, 3.803, 4.303, 4.928, 4.696, 5.629, 7.198,10.308,13.342,19.120,34.296, &
    171168        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 /
     169        1.359, 2.037, 2.343, 2.693, 3.139, 2.940, 3.596, 4.729, 7.076, 9.469,14.266,28.043, &
     170                           ! NO3 coarse (CS)
     171        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     172        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     173        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     174        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     175        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     176                           ! NO3 accumulation (AS)
     177        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     178        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     179        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     180        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     181        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /
    173182
    174183  DATA alpha_aeri_5wv/ &
    175184                                 ! dust insoluble
    176         0.759, 0.770, 0.775, 0.775, 0.772, &
     185        0.759, 0.770, 0.775, 0.775, 0.772,  &
    177186                                 !!jb bc insoluble
    178187        11.536,10.033, 8.422, 7.234, 6.270, &
    179188                                 ! pom insoluble
    180         5.042, 3.101, 1.890, 1.294, 0.934/
     189        5.042, 3.101, 1.890, 1.294, 0.934,  &
     190                                 ! NO3 insoluble
     191        0.0, 0.0, 0.0, 0.0, 0.0 /
    181192
    182193  ! internal mixture
     
    252263     aerosol_name(1) = id_CIDUSTM_phy
    253264  ELSEIF (flag_aerosol .EQ. 6) THEN
    254      nb_aer = 10
     265     nb_aer = 13
    255266     ALLOCATE (aerosol_name(nb_aer))
    256267     aerosol_name(1) = id_ASSO4M_phy     
     
    264275     aerosol_name(9) = id_CIDUSTM_phy
    265276     aerosol_name(10)= id_CSSO4M_phy
     277     aerosol_name(11)= id_CSNO3M_phy
     278     aerosol_name(12)= id_ASNO3M_phy
     279     aerosol_name(13)= id_CINO3M_phy
    266280  ENDIF
    267281
     
    315329        soluble=.TRUE.
    316330        spsol=7
     331    ELSEIF (aerosol_name(m).EQ.id_CSNO3M_phy) THEN
     332        soluble=.TRUE.
     333        spsol=8
     334        fac=1.2903    ! NO3NH4/NO3 / mass conversion factor for AOD
     335    ELSEIF (aerosol_name(m).EQ.id_ASNO3M_phy) THEN
     336        soluble=.TRUE.
     337        spsol=9
     338        fac=1.2903    ! NO3NH4/NO3 / mass conversion factor for AOD
    317339    ELSEIF (aerosol_name(m).EQ.id_CIDUSTM_phy) THEN
    318340        soluble=.FALSE.
     
    324346        soluble=.FALSE.
    325347        spinsol=3
     348    ELSEIF (aerosol_name(m).EQ.id_CINO3M_phy) THEN
     349        soluble=.FALSE.
     350        spinsol=4
     351        fac=1.2903    ! NO3NH4/NO3 / mass conversion factor for AOD
    326352    ELSE
    327353        CYCLE
  • LMDZ5/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90

    r2737 r2738  
    5353  INTEGER, PARAMETER :: nb_level=19 ! number of vertical levels in DATA
    5454
    55   INTEGER, PARAMETER :: naero_soluble=7    ! 1- BC soluble; 2- POM soluble; 3- SO4. acc. 4- SO4 coarse
    56                                            ! 5- seasalt super coarse  6- seasalt coarse   7- seasalt acc.
    57   INTEGER, PARAMETER :: naero_insoluble=3  ! 1- Dust; 2- BC insoluble; 3- POM insoluble
     55  INTEGER, PARAMETER :: naero_soluble=9    ! 1- BC soluble; 2- POM soluble; 3- SO4. acc. 4- SO4 coarse
     56                                           ! 5- seasalt super coarse  6- seasalt
     57                                           ! coarse  7- seasalt acc.
     58                                           ! 8- NO3 coarse 9- NO3 acc.
     59  INTEGER, PARAMETER :: naero_insoluble=4  ! 1- Dust; 2- BC insoluble; 3- POM insoluble; 4- NO3 insoluble
    5860
    5961  INTEGER, PARAMETER :: nbre_RH=12
     
    8082  ! Proprietes optiques
    8183  !
    82   REAL:: alpha_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)   !--unit m2/g SO4
    83   REAL:: alpha_aeri_6bands(nbands_sw_rrtm,naero_insoluble)
    84   REAL:: cg_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)      !--unit 
    85   REAL:: cg_aeri_6bands(nbands_sw_rrtm,naero_insoluble)
    86   REAL:: piz_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)     !-- unit
    87   REAL:: piz_aeri_6bands(nbands_sw_rrtm,naero_insoluble)        !-- unit
     84  REAL:: alpha_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)   !--unit m2/g
     85  REAL:: alpha_aeri_6bands(nbands_sw_rrtm,naero_insoluble)         !--unit m2/g
     86  REAL:: cg_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)      !--unitless
     87  REAL:: cg_aeri_6bands(nbands_sw_rrtm,naero_insoluble)            !--unitless
     88  REAL:: piz_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)     !--unitless
     89  REAL:: piz_aeri_6bands(nbands_sw_rrtm,naero_insoluble)           !--unitless
    8890  !
    8991  ! BC internal mixture
    9092  !
    9193  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                                        ! of BC in the soluble mode:
     95                                        ! bc_content/0.001, 0.01, 0.02, 0.05, 0.1/
    9496  ! for Maxwell-Garnet internal mixture
    9597  ! Detailed theory can be found in R. Wang Estimation of global black carbon direct
     
    100102  REAL :: piz_MG_6bands(nbre_RH,nbands_sw_rrtm,nbclassbc)
    101103  !
    102   INTEGER :: id, classbc, classbc_pi
     104  INTEGER :: aerindex, classbc, classbc_pi
    103105  REAL :: tmp_var, tmp_var_pi, BC_massfra, BC_massfra_pi
    104106
     
    126128  0.377, 0.377, 0.377, 0.377, 0.377, 0.415, 0.456, 0.542, 0.627, 0.636, 0.646, 0.738, &
    127129  0.052, 0.052, 0.052, 0.052, 0.052, 0.057, 0.063, 0.075, 0.087, 0.088, 0.089, 0.102, &
     130       ! sulfate coarse CS
     131  0.693, 0.693, 0.693, 0.764, 0.839, 0.917, 0.999, 1.136, 1.510, 1.879, 1.879, 3.356, &
     132  0.693, 0.693, 0.693, 0.764, 0.839, 0.917, 0.999, 1.136, 1.510, 1.879, 1.879, 3.356, &
     133  0.715, 0.715, 0.715, 0.788, 0.865, 0.945, 1.029, 1.171, 1.557, 1.936, 1.936, 3.459, &
     134  0.736, 0.736, 0.736, 0.811, 0.891, 0.973, 1.060, 1.206, 1.603, 1.994, 1.994, 3.563, &
     135  0.711, 0.711, 0.711, 0.783, 0.860, 0.939, 1.023, 1.164, 1.548, 1.925, 1.925, 3.439, &
     136  0.602, 0.602, 0.602, 0.664, 0.729, 0.796, 0.867, 0.986, 1.312, 1.631, 1.631, 2.915, &
    128137       ! sulfate AS   
    129138  6.554, 6.554, 6.554, 7.223, 7.931, 8.665, 9.438,10.736,14.275,17.755,17.755,31.722, &
     
    133142  0.312, 0.312, 0.312, 0.344, 0.378, 0.413, 0.450, 0.511, 0.680, 0.846, 0.846, 1.511, &
    134143  0.121, 0.121, 0.121, 0.134, 0.147, 0.161, 0.175, 0.199, 0.264, 0.329, 0.329, 0.588, &
    135        ! sulfate coarse CS
    136   0.693, 0.693, 0.693, 0.764, 0.839, 0.917, 0.999, 1.136, 1.510, 1.879, 1.879, 3.356, &
    137   0.693, 0.693, 0.693, 0.764, 0.839, 0.917, 0.999, 1.136, 1.510, 1.879, 1.879, 3.356, &
    138   0.715, 0.715, 0.715, 0.788, 0.865, 0.945, 1.029, 1.171, 1.557, 1.936, 1.936, 3.459, &
    139   0.736, 0.736, 0.736, 0.811, 0.891, 0.973, 1.060, 1.206, 1.603, 1.994, 1.994, 3.563, &
    140   0.711, 0.711, 0.711, 0.783, 0.860, 0.939, 1.023, 1.164, 1.548, 1.925, 1.925, 3.439, &
    141   0.602, 0.602, 0.602, 0.664, 0.729, 0.796, 0.867, 0.986, 1.312, 1.631, 1.631, 2.915, &
    142144        ! seasalt seasalt Super Coarse Soluble (SS)
    143145  0.214, 0.267, 0.287, 0.310, 0.337, 0.373, 0.421, 0.494, 0.625, 0.742, 0.956, 1.480, &
     
    160162  1.389, 2.066, 2.371, 2.719, 3.161, 2.970, 3.623, 4.747, 7.064, 9.419,14.120,27.565, &
    161163  0.309, 0.497, 0.587, 0.693, 0.832, 0.777, 0.986, 1.364, 2.207, 3.136, 5.174,12.065, &
    162   0.021, 0.037, 0.045, 0.054, 0.067, 0.065, 0.087, 0.129, 0.230, 0.353, 0.654, 1.885  /
     164  0.021, 0.037, 0.045, 0.054, 0.067, 0.065, 0.087, 0.129, 0.230, 0.353, 0.654, 1.885, &
     165        ! NO3 coarse (CS)
     166  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     167  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     168  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     169  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     170  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     171  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     172        ! NO3 accumulation (AS)
     173  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     174  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     175  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     176  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     177  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     178  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /
    163179
    164180  DATA alpha_aeri_6bands/  &
     
    168184  6.497, 6.497, 5.900, 4.284, 2.163, 0.966, &
    169185       ! pom insoluble AI
    170   6.443, 6.443, 4.381, 1.846, 0.377, 0.052 /
     186  6.443, 6.443, 4.381, 1.846, 0.377, 0.052, &
     187       ! NO3 insoluble CI
     188  0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /
    171189
    172190  DATA cg_aers_6bands/ &
     
    185203  0.363, 0.363, 0.363, 0.363, 0.363, 0.360, 0.357, 0.352, 0.350, 0.349, 0.349, 0.347, &
    186204  0.142, 0.142, 0.142, 0.142, 0.142, 0.139, 0.137, 0.133, 0.131, 0.131, 0.130, 0.129, &
     205       ! sulfate coarse CS
     206  0.803, 0.803, 0.803, 0.792, 0.783, 0.776, 0.769, 0.758, 0.747, 0.742, 0.738, 0.730, &
     207  0.803, 0.803, 0.803, 0.792, 0.783, 0.776, 0.769, 0.758, 0.747, 0.742, 0.738, 0.730, &
     208  0.799, 0.799, 0.799, 0.787, 0.777, 0.768, 0.760, 0.747, 0.736, 0.729, 0.725, 0.716, &
     209  0.797, 0.797, 0.797, 0.782, 0.770, 0.760, 0.750, 0.735, 0.722, 0.714, 0.709, 0.698, &
     210  0.810, 0.810, 0.810, 0.794, 0.781, 0.770, 0.759, 0.743, 0.728, 0.719, 0.714, 0.702, &
     211  0.803, 0.803, 0.803, 0.790, 0.779, 0.770, 0.762, 0.748, 0.736, 0.729, 0.725, 0.715, &
    187212       ! sulfate AS
    188213  0.675, 0.675, 0.675, 0.689, 0.701, 0.711, 0.720, 0.735, 0.748, 0.756, 0.760, 0.771, &
     
    192217  0.362, 0.362, 0.362, 0.359, 0.356, 0.354, 0.352, 0.348, 0.345, 0.343, 0.342, 0.340, &
    193218  0.137, 0.137, 0.137, 0.135, 0.133, 0.132, 0.130, 0.128, 0.126, 0.125, 0.124, 0.122, &
    194        ! sulfate coarse CS
    195   0.803, 0.803, 0.803, 0.792, 0.783, 0.776, 0.769, 0.758, 0.747, 0.742, 0.738, 0.730, &
    196   0.803, 0.803, 0.803, 0.792, 0.783, 0.776, 0.769, 0.758, 0.747, 0.742, 0.738, 0.730, &
    197   0.799, 0.799, 0.799, 0.787, 0.777, 0.768, 0.760, 0.747, 0.736, 0.729, 0.725, 0.716, &
    198   0.797, 0.797, 0.797, 0.782, 0.770, 0.760, 0.750, 0.735, 0.722, 0.714, 0.709, 0.698, &
    199   0.810, 0.810, 0.810, 0.794, 0.781, 0.770, 0.759, 0.743, 0.728, 0.719, 0.714, 0.702, &
    200   0.803, 0.803, 0.803, 0.790, 0.779, 0.770, 0.762, 0.748, 0.736, 0.729, 0.725, 0.715, &
    201219        ! seasalt seasalt Super Coarse Soluble (SS)
    202220  0.797, 0.800, 0.801, 0.802, 0.804, 0.822, 0.825, 0.828, 0.832, 0.835, 0.838, 0.843, &
     
    219237  0.561, 0.585, 0.593, 0.601, 0.609, 0.637, 0.651, 0.669, 0.691, 0.705, 0.723, 0.745, &
    220238  0.392, 0.427, 0.439, 0.451, 0.464, 0.480, 0.500, 0.526, 0.563, 0.588, 0.621, 0.671, &
    221   0.144, 0.170, 0.179, 0.189, 0.201, 0.207, 0.224, 0.248, 0.285, 0.315, 0.359, 0.439 /
     239  0.144, 0.170, 0.179, 0.189, 0.201, 0.207, 0.224, 0.248, 0.285, 0.315, 0.359, 0.439, &
     240        ! NO3 coarse (CS)
     241  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     242  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     243  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     244  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     245  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     246  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     247        ! NO3 accumulation (AS)
     248  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     249  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     250  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     251  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     252  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  &
     253  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0   /
    222254
    223255  DATA cg_aeri_6bands/ &
     
    227259  0.721, 0.721, 0.643, 0.513, 0.321, 0.153, &
    228260       ! pom insoluble AI
    229   0.687, 0.687, 0.658, 0.564, 0.363, 0.142  /
     261  0.687, 0.687, 0.658, 0.564, 0.363, 0.142, &
     262       ! NO3 insoluble CI
     263  0.0, 0.0, 0.0, 0.0, 0.0, 0.0  /
    230264
    231265  DATA piz_aers_6bands/&
     
    244278  0.816, 0.816, 0.816, 0.816, 0.816, 0.839, 0.859, 0.888, 0.908, 0.910, 0.911, 0.925, &
    245279  0.663, 0.663, 0.663, 0.663, 0.663, 0.607, 0.562, 0.492, 0.446, 0.441, 0.437, 0.404, &
     280       ! sulfate coarse CS
     281  1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
     282  1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
     283  1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
     284  1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
     285  0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, &
     286  0.877, 0.877, 0.877, 0.873, 0.870, 0.867, 0.864, 0.860, 0.856, 0.854, 0.852, 0.849, &
    246287       ! sulfate AS
    247288  1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
     
    251292  0.988, 0.988, 0.988, 0.989, 0.990, 0.990, 0.991, 0.992, 0.993, 0.993, 0.994, 0.994, &
    252293  0.256, 0.256, 0.256, 0.263, 0.268, 0.273, 0.277, 0.284, 0.290, 0.294, 0.296, 0.301, &
    253        ! sulfate coarse CS
    254   1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
    255   1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
    256   1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
    257   1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
    258   0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, 0.996, &
    259   0.877, 0.877, 0.877, 0.873, 0.870, 0.867, 0.864, 0.860, 0.856, 0.854, 0.852, 0.849, &
    260294        ! seasalt seasalt Super Coarse Soluble (SS)
    261295  0.983, 0.982, 0.982, 0.982, 0.982, 0.992, 0.993, 0.994, 0.995, 0.996, 0.997, 0.998, &
     
    278312  0.999, 0.999, 0.999, 0.999, 0.999, 0.999, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
    279313  0.997, 0.998, 0.998, 0.998, 0.998, 0.999, 0.999, 0.999, 1.000, 1.000, 1.000, 1.000, &
    280   0.985, 0.989, 0.990, 0.990, 0.991, 0.996, 0.997, 0.998, 0.999, 0.999, 0.999, 1.000 /
     314  0.985, 0.989, 0.990, 0.990, 0.991, 0.996, 0.997, 0.998, 0.999, 0.999, 0.999, 1.000, &
     315        ! NO3 coarse (CS)
     316  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     317  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     318  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     319  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     320  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     321  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     322        ! NO3 accumulation (AS)
     323  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     324  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     325  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     326  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     327  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,  &
     328  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0   /
    281329
    282330  DATA piz_aeri_6bands/ &
     
    286334  0.460, 0.460, 0.445, 0.394, 0.267, 0.121, &
    287335       ! pom insoluble AI
    288   0.973, 0.973, 0.972, 0.940, 0.816, 0.663 /
     336  0.973, 0.973, 0.972, 0.940, 0.816, 0.663, &
     337       ! NO3 insoluble CI
     338  1.0, 1.0, 1.0, 1.0, 1.0, 1.0 /
    289339
    290340! Added by R. Wang (July 31 2016)
     
    440490     aerosol_name(1) = id_CIDUSTM_phy
    441491  ELSEIF (flag_aerosol .EQ. 6) THEN
    442      nb_aer = 10
     492     nb_aer = 13
    443493     ALLOCATE (aerosol_name(nb_aer))
    444494     aerosol_name(1) = id_ASSO4M_phy     
     
    452502     aerosol_name(9) = id_CIDUSTM_phy
    453503     aerosol_name(10)= id_CSSO4M_phy
     504     aerosol_name(11)= id_CSNO3M_phy
     505     aerosol_name(12)= id_ASNO3M_phy
     506     aerosol_name(13)= id_CINO3M_phy
    454507  ENDIF
    455508
     
    491544        soluble=.TRUE.
    492545        spsol=2
    493      ELSEIF (aerosol_name(m).EQ.id_ASSO4M_phy) THEN
     546     ELSEIF (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
    494547        soluble=.TRUE.
    495548        spsol=3
    496549        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
    497      ELSEIF  (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
     550     ELSEIF  (aerosol_name(m).EQ.id_ASSO4M_phy) THEN
    498551        soluble=.TRUE.
    499552        spsol=4
     
    508561         soluble=.TRUE.
    509562         spsol=7
     563     ELSEIF (aerosol_name(m).EQ.id_CSNO3M_phy) THEN
     564         soluble=.TRUE.
     565         spsol=8
     566         fac=1.2903    ! NO3NH4/NO3 / mass conversion factor for AOD
     567     ELSEIF (aerosol_name(m).EQ.id_ASNO3M_phy) THEN
     568         soluble=.TRUE.
     569         spsol=9
     570         fac=1.2903    ! NO3NH4/NO3 / mass conversion factor for AOD
    510571     ELSEIF (aerosol_name(m).EQ.id_CIDUSTM_phy) THEN
    511572         soluble=.FALSE.
     
    517578         soluble=.FALSE.
    518579         spinsol=3
     580     ELSEIF (aerosol_name(m).EQ.id_CINO3M_phy) THEN
     581         soluble=.FALSE.
     582         spinsol=4
     583         fac=1.2903    ! NO3NH4/NO3 / mass conversion factor for AOD
    519584     ELSE
    520585         CYCLE
     
    522587
    523588    !--shortname for aerosol index
    524     id=aerosol_name(m)
     589    aerindex=aerosol_name(m)
    525590
    526591    IF (soluble) THEN
     
    532597           DO i=1, klon
    533598
    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
     599             tmp_var=m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*fac
     600             tmp_var_pi=m_allaer_pi(i,k,aerindex)/1.e6*zdh(i,k)*fac
    536601
    537602             ! Calculate the dry BC/(BC+SUL) mass ratio for all (natural+anthropogenic) aerosols
     
    580645                             cg_MG_6bands(RH_num(i,k),inu,classbc))
    581646
    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
     647               tau_ae(i,k,aerindex,inu)    = tmp_var*tau_ae2b_int
     648               piz_ae(i,k,aerindex,inu)    = piz_ae2b_int
     649               cg_ae(i,k,aerindex,inu)     = cg_ae2b_int
    585650
    586651               !--natural aerosols
     
    597662                             cg_MG_6bands(RH_num(i,k),inu,classbc_pi))
    598663
    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
     664               tau_ae_pi(i,k,aerindex,inu) = tmp_var_pi* tau_ae2b_int
     665               piz_ae_pi(i,k,aerindex,inu) = piz_ae2b_int
     666               cg_ae_pi(i,k,aerindex,inu)  = cg_ae2b_int
    602667                       
    603668             ENDDO
     
    610675         DO k=1, klev
    611676           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
     677             tmp_var=m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*fac
     678             tmp_var_pi=m_allaer_pi(i,k,aerindex)/1.e6*zdh(i,k)*fac
    614679
    615680             DO inu=1,NSW
     
    627692                             cg_aers_6bands(RH_num(i,k),inu,spsol))
    628693
    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
     694               tau_ae(i,k,aerindex,inu)    = tmp_var*tau_ae2b_int
     695               tau_ae_pi(i,k,aerindex,inu) = tmp_var_pi* tau_ae2b_int
     696               piz_ae(i,k,aerindex,inu)    = piz_ae2b_int
     697               cg_ae(i,k,aerindex,inu)     = cg_ae2b_int
    633698                       
    634699             ENDDO
     
    638703         !--external mixture case for soluble BC
    639704         IF (spsol.EQ.1) THEN
    640            piz_ae_pi(:,:,id,:) = piz_ae(:,:,id,:)
    641            cg_ae_pi(:,:,id,:)  = cg_ae(:,:,id,:)
     705           piz_ae_pi(:,:,aerindex,:) = piz_ae(:,:,aerindex,:)
     706           cg_ae_pi(:,:,aerindex,:)  = cg_ae(:,:,aerindex,:)
    642707         ENDIF
    643708
     
    648713       DO k=1, klev
    649714         DO i=1, klon
    650            tmp_var=m_allaer(i,k,naero_soluble+spinsol)/1.e6*zdh(i,k)*fac
    651            tmp_var_pi=m_allaer_pi(i,k,naero_soluble+spinsol)/1.e6*zdh(i,k)*fac
     715           tmp_var=m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*fac
     716           tmp_var_pi=m_allaer_pi(i,k,aerindex)/1.e6*zdh(i,k)*fac
    652717
    653718           DO inu=1,NSW
     
    656721             cg_ae2b_int = cg_aeri_6bands(inu,spinsol)
    657722
    658              tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int
    659              tau_ae_pi(i,k,id,inu) = tmp_var_pi*tau_ae2b_int
    660              piz_ae(i,k,id,inu) = piz_ae2b_int
    661              cg_ae(i,k,id,inu)= cg_ae2b_int
     723             tau_ae(i,k,aerindex,inu) = tmp_var*tau_ae2b_int
     724             tau_ae_pi(i,k,aerindex,inu) = tmp_var_pi*tau_ae2b_int
     725             piz_ae(i,k,aerindex,inu) = piz_ae2b_int
     726             cg_ae(i,k,aerindex,inu)= cg_ae2b_int
    662727           ENDDO
    663728         ENDDO
  • LMDZ5/trunk/libf/phylmd/rrtm/aeropt_lw_rrtm.F90

    r2504 r2738  
    22! aeropt_lw_rrtm.F90 2014-05-13 C. Kleinschmitt
    33!                    2016-05-03 O. Boucher
     4!                    2016-12-17 O. Boucher
    45!
    56! This routine feeds aerosol LW properties to RRTM
    67! we only consider absorption (not scattering)
     8! we only consider dust for now
    79
    8 SUBROUTINE AEROPT_LW_RRTM(aerosol_couple,paprs,tr_seri)
     10SUBROUTINE AEROPT_LW_RRTM(ok_alw, pdel, zrho, flag_aerosol, m_allaer, m_allaer_pi)
    911
    1012  USE dimphy
    1113  USE aero_mod
    12   USE infotrac_phy
    1314  USE phys_state_var_mod, ONLY : tau_aero_lw_rrtm
    1415  USE YOERAD, ONLY : NLW
     16  USE YOMCST
    1517
    1618  IMPLICIT NONE
    1719
    18   INCLUDE "YOMCST.h"
    1920  INCLUDE "clesphys.h"
    2021  !
    2122  ! Input arguments:
    2223  !
    23   LOGICAL, INTENT(IN)                         :: aerosol_couple
    24   REAL, DIMENSION(klon,klev+1), INTENT(in)    :: paprs
    25   REAL, DIMENSION(klon,klev,nbtr), INTENT(in) :: tr_seri
    26   !
    27   REAL, DIMENSION(klon,klev) :: zdp, mass_temp
    28   !
     24  LOGICAL, INTENT(IN)                                 :: ok_alw
     25  INTEGER, INTENT(IN)                                 :: flag_aerosol
     26  REAL, DIMENSION(klon,klev),     INTENT(in)          :: pdel, zrho
     27  REAL, DIMENSION(klon,klev,naero_tot),   INTENT(in)  :: m_allaer, m_allaer_pi
    2928  !
    3029  INTEGER inu, i, k
    31   INTEGER :: id_ASBCM, id_ASPOMM, id_ASSO4M, id_ASMSAM, id_CSSO4M, id_CSMSAM, id_SSSSM
    32   INTEGER :: id_CSSSM, id_ASSSM, id_CIDUSTM, id_AIBCM, id_AIPOMM, id_ASNO3M, id_CSNO3M, id_CINO3M
    33 
     30  REAL :: zdh(klon,klev)
     31  REAL :: tmp_var, tmp_var_pi
    3432  !
    3533  !--absorption coefficient for CIDUST
    3634  REAL:: alpha_abs_CIDUST_16bands(nbands_lw_rrtm)   !--unit m2/g
    3735  DATA alpha_abs_CIDUST_16bands /              &
    38        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &
    39        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /
     36  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &
     37  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /
    4038  !
    4139  IF (NLW.NE.nbands_lw_rrtm) THEN
    42      print *,'Erreur NLW doit etre egal a 16 pour cette routine'
    43      stop
     40     PRINT *,'Erreur NLW doit etre egal a 16 pour cette routine'
     41     STOP
    4442  ENDIF
    4543  !
    46   IF (aerosol_couple) THEN
    47   !
    48       do i=1,nbtr
    49       select case(trim(solsym(i)))
    50          case ("ASBCM")
    51             id_ASBCM = i
    52          case ("ASPOMM")
    53             id_ASPOMM = i
    54          case ("ASSO4M")
    55             id_ASSO4M = i
    56          case ("ASMSAM")
    57             id_ASMSAM = i
    58          case ("CSSO4M")
    59             id_CSSO4M = i
    60          case ("CSMSAM")
    61             id_CSMSAM = i
    62          case ("SSSSM")
    63             id_SSSSM = i
    64          case ("CSSSM")
    65             id_CSSSM = i
    66          case ("ASSSM")
    67             id_ASSSM = i
    68          case ("CIDUSTM")
    69             id_CIDUSTM = i
    70          case ("AIBCM")
    71             id_AIBCM = i
    72          case ("AIPOMM")
    73             id_AIPOMM = i
    74          case ("ASNO3M")
    75             id_ASNO3M = i
    76          case ("CSNO3M")
    77             id_CSNO3M = i
    78          case ("CINO3M")
    79             id_CINO3M = i
    80          end select
    81     enddo
     44  IF (ok_alw) THEN                                   !--aerosol LW effects
     45   !
     46   IF (flag_aerosol.EQ.5.OR.flag_aerosol.EQ.6) THEN  !--Dust
     47    !
     48    zdh(:,:)=pdel(:,:)/(RG*zrho(:,:))      !-- m
    8249    !
    8350    DO k=1, klev
    84        zdp(:,k) = (paprs(:,k)-paprs(:,k+1))/RG !--kg/m2
    85     ENDDO
    86     !
    87     !--for now only consider dust
    88     mass_temp(:,:)=tr_seri(:,:,id_CIDUSTM)  !--kg/kg
    89     !
    90     DO inu=1,NLW
    91       !
    92       !--total aerosol
    93       tau_aero_lw_rrtm(:,:,2,inu) = mass_temp(:,:)*zdp(:,:)*1000.*alpha_abs_CIDUST_16bands(inu)
    94       !--no aerosol at all
    95       tau_aero_lw_rrtm(:,:,1,inu) = 0.0
     51      DO i=1, klon
     52         !
     53         tmp_var   =m_allaer(i,k,id_CIDUSTM_phy)   /1.e6*zdh(i,k) !-- g/m2
     54         tmp_var_pi=m_allaer_pi(i,k,id_CIDUSTM_phy)/1.e6*zdh(i,k) !-- g/m2
     55         !
     56         DO inu=1, NLW
     57           !
     58           !--total aerosol
     59           tau_aero_lw_rrtm(i,k,2,inu) = MAX(1.e-15,tmp_var*alpha_abs_CIDUST_16bands(inu))
     60           !--natural aerosol
     61           tau_aero_lw_rrtm(i,k,1,inu) = MAX(1.e-15,tmp_var_pi*alpha_abs_CIDUST_16bands(inu))
     62           !
     63         ENDDO
     64      ENDDO
    9665      !
    9766    ENDDO
    9867    !
    99     !--avoid very small values
    100     tau_aero_lw_rrtm = MAX(tau_aero_lw_rrtm,1.e-15)
    101     !
    102   ELSE !--not aerosol_couple
     68   ENDIF
     69   !
     70  ELSE !--no aerosol LW effects
    10371    !
    104     !--no LW effects if not coupled to INCA
    10572    tau_aero_lw_rrtm = 1.e-15
    10673  ENDIF
  • LMDZ5/trunk/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90

    r2693 r2738  
    11! $Id$
    22!
    3 SUBROUTINE readaerosol_optic_rrtm(debut, aerosol_couple, &
     3SUBROUTINE readaerosol_optic_rrtm(debut, aerosol_couple, ok_alw, &
    44     new_aod, flag_aerosol, flag_bc_internal_mixture, itap, rjourvrai, &
    55     pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &
     
    3030  LOGICAL, INTENT(IN)                      :: debut
    3131  LOGICAL, INTENT(IN)                      :: aerosol_couple
     32  LOGICAL, INTENT(IN)                      :: ok_alw
    3233  LOGICAL, INTENT(IN)                      :: new_aod
    3334  INTEGER, INTENT(IN)                      :: flag_aerosol
     
    281282  ! Calculate the total mass of all soluble aersosols
    282283  ! to be revisited for AR6
    283   mass_solu_aero(:,:)    = sulfacc(:,:)    + bcsol(:,:)    + pomsol(:,:)   + nitracc(:,:) + ssacu(:,:)
    284   mass_solu_aero_pi(:,:) = sulfacc_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + nitracc_pi(:,:) + ssacu_pi(:,:) 
     284  mass_solu_aero(:,:)    = sulfacc(:,:)    + bcsol(:,:)    + pomsol(:,:)    + nitracc(:,:)    + ssacu(:,:)
     285  mass_solu_aero_pi(:,:) = sulfacc_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + nitracc_pi(:,:) + ssacu_pi(:,:)
    285286
    286287  !****************************************************************************************
     
    310311       pplay, t_seri,                &
    311312       tausum_aero, tau3d_aero )
     313
     314  !--call LW optical properties for tropospheric aerosols
     315  CALL aeropt_lw_rrtm(ok_alw, pdel, zrho, flag_aerosol, m_allaer, m_allaer_pi)
    312316
    313317  ! Diagnostics calculation for CMIP5 protocol
Note: See TracChangeset for help on using the changeset viewer.