volume calculation algorithm in HyperMesh

Altair Forum User
Altair Forum User
Altair Employee
edited October 2020 in Community Q&A

Hi everyone,

Does anyone know any details about how the volume of solid elements is calculated in HyperMesh? That is, the particular algorithm used to calculate the element volumes? I am doing an analysis in which I average over the element volumes in a hexahedral mesh. For convenience, I decided to perform this analysis in MATLAB, using MATLAB's convex hull functions to calculate the volume of each element. To verify my method, I checked the volume of select elements in HyperMesh, using the Mass Calc function. It appears that the volumes between HyperMesh and MATLAB differ by about 2%. I have confirmed in MATLAB that all elements are convex. Does anyone know which approach HyperMesh uses to calculate volumes? Does HyperMesh use a convex hull algorithm, or some other method?

I'm new to the forums so I apologize if there is any relevant info for my posting that I have omitted.

Thanks,

Matt

Tagged:

Answers

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited April 2010

    I have no idea, therefore here is the answer I received from development:

    Answering the question in short: we do not use any “convex hull algorithm” – I think that would be wrong to use it.

    If (you are worried) about the difference in volume calculations in MATLAB and HM, (you) can do a simple verification: create 10x10x10 cube and mesh it with 10x10x10 hexas. Then apply some small perturbation of internal nodes, so that some hexas become not perfect cubes and their faces become warped. Total volume should still remain 1000. However with a convex hull method, if I understood it correctly – total volume may change: convex hull should divide warped quad into 2 trias one way for one hexa element and another way for adjacent element in volume.

    HM volume calculation of hexa element (1st or 2nd order) is exact: it calculates volume of the real geometrical shape of the element. In case of 2nd order – it is a shape of conics on element faces. The method is based on calculating sum of jacobians at Gaussian points for transformation of hexa element to 1x1x1 cube.

    Hope that helps!

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited April 2010

    I ended up finding another method that seemed to work pretty well: Triangulate the outer faces of each element and use the divergence theorem to calculate the volume. I even found a MATLAB function online to perform this calculation.

    I actually performed the exact verification exercise proposed below with this method. I meshed a rectangular geometry and distorted the internal elements, and then calculated the volume of each element. I found that total volume found with the convex hull algorithm that I was using was indeed incorrect, but the divergence theorem method was very accurate (to within floating-point error).

    I'm actually curious about the method that HyperMesh uses, involving the sum of Jacobians. Is this method published somewhere?

    Thanks,

    Matt

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited April 2010

    You could probably find it in a FEM textbook.