Memory corruption error when using PETScKrylovSolver('cg', 'ml_amg') in mixed function space

Issue #868 wontfix
Ben Crestel created an issue

I get a memory corruption error when trying to solve a linear system defined in a mixed function space, using the conjugate gradient method preconditioned with ML amg. This error does not occur with the other amg preconditioners (PETSc and Hypre). Here is a small example that reproduces the error with Fenics 2016.1.0 and above,

from dolfin import *

mesh = UnitSquareMesh(10,10)
Vm = FunctionSpace(mesh, 'CG', 1)
VmVm = FunctionSpace(Vm.mesh(), Vm.ufl_element()*Vm.ufl_element())

testm = TestFunction(VmVm)
trialm = TrialFunction(VmVm)
M = assemble(inner(testm, trialm)*dx)

solver = PETScKrylovSolver('cg', 'ml_amg')
solver.set_operator(M)

x = Function(VmVm)
b = interpolate(Constant(('1.0', '1.0')), VmVm)
solver.solve(x.vector(), b.vector())

Comments (3)

  1. Prof Garth Wells

    ML is no longer being developed, and PETSc downloads on old version of ML that is known to gave issues.

    For smoothed aggregation AMG, use PETSc's native GAMG, or try MeuLu via Trilinos.

    ML has been removed from the Docker images.

  2. Log in to comment