Index: LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90	(revision 2146)
@@ -12,5 +12,4 @@
   USE aero_mod
   USE phys_local_var_mod, only: od550aer,od865aer,ec550aer,od550lt1aer
-  USE YOMCST           , only : RD , RG
 
   !
@@ -50,4 +49,5 @@
   !
   IMPLICIT NONE
+  INCLUDE "YOMCST.h"
   !
   ! Input arguments:
@@ -55,5 +55,5 @@
   REAL, DIMENSION(klon,klev), INTENT(in)   :: pdel
   REAL, INTENT(in)                         :: delt
-  REAL, DIMENSION(klon,klev,naero_spc), INTENT(in) :: m_allaer
+  REAL, DIMENSION(klon,klev,naero_tot), INTENT(in) :: m_allaer
   REAL, DIMENSION(klon,klev), INTENT(in)   :: RHcl     ! humidite relative ciel clair
   INTEGER,INTENT(in)                       :: flag_aerosol
@@ -73,5 +73,5 @@
   LOGICAL :: soluble
   
-  INTEGER :: i, k, m
+  INTEGER :: i, k, m, aerindex
   INTEGER :: spsol, spinsol, la
   INTEGER :: RH_num(klon,klev)
@@ -96,5 +96,6 @@
   REAL :: zdp1(klon,klev) 
   INTEGER, ALLOCATABLE, DIMENSION(:)  :: aerosol_name
-  INTEGER :: nb_aer
+  INTEGER :: nb_aer, itau
+  LOGICAL :: ok_itau
   
   REAL :: dh(KLON,KLEV)
@@ -105,5 +106,5 @@
   REAL :: alpha_aeri_5wv(las,naero_insoluble)         ! Ext. coeff. ** m2/g 
 
-  REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp
+  REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp
   
   !
@@ -113,5 +114,5 @@
   LOGICAL :: used_tau(naero_tot)
   INTEGER :: n
-  
+
 ! From here on we look at the optical parameters at 5 wavelengths:  
 ! 443nm, 550, 670, 765 and 865 nm 
@@ -222,39 +223,39 @@
      nb_aer = 2
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASSO4M
-     aerosol_name(2) = id_CSSO4M
+     aerosol_name(1) = id_ASSO4M_phy
+     aerosol_name(2) = id_CSSO4M_phy
   ELSEIF (flag_aerosol .EQ. 2) THEN
      nb_aer = 2
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASBCM
-     aerosol_name(2) = id_AIBCM
+     aerosol_name(1) = id_ASBCM_phy
+     aerosol_name(2) = id_AIBCM_phy
   ELSEIF (flag_aerosol .EQ. 3) THEN 
      nb_aer = 2
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASPOMM
-     aerosol_name(2) = id_AIPOMM
+     aerosol_name(1) = id_ASPOMM_phy
+     aerosol_name(2) = id_AIPOMM_phy
   ELSEIF (flag_aerosol .EQ. 4) THEN 
      nb_aer = 3
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_CSSSM
-     aerosol_name(2) = id_SSSSM
-     aerosol_name(3) = id_ASSSM
+     aerosol_name(1) = id_CSSSM_phy
+     aerosol_name(2) = id_SSSSM_phy
+     aerosol_name(3) = id_ASSSM_phy
   ELSEIF (flag_aerosol .EQ. 5) THEN 
      nb_aer = 1
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_CIDUSTM
+     aerosol_name(1) = id_CIDUSTM_phy
   ELSEIF (flag_aerosol .EQ. 6) THEN 
      nb_aer = 10
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASSO4M      
-     aerosol_name(2) = id_ASBCM
-     aerosol_name(3) = id_AIBCM
-     aerosol_name(4) = id_ASPOMM
-     aerosol_name(5) = id_AIPOMM
-     aerosol_name(6) = id_CSSSM
-     aerosol_name(7) = id_SSSSM
-     aerosol_name(8) = id_ASSSM
-     aerosol_name(9) = id_CIDUSTM
-     aerosol_name(10) = id_CSSO4M
+     aerosol_name(1) = id_ASSO4M_phy      
+     aerosol_name(2) = id_ASBCM_phy
+     aerosol_name(3) = id_AIBCM_phy
+     aerosol_name(4) = id_ASPOMM_phy
+     aerosol_name(5) = id_AIPOMM_phy
+     aerosol_name(6) = id_CSSSM_phy
+     aerosol_name(7) = id_SSSSM_phy
+     aerosol_name(8) = id_ASSSM_phy
+     aerosol_name(9) = id_CIDUSTM_phy
+     aerosol_name(10) = id_CSSO4M_phy
   ENDIF
 
@@ -293,34 +294,34 @@
   DO m=1,nb_aer   ! tau is only computed for each mass    
     fac=1.0
-    IF (aerosol_name(m).EQ.id_ASBCM) THEN
+    IF (aerosol_name(m).EQ.id_ASBCM_phy) THEN
         soluble=.TRUE.
         spsol=1
-    ELSEIF (aerosol_name(m).EQ.id_ASPOMM) THEN 
+    ELSEIF (aerosol_name(m).EQ.id_ASPOMM_phy) THEN 
         soluble=.TRUE.
         spsol=2 
-    ELSEIF (aerosol_name(m).EQ.id_ASSO4M) THEN
+    ELSEIF (aerosol_name(m).EQ.id_ASSO4M_phy) THEN
         soluble=.TRUE.
         spsol=3
         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
-    ELSEIF (aerosol_name(m).EQ.id_CSSO4M) THEN
+    ELSEIF (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
         soluble=.TRUE.
         spsol=4
         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
-    ELSEIF (aerosol_name(m).EQ.id_SSSSM) THEN 
+    ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN 
         soluble=.TRUE.
         spsol=5
-    ELSEIF (aerosol_name(m).EQ.id_CSSSM) THEN 
+    ELSEIF (aerosol_name(m).EQ.id_CSSSM_phy) THEN 
         soluble=.TRUE.
         spsol=6
-    ELSEIF (aerosol_name(m).EQ.id_ASSSM) THEN
+    ELSEIF (aerosol_name(m).EQ.id_ASSSM_phy) THEN
         soluble=.TRUE.
         spsol=7
-    ELSEIF (aerosol_name(m).EQ.id_CIDUSTM) THEN 
+    ELSEIF (aerosol_name(m).EQ.id_CIDUSTM_phy) THEN 
         soluble=.FALSE.
         spinsol=1
-    ELSEIF  (aerosol_name(m).EQ.id_AIBCM) THEN 
+    ELSEIF  (aerosol_name(m).EQ.id_AIBCM_phy) THEN 
         soluble=.FALSE.
         spinsol=2
-    ELSEIF (aerosol_name(m).EQ.id_AIPOMM) THEN 
+    ELSEIF (aerosol_name(m).EQ.id_AIPOMM_phy) THEN 
         soluble=.FALSE.
         spinsol=3
@@ -335,4 +336,6 @@
     ENDIF
 
+    aerindex=aerosol_name(m)
+
     DO la=1,las
 
@@ -344,10 +347,10 @@
                              (alpha_aers_5wv(RH_num(i,k)+1,la,spsol) - & 
                               alpha_aers_5wv(RH_num(i,k),la,spsol))
-              tau(i,k,la,spsol) = mass_temp(i,k,spsol)*1000.*zdp1(i,k)   &
-                                 *tau_ae5wv_int*delt*fac
-              tausum(i,la,spsol)=tausum(i,la,spsol)+tau(i,k,la,spsol)
+              tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)*   &
+                                    tau_ae5wv_int*delt*fac
+              tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex)
             ENDDO
           ENDDO
-
+ 
       ELSE                         ! For insoluble aerosol
 
@@ -355,8 +358,7 @@
           DO i=1, KLON
             tau_ae5wv_int = alpha_aeri_5wv(la,spinsol)
-            tau(i,k,la,naero_soluble+spinsol) = mass_temp(i,k,naero_soluble+spinsol)*1000.*zdp1(i,k)* &
-                                                tau_ae5wv_int*delt*fac
-            tausum(i,la,naero_soluble+spinsol)= tausum(i,la,naero_soluble+spinsol)  &
-                                               +tau(i,k,la,naero_soluble+spinsol)
+            tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)* &
+                                   tau_ae5wv_int*delt*fac
+            tausum(i,la,aerindex)= tausum(i,la,aerindex)+tau(i,k,la,aerindex)
           ENDDO
         ENDDO
@@ -405,7 +407,7 @@
   ENDDO
 
-  od550lt1aer(:)=tausum(:,la550,id_ASSO4M)+tausum(:,la550,id_ASBCM) +tausum(:,la550,id_AIBCM)+ &
-                 tausum(:,la550,id_ASPOMM)+tausum(:,la550,id_AIPOMM)+tausum(:,la550,id_ASSSM)+ &
-                 0.03*tausum(:,la550,id_CSSSM)+0.4*tausum(:,la550,id_CIDUSTM)
+  od550lt1aer(:)=tausum(:,la550,id_ASSO4M_phy)+tausum(:,la550,id_ASBCM_phy) +tausum(:,la550,id_AIBCM_phy)+ &
+                 tausum(:,la550,id_ASPOMM_phy)+tausum(:,la550,id_AIPOMM_phy)+tausum(:,la550,id_ASSSM_phy)+ &
+                 0.03*tausum(:,la550,id_CSSSM_phy)+0.4*tausum(:,la550,id_CIDUSTM_phy)
 
   DEALLOCATE(aerosol_name) 
Index: LMDZ5/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90	(revision 2146)
@@ -6,10 +6,9 @@
      tau_allaer, piz_allaer, &
      cg_allaer, m_allaer_pi, &
-     flag_aerosol, pplay, t_seri )
+     flag_aerosol, zrho )
 
   USE dimphy
   USE aero_mod
   USE phys_local_var_mod, only: absvisaer
-  USE YOMCST            , only: RD , RG
 
   !    Yves Balkanski le 12 avril 2006
@@ -22,4 +21,5 @@
   IMPLICIT NONE
 
+  INCLUDE "YOMCST.h"
   INCLUDE "iniprint.h"
   INCLUDE "clesphys.h"
@@ -30,10 +30,9 @@
   REAL, DIMENSION(klon,klev),     INTENT(in)  :: pdel
   REAL,                           INTENT(in)  :: delt
-  REAL, DIMENSION(klon,klev,naero_spc),   INTENT(in)  :: m_allaer
-  REAL, DIMENSION(klon,klev,naero_spc),   INTENT(in)  :: m_allaer_pi
+  REAL, DIMENSION(klon,klev,naero_tot),   INTENT(in)  :: m_allaer
+  REAL, DIMENSION(klon,klev,naero_tot),   INTENT(in)  :: m_allaer_pi
   REAL, DIMENSION(klon,klev),     INTENT(in)  :: RHcl       ! humidite relative ciel clair
   INTEGER,                        INTENT(in)  :: flag_aerosol
-  REAL, DIMENSION(klon,klev),     INTENT(in)  :: pplay
-  REAL, DIMENSION(klon,klev),     INTENT(in)  :: t_seri
+  REAL, DIMENSION(klon,klev),     INTENT(in)  :: zrho
   !
   ! Output arguments:
@@ -41,7 +40,7 @@
   ! 2= natural aerosols
   !
-  REAL, DIMENSION(klon,klev,2,nbands_rrtm), INTENT(out) :: tau_allaer ! epaisseur optique aerosol
-  REAL, DIMENSION(klon,klev,2,nbands_rrtm), INTENT(out) :: piz_allaer ! single scattering albedo aerosol
-  REAL, DIMENSION(klon,klev,2,nbands_rrtm), INTENT(out) :: cg_allaer  ! asymmetry parameter aerosol
+  REAL, DIMENSION(klon,klev,2,nbands_sw_rrtm), INTENT(out) :: tau_allaer ! epaisseur optique aerosol
+  REAL, DIMENSION(klon,klev,2,nbands_sw_rrtm), INTENT(out) :: piz_allaer ! single scattering albedo aerosol
+  REAL, DIMENSION(klon,klev,2,nbands_sw_rrtm), INTENT(out) :: cg_allaer  ! asymmetry parameter aerosol
 
   !
