Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/aeropt_spl.F
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/aeropt_spl.F	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/aeropt_spl.F	(revision 2196)
@@ -1,4 +1,5 @@
       SUBROUTINE aeropt_spl(zdz, tr_seri, RHcl,
      .              id_prec, id_fine, id_coss, id_codu, id_scdu,
+     .              ok_chimeredust,
      .                      ztaue550,ztaue670,ztaue865,
      .                      taue550_tr2,taue670_tr2,taue865_tr2,
@@ -23,4 +24,5 @@
       REAL RHcl(klon,klev)     ! humidite relativen ciel clair
       INTEGER  id_prec, id_fine, id_coss, id_codu, id_scdu
+      LOGICAL ok_chimeredust
 c============================== OUTPUT =================================
       REAL ztaue550(klon) ! epaisseur optique aerosol 550 nm
@@ -47,4 +49,5 @@
       INTEGER rh_int
       PARAMETER (rh_int=12)
+      REAL auxreal
 c      REAL ss_a(nb_lambda,rh_int,nbtr-1)
 c      DATA ss_a/72*1./
@@ -72,6 +75,7 @@
 !JE20140915      DATA ss_dust/0.3188754,0.3430106,0.3829019/ !for bin 0.5-5um radius
 !JE20140915      DATA ss_dustsco/8.0582686E-02,8.1255026E-02,8.1861295E-02/ !for bin 5-15um radius
-      DATA ss_dust/0.5167768,0.5684330,0.6531643/ !for bin 0.5-3um radius
-      DATA ss_dustsco/0.1003391,0.1012288,0.1024651/ !for bin 3-15um radius
+
+!      DATA ss_dust/0.5167768,0.5684330,0.6531643/ !for bin 0.5-3um radius
+!      DATA ss_dustsco/0.1003391,0.1012288,0.1024651/ !for bin 3-15um radius
 
 
@@ -85,4 +89,12 @@
       DATA RH_tab/0.,10.,20.,30.,40.,50.,60.,70.,80.,85.,90.,95./
 c
+      IF (ok_chimeredust) THEN 
+      ss_dust=(/0.5167768,0.5684330,0.6531643/)
+      ss_dustsco=(/0.1003391,0.1012288,0.1024651/)
+      ELSE
+      ss_dust=(/0.564, 0.614, 0.700/)
+      ss_dustsco=(/0.,0.,0./)
+      ENDIF
+
       DO i=1, klon
         ztaue550(i)=0.0
@@ -106,5 +118,5 @@
       DO k=1, klev
       DO i=1, klon
-c
+c     
       rh=MIN(RHcl(i,k)*100.,RH_MAX)
       RH_num = INT( rh/10. + 1.)
@@ -124,8 +136,17 @@
      .            ss_acc550(RH_num))              !--m2/g
 cnhl_test TOTAL AOD
-        ztaue550(i)=ztaue550(i)+(alpha_acc*tr_seri(i,k,id_fine)+
-     .                 ss_ssalt550(RH_num)*tr_seri(i,k,id_coss)+
-     .                 ss_dust(1)*tr_seri(i,k,id_codu)+
-     .              ss_dustsco(1)*tr_seri(i,k,id_scdu)  )*zdz(i,k)*1.e6
+       auxreal=0.
+      IF(id_fine>0) auxreal=auxreal+alpha_acc*tr_seri(i,k,id_fine)
+      IF(id_coss>0) auxreal=auxreal+ss_ssalt550(RH_num)*
+     .                       tr_seri(i,k,id_coss)
+      IF(id_codu>0) auxreal=auxreal+ss_dust(1)*tr_seri(i,k,id_codu)
+      IF(id_scdu>0) auxreal=auxreal+ss_dustsco(1)*tr_seri(i,k,id_scdu)
+      ztaue550(i)=ztaue550(i)+auxreal*zdz(i,k)*1.e6
+    
+!JE20150128        ztaue550(i)=ztaue550(i)+(alpha_acc*tr_seri(i,k,id_fine)+
+!     .                 ss_ssalt550(RH_num)*tr_seri(i,k,id_coss)+
+!     .                 ss_dust(1)*tr_seri(i,k,id_codu)+
+!     .              ss_dustsco(1)*tr_seri(i,k,id_scdu)  )*zdz(i,k)*1.e6
+
 cnhl_test TOTAL AOD IS NOW AOD COARSE MODE ONLY
 cnhl_test        ztaue550(i)=ztaue550(i)+(                     
@@ -133,12 +154,13 @@
 cnhl_test     .                 ss_dust(1)*tr_seri(i,k,4))*zdz(i,k)*1.e6
 
-        taue550_tr2(i)=taue550_tr2(i)+alpha_acc*tr_seri(i,k,id_fine)*
-     .                 zdz(i,k)*1.e6
-        taue550_ss(i)=taue550_ss(i)+
+        IF(id_fine>0) taue550_tr2(i)=taue550_tr2(i)
+     .               + alpha_acc*tr_seri(i,k,id_fine)*zdz(i,k)*1.e6
+        IF(id_coss>0) taue550_ss(i)=taue550_ss(i)+
      .                ss_ssalt550(RH_num)*tr_seri(i,k,id_coss)*
      .                zdz(i,k)*1.e6
-        taue550_dust(i)=taue550_dust(i)+ss_dust(1)*tr_seri(i,k,id_codu)*
-     .                zdz(i,k)*1.e6
-        taue550_dustsco(i)=taue550_dustsco(i)+
+        IF(id_codu>0) taue550_dust(i)=taue550_dust(i)+
+     .                ss_dust(1)*tr_seri(i,k,id_codu)*
+     .                zdz(i,k)*1.e6
+        IF(id_scdu>0) taue550_dustsco(i)=taue550_dustsco(i)+
      .                ss_dustsco(1)*tr_seri(i,k,id_scdu)*
      .                zdz(i,k)*1.e6
@@ -151,16 +173,27 @@
         alpha_acc=ss_acc670(RH_num) + DELTA*(ss_acc670(RH_num+1)-
      .            ss_acc670(RH_num))              !--m2/g
-        ztaue670(i)=ztaue670(i)+(alpha_acc*tr_seri(i,k,id_fine)+
-     .                 ss_ssalt670(RH_num)*tr_seri(i,k,id_coss)+
-     .                 ss_dust(2)*tr_seri(i,k,id_codu)+
-     .               ss_dustsco(2)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
-        taue670_tr2(i)=taue670_tr2(i)+alpha_acc*tr_seri(i,k,id_fine)*
+      auxreal=0.
+      IF(id_fine>0) auxreal=auxreal+alpha_acc*tr_seri(i,k,id_fine)
+      IF(id_coss>0) auxreal=auxreal+ss_ssalt670(RH_num)
+     .                      *tr_seri(i,k,id_coss)
+      IF(id_codu>0) auxreal=auxreal+ss_dust(2)*tr_seri(i,k,id_codu)
+      IF(id_scdu>0) auxreal=auxreal+ss_dustsco(2)*tr_seri(i,k,id_scdu)
+      ztaue670(i)=ztaue670(i)+auxreal*zdz(i,k)*1.e6
+
+!JE20150128        ztaue670(i)=ztaue670(i)+(alpha_acc*tr_seri(i,k,id_fine)+
+!     .                 ss_ssalt670(RH_num)*tr_seri(i,k,id_coss)+
+!     .                 ss_dust(2)*tr_seri(i,k,id_codu)+
+!     .               ss_dustsco(2)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
+
+      IF(id_fine>0)  taue670_tr2(i)=taue670_tr2(i)+
+     .                alpha_acc*tr_seri(i,k,id_fine)*
      .                 zdz(i,k)*1.e6
-        taue670_ss(i)=taue670_ss(i)+
+      IF(id_coss>0)  taue670_ss(i)=taue670_ss(i)+
      .                ss_ssalt670(RH_num)*tr_seri(i,k,id_coss)*
      .                zdz(i,k)*1.e6
-        taue670_dust(i)=taue670_dust(i)+ss_dust(2)*tr_seri(i,k,id_codu)*
-     .                zdz(i,k)*1.e6
-        taue670_dustsco(i)=taue550_dustsco(i)+
+      IF(id_codu>0)  taue670_dust(i)=taue670_dust(i)
+     .                +ss_dust(2)*tr_seri(i,k,id_codu)*
+     .                zdz(i,k)*1.e6
+      IF(id_scdu>0)  taue670_dustsco(i)=taue550_dustsco(i)+
      .                ss_dustsco(2)*tr_seri(i,k,id_scdu)*
      .                zdz(i,k)*1.e6
@@ -171,16 +204,25 @@
         alpha_acc=ss_acc865(RH_num) + DELTA*(ss_acc865(RH_num+1)-
      .            ss_acc865(RH_num))              !--m2/g
-        ztaue865(i)=ztaue865(i)+(alpha_acc*tr_seri(i,k,id_fine)+
-     .                 ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)+
-     .                 ss_dust(3)*tr_seri(i,k,id_codu)+
-     .               ss_dustsco(3)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
-        taue865_tr2(i)=taue865_tr2(i)+alpha_acc*tr_seri(i,k,id_fine)*
+        auxreal=0.
+      IF(id_fine>0) auxreal=auxreal+alpha_acc*tr_seri(i,k,id_fine)
+      IF(id_coss>0) auxreal=auxreal
+     .                     +ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)
+      IF(id_codu>0) auxreal=auxreal+ss_dust(3)*tr_seri(i,k,id_codu)
+      IF(id_scdu>0) auxreal=auxreal+ss_dustsco(3)*tr_seri(i,k,id_scdu)
+        ztaue865(i)=ztaue865(i)+auxreal*zdz(i,k)*1.e6
+!JE20150128        ztaue865(i)=ztaue865(i)+(alpha_acc*tr_seri(i,k,id_fine)+
+!     .                 ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)+
+!     .                 ss_dust(3)*tr_seri(i,k,id_codu)+
+!     .               ss_dustsco(3)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
+      IF(id_fine>0) taue865_tr2(i)=taue865_tr2(i)
+     .                +alpha_acc*tr_seri(i,k,id_fine)*
      .                 zdz(i,k)*1.e6
-        taue865_ss(i)=taue865_ss(i)+
+      IF(id_coss>0) taue865_ss(i)=taue865_ss(i)+
      .                ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)*
      .                zdz(i,k)*1.e6
-        taue865_dust(i)=taue865_dust(i)+ss_dust(3)*tr_seri(i,k,id_codu)*
-     .                zdz(i,k)*1.e6
-        taue865_dustsco(i)=taue550_dustsco(i)+
+      IF(id_codu>0)  taue865_dust(i)=taue865_dust(i)
+     .                +ss_dust(3)*tr_seri(i,k,id_codu)*
+     .                zdz(i,k)*1.e6
+      IF(id_scdu>0)  taue865_dustsco(i)=taue550_dustsco(i)+
      .                ss_dustsco(3)*tr_seri(i,k,id_scdu)*
      .                zdz(i,k)*1.e6
@@ -188,5 +230,6 @@
 
 c
-       burden_ss(i)=burden_ss(i)+tr_seri(i,k,id_coss)*1.e6*1.e3*zdz(i,k)
+      IF(id_coss>0)  burden_ss(i)=burden_ss(i)
+     .                +tr_seri(i,k,id_coss)*1.e6*1.e3*zdz(i,k)
       ENDDO            !-loop on klev
       ENDDO            !-loop on klon
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/coarsemission.F
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/coarsemission.F	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/coarsemission.F	(revision 2196)
@@ -18,4 +18,5 @@
      .                             flux_sparam_ssfine,flux_sparam_sscoa,
      .                          id_prec,id_fine,id_coss,id_codu,id_scdu,
+     .                          ok_chimeredust,
      .                                                source_tr,flux_tr)
 !     .                         wth,cly,zprecipinsoil,lmt_sea_salt,
