Index: LMDZ6/trunk/libf/phylmd/calcul_STDlev.h
===================================================================
--- LMDZ6/trunk/libf/phylmd/calcul_STDlev.h	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/calcul_STDlev.h	(revision 5685)
@@ -2,14 +2,74 @@
 ! $Header$
 !
+!-------------------------------------------------------------------
+! Interpolation sur des niveaux de pression.
+!
+! Enchainement des operations en prenant pour exemple la temperature
+!
+! 1. CALL ini_undefSTD :
+!  On met les champs cumules à 0 si 
+!  if mod(itap,nint(freq_outnmc(n)/phys_tstep))==1 
+!          tnondef(i, k, n) = 0.
+!          tsumstd(i, k, n) = 0.
+!
+! 2. Ensuite : 
+!   on interpole les champs sur les niveaux STD de pression 
+!   a chaque pas de temps de la physique avec plevel_new
+!   t_seri -> tlevSTD
+!
+! 3. CALL undefSTD : 
+!   On ajoute les champs à la moyenne tous les frec_calnmc
+!      pas de temps
+!   IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
+!         IF (tlevstd(i,k)==missing_val) THEN
+!           tnondef(i, k, n) = tnondef(i, k, n) + 1.
+!         ELSE IF (tlevstd(i,k)/=missing_val) THEN
+!           tsumstd(i, k, n) = tsumstd(i, k, n) + tlevstd(i, k)
+!
+! 4. CALL moy_undefSTD
+!    On normalise à freq_outnmc, avant de reinitialiser plus haut dans ini_undef
+!    IF mod(itap,nint(freq_outnmc(n)/phys_tstep))==0
+!         tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+!
+! 5. Intrpolation des flux (pourquoi pas avec 2 ?)
+!
+! 6. Choix entre instantanné et moyenne en temps
+!     twriteSTD(:,:,1)=tsumSTD(:,:,1)
+!     twriteSTD(:,:,3)=tlevSTD(:,:)
+! 
+!  Premiere série de modifications (2025/05/07, FH) :
+!   - Fait en sorte que freq_outnmc=ecrit_files
+!   - Mis tous les USE avec ONLY dans *undefSTD.f90
+!   - Utilie ecrit_files comme frequence de sortie freq_outnmc
+!   - Nettoye la lecture des freq_outnmc et freq_calnmc dans conf_phys
+!   - Passe les dimensionnement de certaines variables de 3 à 10
+!     nombre de fichiers par défaut. En gros nout=nfiles
+!  
+!  Proposition de modifications :
+!   - Ne plus calculer l'interpolation à tous les pas de temps
+!      mais seulement à la fréquence freq_calcnmc
+!   - Mettre le call ini_undefSTD juste avant undef_STD et moy_undefSTD
+!   - Enlever ecrit_files(7) = freq_outNMC(1) dans phys_output_mod
+!   - Enlever les vieux controles de fichiers dans conf_phys
+!   - enlever les dimensionnement à 10 en dur
+!   - Enlever toute chaine de caractère NMC dans le modèle.
+!
+!-------------------------------------------------------------------
+
 !IM on initialise les variables 
 !
 !       missing_val=nf90_fill_real
 !
+
+! On peut à terme utiliser directement ecrit_files (le nom est moins
+! bien choisi ...
+
+       !print*,'STDSTD ecrit_files ',ecrit_files(1:4)
+       freq_outnmc(:)=ecrit_files(:)
+       freq_calnmc(:)=pdtphys
+
        IF (.not. ok_all_xml) then
-        CALL ini_undefSTD(itap,itapm1)
+        CALL ini_undefSTD(itap)
        ENDIF
-!
-!IM on interpole les champs sur les niveaux STD de pression 
-!IM a chaque pas de temps de la physique
 !
 !-------------------------------------------------------c
@@ -134,5 +194,5 @@
        IF (.not. ok_all_xml) then
         CALL undefSTD(itap, read_climoz)
-        CALL moy_undefSTD(itap,itapm1)
+        CALL moy_undefSTD(itap)
        ENDIF
 !
@@ -160,53 +220,29 @@
            lwup,LWup200)
 !