@@ -67,5 +66,4 @@
   REAL :: cg_ae2b_int    ! Intermediate computation of Assymetry parameter
   REAL :: Fact_RH(nbre_RH)
-  REAL :: zrho
   REAL :: fac
   REAL :: zdp1(klon,klev) 
@@ -73,10 +71,10 @@
   INTEGER :: nb_aer
 
-  REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp
-  REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp_pi
-  REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  tau_ae
-  REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  tau_ae_pi
-  REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  piz_ae
-  REAL, DIMENSION(klon,klev,naero_tot,nbands_rrtm) ::  cg_ae
+  REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp
+  REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp_pi
+  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  tau_ae
+  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  tau_ae_pi
+  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  piz_ae
+  REAL, DIMENSION(klon,klev,naero_tot,nbands_sw_rrtm) ::  cg_ae
 
 
@@ -84,10 +82,10 @@
   ! Proprietes optiques
   !
-  REAL:: alpha_aers_6bands(nbre_RH,nbands_rrtm,naero_soluble)   !--unit m2/g SO4
-  REAL:: alpha_aeri_6bands(nbands_rrtm,naero_insoluble)
-  REAL:: cg_aers_6bands(nbre_RH,nbands_rrtm,naero_soluble)      !--unit 
-  REAL:: cg_aeri_6bands(nbands_rrtm,naero_insoluble)
-  REAL:: piz_aers_6bands(nbre_RH,nbands_rrtm,naero_soluble)     !-- unit
-  REAL:: piz_aeri_6bands(nbands_rrtm,naero_insoluble)        !-- unit
+  REAL:: alpha_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)   !--unit m2/g SO4
+  REAL:: alpha_aeri_6bands(nbands_sw_rrtm,naero_insoluble)
+  REAL:: cg_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)      !--unit 
+  REAL:: cg_aeri_6bands(nbands_sw_rrtm,naero_insoluble)
+  REAL:: piz_aers_6bands(nbre_RH,nbands_sw_rrtm,naero_soluble)     !-- unit
+  REAL:: piz_aeri_6bands(nbands_sw_rrtm,naero_insoluble)        !-- unit
 
   INTEGER :: id
@@ -280,16 +278,15 @@
   spsol = 0
   spinsol = 0 
-  if(NSW.NE.nbands_rrtm) then
+  IF (NSW.NE.nbands_sw_rrtm) THEN
      print *,'Erreur NSW doit etre egal a 6 pour cette routine'
      stop
-  endif
+  ENDIF
 
   DO k=1, klev
     DO i=1, klon
-      zrho=pplay(i,k)/t_seri(i,k)/RD                  ! kg/m3
-!CDIR UNROLL=naero_spc
-      mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9
-!CDIR UNROLL=naero_spc
-      mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho / 1.e+9
+!CDIR UNROLL=naero_tot
+      mass_temp(i,k,:) = m_allaer(i,k,:) / zrho(i,k) / 1.e+9  !--kg/kg
+!CDIR UNROLL=naero_tot
+      mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho(i,k) / 1.e+9
       zdp1(i,k)=pdel(i,k)/(RG*delt)      ! air mass auxiliary  variable --> zdp1 [kg/(m^2 *s)]
     ENDDO
@@ -299,39 +296,39 @@
      nb_aer = 2
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASSO4M
-     aerosol_name(2) = id_CSSO4M
+     aerosol_name(1) = id_ASSO4M_phy
+     aerosol_name(2) = id_CSSO4M_phy
   ELSEIF (flag_aerosol .EQ. 2) THEN
      nb_aer = 2
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASBCM
-     aerosol_name(2) = id_AIBCM
+     aerosol_name(1) = id_ASBCM_phy
+     aerosol_name(2) = id_AIBCM_phy
   ELSEIF (flag_aerosol .EQ. 3) THEN 
      nb_aer = 2
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASPOMM
-     aerosol_name(2) = id_AIPOMM
+     aerosol_name(1) = id_ASPOMM_phy
+     aerosol_name(2) = id_AIPOMM_phy
   ELSEIF (flag_aerosol .EQ. 4) THEN 
      nb_aer = 3
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_CSSSM
-     aerosol_name(2) = id_SSSSM
-     aerosol_name(3) = id_ASSSM
+     aerosol_name(1) = id_CSSSM_phy
+     aerosol_name(2) = id_SSSSM_phy
+     aerosol_name(3) = id_ASSSM_phy
   ELSEIF (flag_aerosol .EQ. 5) THEN 
      nb_aer = 1
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_CIDUSTM
+     aerosol_name(1) = id_CIDUSTM_phy
   ELSEIF (flag_aerosol .EQ. 6) THEN 
      nb_aer = 10
      ALLOCATE (aerosol_name(nb_aer)) 
-     aerosol_name(1) = id_ASSO4M      
-     aerosol_name(2) = id_ASBCM
-     aerosol_name(3) = id_AIBCM
-     aerosol_name(4) = id_ASPOMM
-     aerosol_name(5) = id_AIPOMM
-     aerosol_name(6) = id_CSSSM
-     aerosol_name(7) = id_SSSSM
-     aerosol_name(8) = id_ASSSM
-     aerosol_name(9) = id_CIDUSTM
-     aerosol_name(10)= id_CSSO4M
+     aerosol_name(1) = id_ASSO4M_phy      
+     aerosol_name(2) = id_ASBCM_phy
+     aerosol_name(3) = id_AIBCM_phy
+     aerosol_name(4) = id_ASPOMM_phy
+     aerosol_name(5) = id_AIPOMM_phy
+     aerosol_name(6) = id_CSSSM_phy
+     aerosol_name(7) = id_SSSSM_phy
+     aerosol_name(8) = id_ASSSM_phy
+     aerosol_name(9) = id_CIDUSTM_phy
+     aerosol_name(10)= id_CSSO4M_phy
   ENDIF
 
@@ -354,5 +351,5 @@
     DO i=1, KLON
       rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX)
-      RH_num(i,k) = INT( rh(i,k)/10. + 1.)
+      RH_num(i,k) = INT(rh(i,k)/10. + 1.)
       IF (rh(i,k).GT.85.) RH_num(i,k)=10
       IF (rh(i,k).GT.90.) RH_num(i,k)=11
@@ -365,34 +362,34 @@
   DO m=1,nb_aer   ! tau is only computed for each mass
      fac=1.0
-     IF (aerosol_name(m).EQ.id_ASBCM) THEN
+     IF (aerosol_name(m).EQ.id_ASBCM_phy) THEN
         soluble=.TRUE.
         spsol=1
-     ELSEIF (aerosol_name(m).EQ.id_ASPOMM) THEN 
+     ELSEIF (aerosol_name(m).EQ.id_ASPOMM_phy) THEN 
         soluble=.TRUE.
         spsol=2 
-     ELSEIF (aerosol_name(m).EQ.id_ASSO4M) THEN 
+     ELSEIF (aerosol_name(m).EQ.id_ASSO4M_phy) THEN 
         soluble=.TRUE.
         spsol=3
         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
-     ELSEIF  (aerosol_name(m).EQ.id_CSSO4M) THEN
+     ELSEIF  (aerosol_name(m).EQ.id_CSSO4M_phy) THEN
         soluble=.TRUE.
         spsol=4
         fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
-     ELSEIF (aerosol_name(m).EQ.id_SSSSM) THEN 
+     ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN 
          soluble=.TRUE.
          spsol=5
-     ELSEIF (aerosol_name(m).EQ.id_CSSSM) THEN 
+     ELSEIF (aerosol_name(m).EQ.id_CSSSM_phy) THEN 
          soluble=.TRUE.
          spsol=6
-     ELSEIF (aerosol_name(m).EQ.id_ASSSM) THEN
+     ELSEIF (aerosol_name(m).EQ.id_ASSSM_phy) THEN
          soluble=.TRUE.
          spsol=7
-     ELSEIF (aerosol_name(m).EQ.id_CIDUSTM) THEN 
+     ELSEIF (aerosol_name(m).EQ.id_CIDUSTM_phy) THEN 
          soluble=.FALSE.
          spinsol=1
-     ELSEIF  (aerosol_name(m).EQ.id_AIBCM) THEN 
+     ELSEIF  (aerosol_name(m).EQ.id_AIBCM_phy) THEN 
          soluble=.FALSE.
          spinsol=2
-     ELSEIF (aerosol_name(m).EQ.id_AIPOMM) THEN 
+     ELSEIF (aerosol_name(m).EQ.id_AIPOMM_phy) THEN 
          soluble=.FALSE.
          spinsol=3
@@ -471,67 +468,67 @@
        DO i=1, KLON
 !--anthropogenic aerosol
-         tau_allaer(i,k,2,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)+ &
-                               tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)+   &
-                               tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)+ &
-                               tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+   &
-                               tau_ae(i,k,id_SSSSM,inu)+ tau_ae(i,k,id_CIDUSTM,inu)
+         tau_allaer(i,k,2,inu)=tau_ae(i,k,id_ASSO4M_phy,inu)+tau_ae(i,k,id_CSSO4M_phy,inu)+ &
+                               tau_ae(i,k,id_ASBCM_phy,inu)+tau_ae(i,k,id_AIBCM_phy,inu)+   &
+                               tau_ae(i,k,id_ASPOMM_phy,inu)+tau_ae(i,k,id_AIPOMM_phy,inu)+ &
+                               tau_ae(i,k,id_ASSSM_phy,inu)+tau_ae(i,k,id_CSSSM_phy,inu)+   &
+                               tau_ae(i,k,id_SSSSM_phy,inu)+ tau_ae(i,k,id_CIDUSTM_phy,inu)
          tau_allaer(i,k,2,inu)=MAX(tau_allaer(i,k,2,inu),1e-5)
 
-         piz_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
-                                tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
-                                tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
-                                tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
-                                tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
-                                tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &
-                                tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
-                                tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
-                                tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
-                                tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)) &
+         piz_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ &
+                                tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ &
+                                tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)+ &
+                                tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ &
+                                tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ &
+                                tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ &
+                                tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ &
+                                tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ &
+                                tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ &
+                                tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) &
                                 /tau_allaer(i,k,2,inu)
          piz_allaer(i,k,2,inu)=MAX(piz_allaer(i,k,2,inu),0.1)
 
-         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)+ &
-                               tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ &
-                               tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ &
-                               tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ &
-                               tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ &
-                               tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ &
-                               tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ &
-                               tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ &
-                               tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ &
-                               tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*cg_ae(i,k,id_CIDUSTM,inu))/ &
+         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)+ &
+                               tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+ &
+                               tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)*cg_ae(i,k,id_ASBCM_phy,inu)+ &
+                               tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ &
+                               tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ &
+                               tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+ &
+                               tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ &
+                               tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ &
+                               tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ &
+                               tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ &
                                (tau_allaer(i,k,2,inu)*piz_allaer(i,k,2,inu))
 
 !--natural aerosol
-         tau_allaer(i,k,1,inu)=tau_ae_pi(i,k,id_ASSO4M,inu)+tau_ae_pi(i,k,id_CSSO4M,inu)+ &
-                               tau_ae_pi(i,k,id_ASBCM,inu)+tau_ae_pi(i,k,id_AIBCM,inu)+   &
-                               tau_ae_pi(i,k,id_ASPOMM,inu)+tau_ae_pi(i,k,id_AIPOMM,inu)+ &
-                               tau_ae_pi(i,k,id_ASSSM,inu)+tau_ae_pi(i,k,id_CSSSM,inu)+   &
-                               tau_ae_pi(i,k,id_SSSSM,inu)+ tau_ae_pi(i,k,id_CIDUSTM,inu)
+         tau_allaer(i,k,1,inu)=tau_ae_pi(i,k,id_ASSO4M_phy,inu)+tau_ae_pi(i,k,id_CSSO4M_phy,inu)+ &
+                               tau_ae_pi(i,k,id_ASBCM_phy,inu)+tau_ae_pi(i,k,id_AIBCM_phy,inu)+   &
+                               tau_ae_pi(i,k,id_ASPOMM_phy,inu)+tau_ae_pi(i,k,id_AIPOMM_phy,inu)+ &
+                               tau_ae_pi(i,k,id_ASSSM_phy,inu)+tau_ae_pi(i,k,id_CSSSM_phy,inu)+   &
+                               tau_ae_pi(i,k,id_SSSSM_phy,inu)+ tau_ae_pi(i,k,id_CIDUSTM_phy,inu)
          tau_allaer(i,k,1,inu)=MAX(tau_allaer(i,k,1,inu),1e-5)
 
-         piz_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
-                                tau_ae_pi(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
-                                tau_ae_pi(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
-                                tau_ae_pi(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
-                                tau_ae_pi(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
-                                tau_ae_pi(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &
-                                tau_ae_pi(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
-                                tau_ae_pi(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
-                                tau_ae_pi(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
-                                tau_ae_pi(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)) &
+         piz_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ &
+                                tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ &
+                                tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)+ &
+                                tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ &
+                                tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ &
+                                tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ &
+                                tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ &
+                                tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ &
+                                tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ &
+                                tau_ae_pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) &
                                 /tau_allaer(i,k,1,inu)
          piz_allaer(i,k,1,inu)=MAX(piz_allaer(i,k,1,inu),0.1)
 
-         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)+ &
-                               tau_ae_pi(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ &
-                               tau_ae_pi(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ &
-                               tau_ae_pi(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ &
-                               tau_ae_pi(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ &
-                               tau_ae_pi(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ &
-                               tau_ae_pi(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ &
-                               tau_ae_pi(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ &
-                               tau_ae_pi(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ &
-                               tau_ae_pi(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*cg_ae(i,k,id_CIDUSTM,inu))/ &
+         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)+ &
+                               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)+ &
+                               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)+ &
+                               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)+ &
+                               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)+ &
+                               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)+ &
+                               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)+ &
+                               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)+ &
+                               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)+ &
+                               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))/ &
                                (tau_allaer(i,k,1,inu)*piz_allaer(i,k,1,inu))
 
Index: LMDZ5/trunk/libf/phylmd/rrtm/radlsw.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/radlsw.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/radlsw.F90	(revision 2146)
@@ -11,6 +11,7 @@
  & PFRSOD,PSUDU , PUVDF, PPARF, PPARCF, PTINCF,&
  & PSFSWDIR, PSFSWDIF,PFSDNN,PFSDNV ,&  
- & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,PFLUX,PFLUC,&
- & PFSDN ,PFSUP , PFSCDN , PFSCUP)
+ & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,&
+ & PTAU_LW,&
+ & PFLUX,PFLUC,PFSDN ,PFSUP , PFSCDN , PFSCUP)
 
 use write_field_phy
@@ -57,4 +58,5 @@
 ! PCGA_DST   : (KPROMA,KLEV,NSW); Assymetry factor for dust 
 ! PTAUREL_DST: (KPROMA,KLEV,NSW); Optical depth of dust relative to at 550nm
+! PTAU_LW  (KPROMA,KLEV,NLW); LW Optical depth of aerosols 
 ! PREF_LIQ (KPROMA,KLEV)        ; Liquid droplet radius (um)
 ! PREF_ICE (KPROMA,KLEV)        ; Ice crystal radius (um)
@@ -127,5 +129,5 @@
 !USE YOERAD   , ONLY : NSW      ,LRRTM    ,LCCNL    ,LCCNO, LDIFFC, &
 ! NSW mis dans .def MPL 20140211
-USE YOERAD   , ONLY : LRRTM    ,LCCNL    ,LCCNO, LDIFFC, &
+USE YOERAD   , ONLY : NLW, LRRTM    ,LCCNL    ,LCCNO, LDIFFC, &
  & NRADIP , NRADLP , NICEOPT, NLIQOPT, NINHOM ,NLAYINH ,&
  & RCCNLND, RCCNSEA, RLWINHF, RSWINHF, RRe2De ,&  
@@ -154,4 +156,5 @@
 
 include "clesphys.h"
+!!include "clesrrtm.h"
 include "YOETHF.h"
 INTEGER(KIND=JPIM),INTENT(IN)    :: KLON 
@@ -192,4 +195,7 @@
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PCGA_DST(KLON,KLEV,NSW)
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAUREL_DST(KLON,KLEV,NSW)
+!--C.Kleinschmitt
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW)
+!--end
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_LIQ(KLON,KLEV)
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE(KLON,KLEV)
@@ -1101,7 +1107,8 @@
      & PTS   , PTH   , PT,&
      & ZEMIS , ZEMIW,&
-     & PQ    , PCCO2 , ZOZN  , ZCLDSW  , ZTAUCLD,&
-     & ZEMIT , PFLUX , PFLUC , ZTCLEAR &
-     & )  
+     & PQ    , PCCO2 , ZOZN  ,&
+     & ZCLDSW  , ZTAUCLD,&
+     & PTAU_LW,&
+     & ZEMIT , PFLUX , PFLUC , ZTCLEAR )
     print *,'RADLSW: apres CALL RRTM_RRTM_140GP'
 
Index: LMDZ5/trunk/libf/phylmd/rrtm/radlsw.intfb.h
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/radlsw.intfb.h	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/radlsw.intfb.h	(revision 2146)
@@ -1,19 +1,21 @@
 INTERFACE
-SUBROUTINE RADLSW&
- & ( KIDIA, KFDIA , KLON , KLEV , KMODE, KAER,&
+SUBROUTINE RADLSW &
+ & ( KIDIA, KFDIA , KLON , KLEV  , KMODE, KAER,&
  & PRII0,&
  & PAER , PALBD , PALBP, PAPH , PAP,&
  & PCCNL, PCCNO,&
- & PCCO2, PCLFR , PDP , PEMIS, PEMIW , PLSM , PMU0, POZON,&
- & PQ , PQIWP , PQLWP, PQS , PQRAIN, PRAINT,&
- & PTH , PT , PTS , PNBAS, PNTOP,&
- & PREF_LIQ , PREF_ICE,&
- & PEMIT, PFCT , PFLT , PFCS , PFLS,&
+ & PCCO2, PCLFR , PDP  , PEMIS, PEMIW , PLSM , PMU0, POZON,&
+ & PQ   , PQIWP , PQLWP, PQS  , PQRAIN, PRAINT,&
+ & PTH  , PT    , PTS  , PNBAS, PNTOP,&
+ & PREF_LIQ, PREF_ICE,&
+ & PEMIT, PFCT  , PFLT , PFCS , PFLS,&
  & PFRSOD,PSUDU , PUVDF, PPARF, PPARCF, PTINCF,&
- & PSFSWDIR, PSFSWDIF,PFSDNN,PFSDNV,&
- & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,PFLUX,PFLUC,&
- & PFSDN ,PFSUP , PFSCDN , PFSCUP)
+ & PSFSWDIR, PSFSWDIF,PFSDNN,PFSDNV ,&  
+ & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,&
+ & PTAU_LW,&
+ & PFLUX,PFLUC,PFSDN ,PFSUP , PFSCDN , PFSCUP)
+
 USE PARKIND1 ,ONLY : JPIM ,JPRB
-USE YOERAD , ONLY : LRRTM ,LCCNL ,LCCNO, LDIFFC,&
+USE YOERAD , ONLY : NLW, LRRTM ,LCCNL ,LCCNO, LDIFFC,&
  & NRADIP , NRADLP , NICEOPT, NLIQOPT, NINHOM ,NLAYINH ,&
  & RCCNLND, RCCNSEA, RLWINHF, RSWINHF, RRe2De ,&
@@ -59,4 +61,7 @@
 REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV,NSW)
 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(KLON,KLEV,NSW)
+!--C.Kleinschmitt
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW)
+!--end
 REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(KLON)
 REAL(KIND=JPRB) ,INTENT(OUT) :: PFCT(KLON,KLEV+1)
Index: LMDZ5/trunk/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90	(revision 2146)
@@ -1,26 +1,33 @@
 ! $Id$
 !
-SUBROUTINE readaerosol_optic_rrtm(debut, new_aod, flag_aerosol, itap, rjourvrai, &
+SUBROUTINE readaerosol_optic_rrtm(debut, aerosol_couple,  &
+     new_aod, flag_aerosol, itap, rjourvrai, &
      pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &
-     mass_solu_aero, mass_solu_aero_pi, &
+     tr_seri, mass_solu_aero, mass_solu_aero_pi, &
      tau_aero, piz_aero, cg_aero, &
      tausum_aero, tau3d_aero )
 
-! This routine will :
-! 1) recevie the aerosols(already read and interpolated) corresponding to flag_aerosol
-! 2) calculate the optical properties for the aerosols
-!
-  
+  ! This routine will :
+  ! 1) recevie the aerosols(already read and interpolated) corresponding to flag_aerosol
+  ! 2) calculate the optical properties for the aerosols
+  !
+
   USE dimphy
   USE aero_mod
-  USE phys_local_var_mod, only: sconcso4,sconcoa,sconcbc,sconcss,sconcdust, &
-      concso4,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, &
-      load_tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp7
+  USE phys_local_var_mod, only: sconcso4,sconcno3,sconcoa,sconcbc,sconcss,sconcdust, &
+       concso4,concno3,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, &
+       load_tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp7
+
+  USE infotrac
+
   IMPLICIT NONE
   include "clesphys.h"
-
-! Input arguments
-!****************************************************************************************
+  include "YOMCST.h"
+
+
+  ! Input arguments
+  !****************************************************************************************
   LOGICAL, INTENT(IN)                      :: debut
+  LOGICAL, INTENT(IN)                      :: aerosol_couple
   LOGICAL, INTENT(IN)                      :: new_aod
   INTEGER, INTENT(IN)                      :: flag_aerosol
@@ -33,7 +40,8 @@
   REAL, DIMENSION(klon,klev), INTENT(IN)   :: rhcl   ! humidite relative ciel clair
   REAL, DIMENSION(klev), INTENT(IN)        :: presnivs
-
-! Output arguments
-!****************************************************************************************
+  REAL, DIMENSION(klon,klev,nbtr), INTENT(IN) :: tr_seri ! concentration tracer
+
+  ! Output arguments
+  !****************************************************************************************
   REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_solu_aero    ! Total mass for all soluble aerosols
   REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_solu_aero_pi !     -"-     preindustrial values
@@ -41,23 +49,25 @@
   REAL, DIMENSION(klon,klev,2,NSW), INTENT(OUT) :: piz_aero    ! Single scattering albedo aerosol
   REAL, DIMENSION(klon,klev,2,NSW), INTENT(OUT) :: cg_aero     ! asymmetry parameter aerosol
-!  REAL, DIMENSION(klon,nwave,naero_spc), INTENT(OUT)       :: tausum_aero
-!  REAL, DIMENSION(klon,klev,nwave,naero_spc), INTENT(OUT)  :: tau3d_aero
-!--correction minibug OB
   REAL, DIMENSION(klon,nwave,naero_tot), INTENT(OUT)       :: tausum_aero
   REAL, DIMENSION(klon,klev,nwave,naero_tot), INTENT(OUT)  :: tau3d_aero
 