@@ -41,4 +42,5 @@
 c============================== INPUT ==================================
       INTEGER nbjour
+      LOGICAL ok_chimeredust
       REAL pdtphys  ! pas d'integration pour la physique (seconde)
       REAL t_seri(klon,klev)  ! temperature
@@ -133,4 +135,5 @@
 
 c
+      IF (.NOT. ok_chimeredust)  THEN  
       DO i=1, klon
 !!     IF (cly(i).GE.9990..OR.wth(i).GE.9990..OR.
@@ -154,29 +157,30 @@
 !         flux_sparam_ddcoa(i)=scale_param_dustcoa(iregion_dust(i)) *
 !     .                            dust_ec(i)*1.e3*0.905*1.e3
-         source_tr(i,id_fine)=scale_param_dustacc(iregion_dust(i))*
-     .                  dust_ec(i)*1.e3*0.114   ! g/m2/s
-         source_tr(i,id_codu)=scale_param_dustcoa(iregion_dust(i))*
-     .                  dust_ec(i)*1.e3*0.108   ! g/m2/s   bin 0.5-3um
-         source_tr(i,id_scdu)=scale_param_dustsco(iregion_dust(i))*
-     .                  dust_ec(i)*1.e3*0.778   ! g/m2/s   bin 3-15um
-! Original line (4 tracers)
-         flux_tr(i,id_fine)=scale_param_dustacc(iregion_dust(i))*
-     .                  dust_ec(i)*1.e3*0.114*1.e3  !mg/m2/s
-         flux_tr(i,id_codu)=scale_param_dustcoa(iregion_dust(i))*
-     .                  dust_ec(i)*1.e3*0.108*1.e3  !mg/m2/s bin 0.5-3um
-         flux_tr(i,id_scdu)=scale_param_dustsco(iregion_dust(i))*
-     .                  dust_ec(i)*1.e3*0.778*1.e3  !mg/m2/s bin 0.5-3um
+      IF(id_fine>0)     source_tr(i,id_fine)=
+     . scale_param_dustacc(iregion_dust(i))*
+     .                  dust_ec(i)*1.e3*0.093   ! g/m2/s 
+      IF(id_codu>0)   source_tr(i,id_codu)=
+     . scale_param_dustcoa(iregion_dust(i))*
+     .                  dust_ec(i)*1.e3*0.905   ! g/m2/s   bin 0.5-10um
+      IF(id_scdu>0)  source_tr(i,id_scdu)=0.   ! no supercoarse
+! Original line (4 tracers)
+       IF(id_fine>0)   flux_tr(i,id_fine)=
+     .  scale_param_dustacc(iregion_dust(i))*
+     .                  dust_ec(i)*1.e3*0.093*1.e3  !mg/m2/s
+       IF(id_codu>0)  flux_tr(i,id_codu)=
+     . scale_param_dustcoa(iregion_dust(i))*
+     .                  dust_ec(i)*1.e3*0.905*1.e3  !mg/m2/s bin 0.5-10um
+       IF(id_scdu>0) flux_tr(i,id_scdu)=0.
 
          flux_sparam_ddfine(i)=scale_param_dustacc(iregion_dust(i)) *
-     .                            dust_ec(i)*1.e3*0.114*1.e3
+     .                            dust_ec(i)*1.e3*0.093*1.e3
          flux_sparam_ddcoa(i)=scale_param_dustcoa(iregion_dust(i)) *
-     .                            dust_ec(i)*1.e3*0.108*1.e3
-         flux_sparam_ddsco(i)=scale_param_dustsco(iregion_dust(i)) *
-     .                            dust_ec(i)*1.e3*0.778*1.e3
-      ENDDO
-      
+     .                            dust_ec(i)*1.e3*0.905*1.e3
+         flux_sparam_ddsco(i)=0.
+      ENDDO
+      ENDIF
 !*****************NEW CHIMERE DUST EMISSION Sahara*****
 ! je  20140522
-      IF(.TRUE.) THEN
+      IF(ok_chimeredust) THEN
       print *,'MIX- NEW SAHARA DUST SOURCE SCHEME...'
 
@@ -195,16 +199,22 @@
       DO i=1,klon   
          if (maskd(i).gt.0) then 
-         source_tr(i,id_fine)=scale_param_dustacc(iregion_dust(i))*
+      IF(id_fine>0)    source_tr(i,id_fine)=
+     . scale_param_dustacc(iregion_dust(i))*
      .                  dustsourceacc(i)*1.e3   ! g/m2/s  bin 0.03-0.5
-         source_tr(i,id_codu)=scale_param_dustcoa(iregion_dust(i))*
+      IF(id_codu>0)    source_tr(i,id_codu)=
+     . scale_param_dustcoa(iregion_dust(i))*
      .                  dustsourcecoa(i)*1.e3   ! g/m2/s   bin 0.5-3um
-         source_tr(i,id_scdu)=scale_param_dustsco(iregion_dust(i))*
+      IF(id_scdu>0)   source_tr(i,id_scdu)=
+     . scale_param_dustsco(iregion_dust(i))*
      .                  dustsourcesco(i)*1.e3   ! g/m2/s   bin 3-15um
 ! Original line (4 tracers)
-         flux_tr(i,id_fine)=scale_param_dustacc(iregion_dust(i))*
+       IF(id_fine>0)  flux_tr(i,id_fine)=
+     .  scale_param_dustacc(iregion_dust(i))*
      .                  dustsourceacc(i)*1.e3*1.e3  !mg/m2/s
-         flux_tr(i,id_codu)=scale_param_dustcoa(iregion_dust(i))*
+       IF(id_codu>0)  flux_tr(i,id_codu)=
+     . scale_param_dustcoa(iregion_dust(i))*
      .                  dustsourcecoa(i)*1.e3*1.e3  !mg/m2/s bin 0.5-3um
-         flux_tr(i,id_scdu)=scale_param_dustsco(iregion_dust(i))*
+       IF(id_scdu>0)  flux_tr(i,id_scdu)=
+     . scale_param_dustsco(iregion_dust(i))*
      .                  dustsourcesco(i)*1.e3*1.e3  !mg/m2/s bin 3-15um
          flux_sparam_ddfine(i)=scale_param_dustacc(iregion_dust(i)) *
@@ -215,16 +225,22 @@
      .                            dustsourcesco(i)*1.e3*1.e3
          else
-         source_tr(i,id_fine)=scale_param_dustacc(iregion_dust(i))*
+        IF(id_fine>0) source_tr(i,id_fine)=
+     .  scale_param_dustacc(iregion_dust(i))*
      .                  dust_ec(i)*1.e3*0.114   ! g/m2/s
-         source_tr(i,id_codu)=scale_param_dustcoa(iregion_dust(i))*
+        IF(id_codu>0) source_tr(i,id_codu)=
+     .  scale_param_dustcoa(iregion_dust(i))*
      .                  dust_ec(i)*1.e3*0.108   ! g/m2/s   bin 0.5-3um
-         source_tr(i,id_scdu)=scale_param_dustsco(iregion_dust(i))*
+        IF(id_scdu>0) source_tr(i,id_scdu)=
+     .  scale_param_dustsco(iregion_dust(i))*
      .                  dust_ec(i)*1.e3*0.778   ! g/m2/s   bin 3-15um
 ! Original line (4 tracers)
-         flux_tr(i,id_fine)=scale_param_dustacc(iregion_dust(i))*
+        IF(id_fine>0) flux_tr(i,id_fine)=
+     . scale_param_dustacc(iregion_dust(i))*
      .                  dust_ec(i)*1.e3*0.114*1.e3  !mg/m2/s
-         flux_tr(i,id_codu)=scale_param_dustcoa(iregion_dust(i))*
+        IF(id_codu>0) flux_tr(i,id_codu)=
+     . scale_param_dustcoa(iregion_dust(i))*
      .                  dust_ec(i)*1.e3*0.108*1.e3  !mg/m2/s bin 0.5-3um
-         flux_tr(i,id_scdu)=scale_param_dustsco(iregion_dust(i))*
+        IF(id_scdu>0) flux_tr(i,id_scdu)=
+     . scale_param_dustsco(iregion_dust(i))*
      .                  dust_ec(i)*1.e3*0.778*1.e3  !mg/m2/s bin 0.5-3um
 
@@ -257,19 +273,24 @@
       ENDDO
       CALL minmaxsource(tmp_var2,qmin,qmax,'src: before SS emiss')
+      IF(id_coss>0) then
       print *,'Source = ',SUM(source_tr(:,id_coss)),
      .     MINVAL(source_tr(:,id_coss)), MAXVAL(source_tr(:,id_coss))
-!      ENDIF
+      ENDIF
 !
       DO i=1,klon
 ! Original line (4 tracers)
-         source_tr(i,id_fine)=source_tr(i,id_fine)+scale_param_ssacc*
+         IF(id_fine>0) source_tr(i,id_fine)=
+     . source_tr(i,id_fine)+scale_param_ssacc*
      .                                 lmt_sea_salt(i,1)*1.e4       !g/m2/s
 
 ! Original line (4 tracers)
-         flux_tr(i,id_fine)=flux_tr(i,id_fine)+scale_param_ssacc
+       IF(id_fine>0)  flux_tr(i,id_fine)=
+     . flux_tr(i,id_fine)+scale_param_ssacc
      .                            *lmt_sea_salt(i,1)*1.e4*1.e3      !mg/m2/s
 !
-       source_tr(i,id_coss)=scale_param_sscoa*lmt_sea_salt(i,2)*1.e4    !g/m2/s
-       flux_tr(i,id_coss)=scale_param_sscoa*lmt_sea_salt(i,2)*1.e4*1.e3 !mg/m2/s
+      IF(id_coss>0)  source_tr(i,id_coss)=
+     . scale_param_sscoa*lmt_sea_salt(i,2)*1.e4    !g/m2/s
+      IF(id_coss>0)  flux_tr(i,id_coss)=
+     . scale_param_sscoa*lmt_sea_salt(i,2)*1.e4*1.e3 !mg/m2/s
 c
          flux_sparam_ssfine(i)=scale_param_ssacc *
@@ -285,7 +306,8 @@
       ENDDO
       CALL minmaxsource(tmp_var2,qmin,qmax,'src: after SS emiss')
+      IF(id_coss>0) then
       print *,'Source = ',SUM(source_tr(:,id_coss)),
      .  MINVAL(source_tr(:,id_coss)), MAXVAL(source_tr(:,id_coss))
-!      ENDIF
+      ENDIF
 c     
 
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/dustemission_mod.F90
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/dustemission_mod.F90	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/dustemission_mod.F90	(revision 2196)
@@ -21,17 +21,38 @@
   real   , parameter :: dmax=0.2
   integer, parameter :: nspe=nmode*3+1
+  real   ,parameter     :: vkarm=0.41
+!JE20150202 : updating scheme to chimere13b <<<
+! original values
+!  integer, parameter :: div1=3.
+!  integer, parameter :: div2=3.
+!  integer, parameter :: div3=3.
+!  real   , parameter :: e1=3.61/div1
+!  real   , parameter :: e2=3.52/div2
+!  real   , parameter :: e3=3.46/div3
+!  real   , parameter :: factorflux=10.
+!  real   , parameter :: rop=2.65 ! particle density g/m3
+!  real   , parameter :: roa=0.001227  ! air density g/m3
+!  real   , parameter :: pi=3.14159  !!
+!  real   , parameter :: gravity=981. !! cm!!
+!  real   , parameter :: cd=1.*roa/gravity
+! new values
+!  logical, parameter :: ok_splatunning=.true.
+! Div=3 from S. Alfaro (Sow et al ACPD 2011)
+!JE 20150206
   integer, parameter :: div1=3.
   integer, parameter :: div2=3.
   integer, parameter :: div3=3.
-
-  real   ,parameter     :: vkarm=0.41
   real   , parameter :: e1=3.61/div1
   real   , parameter :: e2=3.52/div2
   real   , parameter :: e3=3.46/div3
+  real   , parameter :: factorflux=1.
   real   , parameter :: rop=2.65 ! particle density g/m3
   real   , parameter :: roa=0.001227  ! air density g/m3
   real   , parameter :: pi=3.14159  !!
   real   , parameter :: gravity=981. !! cm!!
-  real   , parameter :: cd=1.*roa/gravity
+! C=2.61 from Marticorena and Bergametti 1995 instead of Gillete and Chen 2001
+! (recommended C=1.1  in supply-limited dust source area.. )
+  real   , parameter :: cd=2.61*roa/gravity
+!JE20150202>>>>
   real,parameter     :: beta=16300.
   real, parameter, dimension(3) :: diam=(/1.5,6.7,14.2/)
@@ -69,4 +90,5 @@
 !!!  INTEGER,DIMENSION(:),ALLOCATABLE,SAVE :: maskdust
   REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: feff
+  REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: feffdbg
 
   REAL,DIMENSION(:),  ALLOCATABLE,SAVE :: sizeclass 
@@ -110,4 +132,5 @@
 !!!!$OMP THREADPRIVATE(maskdust) 
 !$OMP THREADPRIVATE(feff) 
+!$OMP THREADPRIVATE(feffdbg) 
 !$OMP THREADPRIVATE(sizeclass) 
 !$OMP THREADPRIVATE(sizeclass2) 
@@ -536,4 +559,5 @@
     ALLOCATE( solspe(nats,nspe) )
     ALLOCATE( feff(klon,ntyp) ) 
+    ALLOCATE( feffdbg(klon,ntyp) ) 
     ALLOCATE( sizeclass(nclass) )
     ALLOCATE( sizeclass2(nclass) )
@@ -768,4 +792,5 @@
 !              endif
               feff(i,k)=0.
+              feffdbg(i,k)=0.
  !         print*,'IKKK A ',i,klon,k,ntyp
             else
@@ -776,4 +801,5 @@
               bb=log(aeff*(xeff/zos(i,k))**0.8)
               cc=1.-aa/bb
+              feffdbg(i,k)=cc
        !   print*,'IKKK B1 ',i,klon,k,ntyp
 ! drag partition between zo1 and zo2
@@ -789,5 +815,7 @@
               endif
               if (feff(i,k).lt.0.)feff(i,k)=0.
+              if (feffdbg(i,k).lt.0.)feffdbg(i,k)=0.
               if (feff(i,k).gt.1.)feff(i,k)=1.
+              if (feffdbg(i,k).gt.1.)feffdbg(i,k)=1.
     !      print*,'IKKK E ',i,klon,k,ntyp
             endif
@@ -798,4 +826,5 @@
 !
     CALL writefield_phy("REPART5",feff(1:klon,1:5),5)
+    CALL writefield_phy("REPART5dbg",feffdbg(1:klon,1:5),5)
 endif
 
@@ -1033,5 +1062,6 @@
   REAL :: pdfcum,U10mMOD,pdfu,weilambda
   REAL :: z0salt,ceff,cerod,cpcent
-  REAL :: cdnms,ustarns,modwm,utmin
+!JE20150202  !REAL :: cdnms,ustarns,modwm,utmin
+  REAL :: cdnms,ustarns,modwm
   REAL :: fdp1,fdp2,ad1,ad2,ad3,flux_diam
   REAL :: dfec1,dfec2,dfec3,t1,t2,t3,p1,p2,p3,dec,ec
@@ -1120,5 +1150,7 @@
                    ft2=0.
                    ft3=0.
-
+!JE20150129<<<<
+
+             IF(.FALSE.) THEN
 !                  nat=int(sol(i,n))
 !                    print *,i,n
@@ -1136,4 +1168,12 @@
              !      if(n.eq.1) print*,'nat1=',nat,'sol1=',sol(i,n)
                    IF(n.eq.1.and.nat.eq.99)GOTO 80
+
+             ENDIF
+             IF(.TRUE.) THEN
+                nat=int(sol(i,n))
+                if(n == 1 .and. nat >= 14 .or. nat < 1 .or. nat > 19) GOTO 80
+             ENDIF
+!JE20150129>>>>
+
                       z0salt=z02(i,n)
                       ceff=feff(i,n)
@@ -1149,16 +1189,20 @@
                       cdnms=vkarm/(log(z10m/z0salt))
                       modwm=sqrt((wind10ms(kwb)**2)+(1.2*zwstar(i))**2)
-!                      modwm=sqrt((wind10ms(kwb)**2)+(1.2*sqrt(ale_wake(i))
-!                      )**2)
-!                      modwm=sqrt((wind10ms(kwb)**2)+(1.2*sqrt(Ale_bl(i)) )**2)
-!                      modwm=sqrt((wind10ms(kwb)**2))
                       ustarns=cdnms*modwm*100.
-                      utmin=umin/(cdnms*ceff)
-                   IF(wind10cm(kwb).ge.utmin)THEN
-                      ustarsalt=ustarns+  &
-                    (0.3*(wind10cm(kwb)/100.-utmin/100.)**2.)
-                   ELSE
-                      ustarsalt=ustarns
-                   ENDIF
+!JE20150202 <<
+! Do not have too much sense.. and is not anymore in the chimere14b version.
+!
+!                      utmin=umin/(cdnms*ceff)
+!                   IF(wind10cm(kwb).ge.utmin)THEN
+!                      ustarsalt=ustarns+  &
+!                    (0.3*(wind10cm(kwb)/100.-utmin/100.)**2.)
+!                   ELSE
+!                      ustarsalt=ustarns
+!                   ENDIF
+! ustarsalt should be :
+                    ustarsalt=ustarns
+!JE20150202 >>
+
+
                    IF(ustarsalt.lt.umin/ceff)GOTO 80
 !                      print*,'ustarsalt = ',ustarsalt
@@ -1215,11 +1259,17 @@
              ENDDO !n=1,ntyp
 70 CONTINUE
+!factorflux
         fluxdust(i,1)=fluxdust(i,1)+flux1*probu(kwb)
         fluxdust(i,2)=fluxdust(i,2)+flux2*probu(kwb)
         fluxdust(i,3)=fluxdust(i,3)+flux3*probu(kwb)
    ENDDO !kwb=1,nwb
-      m1dflux(i)=10.*fluxdust(i,1)
-      m2dflux(i)=10.*fluxdust(i,2)          ! tous en Kg/m2/s
-      m3dflux(i)=10.*fluxdust(i,3)
+!JE20150202 <<
+!      m1dflux(i)=10.*fluxdust(i,1)
+!      m2dflux(i)=10.*fluxdust(i,2)          ! tous en Kg/m2/s
+!      m3dflux(i)=10.*fluxdust(i,3)
+      m1dflux(i)=factorflux*10.*fluxdust(i,1)
+      m2dflux(i)=factorflux*10.*fluxdust(i,2)          ! tous en Kg/m2/s
+      m3dflux(i)=factorflux*10.*fluxdust(i,3)
+!JE20150202 >>
 
 
@@ -1234,5 +1284,8 @@
    DO i=1,ndistb
     DO j=1,nbins
-    emisbin(k,j) = emisbin(k,j)+10*fluxdust(k,i)*massfrac(i,j)  
+!JE20150202 <<
+!    emisbin(k,j) = emisbin(k,j)+10*fluxdust(k,i)*massfrac(i,j)  
+    emisbin(k,j) = emisbin(k,j)+factorflux*fluxdust(k,i)*massfrac(i,j)  
+!JE20150202 >>
     ENDDO !j, nbind
    ENDDO  !i, nmode
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/finemission.F
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/finemission.F	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/finemission.F	(revision 2196)
@@ -68,10 +68,10 @@
       DO i=1,klon
          IF (iregion_ind(i).GT.0) THEN
-           source_tr(i,id_fine)=source_tr(i,id_fine)+
+       IF(id_fine>0)    source_tr(i,id_fine)=source_tr(i,id_fine)+
      .                (scale_param_ff(iregion_ind(i))*lmt_bcff(i)+     !g/m2/s
      .                 scale_param_ff(iregion_ind(i))*lmt_omff(i)
      .                 )     * 1.e4                        !g/m2/s
 c
-           flux_tr(i,id_fine)=flux_tr(i,id_fine)+
+      IF(id_fine>0)     flux_tr(i,id_fine)=flux_tr(i,id_fine)+
      .                (scale_param_ff(iregion_ind(i))*lmt_bcff(i)+     !mg/m2/s
      .                 scale_param_ff(iregion_ind(i))*lmt_omff(i)
@@ -84,10 +84,10 @@
          ENDIF
          IF (iregion_bb(i).GT.0) THEN
-           source_tr(i,id_fine)=source_tr(i,id_fine)+
+       IF(id_fine>0)    source_tr(i,id_fine)=source_tr(i,id_fine)+
      .                (scale_param_bb(iregion_bb(i))*lmt_bcbb_l(i)+   !g/m2/s
      .                 scale_param_bb(iregion_bb(i))*lmt_ombb_l(i)    !g/m2/s
      .                 )     * 1.e4                        !g/m2/s
 c
-           flux_tr(i,id_fine)=flux_tr(i,id_fine)+
+       IF(id_fine>0)    flux_tr(i,id_fine)=flux_tr(i,id_fine)+
      .                (scale_param_bb(iregion_bb(i))*lmt_bcbb_l(i)+   !mg/m2/s
      .                 scale_param_bb(iregion_bb(i))*lmt_ombb_l(i)+   !mg/m2/s
@@ -101,9 +101,9 @@
      .                   *1.e4*1.e3
          ENDIF
-         source_tr(i,id_fine)=source_tr(i,id_fine)+
+       IF(id_fine>0)  source_tr(i,id_fine)=source_tr(i,id_fine)+
      .                (lmt_bcnff(i)+lmt_bcba(i)+lmt_omnff(i)+
      .                 lmt_omnat(i)+lmt_omba(i))     * 1.e4           !g/m2/s
 c
-         flux_tr(i,id_fine)=flux_tr(i,id_fine)+
+       IF(id_fine>0)  flux_tr(i,id_fine)=flux_tr(i,id_fine)+
      .                (lmt_bcnff(i)+lmt_omnff(i)+lmt_omnat(i)+
      .                 lmt_omba(i)+lmt_bcba(i))     * 1.e4 *1.e3      !mg/m2/s
@@ -135,5 +135,5 @@
 c
          IF (iregion_bb(i) .GT.0) THEN
-           tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine)+
+        IF(id_fine>0)   tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine)+
      .              (scale_param_bb(iregion_bb(i))*lmt_bcbb_h(i)+
      .               scale_param_bb(iregion_bb(i))*lmt_ombb_h(i))
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/gastoparticle.F
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/gastoparticle.F	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/gastoparticle.F	(revision 2196)
@@ -48,4 +48,5 @@
       pi=atan(1.)*4.
 c
+      IF (id_prec>0 .AND. id_fine>0) THEN
       DO k = 1, klev
       DO i = 1, klon
@@ -85,5 +86,5 @@
       ENDDO
       ENDDO
-
+      ENDIF
 
 c
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/phys_output_write_mod.F90
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/phys_output_write_mod.F90	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/phys_output_write_mod.F90	(revision 2196)
@@ -13,5 +13,7 @@
 !!JE20140507>>
 
-  USE phytracr_spl_mod, ONLY : d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
+  USE phytracr_spl_mod, ONLY : ok_chimeredust, id_prec, id_fine, id_coss, &
+       id_codu, id_scdu , &
+       d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
        d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls,  &
        d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav ,&
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/physiq.F90
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/physiq.F90	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/physiq.F90	(revision 2196)
@@ -3675,6 +3675,6 @@
   scale_param_dustcoa(:)=1.
   scale_param_dustsco(:)=1.
-  param_wstarBLperregion(:)=1.
-  param_wstarWAKEperregion(:)=0.25
+  param_wstarBLperregion(:)=0.
+  param_wstarWAKEperregion(:)=0.
 
 !  filescaleparamsind='modind.bin'
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/phytracr_spl_mod.F90
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/phytracr_spl_mod.F90	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/phytracr_spl_mod.F90	(revision 2196)
@@ -232,4 +232,8 @@
 !$OMP THREADPRIVATE(flux_sparam_sscoa,u10m_ss,v10m_ss)
 
+! Select dust emission scheme ver the Sahara:
+!      LOGICAL,PARAMETER,SAVE ::  ok_chimeredust=.FALSE.
+      LOGICAL,PARAMETER ::  ok_chimeredust=.TRUE.
+!$OMP THREADPRIVATE(ok_chimeredust)
 ! JE20141224 >>
 
@@ -664,4 +668,6 @@
 !JE2014124      PARAMETER (ok_histrac=.true.)
       PARAMETER (ok_histrac=.false.)
+!      PARAMETER (ok_chimeredust=.false.) 
+!      PARAMETER (ok_chimeredust=.true.) 
       INTEGER ndex2d(iim*(jjm+1)), ndex3d(iim*(jjm+1)*klev)
       INTEGER nhori1, nhori2, nhori3, nhori4, nhori5, nvert
@@ -836,4 +842,9 @@
 
       IF (debutphy) THEN
+        id_prec=-1
+        id_fine=-1
+        id_coss=-1
+        id_codu=-1
+        id_scdu=-1
        !print *,nbtr
        do it=1,nbtr
@@ -855,4 +866,19 @@
         endif
        enddo
+       ! check consistency with dust emission scheme:
+       if (ok_chimeredust) then
+          if (.not.( id_scdu>0 .and. id_codu>0 .and. id_fine>0)) then
+             call abort_gcm('phytracr_mod', 'pb in ok_chimdust 0',1)
+          endif
+       else 
+          if (id_scdu>0) then 
+       call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1 SCDU',1)
+          endif
+          if ( (id_codu .le. 0) .or. ( id_fine.le.0)  ) then  
+          call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1',1) 
+          endif
+       endif
+
+
        !print *,id_prec,id_fine,id_coss,id_codu,id_scdu
        ENDIF
@@ -864,39 +890,44 @@
 
 !---fraction of tracer that is convected (Tiedke)
-      xconv(id_prec)=0.8
-      xconv(id_fine)=0.5
-      xconv(id_coss)=0.5
-      xconv(id_codu)=0.6
-      xconv(id_scdu)=0.6  !!JE fix
-
-      masse(id_prec)=32.
-      masse(id_fine)=6.02e23
-      masse(id_coss)=6.02e23
-      masse(id_codu)=6.02e23 
-      masse(id_scdu)=6.02e23 
-
-      henry(id_prec)=1.4
-      henry(id_fine)=0.0
-      henry(id_coss)=0.0
-      henry(id_codu)=0.0
-      henry(id_scdu)=0.0
+      xconv(:)=0.
+      if(id_prec>0)  xconv(id_prec)=0.8
+      if(id_fine>0)  xconv(id_fine)=0.5
+      if(id_coss>0)  xconv(id_coss)=0.5
+      if(id_codu>0)  xconv(id_codu)=0.6
+      if(id_scdu>0)  xconv(id_scdu)=0.6  !!JE fix
+
+      masse(:)=1.
+      if(id_prec>0)  masse(id_prec)=32.
+      if(id_fine>0)  masse(id_fine)=6.02e23
+      if(id_coss>0)  masse(id_coss)=6.02e23
+      if(id_codu>0)  masse(id_codu)=6.02e23 
+      if(id_scdu>0)  masse(id_scdu)=6.02e23 
+
+      henry(:)=0.
+      if(id_prec>0)  henry(id_prec)=1.4
+      if(id_fine>0)  henry(id_fine)=0.0
+      if(id_coss>0)  henry(id_coss)=0.0
+      if(id_codu>0)  henry(id_codu)=0.0
+      if(id_scdu>0)  henry(id_scdu)=0.0
       !henry= (/1.4, 0.0, 0.0, 0.0/)
-      kk(id_prec)=2900.
-      kk(id_fine)=0.0
-      kk(id_coss)=0.0
-      kk(id_codu)=0.0
-      kk(id_scdu)=0.0
+      kk(:)=0.
+      if(id_prec>0)  kk(id_prec)=2900.
+      if(id_fine>0)  kk(id_fine)=0.0
+      if(id_coss>0)  kk(id_coss)=0.0
+      if(id_codu>0)  kk(id_codu)=0.0
+      if(id_scdu>0)  kk(id_scdu)=0.0
       !kk = (/2900., 0., 0., 0./)
-      alpha_r(id_prec)=0.0
-      alpha_r(id_fine)=0.001
-      alpha_r(id_coss)=0.001
-      alpha_r(id_codu)=0.001
-      alpha_r(id_scdu)=0.001  !JE fix
-
-      alpha_s(id_prec)=0.0
-      alpha_s(id_fine)=0.01
-      alpha_s(id_coss)=0.01
-      alpha_s(id_codu)=0.01
-      alpha_s(id_scdu)=0.01  !JE fix
+      alpha_r(:)=0.
+      if(id_prec>0)  alpha_r(id_prec)=0.0
+      if(id_fine>0)  alpha_r(id_fine)=0.001
+      if(id_coss>0)  alpha_r(id_coss)=0.001
+      if(id_codu>0)  alpha_r(id_codu)=0.001
+      if(id_scdu>0)  alpha_r(id_scdu)=0.001  !JE fix
+      alpha_s(:)=0.
+      if(id_prec>0)  alpha_s(id_prec)=0.0
+      if(id_fine>0)  alpha_s(id_fine)=0.01
+      if(id_coss>0)  alpha_s(id_coss)=0.01
+      if(id_codu>0)  alpha_s(id_codu)=0.01
+      if(id_scdu>0)  alpha_s(id_scdu)=0.01  !JE fix
 
 !      alpha_r =  (/0., 0.001, 0.001, 0.001/)
@@ -906,50 +937,55 @@
 ! nhl vdep_oce for tr1 is a weighted average of dms and so2 dep velocities
       !vdep_oce = (/0.28, 0.28, 1.2, 1.2/)
-      vdep_oce(id_prec) = 0.28
-      vdep_oce(id_fine) = 0.28
-      vdep_oce(id_coss) = 1.2
-      vdep_oce(id_codu) = 1.2
-      vdep_oce(id_scdu) = 1.2
-
-      vdep_sic(id_prec) = 0.2
-      vdep_sic(id_fine) = 0.17
-      vdep_sic(id_coss) = 1.2
-      vdep_sic(id_codu) = 1.2
-      vdep_sic(id_scdu) = 1.2
+      vdep_oce(:)=0.
+      if(id_prec>0)  vdep_oce(id_prec) = 0.28
+      if(id_fine>0)  vdep_oce(id_fine) = 0.28
+      if(id_coss>0)  vdep_oce(id_coss) = 1.2
+      if(id_codu>0)  vdep_oce(id_codu) = 1.2
+      if(id_scdu>0)  vdep_oce(id_scdu) = 1.2
+      vdep_sic(:)=0.
+      if(id_prec>0)  vdep_sic(id_prec) = 0.2
+      if(id_fine>0)  vdep_sic(id_fine) = 0.17
+      if(id_coss>0)  vdep_sic(id_coss) = 1.2
+      if(id_codu>0)  vdep_sic(id_codu) = 1.2
+      if(id_scdu>0)  vdep_sic(id_scdu) = 1.2
 
       !vdep_sic = (/0.2, 0.17, 1.2, 1.2/)     
       !vdep_ter = (/0.3, 0.14, 1.2, 1.2/)
-
-      vdep_ter(id_prec) = 0.3
-      vdep_ter(id_fine) = 0.14
-      vdep_ter(id_coss) = 1.2
-      vdep_ter(id_codu) = 1.2
-      vdep_ter(id_scdu) = 1.2
-
-      vdep_lic(id_prec) = 0.2
-      vdep_lic(id_fine) = 0.17
-      vdep_lic(id_coss) = 1.2
-      vdep_lic(id_codu) = 1.2
-      vdep_lic(id_scdu) = 1.2
+      vdep_ter(:)=0.
+      if(id_prec>0)  vdep_ter(id_prec) = 0.3
+      if(id_fine>0)  vdep_ter(id_fine) = 0.14
+      if(id_coss>0)  vdep_ter(id_coss) = 1.2
+      if(id_codu>0)  vdep_ter(id_codu) = 1.2
+      if(id_scdu>0)  vdep_ter(id_scdu) = 1.2
+
+      vdep_lic(:)=0.
+      if(id_prec>0)  vdep_lic(id_prec) = 0.2
+      if(id_fine>0)  vdep_lic(id_fine) = 0.17
+      if(id_coss>0)  vdep_lic(id_coss) = 1.2
+      if(id_codu>0)  vdep_lic(id_codu) = 1.2
+      if(id_scdu>0)  vdep_lic(id_scdu) = 1.2
 
 
       ! convective KE lessivage aer params:
-      ccntrAA_spla(id_prec)=-9999.
-      ccntrAA_spla(id_fine)=0.7
-      ccntrAA_spla(id_coss)=1.0
-      ccntrAA_spla(id_codu)=0.7
-      ccntrAA_spla(id_scdu)=0.7
-
-      ccntrENV_spla(id_prec)=-9999.
-      ccntrENV_spla(id_fine)=0.7
-      ccntrENV_spla(id_coss)=1.0
-      ccntrENV_spla(id_codu)=0.7
-      ccntrENV_spla(id_scdu)=0.7
-
-      coefcoli_spla(id_prec)=-9999.
-      coefcoli_spla(id_fine)=0.001
-      coefcoli_spla(id_coss)=0.001
-      coefcoli_spla(id_codu)=0.001
-      coefcoli_spla(id_scdu)=0.001
+      ccntrAA_spla(:)=0.
+      if(id_prec>0)  ccntrAA_spla(id_prec)=-9999.
+      if(id_fine>0)  ccntrAA_spla(id_fine)=0.7
+      if(id_coss>0)  ccntrAA_spla(id_coss)=1.0
+      if(id_codu>0)  ccntrAA_spla(id_codu)=0.7
+      if(id_scdu>0)  ccntrAA_spla(id_scdu)=0.7
+
+      ccntrENV_spla(:)=0.
+      if(id_prec>0)  ccntrENV_spla(id_prec)=-9999.
+      if(id_fine>0)  ccntrENV_spla(id_fine)=0.7
+      if(id_coss>0)  ccntrENV_spla(id_coss)=1.0
+      if(id_codu>0)  ccntrENV_spla(id_codu)=0.7
+      if(id_scdu>0)  ccntrENV_spla(id_scdu)=0.7
+
+      coefcoli_spla(:)=0.
+      if(id_prec>0)  coefcoli_spla(id_prec)=-9999.
+      if(id_fine>0)  coefcoli_spla(id_fine)=0.001
+      if(id_coss>0)  coefcoli_spla(id_coss)=0.001
+      if(id_codu>0)  coefcoli_spla(id_codu)=0.001
+      if(id_scdu>0)  coefcoli_spla(id_scdu)=0.001
 
       !vdep_lic = (/0.2, 0.17, 1.2, 1.2/)      
@@ -1001,8 +1037,18 @@
          print *, 'let s check nbtr=', nbtr
          print *, 'xlat and xlon'
+! JE before put in zero
+      IF (lminmax) THEN
+        DO it=1,nbtr
+        CALL checknanqfi(tr_seri(:,:,it),qmin,qmax,'init phytracr')
+        ENDDO        
+        DO it=1,nbtr
+        CALL minmaxqfi2(tr_seri(:,:,it),qmin,qmax,'init phytracr')
+        ENDDO
+        CALL minmaxsource(source_tr,qmin,qmax,'init phytracr')
+      ENDIF
 ! JE   initializon to cero the tracers     
-         DO it=1, nbtr
-            tr_seri(:,:,it)=0.0
-         ENDDO
+!         DO it=1, nbtr
+!            tr_seri(:,:,it)=0.0
+!         ENDDO
 ! JE end     
 ! Initializing to zero tr_seri for comparison purposes
@@ -1740,4 +1786,17 @@
 !$OMP BARRIER
 
+      lmt_dms(:)=0.0
+      aux_var2(:)=0.0
+      aux_var3(:,:)=0.0
+      source_tr(:,:)=0.0
+      flux_tr(:,:)=0.0
+      flux_sparam_bb(:)=0.0
+      flux_sparam_ff(:)=0.0
+      flux_sparam_ind(:)=0.0
+      flux_sparam_ddfine(:)=0.0
+      flux_sparam_ddcoa(:)=0.0
+      flux_sparam_ddsco(:)=0.0
+      flux_sparam_ssfine(:)=0.0
+      flux_sparam_sscoa(:)=0.0
        ENDIF ! debutphy
      
@@ -2266,4 +2325,5 @@
                                   flux_sparam_ssfine,flux_sparam_sscoa,    & 
                               id_prec,id_fine,id_coss,id_codu,id_scdu,     &
+                              ok_chimeredust,                           &
                                                      source_tr,flux_tr)    
 
