[Gmsh] Bug with transfinite interface

Quentin Goestchel quentin.goestchel at ens-cachan.fr
Fri Jun 8 19:17:59 CEST 2018


Dear Mr Geuzaine,


About my last email, I understood what you were talking about. Using 
extrusion with layers to generate the bulk mesh, I finally succeed to 
get what I needed. Here enclosed the file ('NewTransfSphere.geo') with 
the good definition of the geometry.

I am now trying to generate the same geometry but with hybrid 
(Hexahedrons&Pyramids&Tetrahedron) meshes. I found a lot of help about 
it, I use the "TransfQuadTri" algorithm and the "QuadTriAddVerts" option 
of the extrusion command but I still get errors. The first one is "In 
QuadToTriGetRegionDiags(), top surface of region 1 has quads in a 
non-toroidal QuadToTri extrusion." and I don't find anything about it. 
This error then lead to "flat pyramids" and "Cannot build pyramids on 
non manifold faces" error, which I was trying to avoid using Quadtri. If 
you have any idea about what I'm doing wrong it would be of great help. 
The problematic file ('NewTransfRecSphere.geo') is also enclosed in this 
email.


Thanks again for your help and your work,

Best regards,

--

Quentin


Le 31/05/2018 à 15:40, Quentin Goestchel a écrit :
>
> Thank you for your answer. Let me know if I understood well: I have 
> two option, the first one is to change the order of the corners in the 
> transfinite volume definition to have the match and the second one is 
> to create the bulk cube using extrusion?
>
> I'm not sure to understand perfectly how transfinite could be replaced 
> by extrusion. Is there is a way to have regular elements in the bulk 
> of the volume with this method?
>
> Best regards,
>
> --
>
> Quentin Goestchel
>
> Le 30/05/2018 à 22:10, Christophe Geuzaine a écrit :
>>
>>
>>> On 25 May 2018, at 16:26, Quentin Goestchel 
>>> <quentin.goestchel at ens-cachan.fr 
>>> <mailto:quentin.goestchel at ens-cachan.fr>> wrote:
>>>
>>> Dear Sir or Madam,
>>>
>>> I would like to thank you for the great work which has been done to 
>>> develop the open-source Gmsh software.
>>>
>>> I am currently working on a 3D numerical method and I think I have 
>>> found a bug in the 3D meshing algorithm. I was trying to generate a 
>>> transfinite bulk in a mesh (to have a constant orthogonality of the 
>>> elements), and an unstructured layer around it, as shown in the 
>>> enclosed "sphereTransfinite.png".
>>>
>>
>> This is "normal" the (non-recombined) 3D transfinite algorithm does 
>> not try to enforce the compatibility between the volume and surface 
>> meshes. It's actually impossible without modifying the 2D mesh a 
>> posteriori in some configuration (since we also generate the 2D mesh 
>> first). You should specify the corners of the transfinite 
>> interpolation in the right order to have the match.
>>
>> PS: Using Extrusion instead of Transfinite, Gmsh will try to perform 
>> the modifications automatically.
>>
>>> Everything was going fine until I noticed a big error on my 
>>> discretized spherical surface, computed with the sum of the areas of 
>>> the boundary faces. I found out that my code was unable to find the 
>>> neighbours of many tetrahedrons around the bulk mesh because many 
>>> faces were not matching but crossing each other edges, as shown in 
>>> sphereTransfinite_err.png .
>>>
>>> I didn't find any topics about such problem so I assume that you 
>>> didn't know about it, but I might be wrong.
>>>
>>> Best regards,
>>>
>>> -- 
>>> Quentin Goestchel  | /Etudiant - Année ARPE /
>>> Département Génie Civil
>>> +33(0)6 83 75 57 53 <tel:+33683755753>  | 
>>> quentin.goestchel at ens-paris-saclay.fr 
>>> <mailto:prenom.nom at ens-paris-saclay.fr>
>>> ENS Cachan - 61 avenue du Président Wilson 94235 Cachan CEDEX 
>>> <geo://?q=61+Avenue+du+Pr%C3%A9sident+Wilson+Cachan+France>
>>> www.ens-paris-saclay.fr <http://www.ens-paris-saclay.fr/>
>>>
>>> <imblgnlknopffhfn.png> <http://www.ens-paris-saclay.fr/>
>>>
>>> <sphereTransfinite.png><sphereTransfinite_err.png><sphereTransfinite.geo>_______________________________________________
>>> gmsh mailing list
>>> gmsh at onelab.info <mailto:gmsh at onelab.info>
>>> http://onelab.info/mailman/listinfo/gmsh
>>
>>>> Prof. Christophe Geuzaine
>> University of Liege, Electrical Engineering and Computer Science
>> http://www.montefiore.ulg.ac.be/~geuzaine 
>> <http://www.montefiore.ulg.ac.be/%7Egeuzaine>
>>
>> Free software: http://gmsh.info | http://getdp.info | http://onelab.info
>>
>
> -- 
> Quentin Goestchel  | /Etudiant - Année ARPE /
> Département Génie Civil
> +33(0)6 83 75 57 53 <tel:+33683755753>  | 
> quentin.goestchel at ens-paris-saclay.fr 
> <mailto:prenom.nom at ens-paris-saclay.fr>
> ENS Cachan - 61 avenue du Président Wilson 94235 Cachan CEDEX 
> <geo://?q=61+Avenue+du+Pr%C3%A9sident+Wilson+Cachan+France>
> www.ens-paris-saclay.fr <http://www.ens-paris-saclay.fr>
>
> <http://www.ens-paris-saclay.fr>
>