-! Local variables
-!****************************************************************************************
-  REAL, DIMENSION(klon)        :: aerindex ! POLDER aerosol index 
-  REAL, DIMENSION(klon,klev)   :: sulfate  ! SO4 aerosol concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: bcsol    ! BC soluble concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: bcins    ! BC insoluble concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: pomsol   ! POM soluble concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: pomins   ! POM insoluble concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: cidust    ! DUST aerosol concentration  [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: sscoarse  ! SS Coarse concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: sssupco   ! SS Super Coarse concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: ssacu     ! SS Acumulation concentration [ug/m3]
-  REAL, DIMENSION(klon,klev)   :: sulfate_pi
+  ! Local variables
+  !****************************************************************************************
+  REAL, DIMENSION(klon)        :: aerindex      ! POLDER aerosol index 
+  REAL, DIMENSION(klon,klev)   :: sulfacc       ! SO4 accumulation concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: sulfcoarse    ! SO4 coarse concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: bcsol         ! BC soluble concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: bcins         ! BC insoluble concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: pomsol        ! POM soluble concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: pomins        ! POM insoluble concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: cidust        ! DUST aerosol concentration  [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: sscoarse      ! SS Coarse concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: sssupco       ! SS Super Coarse concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: ssacu         ! SS Acumulation concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: nitracc       ! nitrate accumulation concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: nitrcoarse    ! nitrate coarse concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: nitrinscoarse ! nitrate insoluble coarse concentration [ug/m3]
+  REAL, DIMENSION(klon,klev)   :: sulfacc_pi
+  REAL, DIMENSION(klon,klev)   :: sulfcoarse_pi
   REAL, DIMENSION(klon,klev)   :: bcsol_pi
   REAL, DIMENSION(klon,klev)   :: bcins_pi
@@ -68,118 +78,225 @@
   REAL, DIMENSION(klon,klev)   :: sssupco_pi
   REAL, DIMENSION(klon,klev)   :: ssacu_pi
-  REAL, DIMENSION(klon,klev)   :: pdel
-  REAL, DIMENSION(klon,klev,naero_spc) :: m_allaer
-  REAL, DIMENSION(klon,klev,naero_spc) :: m_allaer_pi !RAF  
-!  REAL, DIMENSION(klon,naero_tot)      :: fractnat_allaer !RAF delete??
-
+  REAL, DIMENSION(klon,klev)   :: nitracc_pi
+  REAL, DIMENSION(klon,klev)   :: nitrcoarse_pi
+  REAL, DIMENSION(klon,klev)   :: nitrinscoarse_pi
+  REAL, DIMENSION(klon,klev)   :: pdel, zrho
+  REAL, DIMENSION(klon,klev,naero_tot) :: m_allaer
+  REAL, DIMENSION(klon,klev,naero_tot) :: m_allaer_pi !RAF  
+  !  REAL, DIMENSION(klon,naero_tot)      :: fractnat_allaer !RAF delete??
+  character(len=8), dimension(nbtr) :: tracname
+  integer :: id_ASBCM, id_ASPOMM, id_ASSO4M, id_ASMSAM, id_CSSO4M, id_CSMSAM, id_SSSSM
+  integer :: id_CSSSM, id_ASSSM, id_CIDUSTM, id_AIBCM, id_AIPOMM, id_ASNO3M, id_CSNO3M, id_CINO3M
   INTEGER :: k, i
-  
-!****************************************************************************************
-! 1) Get aerosol mass
-!    
-!****************************************************************************************
-! Read and interpolate sulfate
-  IF ( flag_aerosol .EQ. 1 .OR. &
-       flag_aerosol .EQ. 6 ) THEN 
-
-     CALL readaerosol_interp(id_ASSO4M, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfate, sulfate_pi,loadso4)
-  ELSE
-     sulfate(:,:) = 0. ; sulfate_pi(:,:) = 0.
-     loadso4=0.
-  END IF
-
-! Read and interpolate bcsol and bcins
-  IF ( flag_aerosol .EQ. 2 .OR. &
-       flag_aerosol .EQ. 6 ) THEN 
-
-     ! Get bc aerosol distribution 
-     CALL readaerosol_interp(id_ASBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi, load_tmp1 )
-     CALL readaerosol_interp(id_AIBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi, load_tmp2 )
-     loadbc(:)=load_tmp1(:)+load_tmp2(:)
-  ELSE
-     bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
-     bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
-     loadbc=0.
-  END IF
-
-
-! Read and interpolate pomsol and pomins
-  IF ( flag_aerosol .EQ. 3 .OR. &
-       flag_aerosol .EQ. 6 ) THEN
-
-     CALL readaerosol_interp(id_ASPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3)
-     CALL readaerosol_interp(id_AIPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp4)
-     loadoa(:)=load_tmp3(:)+load_tmp4(:)
-  ELSE
-     pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
-     pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
-     loadoa=0.
-  END IF
-
-
-! Read and interpolate csssm, ssssm, assssm
-  IF (flag_aerosol .EQ. 4 .OR. &
-      flag_aerosol .EQ. 6 ) THEN 
-
-      CALL readaerosol_interp(id_SSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5) 
-      CALL readaerosol_interp(id_CSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp6) 
-      CALL readaerosol_interp(id_ASSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp7) 
-     loadss(:)=load_tmp5(:)+load_tmp6(:)+load_tmp7(:)
-  ELSE
-     sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0. 
-     ssacu(:,:)    = 0. ; ssacu_pi(:,:) = 0. 
-     sssupco(:,:)  = 0. ; sssupco_pi = 0. 
-     loadss=0.
-  ENDIF
-
-! Read and interpolate cidustm
-  IF (flag_aerosol .EQ. 5 .OR.  &
-      flag_aerosol .EQ. 6 ) THEN 
-
-      CALL readaerosol_interp(id_CIDUSTM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust) 
-
-  ELSE
-      cidust(:,:) = 0. ; cidust_pi(:,:) = 0. 
-      loaddust=0.
-  ENDIF
-
-!
-! Store all aerosols in one variable
-!
-  m_allaer(:,:,id_ASBCM)  = bcsol(:,:)        ! ASBCM
-  m_allaer(:,:,id_ASPOMM) = pomsol(:,:)       ! ASPOMM
-  m_allaer(:,:,id_ASSO4M) = sulfate(:,:)      ! ASSO4M (= SO4) 
-  m_allaer(:,:,id_CSSO4M) = 0.                ! CSSO4M 
-  m_allaer(:,:,id_SSSSM)  = sssupco(:,:)      ! SSSSM
-  m_allaer(:,:,id_CSSSM)  = sscoarse(:,:)     ! CSSSM
-  m_allaer(:,:,id_ASSSM)  = ssacu(:,:)        ! ASSSM
-  m_allaer(:,:,id_CIDUSTM)= cidust(:,:)       ! CIDUSTM
-  m_allaer(:,:,id_AIBCM)  = bcins(:,:)        ! AIBCM
-  m_allaer(:,:,id_AIPOMM) = pomins(:,:)       ! AIPOMM
-
-!RAF
-  m_allaer_pi(:,:,1)  = bcsol_pi(:,:)        ! ASBCM pre-ind
-  m_allaer_pi(:,:,2)  = pomsol_pi(:,:)       ! ASPOMM pre-ind
-  m_allaer_pi(:,:,3)  = sulfate_pi(:,:)      ! ASSO4M (= SO4) pre-ind
-  m_allaer_pi(:,:,4)  = 0.                   ! CSSO4M pre-ind
-  m_allaer_pi(:,:,5)  = sssupco_pi(:,:)      ! SSSSM pre-ind
-  m_allaer_pi(:,:,6)  = sscoarse_pi(:,:)     ! CSSSM pre-ind
-  m_allaer_pi(:,:,7)  = ssacu_pi(:,:)        ! ASSSM pre-ind
-  m_allaer_pi(:,:,8)  = cidust_pi(:,:)       ! CIDUSTM pre-ind
-  m_allaer_pi(:,:,9)  = bcins_pi(:,:)        ! AIBCM pre-ind
-  m_allaer_pi(:,:,10) = pomins_pi(:,:)       ! AIPOMM pre-ind
-
-!
-! Calculate the total mass of all soluble aersosols
-!
-  mass_solu_aero(:,:)    = sulfate(:,:)    + bcsol(:,:)    + pomsol(:,:) !   + &
-!       sscoarse(:,:)    + ssacu(:,:)    + sssupco(:,:) 
-  mass_solu_aero_pi(:,:) = sulfate_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) ! + &
-!       sscoarse_pi(:,:) + ssacu_pi(:,:) + sssupco_pi(:,:)
-
-!****************************************************************************************
-! 2) Calculate optical properties for the aerosols
-!
-!****************************************************************************************
+
+  !--air density
+  zrho(:,:)=pplay(:,:)/t_seri(:,:)/RD                     !--kg/m3
+
+  !****************************************************************************************
+  ! 1) Get aerosol mass
+  !    
+  !****************************************************************************************
+  !
+  !
+  IF (aerosol_couple) THEN   !--we get aerosols from tr_seri array from INCA
+     !
+     !--copy fields from INCA tr_seri 
+     !--convert to ug m-3 unit for consistency with offline fields
+     !
+#ifdef INCA
+     call tracinca_name(tracname)
+#endif
+
+     do i=1,nbtr
+        select case(trim(tracname(i)))
+           case ("ASBCM")
+              id_ASBCM = i
+           case ("ASPOMM") 
+              id_ASPOMM = i 
+           case ("ASSO4M")
+              id_ASSO4M = i 
+           case ("ASMSAM")
+              id_ASMSAM = i 
+           case ("CSSO4M")
+              id_CSSO4M = i 
+           case ("CSMSAM")
+              id_CSMSAM = i 
+           case ("SSSSM")
+              id_SSSSM = i 
+           case ("CSSSM")
+              id_CSSSM = i 
+           case ("ASSSM")
+              id_ASSSM = i 
+           case ("CIDUSTM")
+              id_CIDUSTM = i 
+           case ("AIBCM")
+              id_AIBCM = i 
+           case ("AIPOMM")
+              id_AIPOMM = i 
+           case ("ASNO3M")
+              id_ASNO3M = i 
+           case ("CSNO3M")
+              id_CSNO3M = i 
+           case ("CINO3M")
+              id_CINO3M = i 
+           end select
+     enddo
+
+
+     bcsol(:,:)        =   tr_seri(:,:,id_ASBCM)                         *zrho(:,:)*1.e9  ! ASBCM
+     pomsol(:,:)       =   tr_seri(:,:,id_ASPOMM)                        *zrho(:,:)*1.e9  ! ASPOMM
+     sulfacc(:,:)      =  (tr_seri(:,:,id_ASSO4M)+tr_seri(:,:,id_ASMSAM))*zrho(:,:)*1.e9  ! ASSO4M (=SO4) + ASMSAM (=MSA)
+     sulfcoarse(:,:)   =  (tr_seri(:,:,id_CSSO4M)+tr_seri(:,:,id_CSMSAM))*zrho(:,:)*1.e9  ! CSSO4M (=SO4) + CSMSAM (=MSA)
+     sssupco(:,:)      =   tr_seri(:,:,id_SSSSM)                         *zrho(:,:)*1.e9  ! SSSSM
+     sscoarse(:,:)     =   tr_seri(:,:,id_CSSSM)                         *zrho(:,:)*1.e9  ! CSSSM
+     ssacu(:,:)        =   tr_seri(:,:,id_ASSSM)                         *zrho(:,:)*1.e9  ! ASSSM
+     cidust(:,:)       =   tr_seri(:,:,id_CIDUSTM)                       *zrho(:,:)*1.e9  ! CIDUSTM
+     bcins(:,:)        =   tr_seri(:,:,id_AIBCM)                         *zrho(:,:)*1.e9  ! AIBCM
+     pomins(:,:)       =   tr_seri(:,:,id_AIPOMM)                        *zrho(:,:)*1.e9  ! AIPOMM
+     nitracc(:,:)      =   tr_seri(:,:,id_ASNO3M)                        *zrho(:,:)*1.e9  ! ASNO3M
+     nitrcoarse(:,:)   =   tr_seri(:,:,id_CSNO3M)                        *zrho(:,:)*1.e9  ! CSNO3M
+     nitrinscoarse(:,:)=   tr_seri(:,:,id_CINO3M)                        *zrho(:,:)*1.e9  ! CINO3M
+     !
+     bcsol_pi(:,:)        =   0.0 ! ASBCM pre-ind
+     pomsol_pi(:,:)       =   0.0 ! ASPOMM pre-ind
+     sulfacc_pi(:,:)      =   0.0 ! ASSO4M (=SO4) + ASMSAM (=MSA) pre-ind
+     sulfcoarse_pi(:,:)   =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) pre-ind
+     sssupco_pi(:,:)      =   0.0 ! SSSSM pre-ind
+     sscoarse_pi(:,:)     =   0.0 ! CSSSM pre-ind
+     ssacu_pi(:,:)        =   0.0 ! ASSSM pre-ind
+     cidust_pi(:,:)       =   0.0 ! CIDUSTM pre-ind
+     bcins_pi(:,:)        =   0.0 ! AIBCM pre-ind
+     pomins_pi(:,:)       =   0.0 ! AIPOMM pre-ind
+     nitracc_pi(:,:)      =   0.0 ! ASNO3M pre-ind
+     nitrcoarse_pi(:,:)   =   0.0 ! CSNO3M pre-ind
+     nitrinscoarse_pi(:,:)=   0.0 ! CINO3M
+     !
+  ELSE !--not aerosol_couple
+     !
+     ! Read and interpolate sulfate
+     IF ( flag_aerosol .EQ. 1 .OR. &
+          flag_aerosol .EQ. 6 ) THEN 
+
+        CALL readaerosol_interp(id_ASSO4M_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfacc, sulfacc_pi,loadso4)
+     ELSE
+        sulfacc(:,:) = 0. ; sulfacc_pi(:,:) = 0.
+        loadso4=0.
+     END IF
+
+     ! Read and interpolate bcsol and bcins
+     IF ( flag_aerosol .EQ. 2 .OR. &
+          flag_aerosol .EQ. 6 ) THEN 
+
+        ! Get bc aerosol distribution 
+        CALL readaerosol_interp(id_ASBCM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi, load_tmp1 )
+        CALL readaerosol_interp(id_AIBCM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi, load_tmp2 )
+        loadbc(:)=load_tmp1(:)+load_tmp2(:)
+     ELSE
+        bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
+        bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
+        loadbc=0.
+     END IF
+
+
+     ! Read and interpolate pomsol and pomins
+     IF ( flag_aerosol .EQ. 3 .OR. &
+          flag_aerosol .EQ. 6 ) THEN
+
+        CALL readaerosol_interp(id_ASPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3)
+        CALL readaerosol_interp(id_AIPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp4)
+        loadoa(:)=load_tmp3(:)+load_tmp4(:)
+     ELSE
+        pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
+        pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
+        loadoa=0.
+     END IF
+
+
+     ! Read and interpolate csssm, ssssm, assssm
+     IF (flag_aerosol .EQ. 4 .OR. &
+          flag_aerosol .EQ. 6 ) THEN 
+
+        CALL readaerosol_interp(id_SSSSM_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5) 
+        CALL readaerosol_interp(id_CSSSM_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp6) 
+        CALL readaerosol_interp(id_ASSSM_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp7) 
+        loadss(:)=load_tmp5(:)+load_tmp6(:)+load_tmp7(:)
+     ELSE
+        sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0. 
+        ssacu(:,:)    = 0. ; ssacu_pi(:,:) = 0. 
+        sssupco(:,:)  = 0. ; sssupco_pi = 0. 
+        loadss=0.
+     ENDIF
+
+     ! Read and interpolate cidustm
+     IF (flag_aerosol .EQ. 5 .OR.  &
+          flag_aerosol .EQ. 6 ) THEN 
+
+        CALL readaerosol_interp(id_CIDUSTM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust) 
+
+     ELSE
+        cidust(:,:) = 0. ; cidust_pi(:,:) = 0. 
+        loaddust=0.
+     ENDIF
+     !
+     sulfcoarse(:,:)      =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) 
+     sulfcoarse_pi(:,:)   =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) pre-ind
+     !
+     !--placeholder for offline nitrate   
+     !
+     nitracc(:,:)         =   0.0 
+     nitracc_pi(:,:)      =   0.0 
+     nitrcoarse(:,:)      =   0.0
+     nitrcoarse_pi(:,:)   =   0.0
+     nitrinscoarse(:,:)   =   0.0
+     nitrinscoarse_pi(:,:)=   0.0
+
+  ENDIF !--not aerosol_couple
+
+  !
+  ! Store all aerosols in one variable
+  !
+  m_allaer(:,:,id_ASBCM_phy)  = bcsol(:,:)        ! ASBCM
+  m_allaer(:,:,id_ASPOMM_phy) = pomsol(:,:)       ! ASPOMM
+  m_allaer(:,:,id_ASSO4M_phy) = sulfacc(:,:)      ! ASSO4M (= SO4) 
+  m_allaer(:,:,id_CSSO4M_phy) = sulfcoarse(:,:)   ! CSSO4M 
+  m_allaer(:,:,id_SSSSM_phy)  = sssupco(:,:)      ! SSSSM
+  m_allaer(:,:,id_CSSSM_phy)  = sscoarse(:,:)     ! CSSSM
+  m_allaer(:,:,id_ASSSM_phy)  = ssacu(:,:)        ! ASSSM
+  m_allaer(:,:,id_CIDUSTM_phy)= cidust(:,:)       ! CIDUSTM
+  m_allaer(:,:,id_AIBCM_phy)  = bcins(:,:)        ! AIBCM
+  m_allaer(:,:,id_ASNO3M_phy) = nitracc(:,:)      ! ASNO3M
+  m_allaer(:,:,id_CSNO3M_phy) = nitrcoarse(:,:)   ! CSNO3M
+  m_allaer(:,:,id_CINO3M_phy) = nitrinscoarse(:,:)! CINO3M
+  m_allaer(:,:,id_AIPOMM_phy) = pomins(:,:)       ! AIPOMM
+  m_allaer(:,:,id_STRAT_phy)  = 0.0
+
+  !RAF
+  m_allaer_pi(:,:,id_ASBCM_phy)  = bcsol_pi(:,:)        ! ASBCM pre-ind
+  m_allaer_pi(:,:,id_ASPOMM_phy) = pomsol_pi(:,:)       ! ASPOMM pre-ind
+  m_allaer_pi(:,:,id_ASSO4M_phy) = sulfacc_pi(:,:)      ! ASSO4M (= SO4) pre-ind
+  m_allaer_pi(:,:,id_CSSO4M_phy) = sulfcoarse_pi(:,:)   ! CSSO4M pre-ind
+  m_allaer_pi(:,:,id_SSSSM_phy)  = sssupco_pi(:,:)      ! SSSSM pre-ind
+  m_allaer_pi(:,:,id_CSSSM_phy)  = sscoarse_pi(:,:)     ! CSSSM pre-ind
+  m_allaer_pi(:,:,id_ASSSM_phy)  = ssacu_pi(:,:)        ! ASSSM pre-ind
+  m_allaer_pi(:,:,id_CIDUSTM_phy)= cidust_pi(:,:)       ! CIDUSTM pre-ind
+  m_allaer_pi(:,:,id_AIBCM_phy)  = bcins_pi(:,:)        ! AIBCM pre-ind
+  m_allaer_pi(:,:,id_ASNO3M_phy) = nitracc_pi(:,:)      ! ASNO3M pre-ind
+  m_allaer_pi(:,:,id_CSNO3M_phy) = nitrcoarse_pi(:,:)   ! CSNO3M pre-ind
+  m_allaer_pi(:,:,id_CINO3M_phy) = nitrinscoarse_pi(:,:)! CINO3M pre-ind
+  m_allaer_pi(:,:,id_AIPOMM_phy) = pomins_pi(:,:)       ! AIPOMM pre-ind
+  m_allaer_pi(:,:,id_STRAT_phy)  = 0.0
+
+  !
+  ! Calculate the total mass of all soluble aersosols
+  ! to be revisited for AR6
+  mass_solu_aero(:,:)    = sulfacc(:,:)    + bcsol(:,:)    + pomsol(:,:)   + nitracc(:,:)   ! + & 
+  !                           sscoarse(:,:)    + ssacu(:,:)    + sssupco(:,:) 
+  mass_solu_aero_pi(:,:) = sulfacc_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + nitracc_pi(:,:) ! + &
+  !                           sscoarse_pi(:,:) + ssacu_pi(:,:) + sssupco_pi(:,:)
+
+  !****************************************************************************************
+  ! 2) Calculate optical properties for the aerosols
+  !
+  !****************************************************************************************
   DO k = 1, klev
      DO i = 1, klon
@@ -188,28 +305,31 @@
   END DO
 
+  ! aeropt_6bands for rrtm
   CALL aeropt_6bands_rrtm( &
-          pdel, m_allaer, pdtphys, rhcl, & 
-          tau_aero, piz_aero, cg_aero,   &
-          m_allaer_pi, flag_aerosol, &
-          pplay, t_seri, presnivs) 
-     
-     ! aeropt_5wv only for validation and diagnostics.
-     CALL aeropt_5wv_rrtm(                    &
-          pdel, m_allaer,                &
-          pdtphys, rhcl, aerindex,       & 
-          flag_aerosol, pplay, t_seri,   &
-          tausum_aero, tau3d_aero )
-
-! Diagnostics calculation for CMIP5 protocol
-  sconcso4(:)=m_allaer(:,1,id_ASSO4M)*1.e-9
-  sconcoa(:)=(m_allaer(:,1,id_ASPOMM)+m_allaer(:,1,id_AIPOMM))*1.e-9
-  sconcbc(:)=(m_allaer(:,1,id_ASBCM)+m_allaer(:,1,id_AIBCM))*1.e-9
-  sconcss(:)=(m_allaer(:,1,id_ASSSM)+m_allaer(:,1,id_CSSSM)+m_allaer(:,1,id_SSSSM))*1.e-9
-  sconcdust(:)=m_allaer(:,1,id_CIDUSTM)*1.e-9
-  concso4(:,:)=m_allaer(:,:,id_ASSO4M)*1.e-9
-  concoa(:,:)=(m_allaer(:,:,id_ASPOMM)+m_allaer(:,:,id_AIPOMM))*1.e-9
-  concbc(:,:)=(m_allaer(:,:,id_ASBCM)+m_allaer(:,:,id_AIBCM))*1.e-9
-  concss(:,:)=(m_allaer(:,:,id_ASSSM)+m_allaer(:,:,id_CSSSM)+m_allaer(:,:,id_SSSSM))*1.e-9
-  concdust(:,:)=m_allaer(:,:,id_CIDUSTM)*1.e-9
+       pdel, m_allaer, pdtphys, rhcl, & 
+       tau_aero, piz_aero, cg_aero,   &
+       m_allaer_pi, flag_aerosol, &
+       zrho ) 
+
+  ! aeropt_5wv only for validation and diagnostics
+  CALL aeropt_5wv_rrtm(                    &
+       pdel, m_allaer,                &
+       pdtphys, rhcl, aerindex,       & 
+       flag_aerosol, pplay, t_seri,   &
+       tausum_aero, tau3d_aero )
+
+  ! Diagnostics calculation for CMIP5 protocol
+  sconcso4(:)  =m_allaer(:,1,id_ASSO4M_phy)*1.e-9
+  sconcno3(:)  =(m_allaer(:,1,id_ASNO3M_phy)+m_allaer(:,1,id_CSNO3M_phy)+m_allaer(:,1,id_CINO3M_phy))*1.e-9
+  sconcoa(:)   =(m_allaer(:,1,id_ASPOMM_phy)+m_allaer(:,1,id_AIPOMM_phy))*1.e-9
+  sconcbc(:)   =(m_allaer(:,1,id_ASBCM_phy)+m_allaer(:,1,id_AIBCM_phy))*1.e-9
+  sconcss(:)   =(m_allaer(:,1,id_ASSSM_phy)+m_allaer(:,1,id_CSSSM_phy)+m_allaer(:,1,id_SSSSM_phy))*1.e-9
+  sconcdust(:) =m_allaer(:,1,id_CIDUSTM_phy)*1.e-9
+  concso4(:,:) =m_allaer(:,:,id_ASSO4M_phy)*1.e-9
+  concno3(:,:) =(m_allaer(:,:,id_ASNO3M_phy)+m_allaer(:,:,id_CSNO3M_phy)+m_allaer(:,:,id_CINO3M_phy))*1.e-9
+  concoa(:,:)  =(m_allaer(:,:,id_ASPOMM_phy)+m_allaer(:,:,id_AIPOMM_phy))*1.e-9
+  concbc(:,:)  =(m_allaer(:,:,id_ASBCM_phy)+m_allaer(:,:,id_AIBCM_phy))*1.e-9
+  concss(:,:)  =(m_allaer(:,:,id_ASSSM_phy)+m_allaer(:,:,id_CSSSM_phy)+m_allaer(:,:,id_SSSSM_phy))*1.e-9
+  concdust(:,:)=m_allaer(:,:,id_CIDUSTM_phy)*1.e-9
 
 END SUBROUTINE readaerosol_optic_rrtm
