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).
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 : [email protected]
<mailto:[email protected]>
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};
This body part will be downloaded on demand.