Oh, OK, so you do not explicitly scale the matrix good. We had a user (John) recently that was using diagonal scaling and was getting failure with GAMG and then GAMG worked and he was no longer using diagonal scaling so I was thinking this was the problem.
Mark On Apr 2, 2012, at 7:40 PM, Barry Smith wrote: > > Mark, > > Who would be doing the "diagonal scaling". Under normal conditions we never > want to be passing to any preconditioner a diagonally scaled matrix (for > exactly the issue you point out) so why are you worried about that case? > > Barry > > On Apr 2, 2012, at 6:40 PM, Mark F. Adams wrote: > >> >> On Apr 2, 2012, at 7:24 PM, Jed Brown wrote: >> >>> On Mon, Apr 2, 2012 at 07:44, Jed Brown <jedbrown at mcs.anl.gov> wrote: >>> The block size is used if you don't provide any other information. The >>> preferred approach with petsc-dev is to use MatSetNearNullSpace(). (I'll >>> make sure this is currently working with ML and reply to this message.) >>> >>> I pushed ML support for user-provided null spaces to petsc-dev. Call >>> MatSetNearNullSpace() to provide the information. You can use >>> MatNullSpaceCreateRigidBody() if you have nodal coordinates. >>> >>> >>> Mark, what is the best way to make PCGAMG use this interface? >> >> It looks like you are adding this to the Mat, so I can check to see if >> coordinates have been set and if not check the matrix. This should be easy >> to do; I'll look at the ML code to clone the API. >> >> One thing to keep in mind is that diagonal scaling breaks the null space >> (ie, the rigid body modes have to be scaled appropriately). Who owns the >> diagonal scaling? If it is Mat then we might want MatSetNearNullSpace to do >> this, otherwise we should think of a good way to deal with this. It is very >> error prone to not do the right thing here, we should at least throw an >> error. >> >> > >