Index: LMDZ5/trunk/libf/phylmd/rrtm/readaerosolstrato_rrtm.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/readaerosolstrato_rrtm.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/readaerosolstrato_rrtm.F90	(revision 2146)
@@ -16,7 +16,9 @@
     USE aero_mod
     USE dimphy
+    USE YOERAD   , ONLY : NLW
 
     implicit none
 
+    include "YOMCST.h"
     include "dimensions.h"
 
@@ -33,5 +35,5 @@
     real, pointer:: time(:)
     real, pointer:: lev(:)
-    integer k, band, wave
+    integer k, band, wave, i
     integer, save :: mth_pre
 
@@ -45,4 +47,6 @@
     real, allocatable:: tauaerstrat_mois_glo_bands(:,:,:)
 
+    real, allocatable:: sum_tau_aer_strat(:)
+
 ! For NetCDF:
     integer ncid_in  ! IDs for input files
@@ -50,16 +54,30 @@
 
 ! Stratospheric aerosols optical properties
-! alpha_strat over the 2 bands is normalised by the 550 nm extinction coefficient
-! alpha_strat_wave is *not* normalised by the 550 nm extinction coefficient
-    real, dimension(nbands_rrtm) :: alpha_strat, piz_strat, cg_strat
-    data alpha_strat/0.938538969, 0.990073204, 0.992904723, 0.829215884, 0.439313501, 0.156857833/
-    data cg_strat   /0.699142992, 0.716326416, 0.735462785, 0.736726701, 0.712068975, 0.575097859/
-    data piz_strat  /1.000000000, 1.000000000, 1.000000000, 1.000000000, 0.997781098, 0.452584684/
-    real, dimension(nwave) :: alpha_strat_wave
-    data alpha_strat_wave/3.36780953,3.34667683,3.20444202,3.0293026,2.82108808/
-
+! alpha_sw_strat over the 6 bands is normalised by the 550 nm extinction coefficient
+    real, dimension(nbands_sw_rrtm) :: alpha_sw_strat, piz_sw_strat, cg_sw_strat
+    data alpha_sw_strat/0.8545564, 0.8451642, 0.9821724, 0.8145110, 0.3073565, 7.7966176E-02/
+    data cg_sw_strat   /0.6997170, 0.6810035, 0.7403592, 0.7562674, 0.6676504, 0.3478689/
+    data piz_sw_strat  /0.9999998, 0.9999998, 1.000000000, 0.9999958, 0.9977155, 0.4510679/
+!
+!--diagnostics AOD in the SW
+! alpha_sw_strat_wave is *not* normalised by the 550 nm extinction coefficient
+    real, dimension(nwave) :: alpha_sw_strat_wave
+    data alpha_sw_strat_wave/3.708007,4.125824,4.136584,3.887478,3.507738/
+!
+!--diagnostics AOD in the LW at 10 um 
+    real :: alpha_lw_strat_wave
+    data alpha_lw_strat_wave/0.2746812/
+!
+    real, dimension(nbands_lw_rrtm) :: alpha_lw_abs_rrtm
+    data alpha_lw_abs_rrtm/   8.8340312E-02, 6.9856711E-02, 6.2652975E-02, 5.7188231E-02, &
+                              6.3157059E-02, 5.5072524E-02, 5.0571125E-02, 0.1349073, &    
+                              0.1381676, 9.6506312E-02, 5.1312990E-02, 2.4256418E-02, &
+                              2.7191756E-02, 3.3862915E-02, 1.6132960E-02, 1.4275438E-02/ ! calculated with Mie_SW_LW_RRTM_V2.4 (bimodal, corrected)
+                                                                                          ! for r_0=/0.13E-6, 0.41E-6/ m, sigma_g=/1.26, 1.30/
+                                                                                          ! order: increasing wavelength!
 !--------------------------------------------------------
 
     IF (.not.ALLOCATED(tau_aer_strat)) ALLOCATE(tau_aer_strat(klon,klev))
+    IF (.not.ALLOCATED(sum_tau_aer_strat)) ALLOCATE(sum_tau_aer_strat(klon))
 
     IF (is_mpi_root) THEN
@@ -67,6 +85,6 @@
     IF (debut.OR.mth_cur.NE.mth_pre) THEN
 
-    IF (nbands_rrtm.NE.6) THEN 
-        print *,'nbands_rrtm doit etre egal a 6 dans readaerosolstrat_rrtm'
+    IF (nbands_sw_rrtm.NE.6) THEN 
+        print *,'nbands_sw_rrtm doit etre egal a 6 dans readaerosolstrat_rrtm'
         STOP
     ENDIF
@@ -112,5 +130,5 @@
     ALLOCATE(tauaerstrat_mois(n_lon, n_lat, n_lev))
     ALLOCATE(tauaerstrat_mois_glo(klon_glo, n_lev))
-    ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands_rrtm))
+    ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands_sw_rrtm))
 
 !--reading stratospheric AOD at 550 nm
@@ -143,31 +161,48 @@
     ENDIF !--is_mpi_root
 
-!--total vertical aod at the 5 wavelengths
+!--total vertical aod at the 5 SW wavelengths
     DO wave=1, nwave
     DO k=1, klev
-    tausum_aero(:,wave,id_strat)=tausum_aero(:,wave,id_strat)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2)
+    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)
     ENDDO
     ENDDO
 
 !--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones
-    DO band=1, nbands_rrtm
-!--anthropogenic aerosols bands 1 to nbands_rrtm 
-    cg_aero_rrtm(:,:,2,band)  = ( cg_aero_rrtm(:,:,2,band)*piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) + &
-                                  cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /        &
-                             MAX( piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) +                          &
-                                  piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
-    piz_aero_rrtm(:,:,2,band)  = ( piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) +                         &
-                              piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /                           &
-                              MAX( tau_aero_rrtm(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
-    tau_aero_rrtm(:,:,2,band)  = tau_aero_rrtm(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:)
-!--natural aerosols bands 1 to nbands_rrtm
-    cg_aero_rrtm(:,:,1,band)  = ( cg_aero_rrtm(:,:,1,band)*piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) + &
-                             cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /             &
-                             MAX( piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) +                          &
-                                  piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
-    piz_aero_rrtm(:,:,1,band)  = ( piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) +                         & 
-                              piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /                           &
-                              MAX( tau_aero_rrtm(:,:,1,band) + alpha_strat(band)*tau_aer_strat(:,:),1.e-15 )
-    tau_aero_rrtm(:,:,1,band)  = tau_aero_rrtm(:,:,1,band) + alpha_strat(band)*tau_aer_strat(:,:)
+    DO band=1, nbands_sw_rrtm
+!--anthropogenic aerosols bands 1 to nbands_sw_rrtm 
+    cg_aero_sw_rrtm(:,:,2,band)  = ( cg_aero_sw_rrtm(:,:,2,band)*piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + &
+                                  cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /           &
+                             MAX( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) +                                &
+                                  piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 )
+    piz_aero_sw_rrtm(:,:,2,band)  = ( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) +                            &
+                              piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /                                 &
+                              MAX( tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 )
+    tau_aero_sw_rrtm(:,:,2,band)  = tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:)
+!--natural aerosols bands 1 to nbands_sw_rrtm
+    cg_aero_sw_rrtm(:,:,1,band)  = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + &
+                             cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /                &
+                             MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                                &
+                                  piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 )
+    piz_aero_sw_rrtm(:,:,1,band)  = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                            &
+                              piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) /                                 &
+                              MAX( tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:),1.e-15 )
+    tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:)
+!--no stratospheric aerosol in index 1 for these tests
+!    cg_aero_sw_rrtm(:,:,1,band)  =  cg_aero_sw_rrtm(:,:,1,band)
+!    piz_aero_sw_rrtm(:,:,1,band)  = piz_aero_sw_rrtm(:,:,1,band)
+!    tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band)
+    ENDDO
+
+!--stratospheric AOD in LW
+    IF (nbands_lw_rrtm .NE. NLW) then
+      print*, 'different values for NLW (=',NLW,') and nbands_lw_rrtm (=', nbands_lw_rrtm, ')'
+      STOP
+    ENDIF 
+
+    DO band=1, nbands_lw_rrtm
+    tau_aero_lw_rrtm(:,:,2,band)  = tau_aero_lw_rrtm(:,:,2,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:)
+    tau_aero_lw_rrtm(:,:,1,band)  = tau_aero_lw_rrtm(:,:,1,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:) 
+!--no stratospheric aerosols in index 1 for these tests
+!    tau_aero_lw_rrtm(:,:,1,band)  = tau_aero_lw_rrtm(:,:,1,band) 
     ENDDO
 
Index: LMDZ5/trunk/libf/phylmd/rrtm/recmwf_aero.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/recmwf_aero.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/recmwf_aero.F90	(revision 2146)
@@ -20,4 +20,7 @@
  & PPIZA_NAT,PCGA_NAT,PTAU_NAT, & 
 !--fin OB 
+!--C.Kleinschmitt
+ & PTAU_LW_TOT, PTAU_LW_NAT, & 
+!--end
  & PFLUX,PFLUC,&
  & PFSDN ,PFSUP , PFSCDN , PFSCUP,&
@@ -27,4 +30,9 @@
  & PTOPSWAIAERO,PSOLSWAIAERO,&
  & PTOPSWCFAERO,PSOLSWCFAERO,&
+!--LW diagnostics CK
+ & PTOPLWADAERO,PSOLLWADAERO,&
+ & PTOPLWAD0AERO,PSOLLWAD0AERO,&
+ & PTOPLWAIAERO,PSOLLWAIAERO,&
+!..end
  & ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)
 !--fin
@@ -79,4 +87,6 @@
 ! PCGA_NAT   : (KPROMA,KLEV,NSW); Assymetry factor for natural aerosol
 ! PTAU_NAT: (KPROMA,KLEV,NSW)   ; Optical depth of natural aerosol
