Index: fenics-dolfinx/python/demo/demo_scattering_boundary_conditions.py
===================================================================
--- fenics-dolfinx.orig/python/demo/demo_scattering_boundary_conditions.py	2025-11-12 15:19:05.407175808 +0100
+++ fenics-dolfinx/python/demo/demo_scattering_boundary_conditions.py	2025-11-12 15:21:23.079677959 +0100
@@ -644,8 +644,11 @@
 assert isinstance(Esh, fem.Function)
 Esh_dg.interpolate(Esh)
 
-with io.VTXWriter(mesh_data.mesh.comm, out_folder / "Esh.bp", Esh_dg) as vtx:
-    vtx.write(0.0)
+if hasattr(io,"VTXWriter"):
+    with io.VTXWriter(mesh_data.mesh.comm, out_folder / "Esh.bp", Esh_dg) as vtx:
+        vtx.write(0.0)
+else:
+    print("Cannot write Esh.bp: VTXWriter (adios2) is not available")
 # -
 
 # We visualize the solution using PyVista. For more information about
@@ -683,8 +686,11 @@
 E.x.array[:] = Eb.x.array[:] + Esh.x.array[:]
 E_dg = fem.Function(V_dg)
 E_dg.interpolate(E)
-with io.VTXWriter(mesh_data.mesh.comm, "E.bp", E_dg) as vtx:
-    vtx.write(0.0)
+if hasattr(io,"VTXWriter"):
+    with io.VTXWriter(mesh_data.mesh.comm, "E.bp", E_dg) as vtx:
+        vtx.write(0.0)
+else:
+    print("Cannot write E.bp: VTXWriter (adios2) is not available")
 # -
 
 # We validate our numerical solution by computing the absorption,
