OGS
NumLib::NonlinearSystem< NonlinearSolverTag::Picard > Class Referenceabstract

Detailed Description

A System of nonlinear equations to be solved with the Picard fixpoint iteration method.

The Picard method will iterate the linearized equation \( \mathtt{A} \cdot x_i = \mathtt{rhs} \).

Definition at line 93 of file NonlinearSystem.h.

#include <NonlinearSystem.h>

Inheritance diagram for NumLib::NonlinearSystem< NonlinearSolverTag::Picard >:
[legend]
Collaboration diagram for NumLib::NonlinearSystem< NonlinearSolverTag::Picard >:
[legend]

Public Member Functions

virtual void assemble (std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id)=0
 
virtual std::vector< GlobalIndexTypegetIndicesOfResiduumWithoutInitialCompensation () const =0
 
virtual void getA (GlobalMatrix &A) const =0
 
virtual void getRhs (GlobalVector const &x_prev, GlobalVector &rhs) const =0
 
virtual void computeKnownSolutions (GlobalVector const &x, int const process_id)=0
 Pre-compute known solutions and possibly store them internally.
 
virtual void applyKnownSolutions (GlobalVector &x) const =0
 
virtual void applyKnownSolutionsPicard (GlobalMatrix &A, GlobalVector &rhs, GlobalVector &x) const =0
 
virtual MathLib::LinearSolverBehaviour linearSolverNeedsToCompute () const =0
 
- Public Member Functions inherited from NumLib::EquationSystem
virtual bool isLinear () const =0
 
virtual void preIteration (const unsigned iter, GlobalVector const &x)
 
virtual IterationResult postIteration (GlobalVector const &x)
 
virtual MathLib::MatrixSpecifications getMatrixSpecifications (const int process_id) const =0
 
virtual ~EquationSystem ()=default
 

Member Function Documentation

◆ applyKnownSolutions()

virtual void NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::applyKnownSolutions ( GlobalVector & x) const
pure virtual

Apply known solutions to the solution vector x.

Precondition
computeKnownSolutions() must have been called before.

◆ applyKnownSolutionsPicard()

virtual void NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::applyKnownSolutionsPicard ( GlobalMatrix & A,
GlobalVector & rhs,
GlobalVector & x ) const
pure virtual

Apply known solutions to the linearized equation system \( A \cdot x = \mathit{rhs} \).

Precondition
computeKnownSolutions() must have been called before.

◆ assemble()

virtual void NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::assemble ( std::vector< GlobalVector * > const & x,
std::vector< GlobalVector * > const & x_prev,
int const process_id )
pure virtual

Assembles the linearized equation system at the point x. The linearized system is \(J(x) \cdot \Delta x = (x)\). Here the residual vector \(r(x)\) and its Jacobian \(J(x)\) are assembled.

◆ computeKnownSolutions()

virtual void NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::computeKnownSolutions ( GlobalVector const & x,
int const process_id )
pure virtual

Pre-compute known solutions and possibly store them internally.

◆ getA()

virtual void NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::getA ( GlobalMatrix & A) const
pure virtual

Writes the linearized equation system matrix to A.

Precondition
assemble() must have been called before.

◆ getIndicesOfResiduumWithoutInitialCompensation()

virtual std::vector< GlobalIndexType > NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::getIndicesOfResiduumWithoutInitialCompensation ( ) const
pure virtual
Returns
The global indices for the entries of the global residuum vector that do not need initial non-equilibrium compensation.

◆ getRhs()

virtual void NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::getRhs ( GlobalVector const & x_prev,
GlobalVector & rhs ) const
pure virtual

Writes the linearized equation system right-hand side to rhs.

Precondition
assemble() must have been called before.

◆ linearSolverNeedsToCompute()

virtual MathLib::LinearSolverBehaviour NumLib::NonlinearSystem< NonlinearSolverTag::Picard >::linearSolverNeedsToCompute ( ) const
pure virtual

Returns whether the assembled matrix \(A\) has changed and the linear solver must perform the MathLib::EigenLinearSolver::compute() step.


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