Index: LMDZ6/trunk/libf/phylmd/StratAer/interp_sulf_input.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/StratAer/interp_sulf_input.F90	(revision 4623)
+++ LMDZ6/trunk/libf/phylmd/StratAer/interp_sulf_input.F90	(revision 4625)
@@ -43,14 +43,14 @@
   REAL paprs_glo(klon_glo,klev+1)
 
-  REAL, POINTER:: latitude(:)
+  REAL, ALLOCATABLE :: latitude(:)
 ! (of input data sorted in strictly ascending order)
 
-  REAL, POINTER:: longitude(:)
+  REAL, ALLOCATABLE :: longitude(:)
 ! (of input data sorted in strictly ascending order)
 
-  REAL, POINTER:: time(:)
+  REAL, ALLOCATABLE :: time(:)
 ! (of input data sorted in strictly ascending order)
 
-  REAL, POINTER:: lev(:)
+  REAL, ALLOCATABLE :: lev(:)
 ! levels of input data
 
Index: LMDZ6/trunk/libf/phylmd/StratAer/strataer_emiss_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/StratAer/strataer_emiss_mod.F90	(revision 4623)
+++ LMDZ6/trunk/libf/phylmd/StratAer/strataer_emiss_mod.F90	(revision 4625)
@@ -99,4 +99,10 @@
        CALL getin_p('xlat_sai',xlat_sai)
        CALL getin_p('xlon_sai',xlon_sai)
+       CALL getin_p('year_emit_sai_start',year_emit_sai_start)
+       CALL getin_p('year_emit_sai_end',year_emit_sai_end)
+       CALL getin_p('mth_emit_sai_start',mth_emit_sai_start)
+       CALL getin_p('mth_emit_sai_end',mth_emit_sai_end)
+       CALL getin_p('day_emit_sai_start',day_emit_sai_start)
+       CALL getin_p('day_emit_sai_end',day_emit_sai_end)
        
     ELSEIF (flag_emit == 3) THEN ! SAI between latitudes
@@ -169,4 +175,7 @@
           WRITE(lunout,*) 'IN STRATAER : altemiss_sai',altemiss_sai
           WRITE(lunout,*) 'IN STRATAER : sigma_alt_sai',sigma_alt_sai
+          WRITE(lunout,*) 'IN STRATAER : year_emit_sai start/end',year_emit_sai_start,year_emit_sai_end
+          WRITE(lunout,*) 'IN STRATAER : mth_emit_sai start/end',mth_emit_sai_start,mth_emit_sai_end
+          WRITE(lunout,*) 'IN STRATAER : day_emit_sai start/end',day_emit_sai_start,day_emit_sai_end
           WRITE(lunout,*) 'IN STRATAER : xlat_min_sai',xlat_min_sai
           WRITE(lunout,*) 'IN STRATAER : xlat_max_sai',xlat_max_sai
Index: LMDZ6/trunk/libf/phylmd/StratAer/strataer_local_var_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/StratAer/strataer_local_var_mod.F90	(revision 4623)
+++ LMDZ6/trunk/libf/phylmd/StratAer/strataer_local_var_mod.F90	(revision 4625)
@@ -99,4 +99,13 @@
   REAL,SAVE    :: sigma_alt_sai          ! standard deviation of emission altitude in m
   !$OMP THREADPRIVATE(m_aer_emiss_sai, altemiss_sai, sigma_alt_sai)
+  INTEGER,SAVE    :: year_emit_sai_start
+  INTEGER,SAVE    :: year_emit_sai_end
+  INTEGER,SAVE    :: mth_emit_sai_start
+  INTEGER,SAVE    :: mth_emit_sai_end
+  INTEGER,SAVE    :: day_emit_sai_start
+  INTEGER,SAVE    :: day_emit_sai_end
+  !$OMP THREADPRIVATE(year_emit_sai_start, year_emit_sai_end)
+  !$OMP THREADPRIVATE(mth_emit_sai_start, mth_emit_sai_end)
+  !$OMP THREADPRIVATE(day_emit_sai_start, day_emit_sai_end)
   REAL,SAVE    :: xlat_sai               ! latitude of SAI in degree
   REAL,SAVE    :: xlon_sai               ! longitude of SAI in degree
Index: LMDZ6/trunk/libf/phylmd/lsc_scav.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/lsc_scav.F90	(revision 4623)
+++ LMDZ6/trunk/libf/phylmd/lsc_scav.F90	(revision 4625)
@@ -99,4 +99,5 @@
 !     Droplet size shrinks by evap
       frac_aer=0.5
+      debut=.FALSE.
 !
       OPEN(99,file='lsc_scav_param.data',status='old', &
Index: LMDZ6/trunk/libf/phylmd/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4623)
+++ LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4625)
@@ -1232,5 +1232,5 @@
 
     REAL pi
-
+    INTEGER ieru
 
     !======================================================================!
@@ -1545,4 +1545,5 @@
        piz_aero(:,:,:,:) = 1.
        cg_aero(:,:,:,:)  = 0.
