[Gmsh] fillet producing irregular mesh

baptiste auguie auguieba at gmail.com
Mon Apr 20 10:16:35 CEST 2020


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}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: starn.png
Type: image/png
Size: 157555 bytes
Desc: not available
URL: <http://onelab.info/pipermail/gmsh/attachments/20200420/0dba1259/attachment-0002.png>
-------------- next part --------------
//+
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}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2020-04-20 at 8.14.36 PM.png
Type: image/png
Size: 999897 bytes
Desc: not available
URL: <http://onelab.info/pipermail/gmsh/attachments/20200420/0dba1259/attachment-0003.png>


More information about the gmsh mailing list