ParaView Visualization
Theory: the data ParaView handles
Overview
I can make nice pictures in ParaView, but I'm unsure whether to trust the numbers.
Keeping in mind where data live prevents most misreadings. ParaView data are either cell data, one value per element, or point data, values per node. OpenFOAM's finite-volume results are inherently cell data, while finite-element solvers usually output nodal values extrapolated from integration points. To smooth displays, ParaView may average cell data into point data (Cell Data to Point Data), flattening local peaks. Slices and Plot Over Line values are interpolated from the source data, so on coarse meshes they can differ from true values. Beyond how a picture looks, check which data were processed how to produce a number.
Averaging and a check formula
Left: the nodal value when four elements sharing a node are averaged. Right: the side area of a cylinder (10 mm diameter, 100 mm long), usable to check area with Integrate Variables.
ParaView and VTK
VTK (the Visualization Toolkit), on which ParaView is built, began in the 1990s as the software accompanying a visualisation textbook by three researchers and has since been developed by Kitware. ParaView itself started around 2000 as a collaboration between Los Alamos National Laboratory and Kitware to visualise huge supercomputer results in parallel, and is now a standard tool for viewing scientific computing results.
Worked examples
The 19% difference is at the shared node of four illustrative cells; it does not imply a universal 19% drop in global maxima. A scalar pressure-area integral is not a force vector: integrate pressure times the surface normal and include viscous traction where relevant. Stress averaging and extrapolation must match the assessment method.
Example 1: stresses of four elements sharing a node
| Display method | Value shown near the node | Difference from element max |
|---|---|---|
| Cell data (per element) | 180 MPa | 0% |
| Cell Data to Point Data (averaged) | 145 MPa | −19% |
The four elements carry 180, 170, 120 and 110 MPa. The steeper the stress gradient, the more averaging loses. For fatigue or strength assessment use element values or solver-extrapolated nodal values, not averaged nodal values.
Example 2: checking with Integrate Variables
| Quantity | Expected | If it doesn't match |
|---|---|---|
| Cylinder side area (10 mm × 100 mm) | ≈ 3,142 mm² | Unit (m/mm) mix-up |
| Vector integral of pressure times face normal | Solver pressure force, same surface and units | Pressure units, normals, inclusion of viscous force |
| Inflow and outflow rates | Equal (steady, incompressible) | Poor convergence, wrong boundary |
Plot Over Line gives a velocity profile that doesn't match the solver near the wall. Why?
Check interpolation and how wall boundary values are handled. Plot Over Line places a set number of points (Resolution) along the line and reports interpolated values at each. With cell data you get a staircase depending on which cell each point falls in; with point data, values interpolated from averaged nodes. Neither may match the values on the wall boundary face (an OpenFOAM boundary patch). To see wall values correctly, include boundary patches when reading OpenFOAM data, keep the line end slightly inside the wall, or output wall quantities directly with solver function objects such as wallShearStress. Also, a Resolution coarser than the mesh misses sharp changes, so space points more finely than the near-wall cells.
Practical workflow
- Load results and check in the Information tab whether data are cell or point data, and their ranges and units.
- Check known quantities (area, volume, flow rate) with Integrate Variables.
- Assess maxima on cell data or extrapolated nodal values, avoiding averaging.
- Understand the physics with slices, contours and streamlines; label figures with units and colour-bar ranges.
- For repeated processing, record a Python Trace and automate with pvpython or pvbatch.
“Beware the rainbow colour map”
The long-popular rainbow colour map does not change lightness uniformly, so bands of yellow or cyan suggest boundaries that aren't there, and some viewers with colour-vision differences cannot read it. ParaView's default has moved to maps with uniform lightness. For figures that must convey magnitude correctly, use such maps and keep colour-bar ranges consistent between figures to avoid misleading comparisons.
Common mistakes
Mistakes and fixes
| Mistake | Effect | Fix |
|---|---|---|
| Max from averaged point data | Peaks underestimated | Use cell or extrapolated values |
| Not checking units | Values off by orders of magnitude | Check area and volume |
| Coarse Plot Over Line resolution | Sharp changes missed | Finer than cells |
| Different colour ranges per figure | Misleading comparisons | Use common ranges |
| Opening parallel results unjoined | Only part displayed | Open as Decomposed Case |
I'd like to learn related topics.
Related pages include OpenFOAM post-processing, Gmsh mesh generation, the SALOME Mesh module and the FreeCAD FEM module.
Frequently asked questions
What is ParaView?
Open-source visualisation software developed by US national laboratories and Kitware, built on the VTK library. It reads results from many solvers — OpenFOAM, Code_Aster, Elmer, FEniCS and more — and displays them by combining filters such as slices, contours, streamlines and plots. It processes large data in parallel and can be automated with Python.
Why does the displayed maximum differ from the solver output?
Because converting cell data to point data averages it. If four elements sharing a node carry 180, 170, 120 and 110 MPa, Cell Data to Point Data gives that node the average, 145 MPa, so the 180 MPa peak appears 19% lower. For maximum values, view cell data directly or use nodal values extrapolated from integration points by the solver.
How do I check results were read correctly?
Check quantities with known geometry and units. Use Integrate Variables to compute area or volume and compare with design values, or integrate pressure over a surface and compare with the solver's force output. The side of a cylinder 10 mm in diameter and 100 mm long has about 3,142 mm²; if that doesn't match, suspect unit or scale handling on import.
References and scope of verification
Numbers are educational reference calculations under the stated assumptions. Sources document theory and setup, not proof that these numerical values were reproduced in each package. Engineering decisions require validation for the actual conditions.
Related Topics
Experience the theory firsthand with the interactive simulator for this field
All Simulators