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)
Not Collective
Input Parameter#
snes - the
SNES
context
Notes#
This does not need to be called by all processes in the SNES
MPI communicator.
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()
You can call SNESSetJacobianDomainError()
during a Jacobian computation to indicate the proposed solution is not in the domain.
Developer Note#
This value is used by SNESCheckFunctionNorm()
to determine if the SNESConvergedReason
is set to SNES_DIVERGED_FUNCTION_DOMAIN
See Also#
SNES: Nonlinear Solvers, SNESCreate()
, SNESSetFunction()
, SNESFunctionFn
, SNESSetJacobianDomainError()
, SNESVISetVariableBounds()
,
SNESVISetComputeVariableBounds()
, SNESLineSearchSetPreCheck()
, SNESLineSearchSetPostCheck()
, SNESConvergedReason
, SNESGetConvergedReason()
,
SNES_DIVERGED_FUNCTION_DOMAIN
Level#
advanced
Location#
Examples#
src/ts/tutorials/ex30.c
src/ts/tutorials/ex10.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages