Mark,
In constructing your coarser levels it appears you are using the A
operator from KSPSetOperators() not the B operator. When one is using a matrix
free form to apply A I think it makes sense to use the B to construct the
coarser grid operators? Or should you always use B or should there be an
option for PCGAMG to use either the A or the B for constructing the coarser and
if A is matrix free that options gets automatically flicked to use the B?
Barry
src/snes/examples/tutorials barrysmith$ ./ex5 -pc_type gamg -snes_mf_operator
-ksp_monitor
[0]PETSC ERROR: --------------------- Error Message
------------------------------------
[0]PETSC ERROR: No support for this operation for this object type!
[0]PETSC ERROR: Matrix of type <mffd> does not support PtAP!
[0]PETSC ERROR:
------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Development HG revision:
c132289977191163d4de2df6e7df77d9dd0b072f HG Date: Tue Feb 21 16:29:59 2012
-0600
[0]PETSC ERROR: See docs/changes/index.html for recent updates.
[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
[0]PETSC ERROR: See docs/index.html for manual pages.
[0]PETSC ERROR:
------------------------------------------------------------------------
[0]PETSC ERROR: ./ex5 on a arch-gnu named barry-smiths-macbook-pro.local by
barrysmith Tue Feb 21 20:50:59 2012
[0]PETSC ERROR: Libraries linked from
/Users/barrysmith/Src/petsc-dev/arch-gnu/lib
[0]PETSC ERROR: Configure run at Tue Feb 21 16:36:50 2012
[0]PETSC ERROR: Configure options --download-blacs --download-fftw
--download-hypre --download-metis --download-mpich --download-mumps
--download-parmetis --download-ptscotch --download-scalapack --download-superlu
--download-superlu_dist --download-yaml --with-shared-libraries
PETSC_ARCH=arch-gnu
[0]PETSC ERROR:
------------------------------------------------------------------------
[0]PETSC ERROR: MatPtAP() line 8263 in
/Users/barrysmith/Src/petsc-dev/src/mat/interface/matrix.c
[0]PETSC ERROR: createLevel() line 88 in
/Users/barrysmith/Src/petsc-dev/src/ksp/pc/impls/gamg/gamg.c
[0]PETSC ERROR: PCSetUp_GAMG() line 562 in
/Users/barrysmith/Src/petsc-dev/src/ksp/pc/impls/gamg/gamg.c
[0]PETSC ERROR: PCSetUp() line 832 in
/Users/barrysmith/Src/petsc-dev/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: KSPSetUp() line 261 in
/Users/barrysmith/Src/petsc-dev/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: KSPSolve() line 385 in
/Users/barrysmith/Src/petsc-dev/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: SNES_KSPSolve() line 3939 in
/Users/barrysmith/Src/petsc-dev/src/snes/interface/snes.c
[0]PETSC ERROR: SNESSolve_LS() line 641 in
/Users/barrysmith/Src/petsc-dev/src/snes/impls/ls/ls.c
[0]PETSC ERROR: SNESSolve() line 3163 in
/Users/barrysmith/Src/petsc-dev/src/snes/interface/snes.c
[0]PETSC ERROR: main() line 152 in src/snes/examples/tutorials/ex5.c
application called MPI_Abort(MPI_COMM_WORLD, 56) - process 0
[unset]: aborting job:
application called MPI_Abort(MPI_COMM_WORLD, 56) - process 0