Hi Vincent,

I think you can simply add the statement “Mesh.CharacteristicLengthFromBoundary 
= 0 ;” somewhere in the script of your first model to solve the issue. This 
will force Gmsh not to use the characteristic length of the surface mesh when 
computing the volume mesh, but instead only rely on the fields you provide. Let 
me know if it worked,

Sincerely Yours,

Guillaume DILASSER
Doctorant SACM / LEAS
CEA - Centre de Saclay - Bât.123 - PC 319c
91191 Gif sur Yvette Cedex - France -

[email protected]<mailto:[email protected]>


De : gmsh [mailto:[email protected]] De la part de 
Vincent HUBER
Envoyé : mercredi 14 juin 2017 15:26
À : [email protected]
Objet : [Gmsh] Fields and Volume


Hello everyone,

I work with Gmsh 3.0.2

I have a cylinder inside a cube.
I want to refine the boundary of the cylinder.

To do so, I use a combination of MathEval fields.
If I declare the cylinder as a volume, it is meshed with very small elements.
If I do not declare the cylinder as a volume, only the region near the 
interface is correctly meshed.

How can I have both :
·         the cylinder as a volume
·         the reffinement near the interface ?

With the cylinder as a volume

h=0.1;

x=1;

y=1;

z=1;

ratio = 3.;

radius=Sqrt(2.*(x/ratio)^2);

distance=h;

p0 = newp; Point(p0) = {0,0,0,50*h};

pc = newp; Point(pc) = {0,0,-z,h};

p1 = newp; Point(p1) = {-x,-y,-z,h};

p2 = newp; Point(p2) = {-x, y,-z,h};

p3 = newp; Point(p3) = { x, y,-z,h};

p4 = newp; Point(p4) = { x,-y,-z,h};



r1 = newp; Point(r1) = {      0,  radius, -z, h};

r2 = newp; Point(r2) = { radius,       0, -z, h};

r3 = newp; Point(r3) = {      0, -radius, -z, h};

r4 = newp; Point(r4) = {-radius,       0, -z, h};



l1 = newl; Line(l1) = {p1,p2};

l2 = newl; Line(l2) = {p2,p3};

l3 = newl; Line(l3) = {p3,p4};

l4 = newl; Line(l4) = {p4,p1};



c1 = newl; Circle(c1) = {r1,pc,r2};

c2 = newl; Circle(c2) = {r2,pc,r3};

c3 = newl; Circle(c3) = {r3,pc,r4};

c4 = newl; Circle(c4) = {r4,pc,r1};



outer = newll; Line Loop(outer) = {l1,l2,l3,l4};

inner = newll; Line Loop(inner) = {c1,c2,c3,c4};

s1 = news; Plane Surface(s1) = {outer,-inner};

s2 = news; Plane Surface(s2) = {inner};



extruded[] = Extrude{0,0,2.*z} {

Surface{s1,s2};

};



Physical Point("center") = {p0};



Physical Volume("Omega1") = {extruded[1]};

Physical Volume("Omega2") = {extruded[11]};



Field[1] = MathEval;

Field[1].F = Sprintf("(Fabs(%g-Sqrt(x*x+y*y)))+%g/5",radius,h);

Field[2] = MathEval;

Field[2].F = "0.1";

Field[3] = Min;

Field[3].FieldsList = {1,2};

Background Field = 3;

With the reffinement I target

h=0.1;

x=1;

y=1;

z=1;

ratio = 3.;

radius=Sqrt(2.*(x/ratio)^2);

distance=h;

p0 = newp; Point(p0) = {0,0,0,50*h};

pc = newp; Point(pc) = {0,0,-z,h};

p1 = newp; Point(p1) = {-x,-y,-z,h};

p2 = newp; Point(p2) = {-x, y,-z,h};

p3 = newp; Point(p3) = { x, y,-z,h};

p4 = newp; Point(p4) = { x,-y,-z,h};



r1 = newp; Point(r1) = {      0,  radius, -z, h};

r2 = newp; Point(r2) = { radius,       0, -z, h};

r3 = newp; Point(r3) = {      0, -radius, -z, h};

r4 = newp; Point(r4) = {-radius,       0, -z, h};



l1 = newl; Line(l1) = {p1,p2};

l2 = newl; Line(l2) = {p2,p3};

l3 = newl; Line(l3) = {p3,p4};

l4 = newl; Line(l4) = {p4,p1};



c1 = newl; Circle(c1) = {r1,pc,r2};

c2 = newl; Circle(c2) = {r2,pc,r3};

c3 = newl; Circle(c3) = {r3,pc,r4};

c4 = newl; Circle(c4) = {r4,pc,r1};



outer = newll; Line Loop(outer) = {l1,l2,l3,l4};

inner = newll; Line Loop(inner) = {c1,c2,c3,c4};

s1 = news; Plane Surface(s1) = {outer};

//s2 = news; Plane Surface(s2) = {inner};



extruded[] = Extrude{0,0,2.*z} {

Surface{s1};

};



Physical Point("center") = {p0};



Physical Volume("Omega1") = {extruded[1]};

//Physical Volume("Omega2") = {extruded[11]};



Field[1] = MathEval;

Field[1].F = Sprintf("(Fabs(%g-Sqrt(x*x+y*y)))+%g/5",radius,h);

Field[2] = MathEval;

Field[2].F = "0.1";

Field[3] = Min;

Field[3].FieldsList = {1,2};

Background Field = 3;

All the best,
​
--
Vincent HUBER
_______________________________________________
gmsh mailing list
[email protected]
http://onelab.info/mailman/listinfo/gmsh

Reply via email to