Index: /LMDZ5/trunk/DefLists/config.def_LMDZ5_AGCM
===================================================================
--- /LMDZ5/trunk/DefLists/config.def_LMDZ5_AGCM	(revision 1763)
+++ /LMDZ5/trunk/DefLists/config.def_LMDZ5_AGCM	(revision 1764)
@@ -83,4 +83,6 @@
 ###  If aerosol offline : type of coupled aerosol =0 (pas d aerosol) =1 (sulphate only default) =2 => bc  only =3 => pom only =4 => seasalt only =5 => dust only =6 => all aerosol 
 flag_aerosol=6 
+# Use stratospheric aerosols (default no)
+flag_aerosol_strat=n
 ### bl95_b0 =    Parameter in CDNC-maer link (Boucher&Lohmann 1995)
 bl95_b0=1.7
Index: /LMDZ5/trunk/libf/phylmd/aero_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/aero_mod.F90	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/aero_mod.F90	(revision 1764)
@@ -5,5 +5,7 @@
 
   ! Total number of aerosols
-  INTEGER, PARAMETER :: naero_tot = 10 
+!  INTEGER, PARAMETER :: naero_tot = 10 
+!--STRAT AER
+  INTEGER, PARAMETER :: naero_tot = 11
 
   ! Identification number used in aeropt_2bands and aeropt_5wv
@@ -19,4 +21,7 @@
   INTEGER, PARAMETER :: id_AIBCM    = 9
   INTEGER, PARAMETER :: id_AIPOMM   = 10
+!--STRAT AER
+  INTEGER, PARAMETER :: id_strat   = 11
+
 
   ! Total number of aerosols actually used in LMDZ 
@@ -31,5 +36,8 @@
   ! 9 =  AIBCM
   !10 =  AIPOMM
-  INTEGER, PARAMETER :: naero_spc = 10
+!--STRAT AER
+  !11 = aerosols stratos
+!  INTEGER, PARAMETER :: naero_spc = 10
+  INTEGER, PARAMETER :: naero_spc = 11
 
   ! Corresponding names for the aerosols
@@ -44,5 +52,7 @@
        "CIDUSTM", &
        "AIBCM  ", &
-       "AIPOMM " /)
+!       "AIPOMM " /)
+       "AIPOMM ", &
+       "STRAT  " /)
 
 
@@ -65,4 +75,3 @@
   INTEGER, parameter :: nbands = 2
 
-
 END MODULE aero_mod
Index: /LMDZ5/trunk/libf/phylmd/conf_phys_m.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/conf_phys_m.F90	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/conf_phys_m.F90	(revision 1764)
@@ -18,5 +18,5 @@
                        iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
   		       ok_ade, ok_aie, ok_cdnc, aerosol_couple, &
-                       flag_aerosol, new_aod, &
+                       flag_aerosol, flag_aerosol_strat, new_aod, &
                        bl95_b0, bl95_b1,&
                        read_climoz, &
@@ -60,4 +60,5 @@
 ! ok_ade, ok_aie: apply or not aerosol direct and indirect effects
 ! ok_cdnc, ok cloud droplet number concentration
+! flag_aerosol_strat : flag pour les aerosols stratos
 ! bl95_b*: parameters in the formula to link CDNC to aerosol mass conc 
 !
@@ -72,4 +73,5 @@
   LOGICAL              :: ok_ade, ok_aie, ok_cdnc, aerosol_couple
   INTEGER              :: flag_aerosol
+  LOGICAL              :: flag_aerosol_strat
   LOGICAL              :: new_aod
   REAL                 :: bl95_b0, bl95_b1
@@ -87,4 +89,5 @@
   LOGICAL,SAVE        :: ok_ade_omp, ok_aie_omp, ok_cdnc_omp, aerosol_couple_omp
   INTEGER, SAVE       :: flag_aerosol_omp
+  INTEGER, SAVE       :: flag_aerosol_strat_omp
   LOGICAL, SAVE       :: new_aod_omp
   REAL,SAVE           :: bl95_b0_omp, bl95_b1_omp
