[Gmsh] fillet producing irregular mesh

baptiste auguié auguieba at gmail.com
Tue Apr 21 05:48:08 CEST 2020


Hi Christophe,

Thank you for the quick response. I wouldn't feel very comfortable 
emailing OpenCascade developers since I didn't know their project's 
existence until a google search 5 minutes ago – I wouldn't know how to 
describe the problem properly to them, seeing that the gmsh–OpenCascade 
connection is but a black box to me, as a naive new user of the program. 
I would assume they'll have heard of the underlying problem though, if 
this is a common operation?

I'd appreciate if there's a possible workaround to circumvent this issue 
from the gmsh side, but otherwise I'll have to hope the little glitches 
don't have a serious effect on the results (the results do seem fine).

Best regards,

baptiste


On 20/04/20 9:22 pm, Christophe Geuzaine wrote:
> Hi Baptiste,
>
> The issue is with the geometry: OpenCASCADE seems to generate invalid surfaces, that extend outside of the bounding curves. You can check by showing the STL mesh generated by OpenCASCADE itself, e.g. for surface 129.
>
> You could send the attached bug.brep to the OpenCASCADE developers so they can have a look.
>
> Christophe
>
>
>
>> On 20 Apr 2020, at 10:16, baptiste auguie <auguieba at gmail.com> wrote:
>>
>> Hi,
>>
>> I'm very new to the program so I may well have overlooked something basic. I adapted one of the examples for constructive geometry with boolean union between a central sphere and a number of conical spikes. I end the shape by rounding off sharp edges with a fillet, but when inspecting the mesh visually I find some strange irregularities where fillet was applied (and applying Smooth 2D doesn't seem to be enough to smoothen them out).
>>
>> Thankfully the model doesn't seem too bothered by this and produces reasonable results; I'd still be keen to know if the mesh could be improved. I attach the geo file as well as a rendering of the structure for clarity.
>>
>> Best regards,
>>
>> baptiste
>>
>>
>>
>> ----
>>
>> geo file
>>
>> //+
>> SetFactory("OpenCASCADE");
>>
>> Mesh.CharacteristicLengthMin = 0.001;
>> Mesh.CharacteristicLengthMax = 0.005;
>> Sphere(1) = {0, 0, 0, 0.030, -Pi/2, Pi/2, 2*Pi};
>>
>> Cone(2) = {0, 0, 0, -0.043, 0.01, -0.01, 0.015, 0.003, 2*Pi};
>> Cone(3) = {0, 0, 0, -0.038, -0.024, 0, 0.015, 0.003, 2*Pi};
>> Cone(4) = {0, 0, 0, -0.034, 0.022, 0.02, 0.015, 0.003, 2*Pi};
>> Cone(5) = {0, 0, 0, -0.029, -0.004, -0.034, 0.015, 0.003, 2*Pi};
>> Cone(6) = {0, 0, 0, -0.025, -0.022, 0.03, 0.015, 0.003, 2*Pi};
>> Cone(7) = {0, 0, 0, -0.02, 0.039, -0.008, 0.015, 0.003, 2*Pi};
>> Cone(8) = {0, 0, 0, -0.016, -0.036, -0.022, 0.015, 0.003, 2*Pi};
>> Cone(9) = {0, 0, 0, -0.011, 0.012, 0.042, 0.015, 0.003, 2*Pi};
>> Cone(10) = {0, 0, 0, -0.007, 0.02, -0.04, 0.015, 0.003, 2*Pi};
>> Cone(11) = {0, 0, 0, -0.002, -0.042, 0.016, 0.015, 0.003, 2*Pi};
>> Cone(12) = {0, 0, 0, 0.002, 0.042, 0.016, 0.015, 0.003, 2*Pi};
>> Cone(13) = {0, 0, 0, 0.007, -0.02, -0.04, 0.015, 0.003, 2*Pi};
>> Cone(14) = {0, 0, 0, 0.011, -0.012, 0.042, 0.015, 0.003, 2*Pi};
>> Cone(15) = {0, 0, 0, 0.016, 0.036, -0.022, 0.015, 0.003, 2*Pi};
>> Cone(16) = {0, 0, 0, 0.02, -0.039, -0.008, 0.015, 0.003, 2*Pi};
>> Cone(17) = {0, 0, 0, 0.025, 0.022, 0.03, 0.015, 0.003, 2*Pi};
>> Cone(18) = {0, 0, 0, 0.029, 0.004, -0.034, 0.015, 0.003, 2*Pi};
>> Cone(19) = {0, 0, 0, 0.034, -0.022, 0.02, 0.015, 0.003, 2*Pi};
>> Cone(20) = {0, 0, 0, 0.038, 0.024, 0, 0.015, 0.003, 2*Pi};
>> Cone(21) = {0, 0, 0, 0.043, -0.01, -0.01, 0.015, 0.003, 2*Pi};
>> BooleanUnion(22) = {Volume{1}; Delete; }{ Volume{2}; Delete; };
>> BooleanUnion(23) = {Volume{3}; Delete; }{ Volume{22}; Delete; };
>> BooleanUnion(24) = {Volume{4}; Delete; }{ Volume{23}; Delete; };
>> BooleanUnion(25) = {Volume{5}; Delete; }{ Volume{24}; Delete; };
>> BooleanUnion(26) = {Volume{6}; Delete; }{ Volume{25}; Delete; };
>> BooleanUnion(27) = {Volume{7}; Delete; }{ Volume{26}; Delete; };
>> BooleanUnion(28) = {Volume{8}; Delete; }{ Volume{27}; Delete; };
>> BooleanUnion(29) = {Volume{9}; Delete; }{ Volume{28}; Delete; };
>> BooleanUnion(30) = {Volume{10}; Delete; }{ Volume{29}; Delete; };
>> BooleanUnion(31) = {Volume{11}; Delete; }{ Volume{30}; Delete; };
>> BooleanUnion(32) = {Volume{12}; Delete; }{ Volume{31}; Delete; };
>> BooleanUnion(33) = {Volume{13}; Delete; }{ Volume{32}; Delete; };
>> BooleanUnion(34) = {Volume{14}; Delete; }{ Volume{33}; Delete; };
>> BooleanUnion(35) = {Volume{15}; Delete; }{ Volume{34}; Delete; };
>> BooleanUnion(36) = {Volume{16}; Delete; }{ Volume{35}; Delete; };
>> BooleanUnion(37) = {Volume{17}; Delete; }{ Volume{36}; Delete; };
>> BooleanUnion(38) = {Volume{18}; Delete; }{ Volume{37}; Delete; };
>> BooleanUnion(39) = {Volume{19}; Delete; }{ Volume{38}; Delete; };
>> BooleanUnion(40) = {Volume{20}; Delete; }{ Volume{39}; Delete; };
>> BooleanUnion(41) = {Volume{21}; Delete; }{ Volume{40}; Delete; };
>> f() = Abs(Boundary{ Volume{41}; });
>> e() = Unique(Abs(Boundary{ Surface{f()}; }));
>>
>> Fillet{41}{e()}{0.003}
>>
>>
>> <starn.png><fullstar20.geo><Screen Shot 2020-04-20 at 8.14.36 PM.png>_______________________________________________
>> 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/20200421/86a1c3e1/attachment.html>


More information about the gmsh mailing list