Ignore:
Timestamp:
Nov 14, 2014, 9:22:21 PM (10 years ago)
Author:
idelkadi
Message:

Les modifications introduites ont pour but :
1/ d'autoriser le couplage entre INCA-aerosol et les parametrisations de
la nouvelle physique (NP) de LMDZ, en particulier les thermiques et le
transport convectif,
2/ generaliser les routines de calcul de proprietes optiques des
aerosols pour RRTM au cas ou les aerosols sont interactifs
3/ d'inclure les effets LW des aerosols stratospheriques pour RRTM

Location:
LMDZ5/trunk/libf/phylmd/rrtm
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90

    r2058 r2146  
    1212  USE aero_mod
    1313  USE phys_local_var_mod, only: od550aer,od865aer,ec550aer,od550lt1aer
    14   USE YOMCST           , only : RD , RG
    1514
    1615  !
     
    5049  !
    5150  IMPLICIT NONE
     51  INCLUDE "YOMCST.h"
    5252  !
    5353  ! Input arguments:
     
    5555  REAL, DIMENSION(klon,klev), INTENT(in)   :: pdel
    5656  REAL, INTENT(in)                         :: delt
    57   REAL, DIMENSION(klon,klev,naero_spc), INTENT(in) :: m_allaer
     57  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
     
    7373  LOGICAL :: soluble
    7474 
    75   INTEGER :: i, k, m
     75  INTEGER :: i, k, m, aerindex
    7676  INTEGER :: spsol, spinsol, la
    7777  INTEGER :: RH_num(klon,klev)
     
    9696  REAL :: zdp1(klon,klev)
    9797  INTEGER, ALLOCATABLE, DIMENSION(:)  :: aerosol_name
    98   INTEGER :: nb_aer
     98  INTEGER :: nb_aer, itau
     99  LOGICAL :: ok_itau
    99100 
    100101  REAL :: dh(KLON,KLEV)
     
    105106  REAL :: alpha_aeri_5wv(las,naero_insoluble)         ! Ext. coeff. ** m2/g
    106107
    107   REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp
     108  REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp
    108109 
    109110  !
     
    113114  LOGICAL :: used_tau(naero_tot)
    114115  INTEGER :: n
    115  
     116
    116117! From here on we look at the optical parameters at 5 wavelengths: 
    117118! 443nm, 550, 670, 765 and 865 nm
     
    222223     nb_aer = 2
    223224     ALLOCATE (aerosol_name(nb_aer))
    224      aerosol_name(1) = id_ASSO4M
    225      aerosol_name(2) = id_CSSO4M
     225     aerosol_name(1) = id_ASSO4M_phy
     226     aerosol_name(2) = id_CSSO4M_phy
    226227  ELSEIF (flag_aerosol .EQ. 2) THEN
    227228     nb_aer = 2
    228229     ALLOCATE (aerosol_name(nb_aer))
    229      aerosol_name(1) = id_ASBCM
    230      aerosol_name(2) = id_AIBCM
     230     aerosol_name(1) = id_ASBCM_phy
     231     aerosol_name(2) = id_AIBCM_phy
    231232  ELSEIF (flag_aerosol .EQ. 3) THEN
    232233     nb_aer = 2
    233234     ALLOCATE (aerosol_name(nb_aer))
    234      aerosol_name(1) = id_ASPOMM
    235      aerosol_name(2) = id_AIPOMM
     235     aerosol_name(1) = id_ASPOMM_phy
     236     aerosol_name(2) = id_AIPOMM_phy
    236237  ELSEIF (flag_aerosol .EQ. 4) THEN
    237238     nb_aer = 3
    238239     ALLOCATE (aerosol_name(nb_aer))
    239      aerosol_name(1) = id_CSSSM
    240      aerosol_name(2) = id_SSSSM
    241      aerosol_name(3) = id_ASSSM
     240     aerosol_name(1) = id_CSSSM_phy
     241     aerosol_name(2) = id_SSSSM_phy
     242     aerosol_name(3) = id_ASSSM_phy
    242243  ELSEIF (flag_aerosol .EQ. 5) THEN
    243244     nb_aer = 1
    244245     ALLOCATE (aerosol_name(nb_aer))
    245      aerosol_name(1) = id_CIDUSTM
     246     aerosol_name(1) = id_CIDUSTM_phy
    246247  ELSEIF (flag_aerosol .EQ. 6) THEN
    247248     nb_aer = 10
    248249     ALLOCATE (aerosol_name(nb_aer))
    249      aerosol_name(1) = id_ASSO4M     
    250      aerosol_name(2) = id_ASBCM
    251      aerosol_name(3) = id_AIBCM
    252      aerosol_name(4) = id_ASPOMM
    253      aerosol_name(5) = id_AIPOMM
    254      aerosol_name(6) = id_CSSSM
    255      aerosol_name(7) = id_SSSSM
    256      aerosol_name(8) = id_ASSSM
    257      aerosol_name(9) = id_CIDUSTM
    258      aerosol_name(10) = id_CSSO4M
     250     aerosol_name(1) = id_ASSO4M_phy     
     251     aerosol_name(2) = id_ASBCM_phy
     252     aerosol_name(3) = id_AIBCM_phy
     253     aerosol_name(4) = id_ASPOMM_phy
     254     aerosol_name(5) = id_AIPOMM_phy
     255     aerosol_name(6) = id_CSSSM_phy
     256     aerosol_name(7) = id_SSSSM_phy
     257     aerosol_name(8) = id_ASSSM_phy
     258     aerosol_name(9) = id_CIDUSTM_phy
     259     aerosol_name(10) = id_CSSO4M_phy
    259260  ENDIF
    260261
     
    293294  DO m=1,nb_aer   ! tau is only computed for each mass   
    294295    fac=1.0
    295     IF (aerosol_name(m).EQ.id_ASBCM) THEN
     296    IF (aerosol_name(m).EQ.id_ASBCM_phy) THEN
    296297        soluble=.TRUE.
    297298        spsol=1
    298     ELSEIF (aerosol_name(m).EQ.id_ASPOMM) THEN
     299    ELSEIF (aerosol_name(m).EQ.id_ASPOMM_phy) THEN
    299300        soluble=.TRUE.
    300301        spsol=2
    301     ELSEIF (aerosol_name(m).EQ.id_ASSO4M) THEN
     302    ELSEIF (aerosol_name(m).EQ.id_ASSO4M_phy) THEN
    302303        soluble=.TRUE.
    303304        spsol=3
    304305        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
    305     ELSEIF (aerosol_name(m).EQ.id_CSSO4M) THEN
     306    ELSEIF (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
    306307        soluble=.TRUE.
    307308        spsol=4
    308309        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
    309     ELSEIF (aerosol_name(m).EQ.id_SSSSM) THEN
     310    ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN
    310311        soluble=.TRUE.
    311312        spsol=5
    312     ELSEIF (aerosol_name(m).EQ.id_CSSSM) THEN
     313    ELSEIF (aerosol_name(m).EQ.id_CSSSM_phy) THEN
    313314        soluble=.TRUE.
    314315        spsol=6
    315     ELSEIF (aerosol_name(m).EQ.id_ASSSM) THEN
     316    ELSEIF (aerosol_name(m).EQ.id_ASSSM_phy) THEN
    316317        soluble=.TRUE.
    317318        spsol=7
    318     ELSEIF (aerosol_name(m).EQ.id_CIDUSTM) THEN
     319    ELSEIF (aerosol_name(m).EQ.id_CIDUSTM_phy) THEN
    319320        soluble=.FALSE.
    320321        spinsol=1
    321     ELSEIF  (aerosol_name(m).EQ.id_AIBCM) THEN
     322    ELSEIF  (aerosol_name(m).EQ.id_AIBCM_phy) THEN
    322323        soluble=.FALSE.
    323324        spinsol=2
    324     ELSEIF (aerosol_name(m).EQ.id_AIPOMM) THEN
     325    ELSEIF (aerosol_name(m).EQ.id_AIPOMM_phy) THEN
    325326        soluble=.FALSE.
    326327        spinsol=3
     
    335336    ENDIF
    336337
     338    aerindex=aerosol_name(m)
     339
    337340    DO la=1,las
    338341
     
    344347                             (alpha_aers_5wv(RH_num(i,k)+1,la,spsol) - &
    345348                              alpha_aers_5wv(RH_num(i,k),la,spsol))
    346               tau(i,k,la,spsol) = mass_temp(i,k,spsol)*1000.*zdp1(i,k)   &
    347                                  *tau_ae5wv_int*delt*fac
    348               tausum(i,la,spsol)=tausum(i,la,spsol)+tau(i,k,la,spsol)
     349              tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)*   &
     350                                    tau_ae5wv_int*delt*fac
     351              tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex)
    349352            ENDDO
    350353          ENDDO
    351 
     354 
    352355      ELSE                         ! For insoluble aerosol
    353356
     
    355358          DO i=1, KLON
    356359            tau_ae5wv_int = alpha_aeri_5wv(la,spinsol)
    357             tau(i,k,la,naero_soluble+spinsol) = mass_temp(i,k,naero_soluble+spinsol)*1000.*zdp1(i,k)* &
    358                                                 tau_ae5wv_int*delt*fac
    359             tausum(i,la,naero_soluble+spinsol)= tausum(i,la,naero_soluble+spinsol)  &
    360                                                +tau(i,k,la,naero_soluble+spinsol)
     360            tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)* &
     361                                   tau_ae5wv_int*delt*fac
     362            tausum(i,la,aerindex)= tausum(i,la,aerindex)+tau(i,k,la,aerindex)
    361363          ENDDO
    362364        ENDDO
     
    405407  ENDDO
    406408
    407   od550lt1aer(:)=tausum(:,la550,id_ASSO4M)+tausum(:,la550,id_ASBCM) +tausum(:,la550,id_AIBCM)+ &
    408                  tausum(:,la550,id_ASPOMM)+tausum(:,la550,id_AIPOMM)+tausum(:,la550,id_ASSSM)+ &
    409                  0.03*tausum(:,la550,id_CSSSM)+0.4*tausum(:,la550,id_CIDUSTM)
     409  od550lt1aer(:)=tausum(:,la550,id_ASSO4M_phy)+tausum(:,la550,id_ASBCM_phy) +tausum(:,la550,id_AIBCM_phy)+ &
     410                 tausum(:,la550,id_ASPOMM_phy)+tausum(:,la550,id_AIPOMM_phy)+tausum(:,la550,id_ASSSM_phy)+ &
     411                 0.03*tausum(:,la550,id_CSSSM_phy)+0.4*tausum(:,la550,id_CIDUSTM_phy)
    410412
    411413  DEALLOCATE(aerosol_name)
  • LMDZ5/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90

    r2058 r2146  
    66     tau_allaer, piz_allaer, &
    77     cg_allaer, m_allaer_pi, &
    8      flag_aerosol, pplay, t_seri )
     8     flag_aerosol, zrho )
    99
    1010  USE dimphy
    1111  USE aero_mod
    1212  USE phys_local_var_mod, only: absvisaer
    13   USE YOMCST            , only: RD , RG
    1413
    1514  !    Yves Balkanski le 12 avril 2006
     
    2221  IMPLICIT NONE
    2322
     23  INCLUDE "YOMCST.h"
    2424  INCLUDE "iniprint.h"
    2525  INCLUDE "clesphys.h"
     
    3030  REAL, DIMENSION(klon,klev),     INTENT(in)  :: pdel
    3131  REAL,                           INTENT(in)  :: delt
    32   REAL, DIMENSION(klon,klev,naero_spc),   INTENT(in)  :: m_allaer
    33   REAL, DIMENSION(klon,klev,naero_spc),   INTENT(in)  :: m_allaer_pi
     32  REAL, DIMENSION(klon,klev,naero_tot),   INTENT(in)  :: m_allaer
     33  REAL, DIMENSION(klon,klev,naero_tot),   INTENT(in)  :: m_allaer_pi
    3434  REAL, DIMENSION(klon,klev),     INTENT(in)  :: RHcl       ! humidite relative ciel clair
    3535  INTEGER,                        INTENT(in)  :: flag_aerosol
    36   REAL, DIMENSION(klon,klev),     INTENT(in)  :: pplay
    37   REAL, DIMENSION(klon,klev),     INTENT(in)  :: t_seri
     36  REAL, DIMENSION(klon,klev),     INTENT(in)  :: zrho
    3837  !
    3938  ! Output arguments:
     
    4140  ! 2= natural aerosols
    4241  !
    43   REAL, DIMENSION(klon,klev,2,nbands_rrtm), INTENT(out) :: tau_allaer ! epaisseur optique aerosol
    44   REAL, DIMENSION(klon,klev,2,nbands_rrtm), INTENT(out) :: piz_allaer ! single scattering albedo aerosol
    45   REAL, DIMENSION(klon,klev,2,nbands_rrtm), INTENT(out) :: cg_allaer  ! asymmetry parameter aerosol
     42  REAL, DIMENSION(klon,klev,2,nbands_sw_rrtm), INTENT(out) :: tau_allaer ! epaisseur optique aerosol
     43  REAL, DIMENSION(klon,klev,2,nbands_sw_rrtm), INTENT(out) :: piz_allaer ! single scattering albedo aerosol
     44  REAL, DIMENSION(klon,klev,2,nbands_sw_rrtm), INTENT(out) :: cg_allaer  ! asymmetry parameter aerosol
    4645
    4746  !
     
    6766  REAL :: cg_ae2b_int    ! Intermediate computation of Assymetry parameter
    6867  REAL :: Fact_RH(nbre_RH)
    69   REAL :: zrho
    7068  REAL :: fac
    7169  REAL :: zdp1(klon,klev)
     
    7371  INTEGER :: nb_aer
    7472
    75   REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp
    76   REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp_pi
    77   REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  tau_ae
    78   REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  tau_ae_pi
    79   REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  piz_ae
    80   REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  cg_ae
     73  REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp
     74  REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp_pi
     75  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  tau_ae
     76  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  tau_ae_pi
     77  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  piz_ae
     78  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  cg_ae
    8179
    8280
     
    8482  ! Proprietes optiques
    8583  !
    86   REAL:: alpha_aers_6bands(nbre_RH,nbands_rrtm,naero_soluble)   !--unit m2/g SO4
    87   REAL:: alpha_aeri_6bands(nbands_rrtm,naero_insoluble)
    88   REAL:: cg_aers_6bands(nbre_RH,nbands_rrtm,naero_soluble)      !--unit
    89   REAL:: cg_aeri_6bands(nbands_rrtm,naero_insoluble)
    90   REAL:: piz_aers_6bands(nbre_RH,nbands_rrtm,naero_soluble)     !-- unit
    91   REAL:: piz_aeri_6bands(nbands_rrtm,naero_insoluble)        !-- unit
     84  REAL:: alpha_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)   !--unit m2/g SO4
     85  REAL:: alpha_aeri_6bands(nbands_sw_rrtm,naero_insoluble)
     86  REAL:: cg_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)      !--unit
     87  REAL:: cg_aeri_6bands(nbands_sw_rrtm,naero_insoluble)
     88  REAL:: piz_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)     !-- unit
     89  REAL:: piz_aeri_6bands(nbands_sw_rrtm,naero_insoluble)        !-- unit
    9290
    9391  INTEGER :: id
     
    280278  spsol = 0
    281279  spinsol = 0
    282   if(NSW.NE.nbands_rrtm) then
     280  IF (NSW.NE.nbands_sw_rrtm) THEN
    283281     print *,'Erreur NSW doit etre egal a 6 pour cette routine'
    284282     stop
    285   endif
     283  ENDIF
    286284
    287285  DO k=1, klev
    288286    DO i=1, klon
    289       zrho=pplay(i,k)/t_seri(i,k)/RD                  ! kg/m3
    290 !CDIR UNROLL=naero_spc
    291       mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9
    292 !CDIR UNROLL=naero_spc
    293       mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho / 1.e+9
     287!CDIR UNROLL=naero_tot
     288      mass_temp(i,k,:) = m_allaer(i,k,:) / zrho(i,k) / 1.e+9  !--kg/kg
     289!CDIR UNROLL=naero_tot
     290      mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho(i,k) / 1.e+9
    294291      zdp1(i,k)=pdel(i,k)/(RG*delt)      ! air mass auxiliary  variable --> zdp1 [kg/(m^2 *s)]
    295292    ENDDO
     
    299296     nb_aer = 2
    300297     ALLOCATE (aerosol_name(nb_aer))
    301      aerosol_name(1) = id_ASSO4M
    302      aerosol_name(2) = id_CSSO4M
     298     aerosol_name(1) = id_ASSO4M_phy
     299     aerosol_name(2) = id_CSSO4M_phy
    303300  ELSEIF (flag_aerosol .EQ. 2) THEN
    304301     nb_aer = 2
    305302     ALLOCATE (aerosol_name(nb_aer))
    306      aerosol_name(1) = id_ASBCM
    307      aerosol_name(2) = id_AIBCM
     303     aerosol_name(1) = id_ASBCM_phy
     304     aerosol_name(2) = id_AIBCM_phy
    308305  ELSEIF (flag_aerosol .EQ. 3) THEN
    309306     nb_aer = 2
    310307     ALLOCATE (aerosol_name(nb_aer))
    311      aerosol_name(1) = id_ASPOMM
    312      aerosol_name(2) = id_AIPOMM
     308     aerosol_name(1) = id_ASPOMM_phy
     309     aerosol_name(2) = id_AIPOMM_phy
    313310  ELSEIF (flag_aerosol .EQ. 4) THEN
    314311     nb_aer = 3
    315312     ALLOCATE (aerosol_name(nb_aer))
    316      aerosol_name(1) = id_CSSSM
    317      aerosol_name(2) = id_SSSSM
    318      aerosol_name(3) = id_ASSSM
     313     aerosol_name(1) = id_CSSSM_phy
     314     aerosol_name(2) = id_SSSSM_phy
     315     aerosol_name(3) = id_ASSSM_phy
    319316  ELSEIF (flag_aerosol .EQ. 5) THEN
    320317     nb_aer = 1
    321318     ALLOCATE (aerosol_name(nb_aer))
    322      aerosol_name(1) = id_CIDUSTM
     319     aerosol_name(1) = id_CIDUSTM_phy
    323320  ELSEIF (flag_aerosol .EQ. 6) THEN
    324321     nb_aer = 10
    325322     ALLOCATE (aerosol_name(nb_aer))
    326      aerosol_name(1) = id_ASSO4M     
    327      aerosol_name(2) = id_ASBCM
    328      aerosol_name(3) = id_AIBCM
    329      aerosol_name(4) = id_ASPOMM
    330      aerosol_name(5) = id_AIPOMM
    331      aerosol_name(6) = id_CSSSM
    332      aerosol_name(7) = id_SSSSM
    333      aerosol_name(8) = id_ASSSM
    334      aerosol_name(9) = id_CIDUSTM
    335      aerosol_name(10)= id_CSSO4M
     323     aerosol_name(1) = id_ASSO4M_phy     
     324     aerosol_name(2) = id_ASBCM_phy
     325     aerosol_name(3) = id_AIBCM_phy
     326     aerosol_name(4) = id_ASPOMM_phy
     327     aerosol_name(5) = id_AIPOMM_phy
     328     aerosol_name(6) = id_CSSSM_phy
     329     aerosol_name(7) = id_SSSSM_phy
     330     aerosol_name(8) = id_ASSSM_phy
     331     aerosol_name(9) = id_CIDUSTM_phy
     332     aerosol_name(10)= id_CSSO4M_phy
    336333  ENDIF
    337334
     
    354351    DO i=1, KLON
    355352      rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX)
    356       RH_num(i,k) = INT( rh(i,k)/10. + 1.)
     353      RH_num(i,k) = INT(rh(i,k)/10. + 1.)
    357354      IF (rh(i,k).GT.85.) RH_num(i,k)=10
    358355      IF (rh(i,k).GT.90.) RH_num(i,k)=11
     
    365362  DO m=1,nb_aer   ! tau is only computed for each mass
    366363     fac=1.0
    367      IF (aerosol_name(m).EQ.id_ASBCM) THEN
     364     IF (aerosol_name(m).EQ.id_ASBCM_phy) THEN
    368365        soluble=.TRUE.
    369366        spsol=1
    370      ELSEIF (aerosol_name(m).EQ.id_ASPOMM) THEN
     367     ELSEIF (aerosol_name(m).EQ.id_ASPOMM_phy) THEN
    371368        soluble=.TRUE.
    372369        spsol=2
    373      ELSEIF (aerosol_name(m).EQ.id_ASSO4M) THEN
     370     ELSEIF (aerosol_name(m).EQ.id_ASSO4M_phy) THEN
    374371        soluble=.TRUE.
    375372        spsol=3
    376373        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
    377      ELSEIF  (aerosol_name(m).EQ.id_CSSO4M) THEN
     374     ELSEIF  (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
    378375        soluble=.TRUE.
    379376        spsol=4
    380377        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
    381      ELSEIF (aerosol_name(m).EQ.id_SSSSM) THEN
     378     ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN
    382379         soluble=.TRUE.
    383380         spsol=5
    384      ELSEIF (aerosol_name(m).EQ.id_CSSSM) THEN
     381     ELSEIF (aerosol_name(m).EQ.id_CSSSM_phy) THEN
    385382         soluble=.TRUE.
    386383         spsol=6
    387      ELSEIF (aerosol_name(m).EQ.id_ASSSM) THEN
     384     ELSEIF (aerosol_name(m).EQ.id_ASSSM_phy) THEN
    388385         soluble=.TRUE.
    389386         spsol=7
    390      ELSEIF (aerosol_name(m).EQ.id_CIDUSTM) THEN
     387     ELSEIF (aerosol_name(m).EQ.id_CIDUSTM_phy) THEN
    391388         soluble=.FALSE.
    392389         spinsol=1
    393      ELSEIF  (aerosol_name(m).EQ.id_AIBCM) THEN
     390     ELSEIF  (aerosol_name(m).EQ.id_AIBCM_phy) THEN
    394391         soluble=.FALSE.
    395392         spinsol=2
    396      ELSEIF (aerosol_name(m).EQ.id_AIPOMM) THEN
     393     ELSEIF (aerosol_name(m).EQ.id_AIPOMM_phy) THEN
    397394         soluble=.FALSE.
    398395         spinsol=3
     
    471468       DO i=1, KLON
    472469!--anthropogenic aerosol
    473          tau_allaer(i,k,2,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)+ &
    474                                tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)+   &
    475                                tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)+ &
    476                                tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+   &
    477                                tau_ae(i,k,id_SSSSM,inu)+ tau_ae(i,k,id_CIDUSTM,inu)
     470         tau_allaer(i,k,2,inu)=tau_ae(i,k,id_ASSO4M_phy,inu)+tau_ae(i,k,id_CSSO4M_phy,inu)+ &
     471                               tau_ae(i,k,id_ASBCM_phy,inu)+tau_ae(i,k,id_AIBCM_phy,inu)+   &
     472                               tau_ae(i,k,id_ASPOMM_phy,inu)+tau_ae(i,k,id_AIPOMM_phy,inu)+ &
     473                               tau_ae(i,k,id_ASSSM_phy,inu)+tau_ae(i,k,id_CSSSM_phy,inu)+   &
     474                               tau_ae(i,k,id_SSSSM_phy,inu)+ tau_ae(i,k,id_CIDUSTM_phy,inu)
    478475         tau_allaer(i,k,2,inu)=MAX(tau_allaer(i,k,2,inu),1e-5)
    479476
    480          piz_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
    481                                 tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
    482                                 tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
    483                                 tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
    484                                 tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
    485                                 tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &
    486                                 tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
    487                                 tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
    488                                 tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
    489                                 tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)) &
     477         piz_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ &
     478                                tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ &
     479                                tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)+ &
     480                                tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ &
     481                                tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ &
     482                                tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ &
     483                                tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ &
     484                                tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ &
     485                                tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ &
     486                                tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) &
    490487                                /tau_allaer(i,k,2,inu)
    491488         piz_allaer(i,k,2,inu)=MAX(piz_allaer(i,k,2,inu),0.1)
    492489
    493          cg_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu)+ &
    494                                tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ &
    495                                tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ &
    496                                tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ &
    497                                tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ &
    498                                tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ &
    499                                tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ &
    500                                tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ &
    501                                tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ &
    502                                tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*cg_ae(i,k,id_CIDUSTM,inu))/ &
     490         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)+ &
     491                               tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+ &
     492                               tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)*cg_ae(i,k,id_ASBCM_phy,inu)+ &
     493                               tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ &
     494                               tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ &
     495                               tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+ &
     496                               tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ &
     497                               tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ &
     498                               tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ &
     499                               tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ &
    503500                               (tau_allaer(i,k,2,inu)*piz_allaer(i,k,2,inu))
    504501
    505502!--natural aerosol
    506          tau_allaer(i,k,1,inu)=tau_ae_pi(i,k,id_ASSO4M,inu)+tau_ae_pi(i,k,id_CSSO4M,inu)+ &
    507                                tau_ae_pi(i,k,id_ASBCM,inu)+tau_ae_pi(i,k,id_AIBCM,inu)+   &
    508                                tau_ae_pi(i,k,id_ASPOMM,inu)+tau_ae_pi(i,k,id_AIPOMM,inu)+ &
    509                                tau_ae_pi(i,k,id_ASSSM,inu)+tau_ae_pi(i,k,id_CSSSM,inu)+   &
    510                                tau_ae_pi(i,k,id_SSSSM,inu)+ tau_ae_pi(i,k,id_CIDUSTM,inu)
     503         tau_allaer(i,k,1,inu)=tau_ae_pi(i,k,id_ASSO4M_phy,inu)+tau_ae_pi(i,k,id_CSSO4M_phy,inu)+ &
     504                               tau_ae_pi(i,k,id_ASBCM_phy,inu)+tau_ae_pi(i,k,id_AIBCM_phy,inu)+   &
     505                               tau_ae_pi(i,k,id_ASPOMM_phy,inu)+tau_ae_pi(i,k,id_AIPOMM_phy,inu)+ &
     506                               tau_ae_pi(i,k,id_ASSSM_phy,inu)+tau_ae_pi(i,k,id_CSSSM_phy,inu)+   &
     507                               tau_ae_pi(i,k,id_SSSSM_phy,inu)+ tau_ae_pi(i,k,id_CIDUSTM_phy,inu)
    511508         tau_allaer(i,k,1,inu)=MAX(tau_allaer(i,k,1,inu),1e-5)
    512509
    513          piz_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
    514                                 tau_ae_pi(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
    515                                 tau_ae_pi(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
    516                                 tau_ae_pi(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
    517                                 tau_ae_pi(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
    518                                 tau_ae_pi(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &
    519                                 tau_ae_pi(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
    520                                 tau_ae_pi(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
    521                                 tau_ae_pi(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
    522                                 tau_ae_pi(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)) &
     510         piz_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ &
     511                                tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ &
     512                                tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)+ &
     513                                tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ &
     514                                tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ &
     515                                tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ &
     516                                tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ &
     517                                tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ &
     518                                tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ &
     519                                tau_ae_pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) &
    523520                                /tau_allaer(i,k,1,inu)
    524521         piz_allaer(i,k,1,inu)=MAX(piz_allaer(i,k,1,inu),0.1)
    525522
    526          cg_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu)+ &
    527                                tau_ae_pi(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ &
    528                                tau_ae_pi(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ &
    529                                tau_ae_pi(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ &
    530                                tau_ae_pi(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ &
    531                                tau_ae_pi(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ &
    532                                tau_ae_pi(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ &
    533                                tau_ae_pi(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ &
    534                                tau_ae_pi(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ &
    535                                tau_ae_pi(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*cg_ae(i,k,id_CIDUSTM,inu))/ &
     523         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)+ &
     524                               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)+ &
     525                               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)+ &
     526                               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)+ &
     527                               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)+ &
     528                               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)+ &
     529                               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)+ &
     530                               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)+ &
     531                               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)+ &
     532                               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))/ &
    536533                               (tau_allaer(i,k,1,inu)*piz_allaer(i,k,1,inu))
    537534
  • LMDZ5/trunk/libf/phylmd/rrtm/radlsw.F90

    r2043 r2146  
    1111 & PFRSOD,PSUDU , PUVDF, PPARF, PPARCF, PTINCF,&
    1212 & PSFSWDIR, PSFSWDIF,PFSDNN,PFSDNV ,& 
    13  & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,PFLUX,PFLUC,&
    14  & PFSDN ,PFSUP , PFSCDN , PFSCUP)
     13 & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,&
     14 & PTAU_LW,&
     15 & PFLUX,PFLUC,PFSDN ,PFSUP , PFSCDN , PFSCUP)
    1516
    1617use write_field_phy
     
    5758! PCGA_DST   : (KPROMA,KLEV,NSW); Assymetry factor for dust
    5859! PTAUREL_DST: (KPROMA,KLEV,NSW); Optical depth of dust relative to at 550nm
     60! PTAU_LW  (KPROMA,KLEV,NLW); LW Optical depth of aerosols
    5961! PREF_LIQ (KPROMA,KLEV)        ; Liquid droplet radius (um)
    6062! PREF_ICE (KPROMA,KLEV)        ; Ice crystal radius (um)
     
    127129!USE YOERAD   , ONLY : NSW      ,LRRTM    ,LCCNL    ,LCCNO, LDIFFC, &
    128130! NSW mis dans .def MPL 20140211
    129 USE YOERAD   , ONLY : LRRTM    ,LCCNL    ,LCCNO, LDIFFC, &
     131USE YOERAD   , ONLY : NLW, LRRTM    ,LCCNL    ,LCCNO, LDIFFC, &
    130132 & NRADIP , NRADLP , NICEOPT, NLIQOPT, NINHOM ,NLAYINH ,&
    131133 & RCCNLND, RCCNSEA, RLWINHF, RSWINHF, RRe2De ,& 
     
    154156
    155157include "clesphys.h"
     158!!include "clesrrtm.h"
    156159include "YOETHF.h"
    157160INTEGER(KIND=JPIM),INTENT(IN)    :: KLON
     
    192195REAL(KIND=JPRB)   ,INTENT(IN)    :: PCGA_DST(KLON,KLEV,NSW)
    193196REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAUREL_DST(KLON,KLEV,NSW)
     197!--C.Kleinschmitt
     198REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW)
     199!--end
    194200REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_LIQ(KLON,KLEV)
    195201REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE(KLON,KLEV)
     
    11011107     & PTS   , PTH   , PT,&
    11021108     & ZEMIS , ZEMIW,&
    1103      & PQ    , PCCO2 , ZOZN  , ZCLDSW  , ZTAUCLD,&
    1104      & ZEMIT , PFLUX , PFLUC , ZTCLEAR &
    1105      & ) 
     1109     & PQ    , PCCO2 , ZOZN  ,&
     1110     & ZCLDSW  , ZTAUCLD,&
     1111     & PTAU_LW,&
     1112     & ZEMIT , PFLUX , PFLUC , ZTCLEAR )
    11061113    print *,'RADLSW: apres CALL RRTM_RRTM_140GP'
    11071114
  • LMDZ5/trunk/libf/phylmd/rrtm/radlsw.intfb.h

    r1990 r2146  
    11INTERFACE
    2 SUBROUTINE RADLSW&
    3  & ( KIDIA, KFDIA , KLON , KLEV , KMODE, KAER,&
     2SUBROUTINE RADLSW &
     3 & ( KIDIA, KFDIA , KLON , KLEV  , KMODE, KAER,&
    44 & PRII0,&
    55 & PAER , PALBD , PALBP, PAPH , PAP,&
    66 & PCCNL, PCCNO,&
    7  & PCCO2, PCLFR , PDP , PEMIS, PEMIW , PLSM , PMU0, POZON,&
    8  & PQ , PQIWP , PQLWP, PQS , PQRAIN, PRAINT,&
    9  & PTH , PT , PTS , PNBAS, PNTOP,&
    10  & PREF_LIQ , PREF_ICE,&
    11  & PEMIT, PFCT , PFLT , PFCS , PFLS,&
     7 & PCCO2, PCLFR , PDP  , PEMIS, PEMIW , PLSM , PMU0, POZON,&
     8 & PQ   , PQIWP , PQLWP, PQS , PQRAIN, PRAINT,&
     9 & PTH  , PT    , PTS , PNBAS, PNTOP,&
     10 & PREF_LIQ, PREF_ICE,&
     11 & PEMIT, PFCT  , PFLT , PFCS , PFLS,&
    1212 & PFRSOD,PSUDU , PUVDF, PPARF, PPARCF, PTINCF,&
    13  & PSFSWDIR, PSFSWDIF,PFSDNN,PFSDNV,&
    14  & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,PFLUX,PFLUC,&
    15  & PFSDN ,PFSUP , PFSCDN , PFSCUP)
     13 & PSFSWDIR, PSFSWDIF,PFSDNN,PFSDNV ,& 
     14 & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,&
     15 & PTAU_LW,&
     16 & PFLUX,PFLUC,PFSDN ,PFSUP , PFSCDN , PFSCUP)
     17
    1618USE PARKIND1 ,ONLY : JPIM ,JPRB
    17 USE YOERAD , ONLY : LRRTM ,LCCNL ,LCCNO, LDIFFC,&
     19USE YOERAD , ONLY : NLW, LRRTM ,LCCNL ,LCCNO, LDIFFC,&
    1820 & NRADIP , NRADLP , NICEOPT, NLIQOPT, NINHOM ,NLAYINH ,&
    1921 & RCCNLND, RCCNSEA, RLWINHF, RSWINHF, RRe2De ,&
     
    5961REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV,NSW)
    6062REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(KLON,KLEV,NSW)
     63!--C.Kleinschmitt
     64REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW)
     65!--end
    6166REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(KLON)
    6267REAL(KIND=JPRB) ,INTENT(OUT) :: PFCT(KLON,KLEV+1)
  • LMDZ5/trunk/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90

    r2005 r2146  
    11! $Id$
    22!
    3 SUBROUTINE readaerosol_optic_rrtm(debut, new_aod, flag_aerosol, itap, rjourvrai, &
     3SUBROUTINE readaerosol_optic_rrtm(debut, aerosol_couple,  &
     4     new_aod, flag_aerosol, itap, rjourvrai, &
    45     pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &
    5      mass_solu_aero, mass_solu_aero_pi, &
     6     tr_seri, mass_solu_aero, mass_solu_aero_pi, &
    67     tau_aero, piz_aero, cg_aero, &
    78     tausum_aero, tau3d_aero )
    89
    9 ! This routine will :
    10 ! 1) recevie the aerosols(already read and interpolated) corresponding to flag_aerosol
    11 ! 2) calculate the optical properties for the aerosols
    12 !
    13  
     10  ! This routine will :
     11  ! 1) recevie the aerosols(already read and interpolated) corresponding to flag_aerosol
     12  ! 2) calculate the optical properties for the aerosols
     13  !
     14
    1415  USE dimphy
    1516  USE aero_mod
    16   USE phys_local_var_mod, only: sconcso4,sconcoa,sconcbc,sconcss,sconcdust, &
    17       concso4,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, &
    18       load_tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp7
     17  USE phys_local_var_mod, only: sconcso4,sconcno3,sconcoa,sconcbc,sconcss,sconcdust, &
     18       concso4,concno3,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, &
     19       load_tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp7
     20
     21  USE infotrac
     22
    1923  IMPLICIT NONE
    2024  include "clesphys.h"
    21 
    22 ! Input arguments
    23 !****************************************************************************************
     25  include "YOMCST.h"
     26
     27
     28  ! Input arguments
     29  !****************************************************************************************
    2430  LOGICAL, INTENT(IN)                      :: debut
     31  LOGICAL, INTENT(IN)                      :: aerosol_couple
    2532  LOGICAL, INTENT(IN)                      :: new_aod
    2633  INTEGER, INTENT(IN)                      :: flag_aerosol
     
    3340  REAL, DIMENSION(klon,klev), INTENT(IN)   :: rhcl   ! humidite relative ciel clair
    3441  REAL, DIMENSION(klev), INTENT(IN)        :: presnivs
    35 
    36 ! Output arguments
    37 !****************************************************************************************
     42  REAL, DIMENSION(klon,klev,nbtr), INTENT(IN) :: tr_seri ! concentration tracer
     43
     44  ! Output arguments
     45  !****************************************************************************************
    3846  REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_solu_aero    ! Total mass for all soluble aerosols
    3947  REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_solu_aero_pi !     -"-     preindustrial values
     
    4149  REAL, DIMENSION(klon,klev,2,NSW), INTENT(OUT) :: piz_aero    ! Single scattering albedo aerosol
    4250  REAL, DIMENSION(klon,klev,2,NSW), INTENT(OUT) :: cg_aero     ! asymmetry parameter aerosol
    43 !  REAL, DIMENSION(klon,nwave,naero_spc), INTENT(OUT)       :: tausum_aero
    44 !  REAL, DIMENSION(klon,klev,nwave,naero_spc), INTENT(OUT)  :: tau3d_aero
    45 !--correction minibug OB
    4651  REAL, DIMENSION(klon,nwave,naero_tot), INTENT(OUT)       :: tausum_aero
    4752  REAL, DIMENSION(klon,klev,nwave,naero_tot), INTENT(OUT)  :: tau3d_aero
    4853
    49 ! Local variables
    50 !****************************************************************************************
    51   REAL, DIMENSION(klon)        :: aerindex ! POLDER aerosol index
    52   REAL, DIMENSION(klon,klev)   :: sulfate  ! SO4 aerosol concentration [ug/m3]
    53   REAL, DIMENSION(klon,klev)   :: bcsol    ! BC soluble concentration [ug/m3]
    54   REAL, DIMENSION(klon,klev)   :: bcins    ! BC insoluble concentration [ug/m3]
    55   REAL, DIMENSION(klon,klev)   :: pomsol   ! POM soluble concentration [ug/m3]
    56   REAL, DIMENSION(klon,klev)   :: pomins   ! POM insoluble concentration [ug/m3]
    57   REAL, DIMENSION(klon,klev)   :: cidust    ! DUST aerosol concentration  [ug/m3]
    58   REAL, DIMENSION(klon,klev)   :: sscoarse  ! SS Coarse concentration [ug/m3]
    59   REAL, DIMENSION(klon,klev)   :: sssupco   ! SS Super Coarse concentration [ug/m3]
    60   REAL, DIMENSION(klon,klev)   :: ssacu     ! SS Acumulation concentration [ug/m3]
    61   REAL, DIMENSION(klon,klev)   :: sulfate_pi
     54  ! Local variables
     55  !****************************************************************************************
     56  REAL, DIMENSION(klon)        :: aerindex      ! POLDER aerosol index
     57  REAL, DIMENSION(klon,klev)   :: sulfacc       ! SO4 accumulation concentration [ug/m3]
     58  REAL, DIMENSION(klon,klev)   :: sulfcoarse    ! SO4 coarse concentration [ug/m3]
     59  REAL, DIMENSION(klon,klev)   :: bcsol         ! BC soluble concentration [ug/m3]
     60  REAL, DIMENSION(klon,klev)   :: bcins         ! BC insoluble concentration [ug/m3]
     61  REAL, DIMENSION(klon,klev)   :: pomsol        ! POM soluble concentration [ug/m3]
     62  REAL, DIMENSION(klon,klev)   :: pomins        ! POM insoluble concentration [ug/m3]
     63  REAL, DIMENSION(klon,klev)   :: cidust        ! DUST aerosol concentration  [ug/m3]
     64  REAL, DIMENSION(klon,klev)   :: sscoarse      ! SS Coarse concentration [ug/m3]
     65  REAL, DIMENSION(klon,klev)   :: sssupco       ! SS Super Coarse concentration [ug/m3]
     66  REAL, DIMENSION(klon,klev)   :: ssacu         ! SS Acumulation concentration [ug/m3]
     67  REAL, DIMENSION(klon,klev)   :: nitracc       ! nitrate accumulation concentration [ug/m3]
     68  REAL, DIMENSION(klon,klev)   :: nitrcoarse    ! nitrate coarse concentration [ug/m3]
     69  REAL, DIMENSION(klon,klev)   :: nitrinscoarse ! nitrate insoluble coarse concentration [ug/m3]
     70  REAL, DIMENSION(klon,klev)   :: sulfacc_pi
     71  REAL, DIMENSION(klon,klev)   :: sulfcoarse_pi
    6272  REAL, DIMENSION(klon,klev)   :: bcsol_pi
    6373  REAL, DIMENSION(klon,klev)   :: bcins_pi
     
    6878  REAL, DIMENSION(klon,klev)   :: sssupco_pi
    6979  REAL, DIMENSION(klon,klev)   :: ssacu_pi
    70   REAL, DIMENSION(klon,klev)   :: pdel
    71   REAL, DIMENSION(klon,klev,naero_spc) :: m_allaer
    72   REAL, DIMENSION(klon,klev,naero_spc) :: m_allaer_pi !RAF 
    73 !  REAL, DIMENSION(klon,naero_tot)      :: fractnat_allaer !RAF delete??
    74 
     80  REAL, DIMENSION(klon,klev)   :: nitracc_pi
     81  REAL, DIMENSION(klon,klev)   :: nitrcoarse_pi
     82  REAL, DIMENSION(klon,klev)   :: nitrinscoarse_pi
     83  REAL, DIMENSION(klon,klev)   :: pdel, zrho
     84  REAL, DIMENSION(klon,klev,naero_tot) :: m_allaer
     85  REAL, DIMENSION(klon,klev,naero_tot) :: m_allaer_pi !RAF 
     86  !  REAL, DIMENSION(klon,naero_tot)      :: fractnat_allaer !RAF delete??
     87  character(len=8), dimension(nbtr) :: tracname
     88  integer :: id_ASBCM, id_ASPOMM, id_ASSO4M, id_ASMSAM, id_CSSO4M, id_CSMSAM, id_SSSSM
     89  integer :: id_CSSSM, id_ASSSM, id_CIDUSTM, id_AIBCM, id_AIPOMM, id_ASNO3M, id_CSNO3M, id_CINO3M
    7590  INTEGER :: k, i
    76  
    77 !****************************************************************************************
    78 ! 1) Get aerosol mass
    79 !   
    80 !****************************************************************************************
    81 ! Read and interpolate sulfate
    82   IF ( flag_aerosol .EQ. 1 .OR. &
    83        flag_aerosol .EQ. 6 ) THEN
    84 
    85      CALL readaerosol_interp(id_ASSO4M, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfate, sulfate_pi,loadso4)
    86   ELSE
    87      sulfate(:,:) = 0. ; sulfate_pi(:,:) = 0.
    88      loadso4=0.
    89   END IF
    90 
    91 ! Read and interpolate bcsol and bcins
    92   IF ( flag_aerosol .EQ. 2 .OR. &
    93        flag_aerosol .EQ. 6 ) THEN
    94 
    95      ! Get bc aerosol distribution
    96      CALL readaerosol_interp(id_ASBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi, load_tmp1 )
    97      CALL readaerosol_interp(id_AIBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi, load_tmp2 )
    98      loadbc(:)=load_tmp1(:)+load_tmp2(:)
    99   ELSE
    100      bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
    101      bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
    102      loadbc=0.
    103   END IF
    104 
    105 
    106 ! Read and interpolate pomsol and pomins
    107   IF ( flag_aerosol .EQ. 3 .OR. &
    108        flag_aerosol .EQ. 6 ) THEN
    109 
    110      CALL readaerosol_interp(id_ASPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3)
    111      CALL readaerosol_interp(id_AIPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp4)
    112      loadoa(:)=load_tmp3(:)+load_tmp4(:)
    113   ELSE
    114      pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
    115      pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
    116      loadoa=0.
    117   END IF
    118 
    119 
    120 ! Read and interpolate csssm, ssssm, assssm
    121   IF (flag_aerosol .EQ. 4 .OR. &
    122       flag_aerosol .EQ. 6 ) THEN
    123 
    124       CALL readaerosol_interp(id_SSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5)
    125       CALL readaerosol_interp(id_CSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp6)
    126       CALL readaerosol_interp(id_ASSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp7)
    127      loadss(:)=load_tmp5(:)+load_tmp6(:)+load_tmp7(:)
    128   ELSE
    129      sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0.
    130      ssacu(:,:)    = 0. ; ssacu_pi(:,:) = 0.
    131      sssupco(:,:)  = 0. ; sssupco_pi = 0.
    132      loadss=0.
    133   ENDIF
    134 
    135 ! Read and interpolate cidustm
    136   IF (flag_aerosol .EQ. 5 .OR.  &
    137       flag_aerosol .EQ. 6 ) THEN
    138 
    139       CALL readaerosol_interp(id_CIDUSTM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust)
    140 
    141   ELSE
    142       cidust(:,:) = 0. ; cidust_pi(:,:) = 0.
    143       loaddust=0.
    144   ENDIF
    145 
    146 !
    147 ! Store all aerosols in one variable
    148 !
    149   m_allaer(:,:,id_ASBCM)  = bcsol(:,:)        ! ASBCM
    150   m_allaer(:,:,id_ASPOMM) = pomsol(:,:)       ! ASPOMM
    151   m_allaer(:,:,id_ASSO4M) = sulfate(:,:)      ! ASSO4M (= SO4)
    152   m_allaer(:,:,id_CSSO4M) = 0.                ! CSSO4M
    153   m_allaer(:,:,id_SSSSM)  = sssupco(:,:)      ! SSSSM
    154   m_allaer(:,:,id_CSSSM)  = sscoarse(:,:)     ! CSSSM
    155   m_allaer(:,:,id_ASSSM)  = ssacu(:,:)        ! ASSSM
    156   m_allaer(:,:,id_CIDUSTM)= cidust(:,:)       ! CIDUSTM
    157   m_allaer(:,:,id_AIBCM)  = bcins(:,:)        ! AIBCM
    158   m_allaer(:,:,id_AIPOMM) = pomins(:,:)       ! AIPOMM
    159 
    160 !RAF
    161   m_allaer_pi(:,:,1)  = bcsol_pi(:,:)        ! ASBCM pre-ind
    162   m_allaer_pi(:,:,2)  = pomsol_pi(:,:)       ! ASPOMM pre-ind
    163   m_allaer_pi(:,:,3)  = sulfate_pi(:,:)      ! ASSO4M (= SO4) pre-ind
    164   m_allaer_pi(:,:,4)  = 0.                   ! CSSO4M pre-ind
    165   m_allaer_pi(:,:,5)  = sssupco_pi(:,:)      ! SSSSM pre-ind
    166   m_allaer_pi(:,:,6)  = sscoarse_pi(:,:)     ! CSSSM pre-ind
    167   m_allaer_pi(:,:,7)  = ssacu_pi(:,:)        ! ASSSM pre-ind
    168   m_allaer_pi(:,:,8)  = cidust_pi(:,:)       ! CIDUSTM pre-ind
    169   m_allaer_pi(:,:,9)  = bcins_pi(:,:)        ! AIBCM pre-ind
    170   m_allaer_pi(:,:,10) = pomins_pi(:,:)       ! AIPOMM pre-ind
    171 
    172 !
    173 ! Calculate the total mass of all soluble aersosols
    174 !
    175   mass_solu_aero(:,:)    = sulfate(:,:)    + bcsol(:,:)    + pomsol(:,:) !   + &
    176 !       sscoarse(:,:)    + ssacu(:,:)    + sssupco(:,:)
    177   mass_solu_aero_pi(:,:) = sulfate_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) ! + &
    178 !       sscoarse_pi(:,:) + ssacu_pi(:,:) + sssupco_pi(:,:)
    179 
    180 !****************************************************************************************
    181 ! 2) Calculate optical properties for the aerosols
    182 !
    183 !****************************************************************************************
     91
     92  !--air density
     93  zrho(:,:)=pplay(:,:)/t_seri(:,:)/RD                     !--kg/m3
     94
     95  !****************************************************************************************
     96  ! 1) Get aerosol mass
     97  !   
     98  !****************************************************************************************
     99  !
     100  !
     101  IF (aerosol_couple) THEN   !--we get aerosols from tr_seri array from INCA
     102     !
     103     !--copy fields from INCA tr_seri
     104     !--convert to ug m-3 unit for consistency with offline fields
     105     !
     106#ifdef INCA
     107     call tracinca_name(tracname)
     108#endif
     109
     110     do i=1,nbtr
     111        select case(trim(tracname(i)))
     112           case ("ASBCM")
     113              id_ASBCM = i
     114           case ("ASPOMM")
     115              id_ASPOMM = i
     116           case ("ASSO4M")
     117              id_ASSO4M = i
     118           case ("ASMSAM")
     119              id_ASMSAM = i
     120           case ("CSSO4M")
     121              id_CSSO4M = i
     122           case ("CSMSAM")
     123              id_CSMSAM = i
     124           case ("SSSSM")
     125              id_SSSSM = i
     126           case ("CSSSM")
     127              id_CSSSM = i
     128           case ("ASSSM")
     129              id_ASSSM = i
     130           case ("CIDUSTM")
     131              id_CIDUSTM = i
     132           case ("AIBCM")
     133              id_AIBCM = i
     134           case ("AIPOMM")
     135              id_AIPOMM = i
     136           case ("ASNO3M")
     137              id_ASNO3M = i
     138           case ("CSNO3M")
     139              id_CSNO3M = i
     140           case ("CINO3M")
     141              id_CINO3M = i
     142           end select
     143     enddo
     144
     145
     146     bcsol(:,:)        =   tr_seri(:,:,id_ASBCM)                         *zrho(:,:)*1.e9  ! ASBCM
     147     pomsol(:,:)       =   tr_seri(:,:,id_ASPOMM)                        *zrho(:,:)*1.e9  ! ASPOMM
     148     sulfacc(:,:)      =  (tr_seri(:,:,id_ASSO4M)+tr_seri(:,:,id_ASMSAM))*zrho(:,:)*1.e9  ! ASSO4M (=SO4) + ASMSAM (=MSA)
     149     sulfcoarse(:,:)   =  (tr_seri(:,:,id_CSSO4M)+tr_seri(:,:,id_CSMSAM))*zrho(:,:)*1.e9  ! CSSO4M (=SO4) + CSMSAM (=MSA)
     150     sssupco(:,:)      =   tr_seri(:,:,id_SSSSM)                         *zrho(:,:)*1.e9  ! SSSSM
     151     sscoarse(:,:)     =   tr_seri(:,:,id_CSSSM)                         *zrho(:,:)*1.e9  ! CSSSM
     152     ssacu(:,:)        =   tr_seri(:,:,id_ASSSM)                         *zrho(:,:)*1.e9  ! ASSSM
     153     cidust(:,:)       =   tr_seri(:,:,id_CIDUSTM)                       *zrho(:,:)*1.e9  ! CIDUSTM
     154     bcins(:,:)        =   tr_seri(:,:,id_AIBCM)                         *zrho(:,:)*1.e9  ! AIBCM
     155     pomins(:,:)       =   tr_seri(:,:,id_AIPOMM)                        *zrho(:,:)*1.e9  ! AIPOMM
     156     nitracc(:,:)      =   tr_seri(:,:,id_ASNO3M)                        *zrho(:,:)*1.e9  ! ASNO3M
     157     nitrcoarse(:,:)   =   tr_seri(:,:,id_CSNO3M)                        *zrho(:,:)*1.e9  ! CSNO3M
     158     nitrinscoarse(:,:)=   tr_seri(:,:,id_CINO3M)                        *zrho(:,:)*1.e9  ! CINO3M
     159     !
     160     bcsol_pi(:,:)        =   0.0 ! ASBCM pre-ind
     161     pomsol_pi(:,:)       =   0.0 ! ASPOMM pre-ind
     162     sulfacc_pi(:,:)      =   0.0 ! ASSO4M (=SO4) + ASMSAM (=MSA) pre-ind
     163     sulfcoarse_pi(:,:)   =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) pre-ind
     164     sssupco_pi(:,:)      =   0.0 ! SSSSM pre-ind
     165     sscoarse_pi(:,:)     =   0.0 ! CSSSM pre-ind
     166     ssacu_pi(:,:)        =   0.0 ! ASSSM pre-ind
     167     cidust_pi(:,:)       =   0.0 ! CIDUSTM pre-ind
     168     bcins_pi(:,:)        =   0.0 ! AIBCM pre-ind
     169     pomins_pi(:,:)       =   0.0 ! AIPOMM pre-ind
     170     nitracc_pi(:,:)      =   0.0 ! ASNO3M pre-ind
     171     nitrcoarse_pi(:,:)   =   0.0 ! CSNO3M pre-ind
     172     nitrinscoarse_pi(:,:)=   0.0 ! CINO3M
     173     !
     174  ELSE !--not aerosol_couple
     175     !
     176     ! Read and interpolate sulfate
     177     IF ( flag_aerosol .EQ. 1 .OR. &
     178          flag_aerosol .EQ. 6 ) THEN
     179
     180        CALL readaerosol_interp(id_ASSO4M_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfacc, sulfacc_pi,loadso4)
     181     ELSE
     182        sulfacc(:,:) = 0. ; sulfacc_pi(:,:) = 0.
     183        loadso4=0.
     184     END IF
     185
     186     ! Read and interpolate bcsol and bcins
     187     IF ( flag_aerosol .EQ. 2 .OR. &
     188          flag_aerosol .EQ. 6 ) THEN
     189
     190        ! Get bc aerosol distribution
     191        CALL readaerosol_interp(id_ASBCM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi, load_tmp1 )
     192        CALL readaerosol_interp(id_AIBCM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi, load_tmp2 )
     193        loadbc(:)=load_tmp1(:)+load_tmp2(:)
     194     ELSE
     195        bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
     196        bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
     197        loadbc=0.
     198     END IF
     199
     200
     201     ! Read and interpolate pomsol and pomins
     202     IF ( flag_aerosol .EQ. 3 .OR. &
     203          flag_aerosol .EQ. 6 ) THEN
     204
     205        CALL readaerosol_interp(id_ASPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3)
     206        CALL readaerosol_interp(id_AIPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp4)
     207        loadoa(:)=load_tmp3(:)+load_tmp4(:)
     208     ELSE
     209        pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
     210        pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
     211        loadoa=0.
     212     END IF
     213
     214
     215     ! Read and interpolate csssm, ssssm, assssm
     216     IF (flag_aerosol .EQ. 4 .OR. &
     217          flag_aerosol .EQ. 6 ) THEN
     218
     219        CALL readaerosol_interp(id_SSSSM_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5)
     220        CALL readaerosol_interp(id_CSSSM_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp6)
     221        CALL readaerosol_interp(id_ASSSM_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp7)
     222        loadss(:)=load_tmp5(:)+load_tmp6(:)+load_tmp7(:)
     223     ELSE
     224        sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0.
     225        ssacu(:,:)    = 0. ; ssacu_pi(:,:) = 0.
     226        sssupco(:,:)  = 0. ; sssupco_pi = 0.
     227        loadss=0.
     228     ENDIF
     229
     230     ! Read and interpolate cidustm
     231     IF (flag_aerosol .EQ. 5 .OR.  &
     232          flag_aerosol .EQ. 6 ) THEN
     233
     234        CALL readaerosol_interp(id_CIDUSTM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust)
     235
     236     ELSE
     237        cidust(:,:) = 0. ; cidust_pi(:,:) = 0.
     238        loaddust=0.
     239     ENDIF
     240     !
     241     sulfcoarse(:,:)      =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA)
     242     sulfcoarse_pi(:,:)   =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) pre-ind
     243     !
     244     !--placeholder for offline nitrate   
     245     !
     246     nitracc(:,:)         =   0.0
     247     nitracc_pi(:,:)      =   0.0
     248     nitrcoarse(:,:)      =   0.0
     249     nitrcoarse_pi(:,:)   =   0.0
     250     nitrinscoarse(:,:)   =   0.0
     251     nitrinscoarse_pi(:,:)=   0.0
     252
     253  ENDIF !--not aerosol_couple
     254
     255  !
     256  ! Store all aerosols in one variable
     257  !
     258  m_allaer(:,:,id_ASBCM_phy)  = bcsol(:,:)        ! ASBCM
     259  m_allaer(:,:,id_ASPOMM_phy) = pomsol(:,:)       ! ASPOMM
     260  m_allaer(:,:,id_ASSO4M_phy) = sulfacc(:,:)      ! ASSO4M (= SO4)
     261  m_allaer(:,:,id_CSSO4M_phy) = sulfcoarse(:,:)   ! CSSO4M
     262  m_allaer(:,:,id_SSSSM_phy)  = sssupco(:,:)      ! SSSSM
     263  m_allaer(:,:,id_CSSSM_phy)  = sscoarse(:,:)     ! CSSSM
     264  m_allaer(:,:,id_ASSSM_phy)  = ssacu(:,:)        ! ASSSM
     265  m_allaer(:,:,id_CIDUSTM_phy)= cidust(:,:)       ! CIDUSTM
     266  m_allaer(:,:,id_AIBCM_phy)  = bcins(:,:)        ! AIBCM
     267  m_allaer(:,:,id_ASNO3M_phy) = nitracc(:,:)      ! ASNO3M
     268  m_allaer(:,:,id_CSNO3M_phy) = nitrcoarse(:,:)   ! CSNO3M
     269  m_allaer(:,:,id_CINO3M_phy) = nitrinscoarse(:,:)! CINO3M
     270  m_allaer(:,:,id_AIPOMM_phy) = pomins(:,:)       ! AIPOMM
     271  m_allaer(:,:,id_STRAT_phy)  = 0.0
     272
     273  !RAF
     274  m_allaer_pi(:,:,id_ASBCM_phy)  = bcsol_pi(:,:)        ! ASBCM pre-ind
     275  m_allaer_pi(:,:,id_ASPOMM_phy) = pomsol_pi(:,:)       ! ASPOMM pre-ind
     276  m_allaer_pi(:,:,id_ASSO4M_phy) = sulfacc_pi(:,:)      ! ASSO4M (= SO4) pre-ind
     277  m_allaer_pi(:,:,id_CSSO4M_phy) = sulfcoarse_pi(:,:)   ! CSSO4M pre-ind
     278  m_allaer_pi(:,:,id_SSSSM_phy)  = sssupco_pi(:,:)      ! SSSSM pre-ind
     279  m_allaer_pi(:,:,id_CSSSM_phy)  = sscoarse_pi(:,:)     ! CSSSM pre-ind
     280  m_allaer_pi(:,:,id_ASSSM_phy)  = ssacu_pi(:,:)        ! ASSSM pre-ind
     281  m_allaer_pi(:,:,id_CIDUSTM_phy)= cidust_pi(:,:)       ! CIDUSTM pre-ind
     282  m_allaer_pi(:,:,id_AIBCM_phy)  = bcins_pi(:,:)        ! AIBCM pre-ind
     283  m_allaer_pi(:,:,id_ASNO3M_phy) = nitracc_pi(:,:)      ! ASNO3M pre-ind
     284  m_allaer_pi(:,:,id_CSNO3M_phy) = nitrcoarse_pi(:,:)   ! CSNO3M pre-ind
     285  m_allaer_pi(:,:,id_CINO3M_phy) = nitrinscoarse_pi(:,:)! CINO3M pre-ind
     286  m_allaer_pi(:,:,id_AIPOMM_phy) = pomins_pi(:,:)       ! AIPOMM pre-ind
     287  m_allaer_pi(:,:,id_STRAT_phy)  = 0.0
     288
     289  !
     290  ! Calculate the total mass of all soluble aersosols
     291  ! to be revisited for AR6
     292  mass_solu_aero(:,:)    = sulfacc(:,:)    + bcsol(:,:)    + pomsol(:,:)   + nitracc(:,:)   ! + &
     293  !                           sscoarse(:,:)    + ssacu(:,:)    + sssupco(:,:)
     294  mass_solu_aero_pi(:,:) = sulfacc_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + nitracc_pi(:,:) ! + &
     295  !                           sscoarse_pi(:,:) + ssacu_pi(:,:) + sssupco_pi(:,:)
     296
     297  !****************************************************************************************
     298  ! 2) Calculate optical properties for the aerosols
     299  !
     300  !****************************************************************************************
    184301  DO k = 1, klev
    185302     DO i = 1, klon
     
    188305  END DO
    189306
     307  ! aeropt_6bands for rrtm
    190308  CALL aeropt_6bands_rrtm( &
    191           pdel, m_allaer, pdtphys, rhcl, &
    192           tau_aero, piz_aero, cg_aero,   &
    193           m_allaer_pi, flag_aerosol, &
    194           pplay, t_seri, presnivs)
    195      
    196      ! aeropt_5wv only for validation and diagnostics.
    197      CALL aeropt_5wv_rrtm(                    &
    198           pdel, m_allaer,                &
    199           pdtphys, rhcl, aerindex,       &
    200           flag_aerosol, pplay, t_seri,   &
    201           tausum_aero, tau3d_aero )
    202 
    203 ! Diagnostics calculation for CMIP5 protocol
    204   sconcso4(:)=m_allaer(:,1,id_ASSO4M)*1.e-9
    205   sconcoa(:)=(m_allaer(:,1,id_ASPOMM)+m_allaer(:,1,id_AIPOMM))*1.e-9
    206   sconcbc(:)=(m_allaer(:,1,id_ASBCM)+m_allaer(:,1,id_AIBCM))*1.e-9
    207   sconcss(:)=(m_allaer(:,1,id_ASSSM)+m_allaer(:,1,id_CSSSM)+m_allaer(:,1,id_SSSSM))*1.e-9
    208   sconcdust(:)=m_allaer(:,1,id_CIDUSTM)*1.e-9
    209   concso4(:,:)=m_allaer(:,:,id_ASSO4M)*1.e-9
    210   concoa(:,:)=(m_allaer(:,:,id_ASPOMM)+m_allaer(:,:,id_AIPOMM))*1.e-9
    211   concbc(:,:)=(m_allaer(:,:,id_ASBCM)+m_allaer(:,:,id_AIBCM))*1.e-9
    212   concss(:,:)=(m_allaer(:,:,id_ASSSM)+m_allaer(:,:,id_CSSSM)+m_allaer(:,:,id_SSSSM))*1.e-9
    213   concdust(:,:)=m_allaer(:,:,id_CIDUSTM)*1.e-9
     309       pdel, m_allaer, pdtphys, rhcl, &
     310       tau_aero, piz_aero, cg_aero,   &
     311       m_allaer_pi, flag_aerosol, &
     312       zrho )
     313
     314  ! aeropt_5wv only for validation and diagnostics
     315  CALL aeropt_5wv_rrtm(                    &
     316       pdel, m_allaer,                &
     317       pdtphys, rhcl, aerindex,       &
     318       flag_aerosol, pplay, t_seri,   &
     319       tausum_aero, tau3d_aero )
     320
     321  ! Diagnostics calculation for CMIP5 protocol
     322  sconcso4(:)  =m_allaer(:,1,id_ASSO4M_phy)*1.e-9
     323  sconcno3(:)  =(m_allaer(:,1,id_ASNO3M_phy)+m_allaer(:,1,id_CSNO3M_phy)+m_allaer(:,1,id_CINO3M_phy))*1.e-9
     324  sconcoa(:)   =(m_allaer(:,1,id_ASPOMM_phy)+m_allaer(:,1,id_AIPOMM_phy))*1.e-9
     325  sconcbc(:)   =(m_allaer(:,1,id_ASBCM_phy)+m_allaer(:,1,id_AIBCM_phy))*1.e-9
     326  sconcss(:)   =(m_allaer(:,1,id_ASSSM_phy)+m_allaer(:,1,id_CSSSM_phy)+m_allaer(:,1,id_SSSSM_phy))*1.e-9
     327  sconcdust(:) =m_allaer(:,1,id_CIDUSTM_phy)*1.e-9
     328  concso4(:,:) =m_allaer(:,:,id_ASSO4M_phy)*1.e-9
     329  concno3(:,:) =(m_allaer(:,:,id_ASNO3M_phy)+m_allaer(:,:,id_CSNO3M_phy)+m_allaer(:,:,id_CINO3M_phy))*1.e-9
     330  concoa(:,:)  =(m_allaer(:,:,id_ASPOMM_phy)+m_allaer(:,:,id_AIPOMM_phy))*1.e-9
     331  concbc(:,:)  =(m_allaer(:,:,id_ASBCM_phy)+m_allaer(:,:,id_AIBCM_phy))*1.e-9
     332  concss(:,:)  =(m_allaer(:,:,id_ASSSM_phy)+m_allaer(:,:,id_CSSSM_phy)+m_allaer(:,:,id_SSSSM_phy))*1.e-9
     333  concdust(:,:)=m_allaer(:,:,id_CIDUSTM_phy)*1.e-9
    214334
    215335END SUBROUTINE readaerosol_optic_rrtm
  • LMDZ5/trunk/libf/phylmd/rrtm/readaerosolstrato_rrtm.F90

    r2058 r2146  
    1616    USE aero_mod
    1717    USE dimphy
     18    USE YOERAD   , ONLY : NLW
    1819
    1920    implicit none
    2021
     22    include "YOMCST.h"
    2123    include "dimensions.h"
    2224
     
    3335    real, pointer:: time(:)
    3436    real, pointer:: lev(:)
    35     integer k, band, wave
     37    integer k, band, wave, i
    3638    integer, save :: mth_pre
    3739
     
    4547    real, allocatable:: tauaerstrat_mois_glo_bands(:,:,:)
    4648
     49    real, allocatable:: sum_tau_aer_strat(:)
     50
    4751! For NetCDF:
    4852    integer ncid_in  ! IDs for input files
     
    5054
    5155! Stratospheric aerosols optical properties
    52 ! alpha_strat over the 2 bands is normalised by the 550 nm extinction coefficient
    53 ! alpha_strat_wave is *not* normalised by the 550 nm extinction coefficient
    54     real, dimension(nbands_rrtm) :: alpha_strat, piz_strat, cg_strat
    55     data alpha_strat/0.938538969, 0.990073204, 0.992904723, 0.829215884, 0.439313501, 0.156857833/
    56     data cg_strat   /0.699142992, 0.716326416, 0.735462785, 0.736726701, 0.712068975, 0.575097859/
    57     data piz_strat  /1.000000000, 1.000000000, 1.000000000, 1.000000000, 0.997781098, 0.452584684/
    58     real, dimension(nwave) :: alpha_strat_wave
    59     data alpha_strat_wave/3.36780953,3.34667683,3.20444202,3.0293026,2.82108808/
    60 
     56! alpha_sw_strat over the 6 bands is normalised by the 550 nm extinction coefficient
     57    real, dimension(nbands_sw_rrtm) :: alpha_sw_strat, piz_sw_strat, cg_sw_strat
     58    data alpha_sw_strat/0.8545564, 0.8451642, 0.9821724, 0.8145110, 0.3073565, 7.7966176E-02/
     59    data cg_sw_strat   /0.6997170, 0.6810035, 0.7403592, 0.7562674, 0.6676504, 0.3478689/
     60    data piz_sw_strat  /0.9999998, 0.9999998, 1.000000000, 0.9999958, 0.9977155, 0.4510679/
     61!
     62!--diagnostics AOD in the SW
     63! alpha_sw_strat_wave is *not* normalised by the 550 nm extinction coefficient
     64    real, dimension(nwave) :: alpha_sw_strat_wave
     65    data alpha_sw_strat_wave/3.708007,4.125824,4.136584,3.887478,3.507738/
     66!
     67!--diagnostics AOD in the LW at 10 um
     68    real :: alpha_lw_strat_wave
     69    data alpha_lw_strat_wave/0.2746812/
     70!
     71    real, dimension(nbands_lw_rrtm) :: alpha_lw_abs_rrtm
     72    data alpha_lw_abs_rrtm/   8.8340312E-02, 6.9856711E-02, 6.2652975E-02, 5.7188231E-02, &
     73                              6.3157059E-02, 5.5072524E-02, 5.0571125E-02, 0.1349073, &   
     74                              0.1381676, 9.6506312E-02, 5.1312990E-02, 2.4256418E-02, &
     75                              2.7191756E-02, 3.3862915E-02, 1.6132960E-02, 1.4275438E-02/ ! calculated with Mie_SW_LW_RRTM_V2.4 (bimodal, corrected)
     76                                                                                          ! for r_0=/0.13E-6, 0.41E-6/ m, sigma_g=/1.26, 1.30/
     77                                                                                          ! order: increasing wavelength!
    6178!--------------------------------------------------------
    6279
    6380    IF (.not.ALLOCATED(tau_aer_strat)) ALLOCATE(tau_aer_strat(klon,klev))
     81    IF (.not.ALLOCATED(sum_tau_aer_strat)) ALLOCATE(sum_tau_aer_strat(klon))
    6482
    6583    IF (is_mpi_root) THEN
     
    6785    IF (debut.OR.mth_cur.NE.mth_pre) THEN
    6886
    69     IF (nbands_rrtm.NE.6) THEN
    70         print *,'nbands_rrtm doit etre egal a 6 dans readaerosolstrat_rrtm'
     87    IF (nbands_sw_rrtm.NE.6) THEN
     88        print *,'nbands_sw_rrtm doit etre egal a 6 dans readaerosolstrat_rrtm'
    7189        STOP
    7290    ENDIF
     
    112130    ALLOCATE(tauaerstrat_mois(n_lon, n_lat, n_lev))
    113131    ALLOCATE(tauaerstrat_mois_glo(klon_glo, n_lev))
    114     ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands_rrtm))
     132    ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands_sw_rrtm))
    115133
    116134!--reading stratospheric AOD at 550 nm
     
    143161    ENDIF !--is_mpi_root
    144162
    145 !--total vertical aod at the 5 wavelengths
     163!--total vertical aod at the 5 SW wavelengths
    146164    DO wave=1, nwave
    147165    DO k=1, klev
    148     tausum_aero(:,wave,id_strat)=tausum_aero(:,wave,id_strat)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2)
     166    tausum_aero(:,wave,id_STRAT_phy)=tausum_aero(:,wave,id_STRAT_phy)+tau_aer_strat(:,k)*alpha_sw_strat_wave(wave)/alpha_sw_strat_wave(2)
    149167    ENDDO
    150168    ENDDO
    151169
    152170!--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones
    153     DO band=1, nbands_rrtm
    154 !--anthropogenic aerosols bands 1 to nbands_rrtm
    155     cg_aero_rrtm(:,:,2,band)  = ( cg_aero_rrtm(:,:,2,band)*piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) + &
    156                                   cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /        &
    157                              MAX( piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) +                          &
    158                                   piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
    159     piz_aero_rrtm(:,:,2,band)  = ( piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) +                         &
    160                               piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /                           &
    161                               MAX( tau_aero_rrtm(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
    162     tau_aero_rrtm(:,:,2,band)  = tau_aero_rrtm(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:)
    163 !--natural aerosols bands 1 to nbands_rrtm
    164     cg_aero_rrtm(:,:,1,band)  = ( cg_aero_rrtm(:,:,1,band)*piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) + &
    165                              cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /             &
    166                              MAX( piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) +                          &
    167                                   piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
    168     piz_aero_rrtm(:,:,1,band)  = ( piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) +                         &
    169                               piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /                           &
    170                               MAX( tau_aero_rrtm(:,:,1,band) + alpha_strat(band)*tau_aer_strat(:,:),1.e-15 )
    171     tau_aero_rrtm(:,:,1,band)  = tau_aero_rrtm(:,:,1,band) + alpha_strat(band)*tau_aer_strat(:,:)
     171    DO band=1, nbands_sw_rrtm
     172!--anthropogenic aerosols bands 1 to nbands_sw_rrtm
     173    cg_aero_sw_rrtm(:,:,2,band)  = ( cg_aero_sw_rrtm(:,:,2,band)*piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + &
     174                                  cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /           &
     175                             MAX( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) +                                &
     176                                  piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 )
     177    piz_aero_sw_rrtm(:,:,2,band)  = ( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) +                            &
     178                              piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /                                 &
     179                              MAX( tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 )
     180    tau_aero_sw_rrtm(:,:,2,band)  = tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:)
     181!--natural aerosols bands 1 to nbands_sw_rrtm
     182    cg_aero_sw_rrtm(:,:,1,band)  = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + &
     183                             cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /                &
     184                             MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                                &
     185                                  piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 )
     186    piz_aero_sw_rrtm(:,:,1,band)  = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                            &
     187                              piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /                                 &
     188                              MAX( tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:),1.e-15 )
     189    tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:)
     190!--no stratospheric aerosol in index 1 for these tests
     191!    cg_aero_sw_rrtm(:,:,1,band)  =  cg_aero_sw_rrtm(:,:,1,band)
     192!    piz_aero_sw_rrtm(:,:,1,band)  = piz_aero_sw_rrtm(:,:,1,band)
     193!    tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band)
     194    ENDDO
     195
     196!--stratospheric AOD in LW
     197    IF (nbands_lw_rrtm .NE. NLW) then
     198      print*, 'different values for NLW (=',NLW,') and nbands_lw_rrtm (=', nbands_lw_rrtm, ')'
     199      STOP
     200    ENDIF
     201
     202    DO band=1, nbands_lw_rrtm
     203    tau_aero_lw_rrtm(:,:,2,band)  = tau_aero_lw_rrtm(:,:,2,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:)
     204    tau_aero_lw_rrtm(:,:,1,band)  = tau_aero_lw_rrtm(:,:,1,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:)
     205!--no stratospheric aerosols in index 1 for these tests
     206!    tau_aero_lw_rrtm(:,:,1,band)  = tau_aero_lw_rrtm(:,:,1,band)
    172207    ENDDO
    173208
  • LMDZ5/trunk/libf/phylmd/rrtm/recmwf_aero.F90

    r2005 r2146  
    2020 & PPIZA_NAT,PCGA_NAT,PTAU_NAT, &
    2121!--fin OB
     22!--C.Kleinschmitt
     23 & PTAU_LW_TOT, PTAU_LW_NAT, &
     24!--end
    2225 & PFLUX,PFLUC,&
    2326 & PFSDN ,PFSUP , PFSCDN , PFSCUP,&
     
    2730 & PTOPSWAIAERO,PSOLSWAIAERO,&
    2831 & PTOPSWCFAERO,PSOLSWCFAERO,&
     32!--LW diagnostics CK
     33 & PTOPLWADAERO,PSOLLWADAERO,&
     34 & PTOPLWAD0AERO,PSOLLWAD0AERO,&
     35 & PTOPLWAIAERO,PSOLLWAIAERO,&
     36!..end
    2937 & ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)
    3038!--fin
     
    7987! PCGA_NAT   : (KPROMA,KLEV,NSW); Assymetry factor for natural aerosol
    8088! PTAU_NAT: (KPROMA,KLEV,NSW)   ; Optical depth of natural aerosol
     89! PTAU_LW_TOT  (KPROMA,KLEV,NLW); LW Optical depth of total aerosols 
     90! PTAU_LW_NAT  (KPROMA,KLEV,NLW); LW Optical depth of natural aerosols
    8191!--fin OB
    8292
     
    136146USE YOMCST   , ONLY :         RMD      ,RMO3
    137147USE YOMPHY3  , ONLY : RII0
     148USE YOERAD   , ONLY : NLW, NAER, RCCNLND  ,RCCNSEA 
    138149USE YOERAD   , ONLY : NAER, RCCNLND  ,RCCNSEA 
    139150USE YOERDU   , ONLY : REPSCQ
     
    150161IMPLICIT NONE
    151162INCLUDE "clesphys.h"
     163
    152164
    153165INTEGER(KIND=JPIM),INTENT(IN)    :: KPROMA
     
    186198REAL(KIND=JPRB)                  :: PTAU_ZERO(KPROMA,KLEV,NSW)
    187199!--fin
     200!--C.Kleinschmitt
     201REAL(KIND=JPRB)                  :: PTAU_LW_ZERO(KPROMA,KLEV,NLW)
     202REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW_TOT(KPROMA,KLEV,NLW)
     203REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW_NAT(KPROMA,KLEV,NLW)
     204!--end
    188205REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_LIQ(KPROMA,KLEV)
    189206REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE(KPROMA,KLEV)
     
    199216REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPSWCFAERO(KPROMA,3), PSOLSWCFAERO(KPROMA,3) !--do we keep this ?
    200217!--fin
     218!--CK
     219REAL(KIND=JPRB)   ,INTENT(out)   :: PTOPLWADAERO(KPROMA), PSOLLWADAERO(KPROMA)       ! LW Aerosol direct forcing at TOA + surface
     220REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWAD0AERO(KPROMA), PSOLLWAD0AERO(KPROMA)     ! LW Aerosol direct forcing at TOA + surface
     221REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWAIAERO(KPROMA), PSOLLWAIAERO(KPROMA)       ! LW Aer. indirect forcing at TOA + surface
     222!--end
    201223REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMTD(KPROMA,KLEV+1)
    202224REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMTU(KPROMA,KLEV+1)
     
    295317REAL(KIND=JPRB) ::  ZFSUP0_AERO(KPROMA,KLEV+1,5)
    296318REAL(KIND=JPRB) ::  ZFSDN0_AERO(KPROMA,KLEV+1,5)
     319!--LW (CK):
     320REAL(KIND=JPRB) ::  LWUP_AERO(KPROMA,KLEV+1,5)
     321REAL(KIND=JPRB) ::  LWDN_AERO(KPROMA,KLEV+1,5)
     322REAL(KIND=JPRB) ::  LWUP0_AERO(KPROMA,KLEV+1,5)
     323REAL(KIND=JPRB) ::  LWDN0_AERO(KPROMA,KLEV+1,5)
    297324
    298325#include "radlsw.intfb.h"
     
    313340ZFSDN0_AERO(:,:,:)=0.
    314341
     342LWUP_AERO (:,:,:)=0.
     343LWDN_AERO (:,:,:)=0.
     344LWUP0_AERO(:,:,:)=0.
     345LWDN0_AERO(:,:,:)=0.
     346
    315347PTAU_ZERO(:,:,:) =1.e-15
    316348PPIZA_ZERO(:,:,:)=1.0
    317349PCGA_ZERO(:,:,:) =0.0
     350
     351PTAU_LW_ZERO(:,:,:) =1.e-15
    318352
    319353
     
    431465 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    432466 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    433  & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PFLUX,PFLUC,&
     467 & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PTAU_LW_NAT,PFLUX,PFLUC,&
    434468 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    435469
     
    440474ZFSUP_AERO(:,:,1) =  PFSUP(:,:)
    441475ZFSDN_AERO(:,:,1) =  PFSDN(:,:)
     476
     477LWUP0_AERO(:,:,1) = PFLUC(:,1,:)
     478LWDN0_AERO(:,:,1) = PFLUC(:,2,:)
     479
     480LWUP_AERO(:,:,1) = PFLUX(:,1,:)
     481LWDN_AERO(:,:,1) = PFLUX(:,2,:)
    442482
    443483ENDIF
     
    463503 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    464504 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    465  & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PFLUX,PFLUC,&
     505 & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PTAU_LW_NAT,PFLUX,PFLUC,&
    466506 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    467507
     
    472512ZFSUP_AERO(:,:,2) =  PFSUP(:,:)
    473513ZFSDN_AERO(:,:,2) =  PFSDN(:,:)
     514
     515LWUP0_AERO(:,:,2) = PFLUC(:,1,:)
     516LWDN0_AERO(:,:,2) = PFLUC(:,2,:)
     517
     518LWUP_AERO(:,:,2) = PFLUX(:,1,:)
     519LWDN_AERO(:,:,2) = PFLUX(:,2,:)
    474520
    475521ENDIF ! ok_aie     
     
    495541 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    496542 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    497  & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PFLUX,PFLUC,&
     543 & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PTAU_LW_TOT,PFLUX,PFLUC,&
    498544 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    499545
     
    504550ZFSUP_AERO(:,:,3) =  PFSUP(:,:)
    505551ZFSDN_AERO(:,:,3) =  PFSDN(:,:)
     552
     553LWUP0_AERO(:,:,3) = PFLUC(:,1,:)
     554LWDN0_AERO(:,:,3) = PFLUC(:,2,:)
     555
     556LWUP_AERO(:,:,3) = PFLUX(:,1,:)
     557LWDN_AERO(:,:,3) = PFLUX(:,2,:)
    506558
    507559ENDIF !-end ok_ade
     
    527579 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    528580 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    529  & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PFLUX,PFLUC,&
     581 & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PTAU_LW_TOT,PFLUX,PFLUC,&
    530582 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    531583
     
    536588ZFSUP_AERO(:,:,4) =  PFSUP(:,:)
    537589ZFSDN_AERO(:,:,4) =  PFSDN(:,:)
     590
     591LWUP0_AERO(:,:,4) = PFLUC(:,1,:)
     592LWDN0_AERO(:,:,4) = PFLUC(:,2,:)
     593
     594LWUP_AERO(:,:,4) = PFLUX(:,1,:)
     595LWDN_AERO(:,:,4) = PFLUX(:,2,:)
    538596
    539597ENDIF ! ok_ade .and. ok_aie
     
    563621 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    564622 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    565  & LRDUST,PPIZA_ZERO,PCGA_ZERO,PTAU_ZERO,PFLUX,PFLUC,&
     623 & LRDUST,PPIZA_ZERO,PCGA_ZERO,PTAU_ZERO, PTAU_LW_ZERO,PFLUX,PFLUC,&
    566624 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    567625
     
    572630ZFSUP_AERO(:,:,5) =  PFSUP(:,:)
    573631ZFSDN_AERO(:,:,5) =  PFSDN(:,:)
     632
     633LWUP0_AERO(:,:,5) = PFLUC(:,1,:)
     634LWDN0_AERO(:,:,5) = PFLUC(:,2,:)
     635
     636LWUP_AERO(:,:,5) = PFLUX(:,1,:)
     637LWDN_AERO(:,:,5) = PFLUX(:,2,:)
    574638
    575639ENDIF ! .not. AEROSOLFEEDBACK_ACTIVE
     
    643707    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,4)
    644708    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,4)
     709
     710    PFLUX(:,1,:) =  LWUP_AERO(:,:,4)
     711    PFLUX(:,2,:) =  LWDN_AERO(:,:,4)
     712    PFLUC(:,1,:) =  LWUP0_AERO(:,:,4)
     713    PFLUC(:,2,:) =  LWDN0_AERO(:,:,4)   
    645714  ENDIF
    646715
     
    650719    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,3)
    651720    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,3)
     721
     722    PFLUX(:,1,:) =  LWUP_AERO(:,:,3)
     723    PFLUX(:,2,:) =  LWDN_AERO(:,:,3)
     724    PFLUC(:,1,:) =  LWUP0_AERO(:,:,3)
     725    PFLUC(:,2,:) =  LWDN0_AERO(:,:,3)
    652726  ENDIF
    653727
     
    657731    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,2)
    658732    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,2)
     733
     734    PFLUX(:,1,:) =  LWUP_AERO(:,:,2)
     735    PFLUX(:,2,:) =  LWDN_AERO(:,:,2)
     736    PFLUC(:,1,:) =  LWUP0_AERO(:,:,2)
     737    PFLUC(:,2,:) =  LWDN0_AERO(:,:,2)
    659738  ENDiF
    660739
     
    664743    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,1)
    665744    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,1)
     745
     746    PFLUX(:,1,:) =  LWUP_AERO(:,:,1)
     747    PFLUX(:,2,:) =  LWDN_AERO(:,:,1)
     748    PFLUC(:,1,:) =  LWUP0_AERO(:,:,1)
     749    PFLUC(:,2,:) =  LWDN0_AERO(:,:,1)
    666750  ENDIF
    667751
     
    677761    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,5)
    678762
     763    PFLUX(:,1,:) =  LWUP_AERO(:,:,5)
     764    PFLUX(:,2,:) =  LWDN_AERO(:,:,5)
     765    PFLUC(:,1,:) =  LWUP0_AERO(:,:,5)
     766    PFLUC(:,2,:) =  LWDN0_AERO(:,:,5)
     767
    679768ENDIF
    680769
     
    683772! requires a natural aerosol field read and used
    684773! Difference of net fluxes from double call to radiation
    685 ! Will need to be extended to LW radiation
     774! Will need to be extended to LW radiation -> done by CK (2014-05-23)
    686775
    687776IF (flag_aerosol .GT. 0 .OR. flag_aerosol_strat) THEN
     
    709798     PTOPSWCFAERO(:,3) = 0.0
    710799
     800! LW direct anthropogenic forcing
     801     PSOLLWADAERO(:)  = (-LWDN_AERO(:,1,4)      -LWUP_AERO(:,1,4))      -(-LWDN_AERO(:,1,2)      -LWUP_AERO(:,1,2))
     802     PTOPLWADAERO(:)  = (-LWDN_AERO(:,KLEV+1,4) -LWUP_AERO(:,KLEV+1,4)) -(-LWDN_AERO(:,KLEV+1,2) -LWUP_AERO(:,KLEV+1,2))
     803     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,4)     -LWUP0_AERO(:,1,4))     -(-LWDN0_AERO(:,1,2)     -LWUP0_AERO(:,1,2))
     804     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,4)-LWUP0_AERO(:,KLEV+1,4))-(-LWDN0_AERO(:,KLEV+1,2)-LWUP0_AERO(:,KLEV+1,2))
     805
     806! LW indirect anthropogenic forcing
     807     PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,4)     -LWUP_AERO(:,1,4))     -(-LWDN_AERO(:,1,3)     -LWUP_AERO(:,1,3))
     808     PTOPLWAIAERO(:) = (-LWDN_AERO(:,KLEV+1,4)-LWUP_AERO(:,KLEV+1,4))-(-LWDN_AERO(:,KLEV+1,3)-LWUP_AERO(:,KLEV+1,3))
     809
    711810ENDIF
    712811
     
    733832     PTOPSWCFAERO(:,3) = 0.0
    734833
     834! LW direct anthropogenic forcing
     835     PSOLLWADAERO(:)  = (-LWDN_AERO(:,1,3)      -LWUP_AERO(:,1,3))      -(-LWDN_AERO(:,1,1)      -LWUP_AERO(:,1,1))
     836     PTOPLWADAERO(:)  = (-LWDN_AERO(:,KLEV+1,3) -LWUP_AERO(:,KLEV+1,3)) -(-LWDN_AERO(:,KLEV+1,1) -LWUP_AERO(:,KLEV+1,1))
     837     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,3)     -LWUP0_AERO(:,1,3))     -(-LWDN0_AERO(:,1,1)     -LWUP0_AERO(:,1,1))
     838     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,3)-LWUP0_AERO(:,KLEV+1,3))-(-LWDN0_AERO(:,KLEV+1,1)-LWUP0_AERO(:,KLEV+1,1))
     839
     840! LW indirect anthropogenic forcing
     841     PSOLLWAIAERO(:) = 0.0
     842     PTOPLWAIAERO(:) = 0.0
     843
    735844ENDIF
    736845
     
    757866     PTOPSWCFAERO(:,3) = 0.0
    758867
     868! LW direct anthropogenic forcing
     869     PSOLLWADAERO(:)  = 0.0
     870     PTOPLWADAERO(:)  = 0.0
     871     PSOLLWAD0AERO(:) = 0.0
     872     PTOPLWAD0AERO(:) = 0.0
     873
     874! LW indirect anthropogenic forcing
     875     PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,2)     -LWUP_AERO(:,1,2))     -(-LWDN_AERO(:,1,1)     -LWUP_AERO(:,1,1))
     876     PTOPLWAIAERO(:) = (-LWDN_AERO(:,KLEV+1,2)-LWUP_AERO(:,KLEV+1,2))-(-LWDN_AERO(:,KLEV+1,1)-LWUP_AERO(:,KLEV+1,1))
     877
    759878ENDIF
    760879
     
    781900     PTOPSWCFAERO(:,3) = 0.0
    782901
     902! LW direct anthropogenic forcing
     903     PSOLLWADAERO(:)  = 0.0
     904     PTOPLWADAERO(:)  = 0.0
     905     PSOLLWAD0AERO(:) = 0.0
     906     PTOPLWAD0AERO(:) = 0.0
     907
     908! LW indirect anthropogenic forcing
     909     PSOLLWAIAERO(:) = 0.0
     910     PTOPLWAIAERO(:) = 0.0
     911
    783912ENDIF
    784913
     
    790919     PSOLSWCFAERO(:,3) = (ZFSDN_AERO(:,1,5)     -ZFSUP_AERO(:,1,5))     -(ZFSDN0_AERO(:,1,5)     -ZFSUP0_AERO(:,1,5))
    791920     PTOPSWCFAERO(:,3) = (ZFSDN_AERO(:,KLEV+1,5)-ZFSUP_AERO(:,KLEV+1,5))-(ZFSDN0_AERO(:,KLEV+1,5)-ZFSUP0_AERO(:,KLEV+1,5))
     921
    792922ENDIF
    793923
  • LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.F90

    r2027 r2146  
    1010 & P_ZEMIS, P_ZEMIW,&
    1111 & pq   , pcco2, pozn, pcldf, ptaucld, ptclear,&
    12  & P_CLDFRAC,P_TAUCLD,P_COLDRY,P_WKL,P_WX,&
    13  & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT) 
     12 & P_CLDFRAC,P_TAUCLD,&
     13 & PTAU_LW,&
     14 & P_COLDRY,P_WKL,P_WX,&
     15 & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT ) 
    1416
    1517!     Reformatted for F90 by JJMorcrette, ECMWF, 980714
     
    2830USE PARRRTM  , ONLY : JPBAND   ,JPXSEC   ,JPLAY   ,&
    2931 & JPINPX 
    30 USE YOERAD   , ONLY : NOVLP
    31 !USE YOERDI   , ONLY :    RCH4     ,RN2O    ,RCFC11  ,RCFC12
     32USE YOERAD   , ONLY : NLW      ,NOVLP
     33USE YOERDI   , ONLY :    RCH4     ,RN2O    ,RCFC11  ,RCFC12
    3234USE YOESW    , ONLY : RAER
    3335
    3436!------------------------------Arguments--------------------------------
    3537
    36 
    37 
    3838IMPLICIT NONE
    3939
    40 #include "clesphys.h"
     40
    4141INTEGER(KIND=JPIM),INTENT(IN)    :: KLON! Number of atmospheres (longitudes)
    4242INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV! Number of atmospheric layers
     
    5656REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLDF(KLON,KLEV) ! Cloud fraction
    5757REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAUCLD(KLON,KLEV,JPBAND) ! Cloud optical depth
     58!--C.Kleinschmitt
     59REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols 
     60!--end
    5861REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTCLEAR
    5962REAL(KIND=JPRB)   ,INTENT(OUT)   :: P_CLDFRAC(JPLAY) ! Cloud fraction
     
    258261  P_TAUAERL(I_L,16)=ZTAUAER(5)
    259262ENDDO
     263!--Use LW AOD from own Mie calculations (C. Kleinschmitt)
     264DO I_L=1,KLEV
     265  JK=KLEV-I_L+1
     266!  DO JAE=1, NLW
     267  DO JAE=1, 16
     268    P_TAUAERL(I_L,JAE) = MAX( PTAU_LW(K_IPLON, JK, JAE), 1e-30 )
     269  ENDDO
     270ENDDO
     271!--end C. Kleinschmitt
    260272
    261273DO J2=1,KLEV
     
    390402!     ------------------------------------------------------------------
    391403
    392 
    393 
    394404IF (LHOOK) CALL DR_HOOK('RRTM_ECRT_140GP',1,ZHOOK_HANDLE)
    395405END SUBROUTINE RRTM_ECRT_140GP
  • LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.intfb.h

    r1990 r2146  
    1 INTERFACE
    2 SUBROUTINE RRTM_ECRT_140GP&
     1INTERFACE 
     2SUBROUTINE RRTM_ECRT_140GP &
    33 & ( K_IPLON, klon , klev, kcld,&
    44 & paer , paph , pap,&
    5  & pts , pth , pt,&
     5 & pts  , pth , pt,&
    66 & P_ZEMIS, P_ZEMIW,&
    7  & pq , pcco2, pozn, pcldf, ptaucld, ptclear,&
    8  & P_CLDFRAC,P_TAUCLD,P_COLDRY,P_WKL,P_WX,&
    9  & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT)
    10 USE PARKIND1 ,ONLY : JPIM ,JPRB
    11 USE PARRRTM , ONLY : JPBAND ,JPXSEC ,JPLAY ,&
    12  & JPINPX
     7 & pq   , pcco2, pozn, pcldf, ptaucld, ptclear,&
     8 & P_CLDFRAC,P_TAUCLD,&
     9 & PTAU_LW,&
     10 & P_COLDRY,P_WKL,P_WX,&
     11 & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT )
     12USE PARKIND1  ,ONLY : JPIM     ,JPRB
     13USE PARRRTM  , ONLY : JPBAND   ,JPXSEC   ,JPLAY   ,&
     14 & JPINPX 
     15USE YOERAD   , ONLY : NLW      ,NOVLP
     16USE YOERDI   , ONLY :    RCH4     ,RN2O    ,RCFC11  ,RCFC12
     17USE YOESW    , ONLY : RAER
    1318INTEGER(KIND=JPIM),INTENT(IN) :: KLON
    1419INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
     
    2833REAL(KIND=JPRB) ,INTENT(IN) :: PCLDF(KLON,KLEV)
    2934REAL(KIND=JPRB) ,INTENT(IN) :: PTAUCLD(KLON,KLEV,JPBAND)
     35!--C.Kleinschmitt
     36REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols 
     37!--end
    3038REAL(KIND=JPRB) ,INTENT(OUT) :: PTCLEAR
    3139REAL(KIND=JPRB) ,INTENT(OUT) :: P_CLDFRAC(JPLAY)
  • LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.F90

    r1990 r2146  
    4040 & PQ    , PCCO2 , POZN,&
    4141 & PCLDF , PTAUCLD,&
     42 & PTAU_LW,&
    4243 & PEMIT , PFLUX , PFLUC, PTCLEAR &
    4344 & ) 
     
    5556USE PARKIND1  ,ONLY : JPIM     ,JPRB
    5657USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
    57 
     58USE YOERAD    ,ONLY : NLW
    5859USE PARRRTM  , ONLY : JPBAND   ,JPXSEC   ,JPGPT    ,JPLAY    ,&
    5960 & JPINPX 
     
    8081REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLDF(KLON,KLEV) ! Cloud fraction
    8182REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAUCLD(KLON,KLEV,JPBAND) ! Cloud optical depth
     83!--C.Kleinschmitt
     84REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols
     85!--end
    8286REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMIT(KLON) ! Surface LW emissivity
    8387REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFLUX(KLON,2,KLEV+1) ! LW total sky flux (1=up, 2=down)
     
    204208   & P_ZEMIS, P_ZEMIW,&
    205209   & pq   , pcco2, pozn, pcldf, ptaucld, ztclear,&
    206    & Z_CLDFRAC,Z_TAUCLD,Z_COLDRY,Z_WKL,Z_WX,&
     210   & Z_CLDFRAC,Z_TAUCLD,&
     211   & PTAU_LW,&
     212   & Z_COLDRY,Z_WKL,Z_WX,&
    207213   & Z_TAUAERL,Z_PAVEL,Z_TAVEL,Z_PZ,Z_TZ,Z_TBOUND,I_NLAYERS,Z_SEMISS,IREFLECT) 
    208214
  • LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.intfb.h

    r1990 r2146  
    11INTERFACE
    2 SUBROUTINE RRTM_RRTM_140GP&
     2SUBROUTINE RRTM_RRTM_140GP &
    33 & ( KIDIA , KFDIA , KLON , KLEV,&
    4  & PAER , PAPH , PAP,&
    5  & PTS , PTH , PT,&
     4 & PAER  , PAPH , PAP,&
     5 & PTS   , PTH  , PT,&
    66 & P_ZEMIS , P_ZEMIW,&
    7  & PQ , PCCO2 , POZN,&
     7 & PQ    , PCCO2 , POZN,&
    88 & PCLDF , PTAUCLD,&
    9  & PEMIT , PFLUX , PFLUC, PTCLEAR&
    10  & )
     9 & PTAU_LW,&
     10 & PEMIT , PFLUX , PFLUC, PTCLEAR )
    1111USE PARKIND1 ,ONLY : JPIM ,JPRB
     12USE YOERAD   ,ONLY : NLW !--C.Kleinschmitt
    1213USE PARRRTM , ONLY : JPBAND ,JPXSEC ,JPGPT ,JPLAY ,&
    13  & JPINPX
     14 & JPINPX 
     15!-NLW in clesphys now OB
     16include "clesphys.h"
    1417INTEGER(KIND=JPIM),INTENT(IN) :: KLON
    1518INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
     
    2932REAL(KIND=JPRB) ,INTENT(IN) :: PCLDF(KLON,KLEV)
    3033REAL(KIND=JPRB) ,INTENT(IN) :: PTAUCLD(KLON,KLEV,JPBAND)
     34!--C.Kleinschmitt
     35REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols 
     36!--end
    3137REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(KLON)
    3238REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUX(KLON,2,KLEV+1)
Note: See TracChangeset for help on using the changeset viewer.