Newton-Raphson solver with subsidiary function. More...
#include <ikarus/solver/nonlinearsolver/newtonraphsonwithscalarsubsidiaryfunction.hh>
Public Types | |
using | Settings = NewtonRaphsonWithSubsidiaryFunctionSettings |
using | SignatureTraits = typename F::Traits |
using | Domain = typename SignatureTraits::Domain |
Type representing the parameter vector of the Function. More... | |
using | CorrectionType = typename SignatureTraits::template Range< 0 > |
Type of the correction of x += deltaX. More... | |
using | JacobianType = typename SignatureTraits::template Range< 1 > |
Compile-time boolean indicating if the linear solver satisfies the non-linear solver concept. More... | |
using | UpdateFunctionType = UF |
using | DifferentiableFunction = F |
Type of the non-linear operator. More... | |
using | State = NonlinearSolverStateType< F > |
Public Member Functions | |
template<typename LS2 = LS, typename UF2 = UF> | |
NewtonRaphsonWithSubsidiaryFunction (const DifferentiableFunction &residual, LS2 &&linearSolver={}, UF2 &&updateFunction={}) | |
Constructor for NewtonRaphsonWithSubsidiaryFunction. More... | |
void | setup (const Settings &settings) |
Setup the Newton-Raphson solver with subsidiary function. More... | |
template<typename SubsidiaryType > | |
NonLinearSolverInformation | solve (Domain &req, SubsidiaryType &&subsidiaryFunction, SubsidiaryArgs &subsidiaryArgs) |
Solve the nonlinear system using the Newton-Raphson method with subsidiary function. More... | |
auto & | residual () |
Access the residual function. More... | |
Broadcaster< M > & | station () |
const Broadcaster< M > & | station () const |
Static Public Attributes | |
static constexpr bool | isLinearSolver = Ikarus::Concepts::LinearSolverCheck<LS, JacobianType, CorrectionType> |
Type representing the update function. More... | |
This class provides a Newton-Raphson solver for solving nonlinear systems with a subsidiary function. It uses a linear solver to handle the linear system arising in each iteration.
F | Type of the function. |
LS | Type of the linear solver used internally (default is SolverDefault). |
UF | Type of the update function (default is UpdateDefault). |
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::CorrectionType = typename SignatureTraits::template Range<0> |
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::DifferentiableFunction = F |
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::Domain = typename SignatureTraits::Domain |
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::JacobianType = typename SignatureTraits::template Range<1> |
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::Settings = NewtonRaphsonWithSubsidiaryFunctionSettings |
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::SignatureTraits = typename F::Traits |
|
inherited |
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::UpdateFunctionType = UF |
|
inlineexplicit |
residual | residual to solve. |
linearSolver | Linear solver used internally (default is SolverDefault). |
updateFunction | Update function (default is UpdateDefault). |
|
inline |
|
inline |
p_settings | Settings for the solver. |
|
inline |
SubsidiaryType | Type of the subsidiary function. |
subsidiaryFunction | Subsidiary function to be solved. |
req | Where the solution should be stored. |
subsidiaryArgs | Additional arguments for the subsidiary function. |
dxPredictor | Predictor for the solution increment (default is NoPredictor). |
Initializations
Determine Fext0 It is assumed that Fext = Fext0 * lambda such that dRdlambda = Fext0 Generalization for Fext0 = Fext0(lambda) is not implemented
Iterative solving scheme
Two-step solving procedure
|
inlineinherited |
|
inlineinherited |
|
staticconstexpr |