-- 
Quentin Goestchel  | /Etudiant - Année ARPE /
Département Génie Civil
+33(0)6 83 75 57 53 <tel:+33683755753>  | 
quentin.goestchel at ens-paris-saclay.fr 
<mailto:prenom.nom at ens-paris-saclay.fr>
ENS Cachan - 61 avenue du Président Wilson 94235 Cachan CEDEX 
<geo://?q=61+Avenue+du+Pr%C3%A9sident+Wilson+Cachan+France>
www.ens-paris-saclay.fr <http://www.ens-paris-saclay.fr>

<http://www.ens-paris-saclay.fr>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20180608/49612ef6/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: boibfncbienaijnc.png
Type: image/png
Size: 2619 bytes
Desc: not available
URL: <http://onelab.info/pipermail/gmsh/attachments/20180608/49612ef6/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gkaipoeiohaofnib.png
Type: image/png
Size: 2619 bytes
Desc: not available
URL: <http://onelab.info/pipermail/gmsh/attachments/20180608/49612ef6/attachment-0003.png>
-------------- next part --------------
lc = 1;
ls = 0.7*lc;
r = 5; // Radius of the sphere
Br = r/1.8; //Cubic bulk dimension
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//                   Structured internal cube 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Point(1) = {Br, Br, Br, ls};
Point(2) = {Br, -Br, Br, ls};
Point(3) = {Br, -Br, -Br, ls};
Point(4) = {Br, Br, -Br, ls};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(1) = {1, 2, 3, 4};
Plane Surface(1) = {1};
Extrude {-r, 0, 0} {
  Surface{1};Layers{2*Br/lc-2};
 }
 //
Transfinite Line {1, 2, 3, 4, 20, 11, 12, 16, 8, 9, 6, 7} = 2*Br/lc-1 Using Progression 1;
Transfinite Surface {13};
Transfinite Surface {1};
Transfinite Surface {25};
Transfinite Surface {26};
Transfinite Surface {17};
Transfinite Surface {21};
Surface Loop(29) = {25, 1, 13, 17, 21, 26};
Transfinite Volume{1} = {1, 2, 3, 4, 5, 6, 10, 14};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//                       Spherical boundary layer
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
p1 = newp; Point(p1)= {0.0,0.0,0.0,lc};
p2 = newp; Point(p2)= {r,0.0,0.0,ls};
p3 = newp; Point(p3)= {0,r,0.0,ls};
p4 = newp; Point(p4)= {-r,0,0.0,ls};
p5 = newp; Point(p5)= {0,-r,0.0,ls};
p6 = newp; Point(p6)= {0,0,-r,ls};
p7 = newp; Point(p7)= {0,0,r,ls};
c1 = newreg; Circle(c1) = {p2,p1,p3};
c2 = newreg; Circle(c2) = {p3,p1,p4};
c3 = newreg; Circle(c3) = {p4,p1,p5};
c4 = newreg; Circle(c4) = {p5,p1,p2};
c5 = newreg; Circle(c5) = {p3,p1,p6};
c6 = newreg; Circle(c6) = {p6,p1,p5};
c7 = newreg; Circle(c7) = {p5,p1,p7};
c8 = newreg; Circle(c8) = {p7,p1,p3};
c9 = newreg; Circle(c9) = {p2,p1,p7};
c10 = newreg; Circle(c10) = {p7,p1,p4};
c11 = newreg; Circle(c11) = {p4,p1,p6};
c12 = newreg; Circle(c12)= {p6,p1,p2};
Line Loop(13) = {c2,c8,-c10};
Line Loop(15) = {c10,c3,c7};
Line Loop(17) = {-c8,-c9,c1};
Line Loop(19) = {-c11,-c2,c5};
Line Loop(21) = {-c5,-c12,-c1};
Line Loop(23) = {-c3,c11,c6};
Line Loop(25) = {-c7,c4,c9};
Line Loop(27) = {-c4,c12,-c6};
Surface(28) = {13};
Surface(29) = {15};
Surface(30) = {17};
Surface(31) = {19};
Surface(32) = {21};
Surface(33) = {23};
Surface(34) = {25};
Surface(35) = {27};
Surface Loop(30) = {28, 31, 33, 29, 34, 35, 32, 30};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//                   Mesh volumes definition 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Volume(2) = {29,30};
Physical Volume(1) = {2,1};
Coherence Mesh;
-------------- next part --------------
Mesh.Algorithm=5; // mesh algorithm
Mesh.Algorithm3D = 3; // mesh algorithm
lc = 1;
ls = lc;
r = 5; // Radius of the sphere
Br = r/2; //Cubic bulk dimension
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//                   Structured internal cube 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Point(1) = {Br, Br, Br, ls};
Point(2) = {Br, -Br, Br, ls};
Point(3) = {Br, -Br, -Br, ls};
Point(4) = {Br, Br, -Br, ls};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(1) = {1, 2, 3, 4};
Plane Surface(1) = {1};
Transfinite Line {1, 2, 3, 4} = 2*Br/lc+1 Using Progression 1;
Transfinite Surface {1};
Recombine Surface{1};
Extrude {-r, 0, 0} {Surface{1};
					Layers{2*Br/lc};
					QuadTriAddVerts;Recombine;}
