Index: XIOS/dev/branch_openmp/bld.cfg
===================================================================
--- XIOS/dev/branch_openmp/bld.cfg	(revision 1329)
+++ XIOS/dev/branch_openmp/bld.cfg	(revision 1331)
@@ -40,11 +40,11 @@
 #bld::target test_omp.exe 
 #bld::target test_complete_omp.exe 
-bld::target test_remap.exe 
+#bld::target test_remap.exe 
 bld::target test_remap_ref.exe 
 bld::target test_remap_omp.exe 
 #bld::target test_unstruct_omp.exe
 #bld::target test_netcdf_omp.exe
-bld::target test_client.exe 
-bld::target test_complete.exe
+#bld::target test_client.exe 
+#bld::target test_complete.exe
 #bld::target test_remap.exe
 #bld::target test_unstruct.exe
Index: XIOS/dev/branch_openmp/src/attribute_map.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/attribute_map.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/attribute_map.hpp	(revision 1331)
@@ -76,4 +76,5 @@
             /// PropriÃ©tÃ© statique ///
             static CAttributeMap * Current;
+            #pragma omp threadprivate(Current)
 
       };  // class CAttributeMap
Index: XIOS/dev/branch_openmp/src/buffer_client.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/buffer_client.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/buffer_client.hpp	(revision 1331)
@@ -13,4 +13,5 @@
     public:
       static size_t maxRequestSize;
+      #pragma omp threadprivate(maxRequestSize)
 
       CClientBuffer(ep_lib::MPI_Comm intercomm, int serverRank, StdSize bufferSize, StdSize estimatedMaxEventSize, StdSize maxBufferedEvents);
Index: XIOS/dev/branch_openmp/src/client.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/client.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/client.hpp	(revision 1331)
@@ -7,42 +7,55 @@
 namespace xios
 {
-    class CClient
-    {
-      public:
-        static void initialize(const string& codeId, ep_lib::MPI_Comm& localComm, ep_lib::MPI_Comm& returnComm);
-        static void finalize(void);
-        static void registerContext(const string& id, ep_lib::MPI_Comm contextComm);
+  class CClient
+  {
+    public:
+      static void initialize(const string& codeId, ep_lib::MPI_Comm& localComm, ep_lib::MPI_Comm& returnComm);
+      static void finalize(void);
+      static void registerContext(const string& id, ep_lib::MPI_Comm contextComm);
 
-        static ep_lib::MPI_Comm intraComm;
-        static ep_lib::MPI_Comm interComm;
-        //static std::list<MPI_Comm> contextInterComms;
-        static std::list<ep_lib::MPI_Comm> *contextInterComms_ptr;
-        static int serverLeader;
-        static bool is_MPI_Initialized ;
+      static ep_lib::MPI_Comm intraComm;
+      #pragma omp threadprivate(intraComm)
+   
+      static ep_lib::MPI_Comm interComm;
+      #pragma omp threadprivate(interComm)
 
-        //! Get rank of the current process
-        static int getRank();
+      //static std::list<MPI_Comm> contextInterComms;
+      static std::list<ep_lib::MPI_Comm> *contextInterComms_ptr;
+      #pragma omp threadprivate(contextInterComms_ptr)
 
-        //! Open a file stream to write the info logs
-        static void openInfoStream(const StdString& fileName);
-        //! Write the info logs to standard output
-        static void openInfoStream();
-        //! Close the info logs file if it opens
-        static void closeInfoStream();
+      static int serverLeader;
+      #pragma omp threadprivate(serverLeader)
+      
+      static bool is_MPI_Initialized ;
+      #pragma omp threadprivate(is_MPI_Initialized)
 
-        //! Open a file stream to write the error log
-        static void openErrorStream(const StdString& fileName);
-        //! Write the error log to standard error output
-        static void openErrorStream();
-        //! Close the error log file if it opens
-        static void closeErrorStream();
+      //! Get rank of the current process
+      static int getRank();
 
-      protected:
-        static int rank;
-        static StdOFStream m_infoStream;
-        static StdOFStream m_errorStream;
+      //! Open a file stream to write the info logs
+      static void openInfoStream(const StdString& fileName);
+      //! Write the info logs to standard output
+      static void openInfoStream();
+      //! Close the info logs file if it opens
+      static void closeInfoStream();
 
-        static void openStream(const StdString& fileName, const StdString& ext, std::filebuf* fb);
-    };
+      //! Open a file stream to write the error log
+      static void openErrorStream(const StdString& fileName);
+      //! Write the error log to standard error output
+      static void openErrorStream();
+      //! Close the error log file if it opens
+      static void closeErrorStream();
+
+    protected:
+      static int rank;
+      #pragma omp threadprivate(rank)
+
+      static StdOFStream m_infoStream;
+      #pragma omp threadprivate(m_infoStream)
+      static StdOFStream m_errorStream;
+      #pragma omp threadprivate(m_errorStream)
+
+      static void openStream(const StdString& fileName, const StdString& ext, std::filebuf* fb);
+  };
 }
 
