Visualization of multiple Dolfin-x functions on same mesh in Paraview (5.8.0)

Hi all,

I want to visualize two functions on the same mesh in Paraview (5.8.0), see the following MWE:

#!/usr/bin/env python3
from dolfinx import BoxMesh, VectorFunctionSpace, Function, FunctionSpace
from dolfinx.io import XDMFFile
import dolfinx.cpp.mesh
from mpi4py import MPI
import numpy as np

comm = MPI.COMM_WORLD

mesh = BoxMesh(comm, [np.array([0.0, 0.0, 0.0]),np.array([2.0, 1.0, 1.0])], [5, 5, 5],
               dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.GhostMode.none)

V1 = VectorFunctionSpace(mesh, ("CG", 1))
V2 = FunctionSpace(mesh, ("DG", 0))

u = Function(V1, name="displacement")
d = Function(V2, name="some_scalar")

u.vector.set(1.33)
d.vector.set(2.0)

# write mesh and function
with XDMFFile(comm,'tmp/viz.xdmf','w') as outfile:
    #mesh.topology.create_connectivity_all()
    outfile.write_mesh(mesh)
    outfile.write_function(u)
    outfile.write_function(d)

When looking at the XDMF in Paraview, I a) cannot visualize the function values in color on the geometry, and b) cannot visualize the scalar function “some_scalar” on a geometry that was warped by the function “displacement”.
Writing just “displacement”, however, works, and the colored values of this function can be visualized.

I remember that dolfin used to have the setting “functions_share_mesh” for the XDMF writer. This does not seem to exist anymore.

Does anybody have an idea how to set this properly so that both functions can be visualized on the same (warped) geometry?

Thanks!
Marc

I don’t have DOLFIN-X set up to test this right now, but the trick I’ve always used for this in old DOLFIN is to open both files in Paraview, select them both in the pipeline browser, then create an “Append Attributes” filter combining them.

Hi! Thanks for this hint. Indeed, this worked. :slight_smile:
However, I’d still love to have everything in one file, especially when having multiple fields. So maybe someone has another idea on this!