Index: LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
===================================================================
--- LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90	(revision 2787)
+++ LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90	(revision 2839)
@@ -12,5 +12,5 @@
   USE DIMPHY
   USE aero_mod
-  USE phys_local_var_mod, ONLY: od550aer,od865aer,ec550aer,od550lt1aer
+  USE phys_local_var_mod, ONLY: od443aer,od550aer,od865aer,ec550aer,od550lt1aer
   USE YOMCST, ONLY: RD,RG
 
@@ -327,5 +327,6 @@
         soluble=.TRUE.
         spsol=4
-        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
+        !fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
+        fac=0.0      !--6 March 2017 - OB as Didier H said CSSO4 should not be used
     ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN 
         soluble=.TRUE.
@@ -366,6 +367,8 @@
     DO la=1,las
 
-    !--only 550, 670 and 865 nm are used
-    IF (la.NE.la550.AND.la.NE.la670.AND.la.NE.la865) CYCLE
+    !--only 443, 550, 670 and 865 nm are used
+    !--to save time 670 and AI are not computed for CMIP6
+    !IF (la.NE.la443.AND.la.NE.la550.AND.la.NE.la670.AND.la.NE.la865) CYCLE
+    IF (la.NE.la443.AND.la.NE.la550.AND.la.NE.la865) CYCLE
 
       IF (soluble) THEN            ! For soluble aerosol
@@ -433,6 +436,7 @@
 
 !--AOD calculations for diagnostics
+  od443aer(:)=SUM(tausum(:,la443,:),dim=2)
   od550aer(:)=SUM(tausum(:,la550,:),dim=2)
-  od670aer(:)=SUM(tausum(:,la670,:),dim=2)
+  !od670aer(:)=SUM(tausum(:,la670,:),dim=2)
   od865aer(:)=SUM(tausum(:,la865,:),dim=2)
 
@@ -441,5 +445,6 @@
 
 !--aerosol index
-  ai(:)=-LOG(MAX(od670aer(:),1.e-8)/MAX(od865aer(:),1.e-8))/LOG(670./865.)
+  ai(:)=0.0
+  !ai(:)=-LOG(MAX(od670aer(:),1.e-8)/MAX(od865aer(:),1.e-8))/LOG(670./865.)
 
   od550lt1aer(:)=tausum(:,la550,id_ASSO4M_phy)+tausum(:,la550,id_ASBCM_phy) +tausum(:,la550,id_AIBCM_phy)+ &
Index: LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90
===================================================================
--- LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90	(revision 2787)
+++ LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90	(revision 2839)
@@ -566,5 +566,6 @@
         soluble=.TRUE.
         spsol=3
-        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
+        !fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD
+        fac=0.0      !--6 March 2017 - OB as Didier H said CSSO4 should not be used
      ELSEIF  (aerosol_name(m).EQ.id_ASSO4M_phy) THEN
         soluble=.TRUE.
Index: LMDZ5/branches/testing/libf/phylmd/rrtm/read_rsun_rrtm.F90
===================================================================
--- LMDZ5/branches/testing/libf/phylmd/rrtm/read_rsun_rrtm.F90	(revision 2787)
+++ LMDZ5/branches/testing/libf/phylmd/rrtm/read_rsun_rrtm.F90	(revision 2839)
@@ -10,5 +10,5 @@
   USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite
 
-  USE phys_cal_mod, ONLY : day_cur, year_len
+  USE phys_cal_mod, ONLY : days_elapsed, year_len
 
   USE mod_phys_lmdz_mpi_data, ONLY: is_mpi_root
@@ -23,10 +23,10 @@
 
   ! Input arguments
-  LOGICAL, INTENT(IN)          :: debut
+  LOGICAL, INTENT(IN) :: debut
 
 ! Local variables
-  INTEGER               :: ncid, dimid, varid, ncerr, nbday
+  INTEGER :: ncid, dimid, varid, ncerr, nbday
   REAL, POINTER :: wlen(:), time(:)