-      twriteSTD(:,:,1)=tsumSTD(:,:,1)
-      qwriteSTD(:,:,1)=qsumSTD(:,:,1)
-      rhwriteSTD(:,:,1)=rhsumSTD(:,:,1)
-      phiwriteSTD(:,:,1)=phisumSTD(:,:,1)
-      uwriteSTD(:,:,1)=usumSTD(:,:,1)
-      vwriteSTD(:,:,1)=vsumSTD(:,:,1)
-      wwriteSTD(:,:,1)=wsumSTD(:,:,1)
-
-      twriteSTD(:,:,2)=tsumSTD(:,:,2)
-      qwriteSTD(:,:,2)=qsumSTD(:,:,2)
-      rhwriteSTD(:,:,2)=rhsumSTD(:,:,2)
-      phiwriteSTD(:,:,2)=phisumSTD(:,:,2)
-      uwriteSTD(:,:,2)=usumSTD(:,:,2)
-      vwriteSTD(:,:,2)=vsumSTD(:,:,2)
-      wwriteSTD(:,:,2)=wsumSTD(:,:,2)
-
-      twriteSTD(:,:,3)=tlevSTD(:,:)
-      qwriteSTD(:,:,3)=qlevSTD(:,:)
-      rhwriteSTD(:,:,3)=rhlevSTD(:,:)
-      phiwriteSTD(:,:,3)=philevSTD(:,:)
-      uwriteSTD(:,:,3)=ulevSTD(:,:)
-      vwriteSTD(:,:,3)=vlevSTD(:,:)
-      wwriteSTD(:,:,3)=wlevSTD(:,:)
-
-      twriteSTD(:,:,4)=tlevSTD(:,:)
-      qwriteSTD(:,:,4)=qlevSTD(:,:)
-      rhwriteSTD(:,:,4)=rhlevSTD(:,:)
-      phiwriteSTD(:,:,4)=philevSTD(:,:)
-      uwriteSTD(:,:,4)=ulevSTD(:,:)
-      vwriteSTD(:,:,4)=vlevSTD(:,:)
-      wwriteSTD(:,:,4)=wlevSTD(:,:)
-!
-!IM initialisation 5eme fichier de sortie 
-      twriteSTD(:,:,5)=tlevSTD(:,:)
-      qwriteSTD(:,:,5)=qlevSTD(:,:)
-      rhwriteSTD(:,:,5)=rhlevSTD(:,:)
-      phiwriteSTD(:,:,5)=philevSTD(:,:)
-      uwriteSTD(:,:,5)=ulevSTD(:,:)
-      vwriteSTD(:,:,5)=vlevSTD(:,:)
-      wwriteSTD(:,:,5)=wlevSTD(:,:)
-!
-!IM initialisation 6eme fichier de sortie 
-      twriteSTD(:,:,6)=tlevSTD(:,:)
-      qwriteSTD(:,:,6)=qlevSTD(:,:)
-      rhwriteSTD(:,:,6)=rhlevSTD(:,:)
-      phiwriteSTD(:,:,6)=philevSTD(:,:)
-      uwriteSTD(:,:,6)=ulevSTD(:,:)
-      vwriteSTD(:,:,6)=vlevSTD(:,:)
-      wwriteSTD(:,:,6)=wlevSTD(:,:)
+      do n=1,nout
+         !print*,'STDSTD n nout',n,nout,clef_files(n)
+         if (clef_files(n)) then
+             if (type_ecri(n)=='ave(X)') then
+                 !print*,'STDSTD fichier ave(X), n=',n
+                 twriteSTD(:,:,n)=tsumSTD(:,:,n)
+                 qwriteSTD(:,:,n)=qsumSTD(:,:,n)
+                 rhwriteSTD(:,:,n)=rhsumSTD(:,:,n)
+                 phiwriteSTD(:,:,n)=phisumSTD(:,:,n)
+                 uwriteSTD(:,:,n)=usumSTD(:,:,n)
+                 vwriteSTD(:,:,n)=vsumSTD(:,:,n)
+                 wwriteSTD(:,:,n)=wsumSTD(:,:,n)
+             else
+                 !print*,'STDSTD fichier autre, n=',n,type_ecri(n)
+                 twriteSTD(:,:,n)=tlevSTD(:,:)
+                 qwriteSTD(:,:,n)=qlevSTD(:,:)
+                 rhwriteSTD(:,:,n)=rhlevSTD(:,:)
+                 phiwriteSTD(:,:,n)=philevSTD(:,:)
+                 uwriteSTD(:,:,n)=ulevSTD(:,:)
+                 vwriteSTD(:,:,n)=vlevSTD(:,:)
+                 wwriteSTD(:,:,n)=wlevSTD(:,:)
+             endif
+         endif
+      enddo
+
 !IM for NMC files
       DO n=1, nlevSTD3
