[Gmsh] BooleanFragments

Karin&NiKo niko.karin at gmail.com
Thu Jul 4 10:03:28 CEST 2019


OK. Sorry for spamming you ; I think I got it.
At the end of the geo file, I wrote :
-------------------------------------------
Mesh 2;

Plugin(Crack).Dimension=1;
Plugin(Crack).PhysicalGroup=4;
Plugin(Crack).OpenBoundaryPhysicalGroup=0;
Plugin(Crack).NormalX=0;
Plugin(Crack).NormalY=0;
Plugin(Crack).NormalZ=1;
Plugin(Crack).Run;
-------------------------------------------
And it did the trick!


Le jeu. 4 juil. 2019 à 09:59, Karin&NiKo <niko.karin at gmail.com> a écrit :

> Hi,
>
> At least, it works when using the Crack Plugin from the GUI. But how can
> it be used from the script?
>
> [image: image.png]
>
> Le jeu. 4 juil. 2019 à 09:35, Karin&NiKo <niko.karin at gmail.com> a écrit :
>
>> Dear All,
>>
>> After defining the mesh, I would like to use the Crack plugin. Here's
>> what I write in my .opt file :
>> ---------------
>> Plugin(Crack).Dimension=1;
>> Plugin(Crack).PhysicalGroup=4;
>> Plugin(Crack).OpenBoundaryPhysicalGroup=0;
>> Plugin(Crack).NormalX=0;
>> Plugin(Crack).NormalY=0;
>> Plugin(Crack).NormalZ=1;
>> Plugin(Crack).Run;
>> ----------------
>>
>> But I cannot see the nodes duplication in the final mesh obtained by :
>> "gmsh -2 myCrack.geo -format med -o myCrack.med ".
>>
>> What am I missing?
>> Thanks,
>> Nicolas
>>
>> Le mer. 3 juil. 2019 à 21:01, Karin&NiKo <niko.karin at gmail.com> a écrit :
>>
>>> Christophe, you are reading my mind! I was looking at this solution
>>> using fields but I couldn't find an example.
>>> Thanks
>>>
>>> Le mer. 3 juil. 2019 20:16, Christophe Geuzaine <cgeuzaine at uliege.be> a
>>> écrit :
>>>
>>>>
>>>> Hi guys,
>>>>
>>>> All 3 cases work for me with Gmsh 4.4... (Some earlier versions had
>>>> indeed an issue with preseance of mesh size specs on points with OCC.)
>>>>
>>>> Here is a 4th method, which IMHO gives an even nicer result:
>>>>
>>>> // **************
>>>> SetFactory("OpenCASCADE");
>>>> Rectangle(1) = {-0.7, -0.2, 0, 1, 0.5, 0.1};
>>>>
>>>> Point(9) = {-0.39, 0.21, 0, 1.0};
>>>> Point(10) = {-0.25, 0.14, 0, 1.0};
>>>> Point(11) = {-0.12, -0.05, 0, 1.0};
>>>> Point(12) = {-0.03, 0.12, 0, 1.0};
>>>> Point(13) = {0.14, 0.12, 0, 1.0};
>>>> Spline(9) = {9, 10, 11, 12, 13};
>>>>
>>>> BooleanFragments{ Surface{1}; Delete; }{ Curve{9}; Delete; }
>>>>
>>>> Field[1] = Distance;
>>>> Field[1].NNodesByEdge = 200;
>>>> Field[1].EdgesList = {9};
>>>>
>>>> Field[2] = Threshold;
>>>> Field[2].IField = 1;
>>>> Field[2].LcMin = 0.005;
>>>> Field[2].LcMax = 0.05;
>>>> Field[2].DistMin = 0.01;
>>>> Field[2].DistMax = 0.1;
>>>>
>>>> Background Field = 2;
>>>>
>>>> Mesh.Algorithm = 6;
>>>> Mesh.CharacteristicLengthExtendFromBoundary = 0;
>>>> // **************
>>>>
>>>> Christophe
>>>>
>>>> > On 3 Jul 2019, at 19:41, Max Orok <morok at mevex.com> wrote:
>>>> >
>>>> > Hi there,
>>>> >
>>>> > I was able to get your script to work using the PointsOf function
>>>> with the curve to specify the characteristic length. I also was able to
>>>> directly list the tags in the characteristic length call, but only after
>>>> removing the 1.0 characteristic length parameter that was the fourth
>>>> argument to the Point initialization calls. In contrast, PointsOf seems to
>>>> work even when the length is specified earlier. Perhaps there is a subtle
>>>> difference somewhere between PointsOf and directly listing tags for this
>>>> command? I've named the two working cases A (using PointsOf) and B
>>>> (directly specifying the tags without setting the characteristic length
>>>> earlier).
>>>> >
>>>> > Here is the modified script with the other cases commented out in
>>>> case you'd like to try them:
>>>> >
>>>> > // --
>>>> >
>>>> > SetFactory("OpenCASCADE");
>>>> > Rectangle(1) = {-0.7, -0.2, 0, 1, 0.5, 0.1};
>>>> >
>>>> >
>>>> //------------------------------------------------------------------------------
>>>> >
>>>> >
>>>> > // case A: specify a value, only to be changed later
>>>> > Point(9) = {-0.39, 0.21, 0, 1.0};
>>>> > Point(10) = {-0.25, 0.14, 0, 1.0};
>>>> > Point(11) = {-0.12, -0.05, 0, 1.0};
>>>> > Point(12) = {-0.03, 0.12, 0, 1.0};
>>>> > Point(13) = {0.14, 0.12, 0, 1.0};
>>>> >
>>>> > Spline(9) = {9, 10, 11, 12, 13};
>>>> >
>>>> > // works even if the characteristic length was set initialization ^
>>>> > Characteristic Length { PointsOf{ Curve{9}; } } = 0.01;
>>>> >
>>>> >
>>>> >
>>>> //------------------------------------------------------------------------------
>>>> >
>>>> > /*
>>>> > // case B: don't specify the characteristic lengths
>>>> > Point(9) = {-0.39, 0.21, 0};
>>>> > Point(10) = {-0.25, 0.14, 0};
>>>> > Point(11) = {-0.12, -0.05, 0};
>>>> > Point(12) = {-0.03, 0.12, 0};
>>>> > Point(13) = {0.14, 0.12, 0};
>>>> >
>>>> > Spline(9) = {9, 10, 11, 12, 13};
>>>> >
>>>> > // only works if the characteristic length wasn't set on
>>>> initialization
>>>> > Characteristic Length { 9,10,11,12,13 } = 0.01;
>>>> > */
>>>> >
>>>> > // maybe a subtle difference between PointsOf and directly specifying
>>>> tags?
>>>> >
>>>> >
>>>> //------------------------------------------------------------------------------
>>>> >
>>>> > /*
>>>> > // case C: specify the characteristic lengths then use the tags
>>>> directly
>>>> > // DOESN'T WORK
>>>> > Point(9) = {-0.39, 0.21, 0, 1.0};
>>>> > Point(10) = {-0.25, 0.14, 0, 1.0};
>>>> > Point(11) = {-0.12, -0.05, 0, 1.0};
>>>> > Point(12) = {-0.03, 0.12, 0, 1.0};
>>>> > Point(13) = {0.14, 0.12, 0, 1.0};
>>>> >
>>>> > Spline(9) = {9, 10, 11, 12, 13};
>>>> >
>>>> > // only works if the characteristic length wasn't set on
>>>> initialization
>>>> > Characteristic Length { 9,10,11,12,13 } = 0.01;
>>>> > */
>>>> >
>>>> >
>>>> //------------------------------------------------------------------------------
>>>> >
>>>> > BooleanFragments{ Surface{1}; Delete; }{ Curve{9}; Delete; }
>>>> >
>>>> > // --
>>>> >
>>>> > This probably wasn't your issue, but I had also forgotten about
>>>> setting a minimum characteristic length option, which stopped me from
>>>> manually setting the characteristic lengths at first.
>>>> >
>>>> > Sincerely,
>>>> > Max
>>>> >
>>>> > p.s. here are pictures of each case:
>>>> >
>>>> > Case A:
>>>> > <image.png>
>>>> >
>>>> > Case B (looks the same as Case A to me):
>>>> > <image.png>
>>>> >
>>>> > Case C (broken):
>>>> > <image.png>
>>>> >
>>>> >
>>>> > On Wed, Jul 3, 2019 at 12:30 PM Karin&NiKo <niko.karin at gmail.com>
>>>> wrote:
>>>> > Dear Gmsh Gurus,
>>>> >
>>>> > I would like to define a 1D crack in a planar surface. To this end, I
>>>> use the attached script.
>>>> > 1. When I specify the mesh size at the curve point *in the script*
>>>> and then load the script, it does not work aka the mesh haven't the right
>>>> size
>>>> > 2. When I load the script and then specify  the mesh size at the
>>>> curve point *in the GUI*, it works (and it is beautiful!)
>>>> >
>>>> > Am I missing something? Is it a bug (NO????)?
>>>> >
>>>> > Thanks in advance,
>>>> > Your oldest fan
>>>> > _______________________________________________
>>>> > gmsh mailing list
>>>> > gmsh at onelab.info
>>>> > http://onelab.info/mailman/listinfo/gmsh
>>>> >
>>>> >
>>>> > --
>>>> > Max Orok
>>>> > Contractor
>>>> > www.mevex.com
>>>> >
>>>> >
>>>> > <myCrack-fixed.geo>_______________________________________________
>>>> > gmsh mailing list
>>>> > 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
>>>>
>>>>
>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20190704/3aa54f75/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 194721 bytes
Desc: not available
URL: <http://onelab.info/pipermail/gmsh/attachments/20190704/3aa54f75/attachment-0001.png>


More information about the gmsh mailing list