[Gmsh] "Perfect Match Failed" Problem with Blossom

Johannes Reinhardt johannes.reinhardt at unifr.ch
Wed Mar 13 15:30:24 CET 2013


Hi,

sorry, that was unfortunate: I had accidentally attached the case for 
dist = 2.1, which works also here. For larger dists (e.g. 3.5) it fails, 
see new attachment.

It fails with all the triangulation methods, and the resulting 
triangulation always shows weird artifacts (see attached screenshot), 
but at different places depending on the triangulation method.

Thank you for your rapid answer

Johannes


On 03/13/2013 02:11 PM, Christophe Geuzaine wrote:
>
> Hi Johannes,
>
> That's weird - it seems to work fine over here (cf screenshot). I will 
> test it on our Linux machine when I have the time.
>
> Does it happen with all the triangulation methods (MeshAdapt, 
> Delaunay, Frontal, Delaunay for quads)?
>
>
> Christophe
>
> On 13 Mar 2013, at 13:32, Johannes Reinhardt 
> <johannes.reinhardt at unifr.ch <mailto:johannes.reinhardt at unifr.ch>> wrote:
>
>> Hello everybody,
>>
>> first I want to thank everybody involved in the development of gmsh. 
>> It is a really great tool and has helped me a lot in my research.
>>
>> However I run into a probem when I try to create a 2D quad mesh with 
>> the outline of two superimposed disks embedded. However Blossom 
>> almost always fails with the message:
>>
>> Warning : Perfect Match Failed in Quadrangulation, Applying Graph Splits
>>
>> printed 10 times. I attached a simple geometry file that shows this 
>> problem.
>>
>> For small distances (e.g. dist=2.1) this problem does not occur, but 
>> for larger distances (and these are the ones that I want to study), I 
>> always get this error.
>>
>> For other geometries where I had this problem, playing a bit with the 
>> mesh element sizes helped, but I could not find good numbers for this 
>> case. I also tried both DelQuad and MeshAdapt as Meshing Algorithms, 
>> but I always get the error above.
>>
>> I briefly looked at the Blossom Quad publication, but could not find 
>> any explanation for this behaviour. My best guess is, that the 
>> embedded curve conflicts with a perfect matching, and the extra edges 
>> mechanism fails in this case.
>>
>> I tested both gmsh 2.6.1 compiled from source and the precompiled 
>> gmsh 2.7.0 Linux 64bit binary on Ubuntu 11.10, both show the same 
>> behaviour.
>>
>> Has anybody an idea how to reformulate the geometry description to 
>> avoid this problem?
>>
>> Thanks in advance and greetings
>>
>> Johannes
>> <tip.geo>_______________________________________________
>> gmsh mailing list
>> gmsh at geuz.org <mailto: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 
> <http://www.montefiore.ulg.ac.be/%7Egeuzaine>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20130313/3795322d/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/png
Size: 25490 bytes
Desc: not available
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20130313/3795322d/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screenshot at 2013-03-13 15:22:24.png
Type: image/png
Size: 97608 bytes
Desc: not available
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20130313/3795322d/attachment-0001.png>
-------------- next part --------------
dist = 3.5;
r_disk = 2;

tip_dist = Sqrt(r_disk*r_disk - dist*dist/4);

width_outer = 10;
height_outer = 10;

size_outer = 8e-1;
size_outline = 5e-1;
size_tip = 1e-1;

Mesh.RecombinationAlgorithm = 1; //Blossom
Mesh.Algorithm=1; //MeshAdapt

//centers of disks
Point(2) = {-dist/2,0,0,size_outline};
Point(3) = {+dist/2,0,0,size_outline};

//outer corners
Point(4) = {+width_outer,+height_outer,0,size_outer};
Point(5) = {+width_outer,-height_outer,0,size_outer};
Point(6) = {-width_outer,-height_outer,0,size_outer};
Point(7) = {-width_outer,+height_outer,0,size_outer};

//outline left
Point(8) = {-dist/2,+r_disk,0,size_outline};
Point(9) = {-dist/2-r_disk,0,0,size_outline};
Point(10) = {-dist/2,-r_disk,0,size_outline};

//outline right
Point(11) = {+dist/2,-r_disk,0,size_outline};
Point(12) = {+dist/2+r_disk,0,0,size_outline};
Point(13) = {+dist/2,+r_disk,0,size_outline};

//tip
Point(14) = {0,+tip_dist,0,size_tip};
Point(15) = {0,-tip_dist,0,size_tip};

//Box
Line(1) = {4,5};
Line(2) = {5,6};
Line(3) = {6,7};
Line(4) = {7,4};
Line Loop(5) = {1,2,3,4};

//contact line
Circle(6) = {8,2,9};
Circle(7) = {9,2,10};
Circle(8) = {10,2,15};
Circle(9) = {15,3,11};
Circle(10) = {11,3,12};
Circle(11) = {12,3,13};
Circle(12) = {13,3,14};
Circle(13) = {14,2,8};

Plane Surface(1) = {5};
Recombine Surface {1};

//outline
Line {6,7,8,9,10,11,12,13} In Surface {1};

Physical Surface(2) = {1};