Index: LMDZ6/trunk/libf/phylmd/clesphys_mod_h.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/clesphys_mod_h.f90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/clesphys_mod_h.f90	(revision 5685)
@@ -36,6 +36,5 @@
           , ok_kzmin                                                   &
           , lev_histhf, lev_histday, lev_histmth                       &
-          , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC   &
-          , ok_histNMC                                                 &
+          , lev_histins, lev_histLES                                   &
           , type_run, ok_regdyn, ok_cosp, ok_airs                      &
           , ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP                     &
@@ -117,15 +116,9 @@
   !IM lev_histday : niveau sorties journalieres
   !IM lev_histmth : niveau sorties mensuelles
-  !IM lev_histdayNMC : on peut sortir soit sur 8 (comme AR5) ou bien
-  !                    sur 17 niveaux de pression
   INTEGER lev_histhf, lev_histday, lev_histmth
-  INTEGER lev_histdayNMC
   Integer lev_histins, lev_histLES
-  !IM ok_histNMC  : sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)
   !IM freq_outNMC : frequences de sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)
   !IM freq_calNMC : frequences de calcul fis. hist*NMC.nc
-  LOGICAL ok_histNMC(3)
-  INTEGER levout_histNMC(3)
-  REAL freq_outNMC(3), freq_calNMC(3)
+  REAL freq_outNMC(10), freq_calNMC(10)
   CHARACTER(len = 4) type_run
   ! aer_type: pour utiliser un fichier constant dans readaerosol
@@ -197,6 +190,5 @@
   !$OMP      , ok_kzmin                                                   &
   !$OMP      , lev_histhf, lev_histday, lev_histmth                       &
-  !$OMP      , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC   &
-  !$OMP      , ok_histNMC                                                 &
+  !$OMP      , lev_histins, lev_histLES                                   &
   !$OMP      , type_run, ok_regdyn, ok_cosp, ok_airs                      &
   !$OMP      , ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP                     &
Index: LMDZ6/trunk/libf/phylmd/conf_phys_m.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/conf_phys_m.f90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/conf_phys_m.f90	(revision 5685)
@@ -197,8 +197,4 @@
     INTEGER,SAVE :: iflag_order2_sollw_omp
     INTEGER, SAVE :: lev_histins_omp, lev_histLES_omp 
-    INTEGER, SAVE :: lev_histdayNMC_omp
-    INTEGER, SAVE :: levout_histNMC_omp(3)
-    LOGICAL, SAVE :: ok_histNMC_omp(3)
-    REAL, SAVE    :: freq_outNMC_omp(3), freq_calNMC_omp(3)
     CHARACTER*4, SAVE :: type_run_omp
     LOGICAL, SAVE :: ok_cosp_omp, ok_airs_omp
@@ -1898,59 +1894,4 @@
     CALL getin('lev_histLES',lev_histLES_omp)
     ! 