@@ -2657,4 +2717,5 @@
       CALL sediment_mod(t_seri,pplay,zrho,paprs,pdtphys,RHcl,   & !xlon,xlat,  
                                      id_coss,id_codu,id_scdu,  &
+                                     ok_chimeredust,           &
                          sed_ss,sed_dust,sed_dustsco,tr_seri)
 !
@@ -3228,4 +3289,5 @@
       CALL aeropt_spl(zdz, tr_seri, RHcl,                                 &
                         id_prec, id_fine, id_coss, id_codu, id_scdu,     &
+                        ok_chimeredust,                                 &
                     diff_aod550_tot,diag_aod670_tot,diag_aod865_tot,     &
                     diff_aod550_tr2,diag_aod670_tr2,diag_aod865_tr2,     &
@@ -4456,51 +4518,99 @@
 ! saving variables for output
 ! 2D outputs
-
       DO i=1, klon
-       trm01(i)=trm(i,id_prec) 
-       trm02(i)=trm(i,id_fine) 
-       trm03(i)=trm(i,id_coss) 
-       trm04(i)=trm(i,id_codu) 
-       trm05(i)=trm(i,id_scdu)
-       sconc01(i)=sconc_seri(i,id_prec)
-       sconc02(i)=sconc_seri(i,id_fine)
-       sconc03(i)=sconc_seri(i,id_coss)
-       sconc04(i)=sconc_seri(i,id_codu)
-       sconc05(i)=sconc_seri(i,id_scdu)
-       flux01(i)=flux_tr(i,id_prec)
-       flux02(i)=flux_tr(i,id_fine)
-       flux03(i)=flux_tr(i,id_coss)
-       flux04(i)=flux_tr(i,id_codu)
-       flux05(i)=flux_tr(i,id_scdu)
-       ds01(i)=his_ds(i,id_prec)
-       ds02(i)=his_ds(i,id_fine)
-       ds03(i)=his_ds(i,id_coss)
-       ds04(i)=his_ds(i,id_codu)
-       ds05(i)=his_ds(i,id_scdu)
-       dh01(i)=his_dh(i,id_prec)
-       dh02(i)=his_dh(i,id_fine)
-       dh03(i)=his_dh(i,id_coss)
-       dh04(i)=his_dh(i,id_codu)
-       dh05(i)=his_dh(i,id_scdu)
-       dtrconv01(i)=dtrconv(i,id_prec)
-       dtrconv02(i)=dtrconv(i,id_fine)
-       dtrconv03(i)=dtrconv(i,id_coss)
-       dtrconv04(i)=dtrconv(i,id_codu)
-       dtrconv05(i)=dtrconv(i,id_scdu)
-       dtherm01(i)=his_th(i,id_prec)
-       dtherm02(i)=his_th(i,id_fine)
-       dtherm03(i)=his_th(i,id_coss)
-       dtherm04(i)=his_th(i,id_codu)
-       dtherm05(i)=his_th(i,id_scdu)
-       dhkecv01(i)=his_dhkecv(i,id_prec)
-       dhkecv02(i)=his_dhkecv(i,id_fine)
-       dhkecv03(i)=his_dhkecv(i,id_coss)
-       dhkecv04(i)=his_dhkecv(i,id_codu)
-       dhkecv05(i)=his_dhkecv(i,id_scdu)
-       dhkelsc01(i)=his_dhkelsc(i,id_prec)
-       dhkelsc02(i)=his_dhkelsc(i,id_fine)
-       dhkelsc03(i)=his_dhkelsc(i,id_coss)
-       dhkelsc04(i)=his_dhkelsc(i,id_codu)
-       dhkelsc05(i)=his_dhkelsc(i,id_scdu)
+       trm01(i)=0. 
+       trm02(i)=0. 
+       trm03(i)=0. 
+       trm04(i)=0. 
+       trm05(i)=0.
+       sconc01(i)=0. 
+       sconc02(i)=0. 
+       sconc03(i)=0. 
+       sconc04(i)=0. 
+       sconc05(i)=0.
+       flux01(i)=0. 
+       flux02(i)=0. 
+       flux03(i)=0. 
+       flux04(i)=0. 
+       flux05(i)=0.
+       ds01(i)=0. 
+       ds02(i)=0. 
+       ds03(i)=0. 
+       ds04(i)=0. 
+       ds05(i)=0.
+       dh01(i)=0. 
+       dh02(i)=0. 
+       dh03(i)=0. 
+       dh04(i)=0. 
+       dh05(i)=0.
+       dtrconv01(i)=0. 
+       dtrconv02(i)=0. 
+       dtrconv03(i)=0. 
+       dtrconv04(i)=0. 
+       dtrconv05(i)=0.
+       dtherm01(i)=0. 
+       dtherm02(i)=0. 
+       dtherm03(i)=0. 
+       dtherm04(i)=0. 
+       dtherm05(i)=0.
+       dhkecv01(i)=0. 
+       dhkecv02(i)=0. 
+       dhkecv03(i)=0. 
+       dhkecv04(i)=0. 
+       dhkecv05(i)=0.
+       dhkelsc01(i)=0. 
+       dhkelsc02(i)=0. 
+       dhkelsc03(i)=0. 
+       dhkelsc04(i)=0. 
+       dhkelsc05(i)=0.
+!       u10m_ss(i)=u10m_ec(i)
+!       v10m_ss(i)=v10m_ec(i)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+      if(id_prec>0)  trm01(i)=trm(i,id_prec) 
+      if(id_fine>0)  trm02(i)=trm(i,id_fine) 
+      if(id_coss>0)  trm03(i)=trm(i,id_coss) 
+      if(id_codu>0)  trm04(i)=trm(i,id_codu) 
+      if(id_scdu>0)  trm05(i)=trm(i,id_scdu)
+      if(id_prec>0)    sconc01(i)=sconc_seri(i,id_prec)
+      if(id_fine>0)    sconc02(i)=sconc_seri(i,id_fine)
+      if(id_coss>0)    sconc03(i)=sconc_seri(i,id_coss)
+      if(id_codu>0)    sconc04(i)=sconc_seri(i,id_codu)
+      if(id_scdu>0)    sconc05(i)=sconc_seri(i,id_scdu)
+      if(id_prec>0)    flux01(i)=flux_tr(i,id_prec)
+      if(id_fine>0)    flux02(i)=flux_tr(i,id_fine)
+      if(id_coss>0)    flux03(i)=flux_tr(i,id_coss)
+      if(id_codu>0)    flux04(i)=flux_tr(i,id_codu)
+      if(id_scdu>0)    flux05(i)=flux_tr(i,id_scdu)
+      if(id_prec>0)    ds01(i)=his_ds(i,id_prec)
+      if(id_fine>0)    ds02(i)=his_ds(i,id_fine)
+      if(id_coss>0)    ds03(i)=his_ds(i,id_coss)
+      if(id_codu>0)    ds04(i)=his_ds(i,id_codu)
+      if(id_scdu>0)    ds05(i)=his_ds(i,id_scdu)
+      if(id_prec>0)    dh01(i)=his_dh(i,id_prec)
+      if(id_fine>0)    dh02(i)=his_dh(i,id_fine)
+      if(id_coss>0)    dh03(i)=his_dh(i,id_coss)
+      if(id_codu>0)    dh04(i)=his_dh(i,id_codu)
+      if(id_scdu>0)    dh05(i)=his_dh(i,id_scdu)
+      if(id_prec>0)    dtrconv01(i)=dtrconv(i,id_prec)
+      if(id_fine>0)    dtrconv02(i)=dtrconv(i,id_fine)
+      if(id_coss>0)    dtrconv03(i)=dtrconv(i,id_coss)
+      if(id_codu>0)    dtrconv04(i)=dtrconv(i,id_codu)
+      if(id_scdu>0)    dtrconv05(i)=dtrconv(i,id_scdu)
+      if(id_prec>0)    dtherm01(i)=his_th(i,id_prec)
+      if(id_fine>0)    dtherm02(i)=his_th(i,id_fine)
+      if(id_coss>0)    dtherm03(i)=his_th(i,id_coss)
+      if(id_codu>0)    dtherm04(i)=his_th(i,id_codu)
+      if(id_scdu>0)    dtherm05(i)=his_th(i,id_scdu)
+      if(id_prec>0)    dhkecv01(i)=his_dhkecv(i,id_prec)
+      if(id_fine>0)    dhkecv02(i)=his_dhkecv(i,id_fine)
+      if(id_coss>0)    dhkecv03(i)=his_dhkecv(i,id_coss)
+      if(id_codu>0)    dhkecv04(i)=his_dhkecv(i,id_codu)
+      if(id_scdu>0)    dhkecv05(i)=his_dhkecv(i,id_scdu)
+      if(id_prec>0)    dhkelsc01(i)=his_dhkelsc(i,id_prec)
+      if(id_fine>0)    dhkelsc02(i)=his_dhkelsc(i,id_fine)
+      if(id_coss>0)    dhkelsc03(i)=his_dhkelsc(i,id_coss)
+      if(id_codu>0)    dhkelsc04(i)=his_dhkelsc(i,id_codu)
+      if(id_scdu>0)    dhkelsc05(i)=his_dhkelsc(i,id_scdu)
        u10m_ss(i)=u10m_ec(i)
        v10m_ss(i)=v10m_ec(i)
@@ -4509,35 +4619,57 @@
       DO i=1, klon
         DO k=1,klev
-           d_tr_cv01(i,k)=d_tr_cv_o(i,k,id_prec)
-           d_tr_cv02(i,k)=d_tr_cv_o(i,k,id_fine)
-           d_tr_cv03(i,k)=d_tr_cv_o(i,k,id_coss)
-           d_tr_cv04(i,k)=d_tr_cv_o(i,k,id_codu)
-           d_tr_cv05(i,k)=d_tr_cv_o(i,k,id_scdu)
-           d_tr_trsp01(i,k)=d_tr_trsp_o(i,k,id_prec)
-           d_tr_trsp02(i,k)=d_tr_trsp_o(i,k,id_fine)
-           d_tr_trsp03(i,k)=d_tr_trsp_o(i,k,id_coss)
-           d_tr_trsp04(i,k)=d_tr_trsp_o(i,k,id_codu)
-           d_tr_trsp05(i,k)=d_tr_trsp_o(i,k,id_scdu)
-           d_tr_sscav01(i,k)=d_tr_sscav_o(i,k,id_prec)
-           d_tr_sscav02(i,k)=d_tr_sscav_o(i,k,id_fine)
-           d_tr_sscav03(i,k)=d_tr_sscav_o(i,k,id_coss)
-           d_tr_sscav04(i,k)=d_tr_sscav_o(i,k,id_codu)
-           d_tr_sscav05(i,k)=d_tr_sscav_o(i,k,id_scdu)
-           d_tr_sat01(i,k)=d_tr_sat_o(i,k,id_prec)
-           d_tr_sat02(i,k)=d_tr_sat_o(i,k,id_fine)
-           d_tr_sat03(i,k)=d_tr_sat_o(i,k,id_coss)
-           d_tr_sat04(i,k)=d_tr_sat_o(i,k,id_codu)
-           d_tr_sat05(i,k)=d_tr_sat_o(i,k,id_scdu)
-           d_tr_uscav01(i,k)=d_tr_uscav_o(i,k,id_prec)
-           d_tr_uscav02(i,k)=d_tr_uscav_o(i,k,id_fine)
-           d_tr_uscav03(i,k)=d_tr_uscav_o(i,k,id_coss)
-           d_tr_uscav04(i,k)=d_tr_uscav_o(i,k,id_codu)
-           d_tr_uscav05(i,k)=d_tr_uscav_o(i,k,id_scdu)
+      d_tr_cv01(i,k)   =0.
+      d_tr_cv02(i,k)   =0.
+      d_tr_cv03(i,k)   =0.
+      d_tr_cv04(i,k)   =0.
+      d_tr_cv05(i,k)   =0.
+      d_tr_trsp01(i,k) =0.
+      d_tr_trsp02(i,k) =0.
+      d_tr_trsp03(i,k) =0.
+      d_tr_trsp04(i,k) =0.
+      d_tr_trsp05(i,k) =0.
+      d_tr_sscav01(i,k)=0.
+      d_tr_sscav02(i,k)=0.
+      d_tr_sscav03(i,k)=0.
+      d_tr_sscav04(i,k)=0.
+      d_tr_sscav05(i,k)=0.
+      d_tr_sat01(i,k)  =0.
+      d_tr_sat02(i,k)  =0.
+      d_tr_sat03(i,k)  =0.
+      d_tr_sat04(i,k)  =0.
+      d_tr_sat05(i,k)  =0.
+      d_tr_uscav01(i,k)=0.
+      d_tr_uscav02(i,k)=0.
+      d_tr_uscav03(i,k)=0.
+      d_tr_uscav04(i,k)=0.
+      d_tr_uscav05(i,k)=0.
+      if(id_prec>0)        d_tr_cv01(i,k)   =d_tr_cv_o(i,k,id_prec)
+      if(id_fine>0)        d_tr_cv02(i,k)   =d_tr_cv_o(i,k,id_fine)
+      if(id_coss>0)        d_tr_cv03(i,k)   =d_tr_cv_o(i,k,id_coss)
+      if(id_codu>0)        d_tr_cv04(i,k)   =d_tr_cv_o(i,k,id_codu)
+      if(id_scdu>0)        d_tr_cv05(i,k)   =d_tr_cv_o(i,k,id_scdu)
+      if(id_prec>0)        d_tr_trsp01(i,k) =d_tr_trsp_o(i,k,id_prec)
+      if(id_fine>0)        d_tr_trsp02(i,k) =d_tr_trsp_o(i,k,id_fine)
+      if(id_coss>0)        d_tr_trsp03(i,k) =d_tr_trsp_o(i,k,id_coss)
+      if(id_codu>0)        d_tr_trsp04(i,k) =d_tr_trsp_o(i,k,id_codu)
+      if(id_scdu>0)        d_tr_trsp05(i,k) =d_tr_trsp_o(i,k,id_scdu)
+      if(id_prec>0)        d_tr_sscav01(i,k)=d_tr_sscav_o(i,k,id_prec)
+      if(id_fine>0)        d_tr_sscav02(i,k)=d_tr_sscav_o(i,k,id_fine)
+      if(id_coss>0)        d_tr_sscav03(i,k)=d_tr_sscav_o(i,k,id_coss)
+      if(id_codu>0)        d_tr_sscav04(i,k)=d_tr_sscav_o(i,k,id_codu)
+      if(id_scdu>0)        d_tr_sscav05(i,k)=d_tr_sscav_o(i,k,id_scdu)
+      if(id_prec>0)        d_tr_sat01(i,k)  =d_tr_sat_o(i,k,id_prec)
+      if(id_fine>0)        d_tr_sat02(i,k)  =d_tr_sat_o(i,k,id_fine)
+      if(id_coss>0)        d_tr_sat03(i,k)  =d_tr_sat_o(i,k,id_coss)
+      if(id_codu>0)        d_tr_sat04(i,k)  =d_tr_sat_o(i,k,id_codu)
+      if(id_scdu>0)        d_tr_sat05(i,k)  =d_tr_sat_o(i,k,id_scdu)
+      if(id_prec>0)        d_tr_uscav01(i,k)=d_tr_uscav_o(i,k,id_prec)
+      if(id_fine>0)        d_tr_uscav02(i,k)=d_tr_uscav_o(i,k,id_fine)
+      if(id_coss>0)        d_tr_uscav03(i,k)=d_tr_uscav_o(i,k,id_coss)
+      if(id_codu>0)        d_tr_uscav04(i,k)=d_tr_uscav_o(i,k,id_codu)
+      if(id_scdu>0)        d_tr_uscav05(i,k)=d_tr_uscav_o(i,k,id_scdu)
         ENDDO
       ENDDO
      
-
-
-
 
       IF (logitime) THEN
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/precuremission.F
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/precuremission.F	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/precuremission.F	(revision 2196)
@@ -107,14 +107,16 @@
       DO i=1, klon
          IF (iregion_ind(i).GT.0) THEN
-           source_tr(i,id_prec)=source_tr(i,id_prec) + fracso2emis
+       IF(id_prec>0) source_tr(i,id_prec)=source_tr(i,id_prec) 
+     .             + fracso2emis
      .             *scale_param_ind(iregion_ind(i))*lmt_so2ff_l(i)*1.e4
      .             +scale_param_ind(iregion_ind(i))*lmt_so2ff_l(i)*1.e4
      .                   *frach2sofso2            ! molec/m2/s
 c
-           source_tr(i,id_fine)=source_tr(i,id_fine)+(1-fracso2emis)
+      IF(id_fine>0) source_tr(i,id_fine)=
+     .                source_tr(i,id_fine)+(1-fracso2emis)
      .                *scale_param_ind(iregion_ind(i))*lmt_so2ff_l(i)
      .                *1.e4*masse_ammsulfate/RNAVO  ! g/m2/s
 c
-           flux_tr(i,id_prec)=flux_tr(i,id_prec) + (
+       IF(id_prec>0)   flux_tr(i,id_prec)=flux_tr(i,id_prec) + (
      .               scale_param_ind(iregion_ind(i))*(lmt_so2ff_l(i)+
      .                lmt_so2ff_h(i))
@@ -125,10 +127,11 @@
      .                )*1.e4/RNAVO*masse_s*1.e3          ! mgS/m2/s
 c
-           flux_tr(i,id_fine)=flux_tr(i,id_fine)+(1-fracso2emis)
+      IF(id_fine>0)  flux_tr(i,id_fine)=
+     . flux_tr(i,id_fine)+(1-fracso2emis)
      .               *scale_param_ind(iregion_ind(i))*(lmt_so2ff_l(i)+
      .                lmt_so2ff_h(i))
      .               *1.e4/RNAVO*masse_ammsulfate*1.e3    ! mgS/m2/s
 c
-           flux_sparam_ind(i)=flux_sparam_ind(i)+ (1-fracso2emis)
+      flux_sparam_ind(i)=flux_sparam_ind(i)+ (1-fracso2emis)
      .               *scale_param_ind(iregion_ind(i))*(lmt_so2ff_l(i)+
      .                lmt_so2ff_h(i))
@@ -136,14 +139,16 @@
          ENDIF
          IF (iregion_bb(i).GT.0) THEN
-           source_tr(i,id_prec)= source_tr(i,id_prec) + fracso2emis
+      IF(id_prec>0) source_tr(i,id_prec)= 
+     .                  source_tr(i,id_prec) + fracso2emis
      .                 *scale_param_bb(iregion_bb(i))*lmt_so2bb_l(i)
      .                   *(1.-pctsrf(i,is_oce))*1.e4
 c
-           source_tr(i,id_fine)=source_tr(i,id_fine)+(1-fracso2emis)
+      IF(id_fine>0)     source_tr(i,id_fine)=
+     .                   source_tr(i,id_fine)+(1-fracso2emis)
      .                  *scale_param_bb(iregion_bb(i))*lmt_so2bb_l(i)*
      .                   (1.-pctsrf(i,is_oce))*1.e4*
      .                   masse_ammsulfate/RNAVO  ! g/m2/s
 c
-           flux_tr(i,id_prec)=flux_tr(i,id_prec) +
+      IF(id_prec>0)     flux_tr(i,id_prec)=flux_tr(i,id_prec) +
      .               (scale_param_bb(iregion_bb(i))*lmt_so2bb_l(i)
      .                 +scale_param_bb(iregion_bb(i))*lmt_so2bb_h(i))
@@ -151,5 +156,6 @@
      .                 *1.e4/RNAVO*masse_s*1.e3          ! mgS/m2/s
 c
-           flux_tr(i,id_fine)=flux_tr(i,id_fine)+(1-fracso2emis)
+      IF(id_fine>0) flux_tr(i,id_fine)=
+     .                flux_tr(i,id_fine)+(1-fracso2emis)
      .               *(scale_param_bb(iregion_bb(i))*lmt_so2bb_l(i)
      .                +scale_param_bb(iregion_bb(i))*lmt_so2bb_h(i))
@@ -168,14 +174,17 @@
      .               *1.e4/RNAVO*masse_ammsulfate*1.e3    ! mgS/m2/s
          ENDIF
-         source_tr(i,id_prec)=source_tr(i,id_prec) + fracso2emis
+      IF(id_prec>0)   source_tr(i,id_prec)=source_tr(i,id_prec) 
+     .                 + fracso2emis
      .                 *(lmt_so2ba(i)+lmt_so2nff(i))*1.e4
      .                 +(lmt_h2sbio(i)
      .                   +lmt_dms(i)+lmt_dmsbio(i))*1.e4            ! molec/m2/s
 c
-         source_tr(i,id_fine)=source_tr(i,id_fine)+(1-fracso2emis)
+      IF(id_fine>0)   source_tr(i,id_fine)=source_tr(i,id_fine)
+     .                +(1-fracso2emis)
      .                *(lmt_so2ba(i)+lmt_so2nff(i))*1.e4*
      .                   masse_ammsulfate/RNAVO  ! g/m2/s
 c
-         flux_tr(i,id_prec)=flux_tr(i,id_prec) + (lmt_h2sbio(i)
+      IF(id_prec>0)   flux_tr(i,id_prec)=flux_tr(i,id_prec) 
+     .               + (lmt_h2sbio(i)
      .               +lmt_so2volc_cont(i)+lmt_so2volc_expl(i)
      .                 +(lmt_so2ba(i)+lmt_so2nff(i))*fracso2emis
@@ -183,5 +192,6 @@
      .              *1.e4/RNAVO*masse_s*1.e3          ! mgS/m2/s
 c
-         flux_tr(i,id_fine)=flux_tr(i,id_fine)+(1-fracso2emis)
+      IF(id_fine>0)   flux_tr(i,id_fine)=flux_tr(i,id_fine)
+     .               +(1-fracso2emis)
      .               *(lmt_so2ba(i) + lmt_so2nff(i))
      .               *1.e4/RNAVO*masse_ammsulfate*1.e3    ! mgS/m2/s
@@ -208,5 +218,5 @@
       ENDDO
       ENDDO
-
+      IF(id_prec>0) THEN
       DO i = 1, klon
         tr_seri(i,kkk_cont(i),id_prec)=tr_seri(i,kkk_cont(i),id_prec) +
@@ -215,5 +225,5 @@
      .               lmt_so2volc_expl(i)/zdz(i,kkk_expl(i))/100.*pdtphys
       ENDDO
-                                           
+      ENDIF                                           
 c  Sources hautes de SO2      
       
@@ -226,14 +236,17 @@
 c
          IF (iregion_bb(i).GT.0) THEN
-           tr_seri(i,k,id_prec)=tr_seri(i,k,id_prec) + fracso2emis
+      IF(id_prec>0)   tr_seri(i,k,id_prec)=
+     .              tr_seri(i,k,id_prec) + fracso2emis
      .              *scale_param_bb(iregion_bb(i))*lmt_so2bb_h(i)
      .              /zdz(i,k)/100.*pdtphys
 c
-           tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine) + (1.-fracso2emis)
+      IF(id_fine>0)     tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine) 
+     .              + (1.-fracso2emis)
      .              *scale_param_bb(iregion_bb(i))*lmt_so2bb_h(i)
      .              *masse_ammsulfate/RNAVO/zdz(i,k)/100.*pdtphys   !g/cm3
          ENDIF
          IF (iregion_ind(i).GT.0) THEN
-           tr_seri(i,k,id_prec)=tr_seri(i,k,id_prec) + (fracso2emis
+       IF(id_prec>0)  tr_seri(i,k,id_prec)=
+     .              tr_seri(i,k,id_prec) + (fracso2emis
      .              *scale_param_ind(iregion_ind(i))*lmt_so2ff_h(i)
      .              + frach2sofso2
@@ -241,5 +254,6 @@
      .              /zdz(i,k)/100.*pdtphys
 c
-           tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine) + (1.-fracso2emis)
+       IF(id_fine>0)    tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine) 
+     .               + (1.-fracso2emis)
      .              *scale_param_ind(iregion_ind(i))*lmt_so2ff_h(i)
      .              *masse_ammsulfate/RNAVO/zdz(i,k)/100.*pdtphys   !g/cm3
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/sediment_mod.F
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/sediment_mod.F	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/sediment_mod.F	(revision 2196)
@@ -3,4 +3,5 @@
       SUBROUTINE sediment_mod(t_seri,pplay,zrho,paprs,time_step,RHcl,
      .                                       id_coss,id_codu,id_scdu,
+     .                                        ok_chimeredust,
      .                           sed_ss,sed_dust,sed_dustsco,tr_seri)
 cnhl     .                                       xlon,xlat,
@@ -29,5 +30,5 @@
        REAL paprs(klon, klev+1)    !pressure at interface of layers Z (Pa)
        REAL time_step            !time step (sec)
-
+       LOGICAL ok_chimeredust
        REAL xlat(klon)       ! latitudes pour chaque point 
        REAL xlon(klon)       ! longitudes pour chaque point 
@@ -74,7 +75,11 @@
 !JE20140911        mmd_dust=5.156346  !micrometer for bin 0.5-20 and 0.5-10 um
 !JE20140911        mmd_dustsco=15.56554  !micrometer for bin 0.5-20 and 0.5-10 um
+        IF (ok_chimeredust) THEN 
         mmd_dust=3.761212  !micrometer for bin 0.5-3 and 0.5-10 um
         mmd_dustsco=15.06167  !micrometer for bin 3-20 and 0.5-10 um
-
+        ELSE 
+        mmd_dust=11.0  !micrometer for bin 0.5-20 and 0.5-10 um
+        mmd_dustsco=100. ! absurd value, bin not used in this scheme
+        ENDIF
 
 
@@ -103,4 +108,5 @@
 c
 c
+       IF(id_coss>0) THEN
        DO k=1, klev
        DO i=1,klon
@@ -159,4 +165,9 @@
          sed_ss(i)=sed_flux(i,1)*1.e6*1.e3    !--unit mg/m2/s
        ENDDO          !klon
+       ELSE
+        DO i=1, klon
+          sed_ss(i)=0.
+        ENDDO
+       ENDIF
 c
 c
@@ -165,4 +176,5 @@
 c
 c
+       IF(id_codu>0) THEN
        DO k=1, klev
        DO i=1,klon
@@ -206,8 +218,16 @@
          sed_dust(i)=sed_flux(i,1)*1.e6*1.e3    !--unit mg/m2/s
        ENDDO          !klon
+       ELSE
+        DO i=1, klon
+          sed_dust(i)=0.
+        ENDDO
+       ENDIF
+c
+
 
 c--------- For scoarse  dust ------------------
 c
 c
+       IF(id_scdu>0) THEN
        DO k=1, klev
        DO i=1,klon
@@ -252,4 +272,10 @@
          sed_dustsco(i)=sed_flux(i,1)*1.e6*1.e3    !--unit mg/m2/s
        ENDDO          !klon
+       ELSE
+        DO i=1, klon
+          sed_dustsco(i)=0.
+        ENDDO
+       ENDIF
+c
 
 
Index: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/spla_output_write.h
===================================================================
--- LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/spla_output_write.h	(revision 2195)
+++ LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/spla_output_write.h	(revision 2196)
@@ -1,7 +1,7 @@
 !! Output SPLA
 ! JE20141223
-      CALL histwrite_phy(o_m1dflux,m1dflux)
-      CALL histwrite_phy(o_m2dflux,m2dflux)
-      CALL histwrite_phy(o_m3dflux,m3dflux)
+      IF(ok_chimeredust) CALL histwrite_phy(o_m1dflux,m1dflux)
+      IF(ok_chimeredust) CALL histwrite_phy(o_m2dflux,m2dflux)
+      IF(ok_chimeredust) CALL histwrite_phy(o_m3dflux,m3dflux)
 ! traceur
 
@@ -9,16 +9,16 @@
       CALL histwrite_phy( o_taue670          , diag_aod670_tot   )
       CALL histwrite_phy( o_taue865          , diag_aod865_tot  ) 
-      CALL histwrite_phy( o_taue550_tr2      , diff_aod550_tr2  )
-      CALL histwrite_phy( o_taue670_tr2      , diag_aod670_tr2   )
-      CALL histwrite_phy( o_taue865_tr2      , diag_aod865_tr2  )
-      CALL histwrite_phy( o_taue550_ss       , diag_aod550_ss       )
-      CALL histwrite_phy( o_taue670_ss       , diag_aod670_ss   )
-      CALL histwrite_phy( o_taue865_ss       , diag_aod865_ss    )
-      CALL histwrite_phy( o_taue550_dust     , diag_aod550_dust   )
-      CALL histwrite_phy( o_taue670_dust     , diag_aod670_dust )
-      CALL histwrite_phy( o_taue865_dust     , diag_aod865_dust )
-      CALL histwrite_phy( o_taue550_dustsco  , diag_aod550_dustsco )
-      CALL histwrite_phy( o_taue670_dustsco  , diag_aod670_dustsco )
-      CALL histwrite_phy( o_taue865_dustsco  , diag_aod865_dustsco )
+      IF(id_fine>0) CALL histwrite_phy( o_taue550_tr2      , diff_aod550_tr2  )
+      IF(id_fine>0) CALL histwrite_phy( o_taue670_tr2      , diag_aod670_tr2   )
+      IF(id_fine>0) CALL histwrite_phy( o_taue865_tr2      , diag_aod865_tr2  )
+      IF(id_coss>0) CALL histwrite_phy( o_taue550_ss       , diag_aod550_ss       )
+      IF(id_coss>0) CALL histwrite_phy( o_taue670_ss       , diag_aod670_ss   )
+      IF(id_coss>0) CALL histwrite_phy( o_taue865_ss       , diag_aod865_ss    )
+      IF(id_codu>0) CALL histwrite_phy( o_taue550_dust     , diag_aod550_dust   )
+      IF(id_codu>0) CALL histwrite_phy( o_taue670_dust     , diag_aod670_dust )
+      IF(id_codu>0) CALL histwrite_phy( o_taue865_dust     , diag_aod865_dust )
+      IF(id_scdu>0) CALL histwrite_phy( o_taue550_dustsco  , diag_aod550_dustsco )
+      IF(id_scdu>0) CALL histwrite_phy( o_taue670_dustsco  , diag_aod670_dustsco )
+      IF(id_scdu>0) CALL histwrite_phy( o_taue865_dustsco  , diag_aod865_dustsco )
       CALL histwrite_phy( o_taue550_aqua     , aod550_aqua  )
       CALL histwrite_phy( o_taue550_terra    , aod550_terra    )
@@ -27,88 +27,87 @@
       CALL histwrite_phy( o_taue865_aqua     , aod865_aqua    )
       CALL histwrite_phy( o_taue865_terra    , aod865_terra    )
-      CALL histwrite_phy( o_trm01 , trm01 )
-      CALL histwrite_phy( o_trm02 , trm02 )
-      CALL histwrite_phy( o_trm03 , trm03 )
-      CALL histwrite_phy( o_trm04 , trm04 )
-      CALL histwrite_phy( o_trm05 , trm05 )
-      CALL histwrite_phy( o_sconc01 , sconc01 )
-      CALL histwrite_phy( o_sconc02 , sconc02 )
-      CALL histwrite_phy( o_sconc03 , sconc03 )
-      CALL histwrite_phy( o_sconc04 , sconc04 )
-      CALL histwrite_phy( o_sconc05 , sconc05 )
+      IF(id_prec>0) CALL histwrite_phy( o_trm01 , trm01 )
+      IF(id_fine>0) CALL histwrite_phy( o_trm02 , trm02 )
+      IF(id_coss>0) CALL histwrite_phy( o_trm03 , trm03 )
+      IF(id_codu>0) CALL histwrite_phy( o_trm04 , trm04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_trm05 , trm05 )
+      IF(id_prec>0) CALL histwrite_phy( o_sconc01 , sconc01 )
+      IF(id_fine>0) CALL histwrite_phy( o_sconc02 , sconc02 )
+      IF(id_coss>0) CALL histwrite_phy( o_sconc03 , sconc03 )
+      IF(id_codu>0) CALL histwrite_phy( o_sconc04 , sconc04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_sconc05 , sconc05 )
 
 ! Lessivage
 
-      CALL histwrite_phy( o_flux01       , flux01 )
-      CALL histwrite_phy( o_flux02       , flux02 )
-      CALL histwrite_phy( o_flux03       , flux03 )
-      CALL histwrite_phy( o_flux04       , flux04 )
-      CALL histwrite_phy( o_flux05       , flux05 )
-      CALL histwrite_phy( o_ds01         , ds01 )
-      CALL histwrite_phy( o_ds02         , ds02 )
-      CALL histwrite_phy( o_ds03         , ds03 )
-      CALL histwrite_phy( o_ds04         , ds04 )
-      CALL histwrite_phy( o_ds05         , ds05 )
-      CALL histwrite_phy( o_dh01         , dh01 )
-      CALL histwrite_phy( o_dh02         , dh02 )
-      CALL histwrite_phy( o_dh03         , dh03 )
-      CALL histwrite_phy( o_dh04         , dh04 )
-      CALL histwrite_phy( o_dh05         , dh05 )
-      CALL histwrite_phy( o_dtrconv01    , dtrconv01 )
-      CALL histwrite_phy( o_dtrconv02    , dtrconv02 )
-      CALL histwrite_phy( o_dtrconv03    , dtrconv03 )
-      CALL histwrite_phy( o_dtrconv04    , dtrconv04 )
-      CALL histwrite_phy( o_dtrconv05    , dtrconv05 )
-      CALL histwrite_phy( o_dtherm01     , dtherm01 )
-      CALL histwrite_phy( o_dtherm02     , dtherm02 )
-      CALL histwrite_phy( o_dtherm03     , dtherm03 )
-      CALL histwrite_phy( o_dtherm04     , dtherm04 )
-      CALL histwrite_phy( o_dtherm05     , dtherm05 )
-      CALL histwrite_phy( o_dhkecv01     , dhkecv01 )
-      CALL histwrite_phy( o_dhkecv02     , dhkecv02 )
-      CALL histwrite_phy( o_dhkecv03     , dhkecv03 )
-      CALL histwrite_phy( o_dhkecv04     , dhkecv04 )
-      CALL histwrite_phy( o_dhkecv05     , dhkecv05 )
-      CALL histwrite_phy( o_dhkelsc01    , dhkelsc01 )
-      CALL histwrite_phy( o_dhkelsc02    , dhkelsc02 )
-      CALL histwrite_phy( o_dhkelsc03    , dhkelsc03 )
-      CALL histwrite_phy( o_dhkelsc04    , dhkelsc04 )
-      CALL histwrite_phy( o_dhkelsc05    , dhkelsc05 )
-      CALL histwrite_phy( o_d_tr_cv01    , d_tr_cv01 )
-      CALL histwrite_phy( o_d_tr_cv02    , d_tr_cv02 )
-      CALL histwrite_phy( o_d_tr_cv03    , d_tr_cv03 )
-      CALL histwrite_phy( o_d_tr_cv04    , d_tr_cv04 )
-      CALL histwrite_phy( o_d_tr_cv05    , d_tr_cv05 )
-      CALL histwrite_phy( o_d_tr_trsp01  , d_tr_trsp01 )
-      CALL histwrite_phy( o_d_tr_trsp02  , d_tr_trsp02 )
-      CALL histwrite_phy( o_d_tr_trsp03  , d_tr_trsp03 )
-      CALL histwrite_phy( o_d_tr_trsp04  , d_tr_trsp04 )
-      CALL histwrite_phy( o_d_tr_trsp05  , d_tr_trsp05 )
-      CALL histwrite_phy( o_d_tr_sscav01 , d_tr_sscav01 )
-      CALL histwrite_phy( o_d_tr_sscav02 , d_tr_sscav02 )
-      CALL histwrite_phy( o_d_tr_sscav03 , d_tr_sscav03 )
-      CALL histwrite_phy( o_d_tr_sscav04 , d_tr_sscav04 )
-      CALL histwrite_phy( o_d_tr_sscav05 , d_tr_sscav05 )
-      CALL histwrite_phy( o_d_tr_sat01   , d_tr_sat01 )
-      CALL histwrite_phy( o_d_tr_sat02   , d_tr_sat02 )
-      CALL histwrite_phy( o_d_tr_sat03   , d_tr_sat03 )
-      CALL histwrite_phy( o_d_tr_sat04   , d_tr_sat04 )
-      CALL histwrite_phy( o_d_tr_sat05   , d_tr_sat05 )
-      CALL histwrite_phy( o_d_tr_uscav01 , d_tr_uscav01 )
-      CALL histwrite_phy( o_d_tr_uscav02 , d_tr_uscav02 )
-      CALL histwrite_phy( o_d_tr_uscav03 , d_tr_uscav03 )
-      CALL histwrite_phy( o_d_tr_uscav04 , d_tr_uscav04 )
-      CALL histwrite_phy( o_d_tr_uscav05 , d_tr_uscav05 )
+      IF(id_prec>0) CALL histwrite_phy( o_flux01       , flux01 )
+      IF(id_fine>0) CALL histwrite_phy( o_flux02       , flux02 )
+      IF(id_coss>0) CALL histwrite_phy( o_flux03       , flux03 )
+      IF(id_codu>0) CALL histwrite_phy( o_flux04       , flux04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_flux05       , flux05 )
+      IF(id_prec>0) CALL histwrite_phy( o_ds01         , ds01 )
+      IF(id_fine>0) CALL histwrite_phy( o_ds02         , ds02 )
+      IF(id_coss>0) CALL histwrite_phy( o_ds03         , ds03 )
+      IF(id_codu>0) CALL histwrite_phy( o_ds04         , ds04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_ds05         , ds05 )
+      IF(id_prec>0) CALL histwrite_phy( o_dh01         , dh01 )
+      IF(id_fine>0) CALL histwrite_phy( o_dh02         , dh02 )
+      IF(id_coss>0) CALL histwrite_phy( o_dh03         , dh03 )
+      IF(id_codu>0) CALL histwrite_phy( o_dh04         , dh04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_dh05         , dh05 )
+      IF(id_prec>0) CALL histwrite_phy( o_dtrconv01    , dtrconv01 )
+      IF(id_fine>0) CALL histwrite_phy( o_dtrconv02    , dtrconv02 )
+      IF(id_coss>0) CALL histwrite_phy( o_dtrconv03    , dtrconv03 )
+      IF(id_codu>0) CALL histwrite_phy( o_dtrconv04    , dtrconv04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_dtrconv05    , dtrconv05 )
+      IF(id_prec>0) CALL histwrite_phy( o_dtherm01     , dtherm01 )
+      IF(id_fine>0) CALL histwrite_phy( o_dtherm02     , dtherm02 )
+      IF(id_coss>0) CALL histwrite_phy( o_dtherm03     , dtherm03 )
+      IF(id_codu>0) CALL histwrite_phy( o_dtherm04     , dtherm04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_dtherm05     , dtherm05 )
+      IF(id_prec>0) CALL histwrite_phy( o_dhkecv01     , dhkecv01 )
+      IF(id_fine>0) CALL histwrite_phy( o_dhkecv02     , dhkecv02 )
+      IF(id_coss>0) CALL histwrite_phy( o_dhkecv03     , dhkecv03 )
+      IF(id_codu>0) CALL histwrite_phy( o_dhkecv04     , dhkecv04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_dhkecv05     , dhkecv05 )
+      IF(id_prec>0) CALL histwrite_phy( o_dhkelsc01    , dhkelsc01 )
+      IF(id_fine>0) CALL histwrite_phy( o_dhkelsc02    , dhkelsc02 )
+      IF(id_coss>0) CALL histwrite_phy( o_dhkelsc03    , dhkelsc03 )
+      IF(id_codu>0) CALL histwrite_phy( o_dhkelsc04    , dhkelsc04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_dhkelsc05    , dhkelsc05 )
+      IF(id_prec>0) CALL histwrite_phy( o_d_tr_cv01    , d_tr_cv01 )
+      IF(id_fine>0) CALL histwrite_phy( o_d_tr_cv02    , d_tr_cv02 )
+      IF(id_coss>0) CALL histwrite_phy( o_d_tr_cv03    , d_tr_cv03 )
+      IF(id_codu>0) CALL histwrite_phy( o_d_tr_cv04    , d_tr_cv04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_d_tr_cv05    , d_tr_cv05 )
+      IF(id_prec>0) CALL histwrite_phy( o_d_tr_trsp01  , d_tr_trsp01 )
+      IF(id_fine>0) CALL histwrite_phy( o_d_tr_trsp02  , d_tr_trsp02 )
+      IF(id_coss>0) CALL histwrite_phy( o_d_tr_trsp03  , d_tr_trsp03 )
+      IF(id_codu>0) CALL histwrite_phy( o_d_tr_trsp04  , d_tr_trsp04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_d_tr_trsp05  , d_tr_trsp05 )
+      IF(id_prec>0) CALL histwrite_phy( o_d_tr_sscav01 , d_tr_sscav01 )
+      IF(id_fine>0) CALL histwrite_phy( o_d_tr_sscav02 , d_tr_sscav02 )
+      IF(id_coss>0) CALL histwrite_phy( o_d_tr_sscav03 , d_tr_sscav03 )
+      IF(id_codu>0) CALL histwrite_phy( o_d_tr_sscav04 , d_tr_sscav04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_d_tr_sscav05 , d_tr_sscav05 )
+      IF(id_prec>0) CALL histwrite_phy( o_d_tr_sat01   , d_tr_sat01 )
+      IF(id_fine>0) CALL histwrite_phy( o_d_tr_sat02   , d_tr_sat02 )
+      IF(id_coss>0) CALL histwrite_phy( o_d_tr_sat03   , d_tr_sat03 )
+      IF(id_codu>0) CALL histwrite_phy( o_d_tr_sat04   , d_tr_sat04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_d_tr_sat05   , d_tr_sat05 )
+      IF(id_prec>0) CALL histwrite_phy( o_d_tr_uscav01 , d_tr_uscav01 )
+      IF(id_fine>0) CALL histwrite_phy( o_d_tr_uscav02 , d_tr_uscav02 )
+      IF(id_coss>0) CALL histwrite_phy( o_d_tr_uscav03 , d_tr_uscav03 )
+      IF(id_codu>0) CALL histwrite_phy( o_d_tr_uscav04 , d_tr_uscav04 )
+      IF(id_scdu>0) CALL histwrite_phy( o_d_tr_uscav05 , d_tr_uscav05 )
 
 
-      CALL histwrite_phy( o_sed_ss , sed_ss)
-      CALL histwrite_phy( o_sed_dust , sed_dust)
-      CALL histwrite_phy( o_sed_dustsco , sed_dustsco)
-      CALL histwrite_phy( o_g2p_gas , his_g2pgas )
-      CALL histwrite_phy( o_g2p_aer , his_g2paer)
+      IF(id_coss>0) CALL histwrite_phy( o_sed_ss , sed_ss)
+      IF(id_codu>0) CALL histwrite_phy( o_sed_dust , sed_dust)
+      IF(id_scdu>0) CALL histwrite_phy( o_sed_dustsco , sed_dustsco)
+      IF(id_prec>0) CALL histwrite_phy( o_g2p_gas , his_g2pgas )
+      IF(id_fine>0) CALL histwrite_phy( o_g2p_aer , his_g2paer)
 
 ! histrac_spl
 !
-
       CALL histwrite_phy( o_fluxbb              , fluxbb               )
       CALL histwrite_phy( o_fluxff              , fluxff               )
@@ -140,8 +139,8 @@
       CALL histwrite_phy( o_fluxh2sbio          , fluxh2sbio           )
       CALL histwrite_phy( o_fluxdustec          , fluxdustec           )
-     CALL histwrite_phy( o_fluxddfine          , fluxddfine           )
-     CALL histwrite_phy( o_fluxddcoa           , fluxddcoa            )
-     CALL histwrite_phy( o_fluxddsco           , fluxddsco            )
-     CALL histwrite_phy( o_fluxdd              , fluxdd               )
+      CALL histwrite_phy( o_fluxddfine          , fluxddfine           )
+      CALL histwrite_phy( o_fluxddcoa           , fluxddcoa            )
+      CALL histwrite_phy( o_fluxddsco           , fluxddsco            )
+      CALL histwrite_phy( o_fluxdd              , fluxdd               )
       CALL histwrite_phy( o_fluxssfine          , fluxssfine           )
       CALL histwrite_phy( o_fluxsscoa           , fluxsscoa            )
@@ -158,5 +157,4 @@
       CALL histwrite_phy( o_v10m_ss             , v10m_ss              )
 
-
 !      CALL histwrite_phy(  ,)
 !
