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.

Attachment: volume.geo
Description: Binary data

Attachment: addenda.geo
Description: Binary data

_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh

Reply via email to