Index: XIOS/trunk/xios_test_suite/TEST_SUITE/iodef.xml
===================================================================
--- XIOS/trunk/xios_test_suite/TEST_SUITE/iodef.xml	(revision 1916)
+++ XIOS/trunk/xios_test_suite/TEST_SUITE/iodef.xml	(revision 1921)
@@ -9,5 +9,5 @@
       <variable id="domain"> XIOS::ATMdomain </variable>
       <variable id="domain_mask"> true </variable>
-      <variable id="axis_mask"> true </variable>
+      <variable id="axis_mask"> false </variable>
       <variable id="init_field2D"> rank </variable>
       <variable id="ni"> 36 </variable>
@@ -61,5 +61,5 @@
         <variable id="check_event_sync" type="bool">true</variable>
       </variable_group>
-      <variable id="activate_non_distributed_transformation" type="bool">true</variable>
+      <variable id="activate_non_distributed_transformation" type="bool">false</variable>
     </variable_definition>
   </context>
Index: XIOS/trunk/xios_test_suite/TEST_SUITE/test_axis_algo/checkfile.def
===================================================================
--- XIOS/trunk/xios_test_suite/TEST_SUITE/test_axis_algo/checkfile.def	(revision 1916)
+++ XIOS/trunk/xios_test_suite/TEST_SUITE/test_axis_algo/checkfile.def	(revision 1921)
@@ -1,3 +1,10 @@
 #all
-atm_output_zoom.nc
-#atm_output_inverse.nc
+#atm_output_zoom.nc
+atm_output_axis_transformation_reduce.nc
+atm_output_axis_transformation_zoom.nc
+atm_output_axis_transformation_extract.nc
+atm_output_axis_transformation_extract_domain.nc
+atm_output_axis_transformation_interpolate.nc
+atm_output_axis_transformation_temporal_splitting.nc
+atm_output_axis_transformation_duplicate_scalar.nc
+atm_output_axis_transformation_inverse.nc
Index: XIOS/trunk/xios_test_suite/TEST_SUITE/test_axis_algo/context_atm.xml
===================================================================
--- XIOS/trunk/xios_test_suite/TEST_SUITE/test_axis_algo/context_atm.xml	(revision 1916)
+++ XIOS/trunk/xios_test_suite/TEST_SUITE/test_axis_algo/context_atm.xml	(revision 1921)
@@ -11,8 +11,20 @@
   <axis_definition>
     <axis id="axis" />
-    <axis id="axis_dup" />
     <axis id="domain_X" />
     <axis id="domain_Y" />
     <axis id="ensemble" />
+    <axis id="axis_interpolate" n_glo="2" value="(0,1)[80000 40000]">
+      <interpolate_axis type="polynomial" order="1" coordinate="pressure"/> 
+    </axis>
+    <axis id="axis_temporal_splitting" n_glo="4">
+      <temporal_splitting /> 
+    </axis>
+    
+    <axis id="axis_duplicate_scalar" n_glo="5">
+      <duplicate_scalar /> 
+    </axis>
+
+
+
 
     <axis id="other_axis" />
@@ -22,23 +34,4 @@
   </axis_definition>
 
-  <axis_definition>
-    <axis id="axis_zoom" axis_ref="axis">
-        <zoom_axis begin="0" n="5"/>
-    </axis>
-
-    <axis id="domain_X_zoom" axis_ref="domain_X">
-        <zoom_axis begin="0" n="10"/>
-    </axis>
-
-    <axis id="domain_Y_zoom" axis_ref="domain_Y">
-        <zoom_axis begin="3" n="5"/>
-    </axis>
-
-    <axis id="domain_Y_inverse" axis_ref="domain_Y">
-        <inverse_axis />
-    </axis>
-
-  </axis_definition>
-
   <scalar_definition>
     <scalar id="scalar" /> 
@@ -53,12 +46,93 @@
       <axis axis_ref="axis" />
     </grid>
-    
+     
+    <grid id="grid3D_interpolate_axis">
+      <domain domain_ref="domain" />
+      <axis axis_ref="axis_interpolate" />
+    </grid>
+
+
     <grid id="grid2D">
       <domain domain_ref="domain" />
     </grid>
 
+    <grid id="grid2D_extract_domain">
+      <axis n_glo="36" >
+      <extract_domain direction="iDir" position="5" />
+      </axis>
+    </grid>
+
+
+
     <grid id="grid1D">
       <axis axis_ref="axis" />
     </grid>
+  
+    <grid id="grid1D_extract">
+      <axis id="axis_extract" axis_ref="axis">
+      <extract_axis n="5" begin="0" />
+      </axis>
+    </grid>   
+
+    <grid id="grid1D_zoom">
+      <axis id="axis_zoom" axis_ref="axis">
+      <zoom_axis n="5" begin="0" />
+      </axis>
+    </grid>   
+
+
+    <grid id="grid1D_inverse">
+      <axis id="axis_inverse" axis_ref="axis">
+      <inverse_axis />
+      </axis>
+    </grid>   
+
+    <grid id="grid1D_reduce_sum">
+      <axis id="axis_reduce_sum" axis_ref="axis">
+      <reduce_axis operation="sum"/>
+      </axis>
+    </grid>   
+
+    <grid id="grid1D_reduce_max">
+      <axis id="axis_reduce_max" axis_ref="axis">
+      <reduce_axis operation="max"/>
+      </axis>
+    </grid>   
+
+
+    <grid id="grid1D_reduce_min">
+      <axis id="axis_reduce_min" axis_ref="axis">
+      <reduce_axis operation="min"/>
+      </axis>
+    </grid>   
+  
+    <grid id="grid1D_reduce_ave">
+      <axis id="axis_reduce_ave" axis_ref="axis">
+      <reduce_axis operation="average"/>
+      </axis>
+    </grid>   
+
+    <grid id="grid_src">
+      <domain domain_ref="domain" />
+      <axis axis_ref="axis" />
+      <scalar scalar_ref="scalar"/>
+    </grid>
+  
+     <grid id="grid_dst">
+      <domain domain_ref="domain" />
+      <axis axis_ref="axis" />
+      <axis axis_ref="axis_temporal_splitting"/>
+    </grid>
+  
+   <grid id="grid0D">
+      <scalar scalar_ref="scalar" />
+    </grid>
+   
+    <grid id="grid1D_duplicate_scalar">
+      <axis axis_ref="axis_duplicate_scalar" />
+    </grid>
+ 
+
+
 
     <grid id="grid_X">
@@ -66,20 +140,28 @@
     </grid>
 
-     <grid id="grid_X_zoom">
-      <axis axis_ref="domain_X_zoom" />
-    </grid>
-
     <grid id="grid_Y">
       <axis axis_ref="domain_Y" />
     </grid>
 
-    <grid id="grid_Y_inverse">
-      <axis axis_ref="domain_Y_inverse" />
-    </grid>
-
     <grid id="grid_XY">
       <axis axis_ref="domain_X" />
       <axis axis_ref="domain_Y" />
     </grid>
+    
+    <grid id="gridXY_zoomX">
+      <axis id="domain_X_zoom" axis_ref="domain_X">
+      <zoom_axis n="6" begin="1" />
+      </axis>
+      <axis axis_ref="domain_Y" />
+    </grid>
+   
+    <grid id="gridXY_zoomY">
+      <axis axis_ref="domain_X" />
+      <axis id="domain_Y_zoom" axis_ref="domain_Y">
+      <zoom_axis n="4" begin="2" />
+      </axis>
+    </grid>
+
+
 
     <grid id="grid_XYZ">
@@ -151,18 +233,4 @@
     </grid>
 
-
-    <grid id="grid_XY_zoom_Y">
-      <axis axis_ref="domain_X" />
-      <axis axis_ref="domain_Y_zoom" />
-    </grid>
-
-    <grid id="grid_XY_zoom_X">
-      <axis axis_ref="domain_X_zoom" />
-      <axis axis_ref="domain_Y" />
-    </grid>
-
-
-
- 
  
  
@@ -261,82 +329,22 @@
     </grid>
 
-
-
-
-
-
-
-
-
-
-    <grid id="grid_vert_reduce">
-      <domain domain_ref="domain" />
-      <scalar >
-        <reduce_axis operation="sum" />
-      </scalar>
-    </grid>
-
-    <grid id="grid_horiz_reduce">
-      <scalar >
-        <reduce_domain operation="sum" />
-      </scalar>
-      <axis axis_ref="axis" />
-    </grid>
-      
-    <grid id="grid_zoom_vert">
-      <domain domain_ref="domain" />
-      <axis axis_ref="axis_zoom" />
-    </grid>
-
-    <grid id="grid_zoom_vert_sum">
-      <scalar >
-        <reduce_domain operation="sum" />
-      </scalar>
-      <axis axis_ref="axis_zoom" />
-    </grid>
-
-   <grid id="grid_lat">
-       <axis axis_ref="domain_Y">
-         <reduce_domain direction="iDir" operation="sum"/> 
-       </axis>
-       <axis axis_ref="axis" />
-    </grid>
-    
-
-    <grid id="grid3D_invert">
-      <domain domain_ref="domain">
-        <reorder_domain invert_lat="true" />
-      </domain>
-      <axis axis_ref="axis" />
-    </grid>
-    
-    <grid id="grid2D_invert">
-      <domain domain_ref="domain">
-        <reorder_domain invert_lat="true" shift_lon_fraction="0.5" min_lon="0" max_lon="360"/>
-      </domain>
-    </grid>
-
-    
+   
   </grid_definition>
   
   
   <field_definition level="1" prec="8" operation="instant" freq_op="1ts" enabled=".true." default_value="1.e+20" detect_missing_value="true">
-    <field id="field2D" grid_ref="grid2D" build_workflow_graph="false" />
-    <field id="field3D" grid_ref="grid3D" build_workflow_graph="true"  />
+    <field id="field2D" grid_ref="grid2D" />
+    <field id="field3D" grid_ref="grid3D"  />
     <field id="pressure" grid_ref="grid3D"  />
     <field id="field3D_recv" read_access="true" grid_ref="grid3D"  field_ref="field3D" />
     <field id="field3D_resend" grid_ref="grid3D" />
 
-    <field id="field_X" grid_ref="grid_X" build_workflow_graph="false" />
-    <field id="field_Y" grid_ref="grid_Y" build_workflow_graph="false" />
-    <field id="field_Z" grid_ref="grid1D" build_workflow_graph="false" />
+    <field id="field_X" grid_ref="grid_X" />
+    <field id="field_Y" grid_ref="grid_Y" />
+    <field id="field_Z" grid_ref="grid1D" />
     <field id="field_XY" grid_ref="grid_XY" />
     <field id="field_XYZ" grid_ref="grid_XYZ" />
     <field id="field_XZ" grid_ref="grid_XZ" />
     <field id="field_YZ" grid_ref="grid_YZ" />
-
-    <field id="field_zoom_vert" field_ref="field3D" grid_ref="grid_zoom_vert"  />
-    <field id="field_zoom_vert_sum" field_ref="field_zoom_vert" grid_ref="grid_zoom_vert_sum"  />
-
 
 
@@ -356,6 +364,4 @@
 
 
-
-
     <field id="other_field2D" grid_ref="other_grid2D"/>
     <field id="other_field3D" grid_ref="other_grid3D"  />
@@ -386,55 +392,110 @@
     <field id="other_field_YZW" grid_ref="other_grid_YZW" />
 
-
-
-
+    <field id="field_src" grid_ref="grid_src" > field3D </field>
     
     
   </field_definition>
+
+
+
+<!-- implementation of specifics test case -->
+<!-- simplest test cases : output data to file -->
+
   
 
   <file_definition  type="one_file" >
-  
-
-     <file id="atm_output_zoom" output_freq="1ts" enabled="true">
-       <field field_ref="field_XY" grid_ref="grid_XY_zoom_Y" operation="instant" enabled="true"/>
-       <!-- <field field_ref="field_Y" grid_ref="grid_Y_inverse" operation="instant" enabled="true"/> -->
-     </file>
-
-
-
-    <file id="atm_output_other" output_freq="1ts"  enabled="false">
-       <field field_ref="other_field3D" enabled="false"/>
-       <field field_ref="other_field2D" enabled="true"/> 
-       <field field_ref="other_field_X" enabled="false"/>
-       <field field_ref="other_field_Y" enabled="false"/>
-       <field field_ref="other_field_XY" enabled="false"/>
-       <field field_ref="other_field_Z" enabled="false"/>
-       <field field_ref="other_field_XYZ" enabled="false"/>
-       <field field_ref="other_field_XZ" enabled="false"/>
-       <field field_ref="other_field_YZ" enabled="false"/>
+    <file id="atm_output_axis_transformation_reduce" output_freq="4ts" type="one_file" enabled="true">
+       <field field_ref="field_Z" />
+       <field id="field_Z_reduce_sum" field_ref="field_Z" grid_ref="grid1D_reduce_sum" />
+       <field id="field_Z_reduce_max" field_ref="field_Z" grid_ref="grid1D_reduce_max" />
+       <field id="field_Z_reduce_min" field_ref="field_Z" grid_ref="grid1D_reduce_min" />
+       <field id="field_Z_reduce_ave" field_ref="field_Z" grid_ref="grid1D_reduce_ave" />
+    </file>
+
+    <file id="atm_output_axis_transformation_zoom" output_freq="12ts" type="one_file" enabled="true">
+       <field field_ref="field_Z" />
+       <field id="field_Z_zoom"       field_ref="field_Z" grid_ref="grid1D_zoom"       />
+       <field field_ref="field_XY" />
+       <field id="field_XY_zoomX"       field_ref="field_XY" grid_ref="gridXY_zoomX"       />
+       <field id="field_XY_zoomY"       field_ref="field_XY" grid_ref="gridXY_zoomY"       />
+    </file>
+    
+    <file id="atm_output_axis_transformation_extract" output_freq="12ts" type="one_file" enabled="true">
+       <field field_ref="field_Z" />
+       <field id="field_Z_extract"    field_ref="field_Z" grid_ref="grid1D_extract"    /> 
+    </file>
+    
+ 
+    <file id="atm_output_axis_transformation_inverse" output_freq="12ts" type="one_file" enabled="true">
+       <field field_ref="field_Z" />
+       <field id="field_Z_inverse"    field_ref="field_Z" grid_ref="grid1D_inverse"    />
+    </file>
+    
+    <file id="atm_output_axis_transformation_extract_domain" output_freq="12ts" type="one_file" enabled="true">
+       <field field_ref="field2D" />
+       <field id="field2D_extract"       field_ref="field2D" grid_ref="grid2D_extract_domain"       />
+    </file>
+    
+    <file id="atm_output_axis_transformation_interpolate" output_freq="24ts" type="one_file" enabled="true">
+       <field field_ref="field3D"  />
+       <field field_ref="pressure"  />
+       <field id="field_interpolate_axis" field_ref="field3D" grid_ref="grid3D_interpolate_axis" />
+    </file>
+
+    <file id="atm_output_axis_transformation_temporal_splitting" output_freq="4ts" type="one_file" enabled="true">
+       <field field_ref="field_src" operation="instant" />
+       <field id="field_temporal_splitting" field_ref="field_src" grid_ref="grid_dst" />
+    </file>
+    
+    <file id="atm_output_axis_transformation_duplicate_scalar" output_freq="4ts" type="one_file" enabled="true">
+       <field field_ref="field_Z" />
+       <field id="field_0D" field_ref="field_Z" name="field_0D" grid_ref="grid0D" />
+       <field id="field_duplicate_scalar" field_ref="field_0D" name="field_duplicate_scalar" grid_ref="grid1D_duplicate_scalar" />
+    </file>
+
+
+
+
+
+    <file id="atm_output" output_freq="1ts" type="one_file" enabled="false">
+       <field field_ref="field3D" />
+       <field field_ref="field2D" /> 
+       <field field_ref="field_X" />
+       <field field_ref="field_Y" />
+       <field field_ref="field_XY" />
+       <field field_ref="field_Z" />
+       <field field_ref="field_XYZ" />
+       <field field_ref="field_XZ" />
+       <field field_ref="field_YZ" />
+       <field field_ref="pressure"  /> 
+       <field field_ref="field3D_resend" />
+    </file>
+
+    <file id="atm_output_other" output_freq="1ts" type="one_file" enabled="false">
+       <field field_ref="other_field3D" />
+       <field field_ref="other_field2D" /> 
+       <field field_ref="other_field_X" />
+       <field field_ref="other_field_Y" />
+       <field field_ref="other_field_XY" />
+       <field field_ref="other_field_Z" />
+       <field field_ref="other_field_XYZ" />
+       <field field_ref="other_field_XZ" />
+       <field field_ref="other_field_YZ" />
+       <field field_ref="other_pressure"  /> 
+       <field field_ref="other_field3D_resend" />
     </file>
 
     <file id="atm_output_W" output_freq="1ts" enabled="false">
-       <field field_ref="field3D_W" enabled="true"/>
-       <field field_ref="field2D_W" enabled="true"/> 
-       <field field_ref="field_XW" enabled="true"/>
-       <field field_ref="field_YW" enabled="true"/>
-       <field field_ref="field_XYW" enabled="true"/>
-       <field field_ref="field_ZW" enabled="true"/>
-       <field field_ref="field_XYZW" enabled="true"/>
-       <field field_ref="field_XZW" enabled="true"/>
-       <field field_ref="field_YZW" enabled="true"/>
-    </file>
-    
-
-    <file id="atm_output_reorder" output_freq="1ts" enabled="false" >
-       <field field_ref="field2D" grid_ref="grid2D_invert" enabled="true"/>
-    </file>
-    
-    <file id="test_grid_lat" output_freq="1ts" enabled="false">
-      <field field_ref="field3D" operation="instant" />
-      <field id="field_reduce_lat" field_ref="field3D" grid_ref="grid_lat" operation="instant" />
-    </file>
+       <field field_ref="field3D_W" />
+       <field field_ref="field2D_W" /> 
+       <field field_ref="field_XW" />
+       <field field_ref="field_YW" />
+       <field field_ref="field_XYW" />
+       <field field_ref="field_ZW" />
+       <field field_ref="field_XYZW" />
+       <field field_ref="field_XZW" />
+       <field field_ref="field_YZW" />
+    </file>
+    
     
   </file_definition>