@@ -307,4 +310,13 @@
   flag_aerosol_omp = 0
   CALL getin('flag_aerosol',flag_aerosol_omp)
+!
+!Config Key  = flag_aerosol_strat
+!Config Desc = use stratospheric aerosols T/F
+!Config Def  = false
+!Config Help = Used in physiq.F
+!
+!
+  flag_aerosol_strat_omp = .false.
+  CALL getin('flag_aerosol_strat',flag_aerosol_strat_omp)
 
 ! Temporary variable for testing purpose!!
@@ -1717,4 +1729,5 @@
     aerosol_couple = aerosol_couple_omp
     flag_aerosol=flag_aerosol_omp
+    flag_aerosol_strat=flag_aerosol_strat_omp
     new_aod=new_aod_omp
     aer_type = aer_type_omp
@@ -1901,4 +1914,5 @@
   write(lunout,*)' aerosol_couple = ', aerosol_couple
   write(lunout,*)' flag_aerosol = ', flag_aerosol
+  write(lunout,*)' flag_aerosol_strat = ', flag_aerosol_strat
   write(lunout,*)' new_aod = ', new_aod
   write(lunout,*)' aer_type = ',aer_type
Index: /LMDZ5/trunk/libf/phylmd/etat0_netcdf.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/etat0_netcdf.F90	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/etat0_netcdf.F90	(revision 1764)
@@ -101,4 +101,5 @@
   LOGICAL :: ok_LES, ok_ade, ok_aie, ok_cdnc, aerosol_couple, new_aod, callstats
   INTEGER :: iflag_radia, flag_aerosol
+  LOGICAL :: flag_aerosol_strat
   REAL    :: bl95_b0, bl95_b1, fact_cldcon, facttemps, ratqsbas, ratqshaut
   REAL    :: tau_ratqs
@@ -137,5 +138,5 @@
                    iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,            &
                    ok_ade, ok_aie, ok_cdnc, aerosol_couple,             &
-                   flag_aerosol, new_aod,                               &
+                   flag_aerosol, flag_aerosol_strat, new_aod,           &
                    bl95_b0, bl95_b1,                                    &
                    read_climoz,                                         &
Index: /LMDZ5/trunk/libf/phylmd/phys_output_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/phys_output_mod.F90	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/phys_output_mod.F90	(revision 1764)
@@ -410,5 +410,7 @@
   type(ctrl_out),save :: o_solswai      = ctrl_out((/ 2, 10, 10, 10, 10, 10 /),'solswai')
 
-  type(ctrl_out),save,dimension(10) :: o_tausumaero  = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM'), &
+!  type(ctrl_out),save,dimension(10) :: o_tausumaero  = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM'), &
+  type(ctrl_out),save,dimension(11) :: o_tausumaero  = & 
+    (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM'), &
        ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASPOMM'), &
        ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASSO4M'), &
@@ -419,5 +421,6 @@
        ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CIDUSTM'), &
        ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIBCM'), &
-       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIPOMM') /)
+       ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIPOMM'), &
+       ctrl_out((/ 2, 2, 10, 10, 10, 10 /),'OD550_STRAT') /)
 
   type(ctrl_out),save :: o_od550aer     = ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'od550aer')
@@ -579,4 +582,5 @@
   type(ctrl_out),save :: o_e_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'e_th')
   type(ctrl_out),save :: o_w_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'w_th')
+  type(ctrl_out),save :: o_lambda_th    = ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'lambda_th')
   type(ctrl_out),save :: o_ftime_th     = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'ftime_th')
   type(ctrl_out),save :: o_q_th         = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'q_th')
@@ -663,5 +667,5 @@
        ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, read_climoz, &
        phys_out_filestations, &
-       new_aod, aerosol_couple)   
+       new_aod, aerosol_couple, flag_aerosol_strat)   
 
     USE iophy 
@@ -693,5 +697,5 @@
     integer                               :: nbteta, nlevSTD, radpas
     logical                               :: ok_mensuel, ok_journe, ok_hf, ok_instan