Index: XIOS/dev/branch_openmp/src/cxios.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/cxios.cpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/cxios.cpp	(revision 1331)
@@ -15,8 +15,8 @@
 namespace xios
 {
-  string CXios::rootFile="./iodef.xml" ;
-  string CXios::xiosCodeId="xios.x" ;
-  string CXios::clientFile="./xios_client";
-  string CXios::serverFile="./xios_server";
+  const string CXios::rootFile="./iodef.xml" ;
+  const string CXios::xiosCodeId="xios.x" ;
+  const string CXios::clientFile="./xios_client";
+  const string CXios::serverFile="./xios_server";
 
   bool CXios::isClient ;
@@ -37,5 +37,13 @@
   {
     set_new_handler(noMemory);
-    parseFile(rootFile);
+    int tmp_rank;
+    MPI_Comm_rank(MPI_COMM_WORLD, &tmp_rank);
+    #pragma omp critical
+    {
+      std::cout<<"thread "<<tmp_rank<<"("<<omp_get_thread_num()<<")"<<" parsing rootfile"<<std::endl;
+      parseFile(rootFile);
+      std::cout<<"thread "<<tmp_rank<<"("<<omp_get_thread_num()<<")"<<" parsed rootfile"<<std::endl;
+    }
+    #pragma omp barrier
     parseXiosConfig();
   }
@@ -78,5 +86,5 @@
     if(isServer) 
     { 
-      num_ep = omp_get_num_threads();
+      num_ep = 1;
     }
         
Index: XIOS/dev/branch_openmp/src/cxios.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/cxios.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/cxios.hpp	(revision 1331)
@@ -14,46 +14,58 @@
   {
     public:
-     static void initialize(void) ;
-     static void initClientSide(const string & codeId, ep_lib::MPI_Comm& localComm, ep_lib::MPI_Comm& returnComm) ;
-     static void initServerSide(void) ;
-     static void clientFinalize(void) ;
-     static void parseFile(const string& filename) ;
+      static void initialize(void) ;
+      static void initClientSide(const string & codeId, ep_lib::MPI_Comm& localComm, ep_lib::MPI_Comm& returnComm) ;
+      static void initServerSide(void) ;
+      static void clientFinalize(void) ;
+      static void parseFile(const string& filename) ;
 
-     template <typename T>
-     static T getin(const string& id,const T& defaultValue) ;
+      template <typename T>
+      static T getin(const string& id,const T& defaultValue) ;
 
-     template <typename T>
-     static T getin(const string& id) ;
+      template <typename T>
+      static T getin(const string& id) ;
 
     public:
-     static string rootFile ; //!< Configuration filename
-     static string xiosCodeId ; //!< Identity for XIOS
-     static string clientFile; //!< Filename template for client
-     static string serverFile; //!< Filename template for server
+      static const string rootFile ; //!< Configuration filename
+      static const string xiosCodeId ; //!< Identity for XIOS
+      static const string clientFile; //!< Filename template for client
+      static const string serverFile; //!< Filename template for server
+      //#pragma omp threadprivate(rootFile, xiosCodeId, clientFile, serverFile)
 
-     static bool isClient ; //!< Check if xios is client
-     static bool isServer ; //!< Check if xios is server
+      static bool isClient ; //!< Check if xios is client
+      #pragma omp threadprivate(isClient)
+      static bool isServer ; //!< Check if xios is server
+      #pragma omp threadprivate(isServer)
 
-     static ep_lib::MPI_Comm globalComm ; //!< Global communicator
+      static ep_lib::MPI_Comm globalComm ; //!< Global communicator
+      #pragma omp threadprivate(globalComm)
 
-     static bool printLogs2Files; //!< Printing out logs into files
-     static bool usingOasis ; //!< Using Oasis
-     static bool usingServer ; //!< Using server (server mode)
-     static double bufferSizeFactor; //!< Factor used to tune the buffer size
-     static const double defaultBufferSizeFactor; //!< Default factor value
-     static StdSize minBufferSize; //!< Minimum buffer size
-     static bool isOptPerformance; //!< Check if buffer size is for performance (as large as possible)
-     static CRegistry* globalRegistry ; //!< global registry which is wrote by the root process of the servers
-     static double recvFieldTimeout; //!< Time to wait for data before issuing an error when receiving a field
+      static bool printLogs2Files; //!< Printing out logs into files
+      #pragma omp threadprivate(printLogs2Files)
+      static bool usingOasis ; //!< Using Oasis
+      #pragma omp threadprivate(usingOasis)
+      static bool usingServer ; //!< Using server (server mode)
+      #pragma omp threadprivate(usingServer)
+      static double bufferSizeFactor; //!< Factor used to tune the buffer size
+      #pragma omp threadprivate(bufferSizeFactor)
+      static const double defaultBufferSizeFactor; //!< Default factor value
+      static StdSize minBufferSize; //!< Minimum buffer size
+      #pragma omp threadprivate(minBufferSize)
+      static bool isOptPerformance; //!< Check if buffer size is for performance (as large as possible)
+      #pragma omp threadprivate(isOptPerformance)
+      static CRegistry* globalRegistry ; //!< global registry which is wrote by the root process of the servers
+      #pragma omp threadprivate(globalRegistry)
+      static double recvFieldTimeout; //!< Time to wait for data before issuing an error when receiving a field
+      #pragma omp threadprivate(recvFieldTimeout)
 
     public:
-     //! Setting xios to use server mode
-     static void setUsingServer();
+      //! Setting xios to use server mode
+      static void setUsingServer();
 
-     //! Setting xios NOT to use server mode
-     static void setNotUsingServer();
+      //! Setting xios NOT to use server mode
+      static void setNotUsingServer();
 
-     //! Initialize server (if any)
-     static  void initServer();
+      //! Initialize server (if any)
+      static  void initServer();
 
     private:
Index: XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.hpp	(revision 1331)
@@ -105,4 +105,5 @@
       //static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > engines;
       static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > *engines_ptr;
+      #pragma om threadprivate(engines_ptr)
   }; // class CSpatialTransformFilterEngine
 } // namespace xios
Index: XIOS/dev/branch_openmp/src/group_factory.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/group_factory.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/group_factory.hpp	(revision 1331)
@@ -70,4 +70,5 @@
          /// PropriÃ©tÃ©s statiques ///
          static StdString CurrContext;
+//         #pragma omp threadprivate(CurrContext)
 
    }; // class CGroupFactory
Index: XIOS/dev/branch_openmp/src/indent.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/indent.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/indent.hpp	(revision 1331)
@@ -10,5 +10,7 @@
     public:
     static int defaultIncSize;
+    #pragma omp threadprivate(defaultIncSize)
     static int index ;
+    #pragma omp threadprivate(index)
     int incSize ;
     int offset ;
Index: XIOS/dev/branch_openmp/src/indent_xml.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/indent_xml.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/indent_xml.hpp	(revision 1331)
@@ -8,35 +8,37 @@
 namespace xios
 {
-   /// ////////////////////// DÃ©clarations ////////////////////// ///
-   class CIndent
-   {
-      public :
+  /// ////////////////////// DÃ©clarations ////////////////////// ///
+  class CIndent
+  {
+    public :
 
-         /// MÃ©thodes statiques ///
-         static StdOStream & NIndent  (StdOStream & out);
-         static StdOStream & IncIndent(StdOStream & out);
-         static StdOStream & DecEndl  (StdOStream & out);
+      /// MÃ©thodes statiques ///
+      static StdOStream & NIndent  (StdOStream & out);
+      static StdOStream & IncIndent(StdOStream & out);
+      static StdOStream & DecEndl  (StdOStream & out);
 
-      private :
+    private :
 
-         /// PropriÃ©tÃ©s  statiques ///
-         static unsigned int Indent;
-         static StdString    Increm;
-         static bool         WithLine;
+      /// PropriÃ©tÃ©s  statiques ///
+      static unsigned int Indent;
+      #pragma omp threadprivate(Indent)
+      static StdString    Increm;
+      #pragma omp threadprivate(Increm)
+      static bool         WithLine;
+      #pragma omp threadprivate(WithLine)
 
-   }; // class CIndent
+  }; // class CIndent
 
-    ///--------------------------------------------------------------
+  ///--------------------------------------------------------------
     
-   class CIndentedXml
-   {
-      public :
+  class CIndentedXml
+  {
+    public :
+      /// MÃ©thode statique ///
+      static StdString Indented(const StdString & content);
 
-         /// MÃ©thode statique ///
-         static StdString Indented(const StdString & content);
+  }; // class CIndentedXml
 
-   }; // class CIndentedXml
-
-    ///--------------------------------------------------------------
+  ///--------------------------------------------------------------
 
 } // namespace xios
Index: XIOS/dev/branch_openmp/src/node/axis.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/axis.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/axis.hpp	(revision 1331)
@@ -173,7 +173,8 @@
          static bool initializeTransformationMap(std::map<StdString, ETranformationType>& m);
          static bool initializeTransformationMap();
-         //static std::map<StdString, ETranformationType> transformationMapList_;
          static std::map<StdString, ETranformationType> *transformationMapList_ptr;
+         #pragma omp threadprivate(transformationMapList_ptr)
          static bool dummyTransformationMapList_;
+         #pragma omp threadprivate(dummyTransformationMapList_)
 
          DECLARE_REF_FUNC(Axis,axis)
Index: XIOS/dev/branch_openmp/src/node/compute_connectivity_domain.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/compute_connectivity_domain.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/compute_connectivity_domain.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CComputeConnectivityDomain
 
Index: XIOS/dev/branch_openmp/src/node/context.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/context.cpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/context.cpp	(revision 1331)
@@ -23,7 +23,7 @@
 namespace xios {
 
-  shared_ptr<CContextGroup> CContext::root;
-
-   /// ////////////////////// DÃ©finitions ////////////////////// ///
+  shared_ptr<CContextGroup> * CContext::root_ptr = 0;
+
+   /// ////////////////////// Dfinitions ////////////////////// ///
 
    CContext::CContext(void)
@@ -59,6 +59,7 @@
    CContextGroup* CContext::getRoot(void)
    {
-      if (root.get()==NULL) root=shared_ptr<CContextGroup>(new CContextGroup(xml::CXMLNode::GetRootName()));
-      return root.get();
+      //std::cout<<omp_get_thread_num()<<" get root name = "<<xml::CXMLNode::GetRootName()<<std::endl;
+      if (root_ptr==0) root_ptr = new shared_ptr<CContextGroup>(new CContextGroup(xml::CXMLNode::GetRootName()));
+      return root_ptr->get();
    }
 
@@ -182,5 +183,5 @@
       if (!this->hasChild())
       {
-         //oss << "<!-- No definition -->" << std::endl; // fait planter l'incrÃ©mentation
+         //oss << "<!-- No definition -->" << std::endl; // fait planter l'incrmentation
       }
       else
@@ -555,9 +556,9 @@
    void CContext::solveAllInheritance(bool apply) // default : apply = true
    {
-     // RÃ©solution des hÃ©ritages descendants (cÃ d des hÃ©ritages de groupes)
+     // Rsolution des hritages descendants (cd des hritages de groupes)
      // pour chacun des contextes.
       solveDescInheritance(apply);
 
-     // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers.
+     // Rsolution des hritages par rfrence au niveau des fichiers.
       const vector<CFile*> allFiles=CFile::getAll();
       const vector<CGrid*> allGrids= CGrid::getAll();
@@ -583,7 +584,7 @@
 
       for (unsigned int i = 0; i < allFiles.size(); i++)
-         if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est dÃ©fini.
+         if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est dfini.
          {
-            if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixÃ© Ã  vrai.
+            if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fix  vrai.
             {
               if ((initDate + allFiles[i]->output_freq.getValue()) < (initDate + this->getCalendar()->getTimeStep()))
@@ -610,5 +611,5 @@
 
       if (enabledFiles.size() == 0)
-         DEBUG(<<"Aucun fichier ne va Ãªtre sorti dans le contexte nommÃ© \""
+         DEBUG(<<"Aucun fichier ne va tre sorti dans le contexte nomm \""
                << getId() << "\" !");
    }
@@ -847,5 +848,5 @@
       prepareTimeseries();
 
-      //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers Ã  sortir.
+      //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers  sortir.
       this->findEnabledFiles();
       this->findEnabledReadModeFiles();
@@ -1257,5 +1258,5 @@
     CContext* context = CObjectFactory::CreateObject<CContext>(id).get();
     getRoot();
-    if (!hasctxt) CGroupFactory::AddChild(root, context->getShared());
+    if (!hasctxt) CGroupFactory::AddChild(*root_ptr, context->getShared());
 
 #define DECLARE_NODE(Name_, name_) \
Index: XIOS/dev/branch_openmp/src/node/context.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/context.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/context.hpp	(revision 1331)
@@ -206,5 +206,6 @@
 
          // Context root
-         static shared_ptr<CContextGroup> root;
+         static shared_ptr<CContextGroup> *root_ptr;
+         #pragma omp threadprivate(root_ptr)
 
          // Determine context on client or not
Index: XIOS/dev/branch_openmp/src/node/domain.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/domain.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/domain.hpp	(revision 1331)
@@ -217,7 +217,8 @@
          static bool initializeTransformationMap(std::map<StdString, ETranformationType>& m);
          static bool initializeTransformationMap();
-         //static std::map<StdString, ETranformationType> transformationMapList_;
          static std::map<StdString, ETranformationType> *transformationMapList_ptr;
+         #pragma omp threadprivate(transformationMapList_ptr)
          static bool _dummyTransformationMapList;
+         #pragma omp threadprivate(_dummyTransformationMapList)
 
          DECLARE_REF_FUNC(Domain,domain)
Index: XIOS/dev/branch_openmp/src/node/expand_domain.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/expand_domain.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/expand_domain.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CExpandDomain
 
Index: XIOS/dev/branch_openmp/src/node/extract_axis_to_scalar.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/extract_axis_to_scalar.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/extract_axis_to_scalar.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CScalar>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CExtractAxisToScalar
 
Index: XIOS/dev/branch_openmp/src/node/extract_domain_to_axis.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/extract_domain_to_axis.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/extract_domain_to_axis.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CExtractDomainToAxis
 
Index: XIOS/dev/branch_openmp/src/node/generate_rectilinear_domain.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/generate_rectilinear_domain.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/generate_rectilinear_domain.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CGenerateRectilinearDomain
 
Index: XIOS/dev/branch_openmp/src/node/interpolate_axis.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/interpolate_axis.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/interpolate_axis.hpp	(revision 1331)
@@ -62,4 +62,5 @@
       static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CInterpolateAxis
 
Index: XIOS/dev/branch_openmp/src/node/interpolate_domain.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/interpolate_domain.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/interpolate_domain.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CInterpolateDomain
 
Index: XIOS/dev/branch_openmp/src/node/inverse_axis.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/inverse_axis.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/inverse_axis.hpp	(revision 1331)
@@ -59,4 +59,5 @@
       static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
 
   }; // class CInverseAxis
Index: XIOS/dev/branch_openmp/src/node/mesh.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/mesh.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/mesh.hpp	(revision 1331)
@@ -80,8 +80,8 @@
       int nbFaces_;
 
-      //static std::map <StdString, CMesh> meshList;
       static std::map <StdString, CMesh> *meshList_ptr;
-      //static std::map <StdString, vector<int> > domainList;
+      #pragma omp threadprivate(meshList_ptr)
       static std::map <StdString, vector<int> > *domainList_ptr;
+      #pragma omp threadprivate(domainList_ptr)
       CClientClientDHTSizet* pNodeGlobalIndex;                    // pointer to a map <nodeHash, nodeIdxGlo>
       CClientClientDHTSizet* pEdgeGlobalIndex;                    // pointer to a map <edgeHash, edgeIdxGlo>
Index: XIOS/dev/branch_openmp/src/node/reduce_axis_to_scalar.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/reduce_axis_to_scalar.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/reduce_axis_to_scalar.hpp	(revision 1331)
@@ -59,4 +59,5 @@
       static CTransformation<CScalar>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CReduceAxisToScalar
 
Index: XIOS/dev/branch_openmp/src/node/reduce_domain_to_axis.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/reduce_domain_to_axis.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/reduce_domain_to_axis.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CReduceDomainToAxis
 
Index: XIOS/dev/branch_openmp/src/node/reduce_domain_to_scalar.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/reduce_domain_to_scalar.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/reduce_domain_to_scalar.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CScalar>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CReduceDomainToScalar
 
Index: XIOS/dev/branch_openmp/src/node/scalar.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/scalar.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/scalar.hpp	(revision 1331)
@@ -88,7 +88,8 @@
            static bool initializeTransformationMap(std::map<StdString, ETranformationType>& m);
            static bool initializeTransformationMap();
-           //static std::map<StdString, ETranformationType> transformationMapList_;
            static std::map<StdString, ETranformationType> *transformationMapList_ptr;
+           #pragma omp threadprivate(transformationMapList_ptr)
            static bool dummyTransformationMapList_;
+           #pragma omp threadprivate(dummyTransformationMapList_)
 
 
Index: XIOS/dev/branch_openmp/src/node/transformation.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/transformation.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/transformation.hpp	(revision 1331)
@@ -35,4 +35,5 @@
       typedef std::map<ETranformationType, CreateTransformationCallBack> CallBackMap;
       static CallBackMap* transformationCreationCallBacks_;
+      #pragma omp threadprivate(transformationCreationCallBacks_)
 
       static bool registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn);
Index: XIOS/dev/branch_openmp/src/node/zoom_axis.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/zoom_axis.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/zoom_axis.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CZoomAxis
 
Index: XIOS/dev/branch_openmp/src/node/zoom_domain.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/zoom_domain.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/node/zoom_domain.hpp	(revision 1331)
@@ -60,4 +60,5 @@
       static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node);
       static bool _dummyRegistered;
+      #pragma omp threadprivate(_dummyRegistered)
   }; // class CZoomDomain
 
Index: XIOS/dev/branch_openmp/src/object_factory.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/object_factory.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/object_factory.hpp	(revision 1331)
@@ -12,54 +12,55 @@
 namespace xios
 {
-   /// ////////////////////// DÃ©clarations ////////////////////// ///
-   class CObjectFactory
-   {
-      public :
+  /// ////////////////////// DÃ©clarations ////////////////////// ///
+  class CObjectFactory
+  {
+    public :
 
-         /// Mutateurs ///
-         static void SetCurrentContextId(const StdString & context);
+      /// Mutateurs ///
+      static void SetCurrentContextId(const StdString & context);
 
-         /// Accesseurs ///
-         static StdString & GetCurrentContextId(void);
+      /// Accesseurs ///
+      static StdString & GetCurrentContextId(void);
 
-         template <typename U>
-            static  boost::shared_ptr<U> GetObject(const StdString & id);
+      template <typename U>
+      static  boost::shared_ptr<U> GetObject(const StdString & id);
 
-         template <typename U>
-            static  boost::shared_ptr<U> GetObject(const StdString& context,const StdString & id);
+      template <typename U>
+      static  boost::shared_ptr<U> GetObject(const StdString& context,const StdString & id);
 
-         template <typename U>
-            static  boost::shared_ptr<U> GetObject(const U * const object);
+      template <typename U>
+      static  boost::shared_ptr<U> GetObject(const U * const object);
 
-         template <typename U>
-            static  int GetObjectNum(void);
-         template <typename U>
-            static  int GetObjectIdNum(void);
+      template <typename U>
+      static  int GetObjectNum(void);
+      template <typename U>
+      static  int GetObjectIdNum(void);
 
-         template <typename U>
-            static  const std::vector<boost::shared_ptr<U> > &
-               GetObjectVector(const StdString & context = CObjectFactory::GetCurrentContextId());
+      template <typename U>
+      static  const std::vector<boost::shared_ptr<U> > &
+             GetObjectVector(const StdString & context = CObjectFactory::GetCurrentContextId());
 
-         /// Tests ///
-         template <typename U>
-            static  bool HasObject(const StdString & id);
+      /// Tests ///
+      template <typename U>
+      static  bool HasObject(const StdString & id);
 
-         template <typename U>
-            static  bool HasObject(const StdString& context,const StdString & id);
+      template <typename U>
+      static  bool HasObject(const StdString& context,const StdString & id);
 
-         /// Instanciateur ///
-         template <typename U>
-            static  boost::shared_ptr<U> CreateObject(const StdString & id = StdString(""));
+      /// Instanciateur ///
+      template <typename U>
+      static  boost::shared_ptr<U> CreateObject(const StdString & id = StdString(""));
 
-         template <typename U> static const StdString& GetUIdBase(void);
-         template <typename U> static StdString GenUId(void);
-         template <typename U> static bool IsGenUId(const StdString& id);
+      template <typename U> static const StdString& GetUIdBase(void);
+      template <typename U> static StdString GenUId(void);
+      template <typename U> static bool IsGenUId(const StdString& id);
 
-      private :
+    private :
 
-         /// PropriÃ©tÃ©s statiques ///
-         static StdString CurrContext;
+      /// PropriÃ©tÃ©s statiques ///
+      static StdString CurrContext;
+//      #pragma omp threadprivate(CurrContext)
 
-   }; // class CObjectFactory
+  }; // class CObjectFactory
 } // namespace xios
 
