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
4
#include "
FixedDampingStrategy.h
"
5
6
#include "
DampingPolicy.h
"
7
#include "
MathLib/LinAlg/LinAlg.h
"
8
9
namespace
NumLib
10
{
11
FixedDampingStrategy::FixedDampingStrategy
(
double
damping) :
_damping
(damping)
12
{
13
}
14
15
StepResult
FixedDampingStrategy::applyStep
(
GlobalVector
const
& x,
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
25
if
(
_damping_policy
)
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
DampingPolicy.h
FixedDampingStrategy.h
GlobalMatrix
MathLib::EigenMatrix GlobalMatrix
Definition
GlobalMatrixVectorTypes.h:17
GlobalVector
MathLib::EigenVector GlobalVector
Definition
GlobalMatrixVectorTypes.h:16
LinAlg.h
NumLib::FixedDampingStrategy::applyStep
StepResult applyStep(GlobalVector const &x, GlobalVector const &minus_delta_x, GlobalVector const &res, GlobalMatrix const &J, GlobalVector &x_new, NewtonStepContext &ctx, int iteration) override
Definition
FixedDampingStrategy.cpp:15
NumLib::FixedDampingStrategy::_damping
double _damping
Definition
FixedDampingStrategy.h:29
NumLib::FixedDampingStrategy::FixedDampingStrategy
FixedDampingStrategy(double damping)
Definition
FixedDampingStrategy.cpp:11
NumLib::NewtonStepStrategy::_damping_policy
DampingPolicy const * _damping_policy
Definition
NewtonStepStrategy.h:95
MathLib::LinAlg::axpy
void axpy(PETScVector &y, PetscScalar const a, PETScVector const &x)
Definition
LinAlg.cpp:50
NumLib
Definition
ProjectData.h:31
NumLib::NewtonStepContext
Definition
NewtonStepStrategy.h:23
NumLib::StepResult
Result returned by a step strategy's applyStep().
Definition
NewtonStepStrategy.h:31
NumLib
ODESolver
FixedDampingStrategy.cpp
Generated by
1.14.0