From 1004d113361dfe49721a1d5f5909ca94d7a7615d Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 19 Feb 2003 22:07:02 +0000
Subject: [PATCH] Add nice 3D example from Ali Abakar

---
 benchmarks/3d/edf/Electrode_8.geo | 337 ++++++++++++++++++++++++++++
 benchmarks/3d/edf/Four.geo        | 355 ++++++++++++++++++++++++++++++
 benchmarks/3d/edf/Param_test.geo  |  21 ++
 3 files changed, 713 insertions(+)
 create mode 100644 benchmarks/3d/edf/Electrode_8.geo
 create mode 100644 benchmarks/3d/edf/Four.geo
 create mode 100644 benchmarks/3d/edf/Param_test.geo

diff --git a/benchmarks/3d/edf/Electrode_8.geo b/benchmarks/3d/edf/Electrode_8.geo
new file mode 100644
index 0000000000..2be5153a4e
--- /dev/null
+++ b/benchmarks/3d/edf/Electrode_8.geo
@@ -0,0 +1,337 @@
+// DESCRIPTION GENERALE D'UNE ELECTRODE
+// ------------------------------------
+
+Function Electrode
+
+// Construction de la matrice de changement de repère
+
+// Calcul de la norme du vecteur axe électrode
+
+NormeK = Sqrt(Kx*Kx + Ky*Ky + Kz*Kz) ;
+
+Kx = Kx / NormeK ;
+Ky = Ky / NormeK ;
+Kz = Kz / NormeK ; 
+
+N = Sqrt( Kx*Kx + Ky*Ky);
+ 
+If ( N == 0.)
+
+  Ix = 1. ;
+  Iy = 0. ;
+  Iz = 0. ;
+
+  Jx = 0. ;
+  Jy = 1. ;
+  Jz = 0. ;
+
+EndIf
+
+If ( N > 0.)
+
+  Ix = - Ky / N ;
+  Iy =   Kx / N ;
+  Iz =   0. ;
+
+  Jx = - Kx * Kz / N ;
+  Jy = - Ky * Kz / N ;
+  Jz =   N ;
+
+EndIf
+
+
+// CONSTRUCTION DE LA BOITE DE L'ELECTRODE
+// ---------------------------------------
+
+// Coordonnées des points de constructions de l'electrode dans son repère local
+// cercle inférieur
+
+X[0] = 0 ; Y[0] = 0 ; Z[0] = 0. ;
+X[1] = R ; Y[1] = 0 ; Z[1] = 0. ;
+X[2] = 0 ; Y[2] = R ; Z[2] = 0. ;
+X[3] =-R ; Y[3] = 0 ; Z[3] = 0. ;
+X[4] = 0 ; Y[4] =-R ; Z[4] = 0. ;
+
+// Cercle supérieur
+
+X[10] = 0 ; Y[10] = 0 ; Z[10] = L ;
+X[11] = R ; Y[11] = 0 ; Z[11] = L ;
+X[12] = 0 ; Y[12] = R ; Z[12] = L ;
+X[13] =-R ; Y[13] = 0 ; Z[13] = L ;
+X[14] = 0 ; Y[14] =-R ; Z[14] = L ;
+
+// Coordonnées des points de constructions de l'electrode dans son repère global
+
+For i In {0:4}
+
+  x[i] = Ix*X[i] + Jx*Y[i] + Kx*Z[i] + xc;
+  y[i] = Iy*X[i] + Jy*Y[i] + Ky*Z[i] + yc;
+  z[i] = Iz*X[i] + Jz*Y[i] + Kz*Z[i] + zc;
+
+EndFor
+
+For i In {10:14}
+
+  x[i] = Ix*X[i] + Jx*Y[i] + Kx*Z[i] + xc;
+  y[i] = Iy*X[i] + Jy*Y[i] + Ky*Z[i] + yc;
+  z[i] = Iz*X[i] + Jz*Y[i] + Kz*Z[i] + zc;
+
+EndFor
+
+// Définition des densité de discrétisation
+ 
+kR = 1.;
+kL = 0.99;
+
+dpBoxSup = NbBoxSup +1;
+dpBoxInf = NbBoxInf +1;
+
+lcBoxSup =  R * Sin ( Pi/(2*NbBoxSup)) / Sin ( (Pi/2.)*(1-1/(2*NbBoxSup)) )  ;
+lBoxSup  =  R * Sin ( Pi/(2*NbBoxSup)) / Sin ( (Pi/2.)*(1-1/(2*NbBoxSup)) )  ;
+
+lcBoxInf = R * Sin (Pi/(2*NbBoxInf)) / Sin ( (Pi/2.)*(1-1/(2*NbBoxInf)) )  ;
+lBoxInf  = R * Sin (Pi/(2*NbBoxInf)) / Sin ( (Pi/2.)*(1-1/(2*NbBoxInf)) )  ;
+
+If ( lBoxSup >= (R/2.))
+  lBoxSup = R/2. ;
+// Printf ("Cas 1 : lBoxSup >= R/2 ");
+EndIf
+
+If ( lBoxInf >= (R/2.))
+  lBoxInf = R/2. ;
+// Printf ("Cas 2 : lBoxInf >= R/2 ");
+EndIf   
+
+If ( ( lBoxInf >= (L/2.) ) && (  lBoxSup >= (L/2.) ) )
+  lcBoxInf = kR *L/2.;
+  lcBoxSup = kR *L/2.;
+  lBoxInf = kL *L/2.;
+  lBoxSup = kL *L/2.;
+// Printf ("Cas 3 : lBoxInf et lBoxSup >= L/2 ");
+EndIf
+
+// Constuction du cercle de base (centre de coordonnées xc,yc,zc)
+
+p0 = newp; Point(p0) = {x[0], y[0],  z[0],  lcBoxInf} ;
+p1 = newp; Point(p1) = {x[1], y[1],  z[1],  lBoxInf} ;
+p2 = newp; Point(p2) = {x[2], y[2],  z[2],  lBoxInf} ;
+p3 = newp; Point(p3) = {x[3], y[3],  z[3],  lBoxInf} ;
+p4 = newp; Point(p4) = {x[4], y[4],  z[4],  lBoxInf} ;
+
+c1 = newreg; Circle(c1) = {p1,p0,p2};
+c2 = newreg; Circle(c2) = {p2,p0,p3};
+c3 = newreg; Circle(c3) = {p3,p0,p4};
+c4 = newreg; Circle(c4) = {p4,p0,p1};
+
+// Constuction du cercle supérieur
+ 
+p10 = newp; Point(p10) = {x[10], y[10],  z[10],  lcBoxSup} ;
+p11 = newp; Point(p11) = {x[11], y[11],  z[11],  lBoxSup} ;
+p12 = newp; Point(p12) = {x[12], y[12],  z[12],  lBoxSup} ;
+p13 = newp; Point(p13) = {x[13], y[13],  z[13],  lBoxSup} ;
+p14 = newp; Point(p14) = {x[14], y[14],  z[14],  lBoxSup} ;
+
+c11 = newreg; Circle(c11) = {p11,p10,p12};
+c12 = newreg; Circle(c12) = {p12,p10,p13};
+c13 = newreg; Circle(c13) = {p13,p10,p14};
+c14 = newreg; Circle(c14) = {p14,p10,p11};
+
+// Construction des génératrices
+ 
+l1 = newreg; Line(l1) = {p1,p11};
+l2 = newreg; Line(l2) = {p2,p12};
+l3 = newreg; Line(l3) = {p3,p13};
+l4 = newreg; Line(l4) = {p4,p14};
+
+// Constructions des contours
+
+// cercle supérieur 
+
+ll1 = newreg; Line Loop(ll1) = {c11,c12,c13,c14}; 
+
+// Bords de la boite
+
+ll2 = newreg; Line Loop(ll2) = {c1,l2,-c11,-l1};  
+ll3 = newreg; Line Loop(ll3) = {c2,l3,-c12,-l2};  
+ll4 = newreg; Line Loop(ll4) = {c3,l4,-c13,-l3};  
+ll5 = newreg; Line Loop(ll5) = {c4,l1,-c14,-l4};  
+
+// cercle inférieur
+
+ll6 = newreg; Line Loop(ll6) = {c1,c2,c3,c4};  
+
+
+// CONSTRUCTION DE L'ELECTRODE
+// ---------------------------
+
+
+// Coordonnées des points de constructions de l'electrode dans son repère local
+// cercle inférieur
+
+X[21] = r ; Y[21] = 0 ; Z[21] = 0. ;
+X[22] = 0 ; Y[22] = r ; Z[22] = 0. ;
+X[23] =-r ; Y[23] = 0 ; Z[23] = 0. ;
+X[24] = 0 ; Y[24] =-r ; Z[24] = 0. ;
+
+// Cercle supérieur
+
+X[30] = 0 ; Y[30] = 0 ; Z[30] = l ;
+X[31] = r ; Y[31] = 0 ; Z[31] = l ;
+X[32] = 0 ; Y[32] = r ; Z[32] = l ;
+X[33] =-r ; Y[33] = 0 ; Z[33] = l ;
+X[34] = 0 ; Y[34] =-r ; Z[34] = l ;
+
+// Coordonnées des points de constructions de l'electrode dans son repère global
+
+For i In {21:24}
+
+  x[i] = Ix*X[i] + Jx*Y[i] + Kx*Z[i] + xc;
+  y[i] = Iy*X[i] + Jy*Y[i] + Ky*Z[i] + yc;
+  z[i] = Iz*X[i] + Jz*Y[i] + Kz*Z[i] + zc;
+
+EndFor
+
+For i In {30:34}
+
+  x[i] = Ix*X[i] + Jx*Y[i] + Kx*Z[i] + xc;
+  y[i] = Iy*X[i] + Jy*Y[i] + Ky*Z[i] + yc;
+  z[i] = Iz*X[i] + Jz*Y[i] + Kz*Z[i] + zc;
+
+EndFor
+
+// Définition des densités de discrétisation
+ 
+kr = 1.;
+kl = 1.;
+
+dpESup = NbElSup +1;
+dpEInf = NbElInf +1;
+
+lcElecSup = kr * r * Sin ( Pi/(2*NbElSup)) / Sin ( (Pi/2.)*(1-1/(2*NbElSup)) )  ;
+lElecSup  = kl * r * Sin ( Pi/(2*NbElSup)) / Sin ( (Pi/2.)*(1-1/(2*NbElSup)) )  ;
+
+lcElecInf = kr * r * Sin ( Pi/(2*NbElInf)) / Sin ( (Pi/2.)*(1-1/(2*NbElInf)) )  ;
+lElecInf  = kl * r * Sin ( Pi/(2*NbElInf)) / Sin ( (Pi/2.)*(1-1/(2*NbElInf)) )  ;
+
+// Constuction du cercle de base (centre de coordonnées xc,yc,zc)
+
+p21 = newp; Point(p21) = {x[21], y[21],  z[21],  lElecInf} ;
+p22 = newp; Point(p22) = {x[22], y[22],  z[22],  lElecInf} ;
+p23 = newp; Point(p23) = {x[23], y[23],  z[23],  lElecInf} ;
+p24 = newp; Point(p24) = {x[24], y[24],  z[24],  lElecInf} ;
+
+c21 = newreg; Circle(c21) = {p21,p0,p22};
+c22 = newreg; Circle(c22) = {p22,p0,p23};
+c23 = newreg; Circle(c23) = {p23,p0,p24};
+c24 = newreg; Circle(c24) = {p24,p0,p21};
+
+// Constuction du cercle supérieur
+ 
+p30 = newp; Point(p30) = {x[30], y[30],  z[30],  lcElecSup} ;
+p31 = newp; Point(p31) = {x[31], y[31],  z[31],  lElecSup} ;
+p32 = newp; Point(p32) = {x[32], y[32],  z[32],  lElecSup} ;
+p33 = newp; Point(p33) = {x[33], y[33],  z[33],  lElecSup} ;
+p34 = newp; Point(p34) = {x[34], y[34],  z[34],  lElecSup} ;
+
+c31 = newreg; Circle(c31) = {p31,p30,p32};
+c32 = newreg; Circle(c32) = {p32,p30,p33};
+c33 = newreg; Circle(c33) = {p33,p30,p34};
+c34 = newreg; Circle(c34) = {p34,p30,p31};
+
+// Construction des génératrices
+ 
+l11 = newreg; Line(l11) = {p21,p31};
+l12 = newreg; Line(l12) = {p22,p32};
+l13 = newreg; Line(l13) = {p23,p33};
+l14 = newreg; Line(l14) = {p24,p34};
+
+// Constructions des contours
+
+// cercle supérieur 
+
+ll21 = newreg; Line Loop(ll21) = {c31,c32,c33,c34}; 
+
+// Bords de l'electrode
+
+ll22 = newreg; Line Loop(ll22) = {c21,l12,-c31,-l11};  
+ll23 = newreg; Line Loop(ll23) = {c22,l13,-c32,-l12};  
+ll24 = newreg; Line Loop(ll24) = {c23,l14,-c33,-l13};  
+ll25 = newreg; Line Loop(ll25) = {c24,l11,-c34,-l14};  
+
+// cercle inférieur
+
+ll26 = newreg; Line Loop(ll26) = {c21,c22,c23,c24}; 
+ 
+
+// CONSTRUCTION DES SURFACES DE ELECTRODE
+// --------------------------------------
+
+// Disque supérieur 
+
+ps1 = newreg;  Plane Surface(ps1) = {ll21};
+
+// Bords de l'electrode
+
+rs1 = newreg; Ruled Surface(rs1) = {ll22};
+rs2 = newreg; Ruled Surface(rs2) = {ll23};
+rs3 = newreg; Ruled Surface(rs3) = {ll24};
+rs4 = newreg; Ruled Surface(rs4) = {ll25};
+
+BordElect[t-1] = newreg ;
+Physical Surface(BordElect[t-1]) = { rs1, rs2, rs3, rs4, ps1};
+
+// CONSTRUCTION DES SURFACES DE LA BOITE
+// -------------------------------------
+
+// Disque supérieur 
+
+ps3 = newreg; Plane Surface(ps3) = {ll1};
+
+// Bords de l'electrode
+
+rs5 = newreg; Ruled Surface(rs5) = {ll2};
+rs6 = newreg; Ruled Surface(rs6) = {ll3};
+rs7 = newreg; Ruled Surface(rs7) = {ll4};
+rs8 = newreg; Ruled Surface(rs8) = {ll5};
+
+// Définition de la frontière électrode-boite
+
+FrontElect[t-1] = newreg ;
+Surface Loop (FrontElect[t-1])    = { ps3,  rs5,  rs6,  rs7,  rs8};
+Physical Surface(FrontElect[t-1]) = { ps3,  rs5,  rs6,  rs7,  rs8};
+
+// Anneau inférieur
+
+ps4 = newreg; Plane Surface(ps4) = {ll6,ll26};
+
+// Construction du volume de la boite
+
+BoiteElect[t-1] = newreg ;
+Surface Loop (BoiteElect[t-1]) = { ps4, rs5, rs6, rs7, rs8, ps3, rs1, rs2, rs3, rs4, ps1};
+Volume(BoiteElect[t-1]) = BoiteElect[t-1];
+Physical Volume(BoiteElect[t-1]) = BoiteElect[t-1];
+
+// Définition du contour de la base de boîte d'electrode
+
+ContBaseBoiteElect[t-1]= newreg ;
+Line Loop (ContBaseBoiteElect[t-1]) = {c1,c2,c3,c4} ;
+
+// DISCRETISATION DES ARETES
+// -------------------------
+
+// Discrétisation du contour circulaire de la boite (Nb de Noeuds / quart périmètre)
+
+// Transfinite Line {c1,c2,c3,c4} = dpBoxInf;
+// Transfinite Line {c11,c12,c13,c14} = dpBoxSup;
+// Transfinite Line {l1,l2,l3,l4} = dpBoxGen;
+
+// Discrétisation du contour circulaire de l'électrode (Nb de Noeuds / quart périmètre)
+
+// Transfinite Line {c21,c22,c23,c24} = dpEInf;
+// Transfinite Line {c31,c32,c33,c34} = dpESup;
+// Transfinite Line {l11,l12,l13,l14} = dpEGen;
+
+Return
+
+
+
diff --git a/benchmarks/3d/edf/Four.geo b/benchmarks/3d/edf/Four.geo
new file mode 100644
index 0000000000..068af23890
--- /dev/null
+++ b/benchmarks/3d/edf/Four.geo
@@ -0,0 +1,355 @@
+// Ce fichier est la description geometrique utilisee par GMSH pour 
+// generer le fichier "four.msh".
+//
+// Copyright (C) 2003 Ali ABAKAR <abakar@edf.fr>
+//
+// - Modified on Wed Feb 19 13:48:25 2003 by Christophe Geuzaine
+
+// DESCRIPTION DU FOUR
+// -------------------
+
+// Dimensions du Four (hauteur, Longueur, largeur en mètre)
+
+HauteurFour = 1.4 ; LongueurFour = 14.;  LargeurFour = 8.8 ;
+ProfondeurMarche = 1. ; LongueurMarche = 2. ;
+
+// Paramètres maillage
+
+Include "Param_test.geo";
+
+// Description géomètrique du four
+
+// Création des points
+ 
+pf1 = newp; Point(pf1) = { LongueurFour,                LargeurFour/2., -ProfondeurMarche, lfour};
+pf2 = newp; Point(pf2) = { LongueurFour-LongueurMarche, LargeurFour/2., -ProfondeurMarche, lfour};
+pf3 = newp; Point(pf3) = { LongueurFour-LongueurMarche, LargeurFour/2.,                0., lfour};
+pf4 = newp; Point(pf4) = {           0.,                LargeurFour/2.,                0., lfour};
+
+pf5 = newp; Point(pf5) = { LongueurFour,                -LargeurFour/2., -ProfondeurMarche, lfour};
+pf6 = newp; Point(pf6) = { LongueurFour-LongueurMarche, -LargeurFour/2., -ProfondeurMarche, lfour};
+pf7 = newp; Point(pf7) = { LongueurFour-LongueurMarche, -LargeurFour/2.,                0., lfour};
+pf8 = newp; Point(pf8) = {           0.,                -LargeurFour/2.,                0., lfour};
+
+pf9  = newp; Point(pf9) = { LongueurFour, LargeurFour/2., HauteurFour, lfour};
+pf10 = newp; Point(pf10) = {           0., LargeurFour/2., HauteurFour, lfour};
+pf11 = newp; Point(pf11) = {           0.,-LargeurFour/2., HauteurFour, lfour};
+pf12 = newp; Point(pf12) = { LongueurFour,-LargeurFour/2., HauteurFour, lfour};
+
+// Construction des arêtes du four
+
+// Arêtes horizontales du fond de la marche
+
+lf1 = newreg; Line(lf1) = {pf1,pf2};
+lf2 = newreg; Line(lf2) = {pf2,pf6};
+lf3 = newreg; Line(lf3) = {pf6,pf5};
+lf4 = newreg; Line(lf4) = {pf5,pf1};
+
+// Arêtes horizontales du fond du four (partie supérieure)
+
+lf5 = newreg; Line(lf5) = {pf3,pf4};
+lf6 = newreg; Line(lf6) = {pf4,pf8};
+lf7 = newreg; Line(lf7) = {pf8,pf7};
+lf8 = newreg; Line(lf8) = {pf7,pf3};
+
+// Arêtes horizontales dessus du four
+
+lf9  = newreg; Line(lf9)  = {pf9 ,pf10};
+lf10 = newreg; Line(lf10) = {pf10,pf11};
+lf11 = newreg; Line(lf11) = {pf11,pf12};
+lf12 = newreg; Line(lf12) = {pf12,pf9 };
+
+// Arêtes verticales du four
+
+lf13 = newreg; Line(lf13)  = {pf1 ,pf9};
+lf14 = newreg; Line(lf14)  = {pf2 ,pf3};
+lf15 = newreg; Line(lf15) = {pf4 ,pf10};
+lf16 = newreg; Line(lf16) = {pf8 ,pf11};
+lf17 = newreg; Line(lf17) = {pf6, pf7 };
+lf18 = newreg; Line(lf18) = {pf5, pf12};
+
+// Définition des contour(s) du dessus du four
+
+DessusFour[0] = newreg; Line Loop(DessusFour[0]) = {lf9,lf10,lf11,lf12}; 
+
+// Définitions des contours des bords du four
+
+// Bord en y = LargeurFour/2.
+
+BordFour[0] = newreg; Line Loop(BordFour[0]) = {lf1,lf14,lf5,lf15,-lf9, -lf13}; 
+
+// Bord en x = 0.
+
+BordFour[1] = newreg; Line Loop(BordFour[1]) = {lf6,lf16,-lf10,-lf15};
+
+// Bord en y = - LargeurFour/2.
+
+BordFour[2] = newreg; Line Loop(BordFour[2]) = {lf7,-lf17,lf3,lf18,-lf11,-lf16};
+
+// Bord en x = LongueurFour
+
+BordFour[3] = newreg; Line Loop(BordFour[3]) = {lf4, lf13,-lf12,-lf18}; 
+
+// Définitions des contour(s) du fond du Four
+
+FondFour[0] = newreg;  Line Loop(FondFour[0]) = {lf1,lf2,lf3,lf4};
+FondFour[1] = newreg;  Line Loop(FondFour[1]) = {lf5,lf6,lf7,lf8};
+FondFour[2] = newreg;  Line Loop(FondFour[2]) = {-lf8,lf14,-lf2,-lf17};
+
+// Discrétisation des arêtes du four (Nb éléments / arête )
+
+dLF = NbElLongF + 1;
+dlF = NbElLargF + 1;
+dhF = NbElHautF + 1;
+
+Transfinite Line {lf5,lf7,lf9,lf11} = dLF;
+Transfinite Line {lf4,lf6,lf8,lf10,lf12} = dlF;
+Transfinite Line {lf2,lf8} = 2*dlF;
+Transfinite Line {lf1,lf3,lf14,lf17,lf15,lf16} = dhF;
+Transfinite Line {lf13,lf18} = 2*dhF;
+
+// CONSTRUCTION DES ELECTRODES
+// ---------------------------
+
+Include "Electrode_8.geo" ;
+
+// 1ère barrière d'électrodes
+// --------------------------
+
+// Rayon et Hauteur Electrode
+
+r = 0.076/2.; l = 0.35; 
+
+// Vecteur axe electrode
+
+Kx = 0 ; Ky = 0. ; Kz = 1. ;
+xc = 1.5 ;
+L = 0.8 ;
+
+// ELECTRODE I
+
+t = 1;
+R = 1. ;
+yc = 0 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE II
+
+t = t + 1 ;
+R = 0.5 ;
+L = 0.8 ;
+yc = 3.5 ; zc = 0 ; 
+
+Call Electrode;
+
+// ELECTRODE III
+
+t = t+1;
+yc = -3.5 ; zc = 0 ;
+Call Electrode;
+
+// 2ème barrière d'électrodes
+// --------------------------
+
+xc = xc + 2.5 ;
+
+// ELECTRODE I
+
+t = t+1;
+R = 1. ;
+yc = 0 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE II
+
+t = t + 1 ;
+R = 0.5 ;
+L = 0.8 ;
+yc = 3.5 ; zc = 0 ; 
+
+Call Electrode;
+
+// ELECTRODE III
+
+t = t+1;
+yc = -3.5 ; zc = 0 ;
+
+Call Electrode;
+
+// 3ème barrière d'électrodes
+// --------------------------
+
+// ELECTRODE I
+
+xc = xc + 2.25 ;
+t = t+1;
+R = 1. ;
+yc = 0 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE II
+
+t = t + 1 ;
+R = 0.5 ;
+L = 0.8 ;
+yc = 3.5 ; zc = 0 ; 
+
+Call Electrode;
+
+// ELECTRODE III
+
+t = t+1;
+yc = -3.5 ; zc = 0 ;
+
+Call Electrode;
+
+// 4ème barrière d'électrodes
+// --------------------------
+
+xc = xc + 2.5 ;
+
+// ELECTRODE I
+
+t = t+1;
+R = 1. ; 
+yc = 0 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE II
+
+t = t + 1 ;
+R = 0.5 ;
+L = 0.8 ;
+yc = 3.5 ; zc = 0 ; 
+
+Call Electrode;
+
+// ELECTRODE III
+
+t = t+1;
+yc = -3.5 ; zc = 0 ;
+
+Call Electrode;
+
+// 5ième barrière d'électrodes
+// ---------------------------
+
+xc = xc + 2.25 ;
+R = 0.4 ; L = 0.8 ;
+// Rayon et Hauteur Electrode
+r = 0.05/2.; l = 0.35;
+
+// ELECTRODE I
+
+t = t+1;
+yc = 0 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE II
+
+t = t + 1 ;
+yc = 0.9 ; zc = 0 ; 
+
+Call Electrode;
+
+// ELECTRODE III
+
+t = t+1;
+yc = yc + 0.9 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE IV
+
+t = t+1;
+yc = yc + 0.9 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE V
+
+t = t+1;
+yc = yc + 0.9 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE VI
+
+t = t+1;
+yc = -0.9 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE VII
+
+t = t+1;
+yc = yc -0.9 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE VIII
+
+t = t+1;
+yc = yc -0.9 ; zc = 0 ;
+
+Call Electrode;
+
+// ELECTRODE IX
+
+t = t+1;
+yc = yc -0.9 ; zc = 0 ;
+
+Call Electrode;
+
+
+// CONSTRUCTION DES FACES DE LA GEOMETRIE COMPLETE
+// -----------------------------------------------
+
+// Surface du Fond du Four - trace(s) Electrode(s)
+
+Plane Surface(FondFour[0]) = { FondFour[0]};
+Plane Surface(FondFour[1]) = { FondFour[1],ContBaseBoiteElect[]};
+Plane Surface(FondFour[2]) = { FondFour[2]}; 
+
+// Surface dessus du Four - trace(s) Electrode(s)
+
+Plane Surface(DessusFour[0]) = {DessusFour[0]};
+
+// Surface Bords du Four - trace(s) Electrode(s)
+
+Plane Surface(BordFour[0]) = { BordFour[0]};
+Plane Surface(BordFour[1]) = { BordFour[1]};
+Plane Surface(BordFour[2]) = { BordFour[2]};
+Plane Surface(BordFour[3]) = { BordFour[3]};
+
+// CONSTRUCTION DES VOLUMES DE LA GEOMETRIE COMPLETE
+// -------------------------------------------------
+
+FrontExtFour = newreg;
+Surface Loop(FrontExtFour) = {FondFour[],DessusFour[],BordFour[]}; 
+
+Verre = newreg ;
+Volume(Verre) = {FrontExtFour,FrontElect[]};
+Physical Volume(Verre) = {Verre};
+
+// SUMMARY OF PHYSICAL ENTITIES
+// ----------------------------
+
+Printf("Physical Volume(Verre): %g ", Verre) ;
+
+For i In {1: t}
+  Printf("Physical Volume(Boite %g): %g", i, BoiteElect[i-1]) ;
+EndFor
+
+For i In {1: t}
+  Printf("Physical Surface(Electrode %g): %g", i, BordElect[i-1]) ;
+EndFor
+
+For i In {1: t}
+  Printf("Physical Surface(Boite %g): %g", i, FrontElect[i-1]) ;
+EndFor
diff --git a/benchmarks/3d/edf/Param_test.geo b/benchmarks/3d/edf/Param_test.geo
new file mode 100644
index 0000000000..335c968f55
--- /dev/null
+++ b/benchmarks/3d/edf/Param_test.geo
@@ -0,0 +1,21 @@
+// Paramètres de Discrétisation
+
+// Nombre d'éléments par arête
+
+NbElLongF = 25;
+NbElLargF = 12;
+NbElHautF = 3;
+
+// Nombre d'Eléments linéiques sur quart perimètre
+
+NbElSup = 2.;
+NbElInf = 2.;
+NbBoxSup = 3.;
+NbBoxInf = 3.;
+
+NbBoxGen = 2.;
+
+// Densité de maillage (taille des mailles autour d'un point géomètrique)
+
+lfour =  LongueurFour/NbElLongF ;
+
-- 
GitLab