CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [Other] How to get mesh total volume quickly? (https://www.cfd-online.com/Forums/openfoam-meshing/105517-how-get-mesh-total-volume-quickly.html)

ic3wall August 1, 2012 15:24

How to get mesh total volume quickly?
 
Hi,

What's the fastest way to get the total volume of a mesh precisely (sum of volume of each cell)?

I know checkMesh is giving Mesh total volume but i'm not sure if it's really mesh total volume or volume of bounding box ..

Thank you!

tcarrigan August 1, 2012 17:24

What software are you using to generate the mesh? It may provide the appropriate utilities for doing a volume calculation.

matt.mech.eng August 1, 2012 19:20

checkMesh gives the volume of the mesh not the bounding box
you can easily calculate the volume of the bounding box yourself.. compare with checkMesh volume given

potentialFoam January 21, 2016 12:34

Dear Foamers,

I would like to get the total volume of a solution domain.
I tried
Code:

scalar totalVolume(0.0);
forAll(mesh_.cells(),i) //cellI)
{
totalVolume += mesh_.V()[i]; //cellI];
}

without success. (Wrong result, but I don't know why.)

Then I found this last answer and hence I tried to get it with 'checkMesh'.
Unfortunately, I can't find the code snippet in the folder
/OpenFOAM-3.0.1/applications/utilities/mesh/manipulation/checkMesh/
using e.g.:
grep -nr "volume"

Can you please show me, where they hid it? :)

Regards,
Peter

alexeym January 21, 2016 15:14

Hi,

Why have you decided to iterate over strange cells() list? This does the job:

Code:

scalar vol = 0.0;
forAll(mesh.V(), idx)
{
    vol += mesh.V()[idx];
}
reduce(vol, sumOp<scalar>());
Info<< vol << endl;

The same thing:

Code:

scalar vol = gSum(mesh.V());
Info<< vol << endl;

(in fact gSum is just short way to say
Code:

scalar vol = sum(mesh.V());
reduce(vol, sumOp<scalar>());

)

Also it is up to you to check if you run 2D axisymmetric case and multiply result to get real mesh volume.

Answering you last question: it is in primitiveMeshCheck.C (http://foam.sourceforge.net/docs/cpp...ce.html#l00318).

potentialFoam January 22, 2016 03:57

Thanks Alexey,

it works :)
(I use
Code:

scalar vol = gSum( mesh_.V() );
)


All times are GMT -4. The time now is 12:40.