[Gmsh] Transfinite mesh: incoherence between surface and volume meshes

Christophe Geuzaine cgeuzaine at ulg.ac.be
Sun Aug 7 19:20:03 CEST 2011


On 18 Jul 2011, at 15:36, Olivier Pierard wrote:

> Dear all,
> 
> When generating a structured transfinite mesh, I faced a tricky
> situation where surface and volume meshes do not coincide on the faces.
> 
> This is illustrated on the very simple example attached to this mail. 
> If transfinite surface meshes do not coincide on opposite face (e.g.:
> faces 20 and 22), transfinite volume mesh will match on of the two
> opposite faces only.
> 
> Is such behavior the one expected ?  Shouldn't be possible to have at
> least a warning during mesh generation to avoid such critical case ?  Or
> better, an automatic correction of nodes ordering within the definition
> of transfinite face meshes.
> 

Hello Olivier,

Yes, that's possible. The transfinite algorithm is still a bit dumb, and transfinite volume/surface coherence is not guaranteed: you need to make sure that the orderings are compatible...

> Thanks,
> 
> Olivier Pierard
> 
> Mesh.MshFileVersion = 1; 
> 
> x0 = -96;
> y0 = -115;
> z0 = -1;
> 
> L1 = 223;
> L2 = 203;
> L3 = 90;
> 
> h = 2; 
> 
> nbelt_x = 12; //25; //50;
> nbelt_y = 12; //25; //50;
> nbelt_z = 7; //15; //30;
> 
> nbpt_x = nbelt_x + 1;
> nbpt_y = nbelt_y + 1;
> nbpt_z = nbelt_z + 1;
> 
> Point(1) = {x0,y0,z0,h};
> Point(2) = {x0+L1,y0,z0,h};
> Point(3) = {x0+L1,y0+L2,z0,h};
> Point(4) = {x0,y0+L2,z0,h};
> Point(5) = {x0,y0,z0+L3,h};
> Point(6) = {x0+L1,y0,z0+L3,h};
> Point(7) = {x0+L1,y0+L2,z0+L3,h};
> Point(8) = {x0,y0+L2,z0+L3,h};
> 
> Line(1) = {1,2};
> Line(2) = {2,3};
> Line(3) = {3,4};
> Line(4) = {4,1};
> Line(5) = {1,5};
> Line(6) = {2,6};
> Line(7) = {3,7};
> Line(8) = {4,8};
> Line(9) = {5,6};
> Line(10) = {6,7};
> Line(11) = {7,8};
> Line(12) = {8,5};
> 
> Line Loop(13) = {1,2,3,4}; Plane Surface(19) = {13};
> Line Loop(14) = {-9,-5,1,6}; Plane Surface(20) = {14};
> Line Loop(15) = {-10,-6,2,7}; Plane Surface(21) = {15};
> Line Loop(16) = {-11,-7,3,8}; Plane Surface(22) = {16};
> Line Loop(17) = {12,-5,-4,8}; Plane Surface(23) = {17};
> Line Loop(18) = {11,12,9,10}; Plane Surface(24) = {18};
> 
> Surface Loop(25) = {19,22,21,24,-20,-23}; 
> Volume(26) = {25};
> 
> Transfinite Line{1,9,3,11} = nbpt_x Using Power 1.0; 
> Transfinite Line{10,2,4,12} = nbpt_y Using Power 1.0; 
> Transfinite Line{5,8,7,6} = nbpt_z Using Power 1.0; 
> 
> Transfinite Surface{20} = {1,2,6,5};
> // Transfinite Surface{20} = {5,6,2,1};
> Transfinite Surface{19} = {1,2,3,4};
> Transfinite Surface{22} = {3,7,8,4};
> Transfinite Surface{24} = {7,6,5,8};
> Transfinite Surface{23} = {4,8,5,1};
> Transfinite Surface{21} = {3,7,6,2};
> 
> Transfinite Volume{26} = {5,6,2,1,8,7,3,4}; 
> 
> 
> Physical Volume(300) = {26}; 
> 
> Physical Surface(119) = {19};
> Physical Surface(120) = {20};
> Physical Surface(121) = {21};
> Physical Surface(122) = {22};
> Physical Surface(123) = {23};
> Physical Surface(124) = {24};
> 
> Physical Line(201) = {1};
> Physical Line(202) = {2};
> Physical Line(203) = {3};
> Physical Line(204) = {4};
> Physical Line(205) = {5};
> Physical Line(206) = {6};
> Physical Line(207) = {7};
> Physical Line(208) = {8};
> Physical Line(209) = {9};
> Physical Line(210) = {10};
> Physical Line(211) = {11};
> Physical Line(212) = {12};
> 
> Physical Point (301) = {1};
> Physical Point (302) = {2};
> Physical Point (303) = {3};
> Physical Point (304) = {4};
> Physical Point (305) = {5};
> Physical Point (306) = {6};
> Physical Point (307) = {7};
> Physical Point (308) = {8};
> 
> 
> 
> _______________________________________________
> gmsh mailing list
> gmsh at geuz.org
> http://www.geuz.org/mailman/listinfo/gmsh

-- 
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science 
http://www.montefiore.ulg.ac.be/~geuzaine