diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index db259b54db9a54166166c794848133e379a8ffb2..a24d686c2fe485fbaba65c1112538d5e5739d7aa 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -48,6 +48,7 @@ void Print_Usage(const char *name)
   Msg::Direct("  -format string        Set output mesh format (msh, msh1, msh2, unv, vrml, stl, mesh,");
   Msg::Direct("                          bdf, p3d, cgns, med)");
   Msg::Direct("  -bin                  Use binary format when available");  
+  Msg::Direct("  -parametric           Save vertices with their parametric coordinates");  
   Msg::Direct("  -algo string          Select mesh algorithm (de, del2d, frontal, iso, netgen, tetgen)");
   Msg::Direct("  -smooth int           Set number of mesh smoothing steps");
   Msg::Direct("  -optimize[_netgen]    Optimize quality of tetrahedral elements");
@@ -473,6 +474,10 @@ void Get_Options(int argc, char *argv[])
         i++;
         CTX.mesh.binary = 1;
       }
+      else if(!strcmp(argv[i] + 1, "parametric")) {
+        i++;
+        CTX.mesh.save_parametric = 1;
+      }
       else if(!strcmp(argv[i] + 1, "algo")) {
         i++;
         if(argv[i] != NULL) {
diff --git a/Common/Context.h b/Common/Context.h
index e0f76886ca51804bcb4780e634a0c8df2f58b0b7..81447815a284f8996d8ab25ffe3b49e7398b7c23 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -171,7 +171,7 @@ class Context_T {
     int min_circ_points, min_curv_points;
     double normals, tangents, explode;
     int color_carousel;
-    int save_all, save_groups_of_nodes, binary, bdf_field_format;
+    int save_all, save_groups_of_nodes, binary, bdf_field_format, save_parametric;
     int smooth_normals, reverse_all_normals;
     double angle_smooth_normals;
     double allow_swap_edge_angle;
diff --git a/Common/CreateFile.cpp b/Common/CreateFile.cpp
index db2590239c55fac8b3b664aaf5c71ef6ff1073c1..e7b527b5413d9a72e4514dcd9bb6b464f4c988e2 100644
--- a/Common/CreateFile.cpp
+++ b/Common/CreateFile.cpp
@@ -139,7 +139,7 @@ void CreateOutputFile(const char *filename, int format)
 
   case FORMAT_MSH:
     GModel::current()->writeMSH(name, CTX.mesh.msh_file_version, CTX.mesh.binary, 
-                                CTX.mesh.save_all, CTX.mesh.scaling_factor);
+                                CTX.mesh.save_all, CTX.mesh.save_parametric,CTX.mesh.scaling_factor);
     break;
 
   case FORMAT_STL:
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index 0fe1425b03c8699cb2196d6e0c13c7ddbfe992d1..e86f9d439fb701198c33a9d8c2b0d42074a2ee97 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -1066,6 +1066,8 @@ StringXNumber MeshOptions_Number[] = {
 
   { F,   "SaveAll" , opt_mesh_save_all , 0. , 
     "Ignore Physical definitions and save all elements" },
+  { F,   "SaveParametric" , opt_mesh_save_parametric , 0. , 
+    "Save parametric coordinates of nodes" },
   { F,   "SaveGroupsOfNodes" , opt_mesh_save_groups_of_nodes , 0. , 
     "Save groups of nodes for each physical line and surface (UNV mesh format only)" },
   { F|O, "ScalingFactor" , opt_mesh_scaling_factor , 1.0 ,
diff --git a/Common/Options.cpp b/Common/Options.cpp
index b69b767aefce71da1ad53d48e0597b2c81880c6b..a061866bac361bb286d51fb87d4bb82ce921f347 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -5293,6 +5293,14 @@ double opt_mesh_save_all(OPT_ARGS_NUM)
   return CTX.mesh.save_all;
 }
 
+double opt_mesh_save_parametric(OPT_ARGS_NUM)
+{
+  if(action & GMSH_SET)
+    CTX.mesh.save_parametric = val ? 1 : 0;
+  return CTX.mesh.save_parametric;
+}
+
+
 double opt_mesh_save_groups_of_nodes(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
diff --git a/Common/Options.h b/Common/Options.h
index 0dc370d866bb20a2b8fab77362328fd76e896e67..bd70424558c769fe0c6b99628429522f57ce4a6f 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -491,6 +491,7 @@ double opt_mesh_dual(OPT_ARGS_NUM);
 double opt_mesh_voronoi(OPT_ARGS_NUM);
 double opt_mesh_draw_skin_only(OPT_ARGS_NUM);
 double opt_mesh_save_all(OPT_ARGS_NUM);
+double opt_mesh_save_parametric(OPT_ARGS_NUM);
 double opt_mesh_save_groups_of_nodes(OPT_ARGS_NUM);
 double opt_mesh_color_carousel(OPT_ARGS_NUM);
 double opt_mesh_zone_definition(OPT_ARGS_NUM);
diff --git a/Fltk/GUI_Classifier.cpp b/Fltk/GUI_Classifier.cpp
index a6c0528bb39e2c9ed828c56c2a9e17332771720b..f2779e955069e728492adb4547a3c61383a5abad 100644
--- a/Fltk/GUI_Classifier.cpp
+++ b/Fltk/GUI_Classifier.cpp
@@ -423,7 +423,7 @@ classificationEditor::classificationEditor()
     o->end();
   }
   {
-    Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Reverse Engineer Surfaces");
+    Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Reparametrize Surfaces");
     reverse_eng = o;
     o->hide();
     o->deactivate();
diff --git a/Fltk/GUI_Extras.cpp b/Fltk/GUI_Extras.cpp
index 3e87cce7c9c3fd5891f3c3a5f16913fb517fb402..f473e4be7b48265e2948424e5b719464fac74f18 100644
--- a/Fltk/GUI_Extras.cpp
+++ b/Fltk/GUI_Extras.cpp
@@ -860,6 +860,7 @@ int msh_dialog(const char *name)
   struct _msh_dialog{
     Fl_Window *window;
     Fl_Check_Button *b;
+    Fl_Check_Button *p;
     Fl_Choice *c;
     Fl_Button *ok, *cancel;
   };
@@ -878,7 +879,7 @@ int msh_dialog(const char *name)
 
   if(!dialog){
     dialog = new _msh_dialog;
-    int h = 3 * WB + 3 * BH, w = 2 * BB + 3 * WB, y = WB;
+    int h = 3 * WB + 4 * BH, w = 2 * BB + 3 * WB, y = WB;
     // not a "Dialog_Window" since it is modal 
     dialog->window = new Fl_Double_Window(w, h, "MSH Options");
     dialog->window->box(GMSH_WINDOW_BOX);
@@ -887,6 +888,8 @@ int msh_dialog(const char *name)
     dialog->c->align(FL_ALIGN_RIGHT);
     dialog->b = new Fl_Check_Button(WB, y, 2 * BB + WB, BH, "Save all (ignore physical groups)"); y += BH;
     dialog->b->type(FL_TOGGLE_BUTTON);
+    dialog->p = new Fl_Check_Button(WB, y, 2 * BB + WB, BH, "Save Parametric Coordinates"); y += BH;
+    dialog->p->type(FL_TOGGLE_BUTTON);
     dialog->ok = new Fl_Return_Button(WB, y + WB, BB, BH, "OK");
     dialog->cancel = new Fl_Button(2 * WB + BB, y + WB, BB, BH, "Cancel");
     dialog->window->set_modal();
@@ -897,6 +900,7 @@ int msh_dialog(const char *name)
   dialog->c->value((CTX.mesh.msh_file_version == 1.0) ? 0 : 
                    CTX.mesh.binary ? 2 : 1);
   dialog->b->value(CTX.mesh.save_all ? 1 : 0);
+  dialog->p->value(CTX.mesh.save_parametric ? 1 : 0);
   dialog->window->show();
 
   while(dialog->window->shown()){
@@ -905,10 +909,11 @@ int msh_dialog(const char *name)
       Fl_Widget* o = Fl::readqueue();
       if (!o) break;
       if (o == dialog->ok) {
-        opt_mesh_msh_file_version(0, GMSH_SET | GMSH_GUI, 
-                                  (dialog->c->value() == 0) ? 1. : 2.);
-        opt_mesh_binary(0, GMSH_SET | GMSH_GUI, 
-			(dialog->c->value() == 2) ? 1 : 0);
+	int _binary = (dialog->c->value() == 2)? 1 : 0; 
+	int _parametric = (dialog->p->value() == 1)? 1 : 0; 
+	double _version = (dialog->c->value() == 0) ? 1.0 : 2.0 ;
+        opt_mesh_msh_file_version(0, GMSH_SET | GMSH_GUI,  _version);
+        opt_mesh_binary(0, GMSH_SET | GMSH_GUI,_binary);
         opt_mesh_save_all(0, GMSH_SET | GMSH_GUI, dialog->b->value() ? 1 : 0);
         CreateOutputFile(name, FORMAT_MSH);
         dialog->window->hide();
diff --git a/Geo/GFaceCompound.cpp b/Geo/GFaceCompound.cpp
index 798c91a85372c11a5b465f1b466295f7a36e1fce..4801156e39dc239374e1a1ec4e52539de012016c 100644
--- a/Geo/GFaceCompound.cpp
+++ b/Geo/GFaceCompound.cpp
@@ -137,8 +137,8 @@ void GFaceCompound::parametrize (bool _isU) const
       myAssembler.numberVertex(t->getVertex(2),0, 1); 
     }    
   }    
-  printf("%d %d %d %d\n",_U0.size(),_U1.size(),_V0.size(),_V1.size());
-  printf("creating term %d dofs numbered %d fixed\n", myAssembler.sizeOfR(),myAssembler.sizeOfF());
+  //  printf("%d %d %d %d\n",_U0.size(),_U1.size(),_V0.size(),_V1.size());
+  //  printf("creating term %d dofs numbered %d fixed\n", myAssembler.sizeOfR(),myAssembler.sizeOfF());
   gmshLaplaceTerm laplace (model(), 1.0, 1);
   it = _compound.begin();
   for ( ; it != _compound.end() ; ++it){
diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index d0d64366348ddf68219cfa34c452d88d07ebe398..4b8cdcce5dc7221a3dfdca1232b93900e773e6ec 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -684,8 +684,12 @@ template<class T>
 static void _associateEntityWithElementVertices(GEntity *ge, std::vector<T*> &elements)
 {
   for(unsigned int i = 0; i < elements.size(); i++)
-    for(int j = 0; j < elements[i]->getNumVertices(); j++)
-      elements[i]->getVertex(j)->setEntity(ge);
+    for(int j = 0; j < elements[i]->getNumVertices(); j++){
+      if (!elements[i]->getVertex(j)->onWhat() ||
+	  elements[i]->getVertex(j)->onWhat()->dim() > ge->dim()){
+	elements[i]->getVertex(j)->setEntity(ge);
+      }
+    }
 }
 
 void GModel::_associateEntityWithMeshVertices()
diff --git a/Geo/GModel.h b/Geo/GModel.h
index 35a167e50ab5e4439ee971a6611763b6d7c59c3a..d4379a111791d14e3cafde8368bbe40349741476 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -276,7 +276,7 @@ class GModel
   // Gmsh mesh file format
   int readMSH(const std::string &name);
   int writeMSH(const std::string &name, double version=1.0, bool binary=false,
-               bool saveAll=false, double scalingFactor=1.0);
+               bool saveAll=false, bool saveParametric=false, double scalingFactor=1.0);
 
   // Mesh statistics (as Gmsh post-processing views)
   int writePOS(const std::string &name, bool printElementary,
diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index 93d5d3f083ae4020e8666f8d21848b865d71c847..c9b081d42cbbd35225b5c9e5bf9e1c47f6585f38 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -74,6 +74,7 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
 {
   MElementFactory factory;
   MElement *e = factory.create(type, v, num, part);
+
   if(!e){
     Msg::Error("Unknown type of element %d", type);
     return;
@@ -155,8 +156,11 @@ int GModel::readMSH(const std::string &name)
       }
 
     }
-    else if(!strncmp(&str[1], "NO", 2) || !strncmp(&str[1], "Nodes", 5)) {
-
+    else if(!strncmp(&str[1], "NO", 2) || !strncmp(&str[1], "Nodes", 5) ||
+	    !strncmp(&str[1], "ParametricNodes", 15)) {
+      
+      const bool parametric = ! strncmp(&str[1], "ParametricNodes", 15);
+      
       if(!fgets(str, sizeof(str), fp)) return 0;
       int numVertices;
       if(sscanf(str, "%d", &numVertices) != 1) return 0;
@@ -168,22 +172,79 @@ int GModel::readMSH(const std::string &name)
       for(int i = 0; i < numVertices; i++) {
         int num;
         double xyz[3];
-        if(!binary){
-          if(fscanf(fp, "%d %lf %lf %lf", &num, &xyz[0], &xyz[1], &xyz[2]) != 4)
-            return 0;
-        }
-        else{
-          if(fread(&num, sizeof(int), 1, fp) != 1) return 0;
-          if(swap) SwapBytes((char*)&num, sizeof(int), 1);
-          if(fread(xyz, sizeof(double), 3, fp) != 3) return 0;
-          if(swap) SwapBytes((char*)xyz, sizeof(double), 3);
-        }
+	double uv[2];
+	int iClasDim,iClasTag, typVertex = 3;	
+	
+	MVertex *newVertex = 0;
+
+	if (!parametric){
+	  if(!binary){
+	    if (fscanf(fp, "%d %lf %lf %lf", &num, &xyz[0], &xyz[1], &xyz[2]) != 4)
+	      return 0;	  
+	  }
+	  else{
+	    if(fread(&num, sizeof(int), 1, fp) != 1) return 0;
+	    if(swap) SwapBytes((char*)&num, sizeof(int), 1);
+	    if(fread(xyz, sizeof(double), 3, fp) != 3) return 0;
+	    if(swap) SwapBytes((char*)xyz, sizeof(double), 3);
+	  }
+	  newVertex = new MVertex(xyz[0], xyz[1], xyz[2], 0, num);
+	}
+	else{
+	  if(!binary){	    
+	    if (fscanf(fp, "%d %lf %lf %lf %d %d", &num, &xyz[0], &xyz[1], &xyz[2], &iClasDim, &iClasTag) != 6)
+	      return 0;
+	  }
+	  else{
+	    if(fread(&num, sizeof(int), 1, fp) != 1) return 0;
+	    if(swap) SwapBytes((char*)&num, sizeof(int), 1);
+	    if(fread(xyz, sizeof(double), 3, fp) != 3) return 0;
+	    if(swap) SwapBytes((char*)xyz, sizeof(double), 3);
+	    if(fread(&iClasDim, sizeof(int), 1, fp) != 1) return 0;
+	    if(swap) SwapBytes((char*)&iClasDim, sizeof(int), 1);
+	    if(fread(&iClasTag, sizeof(int), 1, fp) != 1) return 0;
+	    if(swap) SwapBytes((char*)&iClasTag, sizeof(int), 1);
+	  }
+	  
+	  if (iClasDim == 0){
+	    GVertex *gv = getVertexByTag ( iClasTag );
+	    if (gv)gv->deleteMesh();
+	    newVertex = new MVertex(xyz[0], xyz[1], xyz[2], gv, num);
+	  }
+	  else if (iClasDim == 1){
+	    GEdge *ge = getEdgeByTag ( iClasTag );
+	    if(!binary){	    
+	      if (fscanf(fp, "%lf", &uv[0]) != 1)return 0;	      
+	    }
+	    else{
+	      if(fread(uv, sizeof(double), 1, fp) != 1) return 0;
+	      if(swap) SwapBytes((char*)uv, sizeof(double), 1);
+	    }
+	    newVertex = new MEdgeVertex(xyz[0], xyz[1], xyz[2], ge, uv[0], -1.0, num);	      
+	  }
+	  else if (iClasDim == 2){
+	    GFace *gf = getFaceByTag ( iClasTag );
+	    if(!binary){	    
+	      if (fscanf(fp, "%lf %lf", &uv[0], &uv[1]) != 2)return 0;	      
+	    }
+	    else{
+	      if(fread(uv, sizeof(double), 2, fp) != 2) return 0;
+	      if(swap) SwapBytes((char*)uv, sizeof(double), 2);
+	    }	    
+	    newVertex = new MFaceVertex(xyz[0], xyz[1], xyz[2], gf, uv[0], uv[1], num);	      
+	  }
+	  else if (iClasDim == 3){
+	    GRegion *gr = getRegionByTag ( iClasTag );
+	    newVertex = new MVertex(xyz[0], xyz[1], xyz[2], gr, num);	      
+	  }
+	}
         minVertex = std::min(minVertex, num);
         maxVertex = std::max(maxVertex, num);
+
         if(vertexMap.count(num))
           Msg::Warning("Skipping duplicate vertex %d", num);
-        else
-          vertexMap[num] = new MVertex(xyz[0], xyz[1], xyz[2], 0, num);
+	vertexMap[num] = newVertex;
+
         if(numVertices > 100000) 
           Msg::ProgressMeter(i + 1, numVertices, "Reading nodes");
       }
@@ -203,7 +264,6 @@ int GModel::readMSH(const std::string &name)
           vertexVector[it->first] = it->second;
         vertexMap.clear();
       }
-
     }
     else if(!strncmp(&str[1], "ELM", 3) || !strncmp(&str[1], "Elements", 8)) {
 
@@ -391,7 +451,7 @@ static void writeElementsMSH(FILE *fp, const std::vector<T*> &ele, bool saveAll,
 }
 
 int GModel::writeMSH(const std::string &name, double version, bool binary, 
-                     bool saveAll, double scalingFactor)
+                     bool saveAll, bool saveParametric, double scalingFactor)
 {
   FILE *fp = fopen(name.c_str(), binary ? "wb" : "w");
   if(!fp){
@@ -465,7 +525,11 @@ int GModel::writeMSH(const std::string &name, double version, bool binary,
       fprintf(fp, "$EndPhysicalNames\n");
     }
 
-    fprintf(fp, "$Nodes\n");
+    if (saveParametric)
+      fprintf(fp, "$ParametricNodes\n");
+    else
+      fprintf(fp, "$Nodes\n");
+
   }
   else
     fprintf(fp, "$NOD\n");
@@ -475,9 +539,12 @@ int GModel::writeMSH(const std::string &name, double version, bool binary,
   std::vector<GEntity*> entities;
   getEntities(entities);
   for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++) 
-      entities[i]->mesh_vertices[j]->writeMSH(fp, binary, scalingFactor);
-
+    for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++){
+      if (!saveParametric)
+	entities[i]->mesh_vertices[j]->writeMSH(fp, binary, scalingFactor);
+      else
+	entities[i]->mesh_vertices[j]->writeMSH3(fp, binary, scalingFactor);
+    }
   if(binary) fprintf(fp, "\n");
 
   if(version >= 2.0){
diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index 5ab6a729a1a118e803a04f696170b626f78c979c..08485927b48345f7cf87f6161ee9807bfe11a3a1 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -961,7 +961,8 @@ double MTetrahedronN::distoShapeMeasure()
 #if defined(HAVE_GMSH_EMBEDDED)
   return 1.;
 #else
-  if (_disto < -1.e21)_disto = qmDistorsionOfMapping(this);
+  //  if (_disto < -1.e21)
+  _disto = qmDistorsionOfMapping(this);
   return _disto;
 #endif
 }
diff --git a/Geo/MVertex.cpp b/Geo/MVertex.cpp
index 5b55c3ff6893d4d9fd9a7de724c97c51fa4f4f31..19d995c3a9d6da418f66f42b48e4bf30e455b967 100644
--- a/Geo/MVertex.cpp
+++ b/Geo/MVertex.cpp
@@ -25,15 +25,60 @@ bool MVertexLessThanLexicographic::operator()(const MVertex *v1, const MVertex *
   return false;
 }
 
+void MVertex::writeMSH3(FILE *fp, bool binary, double scalingFactor)
+{
+  if(_index < 0) return; // negative index vertices are never saved
+  int myDim = onWhat()->dim(); 
+  int myTag = onWhat()->tag(); 
+  if(!binary){
+    fprintf(fp, "%d %.16g %.16g %.16g %d %d", _index, 
+	    x() * scalingFactor, 
+	    y() * scalingFactor,
+	    z() * scalingFactor,
+	    myDim,myTag);      
+  }
+  else{
+    fwrite(&_index, sizeof(int), 1, fp);
+    double data[3] = {x() * scalingFactor, y() * scalingFactor, z() * scalingFactor};
+    fwrite(data, sizeof(double), 3, fp);
+    fwrite(&myDim, sizeof(int), 1, fp);
+    fwrite(&myTag, sizeof(int), 1, fp);
+  }
+
+  if (myDim == 1){
+    double _u;
+    getParameter(0,_u);
+    if(!binary)
+      fprintf(fp, " %.16g\n", _u); 	    
+    else
+      fwrite(&_u, sizeof(double), 1, fp);
+  }
+  else if (myDim == 2){
+    double _u,_v;
+    getParameter(0,_u);
+    getParameter(1,_v);
+    if(!binary)
+      fprintf(fp, " %.16g %.16g\n", _u,_v); 	    
+    else{
+      fwrite(&_u, sizeof(double), 1, fp);
+      fwrite(&_v, sizeof(double), 1, fp);
+    }
+  }
+  else
+    if(!binary)
+      fprintf(fp, "\n"); 	    
+}
+
+
 void MVertex::writeMSH(FILE *fp, bool binary, double scalingFactor)
 {
   if(_index < 0) return; // negative index vertices are never saved
 
   if(!binary){
     fprintf(fp, "%d %.16g %.16g %.16g\n", _index, 
-            x() * scalingFactor, 
-            y() * scalingFactor,
-            z() * scalingFactor);
+	    x() * scalingFactor, 
+	    y() * scalingFactor,
+	    z() * scalingFactor);      
   }
   else{
     fwrite(&_index, sizeof(int), 1, fp);
@@ -42,6 +87,8 @@ void MVertex::writeMSH(FILE *fp, bool binary, double scalingFactor)
   }
 }
 
+
+
 void MVertex::writeVRML(FILE *fp, double scalingFactor)
 {
   if(_index < 0) return; // negative index vertices are never saved
diff --git a/Geo/MVertex.h b/Geo/MVertex.h
index a0e15c7fd0d0a87a76953cfa0e54bb5497e867e2..99611dbef96ebeea9bbf75b3340cc8a68f24f3b4 100644
--- a/Geo/MVertex.h
+++ b/Geo/MVertex.h
@@ -22,7 +22,7 @@ class MVertexLessThanLexicographic{
 
 // A mesh vertex.
 class MVertex{
- private:
+ protected:
   // the maximum vertex id number in the mesh
   static int _globalNum;
   // the id number of the vertex (this number is unique and is
@@ -107,6 +107,7 @@ class MVertex{
 
   // IO routines
   void writeMSH(FILE *fp, bool binary=false, double scalingFactor=1.0);
+  void writeMSH3(FILE *fp, bool binary=false, double scalingFactor=1.0);
   void writeVRML(FILE *fp, double scalingFactor=1.0);
   void writeUNV(FILE *fp, double scalingFactor=1.0);
   void writeVTK(FILE *fp, bool binary=false, double scalingFactor=1.0,
@@ -120,8 +121,8 @@ class MEdgeVertex : public MVertex{
  protected:
   double _u, _lc;
  public :
-  MEdgeVertex(double x, double y, double z, GEntity *ge, double u, double lc = -1.0) 
-    : MVertex(x, y, z, ge), _u(u), _lc(lc)
+  MEdgeVertex(double x, double y, double z, GEntity *ge, double u, double lc = -1.0, int num = 0) 
+    : MVertex(x, y, z, ge,num), _u(u), _lc(lc)
   {
   }
   virtual ~MEdgeVertex(){}
@@ -142,8 +143,8 @@ class MFaceVertex : public MVertex{
  protected:
   double _u, _v;
  public :
-  MFaceVertex(double x, double y, double z, GEntity *ge, double u, double v) 
-    : MVertex(x, y, z, ge), _u(u), _v(v)
+  MFaceVertex(double x, double y, double z, GEntity *ge, double u, double v, int num =0) 
+    : MVertex(x, y, z, ge, num), _u(u), _v(v)
   {
   }
   virtual ~MFaceVertex(){}
diff --git a/Geo/Makefile b/Geo/Makefile
index 458ee2ad9deb5c7c1a3998f97629d0a3c3d3aae7..7950afdb89949335fd8be185e2f80d6d677b1f44 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -112,7 +112,61 @@ GFaceCompound.o: GFaceCompound.cpp GFaceCompound.h Geo.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Common/Octree.h \
   ../Common/OctreeInternals.h ../Numeric/gmshLinearSystemGmm.h \
-  ../Numeric/gmshLinearSystem.h
+  ../Numeric/gmshLinearSystem.h ../contrib/gmm/gmm.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_ref.h ../contrib/gmm/gmm_except.h \
+  ../contrib/gmm/gmm_std.h ../contrib/gmm/gmm_blas.h \
+  ../contrib/gmm/gmm_scaled.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_transposed.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_conjugated.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_real_part.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_vector.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_blas.h ../contrib/gmm/gmm_sub_index.h \
+  ../contrib/gmm/gmm_def.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_sub_vector.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_sub_index.h ../contrib/gmm/gmm_sub_matrix.h \
+  ../contrib/gmm/gmm_sub_vector.h ../contrib/gmm/gmm_vector_to_matrix.h \
+  ../contrib/gmm/gmm_interface.h ../contrib/gmm/gmm_vector.h \
+  ../contrib/gmm/gmm_matrix.h ../contrib/gmm/gmm_vector.h \
+  ../contrib/gmm/gmm_sub_vector.h ../contrib/gmm/gmm_sub_matrix.h \
+  ../contrib/gmm/gmm_transposed.h ../contrib/gmm/gmm_tri_solve.h \
+  ../contrib/gmm/gmm_interface.h ../contrib/gmm/gmm_blas_interface.h \
+  ../contrib/gmm/gmm_dense_lu.h ../contrib/gmm/gmm_dense_Householder.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_opt.h \
+  ../contrib/gmm/gmm_dense_qr.h ../contrib/gmm/gmm_dense_Householder.h \
+  ../contrib/gmm/gmm_iter_solvers.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_precond_diagonal.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_precond_ildlt.h ../contrib/gmm/gmm_precond.h \
+  ../contrib/gmm/gmm_precond_ildltt.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_precond.h \
+  ../contrib/gmm/gmm_precond_mr_approx_inverse.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_precond_ilu.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_precond_ilutp.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_solver_cg.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_solver_bicgstab.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_solver_qmr.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_solver_constrained_cg.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_solver_Schwarz_additive.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_superlu_interface.h \
+  ../contrib/gmm/gmm_solver_cg.h ../contrib/gmm/gmm_solver_gmres.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_modified_gram_schmidt.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_solver_bicgstab.h ../contrib/gmm/gmm_solver_qmr.h \
+  ../contrib/gmm/gmm_solver_Newton.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_modified_gram_schmidt.h \
+  ../contrib/gmm/gmm_tri_solve.h ../contrib/gmm/gmm_solver_gmres.h \
+  ../contrib/gmm/gmm_solver_bfgs.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_least_squares_cg.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_conjugated.h ../contrib/gmm/gmm_condition_number.h \
+  ../contrib/gmm/gmm_dense_qr.h ../contrib/gmm/gmm_inoutput.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_lapack_interface.h \
+  ../contrib/gmm/gmm_superlu_interface.h \
+  ../contrib/gmm/gmm_domain_decomp.h ../contrib/gmm/gmm_kernel.h
 GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
@@ -152,28 +206,1689 @@ gmshRegion.o: gmshRegion.cpp GModel.h GVertex.h GEntity.h Range.h \
   ExtrudeParams.h ../Common/SmoothData.h ../Common/GmshMessage.h
 gmshSurface.o: gmshSurface.cpp gmshSurface.h Pair.h Range.h SPoint2.h \
   SPoint3.h SVector3.h SBoundingBox3d.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../Common/GmshMessage.h
+  ../Numeric/NumericEmbedded.h ../Common/GmshMessage.h \
+  ../contrib/MathEval/matheval.h
 OCCVertex.o: OCCVertex.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MVertex.h MElement.h \
   ../Common/GmshDefines.h MEdge.h MFace.h ../Common/GmshMessage.h \
   ../Numeric/FunctionSpace.h ../Common/GmshMatrix.h OCCVertex.h \
-  OCCIncludes.h OCCEdge.h OCCFace.h
+  OCCIncludes.h /usr/local/opencascade/inc/config.h \
+  /usr/local/opencascade/inc/BRep_Tool.hxx \
+  /usr/local/opencascade/inc/Standard_Boolean.hxx \
+  /usr/local/opencascade/inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade/inc/Standard_Macro.hxx \
+  /usr/local/opencascade/inc/Standard_Stream.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade/inc/Standard.hxx \
+  /usr/local/opencascade/inc/Standard_Address.hxx \
+  /usr/local/opencascade/inc/Standard_Integer.hxx \
+  /usr/local/opencascade/inc/Standard_values.h \
+  /usr/local/opencascade/inc/Standard_OStream.hxx \
+  /usr/local/opencascade/inc/Standard_CString.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade/inc/Standard_Real.hxx \
+  /usr/local/opencascade/inc/Standard_Character.hxx \
+  /usr/local/opencascade/inc/Standard_ctype.hxx \
+  /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade/inc/Standard_ExtString.hxx \
+  /usr/local/opencascade/inc/Standard_Storable.hxx \
+  /usr/local/opencascade/inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade/inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade/inc/Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_Type.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade/inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade/inc/Standard_Type.lxx \
+  /usr/local/opencascade/inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Geom_Surface.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \
+  /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \
+  /usr/local/opencascade/inc/gp_Mat.lxx \
+  /usr/local/opencascade/inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_SStream.hxx \
+  /usr/local/opencascade/inc/Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.lxx \
+  /usr/local/opencascade/inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.lxx \
+  /usr/local/opencascade/inc/gp_Trsf.hxx \
+  /usr/local/opencascade/inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade/inc/gp_Trsf.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.lxx \
+  /usr/local/opencascade/inc/gp_XY.hxx \
+  /usr/local/opencascade/inc/gp_XY.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec2d.hxx \
+  /usr/local/opencascade/inc/gp_Vec2d.lxx \
+  /usr/local/opencascade/inc/gp_Dir2d.hxx \
+  /usr/local/opencascade/inc/gp_Dir2d.lxx \
+  /usr/local/opencascade/inc/gp_Ax2d.hxx \
+  /usr/local/opencascade/inc/gp_Ax2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec.hxx \
+  /usr/local/opencascade/inc/gp_Vec.lxx \
+  /usr/local/opencascade/inc/gp_Dir.hxx \
+  /usr/local/opencascade/inc/gp_Dir.lxx \
+  /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade/inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade/inc/math_FunctionSet.hxx \
+  /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade/inc/Quantity_Length.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade/inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_Point.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade/inc/math_Function.hxx \
+  /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade/inc/BRepTools.hxx \
+  /usr/local/opencascade/inc/Standard_IStream.hxx \
+  /usr/local/opencascade/inc/TopExp.hxx \
+  /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.hxx \
+  /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/TCollection_SList.lxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.lxx \
+  /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade/inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade/inc/TCollection_List.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade/inc/TopAbs.hxx \
+  /usr/local/opencascade/inc/TopAbs_State.hxx \
+  /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepLib_Command.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/TopoDS_Face.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/LProp_Status.hxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade/inc/TCollection_Array1.lxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.lxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/GProp_GProps.hxx \
+  /usr/local/opencascade/inc/BRepGProp.hxx \
+  /usr/local/opencascade/inc/TopoDS.hxx \
+  /usr/local/opencascade/inc/TopoDS.lxx \
+  /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade/inc/TopExp_Stack.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade/inc/BRep_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade/inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade/inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade/inc/XSControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade/inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade/inc/Interface_ParamType.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade/inc/Message_Gravity.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade/inc/Precision.hxx \
+  /usr/local/opencascade/inc/Precision.lxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade/inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade/inc/ShapeExtend.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade/inc/BRepMesh.hxx \
+  /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.lxx \
+  /usr/local/opencascade/inc/BRepBndLib.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade/inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade/inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade/inc/BOP_Operation.hxx \
+  /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade/inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade/inc/BRepLib.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade/inc/ShapeFix.hxx \
+  /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/TCollection_ListIterator.lxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.lxx \
+  /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \
+  /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.lxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \
+  /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx OCCEdge.h OCCFace.h
 OCCEdge.o: OCCEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h ../Common/GmshMessage.h OCCEdge.h \
-  OCCVertex.h OCCIncludes.h OCCFace.h ../Common/Context.h \
-  ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
+  OCCVertex.h OCCIncludes.h /usr/local/opencascade/inc/config.h \
+  /usr/local/opencascade/inc/BRep_Tool.hxx \
+  /usr/local/opencascade/inc/Standard_Boolean.hxx \
+  /usr/local/opencascade/inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade/inc/Standard_Macro.hxx \
+  /usr/local/opencascade/inc/Standard_Stream.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade/inc/Standard.hxx \
+  /usr/local/opencascade/inc/Standard_Address.hxx \
+  /usr/local/opencascade/inc/Standard_Integer.hxx \
+  /usr/local/opencascade/inc/Standard_values.h \
+  /usr/local/opencascade/inc/Standard_OStream.hxx \
+  /usr/local/opencascade/inc/Standard_CString.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade/inc/Standard_Real.hxx \
+  /usr/local/opencascade/inc/Standard_Character.hxx \
+  /usr/local/opencascade/inc/Standard_ctype.hxx \
+  /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade/inc/Standard_ExtString.hxx \
+  /usr/local/opencascade/inc/Standard_Storable.hxx \
+  /usr/local/opencascade/inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade/inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade/inc/Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_Type.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade/inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade/inc/Standard_Type.lxx \
+  /usr/local/opencascade/inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Geom_Surface.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \
+  /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \
+  /usr/local/opencascade/inc/gp_Mat.lxx \
+  /usr/local/opencascade/inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_SStream.hxx \
+  /usr/local/opencascade/inc/Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.lxx \
+  /usr/local/opencascade/inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.lxx \
+  /usr/local/opencascade/inc/gp_Trsf.hxx \
+  /usr/local/opencascade/inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade/inc/gp_Trsf.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.lxx \
+  /usr/local/opencascade/inc/gp_XY.hxx \
+  /usr/local/opencascade/inc/gp_XY.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec2d.hxx \
+  /usr/local/opencascade/inc/gp_Vec2d.lxx \
+  /usr/local/opencascade/inc/gp_Dir2d.hxx \
+  /usr/local/opencascade/inc/gp_Dir2d.lxx \
+  /usr/local/opencascade/inc/gp_Ax2d.hxx \
+  /usr/local/opencascade/inc/gp_Ax2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec.hxx \
+  /usr/local/opencascade/inc/gp_Vec.lxx \
+  /usr/local/opencascade/inc/gp_Dir.hxx \
+  /usr/local/opencascade/inc/gp_Dir.lxx \
+  /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade/inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade/inc/math_FunctionSet.hxx \
+  /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade/inc/Quantity_Length.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade/inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_Point.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade/inc/math_Function.hxx \
+  /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade/inc/BRepTools.hxx \
+  /usr/local/opencascade/inc/Standard_IStream.hxx \
+  /usr/local/opencascade/inc/TopExp.hxx \
+  /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.hxx \
+  /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/TCollection_SList.lxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.lxx \
+  /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade/inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade/inc/TCollection_List.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade/inc/TopAbs.hxx \
+  /usr/local/opencascade/inc/TopAbs_State.hxx \
+  /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepLib_Command.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/TopoDS_Face.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/LProp_Status.hxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade/inc/TCollection_Array1.lxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.lxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/GProp_GProps.hxx \
+  /usr/local/opencascade/inc/BRepGProp.hxx \
+  /usr/local/opencascade/inc/TopoDS.hxx \
+  /usr/local/opencascade/inc/TopoDS.lxx \
+  /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade/inc/TopExp_Stack.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade/inc/BRep_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade/inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade/inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade/inc/XSControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade/inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade/inc/Interface_ParamType.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade/inc/Message_Gravity.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade/inc/Precision.hxx \
+  /usr/local/opencascade/inc/Precision.lxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade/inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade/inc/ShapeExtend.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade/inc/BRepMesh.hxx \
+  /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.lxx \
+  /usr/local/opencascade/inc/BRepBndLib.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade/inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade/inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade/inc/BOP_Operation.hxx \
+  /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade/inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade/inc/BRepLib.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade/inc/ShapeFix.hxx \
+  /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/TCollection_ListIterator.lxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.lxx \
+  /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \
+  /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.lxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \
+  /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx OCCFace.h \
+  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
+  /usr/local/opencascade/inc/Geom2dLProp_CLProps2d.hxx \
+  /usr/local/opencascade/inc/Geom_BezierCurve.hxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfReal.hxx \
+  /usr/local/opencascade/inc/Geom_BoundedCurve.hxx \
+  /usr/local/opencascade/inc/Geom_OffsetCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_OffsetCurve.hxx \
+  /usr/local/opencascade/inc/Geom_Ellipse.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Ellipse.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Conic.hxx \
+  /usr/local/opencascade/inc/Geom_Conic.hxx \
+  /usr/local/opencascade/inc/Geom_Parabola.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Parabola.hxx \
+  /usr/local/opencascade/inc/Geom_Hyperbola.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Hyperbola.hxx \
+  /usr/local/opencascade/inc/Geom_TrimmedCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_TrimmedCurve.hxx \
+  /usr/local/opencascade/inc/Geom_Circle.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Circle.hxx \
+  /usr/local/opencascade/inc/Geom_Line.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Line.hxx
 OCCFace.o: OCCFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h \
-  OCCFace.h ../Common/GmshMessage.h ../Numeric/Numeric.h \
+  GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h \
+  /usr/local/opencascade/inc/config.h \
+  /usr/local/opencascade/inc/BRep_Tool.hxx \
+  /usr/local/opencascade/inc/Standard_Boolean.hxx \
+  /usr/local/opencascade/inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade/inc/Standard_Macro.hxx \
+  /usr/local/opencascade/inc/Standard_Stream.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade/inc/Standard.hxx \
+  /usr/local/opencascade/inc/Standard_Address.hxx \
+  /usr/local/opencascade/inc/Standard_Integer.hxx \
+  /usr/local/opencascade/inc/Standard_values.h \
+  /usr/local/opencascade/inc/Standard_OStream.hxx \
+  /usr/local/opencascade/inc/Standard_CString.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade/inc/Standard_Real.hxx \
+  /usr/local/opencascade/inc/Standard_Character.hxx \
+  /usr/local/opencascade/inc/Standard_ctype.hxx \
+  /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade/inc/Standard_ExtString.hxx \
+  /usr/local/opencascade/inc/Standard_Storable.hxx \
+  /usr/local/opencascade/inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade/inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade/inc/Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_Type.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade/inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade/inc/Standard_Type.lxx \
+  /usr/local/opencascade/inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Geom_Surface.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \
+  /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \
+  /usr/local/opencascade/inc/gp_Mat.lxx \
+  /usr/local/opencascade/inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_SStream.hxx \
+  /usr/local/opencascade/inc/Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.lxx \
+  /usr/local/opencascade/inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.lxx \
+  /usr/local/opencascade/inc/gp_Trsf.hxx \
+  /usr/local/opencascade/inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade/inc/gp_Trsf.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.lxx \
+  /usr/local/opencascade/inc/gp_XY.hxx \
+  /usr/local/opencascade/inc/gp_XY.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec2d.hxx \
+  /usr/local/opencascade/inc/gp_Vec2d.lxx \
+  /usr/local/opencascade/inc/gp_Dir2d.hxx \
+  /usr/local/opencascade/inc/gp_Dir2d.lxx \
+  /usr/local/opencascade/inc/gp_Ax2d.hxx \
+  /usr/local/opencascade/inc/gp_Ax2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec.hxx \
+  /usr/local/opencascade/inc/gp_Vec.lxx \
+  /usr/local/opencascade/inc/gp_Dir.hxx \
+  /usr/local/opencascade/inc/gp_Dir.lxx \
+  /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade/inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade/inc/math_FunctionSet.hxx \
+  /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade/inc/Quantity_Length.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade/inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_Point.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade/inc/math_Function.hxx \
+  /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade/inc/BRepTools.hxx \
+  /usr/local/opencascade/inc/Standard_IStream.hxx \
+  /usr/local/opencascade/inc/TopExp.hxx \
+  /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.hxx \
+  /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/TCollection_SList.lxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.lxx \
+  /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade/inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade/inc/TCollection_List.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade/inc/TopAbs.hxx \
+  /usr/local/opencascade/inc/TopAbs_State.hxx \
+  /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepLib_Command.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/TopoDS_Face.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/LProp_Status.hxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade/inc/TCollection_Array1.lxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.lxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/GProp_GProps.hxx \
+  /usr/local/opencascade/inc/BRepGProp.hxx \
+  /usr/local/opencascade/inc/TopoDS.hxx \
+  /usr/local/opencascade/inc/TopoDS.lxx \
+  /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade/inc/TopExp_Stack.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade/inc/BRep_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade/inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade/inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade/inc/XSControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade/inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade/inc/Interface_ParamType.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade/inc/Message_Gravity.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade/inc/Precision.hxx \
+  /usr/local/opencascade/inc/Precision.lxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade/inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade/inc/ShapeExtend.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade/inc/BRepMesh.hxx \
+  /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.lxx \
+  /usr/local/opencascade/inc/BRepBndLib.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade/inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade/inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade/inc/BOP_Operation.hxx \
+  /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade/inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade/inc/BRepLib.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade/inc/ShapeFix.hxx \
+  /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/TCollection_ListIterator.lxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.lxx \
+  /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \
+  /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.lxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \
+  /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx OCCEdge.h OCCFace.h \
+  ../Common/GmshMessage.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Common/VertexArray.h ../Geo/SVector3.h \
-  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
+  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
+  /usr/local/opencascade/inc/Geom_CylindricalSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_CylindricalSurface.hxx \
+  /usr/local/opencascade/inc/Geom_ElementarySurface.hxx \
+  /usr/local/opencascade/inc/gp_Ax3.hxx \
+  /usr/local/opencascade/inc/gp_Ax3.lxx \
+  /usr/local/opencascade/inc/Geom_ConicalSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_ConicalSurface.hxx \
+  /usr/local/opencascade/inc/Geom_BSplineSurface.hxx \
+  /usr/local/opencascade/inc/GeomAbs_BSplKnotDistribution.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray2OfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfInteger.hxx \
+  /usr/local/opencascade/inc/Geom_BoundedSurface.hxx \
+  /usr/local/opencascade/inc/Geom_SphericalSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_SphericalSurface.hxx \
+  /usr/local/opencascade/inc/Geom_ToroidalSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_ToroidalSurface.hxx \
+  /usr/local/opencascade/inc/Geom_SurfaceOfRevolution.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_SurfaceOfRevolution.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_SweptSurface.hxx \
+  /usr/local/opencascade/inc/Geom_SweptSurface.hxx \
+  /usr/local/opencascade/inc/Geom_BezierSurface.hxx \
+  /usr/local/opencascade/inc/Geom_Plane.hxx \
+  /usr/local/opencascade/inc/gp_Pln.hxx \
+  /usr/local/opencascade/inc/gp_Pln.lxx \
+  /usr/local/opencascade/inc/gp_Lin.hxx \
+  /usr/local/opencascade/inc/gp_Lin.lxx \
+  /usr/local/opencascade/inc/BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade/inc/BRepMesh_DataMapOfVertexInteger.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfVertexInteger.hxx \
+  /usr/local/opencascade/inc/MeshShape_DataMapOfShapeListOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_MeshShape_DataMapNodeOfDataMapOfShapeListOfTransient.hxx \
+  /usr/local/opencascade/inc/MeshShape_DataMapOfIntegerPnt.hxx \
+  /usr/local/opencascade/inc/Handle_MeshShape_DataMapNodeOfDataMapOfIntegerPnt.hxx \
+  /usr/local/opencascade/inc/BRepMesh_IndexedMapOfVertex.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_IndexedMapNodeOfIndexedMapOfVertex.hxx \
+  /usr/local/opencascade/inc/TColStd_IndexedMapOfInteger.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_IndexedMapNodeOfIndexedMapOfInteger.hxx \
+  /usr/local/opencascade/inc/BRepMesh_DataMapOfIntegerListOfXY.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfIntegerListOfXY.hxx \
+  /usr/local/opencascade/inc/BRepMesh_Status.hxx \
+  /usr/local/opencascade/inc/TColStd_IndexedMapOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_IndexedMapNodeOfIndexedMapOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_BRepAdaptor_HSurface.hxx \
+  /usr/local/opencascade/inc/BRepMesh_FastDiscret.lxx
 OCCRegion.o: OCCRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h \
-  OCCFace.h OCCRegion.h ../Common/GmshMessage.h
+  GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h \
+  /usr/local/opencascade/inc/config.h \
+  /usr/local/opencascade/inc/BRep_Tool.hxx \
+  /usr/local/opencascade/inc/Standard_Boolean.hxx \
+  /usr/local/opencascade/inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade/inc/Standard_Macro.hxx \
+  /usr/local/opencascade/inc/Standard_Stream.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade/inc/Standard.hxx \
+  /usr/local/opencascade/inc/Standard_Address.hxx \
+  /usr/local/opencascade/inc/Standard_Integer.hxx \
+  /usr/local/opencascade/inc/Standard_values.h \
+  /usr/local/opencascade/inc/Standard_OStream.hxx \
+  /usr/local/opencascade/inc/Standard_CString.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade/inc/Standard_Real.hxx \
+  /usr/local/opencascade/inc/Standard_Character.hxx \
+  /usr/local/opencascade/inc/Standard_ctype.hxx \
+  /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade/inc/Standard_ExtString.hxx \
+  /usr/local/opencascade/inc/Standard_Storable.hxx \
+  /usr/local/opencascade/inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade/inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade/inc/Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_Type.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade/inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade/inc/Standard_Type.lxx \
+  /usr/local/opencascade/inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Geom_Surface.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \
+  /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \
+  /usr/local/opencascade/inc/gp_Mat.lxx \
+  /usr/local/opencascade/inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_SStream.hxx \
+  /usr/local/opencascade/inc/Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.lxx \
+  /usr/local/opencascade/inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.lxx \
+  /usr/local/opencascade/inc/gp_Trsf.hxx \
+  /usr/local/opencascade/inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade/inc/gp_Trsf.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.lxx \
+  /usr/local/opencascade/inc/gp_XY.hxx \
+  /usr/local/opencascade/inc/gp_XY.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec2d.hxx \
+  /usr/local/opencascade/inc/gp_Vec2d.lxx \
+  /usr/local/opencascade/inc/gp_Dir2d.hxx \
+  /usr/local/opencascade/inc/gp_Dir2d.lxx \
+  /usr/local/opencascade/inc/gp_Ax2d.hxx \
+  /usr/local/opencascade/inc/gp_Ax2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec.hxx \
+  /usr/local/opencascade/inc/gp_Vec.lxx \
+  /usr/local/opencascade/inc/gp_Dir.hxx \
+  /usr/local/opencascade/inc/gp_Dir.lxx \
+  /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade/inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade/inc/math_FunctionSet.hxx \
+  /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade/inc/Quantity_Length.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade/inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_Point.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade/inc/math_Function.hxx \
+  /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade/inc/BRepTools.hxx \
+  /usr/local/opencascade/inc/Standard_IStream.hxx \
+  /usr/local/opencascade/inc/TopExp.hxx \
+  /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.hxx \
+  /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/TCollection_SList.lxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.lxx \
+  /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade/inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade/inc/TCollection_List.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade/inc/TopAbs.hxx \
+  /usr/local/opencascade/inc/TopAbs_State.hxx \
+  /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepLib_Command.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/TopoDS_Face.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/LProp_Status.hxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade/inc/TCollection_Array1.lxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.lxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/GProp_GProps.hxx \
+  /usr/local/opencascade/inc/BRepGProp.hxx \
+  /usr/local/opencascade/inc/TopoDS.hxx \
+  /usr/local/opencascade/inc/TopoDS.lxx \
+  /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade/inc/TopExp_Stack.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade/inc/BRep_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade/inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade/inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade/inc/XSControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade/inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade/inc/Interface_ParamType.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade/inc/Message_Gravity.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade/inc/Precision.hxx \
+  /usr/local/opencascade/inc/Precision.lxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade/inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade/inc/ShapeExtend.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade/inc/BRepMesh.hxx \
+  /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.lxx \
+  /usr/local/opencascade/inc/BRepBndLib.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade/inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade/inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade/inc/BOP_Operation.hxx \
+  /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade/inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade/inc/BRepLib.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade/inc/ShapeFix.hxx \
+  /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/TCollection_ListIterator.lxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.lxx \
+  /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \
+  /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.lxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \
+  /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx OCCEdge.h OCCFace.h \
+  OCCRegion.h ../Common/GmshMessage.h
 discreteEdge.o: discreteEdge.cpp discreteEdge.h GModel.h GVertex.h \
   GEntity.h Range.h SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h \
   SVector3.h GFace.h GEdgeLoop.h Pair.h GRegion.h ../Common/GmshMessage.h \
@@ -235,9 +1950,408 @@ GModelIO_Mesh.o: GModelIO_Mesh.cpp GModel.h GVertex.h GEntity.h Range.h \
 GModelIO_OCC.o: GModelIO_OCC.cpp GModelIO_OCC.h GModel.h GVertex.h \
   GEntity.h Range.h SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h \
   SVector3.h GFace.h GEdgeLoop.h Pair.h GRegion.h OCCIncludes.h \
-  ../Common/GmshMessage.h ../Common/Context.h ../Geo/CGNSOptions.h \
-  ../Mesh/PartitionOptions.h OCCVertex.h OCCEdge.h OCCFace.h OCCRegion.h \
-  MElement.h ../Common/GmshDefines.h MVertex.h MEdge.h MFace.h \
+  /usr/local/opencascade/inc/config.h \
+  /usr/local/opencascade/inc/BRep_Tool.hxx \
+  /usr/local/opencascade/inc/Standard_Boolean.hxx \
+  /usr/local/opencascade/inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade/inc/Standard_Macro.hxx \
+  /usr/local/opencascade/inc/Standard_Stream.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade/inc/Standard.hxx \
+  /usr/local/opencascade/inc/Standard_Address.hxx \
+  /usr/local/opencascade/inc/Standard_Integer.hxx \
+  /usr/local/opencascade/inc/Standard_values.h \
+  /usr/local/opencascade/inc/Standard_OStream.hxx \
+  /usr/local/opencascade/inc/Standard_CString.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade/inc/Standard_Real.hxx \
+  /usr/local/opencascade/inc/Standard_Character.hxx \
+  /usr/local/opencascade/inc/Standard_ctype.hxx \
+  /usr/local/opencascade/inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade/inc/Standard_ExtString.hxx \
+  /usr/local/opencascade/inc/Standard_Storable.hxx \
+  /usr/local/opencascade/inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade/inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade/inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade/inc/Geom_Curve.hxx \
+  /usr/local/opencascade/inc/Geom_Geometry.hxx \
+  /usr/local/opencascade/inc/MMgt_TShared.hxx \
+  /usr/local/opencascade/inc/Standard_Transient.hxx \
+  /usr/local/opencascade/inc/Standard_Type.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade/inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade/inc/Standard_Type.lxx \
+  /usr/local/opencascade/inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade/inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade/inc/Geom_Surface.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.hxx \
+  /usr/local/opencascade/inc/gp_XYZ.lxx /usr/local/opencascade/inc/gp.hxx \
+  /usr/local/opencascade/inc/gp.lxx /usr/local/opencascade/inc/gp_Mat.hxx \
+  /usr/local/opencascade/inc/gp_Mat.lxx \
+  /usr/local/opencascade/inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_SStream.hxx \
+  /usr/local/opencascade/inc/Standard_RangeError.hxx \
+  /usr/local/opencascade/inc/Standard_DomainError.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.hxx \
+  /usr/local/opencascade/inc/Standard_Failure.lxx \
+  /usr/local/opencascade/inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade/inc/gp_Pnt.lxx \
+  /usr/local/opencascade/inc/gp_Trsf.hxx \
+  /usr/local/opencascade/inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade/inc/gp_Trsf.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.hxx \
+  /usr/local/opencascade/inc/gp_Mat2d.lxx \
+  /usr/local/opencascade/inc/gp_XY.hxx \
+  /usr/local/opencascade/inc/gp_XY.lxx \
+  /usr/local/opencascade/inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade/inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec2d.hxx \
+  /usr/local/opencascade/inc/gp_Vec2d.lxx \
+  /usr/local/opencascade/inc/gp_Dir2d.hxx \
+  /usr/local/opencascade/inc/gp_Dir2d.lxx \
+  /usr/local/opencascade/inc/gp_Ax2d.hxx \
+  /usr/local/opencascade/inc/gp_Ax2d.lxx \
+  /usr/local/opencascade/inc/gp_Vec.hxx \
+  /usr/local/opencascade/inc/gp_Vec.lxx \
+  /usr/local/opencascade/inc/gp_Dir.hxx \
+  /usr/local/opencascade/inc/gp_Dir.lxx \
+  /usr/local/opencascade/inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade/inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade/inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade/inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade/inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade/inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade/inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade/inc/math_FunctionSet.hxx \
+  /usr/local/opencascade/inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade/inc/Quantity_Length.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade/inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_Point.lxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade/inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade/inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade/inc/math_Function.hxx \
+  /usr/local/opencascade/inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade/inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade/inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade/inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade/inc/BRepTools.hxx \
+  /usr/local/opencascade/inc/Standard_IStream.hxx \
+  /usr/local/opencascade/inc/TopExp.hxx \
+  /usr/local/opencascade/inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.hxx \
+  /usr/local/opencascade/inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade/inc/TCollection_SList.lxx \
+  /usr/local/opencascade/inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade/inc/TopLoc_Location.lxx \
+  /usr/local/opencascade/inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade/inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade/inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade/inc/TCollection_List.lxx \
+  /usr/local/opencascade/inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade/inc/TopAbs.hxx \
+  /usr/local/opencascade/inc/TopAbs_State.hxx \
+  /usr/local/opencascade/inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepLib_Command.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade/inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade/inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade/inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade/inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade/inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade/inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade/inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade/inc/TopoDS_Face.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade/inc/LProp_Status.hxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade/inc/TCollection_Array1.lxx \
+  /usr/local/opencascade/inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.hxx \
+  /usr/local/opencascade/inc/Poly_Triangle.lxx \
+  /usr/local/opencascade/inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade/inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade/inc/GProp_GProps.hxx \
+  /usr/local/opencascade/inc/BRepGProp.hxx \
+  /usr/local/opencascade/inc/TopoDS.hxx \
+  /usr/local/opencascade/inc/TopoDS.lxx \
+  /usr/local/opencascade/inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade/inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade/inc/TopExp_Stack.hxx \
+  /usr/local/opencascade/inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade/inc/BRep_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade/inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade/inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade/inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade/inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade/inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade/inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade/inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade/inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade/inc/XSControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade/inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade/inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade/inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade/inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade/inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade/inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade/inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade/inc/Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade/inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade/inc/Interface_ParamType.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade/inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade/inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade/inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade/inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade/inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade/inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade/inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade/inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade/inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade/inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade/inc/Message_Gravity.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade/inc/Precision.hxx \
+  /usr/local/opencascade/inc/Precision.lxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade/inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade/inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade/inc/ShapeExtend.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade/inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade/inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade/inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade/inc/BRepMesh.hxx \
+  /usr/local/opencascade/inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade/inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.hxx \
+  /usr/local/opencascade/inc/Bnd_Box.lxx \
+  /usr/local/opencascade/inc/BRepBndLib.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade/inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade/inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade/inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade/inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade/inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade/inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade/inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade/inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade/inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade/inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade/inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade/inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade/inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade/inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade/inc/BOP_Operation.hxx \
+  /usr/local/opencascade/inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade/inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade/inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade/inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade/inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade/inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade/inc/BRepLib.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade/inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade/inc/ShapeFix.hxx \
+  /usr/local/opencascade/inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/Handle_ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.hxx \
+  /usr/local/opencascade/inc/TopoDS_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/TCollection_ListIterator.lxx \
+  /usr/local/opencascade/inc/TopoDS_Iterator.lxx \
+  /usr/local/opencascade/inc/Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/Handle_Standard_NoSuchObject.hxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeSphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Sphere.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Revolution.hxx \
+  /usr/local/opencascade/inc/BRepPrim_OneAxis.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.hxx \
+  /usr/local/opencascade/inc/BRepPrim_Builder.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.hxx \
+  /usr/local/opencascade/inc/gp_Ax1.lxx \
+  /usr/local/opencascade/inc/gp_Ax2.lxx \
+  /usr/local/opencascade/inc/BRepPrimAPI_MakeOneAxis.hxx \
+  /usr/local/opencascade/inc/TopTools_ListIteratorOfListOfShape.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Common.hxx \
+  /usr/local/opencascade/inc/BRepAlgoAPI_Cut.hxx ../Common/GmshMessage.h \
+  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
+  OCCVertex.h OCCEdge.h OCCFace.h OCCRegion.h MElement.h \
+  ../Common/GmshDefines.h MVertex.h MEdge.h MFace.h \
   ../Numeric/FunctionSpace.h ../Common/GmshMatrix.h ../Common/OpenFile.h
 GModelIO_Fourier.o: GModelIO_Fourier.cpp GModel.h GVertex.h GEntity.h \
   Range.h SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h \
diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp
index 391e5a032f8272bf3c0300b38851938b526a6ebb..335b1932009f0819efc82e78367770b668f71d81 100644
--- a/Geo/OCCEdge.cpp
+++ b/Geo/OCCEdge.cpp
@@ -30,6 +30,23 @@ OCCEdge::OCCEdge(GModel *model, TopoDS_Edge edge, int num, GVertex *v1, GVertex
   // build the reverse curve
   c_rev = c;
   c_rev.Reverse();
+
+
+//   if (v0 == v1){
+//     const int JJ = 52;
+//     for (int i=1;i<JJ;i++){
+//       const double t = i/((double) JJ);
+//       const double xi = s0 + (s1-s0) * t; 
+//       GPoint p = point(xi);
+//       MEdgeVertex *v = new MEdgeVertex (p.x(),p.y(),p.z(),this,xi);
+//       mesh_vertices.push_back(v);
+//       meshAttributes.Method = MESH_NONE;
+//       if (i == 1)lines.push_back(new MLine(v1->mesh_vertices[0],v));
+//       else if (i == JJ-1)lines.push_back(new MLine(v,v2->mesh_vertices[0]));
+//       else lines.push_back(new MLine(mesh_vertices[i-1],v));
+//     }
+//   }
+
 }
 
 Range<double> OCCEdge::parBounds(int i) const
diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp
index 3bcccdf74958ee76e02d1f2296d83dc2a7569ff3..c5f502d0237863a9a8239aa1e523c9ab06415684 100644
--- a/Mesh/HighOrder.cpp
+++ b/Mesh/HighOrder.cpp
@@ -5,6 +5,9 @@
 
 #include "HighOrder.h"
 #include "gmshSmoothHighOrder.h"
+#include "gmshLaplace.h"
+#include "gmshLinearSystemGmm.h"
+#include "gmshAssembler.h"
 #include "meshGFaceOptimize.h"
 #include "MElement.h"
 #include "GmshMessage.h"
@@ -74,249 +77,6 @@ bool mappingIsInvertible (MTetrahedron *e)
   return true;
 }
 
-bool deformElement(MElement *ele,GEntity* ge,const std::set<MVertex*>& blocked) {
-  
-  int nbNodes = ele->getNumVertices();  
-
-  double _E = 1.;
-  double _nu = 0.1;
-  
-  double FACT = _E / (1. + _nu) / (1. - 2. * _nu);  
-  double C11 = FACT * (1. - _nu);
-  double C12 = FACT * _nu;
-  double C44 = (C11 - C12) / 2; 
-  
-  Double_Matrix stiffness(3*nbNodes,3*nbNodes);
-  Double_Vector rhs(3*nbNodes);
-
-  int npts;
-  IntPt *pts;
-  ele->getIntegrationPoints(2*ele->getPolynomialOrder(),&npts, &pts);
-  double d0;
-
-  const gmshFunctionSpace* fs = ele->getFunctionSpace();
-
-  const Double_Matrix& points = fs->points;
-  
-
-  double jac[3][3];
-  ele->getPrimaryJacobian(0,0,0,jac);
-  double invjac[3][3];
-  inv3x3(jac,invjac);
-
-  double gsf[256][3];
-
-
-  // cheaper version : quadrature only used for parametric stiffness
-  // paramGrads should be stored in functionspace.
-  
-//   for (int j=0;j<nbNodes;j++) {
-//     for (int k=0;k<nbNodes;k++) {
-
-//       double xx = 0;
-//       double xy = 0;
-//       double xz = 0;
-//       double yx = 0;
-//       double yy = 0;
-//       double yz = 0;
-//       double zx = 0;
-//       double zy = 0;
-//       double zz = 0;
-      
-
-//       for (int m=0;m<3;m++) {
-//         for (int n=0;n<3;n++) {
-
-//           double dd = paramGrads[m][n](j,k);
-          
-//           xx += dd * invJac[0][m] * invJac[0][n];
-//           xy += dd * invJac[0][m] * invJac[1][n];
-//           xz += dd * invJac[0][m] * invJac[2][n];
-//           yx += dd * invJac[1][m] * invJac[0][n];
-//           yy += dd * invJac[1][m] * invJac[1][n];
-//           yz += dd * invJac[1][m] * invJac[2][n];
-//           zx += dd * invJac[2][m] * invJac[0][n];
-//           zy += dd * invJac[2][m] * invJac[1][n];
-//           zz += dd * invJac[2][m] * invJac[2][n];
-//         }
-//       }
-
-//       stiffness(3*j,3*k)     += (C11 * xx +  // dphidx . tauxx
-//                                  C44 * yy +  // dphidy . tauxy
-//                                  C44 * zz);  // dphidz . tauxz
-      
-//       stiffness(3*j,3*k+1)   += (C12 * xy +  // dphidx . tauxx 
-//                                  C44 * yx);  // dphidy . tauxy
-      
-//       stiffness(3*j,3*k+2)   += (C12 * xz +  // dphidx . tauxx
-//                                  C44 * zx);  // dphidz . tauxz
-      
-//       stiffness(3*j+1,3*k)   += (C44 * xy +  // dphidx . tauxy
-//                                  C12 * yx);  // dphidy . tauyy
-      
-//       stiffness(3*j+1,3*k+1) += (C44 * xx +  // dphidx . tauxy 
-//                                  C11 * yy +  // dphidy . tauyy
-//                                  C44 * zz ); // dphidz . tauzy
-      
-//       stiffness(3*j+1,3*k+2) += (C12 * yz +  // dphidy . tauyy
-//                                  C44 * zy);  // dphidz . tauzy
-      
-//       stiffness(3*j+2,3*k)   += (C44 * xz +  // dphidx . tauxz
-//                                  C12 * zx);  // dphidz . tauzz
-      
-//       stiffness(3*j+2,3*k+1) += (C44 * yz +  // dphidy . tauyz
-//                                  C12 * zy);  // dphidz . tauzz
-      
-//       stiffness(3*j+2,3*k+2) += (C44 * xx +  // dphidx . tauxz
-//                                  C44 * yy +  // dphidy . tauyz
-//                                  C11 * zz);  // dphidz . tauzz
-//     }
-//   }
-  
-      
-  // more expensive version
-
-  double Grads[256][3];
-
-  stiffness.scale(0.);
-  
-  for (int i=0;i<npts;i++){
-    
-    const double u = pts[i].pt[0];
-    const double v = pts[i].pt[1];
-    const double w = pts[i].pt[2];
-
-    const double weight = pts[i].weight;
-    
-    fs->df(u,v,w,gsf);
-
-    for (int j=0;j<nbNodes;j++) {
-      Grads[j][0] = invjac[0][0] * gsf[j][0] + invjac[0][1] * gsf[j][1] + invjac[0][2] * gsf[j][2];
-      Grads[j][1] = invjac[1][0] * gsf[j][0] + invjac[1][1] * gsf[j][1] + invjac[1][2] * gsf[j][2];
-      Grads[j][2] = invjac[2][0] * gsf[j][0] + invjac[2][1] * gsf[j][1] + invjac[2][2] * gsf[j][2];
-    }
-    
-    for (int j=0;j<nbNodes;j++) {
-      for (int k=0;k<nbNodes;k++) {
-
-        // R_x = dphidx . tauxx + dphidy . tauxy + dphidz . tauxz
-        // tau_xx = C11 . e_xx + C12 . (e_yy + e_zz)
-        // tau_xy = C44 . e_xy 
-        // e_xy = 0.5 * (dX/dx + dY/dy)
-
-        double xx = Grads[j][0] * Grads[k][0];
-        double xy = Grads[j][0] * Grads[k][1];
-        double xz = Grads[j][0] * Grads[k][2];
-        
-        double yx = Grads[j][1] * Grads[k][0];
-        double yy = Grads[j][1] * Grads[k][1];
-        double yz = Grads[j][1] * Grads[k][2];
-        
-        double zx = Grads[j][2] * Grads[k][0];
-        double zy = Grads[j][2] * Grads[k][1];
-        double zz = Grads[j][2] * Grads[k][2];
-
-
-        // Poisson
-        
-        stiffness(3*j,3*k)     += weight * (xx + yy + zz);
-        stiffness(3*j+1,3*k+1) += weight * (xx + yy + zz);
-        stiffness(3*j+2,3*k+2) += weight * (xx + yy + zz);
-        
-
-        // Elasticity
-
-        // stiffness(3*j  ,3*k  ) += weight * (C11 * xx + C44 * yy + C44 * zz);
-//         stiffness(3*j  ,3*k+1) += weight * (C12 * xy + C44 * yx);
-//         stiffness(3*j  ,3*k+2) += weight * (C12 * xz + C44 * zx);
-
-//         stiffness(3*j+1,3*k  ) += weight * (C12 * yx + C44 * xy);
-//         stiffness(3*j+1,3*k+1) += weight * (C44 * xx + C11 * yy + C44 * zz);
-//         stiffness(3*j+1,3*k+2) += weight * (C12 * yz + C44 * zy);
-        
-//         stiffness(3*j+2,3*k  ) += weight * (C12 * zx + C44 * xz);
-//         stiffness(3*j+2,3*k+1) += weight * (C12 * zy + C44 * yz);
-//         stiffness(3*j+2,3*k+2) += weight * (C44 * xx + C44 * yy + C11 * zz);
-        
-      }
-    }
-  }
-
-  int nbDirichlet = 0;
-  
-  Double_Vector original(nbNodes*3);
-  
-  for (int i=0;i<nbNodes;i++) {
-
-    MVertex* v = ele->getVertex(i);
-      
-    SPoint3 primary;
-    ele->primaryPnt(points(i,0),points(i,1),points(i,2),primary);
-    original(3*i  ) = primary.x();
-    original(3*i+1) = primary.y();
-    original(3*i+2) = primary.z();
-    
-    MFaceVertex* vf = dynamic_cast<MFaceVertex*> (v);
-    MFaceVertex* ve = dynamic_cast<MFaceVertex*> (v);
-
-    if (v->onWhat() != ge || blocked.find(v) != blocked.end()) {
-
-      nbDirichlet++;
-        
-      double dx = v->x() - original(3*i  );
-      double dy = v->y() - original(3*i+1);
-      double dz = v->z() - original(3*i+2);
-
-      for (int j=0;j<3*nbNodes;j++) {
-        stiffness(3*i  ,j) = 0;
-        stiffness(3*i+1,j) = 0;
-        stiffness(3*i+2,j) = 0;
-      }
-      
-      for (int k=0;k<3;k++) stiffness(i*3+k,i*3+k) = 1.;
-      
-      rhs(i*3  ) = dx;
-      rhs(i*3+1) = dy;
-      rhs(i*3+2) = dz;
-    }
-    else {
-      rhs(i*3  ) = 0.;
-      rhs(i*3+1) = 0.;
-      rhs(i*3+2) = 0.;
-    }
-  }
-
-  if (nbDirichlet < 3) {
-    Msg::Warning("Could not deform element due to lack of constraints\n");
-    return false;
-  }
-
-  if (nbDirichlet == nbNodes) {
-    Msg::Warning("Could not deform element because fully constrained\n");
-    return false;
-  }
-
-  
-  Msg::Warning("Deforming element - have %d constrained points of which %d from previous positioning",nbDirichlet,(int) blocked.size());
-  
-
-  Double_Vector displacement(nbNodes*3);
-
-  
-  stiffness.lu_solve(rhs,displacement);
-
-  for (int i=0;i<nbNodes;i++) {
-    MVertex* v = ele->getVertex(i);
-    
-    v->x() = original(3*i)   + displacement(3*i  );
-    v->y() = original(3*i+1) + displacement(3*i+1);
-    v->z() = original(3*i+2) + displacement(3*i+2);
-    
-  }
-  
-  return true;
-}
-
 static void getAllParameters  (MVertex *v, GFace *gf, std::vector<SPoint2> &params){
   params.clear();
   if(v->onWhat()->dim() == 0){
@@ -1180,52 +940,10 @@ void getFaceVertices(GRegion *gr, MElement *ele,
           SPoint3 pos;
           incomplete.pnt(t1,t2,0,pos);
           MVertex* v = new MVertex(pos.x(),pos.y(),pos.z(),gr);
-          
-          
-          // for (int j=0; j<incomplete.getNumVertices(); j++){
-            
-//             double sf ; incomplete.getShapeFunction(j,t1,t2,0,sf);
-//             MVertex *vt = incomplete.getVertex(j);
-            
-//             X += sf * vt->x();
-//             Y += sf * vt->y();
-//             Z += sf * vt->z();
-//           }
-
-//           MVertex* v = new MVertex(X,Y,Z,gr);
-  
-          
-//           SPoint3 pc = face.interpolate(t1, t2);
-//           MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr);
-          // faceVertices[p].push_back(v);
           vtcs.push_back(v);
           gr->mesh_vertices.push_back(v);
           vf.push_back(v);
-        } 
-        
-//         for(int j = 0; j < nPts; j++){
-//           for(int k = 0 ; k < nPts - j - 1; k++){
-            
-//             // KH: inverted direction to stick with triangle vertex numbering
-//             // is not consistent with function space definitions for p>4
-//             // 
-//             // 2
-//             // | \
-//             // 0 - 1
-//             // 
-//             // double t1 = (double)(j + 1) / (nPts + 1);
-//             // double t2 = (double)(k + 1) / (nPts + 1);
-//             double t1 = (double)(k + 1) / (nPts + 1);
-//             double t2 = (double)(j + 1) / (nPts + 1);
-
-//             SPoint3 pc = face.interpolate(t1, t2);
-//             MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr);
-//             // faceVertices[p].push_back(v);
-//             vtcs.push_back(v);
-//             gr->mesh_vertices.push_back(v);
-//             vf.push_back(v);
-//           }
-//         }
+        }         
       }
       else if(face.getNumVertices() == 4){ // quadrangles
         for(int j = 0; j < nPts; j++){
@@ -1281,23 +999,6 @@ void getRegionVertices(GRegion *gr,
     incomplete->pnt(t1,t2,t3,pos);
     v = new MVertex(pos.x(),pos.y(),pos.z(),gr);
     
-    // FIXME: KOEN - I had to comment this out (MElement does not have
-    // pnt() member) -- CG
-
-    // SPoint3 pos;
-    // incomplete->pnt(t1,t2,t3,pos);
-    // v = new MVertex(pos.x(),pos.y(),pos.z(),gr);
-    
-    //     double X(0),Y(0),Z(0);
-    //     for (int j=0; j<incomplete->getNumVertices(); j++){
-    //       double sf ; incomplete->getShapeFunction(j,t1,t2,t3,sf);
-    //       MVertex *vt = incomplete->getVertex(j);
-    //       X += sf * vt->x();
-    //       Y += sf * vt->y();
-    //       Z += sf * vt->z();
-    //     }
-    //    v = new MVertex(X,Y,Z, gr);
-    
     gr->mesh_vertices.push_back(v);
     vr.push_back(v);
   }
@@ -1417,12 +1118,6 @@ void setHighOrder(GRegion *gr, edgeContainer &edgeVertices,
 
       if (!mappingIsInvertible(n)) {
         Msg::Warning("Found invalid curved volume element (# %d in list) ",i);
-        
-        // if (deformElement(n,gr,blocked)) {
-//           if (mappingIsInvertible(n)) printf(" - corrected using Poisson smoothing\n");
-//           else                        printf(" - could not correct the mapping\n");
-//           nbCorr++;
-//         }
       }
       tetrahedra2.push_back (n);
     }
@@ -1874,6 +1569,150 @@ double angle3Points ( MVertex *p1, MVertex *p2, MVertex *p3 ){
   return atan2 (sinA,cosA);  
 }
 
+/*
+A curvilinear edge smooth and swap
+
+*/
+
+typedef std::map<std::pair<MVertex*, MVertex*>, std::vector<MElement*> > edge2tris;
+
+void localHarmonicMapping(GModel *gm, 
+			  MTriangle *t1 , 
+			  MTriangle *t2,
+			  MVertex *n1,
+			  MVertex *n2,
+			  MVertex *n3,
+			  MVertex *n4,
+// 			  SPoint2 &np1,
+// 			  SPoint2 &np2,
+// 			  SPoint2 &np3,
+// 			  SPoint2 &np4,
+			  std::vector<MVertex*> &e1,
+			  std::vector<MVertex*> &e2,
+			  std::vector<MVertex*> &e3,
+			  std::vector<MVertex*> &e4,
+// 			  std::vector<SPoint2> &ep1,
+// 			  std::vector<SPoint2> &ep2,
+// 			  std::vector<SPoint2> &ep3,
+// 			  std::vector<SPoint2> &ep4
+			  std::vector<MVertex*> &e) {
+  
+  gmshLinearSystemGmm *lsys = new gmshLinearSystemGmm;
+  gmshAssembler myAssembler(lsys);
+  gmshLaplaceTerm Laplace (gm,1.0,0);     
+  
+  myAssembler.fixVertex ( n1 , 0 , 0 , -1.0);
+  myAssembler.fixVertex ( n2 , 0 , 0 , -1.0);
+  myAssembler.fixVertex ( n3 , 0 , 0 ,  1.0);
+  myAssembler.fixVertex ( n4 , 0 , 0 ,  1.0);
+  for (int i=0;i<e1.size() ; i++) myAssembler.fixVertex ( e1[i] , 0 , 0, -1.0);
+  for (int i=0;i<e3.size() ; i++) myAssembler.fixVertex ( e3[i] , 0 , 0,  1.0);  
+  Laplace.addToMatrix(myAssembler,t1); 
+  Laplace.addToMatrix(myAssembler,t2);   
+  lsys->systemSolve();
+
+  gmshLinearSystemGmm *lsys1 = new gmshLinearSystemGmm;
+  gmshAssembler myAssembler1(lsys1);
+  gmshLaplaceTerm Laplace1 (gm,1.0,1);     
+  
+  myAssembler1.fixVertex ( n2 , 0 , 1 , -1.0);
+  myAssembler1.fixVertex ( n3 , 0 , 1 , -1.0);
+  myAssembler1.fixVertex ( n4 , 0 , 1 ,  1.0);
+  myAssembler1.fixVertex ( n1 , 0 , 1 ,  1.0);
+  for (int i=0;i<e2.size() ; i++) myAssembler1.fixVertex ( e2[i] , 0 , 1, -1.0);
+  for (int i=0;i<e4.size() ; i++) myAssembler1.fixVertex ( e4[i] , 0 , 1,  1.0);  
+  Laplace1.addToMatrix(myAssembler1,t1); 
+  Laplace1.addToMatrix(myAssembler1,t2);   
+  lsys1->systemSolve();
+
+  // now we have the stable high order harmonic mapping 
+  // we have to find points locations of vertices in e
+  // that have coordinates (\xi, \xi) 
+
+  // this can be done by evaluating the 
+
+  for (int i=0;i<e.size() ; i++){
+    MVertex *v = e[i];
+    const double U =  myAssembler.getDofValue  (v, 0 ,0);
+    const double V =  myAssembler1.getDofValue (v, 0 ,1);
+    printf("point %g %g -> %g %g\n",v->x(),v->y(),U,V);
+    // we are in t1
+    if (U >= V){
+      const double ut = U;
+    }
+  }
+
+
+  delete lsys ;  
+  delete lsys1;  
+}
+
+
+
+void getParametricCoordnates ( GFace *gf, 
+			       std::vector<MVertex*> &e,
+			       std::vector<SPoint2> &param){
+  param.clear();
+  for (int i=0;i<e.size();i++){
+    double U,V;
+    parametricCoordinates(e[i] , gf, U, V); 
+    param.push_back(SPoint2(U,V));
+  }
+}
+
+static void curvilinearEdgeSwap (GFace *gf, 
+				 //				 int nPts,
+				 edgeContainer &edgeVertices,
+				 edge2tris::iterator &it,
+				 edge2tris &e2t)
+{
+  std::pair<MVertex*, MVertex*> edge = it->first;
+  std::vector<MElement*> triangles   = it->second;
+  if(triangles.size() == 2){
+      MVertex *n2 = edge.first; 
+      MVertex *n4 = edge.second;
+      MTriangle *t1 = (MTriangle*)triangles[0];
+      MTriangle *t2 = (MTriangle*)triangles[1];
+      MVertex *n1 = t1->getOtherVertex(n2, n4);
+      MVertex *n3 = t2->getOtherVertex(n2, n4);
+      std::vector<MVertex*> e1 = edgeVertices[std::make_pair<MVertex*, MVertex*>(std::min(n1, n2),std::max(n1, n2))];
+      std::vector<MVertex*> e2 = edgeVertices[std::make_pair<MVertex*, MVertex*>(std::min(n2, n3),std::max(n2, n3))];
+      std::vector<MVertex*> e3 = edgeVertices[std::make_pair<MVertex*, MVertex*>(std::min(n3, n4),std::max(n3, n4))];
+      std::vector<MVertex*> e4 = edgeVertices[std::make_pair<MVertex*, MVertex*>(std::min(n4, n1),std::max(n4, n1))];
+      std::vector<MVertex*> e  = edgeVertices[std::make_pair<MVertex*, MVertex*>(std::min(n2, n4),std::max(n2, n4))];
+      //      std::vector<MVertex*> enew; 
+      //      MLine temp (n1,n3);
+      // should not add the nodes n the GFace here
+      //      getEdgeVertices(gf,&temp, enew, false, nPts);
+      // get the parametric coordinates of the 
+      std::vector<SPoint2> ep1;  getParametricCoordnates (gf,e1,ep1);
+      std::vector<SPoint2> ep2;  getParametricCoordnates (gf,e2,ep2);
+      std::vector<SPoint2> ep3;  getParametricCoordnates (gf,e3,ep3);
+      std::vector<SPoint2> ep4;  getParametricCoordnates (gf,e4,ep4);
+      std::vector<SPoint2> ep;  getParametricCoordnates (gf,e ,ep );
+      //      std::vector<SPoint2> epnew;  getParametricCoordnates (gf,enew,epnew);      
+      localHarmonicMapping(gf->model(),t1,t2,n1,n2,n3,n4,e1,e2,e3,e4,e); 
+  }
+}
+
+bool smoothInternalEdgesb(GFace *gf, edgeContainer &edgeVertices)
+{
+  typedef std::map<std::pair<MVertex*, MVertex*>, std::vector<MElement*> > edge2tris;
+  edge2tris e2t;
+  for(unsigned int i = 0; i < gf->triangles.size(); i++){
+    MTriangle *t = gf->triangles[i];
+    for(int j = 0; j < t->getNumEdges(); j++){
+      MEdge edge = t->getEdge(j);
+      std::pair<MVertex*, MVertex*> p(edge.getMinVertex(), edge.getMaxVertex());
+      e2t[p].push_back(t);
+    }
+  }
+
+  for(edge2tris::iterator it = e2t.begin(); it != e2t.end(); ++it){
+    curvilinearEdgeSwap (gf,edgeVertices,it,e2t);
+  }
+}
+
 bool smoothInternalEdges(GFace *gf, edgeContainer &edgeVertices)
 {
   typedef std::map<std::pair<MVertex*, MVertex*>, std::vector<MElement*> > edge2tris;
@@ -2024,28 +1863,20 @@ bool smoothInternalEdges(GFace *gf, edgeContainer &edgeVertices)
   return success;
 }
 
-void checkHighOrderTriangles(GModel *m)
+void checkHighOrderTriangles(GModel *m, std::vector<MElement*> & bad, double & minJGlob)
 {
-  double minJGlob = 1.e22;
-  double maxJGlob = -1.e22;
+  bad.clear();
+  minJGlob = 1.0;
   for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){
-    double minJ = 1.e22;
-    double maxJ = -1.e22;
     for(unsigned int i = 0; i < (*it)->triangles.size(); i++){
-      double minJloc = 1.e22;
-      double maxJloc = -1.e22;      
       MTriangle *t = (*it)->triangles[i];
-      if(t->getPolynomialOrder() > 1 && t->getPolynomialOrder() < 6){
-        getMinMaxJac (t, minJloc, maxJloc);
-        minJ = std::min(minJ, minJloc);
-        maxJ = std::max(maxJ, maxJloc);
-      }
+      double disto = t->distoShapeMeasure();
+      minJGlob = std::min(minJGlob,disto);
+      if (disto < 0) bad.push_back(t);
     }
-    minJGlob = std::min(minJGlob,minJ);
-    maxJGlob = std::max(maxJGlob,maxJ);
   }
-  if (minJGlob >= 0) Msg::Info("Jacobian Range (%12.5E,%12.5E)", minJGlob, maxJGlob);
-  else Msg::Warning("Jacobian Range (%12.5E,%12.5E)", minJGlob, maxJGlob);
+  if (minJGlob > 0) Msg::Info("Worst Element Smoothness %12.5E", minJGlob);
+  else Msg::Warning("Worst Element Smoothness %12.5E", minJGlob);
 }  
 
 void printJacobians(GModel *m, const char *nm)
@@ -2163,16 +1994,24 @@ void SetOrderN(GModel *m, int order, bool linear, bool incomplete)
 
   // now we smooth mesh the internal vertices of the faces
   // we do that model face by model face
+  std::vector<MElement*> bad;
+  double worst;
   if (displ2D){
-    checkHighOrderTriangles(m);
+    checkHighOrderTriangles(m,bad,worst);
     for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it)
-      displ2D->smooth(*it);
+      if ((*it)->geomType() == GEntity::Plane)displ2D->smooth(*it); 
+    // will have to smooth in the planar coordinates, using the metric
   }
 
-
   for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it)
     setHighOrder(*it, edgeVertices, faceVertices, linear, incomplete, nPts,displ2D, displ3D);
 
+  // smooth the 3D regions
+  if (displ3D){
+    for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it)
+      displ3D->smooth(*it);
+  }
+
   printJacobians(m, "detjIni.pos");  
 
   if(displ2D){    
@@ -2180,29 +2019,7 @@ void SetOrderN(GModel *m, int order, bool linear, bool incomplete)
     delete displ3D;
   }
 
-
-  //  if(0 && CTX.mesh.smooth_internal_edges){
-  if(0){
-    checkHighOrderTriangles(m);
-    for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){      
-      Msg::Info("Smoothing internal Edges in Surface %d",(*it)->tag());
-      for (int i = 0; i < 10; i++) {
-        if (!smoothInternalEdges(*it, edgeVertices))break;
-        checkHighOrderTriangles(m);
-      }
-      //      optimizeHighOrderMeshInternalNodes(*it);
-    }
-    //    for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it){      
-    //      for (int i=0;i<CTX.mesh.nb_smoothing;i++){
-    //        if(!optimizeHighOrderMesh(*it, edgeVertices))break;
-    //        checkHighOrderTriangles(m);
-    //      }
-    //    }
-    printJacobians(m, "detjOpt.pos");  
-  }
-
-
-  checkHighOrderTriangles(m);
+  checkHighOrderTriangles(m, bad, worst);
 
   double t2 = Cpu();
   Msg::Info("Meshing order %d complete (%g s)", order, t2 - t1);
diff --git a/Mesh/Makefile b/Mesh/Makefile
index 77037ba5246b366d6d07f6a1199035ee12fb2e6c..fc50213406873135cdff0ec993e108b00f3c8c98 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -91,13 +91,14 @@ Generator.o: Generator.cpp ../Common/GmshMessage.h ../Numeric/Numeric.h \
   ../Numeric/FunctionSpace.h ../Common/GmshMatrix.h meshGEdge.h \
   meshGFace.h meshGFaceBDS.h meshGRegion.h BackgroundMesh.h \
   BoundaryLayers.h HighOrder.h ../Post/PView.h ../Post/PViewData.h
-Field.o: Field.cpp ../Common/Context.h ../Geo/CGNSOptions.h \
-  ../Mesh/PartitionOptions.h Field.h ../Post/PView.h ../Geo/SPoint3.h \
-  ../Geo/GeoInterpolation.h ../Geo/Geo.h ../Common/GmshDefines.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../Common/ListUtils.h \
+Field.o: Field.cpp ../contrib/MathEval/matheval.h \
+  ../contrib/ANN/include/ANN/ANN.h ../Common/Context.h \
+  ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h Field.h ../Post/PView.h \
+  ../Geo/SPoint3.h ../Geo/GeoInterpolation.h ../Geo/Geo.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/ListUtils.h \
   ../Common/TreeUtils.h ../Common/avl.h ../Common/ListUtils.h \
   ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
@@ -127,7 +128,61 @@ gmshSmoothHighOrder.o: gmshSmoothHighOrder.cpp gmshSmoothHighOrder.h \
   ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Numeric/FunctionSpace.h ../Numeric/gmshElasticity.h \
   ../Numeric/gmshTermOfFormulation.h ../Numeric/gmshLinearSystemGmm.h \
-  ../Numeric/gmshLinearSystem.h
+  ../Numeric/gmshLinearSystem.h ../contrib/gmm/gmm.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_ref.h ../contrib/gmm/gmm_except.h \
+  ../contrib/gmm/gmm_std.h ../contrib/gmm/gmm_blas.h \
+  ../contrib/gmm/gmm_scaled.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_transposed.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_conjugated.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_real_part.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_vector.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_blas.h ../contrib/gmm/gmm_sub_index.h \
+  ../contrib/gmm/gmm_def.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_sub_vector.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_sub_index.h ../contrib/gmm/gmm_sub_matrix.h \
+  ../contrib/gmm/gmm_sub_vector.h ../contrib/gmm/gmm_vector_to_matrix.h \
+  ../contrib/gmm/gmm_interface.h ../contrib/gmm/gmm_vector.h \
+  ../contrib/gmm/gmm_matrix.h ../contrib/gmm/gmm_vector.h \
+  ../contrib/gmm/gmm_sub_vector.h ../contrib/gmm/gmm_sub_matrix.h \
+  ../contrib/gmm/gmm_transposed.h ../contrib/gmm/gmm_tri_solve.h \
+  ../contrib/gmm/gmm_interface.h ../contrib/gmm/gmm_blas_interface.h \
+  ../contrib/gmm/gmm_dense_lu.h ../contrib/gmm/gmm_dense_Householder.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_opt.h \
+  ../contrib/gmm/gmm_dense_qr.h ../contrib/gmm/gmm_dense_Householder.h \
+  ../contrib/gmm/gmm_iter_solvers.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_precond_diagonal.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_precond_ildlt.h ../contrib/gmm/gmm_precond.h \
+  ../contrib/gmm/gmm_precond_ildltt.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_precond.h \
+  ../contrib/gmm/gmm_precond_mr_approx_inverse.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_precond_ilu.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_precond_ilutp.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_solver_cg.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_solver_bicgstab.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_solver_qmr.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_solver_constrained_cg.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_solver_Schwarz_additive.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_superlu_interface.h \
+  ../contrib/gmm/gmm_solver_cg.h ../contrib/gmm/gmm_solver_gmres.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_modified_gram_schmidt.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_solver_bicgstab.h ../contrib/gmm/gmm_solver_qmr.h \
+  ../contrib/gmm/gmm_solver_Newton.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_modified_gram_schmidt.h \
+  ../contrib/gmm/gmm_tri_solve.h ../contrib/gmm/gmm_solver_gmres.h \
+  ../contrib/gmm/gmm_solver_bfgs.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_least_squares_cg.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_conjugated.h ../contrib/gmm/gmm_condition_number.h \
+  ../contrib/gmm/gmm_dense_qr.h ../contrib/gmm/gmm_inoutput.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_lapack_interface.h \
+  ../contrib/gmm/gmm_superlu_interface.h \
+  ../contrib/gmm/gmm_domain_decomp.h ../contrib/gmm/gmm_kernel.h
 meshGEdge.o: meshGEdge.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -280,7 +335,9 @@ meshGRegion.o: meshGRegion.cpp meshGRegion.h \
   ../Common/ListUtils.h ../Common/TreeUtils.h ../Common/avl.h \
   ../Common/ListUtils.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Geo/GRegion.h BDS.h ../Post/PView.h \
-  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
+  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
+  ../contrib/Tetgen/tetgen.h ../contrib/Netgen/libsrc/interface/nglib.h \
+  ../contrib/Netgen/nglib_addon.h
 meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   ../Common/OS.h BackgroundMesh.h meshGRegion.h meshGRegionLocalMeshMod.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
@@ -337,7 +394,7 @@ meshGRegionCarveHole.o: meshGRegionCarveHole.cpp ../Geo/GModel.h \
   ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Common/GmshMatrix.h
+  ../Common/GmshMatrix.h ../contrib/ANN/include/ANN/ANN.h
 meshGRegionLocalMeshMod.o: meshGRegionLocalMeshMod.cpp \
   meshGRegionLocalMeshMod.h meshGRegionDelaunayInsertion.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
@@ -409,12 +466,70 @@ HighOrder.o: HighOrder.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
   ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
   ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h gmshSmoothHighOrder.h meshGFaceOptimize.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Common/GmshMatrix.h meshGFaceDelaunayInsertion.h ../Common/OS.h \
+  ../Geo/SBoundingBox3d.h gmshSmoothHighOrder.h ../Numeric/gmshLaplace.h \
+  ../Numeric/gmshTermOfFormulation.h ../Common/GmshMatrix.h \
+  ../Common/Gmsh.h ../Common/GmshMessage.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/FunctionSpace.h \
+  ../Numeric/gmshLinearSystemGmm.h ../Numeric/gmshLinearSystem.h \
+  ../contrib/gmm/gmm.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_def.h ../contrib/gmm/gmm_ref.h \
+  ../contrib/gmm/gmm_except.h ../contrib/gmm/gmm_std.h \
+  ../contrib/gmm/gmm_blas.h ../contrib/gmm/gmm_scaled.h \
+  ../contrib/gmm/gmm_def.h ../contrib/gmm/gmm_transposed.h \
+  ../contrib/gmm/gmm_def.h ../contrib/gmm/gmm_conjugated.h \
+  ../contrib/gmm/gmm_def.h ../contrib/gmm/gmm_real_part.h \
+  ../contrib/gmm/gmm_def.h ../contrib/gmm/gmm_vector.h \
+  ../contrib/gmm/gmm_interface.h ../contrib/gmm/gmm_blas.h \
+  ../contrib/gmm/gmm_sub_index.h ../contrib/gmm/gmm_def.h \
+  ../contrib/gmm/gmm_interface.h ../contrib/gmm/gmm_sub_vector.h \
+  ../contrib/gmm/gmm_interface.h ../contrib/gmm/gmm_sub_index.h \
+  ../contrib/gmm/gmm_sub_matrix.h ../contrib/gmm/gmm_sub_vector.h \
+  ../contrib/gmm/gmm_vector_to_matrix.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_vector.h ../contrib/gmm/gmm_matrix.h \
+  ../contrib/gmm/gmm_vector.h ../contrib/gmm/gmm_sub_vector.h \
+  ../contrib/gmm/gmm_sub_matrix.h ../contrib/gmm/gmm_transposed.h \
+  ../contrib/gmm/gmm_tri_solve.h ../contrib/gmm/gmm_interface.h \
+  ../contrib/gmm/gmm_blas_interface.h ../contrib/gmm/gmm_dense_lu.h \
+  ../contrib/gmm/gmm_dense_Householder.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_opt.h ../contrib/gmm/gmm_dense_qr.h \
+  ../contrib/gmm/gmm_dense_Householder.h \
+  ../contrib/gmm/gmm_iter_solvers.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_precond_diagonal.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_precond_ildlt.h ../contrib/gmm/gmm_precond.h \
+  ../contrib/gmm/gmm_precond_ildltt.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_precond.h \
+  ../contrib/gmm/gmm_precond_mr_approx_inverse.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_precond_ilu.h \
+  ../contrib/gmm/gmm_precond.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_precond_ilutp.h ../contrib/gmm/gmm_precond_ilut.h \
+  ../contrib/gmm/gmm_solver_cg.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_solver_bicgstab.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_solver_qmr.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_solver_constrained_cg.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_solver_Schwarz_additive.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_superlu_interface.h \
+  ../contrib/gmm/gmm_solver_cg.h ../contrib/gmm/gmm_solver_gmres.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_modified_gram_schmidt.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_solver_bicgstab.h ../contrib/gmm/gmm_solver_qmr.h \
+  ../contrib/gmm/gmm_solver_Newton.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_modified_gram_schmidt.h \
+  ../contrib/gmm/gmm_tri_solve.h ../contrib/gmm/gmm_solver_gmres.h \
+  ../contrib/gmm/gmm_solver_bfgs.h ../contrib/gmm/gmm_kernel.h \
+  ../contrib/gmm/gmm_iter.h ../contrib/gmm/gmm_least_squares_cg.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_iter.h \
+  ../contrib/gmm/gmm_conjugated.h ../contrib/gmm/gmm_condition_number.h \
+  ../contrib/gmm/gmm_dense_qr.h ../contrib/gmm/gmm_inoutput.h \
+  ../contrib/gmm/gmm_kernel.h ../contrib/gmm/gmm_lapack_interface.h \
+  ../contrib/gmm/gmm_superlu_interface.h \
+  ../contrib/gmm/gmm_domain_decomp.h ../contrib/gmm/gmm_kernel.h \
+  ../Numeric/gmshAssembler.h ../Numeric/gmshLinearSystem.h \
+  meshGFaceOptimize.h meshGFaceDelaunayInsertion.h ../Common/OS.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h ../Geo/GFaceCompound.h \
   ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h \
diff --git a/Mesh/gmshSmoothHighOrder.cpp b/Mesh/gmshSmoothHighOrder.cpp
index 7472026bd8663cd3387672d262267320665020a6..acbd09cc23e3c119957525061f615771aa39df82 100644
--- a/Mesh/gmshSmoothHighOrder.cpp
+++ b/Mesh/gmshSmoothHighOrder.cpp
@@ -7,12 +7,61 @@
 #include "GFace.h"
 #include "GRegion.h"
 
+
+void getDistordedElements ( const std::vector<MElement*>  & v, 
+			    const double & threshold,
+			    std::vector<MElement*>  & d,
+			    double &minD){
+  d.clear();
+  minD = 1;
+  for (int i=0;i<v.size() ; i++){
+    const double disto = v[i]->distoShapeMeasure();
+    if ( disto < threshold)
+      d.push_back(v[i]);
+    minD = std::min(minD,disto);
+  }
+}
+
+void addOneLayer ( const std::vector<MElement*>  & v, 
+		   std::vector<MElement*>  & d ,
+		   std::vector<MElement*>  & layer ){
+  std::set<MVertex*> all;
+  for (int i=0;i<d.size() ; i++){
+    MElement *e = d[i];
+    int n = e->getNumPrimaryVertices();
+    for (int j=0;j<n;j++){
+      all.insert(e->getVertex(j));
+    }
+  }
+
+  layer.clear();
+
+  std::sort(d.begin(), d.end());
+
+  for (int i=0;i<v.size() ; i++){
+    MElement *e = v[i];
+    bool found = std::binary_search(d.begin(), d.end(), e);
+    // element is not yet there
+    if (!found){
+      int n = e->getNumPrimaryVertices();
+      for (int j=0;j<n;j++){
+	MVertex *vert = e->getVertex(j);
+	if (all.find(vert) != all.end()){
+	  layer.push_back(e);
+	  j = n;
+	}
+      }
+    }
+  }
+}
+
+
 void gmshHighOrderSmoother::smooth ( GFace *gf) {
   std::vector<MElement*> v;
 
   v.insert(v.begin(), gf->triangles.begin(),gf->triangles.end());
   v.insert(v.begin(), gf->quadrangles.begin(),gf->quadrangles.end());
-  Msg::Info("Smoothing high order mesh face %d (%d elements)", gf->tag(),
+  Msg::Info("Smoothing high order mesh : model face %d (%d elements)", gf->tag(),
 	    v.size());
   smooth(v);
 }
@@ -21,14 +70,51 @@ void gmshHighOrderSmoother::smooth ( GRegion *gr) {
   v.insert(v.begin(), gr->tetrahedra.begin(),gr->tetrahedra.end());
   v.insert(v.begin(), gr->hexahedra.begin(),gr->hexahedra.end());
   v.insert(v.begin(), gr->prisms.begin(),gr->prisms.end());
+  Msg::Info("Smoothing high order mesh : model region %d (%d elements)", gr->tag(),
+	    v.size());
   smooth(v);
 }
 
-void gmshHighOrderSmoother::smooth ( std::vector<MElement*>  & v) {
+void gmshHighOrderSmoother::smooth ( std::vector<MElement*>  & all) {
   
+
   gmshLinearSystemGmm *lsys = new gmshLinearSystemGmm;
   gmshAssembler myAssembler(lsys);
   gmshElasticityTerm El(0,1.0,.333,getTag());     
+  
+  std::vector<MElement*> v, layer;
+
+  double minD;
+
+  getDistordedElements ( all, 0.5, v,minD);
+
+  //  printf("%d elements / %d distorted  min Disto = %g\n",all.size(),v.size(), minD);
+
+  if (!v.size())return;
+
+  const int nbLayers = 2;
+  for (int i=0;i<nbLayers;i++){
+    addOneLayer ( all, v, layer);
+    v.insert(v.end(),layer.begin(),layer.end());
+  }
+
+  // 3 -> .4
+  printf("%d elements after adding %d layers\n",v.size(),nbLayers);
+
+  addOneLayer ( all, v, layer);
+
+  //  printf("%d elements in the next layer\n",layer.size());
+
+
+  for (int i=0;i<layer.size() ; i++){
+    for (int j=0;j<layer[i]->getNumVertices(); j++){
+      MVertex *vert = layer[i]->getVertex(j);
+      myAssembler.fixVertex ( vert , 0 , getTag() , 0);
+      myAssembler.fixVertex ( vert , 1 , getTag() , 0);
+      myAssembler.fixVertex ( vert , 2 , getTag() , 0);
+    }
+  }
+  
 
   std::map<MVertex*,SVector3>::iterator it;
   std::map<MVertex*,SVector3> verticesToMove;
@@ -56,8 +142,6 @@ void gmshHighOrderSmoother::smooth ( std::vector<MElement*>  & v) {
     }
   }
   
-
-
   // move back high order nodes to their straight sided 
   // location
   for (it = verticesToMove.begin()  ; it != verticesToMove.end() ; ++it){
@@ -78,15 +162,18 @@ void gmshHighOrderSmoother::smooth ( std::vector<MElement*>  & v) {
     } 
   }
 
-  Msg::Info("%d vertices FIXED %d NUMBERED", myAssembler.sizeOfF()
-	    , myAssembler.sizeOfR());
+  //  Msg::Info("%d vertices FIXED %d NUMBERED", myAssembler.sizeOfF()
+  //	    , myAssembler.sizeOfR());
 
-  // assembly of the elasticity term on the
-  // set of elements
-  El.addToMatrix(myAssembler,v); 
-  
-  // solve the system
-  lsys->systemSolve();
+  if (myAssembler.sizeOfR()){
+
+    // assembly of the elasticity term on the
+    // set of elements
+    El.addToMatrix(myAssembler,v); 
+    
+    // solve the system
+    lsys->systemSolve();
+  }
 
   // move the nodes that were involved in the process
   // to their new lcation
@@ -98,6 +185,16 @@ void gmshHighOrderSmoother::smooth ( std::vector<MElement*>  & v) {
   }
 
   // delete matrices and vectors
+
+  double minD2;
+  getDistordedElements ( v, 0.5, layer,minD2);
+
+  printf("Smooting efficiency %g -> %g\n",minD,minD2);
+
+
   delete lsys;
   
 }
+
+
+
diff --git a/Mesh/gmshSmoothHighOrder.h b/Mesh/gmshSmoothHighOrder.h
index 49be8007d9125285917552a7784e4cfdd2c39dd7..5647cb0eb4e898523a19e90bf0c3f9051bfecf01 100644
--- a/Mesh/gmshSmoothHighOrder.h
+++ b/Mesh/gmshSmoothHighOrder.h
@@ -29,4 +29,5 @@ public:
   int getTag() const {return _tag;}
 };
 
+
 #endif
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index e31a90b1349909ac595d12866df5f81dbf13fc3b..fa629ce3b413ce22bc8d2d1e2f454125eb2876bd 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1279,7 +1279,7 @@ void deMeshGFace::operator() (GFace *gf)
   gf->meshStatistics.nbTriangle = gf->meshStatistics.nbEdge = 0;
 }
 
-const int debugSurface = -1;
+const int debugSurface = -100;
 
 void meshGFace::operator() (GFace *gf)
 {
diff --git a/Mesh/qualityMeasures.cpp b/Mesh/qualityMeasures.cpp
index 3317585aeed4da65af9d6220a9f3d1fd54ea2ffa..fa99f5cdcdcdf4e4a1c3063e96c46fb33e4ee8fa 100644
--- a/Mesh/qualityMeasures.cpp
+++ b/Mesh/qualityMeasures.cpp
@@ -238,11 +238,14 @@ static double mesh_functional_distorsion(MTetrahedron *t, double u, double v, do
 {
   // compute uncurved element jacobian d_u x and d_v x
   double mat[3][3];  
-   const double det1 = t->getPrimaryJacobian(u,v,w, mat);
+  t->getPrimaryJacobian(u,v,w, mat);
   
+  const double det1 = det3x3(mat);
+
    //const double det1 = t->getJacobian(u,v,w,mat);
   // const double det1 = det3x3(mat);
-  const double detN = t->getJacobian(u,v,w,mat);
+  t->getJacobian(u,v,w,mat);
+  const double detN = det3x3(mat);
   // const double detN = det3x3(mat);
 
   //  printf("%g %g %g = %g %g\n",u,v,w,det1,detN);
diff --git a/Numeric/gmshLaplace.h b/Numeric/gmshLaplace.h
index 0ba9e0afab2b55536bead59080a02730553b37c5..fa4ee83477687e3fcdfeeb20b660b8f92a840107 100644
--- a/Numeric/gmshLaplace.h
+++ b/Numeric/gmshLaplace.h
@@ -22,8 +22,9 @@ class gmshLaplaceTerm : public gmshNodalFemTerm {
  public:
   gmshLaplaceTerm(GModel *gm, double diffusivity = 1.0, int iField = 0) : 
     gmshNodalFemTerm(gm), _diffusivity(diffusivity), _iField(iField){}
-  void elementMatrix(MElement *e, Double_Matrix &m) const;
+  virtual void elementMatrix(MElement *e, Double_Matrix &m) const;
   double getDiffusivity () const { return _diffusivity; }
 };
 
+
 #endif