[Gmsh] Problem with the Boolean Operation

Benoit CURVERS benoit.curvers at screen-lasse.com
Thu Jul 12 16:56:37 CEST 2018


Dear,

I am writing in connection with the Boolean operation with GMSH. I have some trouble with the meshing size on points after a Boolean operation.
For example, on the picture below, I have four main surface. In the geo file, I create my surface according to the mesh size.
So, first, I create the surface 6 and 8 with the mesh size of 1 and after the layer 3 and 5 with the mesh size of 10.
But when I perform the Boolean operation (Boolean fragment), in one case, the minimal size is keeping and in the other case, the maximal size is keeping (as you can see with the red circle).
[cid:image002.png at 01D41A01.497E4B10]

So, I would like to know, How does GMSH keep the size after a Boolean operation ? Is there a specific condition or GMSH chose the size randomly ?
Because it seems that the size is not chosen according to the index, or to the creation's order or to the mesh size

I also see this problem in 3D.

You can find the geo file below.

Thank you for your answer,

Kind regards,

Benoît CURVERS
Laser Systems & Solutions of Europe (LASSE)
SCREEN Semiconductor Solutions Co. Ltd
Taïwan Cell : +886 (0)965-875-974 or 7629511
Email : benoit.curvers at screen-lasse.com<mailto:benoit.curvers at screen-lasse.com>

