[Gmsh] dilate to flatten a mesh

Christophe Geuzaine cgeuzaine at uliege.be
Tue Jun 4 17:06:10 CEST 2019


There are no facilities to modify the mesh in this way in a .geo file. But you can do it quite easily with the Gmsh API.

Here's a small example, in python:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: flatten.py
Type: text/x-python-script
Size: 1152 bytes
Desc: not available
URL: <http://onelab.info/pipermail/gmsh/attachments/20190604/1b42ce61/attachment.py>
-------------- next part --------------


Run 'python flatten.py your_mesh.msh'.

PS: note that the API for setting the mesh will change, as the current functions can lead to invalid meshes if used incorrectly (as they delete nodes/elements before adding new ones). The new functions will separate the deletion of the mesh from the addition of new nodes/elements.

Christophe


> On 4 Jun 2019, at 14:37, Felix Salazar <felix.a.salazar at gmail.com> wrote:
> 
> I agree with Nathan's advice.
> 
> The source of your issue might be your geometry. If you created the surface using gmsh, you can provide the .geo file. If you imported the surface from CAD, there might be some spurious geometrical vertex that are forced to belong to the triangulation, hence giving you non-zero Z components. If you specify a Physical Surface on your .geo, it might help.
> 
> The solution of looping on your mesh file via Python (or your script language of choice) to substitute all z by zeros is also valid.
> 
> Take care and good luck,
> 
> F
> 
> On Mon, Jun 3, 2019, 4:17 PM Nathan J. Neeteson <nneeteson at rglinc.com> wrote:
> Hi Ricardo,
> 
> If the issue is simply that you have some vertices with non-zero z-components, and you want them to all be zero, and if the mesh file is ASCII format, could you just write a script (say, in python) to automatically loop through the $Nodes section of the file and replace the z component of every vertex position with "0.0" in a new file? I don't think any derived geometric data (such as cell areas or volumes) is in a *.mesh file, so naively I would think this should work, and the script in question would probably be no more than a few dozen lines.
> 
> Thanks,
> 
> Nathan Neeteson, M.Sc., E.I.T.
> Flow Control Research Engineer
> RGL Reservoir Management Inc.
> Corporate Head Office
> P 780.851.8243 | C 613.929.6283
> nneeteson at rglinc.com | rglinc.com
> API Q1? and ISO 9001:2015 certified facilities.
> 
> -----Original Message-----
> From: Ricardo Ruiz Baier [mailto:ricardo.ruiz.baier at gmail.com]
> Sent: June 3, 2019 11:32 AM
> To: Nathan J. Neeteson <nneeteson at rglinc.com>; Ricardo Ruiz Baier <ruizbaier at maths.ox.ac.uk>
> Cc: gmsh at onelab.info
> Subject: Re: [Gmsh] dilate to flatten a mesh
> 
> Dear Nathan,
> 
> thank you very much. This indeed resolves the syntax problem. However in my case it does not do anything since transformations can only be applied to the geometry, and in this case I want to apply the dilation to the mesh. I'll keep looking for other solutions.
> 
> All the best,
> 
> Ricardo
> 
> > Hi Ricardo,
> >
> > The syntax for anisotropic dilation is as follows:
> >
> > Dilate { { expression-list }, { expression, expression, expression } }
> > { transform-list }
> >
> > The first expression-list is the homethetic center of the dilation.
> >
> > The set of three expressions are the X,Y,Z scaling factors of the dilation.
> >
> > The transform-list is the entities to be acted on.
> >
> > I think your syntax should be:
> >
> > Dilate{ {0,0,0}, {1,1,0} }{ Point{all_points[]}; }
> >
> > Assuming you want all points on the x-y plane at z=0.
> >
> > Nathan Neeteson, M.Sc., E.I.T.
> > Flow Control Research Engineer
> > RGL Reservoir Management Inc.
> > Corporate Head Office
> > P 780.851.8243 | C 613.929.6283
> > nneeteson at rglinc.com | rglinc.com
> > API Q1(tm) and ISO 9001:2015 certified facilities.
> >
> > -----Original Message-----
> > From: gmsh [mailto:gmsh-bounces at ace20.montefiore.ulg.ac.be] On Behalf
> > Of Ricardo Ruiz Baier
> > Sent: June 3, 2019 5:51 AM
> > To: gmsh at onelab.info
> > Subject: [Gmsh] dilate to flatten a mesh
> >
> > Dear all,
> >
> > I have a .mesh triangulation which is supposed to be 2D. However it has some vertices with (spurious) crazy large z-components. How can I flatten these from e.g. a geo file?
> >
> > I've tried with "Dilate" in the manner mentioned below, but it does not work (the compilation complains about the syntax and I have not found any examples).
> >
> > Merge "testMesh.mesh";
> >
> > all_points[] = Point '*';
> >
> > Dilate { { all_points[] }, { 1, 1, 0} } {Surface(1) };
> >
> > Thank you so much!
> >
> > Kind regards,
> >
> >
> >
> > --
> > Ricardo Ruiz Baier
> > Mathematical Institute
> > University of Oxford
> > people.maths.ox.ac.uk/ruizbaier
> >
> > _______________________________________________
> > gmsh mailing list
> > gmsh at onelab.info
> > https://can01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fonela
> > b.info%2Fmailman%2Flistinfo%2Fgmsh&data=02%7C01%7Cnneeteson%40rgli
> > nc.com%7C47bb41a5f6d1431e0c9d08d6e84967cf%7C1f2819e2b6f842cd9d720c61c1
> > a98107%7C0%7C0%7C636951799311766160&sdata=UWGz6UOQI3HwjrCcF032KsJo
> > TPbQSNtv5R7Naoe6aLY%3D&reserved=0
> > Email disclaimer located at
> > https://can01.safelinks.protection.outlook.com/?url=http%3A%2F%2Frglin
> > c.com%2Fdisclaimer&data=02%7C01%7Cnneeteson%40rglinc.com%7C47bb41a
> > 5f6d1431e0c9d08d6e84967cf%7C1f2819e2b6f842cd9d720c61c1a98107%7C0%7C1%7
> > C636951799311766160&sdata=0UeeOq8ZUzxetIh20vxRSt4AxnqJLVbenaD9tcmO
> > sD4%3D&reserved=0
> 
> 
> --
> Ricardo Ruiz Baier
> Mathematical Institute
> University of Oxford
> people.maths.ox.ac.uk/ruizbaier
> Email disclaimer located at http://rglinc.com/disclaimer
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh

? 
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science 
http://www.montefiore.ulg.ac.be/~geuzaine





More information about the gmsh mailing list