-    logical                               :: ok_LES,ok_ade,ok_aie
+    logical                               :: ok_LES,ok_ade,ok_aie,flag_aerosol_strat
     logical                               :: new_aod, aerosol_couple
     integer, intent(in)::  read_climoz ! read ozone climatology
@@ -1165,5 +1169,7 @@
                 CALL histdef2d(iff,clef_stations(iff), &
                      o_loaddust%flag,o_loaddust%name,"Column Load of Dust ","kg/m2")
-
+!--STRAT AER
+             ENDIF
+             IF (ok_ade.OR.ok_aie.OR.flag_aerosol_strat) THEN
                 DO naero = 1, naero_spc
                    CALL histdef2d(iff,clef_stations(iff), &
@@ -1650,4 +1656,6 @@
              CALL histdef3d(iff,clef_stations(iff),o_e_th%flag,o_e_th%name,"Thermal plume entrainment","K/s")
              CALL histdef3d(iff,clef_stations(iff),o_w_th%flag,o_w_th%name,"Thermal plume vertical velocity","m/s")
+             CALL histdef3d(iff,clef_stations(iff), &
+                  o_lambda_th%flag,o_lambda_th%name,"Thermal plume vertical velocity","m/s")
              CALL histdef2d(iff,clef_stations(iff), &
                   o_ftime_th%flag,o_ftime_th%name,"Fraction of time Shallow convection occurs"," ")
Index: /LMDZ5/trunk/libf/phylmd/phys_output_write.h
===================================================================
--- /LMDZ5/trunk/libf/phylmd/phys_output_write.h	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/phys_output_write.h	(revision 1764)
@@ -1305,4 +1305,7 @@
           ENDIF
           
+c--STRAT AER
+          endif
+          IF (ok_ade.OR.ok_aie.OR.flag_aerosol_strat) THEN
           DO naero = 1, naero_spc
             IF (o_tausumaero(naero)%flag(iff)<=lev_files(iff)) THEN
Index: /LMDZ5/trunk/libf/phylmd/physiq.F
===================================================================
--- /LMDZ5/trunk/libf/phylmd/physiq.F	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/physiq.F	(revision 1764)
@@ -1120,5 +1120,9 @@
       LOGICAL, SAVE :: new_aod
 c$OMP THREADPRIVATE(new_aod) 
-   
+c
+c--STRAT AEROSOL
+      LOGICAL, SAVE :: flag_aerosol_strat
+c$OMP THREADPRIVATE(flag_aerosol_strat)
+cc-fin STRAT AEROSOL
 c
 c Declaration des constantes et des fonctions thermodynamiques
@@ -1270,5 +1274,5 @@
      .     iflag_cldcon,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,
      .     ok_ade, ok_aie, ok_cdnc, aerosol_couple, 
-     .     flag_aerosol, new_aod,
+     .     flag_aerosol, flag_aerosol_strat, new_aod,
      .     bl95_b0, bl95_b1,
 c     nv flags pour la convection et les poches froides
@@ -1595,6 +1599,6 @@
      &                       ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, 
      &                       read_climoz, phys_out_filestations,
-     &                       new_aod, aerosol_couple
-     &                        )
+     &                       new_aod, aerosol_couple,
+     &                       flag_aerosol_strat )
 c$OMP END MASTER
 c$OMP BARRIER
@@ -2972,4 +2976,12 @@
          cg_aero(:,:,:,:)  = 0.
       ENDIF
+c
+c--STRAT AEROSOL
+c--updates tausum_aero,tau_aero,piz_aero,cg_aero
+      IF (flag_aerosol_strat) THEN
+         PRINT *,'appel a readaerosolstrat', mth_cur
+         CALL readaerosolstrato(debut)
+      ENDIF
+c--fin STRAT AEROSOL
 
 cIM calcul nuages par le simulateur ISCCP
@@ -3359,5 +3371,6 @@
      e        t_seri,q_seri,wo,
      e        cldfrarad, cldemirad, cldtaurad,
-     e        ok_ade, ok_aie, flag_aerosol,
+     e        ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol,
+     e        flag_aerosol_strat,
      e        tau_aero, piz_aero, cg_aero,
      e        cldtaupirad,new_aod,
