OGS
NonlinearSystem.h
Go to the documentation of this file.
1
11#pragma once
12
13#include "EquationSystem.h"
14#include "Types.h"
15
16namespace NumLib
17{
20
25template <NonlinearSolverTag NLTag>
27
33template <>
35{
36public:
40 virtual void assemble(std::vector<GlobalVector*> const& x,
41 std::vector<GlobalVector*> const& x_prev,
42 int const process_id) = 0;
43
46 virtual std::vector<GlobalIndexType>
48
55 virtual void getResidual(GlobalVector const& x,
56 GlobalVector const& x_prev,
57 GlobalVector& res) const = 0;
58
63 virtual void getJacobian(GlobalMatrix& Jac) const = 0;
64
66 virtual void computeKnownSolutions(GlobalVector const& x,
67 int const process_id) = 0;
68
71 virtual void applyKnownSolutions(GlobalVector& x) const = 0;
72
77 GlobalMatrix& Jac, GlobalVector& res,
78 GlobalVector& minus_delta_x) const = 0;
79
80 virtual void updateConstraints(GlobalVector& /*lower*/,
81 GlobalVector& /*upper*/,
82 int /*process_id*/) = 0;
83};
84
91template <>
93{
94public:
98 virtual void assemble(std::vector<GlobalVector*> const& x,
99 std::vector<GlobalVector*> const& x_prev,
100 int const process_id) = 0;
101
104 virtual std::vector<GlobalIndexType>
106
109 virtual void getA(GlobalMatrix& A) const = 0;
110
113 virtual void getRhs(GlobalVector const& x_prev,
114 GlobalVector& rhs) const = 0;
115
117 virtual void computeKnownSolutions(GlobalVector const& x,
118 int const process_id) = 0;
119
122 virtual void applyKnownSolutions(GlobalVector& x) const = 0;
123
128 GlobalVector& x) const = 0;
129};
130
132} // namespace NumLib
Global vector based on Eigen vector.
Definition: EigenVector.h:25
virtual std::vector< GlobalIndexType > getIndicesOfResiduumWithoutInitialCompensation() const =0
virtual void updateConstraints(GlobalVector &, GlobalVector &, int)=0
virtual void assemble(std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id)=0
virtual void getJacobian(GlobalMatrix &Jac) const =0
virtual void getResidual(GlobalVector const &x, GlobalVector const &x_prev, GlobalVector &res) const =0
virtual void applyKnownSolutions(GlobalVector &x) const =0
virtual void applyKnownSolutionsNewton(GlobalMatrix &Jac, GlobalVector &res, GlobalVector &minus_delta_x) const =0
virtual void computeKnownSolutions(GlobalVector const &x, int const process_id)=0
Pre-compute known solutions and possibly store them internally.
virtual void applyKnownSolutionsPicard(GlobalMatrix &A, GlobalVector &rhs, GlobalVector &x) const =0
virtual void getA(GlobalMatrix &A) const =0
virtual std::vector< GlobalIndexType > getIndicesOfResiduumWithoutInitialCompensation() 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 assemble(std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id)=0
virtual void getRhs(GlobalVector const &x_prev, GlobalVector &rhs) const =0
NonlinearSolverTag
Tag used to specify which nonlinear solver will be used.
Definition: Types.h:20