Index: XIOS/dev/dev_trunk_omp/inputs/REMAP/iodef.xml
===================================================================
--- XIOS/dev/dev_trunk_omp/inputs/REMAP/iodef.xml	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/inputs/REMAP/iodef.xml	(revision 1669)
@@ -6,5 +6,5 @@
    <field_definition level="1" >
     <field_group id="fields_src" operation="instant">
-       <field id="src_field_2D" domain_ref="src_domain"/>
+       <field id="src_field_2D"  domain_ref="src_domain"/>
        <field id="src_field_2D_clone" domain_ref="src_domain_clone"/>
        <field id="src_field_3D" domain_ref="src_domain" axis_ref="src_axis"/>       
@@ -34,15 +34,15 @@
       <file_group id="write_files" >
         <file id="output_2D" name="output_2D" >
-          <field field_ref="src_field_2D" name="field_src" />
-          <field field_ref="src_field_2D" name="field_dst_regular_0"  domain_ref="dst_domain_regular_pole" default_value="10.e+5"/>
-          <field field_ref="dst_field_2D" name="field_dst_regular_1" />
-          <field field_ref="dst_field_2D_regular_pole" name="field_dst_regular_2" />
-          <field field_ref="dst_field_2D_clone" name="field_dst_regular_3" />
+          <field field_ref="src_field_2D" name="field_src" build_workflow_graph=".TRUE."/>
+          <field field_ref="src_field_2D" name="field_dst_regular_0"  domain_ref="dst_domain_regular_pole" default_value="10.e+5" build_workflow_graph=".TRUE."/>
+          <field field_ref="dst_field_2D" name="field_dst_regular_1" build_workflow_graph=".TRUE."/>
+          <field field_ref="dst_field_2D_regular_pole" name="field_dst_regular_2" build_workflow_graph=".TRUE."/>
+          <field field_ref="dst_field_2D_clone" name="field_dst_regular_3" build_workflow_graph=".TRUE."/>
         </file> 
        <file id="output_3D" name="output_3D" >
-          <field field_ref="src_field_3D" name="field_src" />
-          <field field_ref="src_field_3D_pression" name="field" />
-          <field field_ref="dst_field_3D_interp" name="field_dst_interp_domain" />
-          <field field_ref="dst_field_3D_interp" name="field_dst_interp_domain_axis" domain_ref="dst_domain_regular_pole"/>  
+          <field field_ref="src_field_3D" name="field_src" build_workflow_graph=".TRUE."/>
+          <field field_ref="src_field_3D_pression" name="field" build_workflow_graph=".TRUE."/>
+          <field field_ref="dst_field_3D_interp" name="field_dst_interp_domain" build_workflow_graph=".TRUE."/>
+          <field field_ref="dst_field_3D_interp" name="field_dst_interp_domain_axis" domain_ref="dst_domain_regular_pole" build_workflow_graph=".TRUE."/>  
        </file>
        <file id="output_4D" name="output_4D" >
Index: XIOS/dev/dev_trunk_omp/src/cxios.cpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/cxios.cpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/cxios.cpp	(revision 1669)
@@ -173,6 +173,9 @@
        delete globalRegistry ;
        
+       CGraphviz::showStaticWorkflowGraph();
        CGraphviz::buildStaticWorkflowGraph();
+       
      }
+
 
 #ifdef XIOS_MEMTRACK
Index: XIOS/dev/dev_trunk_omp/src/filter/spatial_transform_filter.cpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/filter/spatial_transform_filter.cpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/filter/spatial_transform_filter.cpp	(revision 1669)
@@ -65,4 +65,5 @@
           (*CWorkflowGraph::mapFilters_ptr)[filterOut] = "Spatial transform filter";
           (*CWorkflowGraph::mapFilters_ptr)[filterIn] = "Spatial transform filter";
+          std::cout<<"CSpatialTransformFilter::CSpatialTransformFilter CWorkflowGraph::mapFieldToFilters_ptr->size = "<<CWorkflowGraph::mapFieldToFilters_ptr->size()<<std::endl;
         }
       }
Index: XIOS/dev/dev_trunk_omp/src/graphviz.cpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/graphviz.cpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/graphviz.cpp	(revision 1669)
@@ -62,3 +62,12 @@
   }
   CATCH
+
+
+
+  void CGraphviz::showStaticWorkflowGraph()
+  TRY
+  {
+    CWorkflowGraph::showStaticWorkflow();
+  }
+  CATCH
 }
Index: XIOS/dev/dev_trunk_omp/src/graphviz.hpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/graphviz.hpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/graphviz.hpp	(revision 1669)
@@ -17,4 +17,5 @@
       CGraphviz();
       static void buildStaticWorkflowGraph();
+      static void showStaticWorkflowGraph();
 
     private:
Index: XIOS/dev/dev_trunk_omp/src/node/field.cpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/node/field.cpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/node/field.cpp	(revision 1669)
@@ -70,4 +70,15 @@
 
   //----------------------------------------------------------------
+
+   const StdString& CField::getOId(void)
+   {
+     if (this->getId().compare(2,5,"field") == 0 && this->getId().compare(8,5,"undef") == 0)
+     {
+       if(!name.isEmpty()) return name;
+       else return CField::get(field_ref)->getOId();
+     }
+     else if(!name.isEmpty()) return name;
+     else return this->getId();
+   }
 
    void CField::setVirtualVariableGroup(CVariableGroup* newVVariableGroup)
@@ -1190,6 +1201,6 @@
                  int filterOut = filter->getFilterId();
                  int filterIn = (std::static_pointer_cast<COutputPin>(filters.second))->getFilterId();
-                 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterOut);
-                 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterIn);
+                 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut);
+                 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn);
                  (*CWorkflowGraph::mapFilters_ptr)[filterOut] = filter->GetName();
                  (*CWorkflowGraph::mapFilters_ptr)[filterIn] = filters.second->GetName();
@@ -1247,8 +1258,9 @@
              int filterOut = getTemporalDataFilter(gc, file->output_freq)->getFilterId();
              int filterIn = fileWriterFilter->getFilterId();
-             (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterOut);
-             (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterIn);
+             (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut);
+             (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn);
              (*CWorkflowGraph::mapFilters_ptr)[filterOut] = "Temporal filter";
              (*CWorkflowGraph::mapFilters_ptr)[filterIn] = fileWriterFilter->GetName();
+             std::cout<<"CField::buildFilterGraph this->getId() = "<<this->getId() <<" ; this->getOId() = "<<this->getOId()<< std::endl;
            }
          }
@@ -1297,6 +1309,6 @@
        int filterOut = fieldRef->instantDataFilter->getFilterId();
        int filterIn = (std::static_pointer_cast<COutputPin>(filters.first))->getFilterId();
-       (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getId()].push_back(filterOut);
-       (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getId()].push_back(filterIn);
+       (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getOId()].push_back(filterOut);
+       (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getOId()].push_back(filterIn);
        (*CWorkflowGraph::mapFilters_ptr)[filterOut] = fieldRef->getInstantDataFilter()->GetName();
        (*CWorkflowGraph::mapFilters_ptr)[filterIn] = filters.first->GetName();
@@ -1397,6 +1409,6 @@
          int filterOut = instantDataFilter->getFilterId();
          int filterIn = (std::static_pointer_cast<COutputPin>(temporalFilter))->getFilterId();
-         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterOut);
-         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterIn);
+         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut);
+         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn);
          (*CWorkflowGraph::mapFilters_ptr)[filterOut] = getInstantDataFilter()->GetName();
          (*CWorkflowGraph::mapFilters_ptr)[filterIn] = temporalFilter->GetName();