@@ -3401,5 +3414,6 @@
      e        t_seri,q_seri,wo,
      e        cldfra, cldemi, cldtau,
-     e        ok_ade, ok_aie, flag_aerosol,
+     e        ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol,
+     e        flag_aerosol_strat,
      e        tau_aero, piz_aero, cg_aero,
      e        cldtaupi,new_aod,
Index: /LMDZ5/trunk/libf/phylmd/radlwsw_m.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/radlwsw_m.F90	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/radlwsw_m.F90	(revision 1764)
@@ -11,4 +11,5 @@
    cldfra, cldemi, cldtaupd,&
    ok_ade, ok_aie, flag_aerosol,&
+   flag_aerosol_strat,&
    tau_aero, piz_aero, cg_aero,&
    cldtaupi, new_aod, &
@@ -57,4 +58,5 @@
   ! ok_aie---input-L- apply the Aerosol Indirect Effect or not?
   ! flag_aerosol-input-I- aerosol flag from 0 to 6
+  ! flag_aerosol_strat-input-I- use stratospheric aerosols flag (T/F)
   ! tau_ae, piz_ae, cg_ae-input-R- aerosol optical properties (calculated in aeropt.F)
   ! cldtaupi-input-R- epaisseur optique des nuages dans le visible
@@ -121,4 +123,5 @@
   LOGICAL, INTENT(in)  :: ok_ade, ok_aie                                 ! switches whether to use aerosol direct (indirect) effects or not
   INTEGER, INTENT(in)  :: flag_aerosol                                   ! takes value 0 (no aerosol) or 1 to 6 (aerosols)
+  LOGICAL, INTENT(in)  :: flag_aerosol_strat                             ! use stratospheric aerosols
   REAL,    INTENT(in)  :: cldfra(KLON,KLEV), cldemi(KLON,KLEV), cldtaupd(KLON,KLEV)
   REAL,    INTENT(in)  :: tau_aero(KLON,KLEV,9,2)                        ! aerosol optical properties (see aeropt.F)
@@ -360,5 +363,5 @@
                ztopswadaero,zsolswadaero,&
                ztopswaiaero,zsolswaiaero,& 
-               ok_ade, ok_aie, flag_aerosol) 
+               ok_ade, ok_aie) 
           
        ELSE ! new_aod=T         
@@ -379,5 +382,5 @@
                zsolsw_aero,zsolsw0_aero,&
                ztopswcf_aero,zsolswcf_aero, & 
-               ok_ade, ok_aie, flag_aerosol) 
+               ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat) 
        ENDIF
 
