Skip to content

Commit 3ba50c7

Browse files
committed
Test
1 parent f479d89 commit 3ba50c7

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

tests/firedrake/submesh/test_submesh_assemble.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,3 +532,34 @@ def test_submesh_assemble_quad_triangle():
532532
a_ref = c_ref * inner(TrialFunction(V_q), TestFunction(V_t)) * ds_q(label_interf)
533533
A_ref = assemble(a_ref)
534534
assert np.allclose(A.M[0][1].values, A_ref.M.values)
535+
536+
537+
@pytest.mark.parallel(3)
538+
def test_assemble_parent_coefficient():
539+
subdomain_id = 999
540+
nx = 4
541+
mesh = UnitSquareMesh(2*nx, nx, quadrilateral=True, reorder=False)
542+
x, y = SpatialCoordinate(mesh)
543+
M = FunctionSpace(mesh, "DG", 0)
544+
marker = Function(M).interpolate(conditional(Or(x > 0.5, y > 0.5), 1, 0))
545+
mesh = RelabeledMesh(mesh, [marker], [subdomain_id])
546+
submesh = Submesh(mesh, mesh.topological_dimension, subdomain_id, ignore_halo=True, reorder=False)
547+
548+
def expr(m):
549+
x = SpatialCoordinate(m)
550+
return 1 + dot(x, x)
551+
552+
Vsub = FunctionSpace(submesh, "CG", 1)
553+
vsub = TestFunction(Vsub)
554+
usub = TrialFunction(Vsub)
555+
556+
Q = FunctionSpace(mesh, "DG", 0)
557+
q = Function(Q).interpolate(expr(mesh))
558+
A = assemble(inner(grad(usub) * q, grad(vsub))*dx(domain=submesh))
559+
560+
Qsub = FunctionSpace(submesh, "DG", 0)
561+
qsub = Function(Qsub).interpolate(expr(submesh))
562+
A_ref = assemble(inner(grad(usub) * qsub, grad(vsub))*dx)
563+
564+
A_ref.petscmat.axpy(-1, A.petscmat)
565+
assert np.isclose(A_ref.petscmat.norm(PETSc.NormType.NORM_FROBENIUS), 0)

0 commit comments

Comments
 (0)