OGS
NewtonStepStrategy.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <vector>
7
9#include "Types.h"
10
11namespace NumLib
12{
13class DampingPolicy;
14template <NonlinearSolverTag NLTag>
16
23{
25 std::vector<GlobalVector*> const& x_prev;
27};
28
31{
36 bool success;
37
41
47};
48
58{
59public:
64 virtual void initialize(GlobalVector const& /*x0*/) {}
65
78 GlobalVector const& minus_delta_x,
79 GlobalVector const& res,
80 GlobalMatrix const& J,
81 GlobalVector& x_new,
83 int iteration) = 0;
87 void setDampingPolicy(DampingPolicy const* policy)
88 {
89 _damping_policy = policy;
90 }
91
92 virtual ~NewtonStepStrategy() = default;
93
94protected:
96};
97
98} // namespace NumLib
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
virtual ~NewtonStepStrategy()=default
void setDampingPolicy(DampingPolicy const *policy)
virtual StepResult applyStep(GlobalVector const &x, GlobalVector const &minus_delta_x, GlobalVector const &res, GlobalMatrix const &J, GlobalVector &x_new, NewtonStepContext &ctx, int iteration)=0
DampingPolicy const * _damping_policy
virtual void initialize(GlobalVector const &)
NonlinearSystem< NonlinearSolverTag::Newton > & sys
std::vector< GlobalVector * > const & x_prev
Result returned by a step strategy's applyStep().