Hi Benoit,

I am not a gmsh developer.

A recommendation I received in the past with the background mesh was to use this option in the geo file:

Mesh.CharacteristicLengthExtendFromBoundary=0;

The background mesh uses the pos format.  An example which is here:

https://github.com/devsim/devsim_bjt_example/blob/master/simdir/bjt_bgmesh.pos

To make the scripting a lot easier, I recommend this project

https://github.com/nschloe/pygmsh

to generate your .geo file from python scripts.

Regards,

Juan

On 7/17/18 8:41 AM, Benoit CURVERS wrote:
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

Reply via email to