Index: trunk/LMDZ.GENERIC/changelog.txt
===================================================================
--- trunk/LMDZ.GENERIC/changelog.txt	(revision 4112)
+++ trunk/LMDZ.GENERIC/changelog.txt	(revision 4121)
@@ -2205,2 +2205,5 @@
 must be a call to getin("nsoilmx",nsoilmx) in rcm1d before the call to routine
 phys_state_var_init.
+
+== 12/03/2026 == CM
+Added subsurface outputs for XIOS, and outputting tsoil for XIOS.
Index: trunk/LMDZ.GENERIC/deftank/xios/context_pcm_physics.xml
===================================================================
--- trunk/LMDZ.GENERIC/deftank/xios/context_pcm_physics.xml	(revision 4112)
+++ trunk/LMDZ.GENERIC/deftank/xios/context_pcm_physics.xml	(revision 4121)
@@ -6,5 +6,5 @@
     <domain_definition>
         <!-- NB: dom_glo data_dim is 1 for DYNAMICO and 2 for LMDZ.COMMON -->
-        <domain_group id="dom_glo" data_dim="1">
+        <domain_group id="dom_glo" data_dim="2">
           <domain id="dom_glo" />
         </domain_group>
@@ -49,5 +49,5 @@
 
         <!-- NB: dom_out data_ref should be "dom_glo" with LMDZ.COMMON -->
-        <domain id="dom_out" domain_ref="dom_128_96"/>
+        <domain id="dom_out" domain_ref="dom_glo"/>
     </domain_definition>
 
@@ -64,5 +64,10 @@
               standard_name="Pseudo-altitude of model vertical levels"
               unit="km">
-        </axis>
+      </axis>
+        <axis id="soildepth"
+              standard_name="Soil mid-layer depth"
+              unit="m">
+      </axis>
+
         <axis id="controle_axe"
               standard_name="Controle"
@@ -93,4 +98,8 @@
             <domain domain_ref="dom_glo" />
             <axis axis_ref="altitude" />
+    	</grid>
+	<grid id="grid_soil">
+            <domain domain_ref="dom_glo" />
+            <axis axis_ref="soildepth" />
         </grid>
         <grid id="grid_2D">
@@ -119,4 +128,8 @@
             <domain domain_ref="dom_out" />
             <axis axis_ref="altitude" />
+    	</grid>
+	<grid id="grid_soil_out">
+            <domain domain_ref="dom_out" />
+            <axis axis_ref="soildepth" />
         </grid>
         <grid id="grid_2D_out">
Index: trunk/LMDZ.GENERIC/deftank/xios/field_def_physics.xml
===================================================================
--- trunk/LMDZ.GENERIC/deftank/xios/field_def_physics.xml	(revision 4112)
+++ trunk/LMDZ.GENERIC/deftank/xios/field_def_physics.xml	(revision 4121)
@@ -337,5 +337,5 @@
             <field id="temperature"
                    long_name="Atmospheric temperature"
-                   unit="K" />
+		   unit="K" />
             <field id="teta"
                    long_name="Potential temperature"
@@ -555,6 +555,14 @@
                    long_name="zdqconv_prec"
                    unit="" />
-
-        </field_group>
+   
+   </field_group>
+
+
+   <!--Subsurface 3D variables-->
+	<field_group id="soil_fields_3D" grid_ref="grid_soil">
+            <field id="tsoil"
+                   long_name="Soil temperature"
+                   unit="K" />
+	</field_group>
 
         <!--Spectral IR 3D variables-->
Index: trunk/LMDZ.GENERIC/libf/phygeneric/physiq_mod.F90
===================================================================
--- trunk/LMDZ.GENERIC/libf/phygeneric/physiq_mod.F90	(revision 4112)
+++ trunk/LMDZ.GENERIC/libf/phygeneric/physiq_mod.F90	(revision 4121)
@@ -2778,4 +2778,8 @@
       endif
 
+      if(callsoil)then
+         call write_output("tsoil","Soil temperature","K",tsoil)
+      endif
+
 #else
    comm_HR_SW(1:ngrid,1:nlayer) = zdtsw(1:ngrid,1:nlayer)
Index: trunk/LMDZ.GENERIC/libf/phygeneric/xios_output_mod.F90
===================================================================
--- trunk/LMDZ.GENERIC/libf/phygeneric/xios_output_mod.F90	(revision 4112)
+++ trunk/LMDZ.GENERIC/libf/phygeneric/xios_output_mod.F90	(revision 4121)
@@ -31,4 +31,6 @@
   USE regular_lonlat_mod, ONLY: lon_reg, lat_reg
   USE nrtype, ONLY: pi
+  USE comsoil_h, ONLY: mlayer
+
 #ifdef CPP_XIOS
   USE xios
@@ -62,4 +64,7 @@
     CALL xios_set_axis_attr("altitude", n_glo=size(pseudoalt), value=pseudoalt,&
                             unit="km",positive="up")
+    IF (prt_level>=10) WRITE(lunout,*) "initialize_xios_output: call xios_set_axis_attr for soildepth"
+    CALL xios_set_axis_attr("soildepth", n_glo=size(mlayer), value=mlayer, &
+                            unit="m", positive="down")
     if (prt_level >=10) write(lunout,*) "initialize_xios_output: call xios_set_axis_attr for IR_Wavenumber"
     write(lunout,*) "writing IR_Wavenumber now in initialize_xios_output"