+       d_q_ch4(:,:) = 0.
 
        IF (aerosol_couple .AND. (config_inca /= "aero" &
@@ -4846,5 +4847,7 @@
     !DC Calcul de la tendance due au methane
     IF (ok_qch4) THEN
-       CALL METHOX(1,klon,klon,klev,q_seri,d_q_ch4,pplay)
+       CALL stratH2O_methox(debut,paprs,d_q_ch4)
+!      d_q_ch4: H2O source in ppmv/sec - ecmwf routine METHOX
+!       CALL METHOX(1,klon,klon,klev,q_seri,d_q_ch4,pplay)
        ! ajout de la tendance d'humidite due au methane
        d_q_ch4_dtime(:,:) = d_q_ch4(:,:)*phys_tstep
Index: LMDZ6/trunk/libf/phylmd/stratH2O_methox.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/stratH2O_methox.F90	(revision 4625)
+++ LMDZ6/trunk/libf/phylmd/stratH2O_methox.F90	(revision 4625)
@@ -0,0 +1,162 @@
+!
+! $Id: stratH2O_methox.F90 3677 2020-05-06 15:18:32Z oboucher $
+!
+SUBROUTINE stratH2O_methox(debutphy,paprs,dq_ch4mmr)
+!
+! output: CH4VMR in mmr (mass mixing ratio/sec: kg H2O/kg air)
+
+  USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 
+                      nf95_inq_varid, nf95_inquire_dimension, nf95_open
+  USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite
+
+  USE mod_grid_phy_lmdz
+  USE mod_phys_lmdz_mpi_data, ONLY :  is_mpi_root
+  USE mod_phys_lmdz_omp_data, ONLY :  is_omp_root
+
+  USE mod_phys_lmdz_para 
+  USE dimphy
+  USE phys_cal_mod, ONLY : mth_cur
+  USE infotrac_phy
+  USE aerophys
+  USE YOMCST
+  USE strataer_local_var_mod, ONLY : flag_newclim_file
+  
+  IMPLICIT NONE
+  
+  include "dimensions.h"
+  
+! Variable input
+  REAL paprs(klon,klev+1)
+  LOGICAL, INTENT(IN) :: debutphy   ! le flag de l'initialisation de la physique
+! Variable output
+! tendance buffer pour appel de add_phys_tend
+  REAL, INTENT(INOUT), DIMENSION(klon,klev)  :: dq_ch4mmr
+  
+! Variables locales
+  INTEGER n_lat   ! number of latitudes in the input data
+  INTEGER n_lon   ! number of longitudes in the input data
+  INTEGER, SAVE :: n_lev   ! number of levels in the input data
+!$OMP THREADPRIVATE(n_lev)
+  INTEGER n_mth   ! number of months in the input data
+  INTEGER, SAVE :: mth_pre
+!$OMP THREADPRIVATE(mth_pre)
+  
+! Champs reconstitues
+  REAL paprs_glo(klon_glo,klev+1)
+  
+  REAL, ALLOCATABLE:: latitude(:)
+! (of input data sorted in strictly ascending order)
+  REAL, ALLOCATABLE:: longitude(:)
+! (of input data sorted in strictly ascending order)
+  REAL, ALLOCATABLE:: time(:)
+! (of input data sorted in strictly ascending order)
+  REAL, ALLOCATABLE:: lev(:)
+! levels of input data
+  
+!stratospheric H2O source from CH4 oxidation
+! fixed climatos
+! H2O production in VMR/sec)
+  REAL, ALLOCATABLE :: CH4RVMR_in(:, :, :, :)
+  REAL, ALLOCATABLE :: CH4RVMR_mth(:, :, :)
+  REAL, ALLOCATABLE :: CH4RVMR_tmp(:, :)
+  REAL CH4RVMR_glo(klon_glo,klev)
+!
+  INTEGER i, k, kk, j
+  
+! For NetCDF:
+  INTEGER ncid_in  ! IDs for input files
+  INTEGER varid, ncerr
+    
+  INTEGER, PARAMETER :: lev_input=17
+!--pressure at interfaces of input data (in Pa)
+  REAL, DIMENSION(lev_input+1), PARAMETER ::          & 
+                    paprs_input=(/                    &
+  1.00000002e+05,   6.06530673e+04,   3.67879449e+04, &
+  2.23130165e+04,   1.35335286e+04,   8.20850004e+03, &
+  4.97870695e+03,   3.01973841e+03,   1.83156393e+03, &
+  1.11089968e+03,   6.73794715e+02,   4.08677153e+02, &
+  2.47875223e+02,   1.50343923e+02,   9.11881985e+01, &
+  5.53084382e+01,   3.35462635e+01,   0.0           /)
+!
+  
+  IF (debutphy .OR. mth_cur .NE. mth_pre) THEN
+     
+!--preparation of global fields
+     CALL gather(paprs, paprs_glo)
+     
+     IF (is_mpi_root.AND.is_omp_root) THEN
+        
+        print *,'In stratH2O_methox read file: ch4r_annual_lmdz.nc'
+        
+        !--reading strat. H2O source (CH4 oxidation) files
+        CALL nf95_open("ch4r_annual_lmdz.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)
+        
+        CALL nf95_inq_varid(ncid_in, "LAT", varid)
+        CALL nf95_gw_var(ncid_in, varid, latitude)
+        n_lat = size(latitude)
+        
+        CALL nf95_inq_varid(ncid_in, "LON", varid)
+        CALL nf95_gw_var(ncid_in, varid, longitude)
+        n_lon = size(longitude)
+        
+        CALL nf95_inq_varid(ncid_in, "TIME", varid)
+        CALL nf95_gw_var(ncid_in, varid, time)
+        n_mth = size(time)
+        
+        IF (.NOT.ALLOCATED(CH4RVMR_in)) ALLOCATE(CH4RVMR_in(n_lon, n_lat, n_lev, n_mth))
+        
+        CALL nf95_inq_varid(ncid_in, "CH4RVMR", varid)
+        ncerr = nf90_get_var(ncid_in, varid, CH4RVMR_in)
+        print *,'code erreur CH4RVMR=', ncerr, varid
+        
+        CALL nf95_close(ncid_in)
+        
+        IF (.NOT.ALLOCATED(CH4RVMR_mth)) ALLOCATE(CH4RVMR_mth(n_lon, n_lat, n_lev))
+        IF (.NOT.ALLOCATED(CH4RVMR_tmp)) ALLOCATE(CH4RVMR_tmp(klon_glo, n_lev))
+        
+        !---select the correct month,
+        !---correct latitudinal order,convert input from volume mixing ratio to mass mixing ratio
+        DO j=1,n_lat
+           ! convert VMR/sec in mmr (mass mixing ratio/sec: kg H2O/kg air)
+           ! x2 because CH4->2*H2O
+           CH4RVMR_mth(:,j,:) = 2*CH4RVMR_in(:,n_lat+1-j,:,mth_cur)*mH2Omol/mAIRmol
+        ENDDO
+        
+        !---reduce to a klon_glo grid but keep the levels
+        CALL grid2dTo1d_glo(CH4RVMR_mth,CH4RVMR_tmp)
+        
+        !---regrid weighted climatologies
+        DO i=1, klon_glo
+           DO k=1, klev
+              
+              CH4RVMR_glo(i,k)=0.0
+              
+              DO kk=1, n_lev
+                 !
+                 CH4RVMR_glo(i,k)=CH4RVMR_glo(i,k)+ &
+                      MAX(0.0,MIN(paprs_glo(i,k),paprs_input(kk)) &
+                      -MAX(paprs_glo(i,k+1),paprs_input(kk+1))) &
+                      *CH4RVMR_tmp(i,kk)/(paprs_glo(i,k)-paprs_glo(i,k+1))
+              ENDDO ! kk loop
+           ENDDO ! k loop
+        ENDDO ! i loop
+     ENDIF !--is_mpi_root and is_omp_root
+     
+     !--keep memory of previous month
+     mth_pre=mth_cur
+     
+     !--scatter global fields around
+     CALL scatter(CH4RVMR_glo, dq_ch4mmr)
+     
+     IF (is_mpi_root.AND.is_omp_root) THEN
+        DEALLOCATE(CH4RVMR_in,CH4RVMR_mth,CH4RVMR_tmp)
+     ENDIF !--is_mpi_root and is_omp_root
+  ENDIF ! debutphy.OR.new month
+  
+  RETURN
+  
+END SUBROUTINE stratH2O_methox
Index: LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90	(revision 4623)
+++ LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90	(revision 4625)
@@ -1325,4 +1325,5 @@
     
     REAL pi
+    INTEGER ieru
 
     pi = 4. * ATAN(1.)
@@ -6143,5 +6144,7 @@
     !DC Calcul de la tendance due au methane
     IF (ok_qch4) THEN
-       CALL METHOX(1,klon,klon,klev,q_seri,d_q_ch4,pplay)
+       CALL stratH2O_methox(debut,paprs,d_q_ch4)
+!      d_q_ch4: H2O source in ppmv/sec - ecmwf routine METHOX
+!       CALL METHOX(1,klon,klon,klev,q_seri,d_q_ch4,pplay)
        ! ajout de la tendance d'humidite due au methane
        d_q_ch4_dtime(:,:) = d_q_ch4(:,:)*phys_tstep
Index: LMDZ6/trunk/libf/phylmdiso/stratH2O_methox.F90
===================================================================
--- LMDZ6/trunk/libf/phylmdiso/stratH2O_methox.F90	(revision 4625)
+++ LMDZ6/trunk/libf/phylmdiso/stratH2O_methox.F90	(revision 4625)
@@ -0,0 +1,1 @@
+link ../phylmd/stratH2O_methox.F90
