diff --git a/benchmarks/hex/cube.geo b/benchmarks/hex/cube.geo
new file mode 100644
index 0000000000000000000000000000000000000000..83c4c1299c884c8cc31d38e610553e13f87a9a85
--- /dev/null
+++ b/benchmarks/hex/cube.geo
@@ -0,0 +1,43 @@
+//Mesh.Algorithm = 8; //8 = delquad or 9= 2D R-tree
+//Mesh.Algorithm3D = 9; // 3D R-tree
+//Mesh.Recombine3DAll = 1; 
+
+c1 = 0.125;
+c2 = 0.25;
+Point(1) = {1, 1, -1, c1};
+Point(2) = {-1, 1, -1, c1};
+Point(3) = {-1, -1, -1, c1};
+Point(4) = {1, -1, -1, c1};
+Point(5) = {1, 1, 1, c2};
+Point(6) = {-1, 1, 1, c2};
+Point(7) = {1, -1, 1, c2};
+Point(8) = {-1, -1, 1, c2};
+Line(1) = {7, 5};
+Line(2) = {5, 6};
+Line(3) = {6, 8};
+Line(4) = {8, 7};
+Line(5) = {7, 4};
+Line(6) = {4, 1};
+Line(7) = {1, 5};
+Line(8) = {1, 2};
+Line(9) = {2, 6};
+Line(10) = {8, 3};
+Line(11) = {3, 2};
+Line(12) = {3, 4};
+Line Loop(13) = {1, -7, -6, -5};
+Plane Surface(14) = {13};
+Line Loop(15) = {8, 9, -2, -7};
+Plane Surface(16) = {15};
+Line Loop(17) = {11, 9, 3, 10};
+Plane Surface(18) = {17};
+Line Loop(19) = {4, 5, -12, -10};
+Plane Surface(20) = {19};
+Line Loop(21) = {12, 6, 8, -11};
+Plane Surface(22) = {21};
+Line Loop(23) = {1, 2, 3, 4};
+Plane Surface(24) = {23};
+Surface Loop(25) = {14, 24, 16, 22, 20, 18};
+Volume(26) = {25};
+
+//Recombine Volume {26};
+
diff --git a/benchmarks/hex/quartCyl.geo b/benchmarks/hex/quartCyl.geo
new file mode 100644
index 0000000000000000000000000000000000000000..e97cd43e6c40b796158baa1f6efeffb0fa0f161b
--- /dev/null
+++ b/benchmarks/hex/quartCyl.geo
@@ -0,0 +1,54 @@
+Mesh.Algorithm = 8; //8 = delquad or 9= 2D R-tree
+Mesh.Algorithm3D = 9; // 3D R-tree
+Mesh.Recombine3DAll = 1; 
+Mesh.Lloyd = 10;
+
+c1 = 0.1;
+c2 = 0.05;
+Point(1) = {0, 0, 0.5, c2};
+Point(2) = {0, 0, -0.5, c2};
+Point(3) = {0, 1, -0.5, c1};
+Point(4) = {0, 1, 0.5, c1};
+Point(5) = {-1, 0, 0.5, c1};
+Point(6) = {-1, 0, -0.5, c1};
+Point(7) = {-0.5, 0, 0.5, c2};
+Point(8) = {-0.5, 0, -0.5, c2};
+Point(9) = {0, 0.5, -0.5, c2};
+Point(10) = {0, 0.5, 0.5, c2};
+Circle(1) = {7, 1, 10};
+Circle(2) = {8, 2, 9};
+Circle(3) = {5, 1, 4};
+Circle(4) = {6, 2, 3};
+Line(5) = {10, 4};
+Line(6) = {3, 9};
+Line(7) = {9, 10};
+Line(8) = {4, 3};
+Line(9) = {7, 5};
+Line(10) = {6, 8};
+Line(11) = {6, 5};
+Line(12) = {8, 7};
+Line Loop(13) = {5, -3, -9, 1};
+Plane Surface(14) = {13};
+Line Loop(15) = {6, -2, -10, 4};
+Plane Surface(16) = {15};
+Line Loop(17) = {7, 5, 8, 6};
+Plane Surface(18) = {17};
+Line Loop(19) = {12, 9, -11, 10};
+Plane Surface(20) = {19};
+Line Loop(21) = {1, -7, -2, 12};
+Ruled Surface(22) = {21};
+Line Loop(23) = {8, -4, 11, 3};
+Ruled Surface(24) = {23};
+
+Mesh.RemeshParametrization=1; //(0) harmonic (1) conformal 
+Mesh.RemeshAlgorithm=0; //(0) nosplit (1) automatic (2) split metis
+Compound Surface(114)={14};
+Compound Surface(116)={16};
+Compound Surface(118)={18};
+Compound Surface(120)={20};
+Compound Surface(122)={22};
+Compound Surface(124)={24};
+
+Surface Loop(25) = {114, 116, 122, 120, 118, 124};
+Volume(26) = {25};
+Physical Volume(126)={26};
\ No newline at end of file
diff --git a/benchmarks/hex/twoHoles.geo b/benchmarks/hex/twoHoles.geo
new file mode 100644
index 0000000000000000000000000000000000000000..c263af5ca007365548fe43c2cff5388de9df5884
--- /dev/null
+++ b/benchmarks/hex/twoHoles.geo
@@ -0,0 +1,76 @@
+// original model from Zaqueu Ernesto da Silva (zaqueu at les.ufpb.br)
+// rewritten by CG
+Mesh.Algorithm = 8; //8 = delquad or 9= 2D R-tree
+Mesh.Algorithm3D = 9; // 3D R-tree
+Mesh.Recombine3DAll = 1; 
+
+lc = 1;
+e = 6; // thickness
+w = 30; // width
+r = 15; // interior radius
+c = 37.5; // half length
+h = 8.75; // hole center dist
+rh = 4; // home radius
+
+Point(1) = {0, w, 0, lc};
+Point(2) = {c-w/2, w, 0, lc};
+Point(3) = {0, w, e, lc};
+Point(4) = {c-Sqrt((r+e)^2-e^2), w, e, lc};
+Point(5) = {c, w, w/2, lc};
+Point(6) = {c, w, w/2+e, lc};
+Point(7) = {c, w, 0, lc};
+Line(1) = {1,2};
+Line(2) = {3,4};
+Line(3) = {1,3};
+Circle(4) = {2,7,5};
+Circle(5) = {4,7,6};
+Symmetry {1,0,0,-c} { Duplicata { Line{1:5}; } }
+Line Loop(11) = {4,-9,-6,8,7,10,-5,-2,-3,1};
+Plane Surface(12) = {11};
+v[] = Extrude {0,-w,0}{ Surface{12}; };
+Delete { Volume{v[1]}; }
+Delete { Surface{55,63,43,35}; }
+
+Point(100) = {h, w/2, 0, lc};
+Point(101) = {h+rh, w/2, 0, lc};
+Point(102) = {h-rh, w/2, 0, lc};
+Point(103) = {h, w/2+rh, 0, lc};
+Point(104) = {h, w/2-rh, 0, lc};
+Circle(65) = {101,100,103};
+Circle(66) = {103,100,102};
+Circle(67) = {102,100,104};
+Circle(68) = {104,100,101};
+Extrude {0,0,e}{ Line{65:68}; }
+Symmetry {1,0,0,-c} { Duplicata { Surface{72,76,80,84}; } }
+
+Line Loop(104) = {2,50,21,-54};
+Line Loop(105) = {73,77,81,69};
+Plane Surface(106) = {104,105};
+Line Loop(107) = {23,-25,-1,58};
+Line Loop(108) = {65,66,67,68};
+Plane Surface(109) = {107,108};
+Line Loop(110) = {7,42,-18,-38};
+Line Loop(111) = {103,98,93,88};
+Plane Surface(112) = {110,111};
+Line Loop(113) = {16,-34,6,30};
+Line Loop(114) = {101,86,91,96};
+Plane Surface(115) = {113,114};
+
+//DEBUT DES AJOUTS
+//Compound Surface(172)={72};
+//Compound Surface(176)={76};
+//Compound Surface(180)={80};
+//Compound Surface(184)={84};
+
+//Compound Surface(185)={85};
+//Compound Surface(190)={90};
+//Compound Surface(195)={95};
+//Compound Surface(1100)={100};
+//FIN DES AJOUTS
+
+Surface Loop(116) = {47,-12,27,31,-115,64,39,112,85,90,95,100,51,-106,59,-109,-84,-72,-76,-80};
+Volume(117) = {116};
+
+//DEBUT DES AJOUTS
+//Physical Volume(1117) = {117};
+//FIN DES AJOUTS