-    !Config Key  = lev_histdayNMC
-    !Config Desc =
-    !Config Def  = 8
-    !Config Help =
-    !
-    lev_histdayNMC_omp = 8
-    CALL getin('lev_histdayNMC',lev_histdayNMC_omp)
-    !
-    !Config Key  = levout_histNMC
-    !Config Desc =
-    !Config Def  = 5
-    !Config Help =
-    !
-    levout_histNMC_omp(1) = 5
-    levout_histNMC_omp(2) = 5
-    levout_histNMC_omp(3) = 5
-    CALL getin('levout_histNMC',levout_histNMC_omp)
-    !
-    !histNMC BEG
-    !Config Key  = ok_histNMC
-    !Config Desc = ok_histNMC(1) = frequence de sortie fichiers histmthNMC
-    !Config Desc = ok_histNMC(2) = frequence de sortie fichiers histdayNMC
-    !Config Desc = ok_histNMC(3) = frequence de sortie fichiers histhfNMC
-    !Config Def  = n, n, n
-    !Config Help =
-    !
-    ok_histNMC_omp(1) = .FALSE.
-    ok_histNMC_omp(2) = .FALSE.
-    ok_histNMC_omp(3) = .FALSE.
-    CALL getin('ok_histNMC',ok_histNMC_omp)
-    !
-    !Config Key  = freq_outNMC
-    !Config Desc = freq_outNMC(1) = frequence de sortie fichiers histmthNMC
-    !Config Desc = freq_outNMC(2) = frequence de sortie fichiers histdayNMC
-    !Config Desc = freq_outNMC(3) = frequence de sortie fichiers histhfNMC
-    !Config Def  = 2592000., 86400., 21600. (1mois, 1jour, 6h) 
-    !Config Help =
-    !
-    freq_outNMC_omp(1) = mth_len
-    freq_outNMC_omp(2) = 1.
-    freq_outNMC_omp(3) = 1./4.
-    CALL getin('freq_outNMC',freq_outNMC_omp)
-    !
-    !Config Key  = freq_calNMC
-    !Config Desc = freq_calNMC(1) = frequence de calcul fichiers histmthNMC
-    !Config Desc = freq_calNMC(2) = frequence de calcul fichiers histdayNMC
-    !Config Desc = freq_calNMC(3) = frequence de calcul fichiers histhfNMC
-    !Config Def  = phys_tstep
-    !Config Help =
-    !
-    freq_calNMC_omp(1) = phys_tstep
-    freq_calNMC_omp(2) = phys_tstep
-    freq_calNMC_omp(3) = phys_tstep
-    CALL getin('freq_calNMC',freq_calNMC_omp)
-    !
     !Config Key  = type_run
     !Config Desc =
@@ -2583,9 +2524,5 @@
     lev_histins = lev_histins_omp
     lev_histLES = lev_histLES_omp
-    lev_histdayNMC = lev_histdayNMC_omp
-    levout_histNMC = levout_histNMC_omp
-    ok_histNMC(:) = ok_histNMC_omp(:)
-    freq_outNMC(:) = freq_outNMC_omp(:)
-    freq_calNMC(:) = freq_calNMC_omp(:)
+
 
     type_ocean = type_ocean_omp
@@ -3016,9 +2953,4 @@
     WRITE(lunout,*) ' lev_histins = ',lev_histins
     WRITE(lunout,*) ' lev_histLES = ',lev_histLES
-    WRITE(lunout,*) ' lev_histdayNMC = ',lev_histdayNMC
-    WRITE(lunout,*) ' levout_histNMC = ',levout_histNMC
-    WRITE(lunout,*) ' ok_histNMC = ',ok_histNMC
-    WRITE(lunout,*) ' freq_outNMC = ',freq_outNMC
-    WRITE(lunout,*) ' freq_calNMC = ',freq_calNMC
     WRITE(lunout,*) ' iflag_pbl = ', iflag_pbl
     WRITE(lunout,*) ' iflag_physiq = ', iflag_physiq
Index: LMDZ6/trunk/libf/phylmd/cv3_routines.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/cv3_routines.f90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/cv3_routines.f90	(revision 5685)
@@ -4043,5 +4043,4 @@
 
     if ( restore_bug_cvdn ) then
-      print*,'DOWND BUG'
       DO il = 1, ncum
          amp1(il) = upwd(il,i+1)
@@ -4049,5 +4048,4 @@
       ENDDO
     else
-      print*,'DOWND NO BUG'
       DO il = 1, ncum
          amp1(il) = upwd(il,i+1)
