I’m encountering a crash when visualizing large, time-dependent datasets in ParaView 5.13.3 on Windows 11, using files written with dolfinx VTXWriter and ADIOS2 format. The issue only seems to appear for large files.
You can download the test file here:
results.bp file (Google Drive)
(Apologies for the large size — the issue does not seem to occur with smaller files.)
After loading the data with the ADIOS2VTXReader
, I can navigate through the first 932 timesteps without any issue. However, when attempting to load step 933, ParaView crashes with the following error:
ERROR: In vtkADIOS2VTXReader.cxx, line 99
vtkADIOS2VTXReader (0000026C85C10C50): Error loading ADIOS2 schema: [1;34m [ADIOS2 EXCEPTION]e[0m <Toolkit> <transport::file::FilePOSIX> <Read> : couldn't move to start position 2147644880 in file C:\Users\LuisJavier\Desktop\results.bp\data.0 : errno = 22: Invalid argumente[0m
: iostream stream error
ERROR: In vtkExecutive.cxx, line 730
vtkPVCompositeDataPipeline (0000026C85C5EF40): Algorithm vtkADIOS2VTXReader (0000026C85C10C50) returned failure for request: vtkInformation (0000026C98024B30)
Debug: Off
Modified Time: 1431234
Reference Count: 1
Registered Events: (none)
Request: REQUEST_DATA
FORWARD_DIRECTION: 0
ALGORITHM_AFTER_FORWARD: 1
FROM_OUTPUT_PORT: 0
Using bpls
, the contents of the .bp
file appear to be consistent across all 951 steps:
bpls results.bp -la
uint32_t NumberOfEntities 951*{1} = 48000 / 48000
uint32_t NumberOfNodes 951*{1} = 9261 / 9261
int64_t connectivity 951*[1]*{48000, 5} = 0 / 9260
double f 951*[1]*{9261, 1} = -3 / 3
double geometry 951*[1]*{9261, 3} = -3.07403e-18 / 1
double step 951*scalar = 0 / 1
uint32_t types 951*scalar = 71 / 71
string vtk.xml attr =
<VTKFile type="UnstructuredGrid" version="0.1">
<UnstructuredGrid>
<Piece NumberOfPoints="NumberOfNodes" NumberOfCells="NumberOfCells">
<Points>
<DataArray Name="geometry" />
</Points>
<Cells>
<DataArray Name="connectivity" />
<DataArray Name="types" />
</Cells>
<PointData>
<DataArray Name="TIME">step</DataArray>
<DataArray Name="vtkOriginalPointIds" />
<DataArray Name="vtkGhostType" />
<DataArray Name="f" />
</PointData>
</Piece>
</UnstructuredGrid>
</VTKFile>
uint8_t vtkGhostType 951*[1]*{9261} = 0 / 0
int64_t vtkOriginalPointIds 951*[1]*{9261} = 0 / 9260
Encouraged by this post in the FEniCS Discourse group, I tried using ParaView installed within WSL2 (Ubuntu 22.04) with the WSL GUI. In that setup, the file loads and all timesteps (including 933–951) work flawlessly.
I wonder if I am missing something or if this a known limitation of the ADIOS2 VTX reader on Windows.
Thanks in advance for your help!
In case it’s helpful, the file above was produced using the following script with dolfinx 0.9.0
:
import numpy as np
from mpi4py import MPI
from dolfinx import fem, mesh, io
comm = MPI.COMM_WORLD
t, T = 0, 1
num_steps = 950
dt = T / num_steps
class data:
def __init__(self, t):
self.t = t
def __call__(self, x):
return np.cos(2 * np.pi * self.t) * (x[0]**2 + x[1]**2 + x[2]**2)
n = 20
domain = mesh.create_unit_cube(comm, n, n, n)
_data = data(0.0)
V = fem.functionspace(domain, ("Lagrange", 1))
uh = fem.Function(V)
uh.interpolate(_data)
file = io.VTXWriter(comm, "results.bp", [uh])
file.write(0.0)
for i in range(num_steps):
t += dt
_data.t = t
uh.interpolate(_data)
file.write(t)
file.close()