version 0.4.1
Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF > Class Template Reference

Newton-Raphson solver with subsidiary function. More...

#include <ikarus/solver/nonlinearsolver/newtonraphsonwithscalarsubsidiaryfunction.hh>

Inheritance diagram for Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >:
[legend]

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

Detailed Description

template<typename F, typename LS, typename UF>
class Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >

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.

Template Parameters
FType of the function.
LSType of the linear solver used internally (default is SolverDefault).
UFType of the update function (default is UpdateDefault).

Member Typedef Documentation

◆ CorrectionType

template<typename F , typename LS , typename UF >
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::CorrectionType = typename SignatureTraits::template Range<0>

◆ DifferentiableFunction

template<typename F , typename LS , typename UF >
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::DifferentiableFunction = F

◆ Domain

template<typename F , typename LS , typename UF >
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::Domain = typename SignatureTraits::Domain

◆ JacobianType

template<typename F , typename LS , typename UF >
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::JacobianType = typename SignatureTraits::template Range<1>

◆ Settings

template<typename F , typename LS , typename UF >
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::Settings = NewtonRaphsonWithSubsidiaryFunctionSettings

◆ SignatureTraits

template<typename F , typename LS , typename UF >
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::SignatureTraits = typename F::Traits

◆ State

using Ikarus::NonlinearSolverBase< F, Args >::State = NonlinearSolverStateType<F>
inherited

◆ UpdateFunctionType

template<typename F , typename LS , typename UF >
using Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::UpdateFunctionType = UF

Constructor & Destructor Documentation

◆ NewtonRaphsonWithSubsidiaryFunction()

template<typename F , typename LS , typename UF >
template<typename LS2 = LS, typename UF2 = UF>
Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::NewtonRaphsonWithSubsidiaryFunction ( const DifferentiableFunction residual,
LS2 &&  linearSolver = {},
UF2 &&  updateFunction = {} 
)
inlineexplicit
Parameters
residualresidual to solve.
linearSolverLinear solver used internally (default is SolverDefault).
updateFunctionUpdate function (default is UpdateDefault).

Member Function Documentation

◆ residual()

template<typename F , typename LS , typename UF >
auto & Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::residual ( )
inline
Returns
Reference to the residual function.

◆ setup()

template<typename F , typename LS , typename UF >
void Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::setup ( const Settings settings)
inline
Parameters
p_settingsSettings for the solver.

◆ solve()

template<typename F , typename LS , typename UF >
template<typename SubsidiaryType >
NonLinearSolverInformation Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::solve ( Domain req,
SubsidiaryType &&  subsidiaryFunction,
SubsidiaryArgs subsidiaryArgs 
)
inline
Template Parameters
SubsidiaryTypeType of the subsidiary function.
Parameters
subsidiaryFunctionSubsidiary function to be solved.
reqWhere the solution should be stored.
subsidiaryArgsAdditional arguments for the subsidiary function.
dxPredictorPredictor for the solution increment (default is NoPredictor).
Returns
Information about the solution process.

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

◆ station() [1/2]

Broadcaster< M > & Ikarus::Broadcasters< Signatures >::station ( )
inlineinherited

◆ station() [2/2]

const Broadcaster< M > & Ikarus::Broadcasters< Signatures >::station ( ) const
inlineinherited

Member Data Documentation

◆ isLinearSolver

template<typename F , typename LS , typename UF >
constexpr bool Ikarus::NewtonRaphsonWithSubsidiaryFunction< F, LS, UF >::isLinearSolver = Ikarus::Concepts::LinearSolverCheck<LS, JacobianType, CorrectionType>
staticconstexpr

The documentation for this class was generated from the following file: