How does ASPECT values of e.g. ,stress in a *.vtu file for Paraview to render?

Mack (@sac-bsa) and I are trying to track down a singularity in the viscoelastic bending beam benchmark. It is easy to see in the stress_xx field at the end time and at other time steps (e.g., step 36).

The benchmark is on a grid with square cells of side h.

ParaView’s rendering appears to make one cell into 4 square cells of side h/2. The singularity appears as a triangle in the upper left hand corner of 1 cell with vertices (0, h/2) (0, h), and (h/2, h). The actual location of the singularity appears to be in the cell that is directly in the center of the computational domain.

Where is the data that ASPECT outputs to the *.vtu file located?

  • On the corners of the cell?

  • At the midpoint of the cell?

  • At the centers of the cell edges?

  • Some combination of the above?


  • Gerry

Gerry and Mack:
The solution is of course a field that is piecewise polynomial, i.e., a function. When generating output, we evaluate it at the vertices of all cells (and, if you subdivide each cell as you seem to do), then also at the midpoints of each edge and cell. This is then written to VTU as values defined at these points, and Paraview (or, better, the underlying VTK library) then interprets it as a bilinear function on each of these sub-cells. That’s of course not quite right, because we had internally treated it as a bi-quadratic function, but VTK can’t easily handle this, and so it interpolates it as a bilinear function on each (sub-)cell.

Even that is not quite true: VTK actually splits each quadrilateral into two triangles and then plots a linear function on each triangle. That’s why you see two triangular facets for each cell if you zoom in far enough.

If you run any of the postprocessors, for example the one that outputs stresses (i.e., derivatives of the solution), then these are evaluated at the same output points (vertices of cells and sub-cells) and are of course in reality discontinuous, piecewise quadratic polynomial functions. But, again, VTK can’t represent these and does its interpolation to two linear triangles.


Additionally, there is the option

# If set to true, quantities related to stress and strain are computed in each vertex. Otherwise, an average per cell is computed.
set Point-wise stress and strain = false [Bool]