-  REAL, ALLOCATABLE, SAVE, DIMENSION(:,:)   :: SSI_FRAC
+  REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: SSI_FRAC
 !$OMP THREADPRIVATE(SSI_FRAC)
   REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: TSI(:)
@@ -90,15 +90,16 @@
     ENDIF
 
-!--only read at beginning of month
-    IF (debut.OR.day_cur.NE.day_pre) THEN
+!--only read at beginning of day
+!--day in year is provided as days_elapsed since the beginning of the year +1
+    IF (debut.OR.days_elapsed+1.NE.day_pre) THEN
 
-!--keep memory of previous month
-      day_pre=day_cur
+!--keep memory of previous day
+      day_pre=days_elapsed+1
 
 !--copy 
-      RSUN(1:NSW)=SSI_FRAC(:,day_cur)
-      solaire=TSI(day_cur)
+      RSUN(1:NSW)=SSI_FRAC(:,days_elapsed+1)
+      solaire=TSI(days_elapsed+1)
 
-      print *,'READ_RSUN_RRTM day=', day_cur,' solaire=', solaire, ' RSUN=', RSUN(1:NSW)
+      print *,'READ_RSUN_RRTM day=', days_elapsed+1,' solaire=', solaire, ' RSUN=', RSUN(1:NSW)
 
     ENDIF !--fin allocation
Index: LMDZ5/branches/testing/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90
===================================================================
--- LMDZ5/branches/testing/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90	(revision 2787)
+++ LMDZ5/branches/testing/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90	(revision 2839)
@@ -17,5 +17,5 @@
   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
+       loadno3, load_tmp1,load_tmp2,load_tmp3
 
   USE infotrac_phy
@@ -195,7 +195,7 @@
      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(:)
+        CALL readaerosol_interp(id_ASPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp1)
+        CALL readaerosol_interp(id_AIPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp2)
+        loadoa(:)=load_tmp1(:)+load_tmp2(:)
      ELSE
         pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
@@ -208,10 +208,10 @@
 
         CALL readaerosol_interp(id_SSSSM_phy ,itap, pdtphys,rjourvrai, &
-        debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5) 
+        debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp1) 
         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(:)
+        debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp2) 
+        CALL readaerosol_interp(id_ASSSM_phy ,itap, pdtphys,rjourvrai, &
+        debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp3) 
+        loadss(:)=load_tmp1(:)+load_tmp2(:)+load_tmp3(:)
      ELSE
         sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0. 
@@ -231,15 +231,25 @@
      ENDIF
      !
+     ! Read and interpolate cidustm
+     IF (flag_aerosol .EQ. 6) THEN 
+
+        CALL readaerosol_interp(id_ASNO3M_phy, itap, pdtphys, rjourvrai, & 
+        debut, pplay, paprs, t_seri, nitracc, nitracc_pi, load_tmp1) 
+        CALL readaerosol_interp(id_CSNO3M_phy, itap, pdtphys, rjourvrai, & 
+        debut, pplay, paprs, t_seri, nitrcoarse, nitrcoarse_pi, load_tmp2) 
+        CALL readaerosol_interp(id_CINO3M_phy, itap, pdtphys, rjourvrai, & 
+        debut, pplay, paprs, t_seri, nitrinscoarse, nitrinscoarse_pi, load_tmp3) 
+        loadss(:)=load_tmp1(:)+load_tmp2(:)+load_tmp3(:)
+
+     ELSE
+        nitracc(:,:)         =   0.0 ; nitracc_pi(:,:)      =   0.0 
+        nitrcoarse(:,:)      =   0.0 ; nitrcoarse_pi(:,:)   =   0.0
+        nitrinscoarse(:,:)   =   0.0 ; nitrinscoarse_pi(:,:)=   0.0
+        loadno3(:)=0.0
+     ENDIF
+     !
+     ! CSSO4M is set to 0 as not reliable
      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
