[Gmsh] pointsources and Nodes and Elements lists

jordi poblet jordi.poblet at gmail.com
Mon Oct 11 14:10:14 CEST 2010


Hello Bart,

I also need so often points in an specific position of the mesh. What I so
is to construct the mesh by parts in order to be sure that there will be a
node in the desired position (I copy an example for a single rectangle with
a node in X=0.49; Y = 0.48).
I suppose that this is not the answer that you were expecting... sometimes
it is hard to build the meshes. In any case, I would also be interested in a
better procedure to specify a priori the positions of some nodes of the
mesh. But I guess that this is not natural for most of the meshing
algorithms.

Best regards,

JORDI

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


lc = 0.13 ;

//Coords
x0 = 0.0 ;
y0 = 0.0 ;
xs = 0.49 ; //X Point source
ys = 0.48 ;  //Y Point source
x1 = 2.0 ;
y1 = 3.0 ;

//Points:
Point(1) = {x0, y0, 0, lc};
Point(2) = {xs, y0, 0, lc} ;
Point(3) = {x1, y0, 0, lc} ;
Point(4) = {x0, ys, 0, lc} ;
Point(5) = {xs, ys, 0, lc};
Point(6) = {x1, ys, 0, lc} ;
Point(7) = {x0, y1, 0, lc} ;
Point(8) = {xs, y1, 0, lc} ;
Point(9) = {x1, y1, 0, lc};

//Lines:
Line(1) = {1,2} ;
Line(2) = {2,3} ;

Line(3) = {4,5} ;
Line(4) = {5,6} ;

Line(5) = {7,8} ;
Line(6) = {8,9} ;

Line(7) = {1,4} ;
Line(8) = {4,7} ;

Line(9) = {2,5} ;
Line(10) = {5,8} ;

Line(11) = {3,6} ;
Line(12) = {6,9} ;

//Loops:
Line Loop(10) = {1,9,-3,-7} ;
Line Loop(11) = {2,11,-4,-9} ;
Line Loop(12) = {3,10,-5,-8} ;
Line Loop(13) = {4,12,-6,-10} ;

// Surfaces
Plane Surface(10) = {10} ;
Plane Surface(11) = {11} ;
Plane Surface(12) = {12} ;
Plane Surface(13) = {13} ;

//Physical properties (final physical surface):
    Physical Surface(100) = {10,11,12,13} ;


//-------------------------------------------------------------------------------------------------------------------------------------



On Mon, Oct 11, 2010 at 10:40 AM, Bart Vandewoestyne <
Bart.Vandewoestyne at telenet.be> wrote:

> Hello list,
>
> For an application I'm working on, we use gmsh as our mesher, we parse the
> .msh
> file and then run our solver in Matlab.  From the .msh file, we extract the
> X
> and Y coordinates of the nodes (from $Nodes) in the mesh.  We also have a
> matrix representing the triangular elements in the mesh (extracted from
> $Elements).
>
> We would like our users to be able to specify pointsources in our
> computational
> domain.  The location of the pointsource is an arbitrary point that a user
> specifies and has nothing to do with the mesh.  In gmsh, we currently
> specify
> it as follows:
>
>
> ----------------------- small example ------------------
> lc = 0.6;
>
> // Corner points.
> Point(1) = {0, 0, 0, lc};
> Point(2) = {0, 1, 0, lc};
> Point(3) = {1, 1, 0, lc};
> Point(4) = {1, 0, 0, lc};
>
> // Point sources.
> Point(5) = {0.6, 0.6, 0, lc};
> Point(6) = {0.7, 0.7, 0, lc};
>
> 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};
>
> Physical Point("Pointsource") = {5, 6};
> Physical Surface("My Surface") = {6};
> ----------------------- end small example ------------------
>
>
> And now here is the problem: if I mesh this .geo file with
>
>  gmsh -2 pointsource_test.geo
>
> then this is the result:
>
>
> ------------------ small example mesh ---------------------
>
> $MeshFormat
> 2.1 0 8
> $EndMeshFormat
> $PhysicalNames
> 2
> 0 1 "Pointsource"
> 2 2 "My Surface"
> $EndPhysicalNames
> $Nodes
> 7
> 1 0 0 0
> 2 0 1 0
> 3 1 1 0
> 4 1 0 0
> 5 0.6 0.6 0
> 6 0.7 0.7 0
> 7 0.5 0.5 0
> $EndNodes
> $Elements
> 6
> 1 15 3 1 5 0 5
> 2 15 3 1 6 0 6
> 3 2 3 2 6 0 1 7 4
> 4 2 3 2 6 0 3 7 2
> 5 2 3 2 6 0 7 3 4
> 6 2 3 2 6 0 7 1 2
> $EndElements
>
> ----------------------- end small example mesh ---------
>
>
> The 'problem' is that the coordinates of the pointsource appear in the list
> of nodal coordinates.  This has two consequences:
>
> 1) Our solver cannot have the pointsource coordinates in its list of x and
> y
>   coordinates.  It should only have the x and y coordinates of the *real*
>   nodes in our mesh.
>
> 2) Using the tags in the $Elements section, i can of course detect which
>   nodes are pointsources, and remove them from the $Nodes section in my
>   Matlab parser, but removing nodes from the $Nodes section also means that
>   a lot of indices in the $Elements section need to change!  For example,
>   if I remove nodes 5 and 6, then every 7 in the $Elements section has to
> be
>   replaced by a 5 (because node 5 and 6 were removed, and node 7 has become
>   node 5).
>
>
> Is there a way to circumvent this troublesome bookkeeping?  Maybe somehow
> prevent gmsh from putting our pointsources in the list of nodes, and
> returning
> the coordinates of our pointsources in another section somehow? (I'm just
> guessing here...)
>
> Kind regards,
> Bart
>
> --
>        "Share what you know.  Learn what you don't."
>
> _______________________________________________
> gmsh mailing list
> gmsh at geuz.org
> http://www.geuz.org/mailman/listinfo/gmsh
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20101011/d329a65b/attachment.html>