Index: LMDZ6/trunk/libf/phylmd/ini_undefSTD.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/ini_undefSTD.f90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/ini_undefSTD.f90	(revision 5685)
@@ -3,10 +3,15 @@
 
 
-SUBROUTINE ini_undefstd(itap, itapm1)
-  USE clesphys_mod_h
-  USE dimphy
-  USE phys_state_var_mod ! Variables sauvegardees de la physique
-  USE phys_cal_mod, ONLY: mth_len
-  IMPLICIT NONE
+SUBROUTINE ini_undefstd(itap)
+USE clesphys_mod_h, ONLY : freq_outnmc
+USE dimphy, ONLY : klon
+USE phys_state_var_mod, ONLY : tnondef,tsumstd,usumstd,vsumstd,wsumstd,phisumstd,qsumstd,rhsumstd
+USE phys_state_var_mod, ONLY : uvsumstd,vqsumstd,vtsumstd,wqsumstd,vphisumstd,wtsumstd,u2sumstd
+USE phys_state_var_mod, ONLY : v2sumstd,t2sumstd,o3sumstd,o3daysumstd,nlevSTD,nout,phys_tstep
+USE phys_state_var_mod, ONLY : missing_val_nf90
+USE phys_cal_mod, ONLY: mth_len
+USE phys_output_var_mod, ONLY : clef_files
+
+IMPLICIT NONE
 
   ! ====================================================================
@@ -34,5 +39,5 @@
   ! variables Input/Output
   ! INTEGER nlevSTD, klevSTD, itap
-  INTEGER itap, itapm1
+  INTEGER itap
   ! PARAMETER(klevSTD=17)
   ! REAL dtime
@@ -54,6 +59,5 @@
     ! initialisation variables en debut du mois, de la journee ou des 6h
 
-    IF (n==1 .AND. itap-itapm1==1 .OR. n>1 .AND. mod(itap,nint( &
-        freq_outnmc(n)/phys_tstep))==1) THEN
+    IF ( clef_files(n) .and. mod(itap,nint(freq_outnmc(n)/phys_tstep))==1) THEN
       ! print*,'ini_undefSTD n itap',n,itap
       DO k = 1, nlevstd
Index: LMDZ6/trunk/libf/phylmd/moy_undefSTD.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/moy_undefSTD.f90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/moy_undefSTD.f90	(revision 5685)
@@ -2,12 +2,16 @@
 ! $Id$
 
-SUBROUTINE moy_undefstd(itap, itapm1)
-  USE clesphys_mod_h
-  USE netcdf
-  USE dimphy
-  USE phys_state_var_mod
-  use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
+SUBROUTINE moy_undefstd(itap)
+USE clesphys_mod_h, ONLY : freq_calnmc, freq_outnmc
+USE netcdf
+USE dimphy, ONLY : klon
+USE phys_state_var_mod, ONLY : missing_val_nf90,nlevstd,nout,o3daysumstd,o3sumstd,phisumstd,phys_tstep
+USE phys_state_var_mod, ONLY : qsumstd,rhsumstd,t2sumstd,tnondef,tsumstd,u2sumstd,usumstd,uvsumstd,v2sumstd
+USE phys_state_var_mod, ONLY : vphisumstd,vqsumstd,vsumstd,vtsumstd,wqsumstd,wsumstd,wtsumstd
+USE wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
+USE phys_cal_mod, ONLY: mth_len
+USE phys_output_var_mod, ONLY : clef_files
 
-  USE phys_cal_mod, ONLY: mth_len
+
   IMPLICIT NONE
   REAL :: missing_val
@@ -34,5 +38,5 @@
   ! INTEGER nlevSTD, klevSTD, itap
   ! PARAMETER(klevSTD=17)
-  INTEGER itap, itapm1
+  INTEGER itap
 
   ! variables locales
@@ -69,49 +73,30 @@
 
     ! calcul 1 fois pas mois, 1 fois par jour ou toutes les 6h
+ 
+!   print*,'STDSTD n,freq_outnmc(n),phys_tstep',n,freq_outnmc(n),phys_tstep
 
-    IF (n==1 .AND. itap==itapm1 .OR. n>1 .AND. mod(itap,nint(freq_outnmc(n)/ & 
-        phys_tstep))==0) THEN
-
-      ! print*,'moy_undefSTD n itap itapm1',n,itap,itapm1
+    IF ( clef_files(n) .and. mod(itap,nint(freq_outnmc(n)/phys_tstep))==0) THEN
 
       DO k = 1, nlevstd
         DO i = 1, klon
           IF (tnondef(i,k,n)/=(freq_moynmc(n))) THEN
