[Gmsh] Fields and Volume

Vincent HUBER vincent.huber at gmail.com
Thu Jun 15 15:49:11 CEST 2017


Hello Guillaume,

Thank you for your answer.
I'm a bit confused : I do not find this option in the doc
http://gmsh.info/doc/texinfo/gmsh.html
Moreover, Gmsh complains when loading the geo file.

Where have you seen this option ?

All the best,

VH.

2017-06-15 15:34 GMT+02:00 DILASSER Guillaume <Guillaume.DILASSER at cea.fr>:

> 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 -
>
>
>
> guillaume.dilasser at cea.fr
>
>
>
>
>
> *De :* gmsh [mailto:gmsh-bounces at ace20.montefiore.ulg.ac.be] *De la part
> de* Vincent HUBER
> *Envoyé :* mercredi 14 juin 2017 15:26
> *À :* gmsh at onelab.info
> *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
>



-- 
Vincent HUBER
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20170615/d52e0733/attachment-0001.html>


More information about the gmsh mailing list