//
//
Transfinite Line {1, 2, 3, 4, 20, 11, 12, 16, 8, 9, 6, 7} = 2*Br/lc+1 Using Progression 1;
Transfinite Surface {13};
Transfinite Surface {25};
Transfinite Surface {26};
Transfinite Surface {17};
Transfinite Surface {21};
Recombine Surface{13,1,25,26,17,21};
Surface Loop(29) = {25, 1, 13, 17, 21, 26};
TransfQuadTri {1};
Transfinite Volume{1} = {1, 2, 3, 4, 5, 6, 10, 14};
//Transfinite Volume{1} = {3, 10, 14, 4, 2, 6, 5, 1};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//                       Spherical boundary layer
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
p1 = newp; Point(p1)= {0.0,0.0,0.0,lc};
p2 = newp; Point(p2)= {r,0.0,0.0,ls};
p3 = newp; Point(p3)= {0,r,0.0,ls};
p4 = newp; Point(p4)= {-r,0,0.0,ls};
p5 = newp; Point(p5)= {0,-r,0.0,ls};
p6 = newp; Point(p6)= {0,0,-r,ls};
p7 = newp; Point(p7)= {0,0,r,ls};
c1 = newreg; Circle(c1) = {p2,p1,p3};
c2 = newreg; Circle(c2) = {p3,p1,p4};
c3 = newreg; Circle(c3) = {p4,p1,p5};
c4 = newreg; Circle(c4) = {p5,p1,p2};
c5 = newreg; Circle(c5) = {p3,p1,p6};
c6 = newreg; Circle(c6) = {p6,p1,p5};
c7 = newreg; Circle(c7) = {p5,p1,p7};
c8 = newreg; Circle(c8) = {p7,p1,p3};
c9 = newreg; Circle(c9) = {p2,p1,p7};
c10 = newreg; Circle(c10) = {p7,p1,p4};
c11 = newreg; Circle(c11) = {p4,p1,p6};
c12 = newreg; Circle(c12)= {p6,p1,p2};
Line Loop(13) = {c2,c8,-c10};
Line Loop(15) = {c10,c3,c7};
Line Loop(17) = {-c8,-c9,c1};
Line Loop(19) = {-c11,-c2,c5};
Line Loop(21) = {-c5,-c12,-c1};
Line Loop(23) = {-c3,c11,c6};
Line Loop(25) = {-c7,c4,c9};
Line Loop(27) = {-c4,c12,-c6};
Surface(28) = {13};
Surface(29) = {15};
Surface(30) = {17};
Surface(31) = {19};
Surface(32) = {21};
Surface(33) = {23};
Surface(34) = {25};
Surface(35) = {27};
Surface Loop(30) = {28, 31, 33, 29, 34, 35, 32, 30};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//                   Meshable volumes definition 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Volume(2) = {29,30};
Physical Volume(1) = {2,1};
Coherence Mesh;


More information about the gmsh mailing list