On Dec 3, 2011, at 12:03 PM, Stefano Zampini wrote:

> Mark,
> 
> I observe some strange behaviour in your gamg code: it always consider SA 
> method either if I pass "-pc_gamg_type geo" by command line or using 
> PCGAMGSetSolverType directly into my code. I put a printf of your variables 
> m_type and m_method inside gamg.c and it always prints m_type="string I've 
> passed" and m_method=2.

If you do not give it coordinates then it can not do geo.  So I silently switch 
it to SA with this:

if(a_coords==0 && pc_gamg->m_method==0) pc_gamg->m_method = 2; /* use SA if no 
coords */

Maybe I should throw and error here instead of silently switching ...

It sounds like you hit this code.

> 
> I added some code into gamg.c for setting KSP and PC for the smoother. I 
> removed the define PETSC_GAMG_SMOOTHER and pass the correct value for PC to 
> createProlongation function. Is this enough to mantain self-consistency of 
> the code?
> 

Cheby with diagonal preconditioning is a good default and I want to reuse the 
eigen estimate for the prolongator smoothing.  So instead of just setting the 
PC type to Cheby, I should add PCSetFromOptions and then check if it is still 
Cheby before computing the eigen estimate, and check that the PC is still 
Jacobi before caching the max eigenvalue for reuse.  Currently we can only 
smooth the prolongation matrix with Jacobi easily.  So the only 
self-consistancy issue is in reusing the eigen estimate.

> Early test cases suggest better convergenge rate by dropping the lines where 
> you adapt emax and emin before their estimation, either with chebichev, or 
> with richardson (using richardson factor 2/(emin+emax))
> 

Not sure what you mean by "adapt emax and emin before their estimation", but 
setting the Cheby emax and emin is full of heuristics and it can be tuned 
better for any particular problem.  If there is a big difference then that is 
an issue for concern.

1) It is very bad if emax is lower than the true max eigen value so I bump up 
the estimate some.  The less you bump up, the better performance until you get 
too low, then it dies rapidly.

2) The lowest eigen estimate is really a black art.  Jed has suggested some 
heuristics that might be better than what I now have.  Fortunately performance 
is not too sensitivity to emin (the cheby poly is pretty smooth there).  But 
this can be tuned to improve performance for any problem, I just tuned it 
approximately with a few of the test cases (ex54, ex55, ex56).

3) One iteration of your richardson with factor 2/(emin+emax) is equivalent to 
some first order cheby and so this is another type of parameter optimization.  
NB, the lowest eigen estimate is very bad, too high for SPD problems, from just 
a few iteration of a Krylov method.

> Moreover, if I call PCSetCoordinates with dim=3 it prints an error reporting 
> "3d unsupported".
> 

This sounds like you were trying to use 'geo' in 3D. I've added (not pushed)  
"for 'geo' AMG" to this error message:

SETERRQ(wcomm,PETSC_ERR_LIB,"3D not implemented for 'geo' AMG");

I do not fix this problem silently like I do the no coordinates case, I will 
add that to my next push.

Mark

> Regards,
> Stefano
> 
> 2011/11/30 Mark F. Adams <mark.adams at columbia.edu>
> Stefano,
> 
> You really need to tell a black/gray box AMG solver that you are solving a 
> vector/step PDE.  For GAMG you simply have to set the block size:
> 
> ierr = MatSetBlockSize( mat, 2 or 3 );      CHKERRQ(ierr);
> 
> I'm not sure if HYPRE or ML is equipped to deal with this in the PETSc 
> interface (I know the ML library can).
> 
> ML and GAMG use smoothed aggregation which is well suited for elasticity but 
> to be optimal it needs the null space of the operator which is the 3 or 6 
> rigid body modes for elasticity.  GAMG has an interface where you can give it 
> the coordinates of your vertices and it will create the rotation rigid body 
> modes with this. If you do not give it coordinates then it will use only the 
> translational RBMs and, in general, will not be as good but still a usable 
> solver.
> 
> Mark
> 
> On Nov 30, 2011, at 12:25 PM, Stefano Zampini wrote:
> 
> > Hi,
> >
> > I'm trying different AMG (sequential) solvers as black-boxes 
> > preconditioners for almost incompressible elasticity in 3d with spectral 
> > elements; specifically, ML and HYPRE (both called from PETSc), but they 
> > don't provide good results (at least using them via the PETSc interface). I 
> > wish to test for new GAMG preconditioner from actual petsc-dev.
> >
> > I wish to test the solver either with essential boundary conditions on one 
> > face, or with pure neumann boundaries. Can you (I think Mark Adams is the 
> > one I'm talking with) give my some hints on the customization of the 
> > preconditioner?
> >
> > Regards,
> > --
> > Stefano
> 
> 
> 
> 
> -- 
> Stefano

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20111203/f47ff793/attachment.html>

Reply via email to