2011/2/16 Sajzew Gora <[email protected]>: > Hello deat gmsh team > > i have a quastion. I build a geomtry and mesh with gmsh but I have no idea > how can I calculate a volume of the whole mesh. I hope you can help me.
This is an interesting one. I can tell you how to compute the volume, but it is not as satisfactory an answer as I would like, and in does raise a couple of questions. Say I build a 2x3x5 cuboid, with volume.geo, as attached. This should have a volume of 30. Then I mesh it with "gmsh -3 volume.geo" to produce volume.msh, and load that into Gmsh interactively with "gmsh volume.msh". Then, via the GUI do . Tools/Plugins: - New view - MathEval (Expression0 = 1) - Integrate this gives the answer 140. That puzzled me for a while until I realized it was the sum (ignoring dimensions) of the volume of the box (2*3*5 = 30), the areas of its faces (2*(2*3 + 2*5 + 3*5) = 62), the lengths of its edges (4*(2+3+5) = 40), and the number of its vertices (8). Now, I didn't define any physical entities in volume.geo, so volume.msh contains triangles, edges, and points in addition to the tetrahedra. If I just want to mesh the volume, I define the box of the volume as a Physical Volume, as in addenda.geo, attached. Then generate a new mesh with only volume elements: "gmsh -3 volume.geo addenda.geo -o volume1.msh" and run the same postprocessing as above and you'll get the hoped-for answer of 30. Of course there are also answers using third-party tools; e.g. after loading volume.msh in Gmsh GUI, do File/Save As.../volume.stl and then ADMesh (https://sites.google.com/a/varlog.com/www/) with "admesh volume.stl" will tell you 30.000010. But a pure Gmsh solution would be nice. So that kind of answers your question, except it raises more: Q1. What if you already have your .msh file and it does have area (or even lower dimensional elements) it? This is a very common use case, since a finite element mesh will very often require some boundary elements (for inhomogeneous boundary conditions, or postprocessing) in addition to the volume elements. One can open the .msh file in a text editor and delete all elements of types corresponding to lower dimension, but that's all I can think of. I don't see a way to restrict Plugin(Integrate) to either elements of a specific dimensionality or type, or, what would be really nice, to a specific Physical Entity. Q2. How does one script "Tools/Plugins/New view"? I would have liked to have supplied the above postprocessing commands in a script for you, but I didn't know how to script "New view". Without that, Plugin(MathEval) complains it can't find View[-1], even though it doesn't actually need to refer to it in this case.
volume.geo
Description: Binary data
addenda.geo
Description: Binary data
_______________________________________________ gmsh mailing list [email protected] http://www.geuz.org/mailman/listinfo/gmsh