SetFactory("OpenCASCADE");
// TopFin
p10=newp; Point(p10) = {-2.5,60,0, 0.5};
p11=newp; Point(p11) = {-2.5,22.5,0, 0.5};
p12=newp; Point(p12) = {-1.75,20.5,0, 0.5};
p13=newp; Point(p13) = {-1,20,0, 0.5};
p14=newp; Point(p14) = {1,20,0, 0.5};
p15=newp; Point(p15) = {1.75,20.5,0, 0.5};
p16=newp; Point(p16) = {2.5,22.5,0, 0.5};
p17=newp; Point(p17) = {2.5,60,0, 0.5};
l10=newl; Line(l10) = {p10,p11};
l11=newl; Line(l11) = {p11,p12};
l12=newl; Line(l12) = {p12,p13};
l13=newl; Line(l13) = {p13,p14};
l14=newl; Line(l14) = {p14,p15};
l15=newl; Line(l15) = {p15,p16};
l16=newl; Line(l16) = {p16,p17};
l17=newl; Line(l17) = {p17,p10};
ll10 = newll; Line Loop(ll10) = {l10,l11,l12,l13,l14,l15,l16,l17};
Plane Surface(1) = {ll10};
Physical Surface(1)={1};
// Bot1
p20=newp; Point(p20) = {-15.235,120,0, 0.5};
p21=newp; Point(p21) = {-13,119.3,0, 0.5};
p22=newp; Point(p22) = {-12,119,0, 0.5};
p23=newp; Point(p23) = {-10.9,118.1,0, 0.5};
p24=newp; Point(p24) = {-10,117,0, 0.5};
p25=newp; Point(p25) = {-9.7,116,0, 0.5};
p26=newp; Point(p26) = {-9.235,114,0, 0.5};
p27=newp; Point(p27) = {-10,120,0, 0.5};
l20=newl; Line(l20) = {p20,p21};
l21=newl; Line(l21) = {p21,p22};
l22=newl; Line(l22) = {p22,p23};
l23=newl; Line(l23) = {p23,p24};
l24=newl; Line(l24) = {p24,p25};
l25=newl; Line(l25) = {p25,p26};
l26=newl; Line(l26) = {p26,p27};
l27=newl; Line(l27) = {p27,p20};
ll20 = newll; Line Loop(ll20) = {l20,l21,l22,l23,l24,l25,l26,l27};
Plane Surface(2) = {ll20};
Physical Surface(2)={2};
// Bot2
p40=newp; Point(p40) = {10,120,0, 0.5};
p41=newp; Point(p41) = {9.235,114,0, 0.5};
p42=newp; Point(p42) = {9.7,116,0, 0.5};
p43=newp; Point(p43) = {10,117,0, 0.5};
p44=newp; Point(p44) = {10.9,118.1,0, 0.5};
p45=newp; Point(p45) = {12,119,0, 0.5};
p46=newp; Point(p46) = {13,119.3,0, 0.5};
p47=newp; Point(p47) = {15.235,120,0, 0.5};
l40=newl; Line(l40) = {p40,p41};
l41=newl; Line(l41) = {p41,p42};
l42=newl; Line(l42) = {p42,p43};
l43=newl; Line(l43) = {p43,p44};
l44=newl; Line(l44) = {p44,p45};
l45=newl; Line(l45) = {p45,p46};
l46=newl; Line(l46) = {p46,p47};
l47=newl; Line(l47) = {p47,p40};
ll40 = newll; Line Loop(ll40) = {l40,l41,l42,l43,l44,l45,l46,l47};
Plane Surface(4) = {ll40};
Physical Surface(4)={4};
// BotFin
p60=newp; Point(p60) = {-10,120,0, 0.5};
p61=newp; Point(p61) = {-9.235,114,0, 0.5};
p62=newp; Point(p62) = {-2.5,60,0, 0.5};
p63=newp; Point(p63) = {2.5,60,0, 0.5};
p64=newp; Point(p64) = {9.235,114,0, 0.5};
p65=newp; Point(p65) = {10,120,0, 0.5};
l60=newl; Line(l60) = {p60,p61};
l61=newl; Line(l61) = {p61,p62};
l62=newl; Line(l62) = {p62,p63};
l63=newl; Line(l63) = {p63,p64};
l64=newl; Line(l64) = {p64,p65};
l65=newl; Line(l65) = {p65,p60};
ll60 = newll; Line Loop(ll60) = {l60,l61,l62,l63,l64,l65};
Plane Surface(6) = {ll60};
Physical Surface(6)={6};
// Substrate
p80=newp; Point(p80) = {-67.5,120,0, 1};
p81=newp; Point(p81) = {-15.235,120,0, 1};
p82=newp; Point(p82) = {-10,120,0, 1};
p83=newp; Point(p83) = {10,120,0, 1};
p84=newp; Point(p84) = {15.235,120,0, 1};
p85=newp; Point(p85) = {67.5,120,0, 1};
p86=newp; Point(p86) = {67.5,140,0, 1};
p87=newp; Point(p87) = {-67.5,140,0, 1};
l80=newl; Line(l80) = {p80,p81};
l81=newl; Line(l81) = {p81,p82};
l82=newl; Line(l82) = {p82,p83};
l83=newl; Line(l83) = {p83,p84};
l84=newl; Line(l84) = {p84,p85};
l85=newl; Line(l85) = {p85,p86};
l86=newl; Line(l86) = {p86,p87};
l87=newl; Line(l87) = {p87,p80};
ll80 = newll; Line Loop(ll80) = {l80,l81,l82,l83,l84,l85,l86,l87};
Plane Surface(8) = {ll80};
Physical Surface(8)={8};
// Ins
p90=newp; Point(p90) = {-3.5,60,0, 1};
p91=newp; Point(p91) = {-3.5,22.5,0, 1};
p92=newp; Point(p92) = {-2.75,20,0, 1};
p93=newp; Point(p93) = {-1,19,0, 1};
p94=newp; Point(p94) = {1,19,0, 1};
p95=newp; Point(p95) = {2.75,20,0, 1};
p96=newp; Point(p96) = {3.5,22.5,0, 1};
p97=newp; Point(p97) = {3.5,60,0, 1};
p98=newp; Point(p98) = {2.5,60,0, 1};
p99=newp; Point(p99) = {2.5,22.5,0, 1};
p910=newp; Point(p910) = {1.75,20.5,0, 1};
p911=newp; Point(p911) = {1,20,0, 1};
p912=newp; Point(p912) = {-1,20,0, 1};
p913=newp; Point(p913) = {-1.75,20.5,0, 1};
p914=newp; Point(p914) = {-2.5,22.5,0, 1};
p915=newp; Point(p915) = {-2.5,60,0, 1};
l90=newl; Line(l90) = {p90,p91};
l91=newl; Line(l91) = {p91,p92};
l92=newl; Line(l92) = {p92,p93};
l93=newl; Line(l93) = {p93,p94};
l94=newl; Line(l94) = {p94,p95};
l95=newl; Line(l95) = {p95,p96};
l96=newl; Line(l96) = {p96,p97};
l97=newl; Line(l97) = {p97,p98};
l98=newl; Line(l98) = {p98,p99};
l99=newl; Line(l99) = {p99,p910};
l910=newl; Line(l910) = {p910,p911};
l911=newl; Line(l911) = {p911,p912};
l912=newl; Line(l912) = {p912,p913};
l913=newl; Line(l913) = {p913,p914};
l914=newl; Line(l914) = {p914,p915};
l915=newl; Line(l915) = {p915,p90};
ll90 = newll; Line Loop(ll90) = {l90,l91,l92,l93,l94,l95,l96,l97,l98,l99,l910,l911,l912,l913,l914,l915};
Plane Surface(9) = {ll90};
Physical Surface(9)={9};
// Ox1
p30=newp; Point(p30) = {-67.5,120,0, 10};
p31=newp; Point(p31) = {-67.5,60,0, 10};
p32=newp; Point(p32) = {-3.5,60,0, 10};
p33=newp; Point(p33) = {-2.5,60,0, 10};
p34=newp; Point(p34) = {-9.235,114,0, 10};
p35=newp; Point(p35) = {-9.7,116,0, 10};
p36=newp; Point(p36) = {-10,117,0, 10};
p37=newp; Point(p37) = {-10.9,118.1,0, 10};
p38=newp; Point(p38) = {-12,119,0, 10};
p39=newp; Point(p39) = {-13,119.3,0, 10};
p310=newp; Point(p310) = {-15.235,120,0, 10};
l30=newl; Line(l30) = {p30,p31};
l31=newl; Line(l31) = {p31,p32};
l32=newl; Line(l32) = {p32,p33};
l33=newl; Line(l33) = {p33,p34};
l34=newl; Line(l34) = {p34,p35};
l35=newl; Line(l35) = {p35,p36};
l36=newl; Line(l36) = {p36,p37};
l37=newl; Line(l37) = {p37,p38};
l38=newl; Line(l38) = {p38,p39};
l39=newl; Line(l39) = {p39,p310};
l310=newl; Line(l310) = {p310,p30};
ll30 = newll; Line Loop(ll30) = {l30,l31,l32,l33,l34,l35,l36,l37,l38,l39,l310};
Plane Surface(3) = {ll30};
Physical Surface(3)={3};
// Ox2
p50=newp; Point(p50) = {15.235,120,0, 10};
p51=newp; Point(p51) = {13,119.3,0, 10};
p52=newp; Point(p52) = {12,119,0, 10};
p53=newp; Point(p53) = {10.9,118.1,0, 10};
p54=newp; Point(p54) = {10,117,0, 10};
p55=newp; Point(p55) = {9.7,116,0, 10};
p56=newp; Point(p56) = {9.235,114,0, 10};
p57=newp; Point(p57) = {2.5,60,0, 10};
p58=newp; Point(p58) = {3.5,60,0, 10};
p59=newp; Point(p59) = {67.5,60,0, 10};
p510=newp; Point(p510) = {67.5,120,0, 10};
l50=newl; Line(l50) = {p50,p51};
l51=newl; Line(l51) = {p51,p52};
l52=newl; Line(l52) = {p52,p53};
l53=newl; Line(l53) = {p53,p54};
l54=newl; Line(l54) = {p54,p55};
l55=newl; Line(l55) = {p55,p56};
l56=newl; Line(l56) = {p56,p57};
l57=newl; Line(l57) = {p57,p58};
l58=newl; Line(l58) = {p58,p59};
l59=newl; Line(l59) = {p59,p510};
l510=newl; Line(l510) = {p510,p50};
ll50 = newll; Line Loop(ll50) = {l50,l51,l52,l53,l54,l55,l56,l57,l58,l59,l510};
Plane Surface(5) = {ll50};
Physical Surface(5)={5};
// Cap
p70=newp; Point(p70) = {-67.5,60,0, 10};
p71=newp; Point(p71) = {-67.5,10,0, 10};
p72=newp; Point(p72) = {67.5,10,0, 10};
p73=newp; Point(p73) = {67.5,60,0, 10};
p74=newp; Point(p74) = {3.5,60,0, 10};
p75=newp; Point(p75) = {3.5,22.5,0, 10};
p76=newp; Point(p76) = {2.75,20,0, 10};
p77=newp; Point(p77) = {1,19,0, 10};
p78=newp; Point(p78) = {-1,19,0, 10};
p79=newp; Point(p79) = {-2.75,20,0, 10};
p710=newp; Point(p710) = {-3.5,22.5,0, 10};
p711=newp; Point(p711) = {-3.5,60,0, 10};
l70=newl; Line(l70) = {p70,p71};
l71=newl; Line(l71) = {p71,p72};
l72=newl; Line(l72) = {p72,p73};
l73=newl; Line(l73) = {p73,p74};
l74=newl; Line(l74) = {p74,p75};
l75=newl; Line(l75) = {p75,p76};
l76=newl; Line(l76) = {p76,p77};
l77=newl; Line(l77) = {p77,p78};
l78=newl; Line(l78) = {p78,p79};
l79=newl; Line(l79) = {p79,p710};
l710=newl; Line(l710) = {p710,p711};
l711=newl; Line(l711) = {p711,p70};
ll70 = newll; Line Loop(ll70) = {l70,l71,l72,l73,l74,l75,l76,l77,l78,l79,l710,l711};
Plane Surface(7) = {ll70};
Physical Surface(7)={7};
// AddedSubstrate
p100=newp; Point(p100) = {-67.5,140,0, 5};
p101=newp; Point(p101) = {67.5,140,0, 5};
p102=newp; Point(p102) = {67.5,2140,0, 5};
p103=newp; Point(p103) = {-67.5,2140,0, 5};
l100=newl; Line(l100) = {p100,p101};
l101=newl; Line(l101) = {p101,p102};
l102=newl; Line(l102) = {p102,p103};
l103=newl; Line(l103) = {p103,p100};
ll100 = newll; Line Loop(ll100) = {l100,l101,l102,l103};
Plane Surface(10) = {ll100};
Physical Surface(10)={10};
// AddedSubstrate
p110=newp; Point(p110) = {-67.5,2140,0, 10};
p111=newp; Point(p111) = {67.5,2140,0, 10};
p112=newp; Point(p112) = {67.5,3140,0, 10};
p113=newp; Point(p113) = {-67.5,3140,0, 10};
l110=newl; Line(l110) = {p110,p111};
l111=newl; Line(l111) = {p111,p112};
l112=newl; Line(l112) = {p112,p113};
l113=newl; Line(l113) = {p113,p110};
ll110 = newll; Line Loop(ll110) = {l110,l111,l112,l113};
Plane Surface(11) = {ll110};
Physical Surface(11)={11};
// AddedSubstrate
p120=newp; Point(p120) = {-67.5,3140,0, 20};
p121=newp; Point(p121) = {67.5,3140,0, 20};
p122=newp; Point(p122) = {67.5,5140,0, 20};
p123=newp; Point(p123) = {-67.5,5140,0, 20};
l120=newl; Line(l120) = {p120,p121};
l121=newl; Line(l121) = {p121,p122};
l122=newl; Line(l122) = {p122,p123};
l123=newl; Line(l123) = {p123,p120};
ll120 = newll; Line Loop(ll120) = {l120,l121,l122,l123};
Plane Surface(12) = {ll120};
Physical Surface(12)={12};
pAir1=newp; Point(pAir1) = {-67.5,-190,0, 30};
pAir2=newp; Point(pAir2) = {67.5,-190,0, 30};
pAir3=newp; Point(pAir3) = {67.5,5140,0, 30};
pAir4=newp; Point(pAir4) = {-67.5,5140,0, 30};
lAir1=newl; Line(lAir1) = {pAir1,pAir2};
lAir2=newl; Line(lAir2) = {pAir2,pAir3};
lAir3=newl; Line(lAir3) = {pAir3,pAir4};
lAir4=newl; Line(lAir4) = {pAir4,pAir1};
llAir = newll; Line Loop(llAir) = {lAir1,lAir2,lAir3,lAir4};
rsAir = news ; Plane Surface(rsAir) = {llAir};
v() = BooleanFragments{ Surface{1:12}; Delete; }{ Surface{rsAir}; Delete; };
Physical Surface(0)={13};
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20180712/c64ccd7a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 321016 bytes
Desc: image002.png
URL: <http://onelab.info/pipermail/gmsh/attachments/20180712/c64ccd7a/attachment-0001.png>


More information about the gmsh mailing list