SNESSetFunctionDomainError#

tells SNES that the input vector, a proposed new solution, to your function you provided to SNESSetFunction() is not in the functions domain. For example, a step with negative pressure.

Synopsis#

#include "petscsnes.h"  
PetscErrorCode SNESSetFunctionDomainError(SNES snes)

Logically Collective

Input Parameter#

  • snes - the SNES context

Notes#

If this is called the SNESSolve() stops iterating and returns with a SNESConvergedReason of SNES_DIVERGED_FUNCTION_DOMAIN

You should always call SNESGetConvergedReason() after each SNESSolve() and verify if the iteration converged (positive result) or diverged (negative result).

You can direct SNES to avoid certain steps by using SNESVISetVariableBounds(), SNESVISetComputeVariableBounds() or SNESLineSearchSetPreCheck(), SNESLineSearchSetPostCheck()

See Also#

SNES: Nonlinear Solvers, SNESCreate(), SNESSetFunction(), SNESFunction, SNESSetJacobianDomainError(), SNESVISetVariableBounds(), SNESVISetComputeVariableBounds(), SNESLineSearchSetPreCheck(), SNESLineSearchSetPostCheck(), SNESConvergedReason, SNESGetConvergedReason()

Level#

advanced

Location#

src/snes/interface/snes.c

Examples#

src/ts/tutorials/ex10.c


Edit on GitLab

Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages