[Gmsh] Gmsh Bug ? Report

Didier Vigneron Didier.Vigneron at ulg.ac.be
Fri Feb 9 10:13:03 CET 2007


Bonjour,

J'utilise Gmsh pour créer des maillages non 
structurés pour la résolution des équations de 
Navier-Stokes par la méthode des volumes finis.

Je crois avoir décelé un problème lors de l'extrusion d'un maillage.
Je vous envoie le fichier Cylinder.geo que 
j'utilise. Il s'agit d'un maillage autour d'un 
Cylindre. Le Cylindre est donc un trou.

La maillage 2D se compose de plusieurs parties.

4 Ruled Surfaces transfinies circulaires autour 
du cylindre.  (partie // BOUNDARY LAYER // dans le fichier Cylinder.geo )
1 Plane Surface   carrée autour du 
cylindre.                       (partie // SQUARE 
//                 dans le fichier Cylinder.geo )
1 Plane Surface   rectangulaire transfinie à 
droite du carré.  (partie // RECTANGLE 
//           dans le fichier Cylinder.geo )
4 Plane Surfaces pour agrandir le maillage le 
plus possible. (partie // EXTERIOR 
//              dans le fichier Cylinder.geo )

Ensuite le maillage est extrudé sur 4 couches sur 
une hauteur totale z=0.1. (partie // EXTRUSION // dans le fichier Cylinder.geo)

Le problème est le suivant:

Dans le fichier Cylinder.msh les noeuds 25157 et 
25931 ont exactement les mêmes coordonnées 
(0.5125301401598015 0.4646092699136419 0.1)

Ce noeud unique mais dédoublé appartient à la 
surface supérieure créée par extrusion.

De plus, lorsque j'inspecte le maillage, je 
remarque que ce noeud doit appartenir à 6 volumes 
et à 6 faces frontières (les faces des 6 volumes).

Je constate que

-le noeud 25157 n'appartient qu'à une seule face 
(l'élément 16195 de la surface physique 3 et 
surface elementaire 440) et à aucun volume !
-le noeud 25931 appartient à 5 faces (les 
éléments 16453,16821,16822,17477,17478 de la 
surface physique 3 et surface elementaire 440)
                                   et à 6 volumes 
(les éléments 35378,36410,37882,37886,40506,40510 
du volume physique 1 et volume elementaire 5)

Si ce noeud n'en formait qu'un seul, il n'y aurait donc aucun problème.

Dans ce maillage je crois qu'il n'existe qu'un 
seul noeud dédoublé de ce genre. Par contre 
lorsqu'on augmente le nombre de mailles en 
changeant le paramètre N au début du fichier (en 
mettant N=1 plutôt que N=0.5 par exemple) le 
nombre de noeuds dédoublés augmentent fortement !

Visiblement, le problème se pose aussi bien pour 
les prismes que pour les hexaèdres. Je n'ai 
décelé ce problème que pour la noeuds qui se 
trouvent sur la face supérieur créée par 
l'extrusion. Mais il se peut que le problème 
arrive aussi pour des noeuds intérieurs , je n'en sais rien.

Est-ce un bug ou ai-je fait quelque chose d'incorrect ?

Tant que ce problème subsiste je n'arrive pas à 
importer ce maillage dans mon code de calcul.

Merci de m'apporter votre aide.
Je suis en tout cas très heureux d'utiliser ce mailleur gratuit ! de qualité.
Merci beaucoup d'avoir un jour eu l'idée de 
développer ce logiciel qui doit, j'en suis 
convaincu, prendre beaucoup de votre temps !

Bonne journée,


         Didier Vigneron



--------------------------------------------------------
Didier Vigneron - Assistant
http://www.ulg.ac.be/aerodyn/fr/people/vigneron/index.html
Université de Liège
Département ASMA (Aérodynamique)
Chemin des chevreuils, 1, Bât B52/3
B-4000 Liège
--------------------------------------------------------
Phone : (+32) (0)4 366 94 39
Fax     : (+32) (0)4 366 91 36
www.ulg.ac.be/aerodyn
www.ulg.ac.be/turbo
--------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20070209/16f26a33/attachment.html>
-------------- next part --------------
// Cylinder //
//----------//

Mesh.Algorithm = 2;

N = 0.5;

bl          = 0.025;
NBL         = 10*N;
NBL_PROG    = 1.1;
N_CYL       = 100*N;
CYL_PROG    = 0.99;
Delta_0     = 0.5*3.1415*(0.5+bl)*(CYL_PROG-1)/(CYL_PROG*(CYL_PROG^N_CYL-1));
Delta_N     = Delta_0*CYL_PROG^N_CYL;
h_square    = 0.75;
l_rectangle = 10.;
m_box       = 0.02/N;
N_LARGEBOX  = 11*N;
L_LARGEBOX  = 100;

// CYLINDER //

Point(11) = {   0,   0,0,1};
Point(12) = {   0, 0.5,0,1};
Point(13) = { 0.5,   0,0,1};
Point(14) = {   0,-0.5,0,1};
Point(15) = {-0.5,   0,0,1};

Circle(21) = {12,11,13};
Circle(22) = {13,11,14};
Circle(23) = {14,11,15};
Circle(24) = {15,11,12};

// 15 , 24 //


// BOUNDARY LAYER //

Point(16) = {      0, 0.5+bl,0,Delta_0};
Point(17) = { 0.5+bl,      0,0,Delta_N};
Point(18) = {      0,-0.5-bl,0,Delta_0};
Point(19) = {-0.5-bl,      0,0,Delta_N};

Line(25) = {12,16};
Line(26) = {13,17};
Line(27) = {14,18};
Line(28) = {15,19};

Circle(29) = {16,11,17};
Circle(210)= {17,11,18};
Circle(211)= {18,11,19};
Circle(212)= {19,11,16};

Line Loop(213) = {-25,21,26,-29};
Line Loop(214) = {-26,22,27,-210};
Line Loop(215) = {-27,23,28,-211};
Line Loop(216) = {-28,24,25,-212};

Ruled Surface(31) = {213};
Ruled Surface(32) = {214};
Ruled Surface(33) = {215};
Ruled Surface(34) = {216};

Transfinite Line{29,-210,211,-212,21,-22,23,-24} = Floor(N_CYL) Using Progression CYL_PROG;
Transfinite Line{25,26,27,28}                    = Floor(NBL)   Using Progression NBL_PROG;

Transfinite Surface{31} = {16,12,13,17};
Transfinite Surface{32} = {17,13,14,18};
Transfinite Surface{33} = {18,14,15,19};
Transfinite Surface{34} = {19,15,12,16};

Recombine Surface{31,32,33,34};

// 19 , 216 , 34 //


// SQUARE //

Point(111)={-h_square,-h_square,0,m_box*3};
Point(112)={-h_square, h_square,0,m_box*3};
Point(113)={ h_square, h_square,0,m_box};
Point(114)={ h_square,-h_square,0,m_box};

Line(217) = {111,112};
Line(218) = {112,113};
Line(219) = {113,114};
Line(220) = {114,111};

Line Loop(221) = {-217,-218,-219,-220};
Line Loop(222) = {-29,-210,-211,-212};

Plane Surface(35) = {221,222};

// 114 , 222 , 35 //


// RECTANGLE //

Point(115) = {h_square+l_rectangle,-h_square,0,m_box};
Point(116) = {h_square+l_rectangle, h_square,0,m_box};

Line(223) = {114,115};
Line(224) = {115,116};
Line(225) = {116,113};

Line Loop(226) = {223,224,225,219};

Ruled Surface(36) = {226};

Transfinite Line{224,219} = Floor(2*h_square/m_box)   Using Progression 1;
Transfinite Line{223,225} = Floor(l_rectangle/m_box)  Using Progression 1;

Transfinite Surface{36} = {114,115,116,113};
Recombine Surface{36};

// 116 , 226 , 36 //



// EXTERIOR //

Point(117) = {-L_LARGEBOX,-L_LARGEBOX,0,2*L_LARGEBOX/N_LARGEBOX};
Point(118) = { L_LARGEBOX,-L_LARGEBOX,0,2*L_LARGEBOX/N_LARGEBOX};
Point(119) = { L_LARGEBOX, L_LARGEBOX,0,2*L_LARGEBOX/N_LARGEBOX};
Point(120) = {-L_LARGEBOX, L_LARGEBOX,0,2*L_LARGEBOX/N_LARGEBOX};

Line(227) = {117,118};
Line(228) = {118,119};
Line(229) = {119,120};
Line(230) = {120,117};

Line(231) = {117,111};
Line(232) = {118,115};
Line(233) = {119,116};
Line(234) = {120,112};


Line Loop(235) = {-231,227,232,-223,220};
Line Loop(236) = {-232,228,233,-224};
Line Loop(237) = {-233,229,234,218,-225};
Line Loop(238) = {-234,230,231,217};

Plane Surface(37)  = {235};
Plane Surface(38)  = {236};
Plane Surface(39)  = {237};
Plane Surface(310) = {238};

Recombine Surface{37,38,39,310};

// 120 , 238 , 310 //


// EXTRUSION //

out1[]  = Extrude{0,0,0.1}{Surface{31}; Layers{4,1} ; Recombine;};
out2[]  = Extrude{0,0,0.1}{Surface{32}; Layers{4,1} ; Recombine;};
out3[]  = Extrude{0,0,0.1}{Surface{33}; Layers{4,1} ; Recombine;};
out4[]  = Extrude{0,0,0.1}{Surface{34}; Layers{4,1} ; Recombine;};
out5[]  = Extrude{0,0,0.1}{Surface{35}; Layers{4,1} ; Recombine;};
out6[]  = Extrude{0,0,0.1}{Surface{36}; Layers{4,1} ; Recombine;};
out7[]  = Extrude{0,0,0.1}{Surface{37}; Layers{4,1} ; Recombine;};
out8[]  = Extrude{0,0,0.1}{Surface{38}; Layers{4,1} ; Recombine;};
out9[]  = Extrude{0,0,0.1}{Surface{39}; Layers{4,1} ; Recombine;};
out10[] = Extrude{0,0,0.1}{Surface{310}; Layers{4,1} ; Recombine;};

Physical Volume(1)  = {out1[1],out2[1],out3[1],out4[1],out5[1],out6[1],out7[1],out8[1],out9[1],out10[1]};
Physical Surface(2) = {31,32,33,34,35,36,37,38,39,310}; // Z_DOWN //
Physical Surface(3) = {out1[0],out2[0],out3[0],out4[0],out5[0],out6[0],out7[0],out8[0],out9[0],out10[0]}; // Z_UP //
Physical Surface(4) = {476}; // Y_DOWN //
Physical Surface(5) = {525}; // Y_UP   //
Physical Surface(6) = {551}; // INLET  //
Physical Surface(7) = {502}; // OUTLET //
Physical Surface(8) = {389,323,345,367}; // CYLINDER //