ExodusII and Tensors

exodus

(Dave Makhija) #1

For a vector I can append a variable name with X,Y, and Z to make Paraview recognize it as a vector. Is there similar conventions for tensors (3 component symmetric, 4 component non-symmetric, 6 component symmetric, and 9 component non-symmetric)?


(Mathieu Westphal) #2

What do you mean by?

to make Paraview recognize it as a vector.


(Dave Makhija) #3

When writing to an exodusII file you can store element centered or node centered quantities. There is no way (that I know) for explicitly storing vector/tensor valued nodal/elemental quantities similar to the XDMF format. Instead vectors are detected by a naming convention. For example nodal quantities stored with the name “dispX”, “dispY”, and “dispZ” are automatically recognized as a vector valued “disp” quantity. The vector valued quantity “disp” shows up in “Vectors” in the calculator filter, and can be used to generate streamlines, etc.

The symmetric component of the gradient of the displacement is the strain. In two dimensions there are 3 unique components and for 3 dimensions 6 unique components due to symmetry. Storing the 6 symmetric components in an XDMF file with the tag “Tensor6” allows paraview to recognize it as a tensor quantity. I see no way to do this with exodusII. If I generate a tensor in paraview through the “Compute Gradients” filter paraview correctly recognizes a tensor. If I subsequently write and read an exodusII file inside Paraview with that data, it is no longer recognized as a tensor but instead as a scalar.

It is not critical as you typically visualize low order transformations of tensor quantities (von Mises stress, principal stress vectors, etc.), but I thought there must be a way to name tensor components with a convention if XDMF supports tensors. The only thing I’ve done with tensors in Paraview was compute principal stress directions and I believe that required a third party extension. This is more for cleanliness/completeness.


(David Thompson) #4

The logic the reader uses for glomming array names together into vectors, tensors, and integration points is here:

https://gitlab.kitware.com/vtk/vtk/blob/master/IO/Exodus/vtkExodusIIReader.cxx#L430

Note that only symmetric tensors were in the spec at the time I wrote things, so more general tensors are not handled. Also, be aware that VTK may not always interpolate/transform tensor values properly.


(Dave Makhija) #5

Ah, I had the ordering incorrect. This fixes it. Thanks for the help.