Index: LMDZ5/branches/testing/libf/phylmd/rrtm/suphec.F90
===================================================================
--- LMDZ5/branches/testing/libf/phylmd/rrtm/suphec.F90	(revision 2787)
+++ LMDZ5/branches/testing/libf/phylmd/rrtm/suphec.F90	(revision 2839)
@@ -129,36 +129,46 @@
 
 IF (LHOOK) CALL DR_HOOK('SUPHEC',0,ZHOOK_HANDLE)
-!CALL GSTATS(1811,0) ! MPL 28.11.08
-!RVTMP2=RCPV/RCPD-1.0_JPRB   !use cp,moist
-RVTMP2=0.0_JPRB              !neglect cp,moist
-RHOH2O=RATM/100._JPRB
-R2ES=611.21_JPRB*RD/RV
-R3LES=17.502_JPRB
-R3IES=22.587_JPRB
-R4LES=32.19_JPRB
-R4IES=-0.7_JPRB
-R5LES=R3LES*(RTT-R4LES)
-R5IES=R3IES*(RTT-R4IES)
-R5ALVCP=R5LES*RLVTT/RCPD
-R5ALSCP=R5IES*RLSTT/RCPD
-RALVDCP=RLVTT/RCPD
-RALSDCP=RLSTT/RCPD
-RALFDCP=RLMLT/RCPD
-RTWAT=RTT
-RTBER=RTT-5._JPRB
-RTBERCU=RTT-5.0_JPRB
-RTICE=RTT-23._JPRB
-RTICECU=RTT-23._JPRB
-
-RTWAT_RTICE_R=1.0_JPRB/(RTWAT-RTICE)
-RTWAT_RTICECU_R=1.0_JPRB/(RTWAT-RTICECU)
-IF(NPHYINT == 0) THEN
-  ISMAX=NSMAX
-ELSE
-  ISMAX=PHYS_GRID%NSMAX
-ENDIF
-
-RKOOP1=2.583_JPRB
-RKOOP2=0.48116E-2_JPRB
+!
+  IF (OK_BAD_ECMWF_THERMO) THEN
+!
+     ! Modify constants defined in suphel.F90 and set RVTMP2 to 0.
+     ! CALL GSTATS(1811,0) ! MPL 28.11.08
+     ! RVTMP2=RCPV/RCPD-1.0_JPRB   !use cp,moist
+     RVTMP2=0.0_JPRB              !neglect cp,moist
+     RHOH2O=RATM/100._JPRB
+     R2ES=611.21_JPRB*RD/RV
+     R3LES=17.502_JPRB
+     R3IES=22.587_JPRB
+     R4LES=32.19_JPRB
+     R4IES=-0.7_JPRB
+     R5LES=R3LES*(RTT-R4LES)
+     R5IES=R3IES*(RTT-R4IES)
+     R5ALVCP=R5LES*RLVTT/RCPD
+     R5ALSCP=R5IES*RLSTT/RCPD
+     RALVDCP=RLVTT/RCPD
+     RALSDCP=RLSTT/RCPD
+     RALFDCP=RLMLT/RCPD
+     RTWAT=RTT
+     RTBER=RTT-5._JPRB
+     RTBERCU=RTT-5.0_JPRB
+     RTICE=RTT-23._JPRB
+     RTICECU=RTT-23._JPRB
+     
+     RTWAT_RTICE_R=1.0_JPRB/(RTWAT-RTICE)
+     RTWAT_RTICECU_R=1.0_JPRB/(RTWAT-RTICECU)
+     IF(NPHYINT == 0) THEN
+       ISMAX=NSMAX
+     ELSE
+       ISMAX=PHYS_GRID%NSMAX
+     ENDIF
+     
+     RKOOP1=2.583_JPRB
+     RKOOP2=0.48116E-2_JPRB
+     
+  ELSE 
+     ! Keep constants defined in suphel.F90
+     RTICE=RTT-23._JPRB
+!
+  ENDIF  ! (OK_BAD_ECMWF_THERMO)
 
 !     ------------------------------------------------------------------