+! PTAU_LW_TOT  (KPROMA,KLEV,NLW); LW Optical depth of total aerosols  
+! PTAU_LW_NAT  (KPROMA,KLEV,NLW); LW Optical depth of natural aerosols 
 !--fin OB
 
@@ -136,4 +146,5 @@
 USE YOMCST   , ONLY :         RMD      ,RMO3
 USE YOMPHY3  , ONLY : RII0
+USE YOERAD   , ONLY : NLW, NAER, RCCNLND  ,RCCNSEA  
 USE YOERAD   , ONLY : NAER, RCCNLND  ,RCCNSEA  
 USE YOERDU   , ONLY : REPSCQ
@@ -150,4 +161,5 @@
 IMPLICIT NONE
 INCLUDE "clesphys.h"
+
 
 INTEGER(KIND=JPIM),INTENT(IN)    :: KPROMA 
@@ -186,4 +198,9 @@
 REAL(KIND=JPRB)                  :: PTAU_ZERO(KPROMA,KLEV,NSW)
 !--fin
+!--C.Kleinschmitt
+REAL(KIND=JPRB)                  :: PTAU_LW_ZERO(KPROMA,KLEV,NLW)
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW_TOT(KPROMA,KLEV,NLW)
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW_NAT(KPROMA,KLEV,NLW)
+!--end
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_LIQ(KPROMA,KLEV)
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE(KPROMA,KLEV)
@@ -199,4 +216,9 @@
 REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPSWCFAERO(KPROMA,3), PSOLSWCFAERO(KPROMA,3) !--do we keep this ?
 !--fin
+!--CK
+REAL(KIND=JPRB)   ,INTENT(out)   :: PTOPLWADAERO(KPROMA), PSOLLWADAERO(KPROMA)       ! LW Aerosol direct forcing at TOA + surface
+REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWAD0AERO(KPROMA), PSOLLWAD0AERO(KPROMA)     ! LW Aerosol direct forcing at TOA + surface
+REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWAIAERO(KPROMA), PSOLLWAIAERO(KPROMA)       ! LW Aer. indirect forcing at TOA + surface
+!--end
 REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMTD(KPROMA,KLEV+1) 
 REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMTU(KPROMA,KLEV+1) 
@@ -295,4 +317,9 @@
 REAL(KIND=JPRB) ::  ZFSUP0_AERO(KPROMA,KLEV+1,5)
 REAL(KIND=JPRB) ::  ZFSDN0_AERO(KPROMA,KLEV+1,5)
+!--LW (CK):
+REAL(KIND=JPRB) ::  LWUP_AERO(KPROMA,KLEV+1,5)
+REAL(KIND=JPRB) ::  LWDN_AERO(KPROMA,KLEV+1,5)
+REAL(KIND=JPRB) ::  LWUP0_AERO(KPROMA,KLEV+1,5)
+REAL(KIND=JPRB) ::  LWDN0_AERO(KPROMA,KLEV+1,5)
 
 #include "radlsw.intfb.h"
@@ -313,7 +340,14 @@
 ZFSDN0_AERO(:,:,:)=0.
 
+LWUP_AERO (:,:,:)=0.
+LWDN_AERO (:,:,:)=0.
+LWUP0_AERO(:,:,:)=0.
+LWDN0_AERO(:,:,:)=0.
+
 PTAU_ZERO(:,:,:) =1.e-15
 PPIZA_ZERO(:,:,:)=1.0
 PCGA_ZERO(:,:,:) =0.0
+
+PTAU_LW_ZERO(:,:,:) =1.e-15
 
 
@@ -431,5 +465,5 @@
  & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
  & PSFSWDIF,PFSDNN, PFSDNV  ,&  
- & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PFLUX,PFLUC,&
+ & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PTAU_LW_NAT,PFLUX,PFLUC,&
  & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
 
@@ -440,4 +474,10 @@
 ZFSUP_AERO(:,:,1) =  PFSUP(:,:)
 ZFSDN_AERO(:,:,1) =  PFSDN(:,:)
+
+LWUP0_AERO(:,:,1) = PFLUC(:,1,:)
+LWDN0_AERO(:,:,1) = PFLUC(:,2,:)
+
+LWUP_AERO(:,:,1) = PFLUX(:,1,:)
+LWDN_AERO(:,:,1) = PFLUX(:,2,:)
 
 ENDIF 
@@ -463,5 +503,5 @@
  & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
  & PSFSWDIF,PFSDNN, PFSDNV  ,&  
- & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PFLUX,PFLUC,&
+ & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PTAU_LW_NAT,PFLUX,PFLUC,&
  & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
 
@@ -472,4 +512,10 @@
 ZFSUP_AERO(:,:,2) =  PFSUP(:,:)
 ZFSDN_AERO(:,:,2) =  PFSDN(:,:)
+
+LWUP0_AERO(:,:,2) = PFLUC(:,1,:)
+LWDN0_AERO(:,:,2) = PFLUC(:,2,:)
+
+LWUP_AERO(:,:,2) = PFLUX(:,1,:)
+LWDN_AERO(:,:,2) = PFLUX(:,2,:)
 
 ENDIF ! ok_aie      
@@ -495,5 +541,5 @@
  & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
  & PSFSWDIF,PFSDNN, PFSDNV  ,&  
- & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PFLUX,PFLUC,&
+ & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PTAU_LW_TOT,PFLUX,PFLUC,&
  & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
 
@@ -504,4 +550,10 @@
 ZFSUP_AERO(:,:,3) =  PFSUP(:,:)
 ZFSDN_AERO(:,:,3) =  PFSDN(:,:)
+
+LWUP0_AERO(:,:,3) = PFLUC(:,1,:)
+LWDN0_AERO(:,:,3) = PFLUC(:,2,:)
+
+LWUP_AERO(:,:,3) = PFLUX(:,1,:)
+LWDN_AERO(:,:,3) = PFLUX(:,2,:)
 
 ENDIF !-end ok_ade
@@ -527,5 +579,5 @@
  & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
  & PSFSWDIF,PFSDNN, PFSDNV  ,&  
- & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PFLUX,PFLUC,&
+ & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PTAU_LW_TOT,PFLUX,PFLUC,&
  & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
 
@@ -536,4 +588,10 @@
 ZFSUP_AERO(:,:,4) =  PFSUP(:,:)
 ZFSDN_AERO(:,:,4) =  PFSDN(:,:)
+
+LWUP0_AERO(:,:,4) = PFLUC(:,1,:)
+LWDN0_AERO(:,:,4) = PFLUC(:,2,:)
+
+LWUP_AERO(:,:,4) = PFLUX(:,1,:)
+LWDN_AERO(:,:,4) = PFLUX(:,2,:)
 
 ENDIF ! ok_ade .and. ok_aie
@@ -563,5 +621,5 @@
  & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
  & PSFSWDIF,PFSDNN, PFSDNV  ,&  
- & LRDUST,PPIZA_ZERO,PCGA_ZERO,PTAU_ZERO,PFLUX,PFLUC,&
+ & LRDUST,PPIZA_ZERO,PCGA_ZERO,PTAU_ZERO, PTAU_LW_ZERO,PFLUX,PFLUC,&
  & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
 
@@ -572,4 +630,10 @@
 ZFSUP_AERO(:,:,5) =  PFSUP(:,:)
 ZFSDN_AERO(:,:,5) =  PFSDN(:,:)
+
+LWUP0_AERO(:,:,5) = PFLUC(:,1,:)
+LWDN0_AERO(:,:,5) = PFLUC(:,2,:)
+
+LWUP_AERO(:,:,5) = PFLUX(:,1,:)
+LWDN_AERO(:,:,5) = PFLUX(:,2,:)
 
 ENDIF ! .not. AEROSOLFEEDBACK_ACTIVE
@@ -643,4 +707,9 @@
     PFSCUP(:,:) =   ZFSUP0_AERO(:,:,4)
     PFSCDN(:,:) =   ZFSDN0_AERO(:,:,4)
+
+    PFLUX(:,1,:) =  LWUP_AERO(:,:,4)
+    PFLUX(:,2,:) =  LWDN_AERO(:,:,4)
+    PFLUC(:,1,:) =  LWUP0_AERO(:,:,4)
+    PFLUC(:,2,:) =  LWDN0_AERO(:,:,4)    
   ENDIF
 
@@ -650,4 +719,9 @@
     PFSCUP(:,:) =   ZFSUP0_AERO(:,:,3)
     PFSCDN(:,:) =   ZFSDN0_AERO(:,:,3)
+
+    PFLUX(:,1,:) =  LWUP_AERO(:,:,3)
+    PFLUX(:,2,:) =  LWDN_AERO(:,:,3)
+    PFLUC(:,1,:) =  LWUP0_AERO(:,:,3)
+    PFLUC(:,2,:) =  LWDN0_AERO(:,:,3) 
   ENDIF
 
@@ -657,4 +731,9 @@
     PFSCUP(:,:) =   ZFSUP0_AERO(:,:,2)
     PFSCDN(:,:) =   ZFSDN0_AERO(:,:,2)
+
+    PFLUX(:,1,:) =  LWUP_AERO(:,:,2)
+    PFLUX(:,2,:) =  LWDN_AERO(:,:,2)
+    PFLUC(:,1,:) =  LWUP0_AERO(:,:,2)
+    PFLUC(:,2,:) =  LWDN0_AERO(:,:,2) 
   ENDiF
 
@@ -664,4 +743,9 @@
     PFSCUP(:,:) =   ZFSUP0_AERO(:,:,1)
     PFSCDN(:,:) =   ZFSDN0_AERO(:,:,1)
+
+    PFLUX(:,1,:) =  LWUP_AERO(:,:,1)
+    PFLUX(:,2,:) =  LWDN_AERO(:,:,1)
+    PFLUC(:,1,:) =  LWUP0_AERO(:,:,1)
+    PFLUC(:,2,:) =  LWDN0_AERO(:,:,1) 
   ENDIF
 
@@ -677,4 +761,9 @@
     PFSCDN(:,:) =   ZFSDN0_AERO(:,:,5)
 
+    PFLUX(:,1,:) =  LWUP_AERO(:,:,5)
+    PFLUX(:,2,:) =  LWDN_AERO(:,:,5)
+    PFLUC(:,1,:) =  LWUP0_AERO(:,:,5)
+    PFLUC(:,2,:) =  LWDN0_AERO(:,:,5) 
+
 ENDIF
 
@@ -683,5 +772,5 @@
 ! requires a natural aerosol field read and used 
 ! Difference of net fluxes from double call to radiation
-! Will need to be extended to LW radiation
+! Will need to be extended to LW radiation -> done by CK (2014-05-23)
 
 IF (flag_aerosol .GT. 0 .OR. flag_aerosol_strat) THEN
@@ -709,4 +798,14 @@
      PTOPSWCFAERO(:,3) = 0.0
 
+! LW direct anthropogenic forcing
+     PSOLLWADAERO(:)  = (-LWDN_AERO(:,1,4)      -LWUP_AERO(:,1,4))      -(-LWDN_AERO(:,1,2)      -LWUP_AERO(:,1,2))
+     PTOPLWADAERO(:)  = (-LWDN_AERO(:,KLEV+1,4) -LWUP_AERO(:,KLEV+1,4)) -(-LWDN_AERO(:,KLEV+1,2) -LWUP_AERO(:,KLEV+1,2))
+     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,4)     -LWUP0_AERO(:,1,4))     -(-LWDN0_AERO(:,1,2)     -LWUP0_AERO(:,1,2))
+     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,4)-LWUP0_AERO(:,KLEV+1,4))-(-LWDN0_AERO(:,KLEV+1,2)-LWUP0_AERO(:,KLEV+1,2))
+
+! LW indirect anthropogenic forcing
+     PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,4)     -LWUP_AERO(:,1,4))     -(-LWDN_AERO(:,1,3)     -LWUP_AERO(:,1,3))
+     PTOPLWAIAERO(:) = (-LWDN_AERO(:,KLEV+1,4)-LWUP_AERO(:,KLEV+1,4))-(-LWDN_AERO(:,KLEV+1,3)-LWUP_AERO(:,KLEV+1,3))
+
 ENDIF
 
@@ -733,4 +832,14 @@
      PTOPSWCFAERO(:,3) = 0.0
 
+! LW direct anthropogenic forcing
+     PSOLLWADAERO(:)  = (-LWDN_AERO(:,1,3)      -LWUP_AERO(:,1,3))      -(-LWDN_AERO(:,1,1)      -LWUP_AERO(:,1,1))
+     PTOPLWADAERO(:)  = (-LWDN_AERO(:,KLEV+1,3) -LWUP_AERO(:,KLEV+1,3)) -(-LWDN_AERO(:,KLEV+1,1) -LWUP_AERO(:,KLEV+1,1))
+     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,3)     -LWUP0_AERO(:,1,3))     -(-LWDN0_AERO(:,1,1)     -LWUP0_AERO(:,1,1))
+     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,3)-LWUP0_AERO(:,KLEV+1,3))-(-LWDN0_AERO(:,KLEV+1,1)-LWUP0_AERO(:,KLEV+1,1))
+
+! LW indirect anthropogenic forcing
+     PSOLLWAIAERO(:) = 0.0
+     PTOPLWAIAERO(:) = 0.0 
+
 ENDIF
 
@@ -757,4 +866,14 @@
      PTOPSWCFAERO(:,3) = 0.0
 
+! LW direct anthropogenic forcing
+     PSOLLWADAERO(:)  = 0.0
+     PTOPLWADAERO(:)  = 0.0
+     PSOLLWAD0AERO(:) = 0.0
+     PTOPLWAD0AERO(:) = 0.0
+
+! LW indirect anthropogenic forcing
+     PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,2)     -LWUP_AERO(:,1,2))     -(-LWDN_AERO(:,1,1)     -LWUP_AERO(:,1,1))
+     PTOPLWAIAERO(:) = (-LWDN_AERO(:,KLEV+1,2)-LWUP_AERO(:,KLEV+1,2))-(-LWDN_AERO(:,KLEV+1,1)-LWUP_AERO(:,KLEV+1,1))
+
 ENDIF
 
@@ -781,4 +900,14 @@
      PTOPSWCFAERO(:,3) = 0.0
 
+! LW direct anthropogenic forcing
+     PSOLLWADAERO(:)  = 0.0
+     PTOPLWADAERO(:)  = 0.0
+     PSOLLWAD0AERO(:) = 0.0
+     PTOPLWAD0AERO(:) = 0.0
+
+! LW indirect anthropogenic forcing
+     PSOLLWAIAERO(:) = 0.0 
+     PTOPLWAIAERO(:) = 0.0
+
 ENDIF
 
@@ -790,4 +919,5 @@
      PSOLSWCFAERO(:,3) = (ZFSDN_AERO(:,1,5)     -ZFSUP_AERO(:,1,5))     -(ZFSDN0_AERO(:,1,5)     -ZFSUP0_AERO(:,1,5))
      PTOPSWCFAERO(:,3) = (ZFSDN_AERO(:,KLEV+1,5)-ZFSUP_AERO(:,KLEV+1,5))-(ZFSDN0_AERO(:,KLEV+1,5)-ZFSUP0_AERO(:,KLEV+1,5))
+
 ENDIF
 
Index: LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.F90	(revision 2146)
@@ -10,6 +10,8 @@
  & P_ZEMIS, P_ZEMIW,&
  & pq   , pcco2, pozn, pcldf, ptaucld, ptclear,&
- & P_CLDFRAC,P_TAUCLD,P_COLDRY,P_WKL,P_WX,&
- & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT)  
+ & P_CLDFRAC,P_TAUCLD,&
+ & PTAU_LW,&
+ & P_COLDRY,P_WKL,P_WX,&
+ & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT )  
 
 !     Reformatted for F90 by JJMorcrette, ECMWF, 980714
@@ -28,15 +30,13 @@
 USE PARRRTM  , ONLY : JPBAND   ,JPXSEC   ,JPLAY   ,&
  & JPINPX  
-USE YOERAD   , ONLY : NOVLP
-!USE YOERDI   , ONLY :    RCH4     ,RN2O    ,RCFC11  ,RCFC12
+USE YOERAD   , ONLY : NLW      ,NOVLP
+USE YOERDI   , ONLY :    RCH4     ,RN2O    ,RCFC11  ,RCFC12
 USE YOESW    , ONLY : RAER
 
 !------------------------------Arguments--------------------------------
 
-
-
 IMPLICIT NONE
 
-#include "clesphys.h"
+
 INTEGER(KIND=JPIM),INTENT(IN)    :: KLON! Number of atmospheres (longitudes) 
 INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV! Number of atmospheric layers 
@@ -56,4 +56,7 @@
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLDF(KLON,KLEV) ! Cloud fraction
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAUCLD(KLON,KLEV,JPBAND) ! Cloud optical depth
+!--C.Kleinschmitt
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols  
+!--end
 REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTCLEAR 
 REAL(KIND=JPRB)   ,INTENT(OUT)   :: P_CLDFRAC(JPLAY) ! Cloud fraction
@@ -258,4 +261,13 @@
   P_TAUAERL(I_L,16)=ZTAUAER(5)
 ENDDO
+!--Use LW AOD from own Mie calculations (C. Kleinschmitt)
+DO I_L=1,KLEV
+  JK=KLEV-I_L+1
+!  DO JAE=1, NLW 
+  DO JAE=1, 16
+    P_TAUAERL(I_L,JAE) = MAX( PTAU_LW(K_IPLON, JK, JAE), 1e-30 )
+  ENDDO
+ENDDO
+!--end C. Kleinschmitt
 
 DO J2=1,KLEV
@@ -390,6 +402,4 @@
 !     ------------------------------------------------------------------
 
-
-
 IF (LHOOK) CALL DR_HOOK('RRTM_ECRT_140GP',1,ZHOOK_HANDLE)
 END SUBROUTINE RRTM_ECRT_140GP
Index: LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.intfb.h
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.intfb.h	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/rrtm_ecrt_140gp.intfb.h	(revision 2146)
@@ -1,14 +1,19 @@
-INTERFACE
-SUBROUTINE RRTM_ECRT_140GP&
+INTERFACE 
+SUBROUTINE RRTM_ECRT_140GP &
  & ( K_IPLON, klon , klev, kcld,&
  & paer , paph , pap,&
- & pts , pth , pt,&
+ & pts  , pth  , pt,&
  & P_ZEMIS, P_ZEMIW,&
- & pq , pcco2, pozn, pcldf, ptaucld, ptclear,&
- & P_CLDFRAC,P_TAUCLD,P_COLDRY,P_WKL,P_WX,&
- & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT) 
-USE PARKIND1 ,ONLY : JPIM ,JPRB
-USE PARRRTM , ONLY : JPBAND ,JPXSEC ,JPLAY ,&
- & JPINPX 
+ & pq   , pcco2, pozn, pcldf, ptaucld, ptclear,&
+ & P_CLDFRAC,P_TAUCLD,&
+ & PTAU_LW,&
+ & P_COLDRY,P_WKL,P_WX,&
+ & P_TAUAERL,PAVEL,P_TAVEL,PZ,P_TZ,P_TBOUND,K_NLAYERS,P_SEMISS,K_IREFLECT )
+USE PARKIND1  ,ONLY : JPIM     ,JPRB
+USE PARRRTM  , ONLY : JPBAND   ,JPXSEC   ,JPLAY   ,&
+ & JPINPX  
+USE YOERAD   , ONLY : NLW      ,NOVLP
+USE YOERDI   , ONLY :    RCH4     ,RN2O    ,RCFC11  ,RCFC12
+USE YOESW    , ONLY : RAER
 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
@@ -28,4 +33,7 @@
 REAL(KIND=JPRB) ,INTENT(IN) :: PCLDF(KLON,KLEV)
 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUCLD(KLON,KLEV,JPBAND)
+!--C.Kleinschmitt
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols  
+!--end
 REAL(KIND=JPRB) ,INTENT(OUT) :: PTCLEAR
 REAL(KIND=JPRB) ,INTENT(OUT) :: P_CLDFRAC(JPLAY)
Index: LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.F90	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.F90	(revision 2146)
@@ -40,4 +40,5 @@
  & PQ    , PCCO2 , POZN,&
  & PCLDF , PTAUCLD,&
+ & PTAU_LW,&
  & PEMIT , PFLUX , PFLUC, PTCLEAR &
  & )  
@@ -55,5 +56,5 @@
 USE PARKIND1  ,ONLY : JPIM     ,JPRB
 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
-
+USE YOERAD    ,ONLY : NLW
 USE PARRRTM  , ONLY : JPBAND   ,JPXSEC   ,JPGPT    ,JPLAY    ,&
  & JPINPX  
@@ -80,4 +81,7 @@
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLDF(KLON,KLEV) ! Cloud fraction
 REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAUCLD(KLON,KLEV,JPBAND) ! Cloud optical depth
+!--C.Kleinschmitt
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols
+!--end
 REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMIT(KLON) ! Surface LW emissivity
 REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFLUX(KLON,2,KLEV+1) ! LW total sky flux (1=up, 2=down)
@@ -204,5 +208,7 @@
    & P_ZEMIS, P_ZEMIW,&
    & pq   , pcco2, pozn, pcldf, ptaucld, ztclear,&
-   & Z_CLDFRAC,Z_TAUCLD,Z_COLDRY,Z_WKL,Z_WX,&
+   & Z_CLDFRAC,Z_TAUCLD,&
+   & PTAU_LW,&
+   & Z_COLDRY,Z_WKL,Z_WX,&
    & Z_TAUAERL,Z_PAVEL,Z_TAVEL,Z_PZ,Z_TZ,Z_TBOUND,I_NLAYERS,Z_SEMISS,IREFLECT)  
 
Index: LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.intfb.h
===================================================================
--- LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.intfb.h	(revision 2145)
+++ LMDZ5/trunk/libf/phylmd/rrtm/rrtm_rrtm_140gp.intfb.h	(revision 2146)
@@ -1,15 +1,18 @@
 INTERFACE
-SUBROUTINE RRTM_RRTM_140GP&
+SUBROUTINE RRTM_RRTM_140GP &
  & ( KIDIA , KFDIA , KLON , KLEV,&
- & PAER , PAPH , PAP,&
- & PTS , PTH , PT,&
+ & PAER  , PAPH  , PAP,&
+ & PTS   , PTH   , PT,&
  & P_ZEMIS , P_ZEMIW,&
- & PQ , PCCO2 , POZN,&
+ & PQ    , PCCO2 , POZN,&
  & PCLDF , PTAUCLD,&
- & PEMIT , PFLUX , PFLUC, PTCLEAR&
- & ) 
+ & PTAU_LW,&
+ & PEMIT , PFLUX , PFLUC, PTCLEAR )
 USE PARKIND1 ,ONLY : JPIM ,JPRB
+USE YOERAD   ,ONLY : NLW !--C.Kleinschmitt
 USE PARRRTM , ONLY : JPBAND ,JPXSEC ,JPGPT ,JPLAY ,&
- & JPINPX 
+ & JPINPX  
+!-NLW in clesphys now OB
+include "clesphys.h"
 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
@@ -29,4 +32,7 @@
 REAL(KIND=JPRB) ,INTENT(IN) :: PCLDF(KLON,KLEV)
 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUCLD(KLON,KLEV,JPBAND)
+!--C.Kleinschmitt
+REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW(KLON,KLEV,NLW) ! LW Optical depth of aerosols  
+!--end
 REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(KLON)
 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUX(KLON,2,KLEV+1)
