Anton Popov <[email protected]> writes:

> Dear all,
>
> I guess MatCreateSchurComplement is somehow broken in PETSc 3.4.2

You can fix it by calling KSPMatRegisterAll() before
MatCreateSchurComplement, and the issue is now fixed in 'maint' (it was
accidentally only fixed in 'master').

This problem came from simplifying dynamic loading and when the
backward-dependency was removed, we still considered KSPMatRegisterAll
to be collective on PETSC_COMM_WORLD, so it couldn't safely be called by
MatCreateSchurComplement.  Looks like you are the "rare" case below.


commit f550243c612070fecd53ff91e1d8ee65a2c6e25c
Author: Jed Brown <[email protected]>
Date:   Wed Oct 17 16:16:08 2012 -0500

    Add KSPMatRegisterAll() to avoid dependency of libpetscmat on libpetscksp
    
    Register MATSCHURCOMPLEMENT there. User should explicitly call
    KSPMatRegisterAll() or KSPInitializePackage() if they want to make a
    MATSCHURCOMPLEMENT before calling KSPCreate. Such a use case should be
    very rare.
    
    Hg-commit: 3c58006af47185551c8aeaf6e1c32e68b79916fb

 include/petscksp.h                 |  1 +
 src/ksp/ksp/interface/dlregisksp.c |  2 ++
 src/ksp/ksp/utils/schurm.c         | 25 +++++++++++++++++++++++++
 src/mat/interface/matregis.c       |  2 --
 4 files changed, 28 insertions(+), 2 deletions(-)

Attachment: pgpIK3yOVjApV.pgp
Description: PGP signature

Reply via email to