OGS
FixedDampingStrategy.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
5
6#include "DampingPolicy.h"
8
9namespace NumLib
10{
12{
13}
14
16 GlobalVector const& minus_delta_x,
17 GlobalVector const& /*res*/,
18 GlobalMatrix const& /*J*/,
19 GlobalVector& x_new,
20 NewtonStepContext& /*ctx*/,
21 int /*iteration*/)
22{
23 double damping = _damping;
24
26 {
27 damping = _damping_policy->apply(minus_delta_x, x, _damping);
28 }
29
30 MathLib::LinAlg::axpy(x_new, -damping, minus_delta_x);
31
32 return {.success = true, .step_length = damping, .x_new_is_set = true};
33}
34
35} // namespace NumLib
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
StepResult applyStep(GlobalVector const &x, GlobalVector const &minus_delta_x, GlobalVector const &res, GlobalMatrix const &J, GlobalVector &x_new, NewtonStepContext &ctx, int iteration) override
DampingPolicy const * _damping_policy
void axpy(PETScVector &y, PetscScalar const a, PETScVector const &x)
Definition LinAlg.cpp:50
Result returned by a step strategy's applyStep().