@@ -1451,6 +1463,6 @@
          int filterOut = selfReferenceFilter->getFilterId();
          int filterIn = (std::static_pointer_cast<COutputPin>(temporalFilter))->getFilterId();
-         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterOut);
-         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getId()].push_back(filterIn);
+         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut);
+         (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn);
          (*CWorkflowGraph::mapFilters_ptr)[filterOut] = selfReferenceFilter->GetName();
          (*CWorkflowGraph::mapFilters_ptr)[filterIn] = temporalFilter->GetName();
Index: XIOS/dev/dev_trunk_omp/src/node/field.hpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/node/field.hpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/node/field.hpp	(revision 1669)
@@ -89,4 +89,6 @@
 
       public:
+         const StdString& getOId(void);
+
          int getNStep(void) const;
 
Index: XIOS/dev/dev_trunk_omp/src/workflow_graph.cpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/workflow_graph.cpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/workflow_graph.cpp	(revision 1669)
@@ -34,9 +34,7 @@
     size_t filterIdx = 0;
     filters.resize(mapFilters_ptr->size());
-    //printf("mapFilters_ptr size = %lu\n", mapFilters_ptr->size());
     for (auto it=mapFilters_ptr->begin(); it != mapFilters_ptr->end(); it++)
     {
       filters[it->first]=it->second;
-      //std::cout<<"mapFilters_ptr["<<it->first<<"]="<<it->second<<std::endl;
     }
 
@@ -53,3 +51,44 @@
   CATCH
 
+
+  void CWorkflowGraph::showStaticWorkflow()
+  TRY
+  {
+    if(mapFilters_ptr!=0 && !mapFilters_ptr->empty())
+    for (auto it=mapFilters_ptr->begin(); it != mapFilters_ptr->end(); it++)
+    {
+      std::cout<<"mapFilters_ptr["<<it->first<<"]="<<it->second<<std::endl;
+    }
+    else std::cout<<"mapFilters_ptr empty"<<std::endl;
+
+    if(mapFieldToFilters_ptr!=0 && !mapFieldToFilters_ptr->empty())
+    for (auto it=mapFieldToFilters_ptr->begin(); it != mapFieldToFilters_ptr->end(); it++)
+    {
+      for (size_t i = 0; i < it->second.size(); i++)
+      {
+        std::cout<<"mapFieldToFilters_ptr["<<it->first<<"]["<<i<<"] = "<<it->second[i]<<std::endl;
+      }
+    }
+    else std::cout<<"mapFieldToFilters_ptr empty"<<mapFieldToFilters_ptr<<std::endl;
+
+    if(mapFilterTimestamps_ptr!=0 && !mapFilterTimestamps_ptr->empty())
+    for (auto it=mapFilterTimestamps_ptr->begin(); it != mapFilterTimestamps_ptr->end(); it++)
+    {
+      for (size_t i = 0; i < it->second.size(); i++)
+      {
+        std::cout<<"mapFilterTimestamps_ptr["<<it->first<<"]["<<i<<"] = "<<it->second[i]<<std::endl;
+      }
+    }
+    else std::cout<<"mapFilterTimestamps_ptr empty"<<std::endl;
+
+    if(timestamps_ptr!=0 && !timestamps_ptr->empty())
+    for (auto it=timestamps_ptr->begin(); it != timestamps_ptr->end(); it++)
+    {
+      std::cout<<"timestamps_ptr = "<<*it<<std::endl;
+    }
+    else std::cout<<"timestamps_ptr empty"<<std::endl;
+
+  }
+  CATCH
+
 }
Index: XIOS/dev/dev_trunk_omp/src/workflow_graph.hpp
===================================================================
--- XIOS/dev/dev_trunk_omp/src/workflow_graph.hpp	(revision 1668)
+++ XIOS/dev/dev_trunk_omp/src/workflow_graph.hpp	(revision 1669)
@@ -54,4 +54,5 @@
 
       static void buildStaticWorkflow();
+      static void showStaticWorkflow();
 
 