-            tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
-              ))
-            usumstd(i, k, n) = usumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
-              ))
-            vsumstd(i, k, n) = vsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
-              ))
-            wsumstd(i, k, n) = wsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
-              ))
-            phisumstd(i, k, n) = phisumstd(i, k, n)/ &
-              (freq_moynmc(n)-tnondef(i,k,n))
-            qsumstd(i, k, n) = qsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
-              ))
-            rhsumstd(i, k, n) = rhsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            uvsumstd(i, k, n) = uvsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            vqsumstd(i, k, n) = vqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            vtsumstd(i, k, n) = vtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            wqsumstd(i, k, n) = wqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            vphisumstd(i, k, n) = vphisumstd(i, k, n)/ &
-              (freq_moynmc(n)-tnondef(i,k,n))
-            wtsumstd(i, k, n) = wtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            u2sumstd(i, k, n) = u2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            v2sumstd(i, k, n) = v2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            t2sumstd(i, k, n) = t2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            o3sumstd(i, k, n) = o3sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
-              ,n))
-            o3daysumstd(i, k, n) = o3daysumstd(i, k, n)/ &
-              (freq_moynmc(n)-tnondef(i,k,n))
+            tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            usumstd(i, k, n) = usumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            vsumstd(i, k, n) = vsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            wsumstd(i, k, n) = wsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            phisumstd(i, k, n) = phisumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            qsumstd(i, k, n) = qsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            rhsumstd(i, k, n) = rhsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            uvsumstd(i, k, n) = uvsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            vqsumstd(i, k, n) = vqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            vtsumstd(i, k, n) = vtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            wqsumstd(i, k, n) = wqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            vphisumstd(i, k, n) = vphisumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            wtsumstd(i, k, n) = wtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            u2sumstd(i, k, n) = u2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            v2sumstd(i, k, n) = v2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            t2sumstd(i, k, n) = t2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            o3sumstd(i, k, n) = o3sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
+            o3daysumstd(i, k, n) = o3daysumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
           ELSE
             tsumstd(i, k, n) = missing_val
Index: LMDZ6/trunk/libf/phylmd/phys_output_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phys_output_mod.F90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/phys_output_mod.F90	(revision 5685)
@@ -6,5 +6,7 @@
   USE phys_output_var_mod
   USE phys_output_write_mod, ONLY : phys_output_write
+
   REAL, DIMENSION(nfiles),SAVE :: ecrit_files
+  LOGICAL, DIMENSION(nfiles)   :: phys_out_filekeys
 
 
@@ -126,5 +128,4 @@
     CHARACTER(LEN=20), DIMENSION(nfiles)  :: chtimestep = (/ 'Default', 'Default', 'Default', 'Default', 'Default', &
                                                              'Default', 'Default', 'Default', 'Default', 'Default' /)
-    LOGICAL, DIMENSION(nfiles)            :: phys_out_filekeys
     LOGICAL, DIMENSION(nfiles)            :: phys_out_filestations
 
@@ -249,13 +250,6 @@
     type_ecri(10)= 'ave(X)'
 
-    clef_files(1) = ok_mensuel
-    clef_files(2) = ok_journe
-    clef_files(3) = ok_hf
-    clef_files(4) = ok_instan
-    clef_files(5) = ok_LES
-    clef_files(6) = ok_instan
-    clef_files(7) = ok_histNMC(1)
-    clef_files(8) = ok_histNMC(2)
-    clef_files(9) = ok_histNMC(3)
+    clef_files(1:3) = .TRUE.
+    clef_files(4:10) = .FALSE.
     IF (CPPKEY_STRATAER) THEN
       clef_files(10)= .TRUE.
@@ -265,26 +259,11 @@
 
     !sortir des fichiers "stations" si clef_stations(:)=.TRUE.
