Hello Juan, Thank you very much for your answer. I already tried the solution you gave me. I tried to add a specific box in order to refine the mesh in specific part but unfortunately, I did not obtain the result I wanted As a result, this solution is not suitable for my problem (in 2D and 3D case)
So, I just would like to know : how does GMSH keep the mesh size on the points after a Boolean operation ? Does GMSH chose the size randomly ? Does GMSH chose the size thank to the points' index ? Thank you very much 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] -----Message d'origine----- De : gmsh <[email protected]> De la part de Juan E. Sanchez Envoyé : vendredi 13 juillet 2018 17:51 À : [email protected] Objet : Re: [Gmsh] Problem with the Boolean Operation Hi Benoit, I recommend a background field. Here is a project where I did some refinement (based on electric field) for a semiconductor simulation. https://github.com/devsim/devsim_bjt_example All the simulation files are there, as well as a book chapter in pdf form. At that time of the work, the boolean operations were not available in gmsh. Regards, Juan On 7/12/18 9:56 AM, Benoit CURVERS wrote: > 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. > _______________________________________________ gmsh mailing list [email protected] http://onelab.info/mailman/listinfo/gmsh _______________________________________________ gmsh mailing list [email protected] http://onelab.info/mailman/listinfo/gmsh
