3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Files | Classes | Functions

Nonlinear solvers: Newton method. More...

Description

Nonlinear solvers: Newton method.

Files

file  multidomain/newtonsolver.hh
 
file  findscalarroot.hh
 Root finding algorithms for scalar functions.
 
file  newtonconvergencewriter.hh
 This class provides the infrastructure to write the convergence behaviour of the newton method into a VTK file.
 
file  nonlinear/newtonsolver.hh
 Reference implementation of the Newton solver.
 
file  staggerednewtonconvergencewriter.hh
 This class provides the infrastructure to write the convergence behaviour of the newton method for the staggered discretization scheme into a VTK file.
 

Classes

class  Dumux::MultiDomainNewtonSolver< Assembler, LinearSolver, CouplingManager, Reassembler, Comm >
 Newton sover for coupled problems. More...
 
class  Dumux::NewtonConvergenceWriter< GridGeometry, SolutionVector >
 Writes the intermediate solutions for every Newton iteration. More...
 
class  Dumux::NewtonSolver< Assembler, LinearSolver, Reassembler, Comm >
 An implementation of a Newton solver. More...
 
class  Dumux::StaggeredNewtonConvergenceWriter< GridGeometry, SolutionVector >
 Writes the intermediate solutions for every Newton iteration (for staggered grid scheme) More...
 

Functions

template<class Scalar , class ResFunc , class DerivFunc , typename std::enable_if_t< std::is_invocable_r_v< Scalar, ResFunc, Scalar > &&std::is_invocable_r_v< Scalar, DerivFunc, Scalar > > ...>
Scalar Dumux::findScalarRootNewton (Scalar xOld, const ResFunc &residual, const DerivFunc &derivative, const Scalar tol=1e-13, const int maxIter=200)
 Newton's root finding algorithm for scalar functions (secant method) More...
 
template<class Scalar , class ResFunc , typename std::enable_if_t< std::is_invocable_r_v< Scalar, ResFunc, Scalar > > ...>
Scalar Dumux::findScalarRootNewton (Scalar xOld, const ResFunc &residual, const Scalar tol=1e-13, const int maxIter=200)
 Newton's root finding algorithm for scalar functions (secant method) More...
 
template<class Scalar , class ResFunc , typename std::enable_if_t< std::is_invocable_r_v< Scalar, ResFunc, Scalar > > ...>
Scalar Dumux::findScalarRootBrent (Scalar a, Scalar b, const ResFunc &residual, const Scalar tol=1e-13, const int maxIter=200)
 Brent's root finding algorithm for scalar functions. More...
 

Function Documentation

◆ findScalarRootBrent()

template<class Scalar , class ResFunc , typename std::enable_if_t< std::is_invocable_r_v< Scalar, ResFunc, Scalar > > ...>
Scalar Dumux::findScalarRootBrent ( Scalar  a,
Scalar  b,
const ResFunc &  residual,
const Scalar  tol = 1e-13,
const int  maxIter = 200 
)

Brent's root finding algorithm for scalar functions.

Note
Modified from pseudo-code on wikipedia: https://en.wikipedia.org/wiki/Brent%27s_method
See also R.P. Brent "An algorithm with guaranteed convergence for finding a zero of a function", The Computer Journal (1971).
This is usually more robust than Newton's method
Parameters
aLower bound
bUpper bound
residualResidual function
tolRelative shift tolerance
maxIterMaximum number of iterations

◆ findScalarRootNewton() [1/2]

template<class Scalar , class ResFunc , class DerivFunc , typename std::enable_if_t< std::is_invocable_r_v< Scalar, ResFunc, Scalar > &&std::is_invocable_r_v< Scalar, DerivFunc, Scalar > > ...>
Scalar Dumux::findScalarRootNewton ( Scalar  xOld,
const ResFunc &  residual,
const DerivFunc &  derivative,
const Scalar  tol = 1e-13,
const int  maxIter = 200 
)

Newton's root finding algorithm for scalar functions (secant method)

Parameters
xOldinitial guess
residualResidual function
derivativeDerivative of the residual
tolRelative shift tolerance
maxIterMaximum number of iterations

◆ findScalarRootNewton() [2/2]

template<class Scalar , class ResFunc , typename std::enable_if_t< std::is_invocable_r_v< Scalar, ResFunc, Scalar > > ...>
Scalar Dumux::findScalarRootNewton ( Scalar  xOld,
const ResFunc &  residual,
const Scalar  tol = 1e-13,
const int  maxIter = 200 
)

Newton's root finding algorithm for scalar functions (secant method)

Note
The derivative is numerically computed. If the derivative is know use signature with derivative function.
Parameters
xOldinitial guess
residualResidual function
tolRelative shift tolerance
maxIterMaximum number of iterations