Index: LMDZ6/trunk/libf/misc/wxios.F90
===================================================================
--- LMDZ6/trunk/libf/misc/wxios.F90	(revision 4605)
+++ LMDZ6/trunk/libf/misc/wxios.F90	(revision 4606)
@@ -159,4 +159,6 @@
         g_ctx = xios_ctx
 
+        CALL wxios_add_group_init
+        
         IF (prt_level >= 10) THEN
           WRITE(lunout,*) "wxios_context_init: Current context is ",trim(g_ctx_name)
@@ -168,4 +170,99 @@
     END SUBROUTINE wxios_context_init
 
+
+    
+    SUBROUTINE wxios_add_group_init
+
+      ! routine create by Anne Cozic (2023)
+      ! This routine will create field associated to group defined without description of fields in field.xml file
+      ! This routine need to be call before "xios_sole_inheritance" after an !$OMP MASTER directive 
+      
+      USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, tracers, niso, ntiso
+      USE strings_mod,  ONLY: maxlen
+
+      IMPLICIT NONE
+
+      TYPE(xios_fieldgroup) :: group_handle
+      TYPE(xios_field) :: child
+      INTEGER :: k, iq
+      CHARACTER(len=12) :: nvar    
+      CHARACTER(LEN=maxlen) :: varname, dn
+      CHARACTER(LEN=maxlen) :: unt
+    
+
+      ! group create for StratAER variables 
+      !On ajoute les variables 3D traceurs par l interface fortran 
+      CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
+      ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
+      DO iq = 1, nqtot
+         IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
+         dn = 'd'//TRIM(tracers(iq)%name)//'_'
+
+         unt = "kg kg-1"
+         varname=trim(tracers(iq)%name)
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         
+         unt = "kg kg-1 s-1"
+         varname=TRIM(dn)//'vdf'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'the'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'con'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'lessi_impa'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'lessi_nucl'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'insc'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'bcscav'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'evapls'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'ls'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'trsp'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'sscav'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'sat'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         varname=TRIM(dn)//'uscav'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+      END DO
+      !On ajoute les variables 2D traceurs par l interface fortran 
+      CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
+      ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
+      DO iq = 1, nqtot
+         IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
+         
+         unt = "kg m-2"
+         varname='cum'//trim(tracers(iq)%name)
+         
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+         
+         unt = "kg m-2 s-1"
+         varname='cumd'//trim(tracers(iq)%name)//'_dry'
+         CALL xios_add_child(group_handle, child, varname)
+         CALL xios_set_attr(child, name=varname, unit=unt)
+      ENDDO
+
+
+    END SUBROUTINE wxios_add_group_init
 
     SUBROUTINE wxios_set_context()
Index: LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90	(revision 4605)
+++ LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90	(revision 4606)
@@ -486,8 +486,4 @@
     CHARACTER(LEN=maxlen) :: varname, dn
 
-#ifdef CPP_XIOS
-    TYPE(xios_fieldgroup) :: group_handle
-    TYPE(xios_field) :: child
-#endif
 #ifdef CPP_StratAer 
     LOGICAL, PARAMETER :: debug_strataer=.FALSE.
@@ -545,83 +541,4 @@
     END DO
 
-#ifdef CPP_XIOS
-#ifdef CPP_StratAer
-!$OMP MASTER
-   IF (.NOT.vars_defined) THEN
-          !On ajoute les variables 3D traceurs par l interface fortran 
-          CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
-          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
-          DO iq = 1, nqtot
-            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
-            dn = 'd'//TRIM(tracers(iq)%name)//'_'
-            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, tracers(iq)%name
-
-            unt = "kg kg-1"
-            varname=trim(tracers(iq)%name)
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-
-            unt = "kg kg-1 s-1"
-            varname=TRIM(dn)//'vdf'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'the'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'con'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'lessi_impa'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'lessi_nucl'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'insc'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'bcscav'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'evapls'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'ls'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'trsp'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'sscav'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'sat'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-            varname=TRIM(dn)//'uscav'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-          END DO
-          !On ajoute les variables 2D traceurs par l interface fortran 
-          CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
-          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
-          DO iq = 1, nqtot
-            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
-
-            unt = "kg m-2"
-            varname='cum'//trim(tracers(iq)%name)
-            WRITE (lunout,*) 'XIOS var=', iq, nqtot, varname
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-
-            unt = "kg m-2 s-1"
-            varname='cumd'//trim(tracers(iq)%name)//'_dry'
-            CALL xios_add_child(group_handle, child, varname)
-            CALL xios_set_attr(child, name=varname, unit=unt)
-          ENDDO
-    ENDIF
-!$OMP END MASTER
-#endif
-#endif
 
     ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
