I was wondering what would be an efficient way to produce compatible displacements for mesh nodes/vertices if the computed data is volume shrinkage of each element/cell in the unstructured mesh?

Probably similar is done when one calculates thermal expansion of the material, and then has to produce nodal displacements and stresses, the thermal expansion produces. Basically it should be the same algorithm I suppose.


  • $\begingroup$ You want this displacement to have a mesh deformation during your simulation or you want it just for visualization to show the displacement? $\endgroup$ Dec 6, 2019 at 15:22
  • $\begingroup$ It would be used during the simulation. $\endgroup$ Dec 6, 2019 at 15:47
  • $\begingroup$ So you want to use a Lagrangian grid instead of a fixed Eulerian one right? $\endgroup$ Dec 6, 2019 at 16:29
  • 1
    $\begingroup$ Oh, ok. So if I get you correctly your question is: how you want to convert volume shrinkage, which is cell data, to nodal or point data right? $\endgroup$ Dec 6, 2019 at 17:05
  • 1
    $\begingroup$ OK, but volume shrinkage $\frac{\Delta V}{V}$ is just the trace of strain tensor right? $$\frac{\Delta V}{V} = \mathrm{Tr}(\varepsilon)$$, where $\varepsilon$ is strain tensor. So, why you think that parameter can't be converted to nodal value simply by using interpolation? $\endgroup$ Dec 6, 2019 at 17:17

1 Answer 1


Based on our discussion in the comments, it seems vtkCellDataToPointData is what you want to convert volume shrinkage, which is stored as cell data, to nodal values or point data. I think it's possible cause volume shrinkage ($\frac{\Delta V}{V}$) is defined as trace of strain tensor and there is no reason that that parameter can't be interpolated to the nodes present in your mesh:

$$\frac{\Delta V}{V} = \mathrm{Tr}(\varepsilon)$$

Note that vtkCellDataToPointData use only linear interpolation cause it doesn't know anything about the basis function of your FEM mesh. If you already know what's the basis function of your mesh in your FEM scheme you might want to use that for interpolation instead of using simple linear one that could be done automatically by VTK. The last thing, which might be important for you to use vtkCellDataToPointData is that this class has an attribute function as SetContributingCellOption where you can specify which cells or mesh would contribute to calculate the nodal values. For example, in your specific situation when you want to calculate volume shrinkage, it doesn't make sense to have contribution from 2D or 1D cells and only 3D cells (e.g. tetrahedrals, hexahedrons, etc.) should contribute for calculating the nodal values of volume shrinkage. You can specify which cells contribute to calculate the nodal values by using SetContributingCellOption function. I hope it helps you.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.