From 016ef503307b2f4693c79c6e716fb46702458f44 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 30 Oct 2001 08:21:13 +0000
Subject: [PATCH] new benches

---
 benchmarks/2d/machine/Functions.geo           |  55 ++++
 benchmarks/2d/machine/Machine.geo             |  43 +++
 benchmarks/2d/machine/PhysNum.geo             |  37 +++
 benchmarks/2d/machine/Rotor.geo               |  55 ++++
 benchmarks/2d/machine/Rotor3kW.geo            | 117 +++++++
 benchmarks/2d/machine/Stator.geo              |  49 +++
 benchmarks/2d/machine/Stator3kW.geo           | 127 ++++++++
 benchmarks/3d/magnetron/box-old.geo           |  81 +++++
 benchmarks/3d/magnetron/box.geo               |  78 +++++
 benchmarks/3d/magnetron/cylindric.geo         | Bin 0 -> 2285 bytes
 benchmarks/3d/magnetron/forme1-old.geo        | 138 ++++++++
 benchmarks/3d/magnetron/forme1.geo            | 139 ++++++++
 benchmarks/3d/magnetron/forme2.geo            | 117 +++++++
 .../{avetole.geo => magnetron/magnetron0.geo} |   2 +-
 benchmarks/3d/magnetron/magnetron1-full.geo   | 253 +++++++++++++++
 benchmarks/3d/magnetron/magnetron1.geo        | 267 +++++++++++++++
 benchmarks/3d/magnetron/magnetron2-full.geo   | 305 ++++++++++++++++++
 benchmarks/3d/magnetron/magnetron2.geo        | 296 +++++++++++++++++
 benchmarks/3d/magnetron/quacylin.geo          | Bin 0 -> 2090 bytes
 benchmarks/3d/magnetron/traphedre1.geo        | 113 +++++++
 benchmarks/3d/magnetron/traphedre2.geo        | 115 +++++++
 21 files changed, 2386 insertions(+), 1 deletion(-)
 create mode 100644 benchmarks/2d/machine/Functions.geo
 create mode 100644 benchmarks/2d/machine/Machine.geo
 create mode 100644 benchmarks/2d/machine/PhysNum.geo
 create mode 100644 benchmarks/2d/machine/Rotor.geo
 create mode 100644 benchmarks/2d/machine/Rotor3kW.geo
 create mode 100644 benchmarks/2d/machine/Stator.geo
 create mode 100644 benchmarks/2d/machine/Stator3kW.geo
 create mode 100644 benchmarks/3d/magnetron/box-old.geo
 create mode 100644 benchmarks/3d/magnetron/box.geo
 create mode 100644 benchmarks/3d/magnetron/cylindric.geo
 create mode 100644 benchmarks/3d/magnetron/forme1-old.geo
 create mode 100644 benchmarks/3d/magnetron/forme1.geo
 create mode 100644 benchmarks/3d/magnetron/forme2.geo
 rename benchmarks/3d/{avetole.geo => magnetron/magnetron0.geo} (99%)
 create mode 100644 benchmarks/3d/magnetron/magnetron1-full.geo
 create mode 100644 benchmarks/3d/magnetron/magnetron1.geo
 create mode 100644 benchmarks/3d/magnetron/magnetron2-full.geo
 create mode 100644 benchmarks/3d/magnetron/magnetron2.geo
 create mode 100644 benchmarks/3d/magnetron/quacylin.geo
 create mode 100644 benchmarks/3d/magnetron/traphedre1.geo
 create mode 100644 benchmarks/3d/magnetron/traphedre2.geo

diff --git a/benchmarks/2d/machine/Functions.geo b/benchmarks/2d/machine/Functions.geo
new file mode 100644
index 0000000000..47c612491b
--- /dev/null
+++ b/benchmarks/2d/machine/Functions.geo
@@ -0,0 +1,55 @@
+Function CopySlot
+
+  For t_ In {1:NbrSect_}
+    dt_ = (t_-1)*NbrLine_;
+    For j_ In {0:NbrLines_-1}
+      KK_[j_] = ((LineLoop_[j_]>0)?1:-1) * (L_[Fabs(LineLoop_[j_])+dt_]);
+//  Printf("KK %g %g", j_, KK_[j_]);
+    EndFor
+    ll_ = newreg; Line Loop(newreg) = {KK_[{0:NbrLines_-1}]};
+    lll_= newreg; Plane Surface(newreg) = {ll_};
+    Physical Surface(PhysNum_+(t_-1)*dPhysNum_) = {lll_};
+  EndFor
+
+Return
+
+
+Function ConnectLine
+
+  ii_ = -1;
+  For t_ In {1:NbrSect_}
+    dt_ = (t_-1)*NbrLine_;
+    For j_ In {0:NbrLines_-1}
+      ii_++; KK_[ii_] = ((LineLoop_[j_]>0)?1:-1) * (L_[Fabs(LineLoop_[j_])+dt_]);
+//Printf("KK %g %g %g %g", t_, j_, ii_,KK_[ii_]);
+    EndFor
+  EndFor
+       Printf("ConnectLine newreg %g", newreg);
+  Line Loop(newreg) = {KK_[{0:NbrLines_*NbrSect_-1}]};
+
+Return
+
+
+
+Function CopyLines
+
+  ii_=NbrLine_+1;
+  For t_ In {1:NbrSect_-1}
+    For i_ In {1:NbrLine_}
+      L_[ii_] = newreg; ii_++;
+      Rotate { {0,0,1},{0,0,0},2*Pi*t_/NbrSect_ } { Duplicata { Line{L_[i_]}; } }
+    EndFor
+  EndFor
+  Coherence;
+
+Return
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/2d/machine/Machine.geo b/benchmarks/2d/machine/Machine.geo
new file mode 100644
index 0000000000..c436851863
--- /dev/null
+++ b/benchmarks/2d/machine/Machine.geo
@@ -0,0 +1,43 @@
+Include "Functions.geo";
+
+/* physical numbers */
+
+Include "PhysNum.geo";
+
+
+Geometry.LineWidth = 2;
+Geometry.AutoCoherence = 0;
+
+
+
+
+Printf("****************************************** Stator *********************************************");
+
+//Include "StatorSector.geo";
+Include "Stator3kW.geo";
+Include "Stator.geo";
+
+
+
+
+
+
+Printf("******************************************* Rotor *********************************************");
+
+//Include "RotorSector.geo";
+Include "Rotor3kW.geo";
+Include "Rotor.geo";
+
+
+
+
+Printf("**************************************** Moving Band ******************************************");
+
+Printf("Rotor airgap layer : physical region %g", RotorAirgapLayer);
+mmm = newreg; Plane Surface(mmm) = {OuterMB_,InnerMB_};
+Physical Surface(MB) = {mmm};
+
+
+
+
+
diff --git a/benchmarks/2d/machine/PhysNum.geo b/benchmarks/2d/machine/PhysNum.geo
new file mode 100644
index 0000000000..6f07b1bddf
--- /dev/null
+++ b/benchmarks/2d/machine/PhysNum.geo
@@ -0,0 +1,37 @@
+
+StatorIron = 10000;
+StatorAirgapLayer = 11000;
+StatorConductor = 12000;
+StatorSlotOpening = 14000;
+OuterStator = 40000;
+OuterMB = 17000;
+
+RotorIron = 5000;
+RotorAirgapLayer = 7000;
+RotorConductor = 500;
+RotorSlotOpening = 8000;
+Shaft = 6000;
+InnerMB = 16000;
+OuterShaft = 6001;
+
+MB = 20000;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/2d/machine/Rotor.geo b/benchmarks/2d/machine/Rotor.geo
new file mode 100644
index 0000000000..3debe50221
--- /dev/null
+++ b/benchmarks/2d/machine/Rotor.geo
@@ -0,0 +1,55 @@
+
+
+NbrSect_ = NbrSect; NbrLine_ = NbrLine; L_[]=L[];
+
+Printf("Copy lines");
+Call CopyLines;
+
+LineLoop_[] = LineLoop3[] ; NbrLines_ = NbrLines3; PhysNum_ = RotorSlotOpening; dPhysNum_ = 0; 
+Printf("Rotor slot openings : physical surface %g", PhysNum_);
+Call CopySlot;
+
+
+
+LineLoop_[] = LineLoop2[] ; NbrLines_ = NbrLines2; PhysNum_ = RotorConductor; dPhysNum_ = 1; 
+Printf("Rotor conductors : physical surfaces %g to %g", PhysNum_, PhysNum_+(NbrSect-1)*dPhysNum_);
+Call CopySlot;
+
+
+Printf("Inner airgap : line loop %g", newreg);
+LineLoop_[] = LineLoop1[] ; NbrLines_ = NbrLines1; InnerAirgap = newreg; Call ConnectLine; 
+
+Printf("Inner moving band : line loop %g", newreg);
+LineLoop_[] = LineLoop4[] ; NbrLines_ = NbrLines4; InnerMB_ = newreg; Call ConnectLine; 
+Physical Line(InnerMB) = {KK_[{0:NbrLines_*NbrSect_-1}]};
+
+
+Printf("OuterShaft : line loop %g / physical line %g", newreg, OuterShaft);
+LineLoop_[] = LineLoop5[] ; NbrLines_ = NbrLines5; OuterShaft_ = newreg; Call ConnectLine; 
+Physical Line(OuterShaft) = {KK_[{0:NbrLines_*NbrSect_-1}]};
+
+
+Printf("Shaft : physical surface %g", Shaft);
+mmm = newreg; Plane Surface(mmm) = {OuterShaft_};
+Physical Surface(Shaft) = {mmm};
+
+
+Printf("Inner rotor iron : line loop %g", newreg);
+LineLoop_[] = LineLoop6[] ; NbrLines_ = NbrLines6; InnerRotor = newreg; Call ConnectLine; 
+
+Printf("Rotor airgap layer : physical surface %g", RotorAirgapLayer);
+mmm = newreg; Plane Surface(mmm) = {InnerMB_,InnerAirgap};
+Physical Surface(RotorAirgapLayer) = {mmm};
+
+
+Printf("RotorIron : physical surface %g", RotorIron);
+mmm = newreg; Plane Surface(mmm) = {InnerRotor,OuterShaft_};
+Physical Surface(RotorIron) = {mmm};
+
+
+
+
+
+
+
+
diff --git a/benchmarks/2d/machine/Rotor3kW.geo b/benchmarks/2d/machine/Rotor3kW.geo
new file mode 100644
index 0000000000..a064cfa4ea
--- /dev/null
+++ b/benchmarks/2d/machine/Rotor3kW.geo
@@ -0,0 +1,117 @@
+
+
+
+NbrSect = 32; // number of rotor teeth
+
+u=1e-3; // scale factor
+
+AG = u* 0.4;       // airgap width
+R2 = u* 92/2 - AG;      // outer rotor radius
+//R2 = u* 92/2;      // outer rotor radius
+R3 = u* 31.75/2;      // shaft radius
+//R1 = u* 94/2;        // inner radius of moving band
+R1 = R2+AG/3;        // inner radius of moving band
+
+/*
+R1 = u* 88/2;       // inner radius of moving band
+R2 = u* 86/2;     // outer rotor radius
+R3 = u* 31.75/2;      // shaft radius
+*/
+
+
+// parameters for conductor and slot opening
+h1  = u* 1;
+h2  = u* 14.25;
+d1  = u* 2;
+Rsl = u* 4.26/2;
+
+
+
+
+// characteristic lengths
+uc = u* 1.3;
+
+pslo = uc* 0.3; // slot opening
+psl  = uc* 0.6; // upper part slot 
+pslu = uc* 1; // lower part slot 
+psha = uc* 2; // shaft radius
+pMB  = AG; // MB
+//pMB  = uc* 0.5; // MB
+p  = uc* 2; // 
+
+
+
+Y1 = Sqrt(R2*R2-d1*d1/4) ;
+Y2 = Sqrt(Rsl*Rsl-d1*d1/4) ;
+RX = Rsl*Cos(Pi/NbrSect) ;
+RY = Rsl*Sin(Pi/NbrSect) ;
+RR = (h2-Rsl*(1+1/Sin(Pi/NbrSect)))/(1-1/Sin(Pi/NbrSect));
+RX2 = RR*Cos(Pi/NbrSect) ;
+RY2 = RR*Sin(Pi/NbrSect) ;
+
+
+Point(0)  = {0,0,0,p};
+
+dP=newp-1;
+Point(dP+1)  = {d1/2,Y1,0,pslo};
+Point(dP+2)  = {-d1/2,Y1,0,pslo};
+Point(dP+3)  = {d1/2,Y1-h1,0,pslo};
+Point(dP+4)  = {-d1/2,Y1-h1,0,pslo};
+Point(dP+5)  = {0,Y1-h1-Y2,0,pslo};
+Point(dP+6)  = {RX,Y1-h1-Y2-RY,0,psl};
+Point(dP+7)  = {-RX,Y1-h1-Y2-RY,0,psl};
+Point(dP+8)  = {0,Y1-h1-Y2+Rsl-h2+RR,0,p};
+Point(dP+9)  = {RX2,Y1-h1-Y2+Rsl-h2+RR-RY2,0,pslu};
+Point(dP+10)  = {-RX2,Y1-h1-Y2+Rsl-h2+RR-RY2,0,pslu};
+Point(dP+11)  = {0,Y1-h1-Y2+Rsl-h2,0,pslu};
+Point(dP+12)  = {0,Y1-h1-Y2+Rsl,0,p};                          // not used
+Point(dP+13) = {R3*Sin(Pi/NbrSect),R3*Cos(Pi/NbrSect),0,psha};
+Point(dP+14) = {-R3*Sin(Pi/NbrSect),R3*Cos(Pi/NbrSect),0,psha};
+
+Point(dP+15) = {R2*Sin(Pi/NbrSect),R2*Cos(Pi/NbrSect),0,pMB};
+Point(dP+16) = {-R2*Sin(Pi/NbrSect),R2*Cos(Pi/NbrSect),0,pMB};
+Point(dP+17) = {R1*Sin(Pi/NbrSect),R1*Cos(Pi/NbrSect),0,pMB};
+Point(dP+18) = {-R1*Sin(Pi/NbrSect),R1*Cos(Pi/NbrSect),0,pMB};
+
+
+For t In {dP+1:dP+18}
+  Rotate {{0,0,1},{0,0,0}, 0*Pi/10} {Point{t};}
+EndFor
+
+
+i=1;
+L[i] = newreg; i++; Line(newreg) = {dP+06,dP+09};
+L[i] = newreg; i++; Line(newreg) = {dP+07,dP+10};
+L[i] = newreg; i++; Line(newreg) = {dP+01,dP+03};
+L[i] = newreg; i++; Line(newreg) = {dP+02,dP+04};
+L[i] = newreg; i++; Circle(newreg) = {dP+13,0,dP+14};
+L[i] = newreg; i++; Circle(newreg) = {dP+15,0,dP+01};
+L[i] = newreg; i++; Circle(newreg) = {dP+01,0,dP+02};
+L[i] = newreg; i++; Circle(newreg) = {dP+02,0,dP+16};
+L[i] = newreg; i++; Circle(newreg) = {dP+06,dP+05,dP+03};
+L[i] = newreg; i++; Circle(newreg) = {dP+03,dP+05,dP+04};
+L[i] = newreg; i++; Circle(newreg) = {dP+04,dP+05,dP+07};
+L[i] = newreg; i++; Circle(newreg) = {dP+10,dP+08,dP+11};
+L[i] = newreg; i++; Circle(newreg) = {dP+11,dP+08,dP+09};
+L[i] = newreg; i++; Circle(newreg) = {dP+17,0,dP+18};
+
+NbrLine = 14;
+
+/*
+L[i] = newreg; i++; Line(newreg) = {dP+15,dP+17};
+L[i] = newreg; i++; Line(newreg) = {dP+16,dP+18};
+L[i] = newreg; i++; Line(newreg) = {dP+14,dP+16};
+L[i] = newreg; i++; Line(newreg) = {dP+13,dP+15};
+L[i] = newreg; i++; Line(newreg) = {dP+13,0};
+L[i] = newreg; i++; Line(newreg) = {dP+14,0};
+*/
+
+
+NbrLines1 = 3;  LineLoop1[] = {6,7,8};                         // inner airgap
+NbrLines2 = 7;  LineLoop2[] = {11,2,12,13,-1,9,10};            // rotor conductor
+NbrLines3 = 4;  LineLoop3[] = {10,-4,-7,3};                    // rotor slot opening
+NbrLines4 = 1;  LineLoop4[] = {14};                            // inner moving band
+NbrLines5 = 1;  LineLoop5[] = {5};                             // shaft
+NbrLines6 = 10; LineLoop6[] = {-8,4,11,2,12,13,-1,9,-3,-6};    // inner rotor iron
+
+
diff --git a/benchmarks/2d/machine/Stator.geo b/benchmarks/2d/machine/Stator.geo
new file mode 100644
index 0000000000..06b1cb8135
--- /dev/null
+++ b/benchmarks/2d/machine/Stator.geo
@@ -0,0 +1,49 @@
+
+
+NbrSect_ = NbrSect; NbrLine_ = NbrLine; L_[]=L[];
+
+Printf("Copy lines");
+Call CopyLines;
+
+LineLoop_[] = LineLoop2[] ; NbrLines_ = NbrLines2; PhysNum_ = StatorConductor; dPhysNum_ = 1; 
+Printf("Stator conductors : physical ssurfaces %g to %g", PhysNum_, PhysNum_+(NbrSect-1)*dPhysNum_);
+Call CopySlot;
+
+
+LineLoop_[] = LineLoop3[] ; NbrLines_ = NbrLines3; PhysNum_ = StatorSlotOpening; dPhysNum_ = 0; 
+Printf("Stator slot openings : physical surface %g", PhysNum_);
+Call CopySlot;
+
+
+Printf("OuterAirgap : line loop %g", newreg);
+LineLoop_[] = LineLoop1[] ; NbrLines_ = NbrLines1; OuterAirgap = newreg; Call ConnectLine; 
+
+
+Printf("OuterMB : line loop %g / physical line %g", newreg, OuterMB);
+LineLoop_[] = LineLoop4[] ; NbrLines_ = NbrLines4; OuterMB_ = newreg; Call ConnectLine; 
+
+Physical Line(OuterMB) = {KK_[{0:NbrLines_*NbrSect_-1}]};
+
+
+Printf("OuterStator : line loop %g / physical line %g", newreg, OuterStator);
+LineLoop_[] = LineLoop5[] ; NbrLines_ = NbrLines5; OuterStator_ = newreg; Call ConnectLine; 
+
+Physical Line(OuterStator) = {KK_[{0:NbrLines_*NbrSect_-1}]};
+
+
+
+Printf("InnerStatorIron : line loop %g", newreg);
+LineLoop_[] = LineLoop6[] ; NbrLines_ = NbrLines6; InnerStator = newreg; Call ConnectLine; 
+
+Printf("Stator airgap layer : physical surface %g", StatorAirgapLayer);
+mmm = newreg; Plane Surface(mmm) = {OuterAirgap,OuterMB_};
+Physical Surface(StatorAirgapLayer) = {mmm};
+
+Printf("Stator iron : physical surface %g", StatorIron);
+mmm = newreg; Plane Surface(mmm) = {OuterStator_,InnerStator};
+Physical Surface(StatorIron) = {mmm};
+
+
+
+
+
diff --git a/benchmarks/2d/machine/Stator3kW.geo b/benchmarks/2d/machine/Stator3kW.geo
new file mode 100644
index 0000000000..74b83b9eb1
--- /dev/null
+++ b/benchmarks/2d/machine/Stator3kW.geo
@@ -0,0 +1,127 @@
+
+NbrSect = 36; // number of stator teeth
+
+u=1e-3;
+
+AG = u* 0.4;       // airgap width
+R2 = u* 92/2;     // inner stator radius
+R3 = u* 150/2;      // outer stator radius
+//R1 = u* 90/2;       // outer radius of moving band
+R1 = R2-AG/3;       // outer radius of moving band
+
+
+// parameters for conductor and slot opening
+h1  = u* 1;
+h2  = u* 15.3;
+d1  = u* 2.5;
+Rsl = u* 6.36/2;
+
+RR = (h2-Rsl*(1+1/Sin(Pi/NbrSect)))/(1-1/Sin(Pi/NbrSect));
+
+Y1 = Sqrt(R2*R2-d1*d1/4) ;
+Y2 = Sqrt(RR*RR-d1*d1/4) ;
+RX = Rsl*Cos(Pi/NbrSect) ;
+RY = Rsl*Sin(Pi/NbrSect) ;
+RX2 = RR*Cos(Pi/NbrSect) ;
+RY2 = RR*Sin(Pi/NbrSect) ;
+
+
+p = u* 1.5;
+
+
+
+// characteristic lengths
+uc = u* 1.4;
+
+pslo = uc* 0.3; // slot opening
+psl  = uc* 0.6; // upper part slot 
+pslu = uc* 1; // lower part slot 
+pout = uc* 3; // outer radius
+pMB  = AG; // MB
+//pMB  = uc* 0.5; // MB
+p  = uc* 2; // 
+
+
+Point(0)  = {0,0,0,p};
+
+dP=newp-1;
+Point(dP+1)  = {d1/2,Y1,0,pslo};
+Point(dP+2)  = {-d1/2,Y1,0,pslo};
+Point(dP+3)  = {d1/2,Y1+h1,0,pslo};
+Point(dP+4)  = {-d1/2,Y1+h1,0,pslo};
+Point(dP+5)  = {0,Y1+h1+Y2,0,p};
+Point(dP+6)  = {RX2,Y1+h1+Y2-RY2,0,psl};
+Point(dP+7)  = {-RX2,Y1+h1+Y2-RY2,0,psl};
+Point(dP+8)  = {0,Y1+h1+Y2-RR+h2-Rsl,0,p};
+Point(dP+9)  = {RX,Y1+h1+Y2-RR+h2-Rsl-RY,0,pslu};
+Point(dP+10)  = {-RX,Y1+h1+Y2-RR+h2-Rsl-RY,0,pslu};
+Point(dP+11)  = {0,Y1+h1+Y2-RR+h2,0,pslu};
+Point(dP+12)  = {0,Y1+h1+Y2-Rsl,0,p}; //not used
+Point(dP+13) = {R3*Sin(Pi/NbrSect),R3*Cos(Pi/NbrSect),0,pout};
+Point(dP+14) = {-R3*Sin(Pi/NbrSect),R3*Cos(Pi/NbrSect),0,pout};
+Point(dP+15) = {R2*Sin(Pi/NbrSect),R2*Cos(Pi/NbrSect),0,pMB};
+Point(dP+16) = {-R2*Sin(Pi/NbrSect),R2*Cos(Pi/NbrSect),0,pMB};
+Point(dP+17) = {R1*Sin(Pi/NbrSect),R1*Cos(Pi/NbrSect),0,pMB};
+Point(dP+18) = {-R1*Sin(Pi/NbrSect),R1*Cos(Pi/NbrSect),0,pMB};
+
+
+/*
+For t In {dP+1:dP+18}
+  Rotate {{0,0,1},{0,0,0}, 0*Pi/10} {Point{t};}
+EndFor
+*/
+
+
+i=1;
+L[i] = newreg; i++; Line(newreg) = {dP+06,dP+09};
+L[i] = newreg; i++; Line(newreg) = {dP+07,dP+10};
+L[i] = newreg; i++; Line(newreg) = {dP+01,dP+03};
+L[i] = newreg; i++; Line(newreg) = {dP+02,dP+04};
+
+L[i] = newreg; i++; Circle(newreg) = {dP+13,0,dP+14};
+L[i] = newreg; i++; Circle(newreg) = {dP+15,0,dP+01};
+L[i] = newreg; i++; Circle(newreg) = {dP+01,0,dP+02};
+L[i] = newreg; i++; Circle(newreg) = {dP+02,0,dP+16};
+L[i] = newreg; i++; Circle(newreg) = {dP+06,dP+05,dP+03};
+L[i] = newreg; i++; Circle(newreg) = {dP+03,dP+05,dP+04};
+L[i] = newreg; i++; Circle(newreg) = {dP+04,dP+05,dP+07};
+L[i] = newreg; i++; Circle(newreg) = {dP+10,dP+08,dP+11};
+L[i] = newreg; i++; Circle(newreg) = {dP+11,dP+08,dP+09};
+L[i] = newreg; i++; Circle(newreg) = {dP+17,0,dP+18};
+
+NbrLine = 14;
+
+/*
+L[i] = newreg; i++; Line(newreg) = {dP+13,dP+15};
+L[i] = newreg; i++; Line(newreg) = {dP+15,dP+17};
+L[i] = newreg; i++; Line(newreg) = {dP+14,dP+16};
+L[i] = newreg; i++; Line(newreg) = {dP+16,dP+18};
+*/
+
+
+/*
+Line Loop(19) = {6,7,8,18,-14,-16};
+Plane Surface(20) = {19};
+Line Loop(21) = {6,3,10,-4,8,18,-14,-16};
+Plane Surface(22) = {21};
+Line Loop(23) = {3,-9,1,-13,-12,-2,-11,-4,8,-17,-5,15,6};
+Plane Surface(24) = {23};
+Line Loop(25) = {11,2,12,13,-1,9,10};
+Plane Surface(26) = {25};
+*/
+
+NbrLines1 = 3;  LineLoop1[] = {6,7,8};                       // outer airgap
+NbrLines2 = 7;  LineLoop2[] = {11,2,12,13,-1,9,10};                     // conductor
+NbrLines3 = 4;  LineLoop3[] = {3,10,-4,-7};             // slot opening
+NbrLines4 = 1;  LineLoop4[] = {14};                             // outer moving band
+NbrLines5 = 1;  LineLoop5[] = {5};                             // outer stator
+NbrLines6 = 10; LineLoop6[] = {6,3,-9,1,-13,-12,-2,-11,-4,8};  // inner stator iron
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/3d/magnetron/box-old.geo b/benchmarks/3d/magnetron/box-old.geo
new file mode 100644
index 0000000000..972cf2aad3
--- /dev/null
+++ b/benchmarks/3d/magnetron/box-old.geo
@@ -0,0 +1,81 @@
+/// Function Box: 
+// create a box - of width wBox, length lBox and height hBox
+//              - of lower corner xBox, yBox, zBox
+//              - rotated from thetaBox degrees from the x axis
+//              - characteristic length lcBox
+//Function Box
+
+  p1 = newp; Point(p1) = {xBox,      yBox,      zBox,  lcBox} ;
+  p2 = newp; Point(p2) = {xBox+wBox, yBox,      zBox,  lcBox} ;
+  p3 = newp; Point(p3) = {xBox+wBox, yBox+lBox, zBox,  lcBox} ;
+  p4 = newp; Point(p4) = {xBox,      yBox+lBox, zBox,  lcBox} ;
+
+  p5 = newp; Point(p5) = {xBox,      yBox,      zBox+hBox,  lcBox} ;
+  p6 = newp; Point(p6) = {xBox+wBox, yBox,      zBox+hBox,  lcBox} ;
+  p7 = newp; Point(p7) = {xBox+wBox, yBox+lBox, zBox+hBox,  lcBox} ;
+  p8 = newp; Point(p8) = {xBox,      yBox+lBox, zBox+hBox,  lcBox} ;
+  
+  Boxes_Point1[iBox] = p1 ;
+  Boxes_Point2[iBox] = p2 ;
+  Boxes_Point3[iBox] = p3 ;
+  Boxes_Point4[iBox] = p4 ;
+  Boxes_Point5[iBox] = p5 ;
+
+  c1 = newreg; Line(c1) = {p1,p2};
+  c2 = newreg; Line(c2) = {p2,p3};
+  c3 = newreg; Line(c3) = {p3,p4};
+  c4 = newreg; Line(c4) = {p4,p1};
+
+  c5 = newreg; Line(c5) = {p5,p6};
+  c6 = newreg; Line(c6) = {p6,p7};
+  c7 = newreg; Line(c7) = {p7,p8};
+  c8 = newreg; Line(c8) = {p8,p5};
+
+  c9 = newreg; Line(c9) = {p1,p5};
+  c10 = newreg; Line(c10) = {p2,p6};
+  c11 = newreg; Line(c11) = {p3,p7};
+  c12 = newreg; Line(c12) = {p4,p8};
+
+  Boxes_Linep1p2[iBox] = c1 ;
+  Boxes_Linep2p1[iBox] = -c1 ;
+  Boxes_Linep2p3[iBox] = -c2 ;
+  Boxes_Linep3p4[iBox] = -c3 ;
+  Boxes_Linep4p1[iBox] = -c4 ;
+  Boxes_Linep5p6[iBox] = c5 ;
+  Boxes_Linep8p5[iBox] = -c8 ;
+  Boxes_Linep1p5[iBox] = c9 ;
+  Boxes_Linep2p6[iBox] = -c10 ;
+  Boxes_Linep4p8[iBox] = -c12 ;
+
+
+  l1 = newreg; Line Loop(l1) = {c1,c2,c3,c4}; Plane Surface(l1+1) = {l1};
+  l2 = newreg; Line Loop(l2) = {c5,c6,c7,c8}; Plane Surface(l2+1) = {l2};
+
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Surface{l1+1}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Surface{l2+1}; }
+ 
+  l3 = newreg; Line Loop(l3) = {c9,-c8,-c12,c4}; Plane Surface(l3+1) = {l3};
+  l4 = newreg; Line Loop(l4) = {c10,-c5,-c9,c1}; Plane Surface(l4+1) = {l4};
+  l5 = newreg; Line Loop(l5) = {c6,-c11,-c2,c10}; Plane Surface(l5+1) = {l5};
+  l6 = newreg; Line Loop(l6) = {c12,-c7,-c11,c3}; Plane Surface(l6+1) = {l6};
+
+  Boxes_LineLoop1[iBox] = l1 ;
+  Boxes_LineLoop2[iBox] = l2 ;
+  Boxes_LineLoop3[iBox] = l3 ;
+  Boxes_LineLoop4[iBox] = l4 ;
+  Boxes_LineLoop5[iBox] = l5 ;
+  Boxes_LineLoop6[iBox] = l6 ;
+
+  Boxes_PlanSurf1[iBox] = l1+1;
+  Boxes_PlanSurf2[iBox] = l2+1;
+  Boxes_PlanSurf3[iBox] = l3+1;
+  Boxes_PlanSurf4[iBox] = l4+1;
+  Boxes_PlanSurf5[iBox] = l5+1;
+  Boxes_PlanSurf6[iBox] = l6+1;
+
+  s = newreg; Surface Loop(s) = {l2+1,l4+1,l5+1,l6+1,l3+1,l1+1}; Volume(s+1) = s ;
+
+  Boxes_SurfaceLoop[iBox] = s ;
+  Boxes_Volume[iBox] = s+1 ;
+
+//Return
diff --git a/benchmarks/3d/magnetron/box.geo b/benchmarks/3d/magnetron/box.geo
new file mode 100644
index 0000000000..0866b804c5
--- /dev/null
+++ b/benchmarks/3d/magnetron/box.geo
@@ -0,0 +1,78 @@
+  p1 = newp; Point(p1) = {xBox+h1Box,      yBox-lBox/2, zBox,  lcBox} ;
+  p2 = newp; Point(p2) = {xBox+h1Box+wBox, yBox-lBox/2, zBox,  lcBox} ;
+  p3 = newp; Point(p3) = {xBox+h1Box+wBox, yBox+lBox/2, zBox,  lcBox} ;
+  p4 = newp; Point(p4) = {xBox+h1Box,      yBox+lBox/2, zBox,  lcBox} ;
+
+  p5 = newp; Point(p5) = {xBox+h1Box,      yBox-lBox/2, zBox+hBox,  lcBox} ; 
+  p6 = newp; Point(p6) = {xBox+h1Box+wBox, yBox-lBox/2, zBox+hBox,  lcBox} ;
+  p7 = newp; Point(p7) = {xBox+h1Box+wBox, yBox+lBox/2, zBox+hBox,  lcBox} ;
+  p8 = newp; Point(p8) = {xBox+h1Box,      yBox+lBox/2, zBox+hBox,  lcBox} ;
+  
+  Boxes_Point1[iBox] = p1 ;
+  Boxes_Point2[iBox] = p2 ;
+  Boxes_Point3[iBox] = p3 ;
+  Boxes_Point4[iBox] = p4 ;
+  Boxes_Point5[iBox] = p5 ;
+  Boxes_Point6[iBox] = p6 ;
+  Boxes_Point7[iBox] = p7 ;
+  Boxes_Point8[iBox] = p8 ;
+
+  c1 = newreg; Line(c1) = {p1,p2};
+  c2 = newreg; Line(c2) = {p2,p3};
+  c3 = newreg; Line(c3) = {p3,p4};
+  c4 = newreg; Line(c4) = {p4,p1};
+
+  c5 = newreg; Line(c5) = {p5,p6};
+  c6 = newreg; Line(c6) = {p6,p7};
+  c7 = newreg; Line(c7) = {p7,p8};
+  c8 = newreg; Line(c8) = {p8,p5};
+
+  c9 = newreg; Line(c9) = {p1,p5};
+  c10 = newreg; Line(c10) = {p2,p6};
+  c11 = newreg; Line(c11) = {p3,p7};
+  c12 = newreg; Line(c12) = {p4,p8};
+
+  Boxes_Linep1p2[iBox] = c1 ;
+  Boxes_Linep2p3[iBox] = c2 ;
+  Boxes_Linep3p4[iBox] = c3 ;
+  Boxes_Linep4p1[iBox] = c4 ;
+  Boxes_Linep5p6[iBox] = c5 ;
+  Boxes_Linep6p7[iBox] = c6 ;
+  Boxes_Linep7p8[iBox] = c7 ;
+  Boxes_Linep8p1[iBox] = c8 ;
+  Boxes_Linep1p5[iBox] = c9 ;
+  Boxes_Linep2p6[iBox] = c10 ;
+  Boxes_Linep3p7[iBox] = c11 ;
+  Boxes_Linep4p8[iBox] = c12 ;
+
+  l1 = newreg; Line Loop(l1) = {c1,c2,c3,c4}; Plane Surface(l1+1) = {l1};
+  l2 = newreg; Line Loop(l2) = {c5,c6,c7,c8}; Plane Surface(l2+1) = {l2};
+
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Surface{l1+1}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Surface{l2+1}; }
+ 
+  l3 = newreg; Line Loop(l3) = {c9,-c8,-c12,c4}; Plane Surface(l3+1) = {l3};
+  l4 = newreg; Line Loop(l4) = {c10,-c5,-c9,c1}; Plane Surface(l4+1) = {l4};
+  l5 = newreg; Line Loop(l5) = {c6,-c11,-c2,c10}; Plane Surface(l5+1) = {l5};
+  l6 = newreg; Line Loop(l6) = {c12,-c7,-c11,c3}; Plane Surface(l6+1) = {l6};
+
+  Boxes_LineLoop1[iBox] = l1 ;
+  Boxes_LineLoop2[iBox] = l2 ;
+  Boxes_LineLoop3[iBox] = l3 ;
+  Boxes_LineLoop4[iBox] = l4 ;
+  Boxes_LineLoop5[iBox] = l5 ;
+  Boxes_LineLoop6[iBox] = l6 ;
+
+  Boxes_PlanSurf1[iBox] = l1+1;
+  Boxes_PlanSurf2[iBox] = l2+1;
+  Boxes_PlanSurf3[iBox] = l3+1;
+  Boxes_PlanSurf4[iBox] = l4+1;
+  Boxes_PlanSurf5[iBox] = l5+1;
+  Boxes_PlanSurf6[iBox] = l6+1;
+
+  s = newreg; Surface Loop(s) = {l2+1,l4+1,l5+1,l6+1,l3+1,l1+1}; Volume(s+1) = s ;
+
+  Boxes_SurfaceLoop[iBox] = s ;
+  Boxes_Volume[iBox] = s+1 ;
+
+
diff --git a/benchmarks/3d/magnetron/cylindric.geo b/benchmarks/3d/magnetron/cylindric.geo
new file mode 100644
index 0000000000000000000000000000000000000000..8a178f2d75b3a371d84855a5f41cf41dd08e0cc4
GIT binary patch
literal 2285
zcma);Piq@75XE~o_&dzejb&`D*Z*pIX`u9wLr9^QQpzGL_JXn&yKCCC<hyr9qm{L?
zDK<DE*3(Z<Z{C_rr&IWRs#IGZE4Y6(WwonI^#O(hTu`+xS`7s#UeGXs<1_5a;zhT*
zh8=EzqT0bhm-|Bt2mIS@go~HksB}f!exppltNZ!qe_Pa{s0)Q#%BC$97+vk#0~qD^
z1mCLjJsb=N09L|BsPr$pg~wxAwIeIv<0pUVTyIR!Z*oAt1&|B;$dTV*>mXSQ$pU0d
z7oTP~K;|iA9w2lwzBq_LyyhfNA$fpIZg#RrA&UTEBi>0MUN~{7EK|(#5`(;cv|}np
zn(rzltpX{eaT{r!lGcILyIR1~)vkKlq@+zCg<Nj)Bxfl~&H}4*MJWaDbyF0&@_nxL
zehUv}rALYjZ8Kq4Z?3M&*EP~`U+rAjwb%GIMjEc8&4t}~jW1iI;kMa@uyRHsXUW&e
z$?nTq88pR>B2!Y>x##)9^n~0Qa)!d(3w<AYLaqeaL*c>;{kVHVp1AWUY!+PldG@3{
zQo9m%c}}JqS5N6DX4g*I1tjBXbXS*tAR8y;oM>?IRD#wIM$Vkr4UjT5F_^{-567b&
z8AdB9)J9BHhHp#)o=!&Z;OnV=E|f;mm}N$CN+v!zg7Mi%QF#1B&GEf_+a|EAgSjNp
zSy~+LjN5|{B_)D#eB*5r*t~=JMwql=9>z682&RT00%C6ySl+>WYfRk3=$c$bwGe74
z)JhNu9!-InhQt;f%J<5|O^r}oR?MCfql==yOWLxdVVeAi;IplppP!0G(-^;(`1cR|
zPC&=*fjuviqiA_7qxCPvsqL@hLD4$JL+kPkz$U~ebc*b(!0}#F%+Cs(*)>IeR^T8=
z!B=hgyUsm4K3^Vc<G%6?9w-d%5C%gR2CpCt9wDf;80EL4Ilbsn!x1*bo!-$C!5MjC
eFGVNn1iU|ZLk?`;4F`8q`d{Qpx2L*dr~d$CRf2^8

literal 0
HcmV?d00001

diff --git a/benchmarks/3d/magnetron/forme1-old.geo b/benchmarks/3d/magnetron/forme1-old.geo
new file mode 100644
index 0000000000..383e118935
--- /dev/null
+++ b/benchmarks/3d/magnetron/forme1-old.geo
@@ -0,0 +1,138 @@
+// Function Forme1: cree un demi T - de pt d'ancrage xFor,yFor zFor
+// 				    - de longueur LFor
+//                  		    - de largeurs l1For, l2For
+//                 		    - de hauteurs h1For, h2For, de lc lcFor
+//
+  l1Fom=Sqrt[R1Fom^2-h1Fom^2];
+  l2Fom=Sqrt[R2Fom^2-h1Fom^2];
+  p1 = newp; Point(p1) = {xFom       , yFom , zFom ,  lcFom} ;
+  p2 = newp; Point(p2) = {xFom-l2Fom+(L1Fom/Tan[angle]) , yFom, zFom-Sqrt[R1Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p3 = newp; Point(p3) = {xFom-l2Fom+(L1Fom/Tan[angle]), yFom , zFom-Sqrt[R2Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p4 = newp; Point(p4) = {xFom+l2Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  p5 = newp; Point(p5) = {xFom+l1Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  
+  p6 = newp; Point(p6)  = {xFom       , yFom+LFom  , zFom ,  lcFom} ;
+  p7 = newp; Point(p7)  = {xFom-l2Fom+(L1Fom/Tan[angle]) , yFom+LFom, zFom-Sqrt[R1Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p8 = newp; Point(p8)  = {xFom-l2Fom+(L1Fom/Tan[angle]), yFom+LFom , zFom-Sqrt[R2Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p9 = newp; Point(p9)  = {xFom+l2Fom , yFom+LFom , zFom-h1Fom ,  lcFom} ;
+  p10 = newp; Point(p10)= {xFom+l1Fom , yFom+LFom , zFom-h1Fom ,  lcFom} ;
+  p11 = newp; Point(p11)= {xFom-l1Fom , yFom+(L1Fom-(l2Fom-l1Fom)*Tan[angle]) , zFom-h1Fom ,  lcFom} ;
+  p12 = newp; Point(p12)= {xFom-l2Fom , yFom+L1Fom , zFom-h1Fom ,  lcFom} ;
+  p13 = newp; Point(p13)= {xFom-l2Fom , yFom+LFom-L1Fom , zFom-h1Fom ,  lcFom} ;
+  p14 = newp; Point(p14)= {xFom-l1Fom , yFom+(2*L1Fom+(l2Fom-l1Fom)*Tan[angle]) , zFom-h1Fom ,  lcFom} ;
+  prot = newp; Point(prot)= {xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom ,  lcFom} ;
+  
+  Fomes_Point1[iFom] = p1 ;
+  Fomes_Point2[iFom] = p2 ;
+  Fomes_Point3[iFom] = p3 ;
+  Fomes_Point4[iFom] = p4 ;
+  Fomes_Point5[iFom] = p5 ;
+  Fomes_Point6[iFom] = p6 ;
+  Fomes_Point7[iFom] = p7 ;
+  Fomes_Point8[iFom] = p8 ;
+  Fomes_Point9[iFom] = p9 ;
+  Fomes_Point10[iFom] = p10 ;
+  Fomes_Point11[iFom] = p11 ;
+  Fomes_Point12[iFom] = p12 ;
+  Fomes_Point13[iFom] = p13 ;
+  Fomes_Point14[iFom] = p14 ;
+
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p1}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p2}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p3}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p4}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p5}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p6}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p7}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p8}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p9}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p10};}
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p11}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p12}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p13}; }
+  Rotate{{0,0,1},{xFom-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p14}; }
+
+  c1 = newreg; Line(c1) = {p2,p3};
+  c2 = newreg; Circle(c2) = {p3,p1,p4};
+  c3 = newreg; Line(c3) = {p4,p5};
+  c4 = newreg; Circle(c4) = {p5,p1,p2};
+  c5 = newreg; Line(c5) = {p7,p8};
+  c6 = newreg; Circle(c6) = {p8,p6,p9};
+  c7 = newreg; Line(c7) = {p9,p10};
+  c8 = newreg; Circle(c8) = {p10,p6,p7};
+  c9 = newreg; Line(c9) = {p2,p7};
+  c10 = newreg; Line(c10) = {p3,p8};
+  c11 = newreg; Line(c11) = {p4,p9};
+  c12 = newreg; Line(c12) = {p5,p10};
+
+  c13 = newreg; Line(c13) = {p11,p12};
+  c14 = newreg; Line(c14) = {p12,p13};
+  c15 = newreg; Line(c15) = {p13,p14};
+  c16 = newreg; Line(c16) = {p14,p11};
+  c17 = newreg; Line(c17) = {p2,p11};
+  c18 = newreg; Line(c18) = {p7,p14};
+  c19 = newreg; Line(c19) = {p3,p12};
+  c20 = newreg; Line(c20) = {p8,p13};  
+
+
+  Fomes_Linep2p3[iFom] = c1 ;
+  Fomes_Linep3p4[iFom] = c2 ;
+  Fomes_Linep4p5[iFom] = c3 ;
+  Fomes_Linep5p2[iFom] = c4 ;
+  Fomes_Linep7p8[iFom] = c5 ;
+  Fomes_Linep8p9[iFom] = c6 ;
+  Fomes_Linep9p10[iFom] = c7 ;
+  Fomes_Linep10p7[iFom] = c8 ;
+  Fomes_Linep2p7[iFom] =  c9 ;
+  Fomes_Linep3p8[iFom] = c10 ;
+  Fomes_Linep4p9[iFom] = c11 ;
+  Fomes_Linep5p10[iFom] = c12 ;
+  Fomes_Linep11p12[iFom] = c13 ;
+  Fomes_Linep12p13[iFom] = c14 ;
+  Fomes_Linep13p14[iFom] = c15 ;
+  Fomes_Linep14p11[iFom] = c16 ;
+  Fomes_Linep2p11[iFom] = c17 ;
+  Fomes_Linep7p14[iFom] = c18 ;
+  Fomes_Linep3p12[iFom] = c19 ;
+  Fomes_Linep8p13[iFom] = c20 ; 
+
+  l1 = newreg; Line Loop(l1) = {c2,c11,-c6,-c10};Ruled Surface(l1+1) = {l1};
+  l2 = newreg; Line Loop(l2) = {c3,c12,-c7,-c11};Plane Surface(l2+1) = {l2};
+  l3 = newreg; Line Loop(l3) = {c1,c10,-c5,-c9};Plane Surface(l3+1) = {l3};
+  l4 = newreg; Line Loop(l4) = {c4,c9,-c8,-c12};Ruled Surface(l4+1) = {l4};
+  l5 = newreg; Line Loop(l5) = {c13,c14,c15,c16};Plane Surface(l5+1) = {l5};
+  l6 = newreg; Line Loop(l6) = {c16,-c17,c9,c18};Plane Surface(l6+1) = {l6};  
+  l7 = newreg; Line Loop(l7) = {c14,-c20,-c10,c19}; Plane Surface(l7+1) = {l7};
+  l8 = newreg; Line Loop(l8) = {c5,c6,c7,c8}; Plane Surface(l8+1) = {l8};
+  l9 = newreg; Line Loop(l9) = {c13,-c19,-c1,c17};Plane Surface(l9+1) = {l9};
+  l10 = newreg; Line Loop(l10) = {c1,c2,c3,c4};Plane Surface(l10+1) = {l10};
+  l11 = newreg; Line Loop(l11) = {c15,-c18,c5,c20};Plane Surface(l11+1) = {l11}; 
+ 
+
+  Fomes_LineLoop1[iFom]=l1;Fomes_Surf1[iFom] = l1+1;
+  Fomes_LineLoop2[iFom]=l2;Fomes_Surf2[iFom] = l2+1;
+  Fomes_LineLoop3[iFom]=l3;Fomes_Surf3[iFom] = l3+1;
+  Fomes_LineLoop4[iFom]=l4;Fomes_Surf4[iFom] = l4+1;
+  Fomes_LineLoop5[iFom]=l5;Fomes_Surf5[iFom] = l5+1;
+  Fomes_LineLoop6[iFom]=l6;Fomes_Surf6[iFom] = l6+1;
+  Fomes_LineLoop7[iFom]=l7;Fomes_Surf7[iFom] = l7+1;
+  Fomes_LineLoop8[iFom]=l8;Fomes_Surf8[iFom] = l8+1;
+  Fomes_LineLoop9[iFom]=l9;Fomes_Surf9[iFom] = l9+1;
+  Fomes_LineLoop10[iFom]=l10;Fomes_Surf10[iFom] = l10+1;
+  Fomes_LineLoop10[iFom]=l10;Fomes_Surf11[iFom] = l11+1;
+
+
+  s = newreg; Surface Loop(s) = {l1+1,l2+1,l4+1,l5+1,l6+1,l7+1,l8+1,l9+1,l10+1,l11+1}; Volume(s+1) = s ;
+
+ 
+  Fomes_SurfaceLoop[iFom] = s ;
+  Fomes_Volume[iFom] = s+1 ;
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/3d/magnetron/forme1.geo b/benchmarks/3d/magnetron/forme1.geo
new file mode 100644
index 0000000000..b002545fbe
--- /dev/null
+++ b/benchmarks/3d/magnetron/forme1.geo
@@ -0,0 +1,139 @@
+// Function Forme1: cree un demi T - de pt d'ancrage xFor,yFor zFor
+// 				    - de longueur LFor
+//                  		    - de largeurs l1For, l2For
+//                 		    - de hauteurs h1For, h2For, de lc lcFor
+//
+  l1Fom=Sqrt[R1Fom^2-h1Fom^2];
+  l2Fom=Sqrt[R2Fom^2-h1Fom^2];
+  chouilla=0.0005;
+  p1 = newp; Point(p1) = {xFom       , yFom , zFom ,  lcFom} ;
+  p2 = newp; Point(p2) = {xFom-l2Fom+(L1Fom/Tan[angle]) , yFom, zFom-Sqrt[R1Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p3 = newp; Point(p3) = {xFom-l2Fom+(L1Fom/Tan[angle]), yFom , zFom-Sqrt[R2Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p4 = newp; Point(p4) = {xFom+l2Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  p5 = newp; Point(p5) = {xFom+l1Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  
+  p6 = newp; Point(p6)  = {xFom       , yFom+LFom  , zFom ,  lcFom} ;
+  p7 = newp; Point(p7)  = {xFom-l2Fom+(L1Fom/Tan[angle]) , yFom+LFom, zFom-Sqrt[R1Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p8 = newp; Point(p8)  = {xFom-l2Fom+(L1Fom/Tan[angle]), yFom+LFom , zFom-Sqrt[R2Fom^2-(l2Fom-(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p9 = newp; Point(p9)  = {xFom+l2Fom , yFom+LFom , zFom-h1Fom ,  lcFom} ;
+  p10 = newp; Point(p10)= {xFom+l1Fom , yFom+LFom , zFom-h1Fom ,  lcFom} ;
+  p11 = newp; Point(p11)= {xFom-l1Fom , yFom+(L1Fom-(l2Fom-l1Fom)*Tan[angle]) , zFom-h1Fom ,  lcFom} ;
+  p12 = newp; Point(p12)= {xFom-l2Fom , yFom+L1Fom , zFom-h1Fom ,  lcFom} ;
+  p13 = newp; Point(p13)= {xFom-l2Fom , yFom+LFom-L1Fom , zFom-h1Fom ,  lcFom} ;
+  p14 = newp; Point(p14)= {xFom-l1Fom , yFom+(2*L1Fom+(l2Fom-l1Fom)*Tan[angle]) , zFom-h1Fom ,  lcFom} ;
+  prot = newp; Point(prot)= {xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom ,  lcFom} ;
+  
+  Fomes_Point1[iFom] = p1 ;
+  Fomes_Point2[iFom] = p2 ;
+  Fomes_Point3[iFom] = p3 ;
+  Fomes_Point4[iFom] = p4 ;
+  Fomes_Point5[iFom] = p5 ;
+  Fomes_Point6[iFom] = p6 ;
+  Fomes_Point7[iFom] = p7 ;
+  Fomes_Point8[iFom] = p8 ;
+  Fomes_Point9[iFom] = p9 ;
+  Fomes_Point10[iFom] = p10 ;
+  Fomes_Point11[iFom] = p11 ;
+  Fomes_Point12[iFom] = p12 ;
+  Fomes_Point13[iFom] = p13 ;
+  Fomes_Point14[iFom] = p14 ;
+
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p1}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p2}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p3}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p4}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p5}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p6}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p7}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p8}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p9}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p10};}
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p11}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p12}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p13}; }
+  Rotate{{0,0,1},{xFom-chouilla-(l2Fom+(L1Fom/(2*Tan[angle]))) , yFom+(3*L1Fom/2) , zFom-h1Fom},theta*Pi/180}{ Point{p14}; }
+
+  c1 = newreg; Line(c1) = {p2,p3};
+  c2 = newreg; Circle(c2) = {p3,p1,p4};
+  c3 = newreg; Line(c3) = {p4,p5};
+  c4 = newreg; Circle(c4) = {p5,p1,p2};
+  c5 = newreg; Line(c5) = {p7,p8};
+  c6 = newreg; Circle(c6) = {p8,p6,p9};
+  c7 = newreg; Line(c7) = {p9,p10};
+  c8 = newreg; Circle(c8) = {p10,p6,p7};
+  c9 = newreg; Line(c9) = {p2,p7};
+  c10 = newreg; Line(c10) = {p3,p8};
+  c11 = newreg; Line(c11) = {p4,p9};
+  c12 = newreg; Line(c12) = {p5,p10};
+
+  c13 = newreg; Line(c13) = {p11,p12};
+  c14 = newreg; Line(c14) = {p12,p13};
+  c15 = newreg; Line(c15) = {p13,p14};
+  c16 = newreg; Line(c16) = {p14,p11};
+  c17 = newreg; Line(c17) = {p2,p11};
+  c18 = newreg; Line(c18) = {p7,p14};
+  c19 = newreg; Line(c19) = {p3,p12};
+  c20 = newreg; Line(c20) = {p8,p13};  
+
+
+  Fomes_Linep2p3[iFom] = c1 ;
+  Fomes_Linep3p4[iFom] = c2 ;
+  Fomes_Linep4p5[iFom] = c3 ;
+  Fomes_Linep5p2[iFom] = c4 ;
+  Fomes_Linep7p8[iFom] = c5 ;
+  Fomes_Linep8p9[iFom] = c6 ;
+  Fomes_Linep9p10[iFom] = c7 ;
+  Fomes_Linep10p7[iFom] = c8 ;
+  Fomes_Linep2p7[iFom] =  c9 ;
+  Fomes_Linep3p8[iFom] = c10 ;
+  Fomes_Linep4p9[iFom] = c11 ;
+  Fomes_Linep5p10[iFom] = c12 ;
+  Fomes_Linep11p12[iFom] = c13 ;
+  Fomes_Linep12p13[iFom] = c14 ;
+  Fomes_Linep13p14[iFom] = c15 ;
+  Fomes_Linep14p11[iFom] = c16 ;
+  Fomes_Linep2p11[iFom] = c17 ;
+  Fomes_Linep7p14[iFom] = c18 ;
+  Fomes_Linep3p12[iFom] = c19 ;
+  Fomes_Linep8p13[iFom] = c20 ; 
+
+  l1 = newreg; Line Loop(l1) = {c2,c11,-c6,-c10};Ruled Surface(l1+1) = {l1};
+  l2 = newreg; Line Loop(l2) = {c3,c12,-c7,-c11};Plane Surface(l2+1) = {l2};
+  l3 = newreg; Line Loop(l3) = {c1,c10,-c5,-c9};Plane Surface(l3+1) = {l3};
+  l4 = newreg; Line Loop(l4) = {c4,c9,-c8,-c12};Ruled Surface(l4+1) = {l4};
+  l5 = newreg; Line Loop(l5) = {c13,c14,c15,c16};Plane Surface(l5+1) = {l5};
+  l6 = newreg; Line Loop(l6) = {c16,-c17,c9,c18};Plane Surface(l6+1) = {l6};  
+  l7 = newreg; Line Loop(l7) = {c14,-c20,-c10,c19}; Plane Surface(l7+1) = {l7};
+  l8 = newreg; Line Loop(l8) = {c5,c6,c7,c8}; Plane Surface(l8+1) = {l8};
+  l9 = newreg; Line Loop(l9) = {c13,-c19,-c1,c17};Plane Surface(l9+1) = {l9};
+  l10 = newreg; Line Loop(l10) = {c1,c2,c3,c4};Plane Surface(l10+1) = {l10};
+  l11 = newreg; Line Loop(l11) = {c15,-c18,c5,c20};Plane Surface(l11+1) = {l11}; 
+ 
+
+  Fomes_LineLoop1[iFom]=l1;Fomes_Surf1[iFom] = l1+1;
+  Fomes_LineLoop2[iFom]=l2;Fomes_Surf2[iFom] = l2+1;
+  Fomes_LineLoop3[iFom]=l3;Fomes_Surf3[iFom] = l3+1;
+  Fomes_LineLoop4[iFom]=l4;Fomes_Surf4[iFom] = l4+1;
+  Fomes_LineLoop5[iFom]=l5;Fomes_Surf5[iFom] = l5+1;
+  Fomes_LineLoop6[iFom]=l6;Fomes_Surf6[iFom] = l6+1;
+  Fomes_LineLoop7[iFom]=l7;Fomes_Surf7[iFom] = l7+1;
+  Fomes_LineLoop8[iFom]=l8;Fomes_Surf8[iFom] = l8+1;
+  Fomes_LineLoop9[iFom]=l9;Fomes_Surf9[iFom] = l9+1;
+  Fomes_LineLoop10[iFom]=l10;Fomes_Surf10[iFom] = l10+1;
+  Fomes_LineLoop10[iFom]=l10;Fomes_Surf11[iFom] = l11+1;
+
+
+  s = newreg; Surface Loop(s) = {l1+1,l2+1,l4+1,l5+1,l6+1,l7+1,l8+1,l9+1,l10+1,l11+1}; Volume(s+1) = s ;
+
+ 
+  Fomes_SurfaceLoop[iFom] = s ;
+  Fomes_Volume[iFom] = s+1 ;
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/3d/magnetron/forme2.geo b/benchmarks/3d/magnetron/forme2.geo
new file mode 100644
index 0000000000..80be8af3ff
--- /dev/null
+++ b/benchmarks/3d/magnetron/forme2.geo
@@ -0,0 +1,117 @@
+// Function Forme1: cree un demi T - de pt d'ancrage xFor,yFor zFor
+// 				    - de longueur LFor
+//                  		    - de largeurs l1For, l2For
+//                 		    - de hauteurs h1For, h2For, de lc lcFor
+//
+  l1Fom=Sqrt[R1Fom^2-h1Fom^2];
+  l2Fom=Sqrt[R2Fom^2-h1Fom^2];
+  p1 = newp; Point(p1) = {xFom       , yFom , zFom ,  lcFom} ;
+  p2 = newp; Point(p2) = {xFom-l2Fom+(L1Fom/Tan[angle]) , yFom, zFom-Sqrt[R1Fom^2-(-l2Fom+(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p3 = newp; Point(p3) = {xFom-l2Fom+(L1Fom/Tan[angle]), yFom , zFom-Sqrt[R2Fom^2-(-l2Fom+(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p4 = newp; Point(p4) = {xFom+l2Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  p5 = newp; Point(p5) = {xFom+l1Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  
+  p6 = newp; Point(p6)  = {xFom       , yFom+LFom  , zFom ,  lcFom} ;
+  p7 = newp; Point(p7)  = {xFom-l2Fom+(L1Fom/Tan[angle]) , yFom+LFom, zFom-Sqrt[R1Fom^2-(-l2Fom+(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p8 = newp; Point(p8)  = {xFom-l2Fom+(L1Fom/Tan[angle]), yFom+LFom , zFom-Sqrt[R2Fom^2-(-l2Fom+(L1Fom/Tan[angle]))^2]  ,  lcFom} ;
+  p9 = newp; Point(p9)  = {xFom+l2Fom , yFom+LFom , zFom-h1Fom ,  lcFom} ;
+  p10 = newp; Point(p10)= {xFom+l1Fom , yFom+LFom , zFom-h1Fom ,  lcFom} ;
+  p11 = newp; Point(p11)= {xFom-l1Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  p12 = newp; Point(p12)= {xFom-l2Fom , yFom , zFom-h1Fom ,  lcFom} ;
+  p13 = newp; Point(p13)= {xFom-l2Fom , yFom+LFom-L1Fom , zFom-h1Fom ,  lcFom} ;
+  p14 = newp; Point(p14)= {xFom-l1Fom , yFom+(LFom-L1Fom+(l2Fom-l1Fom)*Tan[angle]) , zFom-h1Fom ,  lcFom} ;
+
+  
+  Fomes_Point1[iFom] = p1 ;
+  Fomes_Point2[iFom] = p2 ;
+  Fomes_Point3[iFom] = p3 ;
+  Fomes_Point4[iFom] = p4 ;
+  Fomes_Point5[iFom] = p5 ;
+  Fomes_Point6[iFom] = p6 ;
+  Fomes_Point7[iFom] = p7 ;
+  Fomes_Point8[iFom] = p8 ;
+  Fomes_Point9[iFom] = p9 ;
+  Fomes_Point10[iFom] = p10 ;
+  Fomes_Point11[iFom] = p11 ;
+  Fomes_Point12[iFom] = p12 ;
+  Fomes_Point13[iFom] = p13 ;
+  Fomes_Point14[iFom] = p14 ;
+
+  c1 = newreg; Line(c1) = {p2,p3};
+  c2 = newreg; Circle(c2) = {p3,p1,p4};
+  c3 = newreg; Line(c3) = {p4,p5};
+  c4 = newreg; Circle(c4) = {p5,p1,p2};
+  c5 = newreg; Line(c5) = {p7,p8};
+  c6 = newreg; Circle(c6) = {p8,p6,p9};
+  c7 = newreg; Line(c7) = {p9,p10};
+  c8 = newreg; Circle(c8) = {p10,p6,p7};
+  c9 = newreg; Line(c9) = {p2,p7};
+  c10 = newreg; Line(c10) = {p3,p8};
+  c11 = newreg; Line(c11) = {p4,p9};
+  c12 = newreg; Line(c12) = {p5,p10};
+
+  c13 = newreg; Line(c13) = {p11,p12};
+  c14 = newreg; Line(c14) = {p12,p13};
+  c15 = newreg; Line(c15) = {p13,p14};
+  c16 = newreg; Line(c16) = {p14,p11};
+  c17 = newreg; Line(c17) = {p2,p11};
+  c18 = newreg; Line(c18) = {p7,p14};
+  c19 = newreg; Line(c19) = {p3,p12};
+  c20 = newreg; Line(c20) = {p8,p13};  
+
+
+  Fomes_Linep2p3[iFom] = c1 ;
+  Fomes_Linep3p4[iFom] = c2 ;
+  Fomes_Linep4p5[iFom] = c3 ;
+  Fomes_Linep5p2[iFom] = c4 ;
+  Fomes_Linep7p8[iFom] = c5 ;
+  Fomes_Linep8p9[iFom] = c6 ;
+  Fomes_Linep9p10[iFom] = c7 ;
+  Fomes_Linep10p7[iFom] = c8 ;
+  Fomes_Linep2p7[iFom] =  c9 ;
+  Fomes_Linep3p8[iFom] = c10 ;
+  Fomes_Linep4p9[iFom] = c11 ;
+  Fomes_Linep5p10[iFom] = c12 ;
+  Fomes_Linep11p12[iFom] = c13 ;
+  Fomes_Linep12p13[iFom] = c14 ;
+  Fomes_Linep13p14[iFom] = c15 ;
+  Fomes_Linep14p11[iFom] = c16 ;
+  Fomes_Linep2p11[iFom] = c17 ;
+  Fomes_Linep7p14[iFom] = c18 ;
+  Fomes_Linep3p12[iFom] = c19 ;
+  Fomes_Linep8p13[iFom] = c20 ; 
+
+  l1 = newreg; Line Loop(l1) = {c2,c11,-c6,-c10};Ruled Surface(l1+1) = {l1};
+  l2 = newreg; Line Loop(l2) = {c3,c12,-c7,-c11};Plane Surface(l2+1) = {l2};
+  l3 = newreg; Line Loop(l3) = {c1,c10,-c5,-c9};Plane Surface(l3+1) = {l3};
+  l4 = newreg; Line Loop(l4) = {c4,c9,-c8,-c12};Ruled Surface(l4+1) = {l4};
+  l5 = newreg; Line Loop(l5) = {c13,c14,c15,c16};Plane Surface(l5+1) = {l5};
+  l6 = newreg; Line Loop(l6) = {c16,-c17,c9,c18};Plane Surface(l6+1) = {l6};  
+  l7 = newreg; Line Loop(l7) = {c14,-c20,-c10,c19}; Plane Surface(l7+1) = {l7};
+  l8 = newreg; Line Loop(l8) = {c5,c6,c7,c8}; Plane Surface(l8+1) = {l8};
+  l9 = newreg; Line Loop(l9) = {c13,-c19,-c1,c17};Plane Surface(l9+1) = {l9};
+  l10 = newreg; Line Loop(l10) = {c1,c2,c3,c4};Plane Surface(l10+1) = {l10};
+  l11 = newreg; Line Loop(l11) = {c15,-c18,c5,c20};Plane Surface(l11+1) = {l11}; 
+
+
+  Fomes_LineLoop1[iFom]=l1;Fomes_Surf1[iFom] = l1+1;
+  Fomes_LineLoop2[iFom]=l2;Fomes_Surf2[iFom] = l2+1;
+  //Fomes_LineLoop3[iFom]=l3;Fomes_Surf3[iFom] = l3+1;
+  Fomes_LineLoop4[iFom]=l4;Fomes_Surf4[iFom] = l4+1;
+  Fomes_LineLoop5[iFom]=l5;Fomes_Surf5[iFom] = l5+1;
+  Fomes_LineLoop6[iFom]=l6;Fomes_Surf6[iFom] = l6+1;
+  Fomes_LineLoop7[iFom]=l7;Fomes_Surf7[iFom] = l7+1;
+  Fomes_LineLoop8[iFom]=l8;Fomes_Surf8[iFom] = l8+1;
+  Fomes_LineLoop9[iFom]=l9;Fomes_Surf9[iFom] = l9+1;
+  Fomes_LineLoop10[iFom]=l10;Fomes_Surf10[iFom] = l10+1;
+  Fomes_LineLoop11[iFom]=l11;Fomes_Surf11[iFom] = l11+1;
+  
+
+
+  s = newreg; Surface Loop(s) = {l1+1,l2+1,l4+1,l5+1,l6+1,l7+1,l8+1,l9+1,l10+1,l11+1}; Volume(s+1) = s ;
+
+ 
+  Fomes_SurfaceLoop[iFom] = s ;
+  Fomes_Volume[iFom] = s+1 ;
+
+
diff --git a/benchmarks/3d/avetole.geo b/benchmarks/3d/magnetron/magnetron0.geo
similarity index 99%
rename from benchmarks/3d/avetole.geo
rename to benchmarks/3d/magnetron/magnetron0.geo
index f102b6538a..74a9be8d20 100644
--- a/benchmarks/3d/avetole.geo
+++ b/benchmarks/3d/magnetron/magnetron0.geo
@@ -234,7 +234,7 @@ For i In {0:totaim}
   iBox=i; wBox=largaim[i]; lBox=longaim[i]; hBox=hautaim[i]; 
   xBox=xancaim[i]; 
   yBox=yancaim[i]; zBox= eppba ; lcBox=lc; thetaBox= anglerot[i];
-  Include "BOX.geo"; 
+  Include "box-old.geo"; 
 EndFor
 
 Coherence;
diff --git a/benchmarks/3d/magnetron/magnetron1-full.geo b/benchmarks/3d/magnetron/magnetron1-full.geo
new file mode 100644
index 0000000000..1272164865
--- /dev/null
+++ b/benchmarks/3d/magnetron/magnetron1-full.geo
@@ -0,0 +1,253 @@
+mm = 0.001 ; // 1 milimetre = 0.001 metre
+lc = 2.1*mm ; // unite de base min pour la taille caracteristique du maillage
+
+lcpba2  =  1.5*lc ;        // lc dessous plaque base 
+lcpba1  =  lc ;          // lc dessus  plaque base
+lcrint1 =  3*lc ;        // lc coquille spherique superieure
+lcrint2 =  3*lc ;        // lc coquille spherique inferieure
+lcrext1 =  2.9*lcrint1 ;   // lc coquille spherique infini superieure
+lcrext2 =  2.9*lcrint2 ;   // lc coquille spherique infini inferieure
+
+// definition de longueur de la plaque base
+
+eppba1    = 7.7 *mm ;        // epaisseur plaque base 1
+eppba2    = 6.8 *mm ;        // epaisseur plaque base 2
+eppba3    = 3.5 *mm ;        // epaisseur plaque base 3
+Raypba  = 88/2 *mm ;     // longueur plaque base 
+Raypba1 = 35.5*mm ;
+Raypba2 = 25.5*mm;
+Raypba3 = 12.5*mm;
+
+// Definition de la plaque base
+
+Point(1)   = {  Raypba  , 0.0 ,   0.0  , lcpba2  };  
+Point(2)   = {  Raypba  , 0.0 , eppba2 , lcpba2  };
+Point(3)   = {  Raypba1 , 0.0 , eppba2 , lcpba2  };
+Point(4)   = {  Raypba1 , 0.0 , eppba1 , lcpba1  };  
+Point(5)   = {  Raypba2 , 0.0 , eppba1 , lcpba1  };
+Point(6)   = {  Raypba2 , 0.0 , eppba3 , lcpba1  };
+//Point(7)   = {  Raypba3 , 0.0 , eppba3 , lcpba1  };
+//Point(8)   = {  Raypba3 , 0.0 , eppba1 ,  lcpba1 };
+
+Point(9)   = { 0.0 , Raypba ,   0.0  , lcpba2  };  
+Point(10)   = { 0.0 , Raypba  , eppba2 , lcpba2  };
+Point(11)   = { 0.0 , Raypba1 , eppba2 , lcpba2  };
+Point(12)   = { 0.0 , Raypba1 , eppba1 , lcpba1  };  
+Point(13)   = { 0.0 , Raypba2 , eppba1 , lcpba1  };
+Point(14)   = { 0.0 , Raypba2 , eppba3 , lcpba1  };
+//Point(15)   = { 0.0 , Raypba3 , eppba3 , lcpba1  };
+//Point(16)   = { 0.0 , Raypba3 , eppba1 ,  lcpba1 };
+
+Point(17)   = {  -Raypba  , 0.0 ,   0.0  , lcpba2  };  
+Point(18)   = {  -Raypba  , 0.0 , eppba2 , lcpba2  };
+Point(19)   = {  -Raypba1 , 0.0 , eppba2 , lcpba2  };
+Point(20)   = {  -Raypba1 , 0.0 , eppba1 , lcpba1  };  
+Point(21)   = {  -Raypba2 , 0.0 , eppba1 , lcpba1  };
+Point(22)   = {  -Raypba2 , 0.0 , eppba3 , lcpba1  };
+//Point(23)   = {  -Raypba3 , 0.0 , eppba3 , lcpba1  };
+//Point(24)   = {  -Raypba3 , 0.0 , eppba1 ,  lcpba1 };
+
+Point(25)   = { 0.0 , -Raypba ,   0.0  , lcpba2  };  
+Point(26)   = { 0.0 , -Raypba  , eppba2 , lcpba2  };
+Point(27)   = { 0.0 , -Raypba1 , eppba2 , lcpba2  };
+Point(28)   = { 0.0 , -Raypba1 , eppba1 , lcpba1  };  
+Point(29)   = { 0.0 , -Raypba2 , eppba1 , lcpba1  };
+Point(30)   = { 0.0 , -Raypba2 , eppba3 , lcpba1  };
+//Point(31)   = { 0.0 , -Raypba3 , eppba3 , lcpba1  };
+//Point(32)   = { 0.0 , -Raypba3 , eppba1 ,  lcpba1 };
+
+centre1=newp;Point(centre1)= { 0.0,    0.0   ,    0.0      ,  lcpba2  }; 
+centre2=newp;Point(centre2)= { 0.0,    0.0   ,   eppba2       ,  lcpba2  }; 
+centre3=newp;Point(centre3)= { 0.0,    0.0   ,   eppba1      ,  lcpba2  }; 
+centre4=newp;Point(centre4)= { 0.0,    0.0   ,   eppba3      ,  lcpba2  }; 
+
+Circle(40) = {1,centre1,9};
+Circle(41) = {2,centre2,10};
+Circle(42) = {3,centre2,11};
+Circle(43) = {4,centre3,12};
+Circle(44) = {5,centre3,13};
+Circle(45) = {6,centre4,14};
+//Circle(46) = {7,centre4,15};
+//Circle(47) = {8,centre3,16};
+
+Circle(48) = {9,centre1,17};
+Circle(49) = {10,centre2,18};
+Circle(50) = {11,centre2,19};
+Circle(51) = {12,centre3,20};
+Circle(52) = {13,centre3,21};
+Circle(53) = {14,centre4,22};
+//Circle(54) = {15,centre4,23};
+//Circle(55) = {16,centre3,24};
+
+Circle(56) = {17,centre1,25};
+Circle(57) = {18,centre2,26};
+Circle(58) = {19,centre2,27};
+Circle(59) = {20,centre3,28};
+Circle(60) = {21,centre3,29};
+Circle(61) = {22,centre4,30};
+//Circle(62) = {23,centre4,31};
+//Circle(63) = {24,centre3,32};
+
+Circle(64) = {25,centre1,1};
+Circle(65) = {26,centre2,2};
+Circle(66) = {27,centre2,3};
+Circle(67) = {28,centre3,4};
+Circle(68) = {29,centre3,5};
+Circle(69) = {30,centre4,6};
+//Circle(70) = {31,centre4,7};
+//Circle(71) = {32,centre3,8};
+
+Line(72)={1,2};
+Line(73)={3,4};
+Line(74)={5,6};
+//Line(75)={7,8};
+Line(76)={17,18};
+Line(77)={19,20};
+Line(78)={21,22};
+//Line(79)={23,24};
+Line(80)={9,10};
+Line(81)={11,12};
+Line(82)={13,14};
+//Line(83)={15,16};
+Line(84)={25,26};
+Line(85)={27,28};
+Line(86)={29,30};
+//Line(87)={31,32};
+
+iCyl=0; dCyl=12.5*mm; hCyl=8*mm; 
+xCyl=0; yCyl=0; zCyl= eppba1 ; lcCyl=lc;
+Include "cylindric.geo";
+Coherence;
+
+nbtra=6;
+nbtot=24;
+thethatra[]={0,90,150,210,270,330,30,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320,340,0};
+pcen = centre3; 
+pcen2= centre4;
+difBox=eppba1-eppba3;
+For i In {1:nbtot}
+ If (i<=nbtra) 
+   iBox=i; h1Box=7.5*mm;h2Box=16.5*mm; epBox=8*mm;RBox=Raypba3; 
+   xBox=0; yBox=0; zBox=eppba1 ; lcBox=3*mm;thetaBox=thethatra[i];
+   Include "traphedre1.geo";
+ EndIf
+ If (i>nbtra) 
+   iBox=i; h1Box=36.5*mm;wBox=6*mm;lBox=12*mm; hBox=9*mm; 
+   xBox=0; yBox=0; zBox=eppba2 ; lcBox=3*mm;thetaBox=thethatra[i];
+   Include "box.geo";
+ EndIf
+EndFor
+
+//12 arc de cercle manquant
+arc1=newreg; Circle(arc1)={Boxes_Point5[1],centre3,Boxes_Point2[2]};
+arc2=newreg; Circle(arc2)={Boxes_Point5[2],centre3,Boxes_Point2[3]};
+arc3=newreg; Circle(arc3)={Boxes_Point5[3],centre3,Boxes_Point2[4]};
+arc4=newreg; Circle(arc4)={Boxes_Point5[4],centre3,Boxes_Point2[5]};
+arc5=newreg; Circle(arc5)={Boxes_Point5[5],centre3,Boxes_Point2[6]};
+arc6=newreg; Circle(arc6)={Boxes_Point5[6],centre3,Boxes_Point2[1]};
+arc7=newreg; Circle(arc7)={Boxes_Point12[1],centre4,Boxes_Point11[2]};
+arc8=newreg; Circle(arc8)={Boxes_Point12[2],centre4,Boxes_Point11[3]};
+arc9=newreg; Circle(arc9)={Boxes_Point12[3],centre4,Boxes_Point11[4]};
+arc10=newreg; Circle(arc10)={Boxes_Point12[4],centre4,Boxes_Point11[5]};
+arc11=newreg; Circle(arc11)={Boxes_Point12[5],centre4,Boxes_Point11[6]};
+arc12=newreg; Circle(arc12)={Boxes_Point12[6],centre4,Boxes_Point11[1]};
+
+
+surfpbc1=newreg;
+Line Loop(surfpbc1)={40,64,56,48};
+Plane Surface(surfpbc1+1)={surfpbc1};
+surfpbc2=newreg;
+Line Loop(surfpbc2)={72,41,-80,-40};
+Ruled Surface(surfpbc2+1)={surfpbc2};
+surfpbc3=newreg;
+Line Loop(surfpbc3)={80,49,-76,-48};
+Ruled Surface(surfpbc3+1)={surfpbc3};
+surfpbc4=newreg;
+Line Loop(surfpbc4)={76,57,-84,-56};
+Ruled Surface(surfpbc4+1)={surfpbc4};
+surfpbc5=newreg;
+Line Loop(surfpbc5)={84,65,-72,-64};
+Ruled Surface(surfpbc5+1)={surfpbc5};
+surfpbc6=newreg;
+Line Loop(surfpbc6)={41,49,57,65};
+surfpbc7=newreg;
+Line Loop(surfpbc7)={42,50,58,66};
+Plane Surface(surfpbc7+1)={surfpbc6,surfpbc7,Boxes_LineLoop1[{7:24}]};
+surfpbc8=newreg;
+Line Loop(surfpbc8)={73,43,-81,-42};
+Ruled Surface(surfpbc8+1)={surfpbc8};
+surfpbc9=newreg;
+Line Loop(surfpbc9)={81,51,-77,-50};
+Ruled Surface(surfpbc9+1)={surfpbc9};
+surfpbc10=newreg;
+Line Loop(surfpbc10)={77,59,-85,-58};
+Ruled Surface(surfpbc10+1)={surfpbc10};
+surfpbc11=newreg;
+Line Loop(surfpbc11)={85,67,-73,-66};
+Ruled Surface(surfpbc11+1)={surfpbc11};
+surfpbc12=newreg;
+Line Loop(surfpbc12)={43,51,59,67};
+surfpbc13=newreg;
+Line Loop(surfpbc13)={44,52,60,68};
+Plane Surface(surfpbc13+1)={surfpbc12,surfpbc13};
+surfpbc14=newreg;
+Line Loop(surfpbc14)={-74,44,82,-45};
+Ruled Surface(surfpbc14+1)={surfpbc14};
+surfpbc15=newreg;
+Line Loop(surfpbc15)={-82,52,78,-53};
+Ruled Surface(surfpbc15+1)={surfpbc15};
+surfpbc16=newreg;
+Line Loop(surfpbc16)={-78,60,86,-61};
+Ruled Surface(surfpbc16+1)={surfpbc16};
+surfpbc17=newreg;
+Line Loop(surfpbc17)={-86,68,74,-69};
+Ruled Surface(surfpbc17+1)={surfpbc17};
+surfpbc18=newreg;
+Line Loop(surfpbc18)={45,53,61,69};
+surfpbc19=newreg;
+Line Loop(surfpbc19)={Boxes_Linep11p12[{1:6}],arc7,arc8,arc9,arc10,arc11,arc12};
+Plane Surface(surfpbc19+1)={surfpbc18,surfpbc19};
+
+surfpbc20=newreg;
+Line Loop(surfpbc20)={arc1,Boxes_Linep2p11[2],-arc7,-Boxes_Linep5p12[1]};
+Ruled Surface(surfpbc20+1)={surfpbc20};
+surfpbc21=newreg;
+Line Loop(surfpbc21)={arc2,Boxes_Linep2p11[3],-arc8,-Boxes_Linep5p12[2]};
+Ruled Surface(surfpbc21+1)={surfpbc21};
+surfpbc22=newreg;
+Line Loop(surfpbc22)={arc3,Boxes_Linep2p11[4],-arc9,-Boxes_Linep5p12[3]};
+Ruled Surface(surfpbc22+1)={surfpbc22};
+surfpbc23=newreg;
+Line Loop(surfpbc23)={arc4,Boxes_Linep2p11[5],-arc10,-Boxes_Linep5p12[4]};
+Ruled Surface(surfpbc23+1)={surfpbc23};
+surfpbc24=newreg;
+Line Loop(surfpbc24)={arc5,Boxes_Linep2p11[6],-arc11,-Boxes_Linep5p12[5]};
+Ruled Surface(surfpbc24+1)={surfpbc24};
+surfpbc25=newreg;
+Line Loop(surfpbc25)={arc6,Boxes_Linep2p11[1],-arc12,-Boxes_Linep5p12[6]};
+Ruled Surface(surfpbc25+1)={surfpbc25};
+surfpbc26=newreg;
+Line Loop(surfpbc26)={arc1,-Boxes_Linep1p2[2],-Boxes_Linep6p1[2],-Boxes_Linep5p6[2],arc2,-Boxes_Linep1p2[3],-Boxes_Linep6p1[3],-Boxes_Linep5p6[3],arc3,-Boxes_Linep1p2[4],-Boxes_Linep6p1[4],-Boxes_Linep5p6[4],arc4,-Boxes_Linep1p2[5],-Boxes_Linep6p1[5],-Boxes_Linep5p6[5],arc5,-Boxes_Linep1p2[6],-Boxes_Linep6p1[6],-Boxes_Linep5p6[6],arc6,-Boxes_Linep1p2[1],-Boxes_Linep6p1[1],-Boxes_Linep5p6[1]};
+Plane Surface(surfpbc26+1)={surfpbc26,Cyles_BaseLoop[0]};
+
+volpbc = newreg;
+Surface Loop(volpbc)={surfpbc1+1,surfpbc2+1,surfpbc3+1,surfpbc4+1,surfpbc5+1,surfpbc7+1,surfpbc8+1,surfpbc9+1,surfpbc10+1,surfpbc11+1,surfpbc13+1,surfpbc14+1,surfpbc15+1,surfpbc16+1,surfpbc17+1,surfpbc19+1,surfpbc20+1,surfpbc21+1,surfpbc22+1,surfpbc23+1,surfpbc24+1,surfpbc25+1,surfpbc26+1,Boxes_PlanSurf1[{1:24}],Boxes_PlanSurf8[{1:6}],Cyles_BaseSurf[0]};
+Volume(volpbc+1)={volpbc};
+
+
+Physical Surface(7776)={surfpbc1+1,surfpbc2+1,surfpbc3+1,surfpbc4+1,surfpbc5+1,surfpbc7+1,surfpbc8+1,surfpbc9+1,surfpbc10+1,surfpbc11+1,surfpbc13+1,surfpbc14+1,surfpbc15+1,surfpbc16+1,surfpbc17+1,surfpbc19+1,surfpbc20+1,surfpbc21+1,surfpbc22+1,surfpbc23+1,surfpbc24+1,surfpbc25+1,surfpbc26+1,Boxes_PlanSurf8[{1:6}]};
+
+
+Physical Surface(7777)={Cyles_BaseSurf[0],Cyles_HautSurf[0],Cyles_RuleSurf1[0],Cyles_RuleSurf2[0],Cyles_RuleSurf3[0],Cyles_RuleSurf4[0]};
+
+Physical Surface(7778)={Boxes_PlanSurf1[{1:6}],Boxes_PlanSurf2[{1:6}],Boxes_PlanSurf3[{1:6}],Boxes_PlanSurf4[{1:6}],Boxes_PlanSurf5[{1:6}],Boxes_PlanSurf6[{1:6}],Boxes_PlanSurf7[{1:6}]};
+Physical Surface(7779)={Boxes_PlanSurf1[{7:24}],Boxes_PlanSurf2[{7:24}],Boxes_PlanSurf3[{7:24}],Boxes_PlanSurf4[{7:24}],Boxes_PlanSurf5[{7:24}],Boxes_PlanSurf6[{7:24}]};
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/3d/magnetron/magnetron1.geo b/benchmarks/3d/magnetron/magnetron1.geo
new file mode 100644
index 0000000000..07e0e3e661
--- /dev/null
+++ b/benchmarks/3d/magnetron/magnetron1.geo
@@ -0,0 +1,267 @@
+mm = 0.001 ; // 1 milimetre = 0.001 metre
+lc = 1.5*mm ; // unite de base min pour la taille caracteristique du maillage
+
+lcpba2  =  1.5*lc ;        // lc dessous plaque base 
+lcpba1  =  lc ;          // lc dessus  plaque base
+lcrint1 =  3*lc ;        // lc coquille spherique superieure
+lcrint2 =  3*lc ;        // lc coquille spherique inferieure
+lcrext1 =  2.9*lcrint1 ;   // lc coquille spherique infini superieure
+lcrext2 =  2.9*lcrint2 ;   // lc coquille spherique infini inferieure
+
+// definition de longueur de la plaque base
+
+eppba1    = 7.7 *mm ;        // epaisseur plaque base 1
+eppba2    = 6.8 *mm ;        // epaisseur plaque base 2
+eppba3    = 3.5 *mm ;        // epaisseur plaque base 3
+Raypba  = 88/2 *mm ;     // longueur plaque base 
+Raypba1 = 35.5*mm ;
+Raypba2 = 25.5*mm;
+Raypba3 = 12.5*mm;
+rint     = 90. *mm ;       // rayon interne coquille spherique
+rext     = 1.5 * rint ;     // rayon externe coquille spherique
+ 
+Point(1)   = {  Raypba  , 0.0 ,   0.0  , lcpba2  };  
+Point(2)   = {  Raypba  , 0.0 , eppba2 , lcpba2  };
+Point(3)   = {  Raypba1 , 0.0 , eppba2 , lcpba2  };
+Point(4)   = {  Raypba1 , 0.0 , eppba1 , lcpba1  };  
+Point(5)   = {  Raypba2 , 0.0 , eppba1 , lcpba1  };
+Point(6)   = {  Raypba2 , 0.0 , eppba3 , lcpba1  };
+Point(7)   = {  Raypba3 , 0.0 , eppba3 , lcpba1  };
+Point(8)   = {  Raypba3 , 0.0 , eppba1 ,  lcpba1 };
+
+Point(9)   = { 0.0 , Raypba ,   0.0  , lcpba2  };  
+Point(10)   = { 0.0 , Raypba  , eppba2 , lcpba2  };
+Point(11)   = { 0.0 , Raypba1 , eppba2 , lcpba2  };
+Point(12)   = { 0.0 , Raypba1 , eppba1 , lcpba1  };  
+Point(13)   = { 0.0 , Raypba2 , eppba1 , lcpba1  };
+Point(14)   = { 0.0 , Raypba2 , eppba3 , lcpba1  };
+//Point(15)   = { 0.0 , Raypba3 , eppba3 , lcpba1  };
+//Point(16)   = { 0.0 , Raypba3 , eppba1 ,  lcpba1 };
+
+centre1=newp;Point(centre1)= { 0.0,    0.0   ,    0.0      ,  lcpba2  }; 
+centre2=newp;Point(centre2)= { 0.0,    0.0   ,   eppba2       ,  lcpba2  }; 
+centre3=newp;Point(centre3)= { 0.0,    0.0   ,   eppba1      ,  lcpba2  }; 
+centre4=newp;Point(centre4)= { 0.0,    0.0   ,   eppba3      ,  lcpba2  }; 
+
+Circle(20) = {1,centre1,9};
+Circle(21) = {2,centre2,10};
+Circle(22) = {3,centre2,11};
+Circle(23) = {4,centre3,12};
+Circle(24) = {5,centre3,13};
+Circle(25) = {6,centre4,14};
+//Circle(26) = {7,centre4,15};
+//Circle(27) = {8,centre3,16};
+
+Line(28)={centre1,1};
+Line(29)={1,2};
+//Line(30)={2,3};
+Line(31)={3,4};
+Line(32)={4,5};
+Line(33)={5,6};
+Line(34)={6,7};
+Line(35)={7,8};
+//Line(36)={8,centre3};
+Line(37)={centre3,centre1};
+
+Line(38)={centre1,9};
+Line(39)={9,10};
+Line(40)={10,11};
+Line(41)={11,12};
+Line(42)={12,13};
+Line(43)={13,14};
+//Line(44)={14,15};
+//Line(45)={15,16};
+//Line(46)={16,centre3};
+
+iCyl=0; dCyl=12.5*mm; hCyl=8*mm; 
+xCyl=0; yCyl=0; zCyl= eppba1 ; lcCyl=lc;
+Include "quacylin.geo";
+Coherence;
+nbtra=2;
+nbtot=7;
+thethatra[]={0,90,30,20,40,60,80,0};
+pcen = centre3; 
+pcen2= centre4;
+difBox=eppba1-eppba3;
+
+For i In {1:nbtot}
+ If (i==1) 
+   iBox=i; h1Box=7.5*mm;h2Box=16.5*mm; epBox=8*mm;RBox=Raypba3; 
+   xBox=0; yBox=0; zBox=eppba1 ; lcBox=lc;thetaBox=thethatra[i];
+   Include "traphedre2.geo";
+ EndIf
+   If (i==2) 
+   iBox=i; h1Box=7.5*mm;h2Box=16.5*mm; epBox=8*mm;RBox=Raypba3; 
+   xBox=0; yBox=0; zBox=eppba1 ; lcBox=lc;thetaBox=thethatra[i];
+   Include "traphedre1.geo";
+ EndIf
+   If (i>nbtra && i<nbtot) 
+   iBox=i; h1Box=36.5*mm;wBox=6*mm;lBox=12*mm; hBox=9*mm; 
+   xBox=0; yBox=0; zBox=eppba2 ; lcBox=lc;thetaBox=thethatra[i];
+   Include "box.geo";
+ EndIf
+  If (i==nbtot) 
+   iBox=i; h1Box=36.5*mm;wBox=6*mm;lBox=6*mm; hBox=9*mm; 
+   xBox=0; yBox=3*mm; zBox=eppba2 ; lcBox=lc;thetaBox=thethatra[i];
+   Include "box.geo";
+  EndIf
+EndFor
+
+//ligne et arc de cercle manquant
+arc1=newreg; Circle(arc1)={8,centre3,Boxes_Point2[2]};
+arc2=newreg; Circle(arc2)={Boxes_Point5[2],centre3,Boxes_Point2[1]};
+arc3=newreg; Circle(arc3)={7,centre4,Boxes_Point11[2]};
+arc4=newreg; Circle(arc4)={Boxes_Point12[2],centre3,Boxes_Point11[1]};
+axex1=newreg;
+Line(axex1) = {Cyles_Point2[0],8};
+axex2=newreg;
+Line(axex2) = {3,Boxes_Point1[7]};
+axex3=newreg;
+Line(axex3) = {Boxes_Point2[7],2};
+axex[]={axex1,axex2,axex3};
+axey1=newreg;
+Line(axey1) = {Cyles_Point3[0],Boxes_Point6[1]};
+axey2=newreg;
+Line(axey2) = {Boxes_Point12[1],14};
+
+// Surfaces manquantes
+surfpbx=newreg;
+Line Loop(surfpbx)={Cyles_Linep1p2[0],axex[],-35,-34,-33,-32,-31,Boxes_Linep1p2[7],-29,-28,-37};
+Plane Surface(surfpbx+1) ={surfpbx};
+surfpby=newreg;
+Line Loop(surfpby)={Cyles_Linep1p3[0],axey1,-Boxes_Linep5p6[1], Boxes_Linep5p12[1],axey2,-43,-42,-41,-40,-39,-38,-37};
+Plane Surface(surfpby+1) ={surfpby};
+surfpb1=newreg;
+Line Loop(surfpb1)={28,20,-38};
+Plane Surface(surfpb1+1) ={surfpb1};
+surfpb2=newreg;
+Line Loop(surfpb2)={29,21,-39,-20};
+Ruled Surface(surfpb2+1) ={surfpb2};
+surfpb3=newreg;
+Line Loop(surfpb3)={axex2,-Boxes_Linep4p1[7],-Boxes_Linep3p4[7],-Boxes_Linep2p3[7],axex3,21,40,-22};
+Plane Surface(surfpb3+1) ={surfpb3,Boxes_LineLoop1[{3:6}]};
+surfpb4=newreg;
+Line Loop(surfpb4)={31,23,-41,-22};
+Ruled Surface(surfpb4+1) ={surfpb4};
+surfpb5=newreg;
+Line Loop(surfpb5)={32,24,-42,-23};
+Plane Surface(surfpb5+1) ={surfpb5};
+surfpb6=newreg;
+Line Loop(surfpb6)={33,25,-43,-24};
+Ruled Surface(surfpb6+1) ={surfpb6};
+surfpb7=newreg;
+Line Loop(surfpb7)={34,arc3,Boxes_Linep11p12[{1:2}],arc4,axey2,-25};
+Plane Surface(surfpb7+1) ={surfpb7};
+surfpb8=newreg;
+Line Loop(surfpb8)={35,arc1,Boxes_Linep2p11[2],-arc3};
+Ruled Surface(surfpb8+1) ={surfpb8};
+surfpb9=newreg;
+Line Loop(surfpb9)={arc2,Boxes_Linep2p11[1],-arc4,-Boxes_Linep5p12[2]};
+Ruled Surface(surfpb9+1) ={surfpb9};
+surfpb10=newreg;
+Line Loop(surfpb10)={axex1,arc1,-Boxes_Linep1p2[2],-Boxes_Linep6p1[2],-Boxes_Linep5p6[2],arc2,-Boxes_Linep1p2[1],-Boxes_Linep6p1[1],-axey1,Cyles_Curvep3p2[0]};
+Plane Surface(surfpb10+1) ={surfpb10};
+
+//Volume plaque base
+
+volpb=newreg;
+Surface Loop(volpb)={surfpbx+1,surfpby+1,surfpb1+1,surfpb2+1,surfpb3+1,surfpb4+1,surfpb5+1,surfpb6+1,surfpb7+1,surfpb8+1,surfpb9+1,surfpb10+1,Boxes_PlanSurf8[{1:2}],Boxes_PlanSurf1[{1:7}],Cyles_BaseSurf[0]};
+Volume(volpb+1)={volpb};
+
+
+//creation des points pour creer les sphere de transfo inf
+tranZ=20*mm;
+Point(350) = {  rint  ,  0.0   ,  tranZ      , lcrint1 };
+Point(351) = {  rext  ,  0.0   ,  tranZ     , lcrext1 };
+Point(352) = {  0.0   ,  rint  ,  tranZ   , lcrint1 };
+Point(353) = {  0.0   ,  rext  ,  tranZ   , lcrext1 };
+Point(354) = {  0.0   ,  0.0   ,  rext+tranZ    , lcrext1 };
+Point(355) = {  0.0   ,  0.0   ,  rint+tranZ     , lcrint1 };
+Point(356) = {  0.0   ,  0.0   ,  -rint+tranZ    , lcrint2 };
+Point(357) = {  0.0   ,  0.0   ,  -rext+tranZ    , lcrext2 };
+
+Line(358)={centre1,356};
+Line(359)={356,357};
+Line(360)={Cyles_Point4[0],355};
+Line(361)={355,354};
+
+centre=newreg;
+Point(centre) = {  0.0     ,    0.0   ,   tranZ      ,  lcpba2  };
+Circle(362) = {350, centre,355};
+Circle(363) = {351, centre,354};
+Circle(364) = {350, centre,356};
+Circle(365) = {351, centre,357};
+Circle(366) = {352, centre,355};
+Circle(367) = {353, centre,354};
+Circle(368) = {352, centre,356};
+Circle(369) = {353, centre,357};
+Circle(370) = {350, centre,352};
+Circle(371) = {351, centre,353};
+
+Line Loop(372) = {362,-366,-370};
+Ruled Surface(373) = {372};
+Line Loop(374) = {363,-367,-371};
+Ruled Surface(375) = {374};
+Line Loop(376) = {364,-368,-370};
+Ruled Surface(377) = {376};
+Line Loop(378) = {365,-369,-371};
+Ruled Surface(379) = {378};
+Line Loop(380) = {361,-363,365,-359,-364,362};
+Plane Surface(381) = {380};
+Line Loop(382) = {361,-367,369,-359,-368,366};
+Plane Surface(383) = {382};
+
+Surface Loop(384) = {373,375,377,379,381,383};
+Volume(385) = {384};
+
+//Surfaces et volume manquants air
+
+surfair1 = newreg;
+Line Loop(surfair1)= {358,-364,362,-360,Cyles_Linep4p5[0],Cyles_Linep5p2[0],axex[],-35,-34,-33,-32,-31,Boxes_Linep1p5[7],Boxes_Linep5p6[7],-Boxes_Linep2p6[7],-29,-28};
+Plane Surface(surfair1+1)= {surfair1};
+
+surfair2 = newreg;
+Line Loop(surfair2)= {358,-368,366,-360,Cyles_Linep4p6[0],Cyles_Linep6p3[0],axey1,Boxes_Linep6p10[1],-Boxes_Linep9p10[1],-Boxes_Linep4p9[1],Boxes_Linep4p5[1],Boxes_Linep5p12[1],axey2,-43,-42,-41,-40,-39,-38};
+Plane Surface(surfair2+1)= {surfair2};
+
+volair = newreg;
+Surface Loop(volair)={surfair1+1,surfair2+1,Cyles_HautSurf[0],Cyles_RuleSurf1[0],surfpb1+1,surfpb2+1,surfpb3+1,surfpb4+1,surfpb5+1,surfpb6+1,surfpb7+1,surfpb8+1,surfpb9+1,surfpb10+1,Boxes_PlanSurf8[{1:2}],Boxes_PlanSurf7[{1:2}],Boxes_PlanSurf6[2],Boxes_PlanSurf5[{1:2}],Boxes_PlanSurf4[{1:2}],Boxes_PlanSurf3[{1:2}],Boxes_PlanSurf2[{1:2}],Boxes_PlanSurf2[{3:7}],Boxes_PlanSurf3[{3:7}],Boxes_PlanSurf4[{3:6}],Boxes_PlanSurf5[{3:7}],Boxes_PlanSurf6[{3:7}],373,377};
+Volume(volair+1) ={volair};
+
+
+// definition des entites physiques
+
+Physical Volume(9999)={volpb+1};
+Physical Volume(9998)={volair+1};
+Physical Volume(9997)={385};
+
+Physical Volume(8888)={Cyles_Volume[0]};
+Physical Volume(8887)={Boxes_Volume[{3:7}]};
+Physical Volume(8886)={Boxes_Volume[2]};
+Physical Volume(8885)={Boxes_Volume[1]};
+
+Physical Surface(7776)={375,379};
+Physical Surface(7777)={Boxes_PlanSurf4[7],surfpbx+1,surfair1+1,381,Cyles_Surf3[0],Cyles_Surf4[0],Boxes_PlanSurf6[1],surfpby+1,surfair2+1,383};
+
+
+/*
+Point(900)   = {    0.0   ,    50*mm   ,    0.0      ,  lcpba2  }; 
+Point(901)   = {   50*mm   ,    0*mm   ,    0.0      ,  lcpba2  };  
+
+Point(902)   = {    0.0   ,    30*mm   ,    0.0      ,  lcpba2  }; 
+Point(903)   = {   30*mm   ,    0*mm   ,    0.0      ,  lcpba2  }; 
+
+Point(904)   = {    0.0   ,    60*mm   ,    0.0      ,  lcpba2  }; 
+Point(905)   = {   60*mm   ,    0*mm   ,    0.0      ,  lcpba2  };   
+
+Circle(906) = {900,centre1,901};
+Circle(907) = {902,centre1,903};
+Circle(908) = {904,centre1,905};
+*/
+
+
+
+
+
+
+
diff --git a/benchmarks/3d/magnetron/magnetron2-full.geo b/benchmarks/3d/magnetron/magnetron2-full.geo
new file mode 100644
index 0000000000..ca26b8157c
--- /dev/null
+++ b/benchmarks/3d/magnetron/magnetron2-full.geo
@@ -0,0 +1,305 @@
+mm = 0.001 ; // 1 milimetre = 0.001 metre
+lc = 3*mm ; // unite de base min pour la taille caracteristique du maillage
+
+lcpba   =   lc ;        // lc plaques base centrale et laterale 
+
+
+// Definition de la plaque base centrale
+
+r1pbc = 3*mm;
+r2pbc = 5*mm;
+r3pbc = 19.75*mm;
+r4pbc = 18*mm;
+e1pbc = 2*mm;
+e2pbc = 4*mm;
+e3pbc = 6.2*mm;
+
+Point(1)   = { r1pbc ,    0.0   ,    0.0      ,  lcpba  };  
+Point(2)   = { r2pbc ,    0.0   ,    0.0      ,  lcpba  };
+Point(3)   = { r2pbc ,    0.0   ,   e1pbc     ,  lcpba  };
+Point(4)   = { r3pbc ,    0.0   ,   e1pbc     ,  lcpba  };
+Point(5)   = { r3pbc ,    0.0   ,   e2pbc      ,  lcpba  };  
+Point(6)   = { r4pbc ,    0.0   ,   e2pbc      ,  lcpba  }; 
+Point(7)   = { r4pbc ,    0.0   ,   e3pbc      ,  lcpba  }; 
+Point(8)   = { r1pbc ,    0.0   ,   e3pbc      ,  lcpba  }; 
+
+Point(9)   = { 0.0  ,     r1pbc   ,    0.0      ,  lcpba  };  
+Point(10)   = { 0.0  ,    r2pbc   ,    0.0      ,  lcpba  };
+Point(11)   = { 0.0  ,    r2pbc   ,   e1pbc     ,  lcpba  };
+Point(12)   = { 0.0  ,    r3pbc   ,   e1pbc     ,  lcpba  };
+Point(13)   = { 0.0  ,    r3pbc   ,   e2pbc      ,  lcpba  };  
+Point(14)   = { 0.0  ,    r4pbc   ,   e2pbc      ,  lcpba  }; 
+Point(15)   = { 0.0  ,    r4pbc   ,   e3pbc      ,  lcpba  }; 
+Point(16)   = { 0.0  ,    r1pbc   ,   e3pbc      ,  lcpba  }; 
+
+Point(17)   = { -r1pbc ,    0.0   ,    0.0      ,  lcpba  };  
+Point(18)   = { -r2pbc ,    0.0   ,    0.0      ,  lcpba  };
+Point(19)   = { -r2pbc ,    0.0   ,   e1pbc     ,  lcpba  };
+Point(20)   = { -r3pbc ,    0.0   ,   e1pbc     ,  lcpba  };
+Point(21)   = { -r3pbc ,    0.0   ,   e2pbc      ,  lcpba  };  
+Point(22)   = { -r4pbc ,    0.0   ,   e2pbc      ,  lcpba  }; 
+Point(23)   = { -r4pbc ,    0.0   ,   e3pbc      ,  lcpba  }; 
+Point(24)   = { -r1pbc ,    0.0   ,   e3pbc      ,  lcpba  }; 
+
+Point(25)   = { 0.0  ,    -r1pbc   ,    0.0      ,  lcpba  };  
+Point(26)   = { 0.0  ,    -r2pbc   ,    0.0      ,  lcpba  };
+Point(27)   = { 0.0  ,    -r2pbc   ,   e1pbc     ,  lcpba  };
+Point(28)   = { 0.0  ,    -r3pbc   ,   e1pbc     ,  lcpba  };
+Point(29)   = { 0.0  ,    -r3pbc   ,   e2pbc      ,  lcpba  };  
+Point(30)   = { 0.0  ,    -r4pbc   ,   e2pbc      ,  lcpba  }; 
+Point(31)   = { 0.0  ,    -r4pbc   ,   e3pbc      ,  lcpba  }; 
+Point(32)   = { 0.0  ,    -r1pbc   ,   e3pbc      ,  lcpba  }; 
+
+
+centre1=newp;Point(centre1)= { 0.0,    0.0   ,    0.0      ,  lcpba  }; 
+centre2=newp;Point(centre2)= { 0.0,    0.0   ,    e1pbc      ,  lcpba  }; 
+centre3=newp;Point(centre3)= { 0.0,    0.0   ,    e2pbc      ,  lcpba  }; 
+centre4=newp;Point(centre4)= { 0.0,    0.0   ,    e3pbc      ,  lcpba  }; 
+
+Circle(40) = {1,centre1,9};
+Circle(41) = {2,centre1,10};
+Circle(42) = {3,centre2,11};
+Circle(43) = {4,centre2,12};
+Circle(44) = {5,centre3,13};
+Circle(45) = {6,centre3,14};
+Circle(46) = {7,centre4,15};
+Circle(47) = {8,centre4,16};
+
+Circle(48) = {9,centre1,17};
+Circle(49) = {10,centre1,18};
+Circle(50) = {11,centre2,19};
+Circle(51) = {12,centre2,20};
+Circle(52) = {13,centre3,21};
+Circle(53) = {14,centre3,22};
+Circle(54) = {15,centre4,23};
+Circle(55) = {16,centre4,24};
+
+Circle(56) = {17,centre1,25};
+Circle(57) = {18,centre1,26};
+Circle(58) = {19,centre2,27};
+Circle(59) = {20,centre2,28};
+Circle(60) = {21,centre3,29};
+Circle(61) = {22,centre3,30};
+Circle(62) = {23,centre4,31};
+Circle(63) = {24,centre4,32};
+
+Circle(64) = {25,centre1,1};
+Circle(65) = {26,centre1,2};
+Circle(66) = {27,centre2,3};
+Circle(67) = {28,centre2,4};
+Circle(68) = {29,centre3,5};
+Circle(69) = {30,centre3,6};
+Circle(70) = {31,centre4,7};
+Circle(71) = {32,centre4,8};
+
+Line(72)={2,3};
+Line(73)={4,5};
+Line(74)={6,7};
+Line(75)={8,1};
+Line(76)={18,19};
+Line(77)={20,21};
+Line(78)={22,23};
+Line(79)={24,17};
+Line(80)={10,11};
+Line(81)={12,13};
+Line(82)={14,15};
+Line(83)={16,9};
+Line(84)={26,27};
+Line(85)={28,29};
+Line(86)={30,31};
+Line(87)={32,25};
+
+
+// Definition de la plaque base laterale
+
+r1pbl = 60*mm;
+r2pbl = 74*mm;
+
+Point(91)   = { r1pbl ,    0.0   ,   e1pbc      ,  lcpba  };  
+Point(92)   = { r2pbl ,    0.0   ,   e1pbc      ,  lcpba  };
+Point(93)   = { r2pbl ,    0.0   ,   e3pbc     ,  lcpba  };
+Point(94)   = { r1pbl ,    0.0   ,   e3pbc     ,  lcpba  };
+
+Point(95)   = { 0.0 ,    r1pbl   ,   e1pbc      ,  lcpba  };  
+Point(96)   = { 0.0 ,    r2pbl   ,   e1pbc      ,  lcpba  };
+Point(97)   = { 0.0 ,    r2pbl   ,   e3pbc     ,  lcpba  };
+Point(98)   = { 0.0 ,    r1pbl   ,   e3pbc     ,  lcpba  };
+
+Point(99)   = { -r1pbl ,    0.0   ,   e1pbc      ,  lcpba  };  
+Point(100)   = { -r2pbl ,    0.0   ,   e1pbc      ,  lcpba  };
+Point(101)   = { -r2pbl ,    0.0   ,   e3pbc     ,  lcpba  };
+Point(102)   = { -r1pbl ,    0.0   ,   e3pbc     ,  lcpba  };
+
+Point(103)   = { 0.0 ,    -r1pbl   ,   e1pbc      ,  lcpba  };  
+Point(104)   = { 0.0 ,    -r2pbl   ,   e1pbc      ,  lcpba  };
+Point(105)   = { 0.0 ,    -r2pbl   ,   e3pbc     ,  lcpba  };
+Point(106)   = { 0.0 ,    -r1pbl   ,   e3pbc     ,  lcpba  };
+
+Circle(107) = {91,centre2,95};
+Circle(108) = {92,centre2,96};
+Circle(109) = {93,centre4,97};
+Circle(110) = {94,centre4,98};
+
+Circle(111) = {95,centre2,99};
+Circle(112) = {96,centre2,100};
+Circle(113) = {97,centre4,101};
+Circle(114) = {98,centre4,102};
+
+Circle(115) = {99,centre2,103};
+Circle(116) = {100,centre2,104};
+Circle(117) = {101,centre4,105};
+Circle(118) = {102,centre4,106};
+
+Circle(119) = {103,centre2,91};
+Circle(120) = {104,centre2,92};
+Circle(121) = {105,centre4,93};
+Circle(122) = {106,centre4,94};
+
+Line(123)={92,93};
+Line(124)={94,91};
+Line(125)={100,101};
+Line(126)={102,99};
+Line(127)={96,97};
+Line(128)={98,95};
+Line(129)={104,105};
+Line(130)={106,103};
+
+//introduction aimants
+
+LFom=21*mm; lcFom=lc ;L1Fom=7*mm;
+h1Fom=13*mm;R1Fom=26*mm;R2Fom=35*mm;angle=30*Pi/180;
+xFom=39*mm;yFom=-10.5*mm;zFom=15*mm;
+thetarot[]={0,60,120,180,240,300,0};
+
+For i In {1:6}
+iFom=i;
+theta=thetarot[i];
+Include "forme1.geo";
+EndFor
+
+// definition des surfaces
+
+surfpbc1=newreg;
+Line Loop(surfpbc1)={41,65,57,49};
+surfpbc2=newreg;
+Line Loop(surfpbc2)={40,64,56,48};
+Plane Surface(surfpbc1+1)={surfpbc1,surfpbc2};
+surfpbc3=newreg;
+Line Loop(surfpbc3)={80,41,-72,-42};
+Ruled Surface(surfpbc3+1)={surfpbc3};
+surfpbc4=newreg;
+Line Loop(surfpbc4)={72,65,-84,-66};
+Ruled Surface(surfpbc4+1)={surfpbc4};
+surfpbc5=newreg;
+Line Loop(surfpbc5)={84,57,-76,-58};
+Ruled Surface(surfpbc5+1)={surfpbc5};
+surfpbc6=newreg;
+Line Loop(surfpbc6)={76,49,-80,-50};
+Ruled Surface(surfpbc6+1)={surfpbc6};
+surfpbc7=newreg;
+Line Loop(surfpbc7)={43,67,59,51};
+surfpbc8=newreg;
+Line Loop(surfpbc8)={42,66,58,50};
+Plane Surface(surfpbc7+1)={surfpbc7,surfpbc8,Fomes_LineLoop5[{1:6}]};
+surfpbc9=newreg;
+Line Loop(surfpbc9)={81,43,-73,-44};
+Ruled Surface(surfpbc9+1)={surfpbc9};
+surfpbc10=newreg;
+Line Loop(surfpbc10)={73,67,-85,-68};
+Ruled Surface(surfpbc10+1)={surfpbc10};
+surfpbc11=newreg;
+Line Loop(surfpbc11)={85,59,-77,-60};
+Ruled Surface(surfpbc11+1)={surfpbc11};
+surfpbc12=newreg;
+Line Loop(surfpbc12)={77,51,-81,-52};
+Ruled Surface(surfpbc12+1)={surfpbc12};
+surfpbc13=newreg;
+Line Loop(surfpbc13)={44,52,60,68};
+surfpbc14=newreg;
+Line Loop(surfpbc14)={45,53,61,69};
+Plane Surface(surfpbc13+1)={surfpbc13,surfpbc14};
+surfpbc15=newreg;
+Line Loop(surfpbc15)={74,46,-82,-45};
+Ruled Surface(surfpbc15+1)={surfpbc15};
+surfpbc16=newreg;
+Line Loop(surfpbc16)={82,54,-78,-53};
+Ruled Surface(surfpbc16+1)={surfpbc16};
+surfpbc17=newreg;
+Line Loop(surfpbc17)={78,62,-86,-61};
+Ruled Surface(surfpbc17+1)={surfpbc17};
+surfpbc18=newreg;
+Line Loop(surfpbc18)={86,70,-74,-69};
+Ruled Surface(surfpbc18+1)={surfpbc18};
+surfpbc19=newreg;
+Line Loop(surfpbc19)={46,54,62,70};
+surfpbc20=newreg;
+Line Loop(surfpbc20)={47,55,63,71};
+Plane Surface(surfpbc20+1)={surfpbc19,surfpbc20};
+surfpbc21=newreg;
+Line Loop(surfpbc21)={75,40,-83,-47};
+Ruled Surface(surfpbc21+1)={surfpbc21};
+surfpbc22=newreg;
+Line Loop(surfpbc22)={83,48,-79,-55};
+Ruled Surface(surfpbc22+1)={surfpbc22};
+surfpbc23=newreg;
+Line Loop(surfpbc23)={79,56,-87,-63};
+Ruled Surface(surfpbc23+1)={surfpbc23};
+surfpbc24=newreg;
+Line Loop(surfpbc24)={87,64,-75,-71};
+Ruled Surface(surfpbc24+1)={surfpbc24};
+
+
+surfpbl1=newreg;
+Line Loop(surfpbl1)={120,116,112,108};
+surfpbl2=newreg;
+Line Loop(surfpbl2)={119,115,111,107};
+Plane Surface(surfpbl2+1)={surfpbl1,surfpbl2,Fomes_LineLoop2[{1:6}]};
+surfpbl3=newreg;
+Line Loop(surfpbl3)={123,109,-127,-108};
+Ruled Surface(surfpbl3+1)={surfpbl3};
+surfpbl4=newreg;
+Line Loop(surfpbl4)={127,113,-125,-112};
+Ruled Surface(surfpbl4+1)={surfpbl4};
+surfpbl5=newreg;
+Line Loop(surfpbl5)={125,117,-129,-116};
+Ruled Surface(surfpbl5+1)={surfpbl5};
+surfpbl6=newreg;
+Line Loop(surfpbl6)={129,121,-123,-120};
+Ruled Surface(surfpbl6+1)={surfpbl6};
+surfpbl7=newreg;
+Line Loop(surfpbl7)={109,113,117,121};
+surfpbl8=newreg;
+Line Loop(surfpbl8)={110,114,118,122};
+Plane Surface(surfpbl8+1)={surfpbl7,surfpbl8};
+surfpbl9=newreg;
+Line Loop(surfpbl9)={124,107,-128,-110};
+Ruled Surface(surfpbl9+1)={surfpbl9};
+surfpbl10=newreg;
+Line Loop(surfpbl10)={128,111,-126,-114};
+Ruled Surface(surfpbl10+1)={surfpbl10};
+surfpbl11=newreg;
+Line Loop(surfpbl11)={126,115,-130,-118};
+Ruled Surface(surfpbl11+1)={surfpbl11};
+surfpbl12=newreg;
+Line Loop(surfpbl12)={130,119,-124,-122};
+Ruled Surface(surfpbl12+1)={surfpbl12};
+
+volpbc=newreg;
+Surface Loop(volpbc)={surfpbc1+1,surfpbc3+1,surfpbc4+1,surfpbc5+1,surfpbc6+1,surfpbc7+1,surfpbc9+1,surfpbc10+1,surfpbc11+1,surfpbc12+1,surfpbc13+1,surfpbc15+1,surfpbc16+1,surfpbc17+1,surfpbc18+1,surfpbc20+1,surfpbc21+1,surfpbc22+1,surfpbc23+1,surfpbc24+1,Fomes_Surf5[{1:6}]};
+Volume(volpbc+1)={volpbc};
+
+
+volpbl=newreg;
+Surface Loop(volpbl)={surfpbl2+1,surfpbl3+1,surfpbl4+1,surfpbl5+1,surfpbl6+1,surfpbl8+1,surfpbl9+1,surfpbl10+1,surfpbl11+1,surfpbl12+1,Fomes_Surf2[{1:6}]};
+Volume(volpbl+1)={volpbl};
+Printf("num %g",volpbl+1);
+
+// definition des entites physiques
+
+
+Physical Surface(7776)={surfpbc1+1,surfpbc3+1,surfpbc4+1,surfpbc5+1,surfpbc6+1,surfpbc7+1,surfpbc9+1,surfpbc10+1,surfpbc11+1,surfpbc12+1,surfpbc13+1,surfpbc15+1,surfpbc16+1,surfpbc17+1,surfpbc18+1,surfpbc20+1,surfpbc21+1,surfpbc22+1,surfpbc23+1,surfpbc24+1};
+
+Physical Surface(7777)={surfpbl2+1,surfpbl3+1,surfpbl4+1,surfpbl5+1,surfpbl6+1,surfpbl8+1,surfpbl9+1,surfpbl10+1,surfpbl11+1,surfpbl12+1};
+Physical Surface(7778)={Fomes_Surf1[{1:6}],Fomes_Surf2[{1:6}],Fomes_Surf3[{1:6}],Fomes_Surf4[{1:6}],Fomes_Surf5[{1:6}],Fomes_Surf6[{1:6}],Fomes_Surf7[{1:6}],Fomes_Surf8[{1:6}],Fomes_Surf9[{1:6}],Fomes_Surf10[{1:6}],Fomes_Surf11[{1:6}]};
+
+
diff --git a/benchmarks/3d/magnetron/magnetron2.geo b/benchmarks/3d/magnetron/magnetron2.geo
new file mode 100644
index 0000000000..d5578b2b83
--- /dev/null
+++ b/benchmarks/3d/magnetron/magnetron2.geo
@@ -0,0 +1,296 @@
+mm = 0.001 ; // 1 milimetre = 0.001 metre
+lc = 2.2*mm ; // unite de base min pour la taille caracteristique du maillage
+
+lcpba   =   lc ;        // lc plaques base centrale et laterale 
+lcrint1 =  2.6*lc ;        // lc coquille spherique superieure
+lcrext1 =  2.9*lcrint1 ;   // lc coquille spherique infini superieure
+
+// Definition de la plaque base centrale
+
+r1pbc = 3*mm;
+r2pbc = 5*mm;
+r3pbc = 19.75*mm;
+r4pbc = 18*mm;
+e1pbc = 2*mm;
+e2pbc = 4*mm;
+e3pbc = 6*mm;
+
+Point(1)   = { r1pbc ,    0.0   ,    0.0      ,  lcpba  };  
+Point(2)   = { r2pbc ,    0.0   ,    0.0      ,  lcpba  };
+Point(3)   = { r2pbc ,    0.0   ,   e1pbc     ,  lcpba  };
+Point(4)   = { r3pbc ,    0.0   ,   e1pbc     ,  lcpba  };
+Point(5)   = { r3pbc ,    0.0   ,   e2pbc      ,  lcpba  };  
+Point(6)   = { r4pbc ,    0.0   ,   e2pbc      ,  lcpba  }; 
+Point(7)   = { r4pbc ,    0.0   ,   e3pbc      ,  lcpba  }; 
+Point(8)   = { r1pbc ,    0.0   ,   e3pbc      ,  lcpba  }; 
+
+Point(9)   = { 0.0  ,     r1pbc   ,    0.0      ,  lcpba  };  
+Point(10)   = { 0.0  ,    r2pbc   ,    0.0      ,  lcpba  };
+Point(11)   = { 0.0  ,    r2pbc   ,   e1pbc     ,  lcpba  };
+Point(12)   = { 0.0  ,    r3pbc   ,   e1pbc     ,  lcpba  };
+Point(13)   = { 0.0  ,    r3pbc   ,   e2pbc      ,  lcpba  };  
+Point(14)   = { 0.0  ,    r4pbc   ,   e2pbc      ,  lcpba  }; 
+Point(15)   = { 0.0  ,    r4pbc   ,   e3pbc      ,  lcpba  }; 
+Point(16)   = { 0.0  ,    r1pbc   ,   e3pbc      ,  lcpba  }; 
+
+
+Line(20) = {1,2};
+Line(21) = {2,3};
+//Line(22) = {3,4};
+Line(23) = {4,5};
+Line(24) = {5,6};
+Line(25) = {6,7};
+Line(26) = {7,8};
+Line(27) = {8,1};
+
+Line(28) = {9,10};
+Line(29) = {10,11};
+Line(30) = {11,12};
+Line(31) = {12,13};
+Line(32) = {13,14};
+Line(33) = {14,15};
+Line(34) = {15,16};
+Line(35) = {16,9};
+
+centre1=newp;Point(centre1)= { 0.0,    0.0   ,    0.0      ,  lcpba  }; 
+centre2=newp;Point(centre2)= { 0.0,    0.0   ,    e1pbc      ,  lcpba  }; 
+centre3=newp;Point(centre3)= { 0.0,    0.0   ,    e2pbc      ,  lcpba  }; 
+centre4=newp;Point(centre4)= { 0.0,    0.0   ,    e3pbc      ,  lcpba  }; 
+
+Circle(40) = {1,centre1,9};
+Circle(41) = {2,centre1,10};
+Circle(42) = {3,centre2,11};
+Circle(43) = {4,centre2,12};
+Circle(44) = {5,centre3,13};
+Circle(45) = {6,centre3,14};
+Circle(46) = {7,centre4,15};
+Circle(47) = {8,centre4,16};
+
+// Definition de la plaque base laterale
+
+r1pbl = 60*mm;
+r2pbl = 74*mm;
+
+Point(51)   = { r1pbl ,    0.0   ,   e1pbc      ,  lcpba  };  
+Point(52)   = { r2pbl ,    0.0   ,   e1pbc      ,  lcpba  };
+Point(53)   = { r2pbl ,    0.0   ,   e3pbc     ,  lcpba  };
+Point(54)   = { r1pbl ,    0.0   ,   e3pbc     ,  lcpba  };
+
+Point(55)   = { 0.0 ,    r1pbl   ,   e1pbc      ,  lcpba  };  
+Point(56)   = { 0.0 ,    r2pbl   ,   e1pbc      ,  lcpba  };
+Point(57)   = { 0.0 ,    r2pbl   ,   e3pbc     ,  lcpba  };
+Point(58)   = { 0.0 ,    r1pbl   ,   e3pbc     ,  lcpba  };
+
+//Line(60) = {51,52};
+Line(61) = {52,53};
+Line(62) = {53,54};
+Line(63) = {54,51};
+Line(64) = {55,56};
+Line(65) = {56,57};
+Line(66) = {57,58};
+Line(67) = {58,55};
+
+Circle(70) = {51,centre2,55};
+Circle(71) = {52,centre2,56};
+Circle(72) = {53,centre4,57};
+Circle(73) = {54,centre4,58};
+
+//introduction aimants
+
+iFom=1;LFom=10.5*mm; lcFom=lc ;L1Fom=7*mm;
+h1Fom=13*mm;R1Fom=26*mm;R2Fom=35*mm;angle=30*Pi/180;
+xFom=39*mm;yFom=0;zFom=15*mm;
+Include "forme2.geo";
+Coherence;
+
+iFom=2;LFom=21*mm; lcFom=lc ;L1Fom=7*mm;
+h1Fom=13*mm;R1Fom=26*mm;R2Fom=35*mm;angle=30*Pi/180;theta=61;
+xFom=39.2*mm;yFom=-10*mm;zFom=15*mm;
+Include "forme1-old.geo";
+Coherence;
+
+//definition du volume de la plaque base centrale
+//premiere etape ligne manquante (1)
+
+axex1=newreg;
+Line(axex1)={3,Fomes_Point12[1]} ;
+axex2=newreg;
+Line(axex2)={Fomes_Point11[1],4} ;
+
+//deuxieme etape definir surface (10)
+
+surfpbc1=newreg;
+Line Loop(surfpbc1)={20,21,axex1,-Fomes_Linep11p12[1],axex2,23,24,25,26,27};
+Plane Surface(surfpbc1+1)={surfpbc1};
+surfpbc2=newreg;
+Line Loop(surfpbc2)={28,29,30,31,32,33,34,35};
+Plane Surface(surfpbc2+1)={surfpbc2};
+surfpbc3=newreg;
+Line Loop(surfpbc3)={27,40,-35,-47};
+Plane Surface(surfpbc3+1)={surfpbc3};
+surfpbc4=newreg;
+Line Loop(surfpbc4)={20,41,-28,-40};
+Plane Surface(surfpbc4+1)={surfpbc4};
+surfpbc5=newreg;
+Line Loop(surfpbc5)={21,42,-29,-41};
+Plane Surface(surfpbc5+1)={surfpbc5};
+surfpbc6=newreg;
+Line Loop(surfpbc6)={axex1,Fomes_Linep12p13[1],Fomes_Linep13p14[1],Fomes_Linep14p11[1],axex2,43,-30,-42};
+Plane Surface(surfpbc6+1)={surfpbc6,Fomes_LineLoop5[2]};
+surfpbc7=newreg;
+Line Loop(surfpbc7)={23,44,-31,-43};
+Plane Surface(surfpbc7+1)={surfpbc7};
+surfpbc8=newreg;
+Line Loop(surfpbc8)={24,45,-32,-44};
+Plane Surface(surfpbc8+1)={surfpbc8};
+surfpbc9=newreg;
+Line Loop(surfpbc9)={25,46,-33,-45};
+Plane Surface(surfpbc9+1)={surfpbc9};
+surfpbc10=newreg;
+Line Loop(surfpbc10)={26,47,-34,-46};
+Plane Surface(surfpbc10+1)={surfpbc10};
+volpbc=newreg;
+Surface Loop(volpbc)={surfpbc1+1,surfpbc2+1,surfpbc3+1,surfpbc4+1,surfpbc5+1,surfpbc6+1,surfpbc7+1,surfpbc8+1,surfpbc9+1,surfpbc10+1,Fomes_Surf5[{1:2}]};
+Volume(volpbc+1)={volpbc};
+
+//definition du volume de la plaque base laterale
+//premiere etape ligne manquante (1)
+
+axex3=newreg;
+Line(axex3)={51,Fomes_Point5[1]} ;
+axex4=newreg;
+Line(axex4)={Fomes_Point4[1],52} ;
+//deuxieme etape definir surface (6)
+
+surfpbl1=newreg;
+Line Loop(surfpbl1)={axex3,-Fomes_Linep4p5[1],axex4,61,62,63};
+Plane Surface(surfpbl1+1)={surfpbl1};
+surfpbl2=newreg;
+Line Loop(surfpbl2)={64,65,66,67};
+Plane Surface(surfpbl2+1)={surfpbl2};
+surfpbl3=newreg;
+Line Loop(surfpbl3)={-63,73,67,-70};
+Ruled Surface(surfpbl3+1)={surfpbl3};
+surfpbl4=newreg;
+Line Loop(surfpbl4)={70,64,-71,-axex4,Fomes_Linep4p9[1],Fomes_Linep9p10[1],-Fomes_Linep5p10[1],-axex3};
+Plane Surface(surfpbl4+1)={surfpbl4,Fomes_LineLoop2[2]};
+surfpbl5=newreg;
+Line Loop(surfpbl5)={61,72,-65,-71};
+Ruled Surface(surfpbl5+1)={surfpbl5};
+surfpbl6=newreg;
+Line Loop(surfpbl6)={62,73,-66,-72};
+Plane Surface(surfpbl6+1)={surfpbl6};
+volpbl=newreg;
+Surface Loop(volpbl)={surfpbl1+1,surfpbl2+1,surfpbl3+1,surfpbl4+1,surfpbl5+1,surfpbl6+1,Fomes_Surf2[{1:2}]};
+Volume(volpbl+1)={volpbl};
+
+//creation des points pour creer les sphere de transfo inf
+
+rint     = 95. *mm ;       // rayon interne coquille spherique
+rext     = 1.5 * rint ;     // rayon externe coquille spherique
+ 
+tranZ=10*mm;
+Point(350) = {  rint  ,  0.0   ,  tranZ      , lcrint1 };
+Point(351) = {  rext  ,  0.0   ,  tranZ     , lcrext1 };
+Point(352) = {  0.0   ,  rint  ,  tranZ   , lcrint1 };
+Point(353) = {  0.0   ,  rext  ,  tranZ   , lcrext1 };
+Point(354) = {  0.0   ,  0.0   ,  rext+tranZ    , lcrext1 };
+Point(355) = {  0.0   ,  0.0   ,  rint+tranZ     , lcrint1 };
+Point(356) = {  0.0   ,  0.0   ,  -rint+tranZ    , lcrint1 };
+Point(357) = {  0.0   ,  0.0   ,  -rext+tranZ    , lcrext1 };
+
+Line(358)={centre1,356};
+Line(359)={356,357};
+Line(360)={centre1,355};
+Line(361)={355,354};
+
+centre=newreg;
+Point(centre) = {  0.0     ,    0.0   ,   tranZ      ,  lcpba  };
+Circle(362) = {350, centre,355};
+Circle(363) = {351, centre,354};
+Circle(364) = {350, centre,356};
+Circle(365) = {351, centre,357};
+Circle(366) = {352, centre,355};
+Circle(367) = {353, centre,354};
+Circle(368) = {352, centre,356};
+Circle(369) = {353, centre,357};
+Circle(370) = {350, centre,352};
+Circle(371) = {351, centre,353};
+
+Line Loop(372) = {362,-366,-370};
+Ruled Surface(373) = {372};
+Line Loop(374) = {363,-367,-371};
+Ruled Surface(375) = {374};
+Line Loop(376) = {364,-368,-370};
+Ruled Surface(377) = {376};
+Line Loop(378) = {365,-369,-371};
+Ruled Surface(379) = {378};
+Line Loop(380) = {361,-363,365,-359,-364,362};
+Plane Surface(381) = {380};
+Line Loop(382) = {361,-367,369,-359,-368,366};
+Plane Surface(383) = {382};
+
+Surface Loop(384) = {373,375,377,379,381,383};
+Volume(385) = {384};
+
+//Surfaces et volume manquants air
+
+surfair1 = newreg;
+Line Loop(surfair1)= {358,-364,362,-360};
+//definir lineloop axex
+lineloo1 = newreg;
+Line Loop(lineloo1)= {20,21,axex1,-Fomes_Linep3p12[1],Fomes_Linep3p4[1],axex4,61,62,63,axex3,Fomes_Linep5p2[1],Fomes_Linep2p11[1],axex2,23,24,25,26,27};
+Plane Surface(surfair1+1)= {surfair1,lineloo1};
+surfair2 = newreg;
+Line Loop(surfair2)= {358,-368,366,-360};
+Plane Surface(surfair2+1)= {surfair2,surfpbc2,surfpbl2};
+
+surfcent[]={surfpbc3+1,surfpbc4+1,surfpbc5+1,surfpbc6+1,surfpbc7+1,surfpbc8+1,surfpbc9+1,surfpbc10+1};
+surflat[]={surfpbl3+1,surfpbl4+1,surfpbl5+1,surfpbl6+1};
+surfaim[]={Fomes_Surf1[{1:2}],Fomes_Surf4[{1:2}],Fomes_Surf6[{1:2}],Fomes_Surf7[{1:2}],Fomes_Surf8[{1:2}],Fomes_Surf9[2],Fomes_Surf10[2],Fomes_Surf11[{1:2}]};
+
+volair = newreg;
+Surface Loop(volair)={surfair1+1,surfair2+1,surfcent[],surflat[],surfaim[],373,377};
+Volume(volair+1) ={volair};
+
+// definition des entites physiques
+
+Physical Volume(9999)={volpbc+1,volpbl+1};
+Physical Volume(9998)={volair+1};
+Physical Volume(9997)={385};
+
+Physical Volume(8888)={Fomes_Volume[1]};
+Physical Volume(8887)={Fomes_Volume[2]};
+
+
+Physical Surface(7776)={375,379};
+Physical Surface(7777)={surfair1+1,381,surfair2+1,383,surfpbc1+1,surfpbc2+1,surfpbl1+1,surfpbl2+1,Fomes_Surf9[1],Fomes_Surf10[1]};
+
+/*
+
+Point(900)   = {    0.0   ,    50*mm   ,    0.0      ,  lc  }; 
+Point(901)   = {   50*mm   ,    0*mm   ,    0.0      ,  lc };  
+Point(902)   = {    0.0   ,    30*mm   ,    0.0      ,  lc  }; 
+Point(903)   = {   30*mm   ,    0*mm   ,    0.0      ,  lc  }; 
+
+Point(904)   = {    0.0   ,    60*mm   ,    0.0      ,  lc }; 
+Point(905)   = {   60*mm   ,    0*mm   ,    0.0      ,  lc  };   
+
+Circle(906) = {900,centre1,901};
+Circle(907) = {902,centre1,903};
+Circle(908) = {904,centre1,905};
+
+Printf("surf1 %g surf2 %g surf11 %g",surfpbl1+1,surfpbl2+1,surfpbl6+1);
+
+For i In {93:113:2}
+Symmetry { 1,0,0,0 } {
+   Duplicata {Surface{i+2};}
+}
+EndFor
+
+For i In {1:volpb+190}
+Symmetry { 0,1,0,0 } {
+   Duplicata {Surface{i};}
+}
+EndFor
+*/
diff --git a/benchmarks/3d/magnetron/quacylin.geo b/benchmarks/3d/magnetron/quacylin.geo
new file mode 100644
index 0000000000000000000000000000000000000000..685762f76edff58fb97377cd492280cc1e6d8be1
GIT binary patch
literal 2090
zcma)6%ZeK@5X{-&f9RuwWsK)#J0_PHLJoUaHjv8_!qC>*1KP2eN0Lq0e^0k0k7SJr
zJK$%PO4X{GSuU6Gxv#OS&Nb{`R8=3E3O~SfLI5_h>?D+c7Lc%j^AjAZ@>zDWfdego
zvOd5`R>xBZC;Dv`!ss#!QP#ZdH_-&VnD;;bTY{&uDUp^`ZC4>ESs%L-D0FKE-+1vo
zolGYHdIcY$mcR54?$1@-&GhO${qvXib;bmLvIG7Uz%J-7qx=dxBa*}-$sjW4!I#M!
zMABF!9YlC%y6iy=ieo3nOcv{8V;vH^o@mZ_#AD^LQa&gRCf=r0#7f1W#DmdwW45s;
zo{xOW_J;{;^;prb@1#vJnj``+@nA9nQxB#iF!NwG0&@@MBe3vb!65rZ*RVz&cW_tL
za)!2IdL?xBYHXt`P{6Sb(uvTy<G6kV99s~b3SBsk%Rb=P@OiJqaa^ha$HvN>)Nx#1
z0mlZWGw)|@GYvRv6Do6zA2a<XVC}0070th~Jen=oa(jcgwZxnbYM9Y?fDcozv=17u
z;&QN$8m|H~aHf5pXd=55%)ogdzMznTj=AMNaa@n!Li^1ZcvZB0-~5z1z0%*nj-I7F
zpNcyJcjvR7DO()O1a8CvsTgpt%38wLzIiH95@BvBYGs2|aj~3`Z5I{-w<NS43ndpJ
z*BTYK&k5NIvZI8A3VPAbv8(hV=IW*5nmRGtRm=sZ?CQ2yb`f*;j*9#2#B8bQpo|!g
zNu$6+ujIj>SAG#QH<_>2r?QoNsKfotCmZJbrR=+F0-ab$;EkBzpHYf73mJ_1ekeMm
z81)Y#MN?apJ+{HE!YUNK9lAC53wsrc{0J5myjJk$H2$}<>YwGTwPUwl(mpty7?*9B
a+>tE7uJ;(bddHnzE+1sqH#L8sPW}PG8Bag}

literal 0
HcmV?d00001

diff --git a/benchmarks/3d/magnetron/traphedre1.geo b/benchmarks/3d/magnetron/traphedre1.geo
new file mode 100644
index 0000000000..3009474676
--- /dev/null
+++ b/benchmarks/3d/magnetron/traphedre1.geo
@@ -0,0 +1,113 @@
+
+  angle=30*Pi/180;
+  chouilla=0.0005;
+  R = RBox;
+  racine=(Tan[angle]*chouilla+Sqrt[R^2-chouilla^2+(R^2*Tan[angle]^2)])/(1+Tan[angle]^2);
+
+  
+  p1 = newp; Point(p1) = {xBox+h1Box,yBox-(h1Box*Tan[angle]-chouilla) , zBox,  lcBox} ;
+  p2 = newp; Point(p2) = {xBox+racine,yBox-(racine*Tan[angle]-chouilla), zBox,  lcBox} ;
+  p3 = newp; Point(p3) = {xBox+h2Box,yBox-(h2Box*Tan[angle]-chouilla) , zBox,  lcBox} ;
+  p4 = newp; Point(p4) = {xBox+h2Box,yBox+(h2Box*Tan[angle]-chouilla) , zBox,  lcBox} ;
+  p5 = newp; Point(p5) = {xBox+racine,yBox+(racine*Tan[angle]-chouilla), zBox,  lcBox} ;
+  p6 = newp; Point(p6) = {xBox+h1Box,yBox+(h1Box*Tan[angle]-chouilla) , zBox,  lcBox} ;
+
+  p7 = newp; Point(p7) = {xBox+h1Box,yBox-(h1Box*Tan[angle]-chouilla) , zBox+epBox,  lcBox} ;
+  p8 = newp; Point(p8) = {xBox+h2Box,yBox-(h2Box*Tan[angle]-chouilla), zBox+epBox,  lcBox} ;
+  p9 = newp; Point(p9) = {xBox+h2Box,yBox+(h2Box*Tan[angle]-chouilla), zBox+epBox,  lcBox} ;
+  p10 = newp; Point(p10) = {xBox+h1Box,yBox+(h1Box*Tan[angle]-chouilla) , zBox+epBox,  lcBox} ;
+
+  p11 = newp; Point(p11) = {xBox+racine,yBox-(racine*Tan[angle]-chouilla), zBox-difBox,  lcBox} ;
+  p12 = newp; Point(p12) = {xBox+racine,yBox+(racine*Tan[angle]-chouilla), zBox-difBox,  lcBox} ;
+  
+
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p1}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p2}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p3}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p4}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p5}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p6}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p7}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p8}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p9}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p10}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p11}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p12}; }
+
+  Boxes_Point1[iBox] = p1 ;
+  Boxes_Point2[iBox] = p2 ;
+  Boxes_Point3[iBox] = p3 ;
+  Boxes_Point4[iBox] = p4 ;
+  Boxes_Point5[iBox] = p5 ;
+  Boxes_Point6[iBox] = p6 ;
+  Boxes_Point7[iBox] = p7 ;
+  Boxes_Point8[iBox] = p8 ;
+  Boxes_Point9[iBox] = p9 ;
+  Boxes_Point10[iBox] = p10 ;
+  Boxes_Point11[iBox] = p11 ; 
+  Boxes_Point12[iBox] = p12 ;
+
+  c1 = newreg; Line(c1) = {p1,p2};
+  c2 = newreg; Line(c2) = {p2,p3};
+  c3 = newreg; Line(c3) = {p3,p4};
+  c4 = newreg; Line(c4) = {p4,p5};
+  c5 = newreg; Line(c5) = {p5,p6};
+  c6 = newreg; Line(c6) = {p6,p1};
+  c7 = newreg; Circle(c7) = {p2,pcen,p5};
+  c8 = newreg; Line(c8) = {p7,p8};
+  c9 = newreg; Line(c9) = {p8,p9};
+  c10 = newreg; Line(c10) = {p9,p10};
+  c11 = newreg; Line(c11) = {p10,p7};
+  c12 = newreg; Line(c12) = {p1,p7};
+  c13 = newreg; Line(c13) = {p3,p8};
+  c14 = newreg; Line(c14) = {p4,p9};
+  c15 = newreg; Line(c15) = {p6,p10};
+  c16 = newreg; Line(c16) = {p2,p11};
+  c17 = newreg; Line(c17) = {p5,p12};
+  c18 = newreg; Circle(c18) = {p11,pcen2,p12};
+
+  Boxes_Linep1p2[iBox] = c1 ;
+  Boxes_Linep2p3[iBox] = c2 ;
+  Boxes_Linep3p4[iBox] = c3 ;
+  Boxes_Linep4p5[iBox] = c4 ;
+  Boxes_Linep5p6[iBox] = c5 ;
+  Boxes_Linep6p1[iBox] = c6 ;
+  Boxes_Linep2p5[iBox] = c7 ;
+  Boxes_Linep7p8[iBox] = c8 ;
+  Boxes_Linep8p9[iBox] = c9 ;
+  Boxes_Linep9p10[iBox] = c10 ;
+  Boxes_Linep10p7[iBox] = c11 ;
+  Boxes_Linep1p7[iBox] = c12 ;
+  Boxes_Linep3p8[iBox] = c13 ;
+  Boxes_Linep4p9[iBox] = c14 ;
+  Boxes_Linep6p10[iBox] = c15 ;
+  Boxes_Linep2p11[iBox] = c16 ;
+  Boxes_Linep5p12[iBox] = c17 ;
+  Boxes_Linep11p12[iBox] = c18 ;
+
+  
+  l1 = newreg; Line Loop(l1) = {c1,c7,c5,c6}; Plane Surface(l1+1) = {l1};
+  l2 = newreg; Line Loop(l2) = {c2,c3,c4,-c7}; Plane Surface(l2+1) = {l2};
+  l3 = newreg; Line Loop(l3) = {c8,c9,c10,c11}; Plane Surface(l3+1) = {l3};
+  l4 = newreg; Line Loop(l4) = {c1,c2,c13,-c8,-c12}; Plane Surface(l4+1) = {l4};
+  l5 = newreg; Line Loop(l5) = {c3,c14,-c9,-c13}; Plane Surface(l5+1) = {l5};
+  l6 = newreg; Line Loop(l6) = {c4,c5,c15,-c10,-c14}; Plane Surface(l6+1) = {l6};
+  l7 = newreg; Line Loop(l7) = {c6,c12,-c11,-c15}; Plane Surface(l7+1) = {l7};
+  l8 = newreg; Line Loop(l8) = {c16,c18,-c17,-c7}; Ruled Surface(l8+1) = {l8};
+
+  Boxes_LineLoop1[iBox] = l1 ;Boxes_PlanSurf1[iBox] = l1+1;
+  Boxes_LineLoop2[iBox] = l2 ;Boxes_PlanSurf2[iBox] = l2+1;
+  Boxes_LineLoop3[iBox] = l3 ;Boxes_PlanSurf3[iBox] = l3+1;
+  Boxes_LineLoop4[iBox] = l4 ;Boxes_PlanSurf4[iBox] = l4+1;
+  Boxes_LineLoop5[iBox] = l5 ;Boxes_PlanSurf5[iBox] = l5+1;
+  Boxes_LineLoop6[iBox] = l6 ;Boxes_PlanSurf6[iBox] = l6+1;
+  Boxes_LineLoop7[iBox] = l7 ;Boxes_PlanSurf7[iBox] = l7+1;
+  Boxes_LineLoop8[iBox] = l8 ;Boxes_PlanSurf8[iBox] = l8+1;
+
+  s = newreg; Surface Loop(s) = {l1+1,l2+1,l3+1,l4+1,l5+1,l6+1,l7+1}; Volume(s+1) = s ;
+  
+  Boxes_SurfaceLoop[iBox] = s ;
+  Boxes_Volume[iBox] = s+1 ;
+
+
+
diff --git a/benchmarks/3d/magnetron/traphedre2.geo b/benchmarks/3d/magnetron/traphedre2.geo
new file mode 100644
index 0000000000..ff97959d34
--- /dev/null
+++ b/benchmarks/3d/magnetron/traphedre2.geo
@@ -0,0 +1,115 @@
+
+  angle=30*Pi/180;
+  chouilla=0.0005;
+  R = RBox;
+  racine=(Tan[angle]*chouilla+Sqrt[R^2-chouilla^2+(R^2*Tan[angle]^2)])/(1+Tan[angle]^2);
+
+  
+  p1 = newp; Point(p1) = {xBox+h1Box,yBox-(h1Box*Tan[angle]-chouilla) , zBox,  lcBox} ;
+  p2 = newp; Point(p2) = {xBox+racine,yBox-(racine*Tan[angle]-chouilla), zBox,  lcBox} ;
+  p3 = newp; Point(p3) = {xBox+h2Box,yBox-(h2Box*Tan[angle]-chouilla) , zBox,  lcBox} ;
+  p4 = newp; Point(p4) = {xBox+h2Box,yBox , zBox,  lcBox} ;
+  
+  p6 = newp; Point(p6) = {xBox+h1Box,yBox , zBox,  lcBox} ;
+
+  p7 = newp; Point(p7) = {xBox+h1Box,yBox-(h1Box*Tan[angle]-chouilla) , zBox+epBox,  lcBox} ;
+  p8 = newp; Point(p8) = {xBox+h2Box,yBox-(h2Box*Tan[angle]-chouilla), zBox+epBox,  lcBox} ;
+  p9 = newp; Point(p9) = {xBox+h2Box,yBox, zBox+epBox,  lcBox} ;
+  p10 = newp; Point(p10) = {xBox+h1Box,yBox, zBox+epBox,  lcBox} ;
+
+  p11 = newp; Point(p11) = {xBox+racine,yBox-(racine*Tan[angle]-chouilla), zBox-difBox,  lcBox} ;
+  
+  
+
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p1}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p2}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p3}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p4}; }
+  p5 = newp; Point(p5) = {xBox+RBox,yBox, zBox,  lcBox} ;
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p5}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p6}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p7}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p8}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p9}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p10}; }
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p11}; }
+  p12 = newp; Point(p12) = {xBox+RBox,yBox, zBox-difBox,  lcBox} ;
+  Rotate{{0,0,1},{xBox,yBox,zBox},thetaBox*Pi/180}{ Point{p12}; }
+
+  Boxes_Point1[iBox] = p1 ;
+  Boxes_Point2[iBox] = p2 ;
+  Boxes_Point3[iBox] = p3 ;
+  Boxes_Point4[iBox] = p4 ;
+  Boxes_Point5[iBox] = p5 ;
+  Boxes_Point6[iBox] = p6 ;
+  Boxes_Point7[iBox] = p7 ;
+  Boxes_Point8[iBox] = p8 ;
+  Boxes_Point9[iBox] = p9 ;
+  Boxes_Point10[iBox] = p10 ;
+  Boxes_Point11[iBox] = p11 ; 
+  Boxes_Point12[iBox] = p12 ;
+
+  c1 = newreg; Line(c1) = {p1,p2};
+  c2 = newreg; Line(c2) = {p2,p3};
+  c3 = newreg; Line(c3) = {p3,p4};
+  c4 = newreg; Line(c4) = {p4,p5};
+  c5 = newreg; Line(c5) = {p5,p6};
+  c6 = newreg; Line(c6) = {p6,p1};
+  c7 = newreg; Circle(c7) = {p2,pcen,p5};
+  c8 = newreg; Line(c8) = {p7,p8};
+  c9 = newreg; Line(c9) = {p8,p9};
+  c10 = newreg; Line(c10) = {p9,p10};
+  c11 = newreg; Line(c11) = {p10,p7};
+  c12 = newreg; Line(c12) = {p1,p7};
+  c13 = newreg; Line(c13) = {p3,p8};
+  c14 = newreg; Line(c14) = {p4,p9};
+  c15 = newreg; Line(c15) = {p6,p10};
+  c16 = newreg; Line(c16) = {p2,p11};
+  c17 = newreg; Line(c17) = {p5,p12};
+  c18 = newreg; Circle(c18) = {p11,pcen2,p12};
+
+  Boxes_Linep1p2[iBox] = c1 ;
+  Boxes_Linep2p3[iBox] = c2 ;
+  Boxes_Linep3p4[iBox] = c3 ;
+  Boxes_Linep4p5[iBox] = c4 ;
+  Boxes_Linep5p6[iBox] = c5 ;
+  Boxes_Linep6p1[iBox] = c6 ;
+  Boxes_Linep2p5[iBox] = c7 ;
+  Boxes_Linep7p8[iBox] = c8 ;
+  Boxes_Linep8p9[iBox] = c9 ;
+  Boxes_Linep9p10[iBox] = c10 ;
+  Boxes_Linep10p7[iBox] = c11 ;
+  Boxes_Linep1p7[iBox] = c12 ;
+  Boxes_Linep3p8[iBox] = c13 ;
+  Boxes_Linep4p9[iBox] = c14 ;
+  Boxes_Linep6p10[iBox] = c15 ;
+  Boxes_Linep2p11[iBox] = c16 ;
+  Boxes_Linep5p12[iBox] = c17 ;
+  Boxes_Linep11p12[iBox] = c18 ;
+
+  
+  l1 = newreg; Line Loop(l1) = {c1,c7,c5,c6}; Plane Surface(l1+1) = {l1};
+  l2 = newreg; Line Loop(l2) = {c2,c3,c4,-c7}; Plane Surface(l2+1) = {l2};
+  l3 = newreg; Line Loop(l3) = {c8,c9,c10,c11}; Plane Surface(l3+1) = {l3};
+  l4 = newreg; Line Loop(l4) = {c1,c2,c13,-c8,-c12}; Plane Surface(l4+1) = {l4};
+  l5 = newreg; Line Loop(l5) = {c3,c14,-c9,-c13}; Plane Surface(l5+1) = {l5};
+  l6 = newreg; Line Loop(l6) = {c4,c5,c15,-c10,-c14}; Plane Surface(l6+1) = {l6};
+  l7 = newreg; Line Loop(l7) = {c6,c12,-c11,-c15}; Plane Surface(l7+1) = {l7};
+  l8 = newreg; Line Loop(l8) = {c16,c18,-c17,-c7}; Ruled Surface(l8+1) = {l8};
+
+  Boxes_LineLoop1[iBox] = l1 ;Boxes_PlanSurf1[iBox] = l1+1;
+  Boxes_LineLoop2[iBox] = l2 ;Boxes_PlanSurf2[iBox] = l2+1;
+  Boxes_LineLoop3[iBox] = l3 ;Boxes_PlanSurf3[iBox] = l3+1;
+  Boxes_LineLoop4[iBox] = l4 ;Boxes_PlanSurf4[iBox] = l4+1;
+  Boxes_LineLoop5[iBox] = l5 ;Boxes_PlanSurf5[iBox] = l5+1;
+  Boxes_LineLoop6[iBox] = l6 ;Boxes_PlanSurf6[iBox] = l6+1;
+  Boxes_LineLoop7[iBox] = l7 ;Boxes_PlanSurf7[iBox] = l7+1;
+  Boxes_LineLoop8[iBox] = l8 ;Boxes_PlanSurf8[iBox] = l8+1;
+
+  s = newreg; Surface Loop(s) = {l1+1,l2+1,l3+1,l4+1,l5+1,l6+1,l7+1}; Volume(s+1) = s ;
+  
+  Boxes_SurfaceLoop[iBox] = s ;
+  Boxes_Volume[iBox] = s+1 ;
+
+
+
-- 
GitLab