[Gmsh] Question about mesh refinement with stating of characteristic lengths
Moritz Nadler
moritz_nadler at gmx.de
Tue Jul 22 15:00:28 CEST 2008
Good Day Mr Geuzaine,
I tried to rebuild the example with slightly different values but I failed. I
looked at it a over an hour but I simple cannot find the error.
The example you sent me works fine when compile with the command:
gmsh -rand 1.e-8 example.geo -2
But this example:
//begin "my example"
lowPr = 0.1;
Point(1) = {0,0,0,lowPr};
Point(2) = {1,0,0,lowPr};
Point(3) = {1,1,0,lowPr};
Point(4) = {0,1,0,lowPr};
Point(5) = {0.5,0.5,0,0};
Line(1) = {1,2};
Line(2) = {2,3};
Line(3) = {3,4};
Line(4) = {4,1};
Line Loop(5) = {1,2,3,4};
Plane Surface(6) = {5};
Field[1] = Attractor;
Field[1].NodesList = {5};
Field[2] = Threshold;
Field[2].IField = 1;
Field[2].LcMin = 0.0001;
Field[2].LcMax = lowPr;
Field[2].DistMin = 0.005;
Field[2].DistMax = 0.01;
Background Field = 2;
//end "my example"
compiled with the same command does not.
There is no higher mesh dentistry in the middle of the mesh as one would expect
form the code.
kind regards
Moritz Nadler
Christophe Geuzaine wrote:
> It does... The threshold field works like this:
>
> LcMax - /------------------
> /
> /
> /
> LcMin -o----------------/
> | | |
> Attractor DistMin DistMax
>
> At the moment the variation between LcMin and LcMax is always linear. It
> might be nice to code other variations (power, log, ...): have a look at
> Mesh/Field.cpp if you want to do that.
>
> Here's an example:
>
> // linear grading of charact lengths, from lc1 (near the attractor
> // points) to lc2 (at a distance >= r away from the attractor points)
>
> lc1 = 0.001;
> lc2 = 0.1;
> r = 0.5;
>
> Point(1) = {0,0,0,lc2};
> Point(2) = {1,0,0,lc2};
> Point(3) = {1,1,0,lc2};
> Point(4) = {0,1,0,lc2};
> Line(1) = {3,2};
> Line(2) = {2,1};
> Line(3) = {1,4};
> Line(4) = {4,3};
> Line Loop(5) = {1,2,3,4};
> Plane Surface(6) = {5};
>
> Point(10) = {0.3,0.5,0};
> Point(11) = {0.35,0.5,0};
>
> Field[1] = Attractor;
> Field[1].NodesList = {10,11};
>
> Field[2] = Threshold;
> Field[2].IField = 1;
> Field[2].LcMin = lc1;
> Field[2].LcMax = lc2;
> Field[2].DistMin = lc1;
> Field[2].DistMax = r;
>
> Background Field = 2;