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

Reply via email to