On Wed, 17 Sep 2008, Derek Gaston wrote:

> It appears that currently there is no way to set nonlinear solver
> tolerances programatically without resorting to calls directly to
> Petsc / Trilinos from user code.  There are currently two parameters
> used in nonlinear_implicit_system: "nonlinear solver tolerance" and
> "nonlinear solver maximum iterations" both of which are passed to
> nonlinear_solver->solv() and neither of which are currently used by
> PetscNonlinearSolver.  Both of the options are wholly inadequate and I
> suppose they are probably just there as a find-replace operation...
>
> I propose 5 new parameters and 5 new methods on NonlinearSolver to get/
> set the values:
>
> "nonlinear solver absolute tolerance" ->
> NonlinearSolver::absolute_tolerance()
> "nonlinear solver relative tolerance" ->
> NonlinearSolver::relative_tolerance()
> "nonlinear solver step tolerance" -> NonlinearSolver::step_tolerance()
>
> "nonlinear solver maximum iterations" -> NonlinearSolver::max_its()
> "nonlinear solver maximum function evalutations" ->
> NonlinearSolver::max_funcs()
>
> I believe that all 5 of these map fairly well to both Petsc and
> Trilinos.
>
> Any objections / suggestions?

Could we make them match (so far as possible) the DiffSolver
equivalents?

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.

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.
---
Roy

-------------------------------------------------------------------------
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