Index: XIOS/dev/branch_openmp/src/object_template.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/object_template.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/object_template.hpp	(revision 1331)
@@ -12,101 +12,104 @@
 namespace xios
 {
-   /// ////////////////////// DÃ©clarations ////////////////////// ///
-   template <class T>
-      class CObjectTemplate
-         : public CObject
-         , public virtual CAttributeMap
-   {
+  /// ////////////////////// DÃ©clarations ////////////////////// ///
+  template <class T>
+  class CObjectTemplate
+    : public CObject
+    , public virtual CAttributeMap
+  {
 
-         /// Friend ///
-         friend class CObjectFactory;
+    /// Friend ///
+    friend class CObjectFactory;
 
-         /// Typedef ///
-         typedef CAttributeMap SuperClassMap;
-         typedef CObject SuperClass;
-         typedef T DerivedType;
+    /// Typedef ///
+    typedef CAttributeMap SuperClassMap;
+    typedef CObject SuperClass;
+    typedef T DerivedType;
 
-         enum EEventId
-         {
-           EVENT_ID_SEND_ATTRIBUTE=100
-         } ;
+    enum EEventId
+    {
+      EVENT_ID_SEND_ATTRIBUTE=100
+    } ;
 
-      public :
+    public :
 
-         /// Autres ///
-         virtual StdString toString(void) const;
-         virtual void fromString(const StdString & str);
+      /// Autres ///
+      virtual StdString toString(void) const;
+      virtual void fromString(const StdString & str);
 
-//         virtual void toBinary  (StdOStream & os) const;
-//         virtual void fromBinary(StdIStream & is);
-         virtual string getName(void) const ;
-         virtual void parse(xml::CXMLNode & node);
+//      virtual void toBinary  (StdOStream & os) const;
+//      virtual void fromBinary(StdIStream & is);
+      virtual string getName(void) const ;
+      virtual void parse(xml::CXMLNode & node);
 
-         /// Accesseurs ///
-         ENodeType getType(void) const;
+      /// Accesseurs ///
+      ENodeType getType(void) const;
 
-         /// Test ///
-         virtual bool hasChild(void) const;
+      /// Test ///
+      virtual bool hasChild(void) const;
 
-         /// Traitements ///
-         virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0);
+      /// Traitements ///
+      virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0);
 
-         /// Traitement statique ///
-         static void ClearAllAttributes(void);
-         std::map<int, size_t> getMinimumBufferSizeForAttributes();
-         void sendAttributToServer(const string& id);
-         void sendAttributToServer(CAttribute& attr) ;
-         void sendAllAttributesToServer();
-         static void recvAttributFromClient(CEventServer& event) ;
-         static bool dispatchEvent(CEventServer& event) ;
+      /// Traitement statique ///
+      static void ClearAllAttributes(void);
+      std::map<int, size_t> getMinimumBufferSizeForAttributes();
+      void sendAttributToServer(const string& id);
+      void sendAttributToServer(CAttribute& attr) ;
+      void sendAllAttributesToServer();
+      static void recvAttributFromClient(CEventServer& event) ;
+      static bool dispatchEvent(CEventServer& event) ;
 
-         bool isEqual(const string& id, const vector<StdString>& excludedAttrs);
-         bool isEqual(T* obj, const vector<StdString>& excludedAttrs);
+      bool isEqual(const string& id, const vector<StdString>& excludedAttrs);
+      bool isEqual(T* obj, const vector<StdString>& excludedAttrs);
 
-         /// Accesseur statique ///
-         static std::vector<boost::shared_ptr<DerivedType> > &
-            GetAllVectobject(const StdString & contextId);
+      /// Accesseur statique ///
+      static std::vector<boost::shared_ptr<DerivedType> > &
+      GetAllVectobject(const StdString & contextId);
 
-         /// Destructeur ///
-         virtual ~CObjectTemplate(void);
+      /// Destructeur ///
+      virtual ~CObjectTemplate(void);
 
-         static bool has(const string& id) ;
-         static bool has(const string& contextId, const string& id) ;
-         static T* get(const string& id) ;
-         static T* get(const T* ptr) ;
-         static T* get(const string& contextId, const string& id) ;
-         T* get(void) ;
-         shared_ptr<T> getShared(void) ;
-         static shared_ptr<T> getShared(const T* ptr) ;
+      static bool has(const string& id) ;
+      static bool has(const string& contextId, const string& id) ;
+      static T* get(const string& id) ;
+      static T* get(const T* ptr) ;
+      static T* get(const string& contextId, const string& id) ;
+      T* get(void) ;
+      shared_ptr<T> getShared(void) ;
+      static shared_ptr<T> getShared(const T* ptr) ;
 
-         static T* create(const string& id=string("")) ;
-         static const vector<T*> getAll() ;
-         static const vector<T*> getAll(const string& contextId) ;
+      static T* create(const string& id=string("")) ;
+      static const vector<T*> getAll() ;
+      static const vector<T*> getAll(const string& contextId) ;
 
-         void generateCInterface(ostream& oss) ;
-         void generateFortran2003Interface(ostream& oss) ;
-         void generateFortranInterface(ostream& oss) ;
+      void generateCInterface(ostream& oss) ;
+      void generateFortran2003Interface(ostream& oss) ;
+      void generateFortranInterface(ostream& oss) ;
 
-      protected :
+    protected :
 
-         /// Constructeurs ///
-         CObjectTemplate(void);
-         explicit CObjectTemplate(const StdString & id);
-         CObjectTemplate(const CObjectTemplate<T> & object,
-                         bool withAttrList = true, bool withId = true);
-         CObjectTemplate(const CObjectTemplate<T> * const object); // Not implemented.
+      /// Constructeurs ///
+      CObjectTemplate(void);
+      explicit CObjectTemplate(const StdString & id);
+      CObjectTemplate(const CObjectTemplate<T> & object,
+                      bool withAttrList = true, bool withId = true);
+      CObjectTemplate(const CObjectTemplate<T> * const object); // Not implemented.
 
-      private :
+    private :
 
-         /// PropriÃ©tÃ©s statiques ///
-         static xios_map<StdString,
-                xios_map<StdString,
-                boost::shared_ptr<DerivedType> > > *AllMapObj_ptr;
-         static xios_map<StdString,
-                std::vector<boost::shared_ptr<DerivedType> > > *AllVectObj_ptr;
+      /// PropriÃ©tÃ©s statiques ///
+      static xios_map<StdString,
+             xios_map<StdString,
+             boost::shared_ptr<DerivedType> > > *AllMapObj_ptr;
+      #pragma omp threadprivate(AllMapObj_ptr)
+      static xios_map<StdString,
+             std::vector<boost::shared_ptr<DerivedType> > > *AllVectObj_ptr;
+      #pragma omp threadprivate(AllVectObj_ptr)
 
-         static xios_map< StdString, long int > *GenId_ptr ;
+      static xios_map< StdString, long int > *GenId_ptr ;
+      #pragma omp threadprivate(GenId_ptr)
 
-   }; // class CObjectTemplate
+  }; // class CObjectTemplate
 } // namespace xios
 
Index: XIOS/dev/branch_openmp/src/test/test_remap_omp.f90
===================================================================
--- XIOS/dev/branch_openmp/src/test/test_remap_omp.f90	(revision 1329)
+++ XIOS/dev/branch_openmp/src/test/test_remap_omp.f90	(revision 1331)
@@ -53,5 +53,5 @@
   if(rank < size-2) then
  
-  !$omp parallel default(firstprivate) 
+  !$omp parallel default(private) 
 
 !!! XIOS Initialization (get the local communicator)
Index: XIOS/dev/branch_openmp/src/timer.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/timer.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/timer.hpp	(revision 1331)
@@ -22,4 +22,5 @@
       //static std::map<std::string,CTimer> allTimer;
       static std::map<std::string,CTimer> *allTimer_ptr;
+      #pragma omp threadprivate(allTimer_ptr)
       static double getTime(void);
       static CTimer& get(std::string name);
Index: XIOS/dev/branch_openmp/src/transformation/Functions/reduction.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/Functions/reduction.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/transformation/Functions/reduction.hpp	(revision 1331)
@@ -25,5 +25,5 @@
   //static std::map<StdString,EReductionType> ReductionOperations;
   static std::map<StdString,EReductionType> *ReductionOperations_ptr;
-
+  #pragma omp threadprivate(ReductionOperations_ptr)
 public:
   CReductionAlgorithm() {}
@@ -62,4 +62,5 @@
   typedef std::map<EReductionType, CreateOperationCallBack> CallBackMap;
   static CallBackMap* reductionCreationCallBacks_;
+  #pragma omp threadprivate(reductionCreationCallBacks_)
 
   static bool registerOperation(EReductionType reduceType, CreateOperationCallBack createFn);
@@ -70,4 +71,5 @@
   static bool initReductionOperation();
   static bool _dummyInit;
+  #pragma omp threadprivate(_dummyInit)
 };
 
Index: XIOS/dev/branch_openmp/src/transformation/grid_transformation_factory_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/grid_transformation_factory_impl.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/transformation/grid_transformation_factory_impl.hpp	(revision 1331)
@@ -60,4 +60,5 @@
   static bool unregisterTransformation(ETranformationType transType);
   static bool initializeTransformation_;
+  #pragma omp threadprivate(initializeTransformation_)
 };
 
Index: XIOS/dev/branch_openmp/src/xml_node.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/xml_node.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/xml_node.hpp	(revision 1331)
@@ -10,47 +10,48 @@
 namespace xios
 {
-   namespace xml
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      typedef xios_map<StdString, StdString> THashAttributes;
+  namespace xml
+  {
+    /// ////////////////////// DÃ©clarations ////////////////////// ///
+    typedef xios_map<StdString, StdString> THashAttributes;
 
-      class CXMLNode
-      {
-         public :
+    class CXMLNode
+    {
+      public :
 
-            /// Constructeurs ///
-            CXMLNode(rapidxml::xml_node<char> * const root);
+        /// Constructeurs ///
+        CXMLNode(rapidxml::xml_node<char> * const root);
 
-            /// Destructeur ///
-            ~CXMLNode(void);
+        /// Destructeur ///
+        ~CXMLNode(void);
 
-            /// Accesseurs ///
-            StdString getElementName(void) const;
-            THashAttributes getAttributes(void) const;
+        /// Accesseurs ///
+        StdString getElementName(void) const;
+        THashAttributes getAttributes(void) const;
 
-            /// Mutateurs ///
-            bool goToNextElement(void);
-            bool goToChildElement(void);
-            bool goToParentElement(void);
-            bool getContent(StdString & content);
+        /// Mutateurs ///
+        bool goToNextElement(void);
+        bool goToChildElement(void);
+        bool goToParentElement(void);
+        bool getContent(StdString & content);
 
-            /// Accesseurs statiques ///
-            static const StdString & GetRootName(void);
+        /// Accesseurs statiques ///
+        static const StdString & GetRootName(void);
 
-         private :
+      private :
 
-            /// Constructeurs ///
-            CXMLNode(void);                        // Not implemented yet.
-            CXMLNode(const CXMLNode & node);       // Not implemented yet.
-            CXMLNode(const CXMLNode * const node); // Not implemented yet.
+        /// Constructeurs ///
+        CXMLNode(void);                        // Not implemented yet.
+        CXMLNode(const CXMLNode & node);       // Not implemented yet.
+        CXMLNode(const CXMLNode * const node); // Not implemented yet.
 
-            rapidxml::xml_node<char> * node;
-            int level;
+        rapidxml::xml_node<char> * node;
+        int level;
 
-            static StdString RootName;
+        static StdString RootName;
+        #pragma omp threadprivate(RootName)
 
-      }; //class CXMLParser
-
-   }// namespace xml
+    }; //class CXMLParser
+ 
+  }// namespace xml
 } // namespace xios
 
Index: XIOS/dev/branch_openmp/src/xml_parser.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/xml_parser.cpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/xml_parser.cpp	(revision 1331)
@@ -11,5 +11,5 @@
    namespace xml
    {
-      /// ////////////////////// DÃ©finitions ////////////////////// ///
+      /// ////////////////////// Dfinitions ////////////////////// ///
 
       void CXMLParser::ParseFile(const StdString & filename, const std::set<StdString>& parseContextList)
Index: XIOS/dev/branch_openmp/src/xml_parser.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/xml_parser.hpp	(revision 1329)
+++ XIOS/dev/branch_openmp/src/xml_parser.hpp	(revision 1331)
@@ -10,41 +10,18 @@
 namespace xios
 {
-   namespace xml
-   {
-      /// ////////////////////// DÃ©clarations ////////////////////// ///
-      class CXMLParser
-      {
-         public :
+  namespace xml
+  {
+    /// ////////////////////// DÃ©clarations ////////////////////// ///
+    class CXMLParser
+    {
+      public :
+        static void ParseFile(const StdString & filename, const std::set<StdString>& parseList = std::set<StdString>());
+        static void ParseString(const StdString & xmlContent);
+        static void ParseStream(StdIStream & stream, const string& fluxId, const std::set<StdString>& parseList);
+        template <class T>
+        static void ParseInclude(StdIStream & stream, const string& fluxId, T & object);
 
-            static void ParseFile(const StdString & filename, const std::set<StdString>& parseList = std::set<StdString>());
-            static void ParseString(const StdString & xmlContent);
-            static void ParseStream(StdIStream & stream, const string& fluxId, const std::set<StdString>& parseList);
-            template <class T>
-               static void ParseInclude(StdIStream & stream, const string& fluxId, T & object);
-
-      }; //class CXMLParser
-/*
-      template <class T>
-         void CXMLParser::ParseInclude(StdIStream & stream, T& object)
-      {
-         StdOStringStream oss;
-         while(!stream.eof() && !stream.fail ())
-            oss.put(stream.get());
-         try
-         {
-            const StdString xmlcontent( oss.str(), 0, oss.str().size()-1 );
-            rapidxml::xml_document<char> doc;
-            doc.parse<0>(const_cast<char*>(xmlcontent.c_str()));
-            CXMLNode node(doc.first_node());
-            object.parse(node);
-         }
-         catch (rapidxml::parse_error & exc)
-         {
-            ERROR("CXMLParser::ParseStream(StdIStream & stream)",
-                  << "RapidXML error : " << exc.what() << " !");
-         }
-      }
-*/
-   }// namespace xml
+    }; //class CXMLParser
+  }// namespace xml
 } // namespace xios
 
