Skip to content

Commit

Permalink
fixes for xdmf complex tests
Browse files Browse the repository at this point in the history
  • Loading branch information
minrk committed Nov 20, 2024
1 parent 2de9542 commit c31278b
Showing 1 changed file with 24 additions and 14 deletions.
38 changes: 24 additions & 14 deletions tests/test_xdmf.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@
import numpy as np
import scifem
import pytest
from petsc4py import PETSc
from unittest.mock import patch


stype = PETSc.ScalarType
rtype = PETSc.RealType


@pytest.mark.parametrize("use_ctx_manager", [True, False])
@pytest.mark.parametrize("backend", ["h5py", "adios2"])
@pytest.mark.parametrize("degree", [1, 2, 3])
Expand All @@ -19,15 +24,17 @@
def test_XDMFFile_2D(cell_type, degree, value_shape, backend, use_ctx_manager, tmp_path):
folder = MPI.COMM_WORLD.bcast(tmp_path, root=0)

stype = PETSc.ScalarType
rtype = PETSc.RealType
mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 10, cell_type, dtype=np.float64)

el = basix.ufl.quadrature_element(
scheme="default", degree=degree, cell=mesh.ufl_cell().cellname(), value_shape=value_shape
)
V = dolfinx.fem.functionspace(mesh, el)
u = dolfinx.fem.Function(V)
v = dolfinx.fem.Function(V)
t = dolfinx.fem.Constant(mesh, 0.0)
u = dolfinx.fem.Function(V, dtype=stype)
v = dolfinx.fem.Function(V, dtype=stype)
t = dolfinx.fem.Constant(mesh, stype(0.0))

X = ufl.SpatialCoordinate(mesh)
if value_shape == ():
Expand All @@ -45,22 +52,22 @@ def test_XDMFFile_2D(cell_type, degree, value_shape, backend, use_ctx_manager, t
with scifem.xdmf.XDMFFile(folder / "data.xdmf", [u, v], backend=backend) as xdmf:
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))

t.value = 0.3
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))
else:
xdmf = scifem.xdmf.XDMFFile(folder / "data.xdmf", [u, v], backend=backend)
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))

t.value = 0.3
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))

xdmf.close()

Expand All @@ -78,15 +85,18 @@ def test_XDMFFile_2D(cell_type, degree, value_shape, backend, use_ctx_manager, t
def test_XDMFFile_3D(cell_type, degree, value_shape, backend, use_ctx_manager, tmp_path):
folder = MPI.COMM_WORLD.bcast(tmp_path, root=0)

stype = PETSc.ScalarType
rtype = PETSc.RealType

mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=np.float64)

el = basix.ufl.quadrature_element(
scheme="default", degree=degree, cell=mesh.ufl_cell().cellname(), value_shape=value_shape
)
V = dolfinx.fem.functionspace(mesh, el)
u = dolfinx.fem.Function(V)
v = dolfinx.fem.Function(V)
t = dolfinx.fem.Constant(mesh, 0.0)
u = dolfinx.fem.Function(V, dtype=stype)
v = dolfinx.fem.Function(V, dtype=stype)
t = dolfinx.fem.Constant(mesh, stype(0.0))

X = ufl.SpatialCoordinate(mesh)
if value_shape == ():
Expand All @@ -104,22 +114,22 @@ def test_XDMFFile_3D(cell_type, degree, value_shape, backend, use_ctx_manager, t
with scifem.xdmf.XDMFFile(folder / "data.xdmf", [u, v], backend=backend) as xdmf:
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))

t.value = 0.3
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))
else:
xdmf = scifem.xdmf.XDMFFile(folder / "data.xdmf", [u, v], backend=backend)
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))

t.value = 0.3
u.interpolate(dolfinx.fem.Expression(u_expr, V.element.interpolation_points()))
v.interpolate(dolfinx.fem.Expression(v_expr, V.element.interpolation_points()))
xdmf.write(t.value)
xdmf.write(rtype(t.value))

xdmf.close()

Expand Down

0 comments on commit c31278b

Please sign in to comment.