On Sep 17, 2008, at 9:42 AM, Roy Stogner wrote:
> Could we make them match (so far as possible) the DiffSolver
> equivalents?

I did look at  Diffsolver... I don't have any problems making them  
match... I just couldn't see how a couple of them mapped.

> DiffSolver::max_nonlinear_iterations, absolute_residual_tolerance, and
> relative_residual_tolerance should correspond to three of those
> entries.  I suspect that "step_tolerance()" corresponds to something
> like "initial_linear_tolerance", but my inexact Newton solver uses
> decreasing tolerances with successive steps and I'd be surprised if
> PETSc and Trilinos didn't.

The step_tolerance is meant to correspond to something close to your  
relative step tolerance... and I would have named it that except I'm  
not entirely sure that Petsc does use a scaled relative step tolerance  
(as I suspect you are doing).  I believe that they use the absolute  
step size instead (which is really a bummer).  I don't think Petsc has  
any kind of decreasing tolerance with successive steps.  Petsc's  
convergence tests are really pretty poor.

Trilinos (specifically NOX) has a sophisticated system for convergence  
criteria... you can actually specify any boolean combination (not just  
OR's like Petsc) of many different things and present that as a  
convergence test.  For now though, I figured I would just make the  
default behavior be something like Petsc... where you just OR together  
all 5 tolerances.

> Of course, the DiffSolver parameters are currently just Reals; we can
> change those to setter/getter pairs or functions returning references
> or whatever if you prefer.

This is where I wasn't quite sure what I preferred.  I think functions  
returning references would be the simplest... that way those functions  
could be implemented completely in the base NonlinearSolver class.   
All Petsc/NoxNonlinearSolver would do is pick up the Reals out of the  
base before calling solve.

That said... there's not much difference between just exposing Reals  
and using concrete methods that return references.  So I'm game for  
either.

Derek

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to