-    clef_stations(1) = .FALSE.
-    clef_stations(2) = .FALSE.
-    clef_stations(3) = .FALSE.
-    clef_stations(4) = .FALSE.
-    clef_stations(5) = .FALSE.
-    clef_stations(6) = .FALSE.
-    clef_stations(7) = .FALSE.
-    clef_stations(8) = .FALSE.
-    clef_stations(9) = .FALSE.
-    clef_stations(10)= .FALSE.
-
-    lev_files(1) = lev_histmth
-    lev_files(2) = lev_histday
-    lev_files(3) = lev_histhf
-    lev_files(4) = lev_histins
-    lev_files(5) = lev_histLES
-    lev_files(6) = lev_histins
-    lev_files(7) = levout_histNMC(1)
-    lev_files(8) = levout_histNMC(2)
-    lev_files(9) = levout_histNMC(3)
-    lev_files(10)= 5
-
+    clef_stations(1:10) = .FALSE.
+    lev_files(1:10) = 5
+
+    print*,'A ecrit_mth=',ecrit_mth
+    ! Frequencies of the history files;
+    ! Defaut
+    ! overwritten by chtimestep given to convers_timesteps
     ecrit_files(1) = ecrit_mth
     ecrit_files(2) = ecrit_day
@@ -292,9 +271,5 @@
     ecrit_files(4) = ecrit_ins
     ecrit_files(5) = ecrit_LES
-    ecrit_files(6) = ecrit_ins
-    ecrit_files(7) = freq_outNMC(1)
-    ecrit_files(8) = freq_outNMC(2)
-    ecrit_files(9) = freq_outNMC(3)
-    ecrit_files(10)= ecrit_mth
+    ecrit_files(6:10) = ecrit_ins
 
     !! Lectures des parametres de sorties dans physiq.def
@@ -387,5 +362,8 @@
       ELSE
        CALL convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff)) 
+      print*,'Dans phys_output_open, iff=',iff,' ecrit_files=',ecrit_files(iff)
       ENDIF
+      ! ecrit_files contains frequency of file iif in seconds 
+
 
        WRITE(lunout,*)'ecrit_files(',iff,')= ',ecrit_files(iff)
@@ -650,10 +628,13 @@
    ! Updated write frequencies due to phys_out_filetimesteps. 
     ! Write frequencies are now in seconds.  
-    ecrit_mth = ecrit_files(1)
-    ecrit_day = ecrit_files(2)
-    ecrit_hf  = ecrit_files(3)
-    ecrit_ins = ecrit_files(4)
-    ecrit_LES = ecrit_files(5)
-    ecrit_ins = ecrit_files(6)
+! WHY CHANGING ecrit_mth ?
+! For Cosp ?
+!    ecrit_mth = ecrit_files(1)
+!    print*,'B ecrit_mth=',ecrit_mth
+!    ecrit_day = ecrit_files(2)
+!    ecrit_hf  = ecrit_files(3)
+!    ecrit_ins = ecrit_files(4)
+!    ecrit_LES = ecrit_files(5)
+!    ecrit_ins = ecrit_files(6)
 
     IF (prt_level >= 10) THEN
@@ -664,4 +645,5 @@
       WRITE(lunout,*)'phys_output_open: ends here'
     ENDIF
+    print*,'Dans phys_output_open,ecrit_files B',ecrit_files(1:6)
 
 !  DO iq=1,nqtot
@@ -705,5 +687,5 @@
     IF ( type == 'day'.or.type == 'days'.or.type == 'd'.or.type == 'jours'.or.type == 'jour'.or.type == 'j' )&
            &  timestep = ttt * dayseconde
-    IF ( type == 'months'.or.type == 'month'.or.type == 'mth'.or.type == 'mois'.or.type == 'm' ) THEN
+    IF ( type == 'months'.or.type == 'month'.or.type == 'mth'.or.type == 'mois'.or.type == 'm' .or.type == 'mo' ) THEN
        WRITE(lunout,*)'annee_ref,day_ref mon_len',annee_ref,day_ref,mth_len
        timestep = ttt * dayseconde * mth_len
@@ -713,5 +695,5 @@
     IF ( type == 'mn'.or.type == 'minutes'.or.type == 'minute'.or.type == 'm' ) timestep = ttt * 60.
     IF ( type == 's'.or.type == 'sec'.or.type == 'secondes'.or.type =='seconde'   ) timestep = ttt
-    IF ( type == 'TS' ) timestep = ttt * dtime
+    IF ( type == 'TS' .or. type == 'ts' ) timestep = ttt * dtime
 
     WRITE(lunout,*)'type =      ',type
Index: LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90	(revision 5685)
@@ -15,5 +15,5 @@
       INTEGER, PARAMETER :: nlevSTD8=8
       INTEGER, PARAMETER :: nlevSTD3=3
-      INTEGER, PARAMETER :: nout=3
+      INTEGER, PARAMETER :: nout=10
       INTEGER, PARAMETER :: napisccp=1
       INTEGER, SAVE :: radpas  ! radiation is called every "radpas" step
Index: LMDZ6/trunk/libf/phylmd/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 5685)
@@ -96,4 +96,5 @@
     USE phys_output_var_mod, ONLY : cloud_cover_sw, cloud_cover_sw_s2, ZFLUX_DIR, ZFLUX_DIR_CLEAR, &
   &      ZFLUX_DIR_s2, ZFLUX_DIR_CLEAR_s2, ZFLUX_DIR_SUN, ZFLUX_DIR_SUN_s2
+    USE phys_output_var_mod, ONLY : type_ecri
 
 
@@ -1749,10 +1750,10 @@
        ok_sync=ok_sync_omp
 
-       freq_outNMC(1) = ecrit_files(7)
-       freq_outNMC(2) = ecrit_files(8)
-       freq_outNMC(3) = ecrit_files(9)
-       WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
-       WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
-       WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
+!       freq_outNMC(1) = ecrit_files(7)
+!       freq_outNMC(2) = ecrit_files(8)
+!       freq_outNMC(3) = ecrit_files(9)
+!       WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
+!       WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
+!       WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
 
 #ifndef CPP_XIOS
Index: LMDZ6/trunk/libf/phylmd/undefSTD.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/undefSTD.f90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmd/undefSTD.f90	(revision 5685)
@@ -3,8 +3,15 @@
 
 SUBROUTINE undefstd(itap, read_climoz)
-  USE clesphys_mod_h
+  USE clesphys_mod_h, ONLY : freq_calnmc
   USE netcdf
-  USE dimphy
-  USE phys_state_var_mod
+  USE dimphy, ONLY : klon
+  USE phys_state_var_mod, ONLY : nlevstd,nout,o3std,o3sumstd,philevstd,phisumstd,phys_tstep,qlevstd,qsumstd
+  USE phys_state_var_mod, ONLY : rhlevstd,rhsumstd,t2std,t2sumstd,tlevstd,tnondef,tsumstd,u2std,u2sumstd
+  USE phys_state_var_mod, ONLY : ulevstd,usumstd,uvstd,uvsumstd,v2std,v2sumstd,vlevstd,vphistd,vphisumstd
+  USE phys_state_var_mod, ONLY : vqstd,vqsumstd,vsumstd,vtstd,vtsumstd,wlevstd,wqstd,wqsumstd,wsumstd
+  USE phys_state_var_mod, ONLY : wtstd,wtsumstd,o3daysumstd,o3daystd,missing_val_nf90
+  USE phys_output_var_mod, ONLY : clef_files
+
+
   use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
 
@@ -64,5 +71,6 @@
     ! de la physique
 
-    IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
+!   print*,'STDSTD n,freq_calnmc(n),phys_tstep',n,freq_calnmc(n),phys_tstep
+    IF (clef_files(n) .and. mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
       DO k = 1, nlevstd
         DO i = 1, klon
Index: LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90	(revision 5683)
+++ LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90	(revision 5685)
@@ -1904,10 +1904,11 @@
        ok_sync=ok_sync_omp
 
-       freq_outNMC(1) = ecrit_files(7)
-       freq_outNMC(2) = ecrit_files(8)
-       freq_outNMC(3) = ecrit_files(9)
-       WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
-       WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
-       WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
+!       freq_outNMC(1) = ecrit_files(7)
+!       freq_outNMC(2) = ecrit_files(8)
+!       freq_outNMC(3) = ecrit_files(9)
+!       WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
+!       WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
+!       WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
+
 
 #ifndef CPP_XIOS