Index: /LMDZ5/trunk/libf/phylmd/readaerosolstrato.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/readaerosolstrato.F90	(revision 1764)
+++ /LMDZ5/trunk/libf/phylmd/readaerosolstrato.F90	(revision 1764)
@@ -0,0 +1,172 @@
+subroutine readaerosolstrato(debut)
+
+    use netcdf95, only: nf95_close, nf95_gw_var, nf95_inq_dimid, & 
+                        nf95_inq_varid, nf95_open
+    use netcdf, only: nf90_get_var, nf90_noerr, nf90_nowrite
+
+    USE phys_cal_mod, ONLY : mth_cur
+    USE mod_grid_phy_lmdz
+    USE mod_phys_lmdz_mpi_data, ONLY :  is_mpi_root
+    USE mod_phys_lmdz_para 
+    USE phys_state_var_mod
+    USE phys_local_var_mod
+    USE aero_mod
+    USE dimphy
+
+    implicit none
+
+    include "YOMCST.h"
+    include "dimensions.h"
+
+! Variable input
+    logical debut
+
+! Variables locales
+    integer n_lat   ! number of latitudes in the input data
+    integer n_lon   ! number of longitudes in the input data
+    integer n_lev   ! number of levels in the input data
+    integer n_month ! number of months in the input data
+    real, pointer:: latitude(:)
+    real, pointer:: longitude(:)
+    real, pointer:: time(:)
+    real, pointer:: lev(:)
+    integer i, k, band, wave
+    integer, save :: mth_pre
+
+    real, allocatable, dimension(:,:), save :: tau_aer_strat
+!$OMP THREADPRIVATE(tau_aer_strat)
+
+! Champs reconstitues
+    real, allocatable:: tauaerstrat(:, :, :, :)
+    real, allocatable:: tauaerstrat_mois(:, :, :)
+    real, allocatable:: tauaerstrat_mois_glo(:, :)
+    real, allocatable:: tauaerstrat_mois_glo_bands(:,:,:)
+
+! For NetCDF:
+    integer ncid_in  ! IDs for input files
+    integer varid, ncerr
+
+! 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) :: alpha_strat, piz_strat, cg_strat
+    data alpha_strat/0.9922547, 0.7114912 /
+    data piz_strat  /0.9999998, 0.99762493/
+    data cg_strat   /0.73107845,0.73229635/
+    real, dimension(nwave) :: alpha_strat_wave
+    data alpha_strat_wave/3.36780953,3.34667683,3.20444202,3.0293026,2.82108808/
+
+!--------------------------------------------------------
+
+    IF (.not.ALLOCATED(tau_aer_strat)) ALLOCATE(tau_aer_strat(klon,klev))
+
+    IF (is_mpi_root) THEN
+
+    IF (debut.OR.mth_cur.NE.mth_pre) THEN
+
+    IF (nbands.NE.2) THEN 
+        print *,'nbands doit etre egal a 2 dans readaerosolstrat'
+        STOP
+    ENDIF
+
+    CALL nf95_open("taustrat.nc", nf90_nowrite, ncid_in)
+
+    CALL nf95_inq_varid(ncid_in, "LEV", varid)
+    CALL nf95_gw_var(ncid_in, varid, lev)
+    n_lev = size(lev)
+    IF (n_lev.NE.klev) THEN 
+       print *,'Le nombre de niveaux n est pas egal a klev'
+       STOP
+    ENDIF
+
+    CALL nf95_inq_varid(ncid_in, "LAT", varid)
+    CALL nf95_gw_var(ncid_in, varid, latitude)
+    n_lat = size(latitude)
+    print *, 'LAT aerosol strato=', n_lat, latitude
+    IF (n_lat.NE.jjm+1) THEN 
+       print *,'Le nombre de lat n est pas egal a jjm+1'
+       STOP
+    ENDIF
+
+    CALL nf95_inq_varid(ncid_in, "LON", varid)
+    CALL nf95_gw_var(ncid_in, varid, longitude)
+    n_lon = size(longitude)
+    print *, 'LON aerosol strato=', n_lon, longitude
+    IF (n_lon.NE.iim) THEN 
+       print *,'Le nombre de lon n est pas egal a iim'
+       STOP
+    ENDIF
+
+    CALL nf95_inq_varid(ncid_in, "time", varid)
+    CALL nf95_gw_var(ncid_in, varid, time)
+    n_month = size(time)
+    print *, 'TIME aerosol strato=', n_month, time
+    IF (n_month.NE.12) THEN 
+       print *,'Le nombre de month n est pas egal a 12'
+       STOP
+    ENDIF
+
+    ALLOCATE(tauaerstrat(n_lon, n_lat, n_lev, n_month))
+    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))
+
+!--reading stratospheric AOD at 550 nm
+    CALL nf95_inq_varid(ncid_in, "TAUSTRAT", varid)
+    ncerr = nf90_get_var(ncid_in, varid, tauaerstrat)
+    print *,'code erreur readaerosolstrato=', ncerr, varid
+
+    CALL nf95_close(ncid_in)
+
+!---select the correct month
+    IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN
+      print *,'probleme avec le mois dans readaerosolstrat =', mth_cur
+    ENDIF
+    tauaerstrat_mois(:,:,:) = tauaerstrat(:,:,:,mth_cur)
+
+!---reduce to a klon_glo grid 
+    CALL grid2dTo1d_glo(tauaerstrat_mois,tauaerstrat_mois_glo)
+
+!--scatter on all proc
+    CALL scatter(tauaerstrat_mois_glo,tau_aer_strat)
+
+    DEALLOCATE(tauaerstrat)
+    DEALLOCATE(tauaerstrat_mois)
+    DEALLOCATE(tauaerstrat_mois_glo)
+  
+    mth_pre=mth_cur
+
+    ENDIF !--debut ou nouveau mois
+
+    ENDIF !--is_mpi_root
+
+!--total vertical aod at the 5 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)
+    ENDDO
+    ENDDO
+
+!--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones
+    DO band=1, nbands
+!--anthropogenic aerosols bands 1 and 2
+    cg_aero(:,:,3,band)  = ( cg_aero(:,:,3,band)*piz_aero(:,:,3,band)*tau_aero(:,:,3,band) +          &
+                             cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /  &
+                             MAX( piz_aero(:,:,3,band)*tau_aero(:,:,3,band) +                         &
+                                  piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
+    piz_aero(:,:,3,band)  = ( piz_aero(:,:,3,band)*tau_aero(:,:,3,band) +                             &
+                              piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /                &
+                              MAX( tau_aero(:,:,3,band) + alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
+    tau_aero(:,:,3,band)  = tau_aero(:,:,3,band) + alpha_strat(band)*tau_aer_strat(:,:)
+!--natural aerosols bands 1 and 2
+    cg_aero(:,:,2,band)  = ( cg_aero(:,:,2,band)*piz_aero(:,:,2,band)*tau_aero(:,:,2,band) +          &
+                             cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /  &
+                             MAX( piz_aero(:,:,2,band)*tau_aero(:,:,2,band) +                         &
+                                  piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 )
+    piz_aero(:,:,2,band)  = ( piz_aero(:,:,2,band)*tau_aero(:,:,2,band) +                             & 
+                              piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) /                &
+                              MAX( tau_aero(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:),1.e-15 )
+    tau_aero(:,:,2,band)  = tau_aero(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:)
+    ENDDO
+
+end subroutine readaerosolstrato
Index: /LMDZ5/trunk/libf/phylmd/sw_aeroAR4.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/sw_aeroAR4.F90	(revision 1763)
+++ /LMDZ5/trunk/libf/phylmd/sw_aeroAR4.F90	(revision 1764)
@@ -18,5 +18,5 @@
      PSOLSWAERO,PSOLSW0AERO,&
      PTOPSWCFAERO,PSOLSWCFAERO,&
-     ok_ade, ok_aie, flag_aerosol )
+     ok_ade, ok_aie, flag_aerosol, flag_aerosol_strat )
 
   USE dimphy
@@ -138,4 +138,5 @@
 
   LOGICAL ok_ade, ok_aie    ! use aerosol forcings or not?
+  LOGICAL flag_aerosol_strat ! use stratospehric aerosols
   INTEGER flag_aerosol      ! global flag for aerosol 0 (no aerosol) or 1-5 (aerosols)
   REAL(KIND=8) tauaero(kdlon,kflev,9,2)  ! aerosol optical properties
@@ -307,5 +308,5 @@
      ENDIF ! swaero_diag .or. .not. AEROSOLFEEDBACK_ACTIVE
 
-     IF (flag_aerosol .GT. 0 ) THEN
+     IF (flag_aerosol .GT. 0 .OR. flag_aerosol_strat) THEN
 
      IF (ok_ade.and.swaero_diag .or. .not. ok_ade) THEN
@@ -498,5 +499,5 @@
      ENDIF ! ok_aie      
 
-     ENDIF !--if flag_aerosol GT 0
+     ENDIF !--if flag_aerosol GT 0 OR flag_aerosol_strat
 
      itapsw = 0
@@ -504,5 +505,5 @@
   itapsw = itapsw + 1
 
-  IF  ( AEROSOLFEEDBACK_ACTIVE .AND. flag_aerosol .GT. 0 ) THEN
+  IF  ( AEROSOLFEEDBACK_ACTIVE .AND. (flag_aerosol .GT. 0 .OR. flag_aerosol_strat) ) THEN
   IF ( ok_ade .and. ok_aie  ) THEN
     ZFSUP(:,:) =    ZFSUP_AERO(:,:,4)
