Issue with petsc+DirichletBC in parallel
import ufl
from dune.grid import structuredGrid
grid = structuredGrid([0,0],[1,1],[50,50])
grid.hierarchicalGrid.loadBalance()
from dune.fem.space import lagrange
from dune.models import integrands
from dune.ufl import DirichletBC
from dune.fem.scheme import galerkin
spc = lagrange(grid,order=1, storage="petsc")
x = ufl.SpatialCoordinate(spc)
u = ufl.TrialFunction(spc)
v = ufl.TestFunction(spc)
a = ufl.inner(ufl.grad(u),ufl.grad(v)) * ufl.dx
a = a + ufl.inner(u,v) * ufl.dx
# using None here works using DirichletBC fails
dbc = None # DirichletBC(spc, ufl.dot(x,x) )
scheme = galerkin([a==0,dbc])
df = spc.interpolate(0,name="solution")
scheme.solve(target=df)
print("Finished")
Without DirichletBC
this code runs (except An error occurred in MPI_Comm_get_attr
at shutdown).
Switching to DirichletBC
fails when running with mpiexec -np 4
for example. Error is
RuntimeError: Exception [ErrorHandler:/home/dedner/DUNE_PYTHON/dune-fem/dune/fem/misc/petsc/petsccommon.hh:74]: PETSc Error in the PETSc function 'MatGetValues_MPIAIJ' at /media/nvme/petsc/src/mat/impls/aij/mpi/mpiaij.c:779: 'No support for this operation for this object type'. Error message: 'Only local values currently supported'