Thanks Jed.... PCReset() somewhat fixed it... but now I get this:
[0]PETSC ERROR: Error in external library!
[0]PETSC ERROR: Error in HYPRE_IJMatrixAssemble()!
...
[0]PETSC ERROR: MatHYPRE_IJMatrixFastCopy_SeqAIJ() line 183 in
src/dm/impls/da/hypre/mhyp.c
[0]PETSC ERROR: MatHYPRE_IJMatrixCopy() line 127 in
src/dm/impls/da/hypre/mhyp.c
[0]PETSC ERROR: PCSetUp_HYPRE() line 118 in src/ksp/pc/impls/hypre/hypre.c
[0]PETSC ERROR: PCSetUp() line 832 in src/ksp/pc/interface/precon.c
[0]PETSC ERROR: PCApply() line 380 in src/ksp/pc/interface/precon.c
[0]PETSC ERROR: apply() line 53 in
"unknowndirectory/"src/numerics/petsc_preconditioner.C
Looks like maybe PCReset() doesn't work properly with Hypre?
As for why this worked before and isn't now... I have no idea. We were
definitely changing the system size all the time with adaptivity... and
never saw this before...
Derek
On Mon, Feb 4, 2013 at 2:56 PM, Jed Brown <jedbr...@mcs.anl.gov> wrote:
> On Mon, Feb 4, 2013 at 3:44 PM, Derek Gaston <fried...@gmail.com> wrote:
>
>> After updating to Petsc 3.3 (and the new libMesh... so it's not clear
>> where the error is). One of our fancier preconditioning routines that
>> relies on matrices added using system.add_matrix() calls is failing when we
>> try to apply the preconditioner with an error that says:
>>
>> [0]PETSC ERROR: PCSetOperators() line 1049 in
>> src/ksp/pc/interface/precon.c Cannot change local size of Amat after use
>> old sizes 9 9 new sizes 25 25
>>
>> This is in an adaptivity problem that starts out with 2x2 quads (hence
>> the 9x9 nature of the original matrix) and is being adapted (25x25 sounds
>> right).
>>
>> Anyone seen this before? Is this some new checking in PETSc that is
>> getting tripped...
>>
>
> PETSc has never supported changing the system size arbitrarily, but if you
> set the matrix and changed it _before_ setting up the preconditioner, you
> would have been okay in the past. We likely added the check when we added
> PCReset (and KSPReset, etc). This tells PETSc to rebuild any size-dependent
> structures, but does not change configuration. If you call this before
> setting a new operator with different sizes, you should be fine.
>
> If the code worked before, perhaps you never used the PC to solve a
> smaller system before calling PCSetOperators() with a new system.
>
>
>> or is libMesh possibly not resizing these matrices correctly?
>>
>> I'll provide more information as I have it... I just thought I would see
>> if anyone had run into this before I get too deep in here...
>>
>> Derek
>>
>>
>> ------------------------------------------------------------------------------
>> Everyone hates slow websites. So do we.
>> Make your web apps faster with AppDynamics
>> Download AppDynamics Lite for free today:
>> http://p.sf.net/sfu/appdyn_d2d_jan
>> _______________________________________________
>> Libmesh-devel mailing list
>> Libmesh-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/libmesh-devel
>>
>>
>
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel