Skip to content

Commit

Permalink
test: check reference output
Browse files Browse the repository at this point in the history
  • Loading branch information
alexfikl committed Oct 22, 2023
1 parent 4d71e03 commit c76fe76
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 19 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ setuptools.pth
distribute-*.tar.gz
distribute-*.egg
*.vtu
*.pvtu
*.vts
*.pvts
*.xmf
.eggs

Expand Down
22 changes: 22 additions & 0 deletions test/ref-vtk-parallel.pvtu
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0"?>
<VTKFile type="PUnstructuredGrid" version="0.1" byte_order="LittleEndian">
<PUnstructuredGrid>
<PPointData>
<PDataArray type="Float64" Name="pressure" NumberOfComponents="1"/>
<PDataArray type="Float64" Name="velocity" NumberOfComponents="3"/>
</PPointData>
<PPoints>
<PDataArray type="Float64" Name="points" NumberOfComponents="3"/>
</PPoints>
<PCells>
<PDataArray type="UInt32" Name="connectivity" NumberOfComponents="1"/>
<PDataArray type="UInt32" Name="offsets" NumberOfComponents="1"/>
<PDataArray type="UInt8" Name="types" NumberOfComponents="1"/>
</PCells>
<Piece Source="vtk-parallel-piece-0.vtu"/>
<Piece Source="vtk-parallel-piece-1.vtu"/>
<Piece Source="vtk-parallel-piece-2.vtu"/>
<Piece Source="vtk-parallel-piece-3.vtu"/>
<Piece Source="vtk-parallel-piece-4.vtu"/>
</PUnstructuredGrid>
</VTKFile>
63 changes: 44 additions & 19 deletions test/test_vtk.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,45 @@
import pathlib

import numpy as np
import pytest

from pyvisfile.vtk import (
VF_LIST_OF_COMPONENTS, VF_LIST_OF_VECTORS, VTK_VERTEX, AppendedDataXMLGenerator,
DataArray, UnstructuredGrid, write_structured_grid)
DataArray, ParallelXMLGenerator, UnstructuredGrid, write_structured_grid)


@pytest.mark.parametrize("n", [5000, 0])
def test_vtk_unstructured_points(n):
points = np.random.randn(n, 3)
def make_unstructured_grid(n: int) -> UnstructuredGrid:
rng = np.random.default_rng(seed=42)
points = rng.normal(size=(n, 3))

data = [
("p", np.random.randn(n)),
("vel", np.random.randn(3, n)),
("pressure", rng.normal(size=n)),
("velocity", rng.normal(size=(3, n))),
]
file_name = f"points_{n}.vtu"
compressor = None

grid = UnstructuredGrid(
(n, DataArray("points", points, vector_format=VF_LIST_OF_VECTORS)),
cells=np.arange(n, dtype=np.uint32),
cell_types=np.asarray([VTK_VERTEX] * n, dtype=np.uint8))

for name, field in data:
grid.add_pointdata(DataArray(name, field,
vector_format=VF_LIST_OF_COMPONENTS))
grid.add_pointdata(
DataArray(name, field, vector_format=VF_LIST_OF_COMPONENTS))

return grid


@pytest.mark.parametrize("n", [5000, 0])
def test_vtk_unstructured_points(n: int) -> None:
grid = make_unstructured_grid(n)
file_name = pathlib.Path(f"vtk-unstructured-{n:04d}.vtu")
compressor = None

from os.path import exists
if exists(file_name):
raise RuntimeError("output file '%s' already exists"
% file_name)
if file_name.exists():
raise FileExistsError(f"Output file '{file_name}' already exists")

outf = open(file_name, "w")
AppendedDataXMLGenerator(compressor)(grid).write(outf)
outf.close()
with open(file_name, "w") as outf:
AppendedDataXMLGenerator(compressor)(grid).write(outf)


def test_vtk_structured_grid():
Expand All @@ -55,8 +61,27 @@ def test_vtk_structured_grid():
np.cos(theta),
])

write_structured_grid("yo.vts", mesh,
point_data=[("phi", phi), ("vec", vec)])
write_structured_grid(
"vtk-structured.vts",
mesh,
point_data=[("phi", phi), ("vec", vec)])


def test_vtk_parallel():
cwd = pathlib.Path(__file__).parent
file_name = cwd / "vtk-parallel.pvtu"

grid = make_unstructured_grid(1024)
pathnames = [f"vtk-parallel-piece-{i}.vtu" for i in range(5)]

if file_name.exists():
raise FileExistsError(f"Output file '{file_name}' already exists")

with open(file_name, "w") as outf:
ParallelXMLGenerator(pathnames)(grid).write(outf)

import filecmp
assert filecmp.cmp(file_name, cwd / "ref-vtk-parallel.pvtu")


if __name__ == "__main__":
Expand Down

0 comments on commit c76fe76

Please sign in to comment.