preCICE v3.2.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ResidualSumPreconditioner.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Core>
4#include <stddef.h>
5#include <string>
6#include <vector>
8#include "logging/Logger.hpp"
9
11
17public:
18 ResidualSumPreconditioner(int maxNonConstTimeWindows, bool preconditionerUpdateOnThreshold);
22 ~ResidualSumPreconditioner() override = default;
23
24 void initialize(std::vector<size_t> &svs) override;
25
26private:
32 void _update_(bool timeWindowComplete, const Eigen::VectorXd &oldValues, const Eigen::VectorXd &res) override;
33
34 logging::Logger _log{"acceleration::ResidualSumPreconditioner"};
35
38 bool _firstTimeWindow = true;
40};
41
42} // namespace precice::acceleration::impl
Interface for preconditioner variants that can be applied to quasi-Newton acceleration schemes.
Preconditioner that uses the residuals of all iterations of the current time window summed up to scal...
ResidualSumPreconditioner(int maxNonConstTimeWindows, bool preconditionerUpdateOnThreshold)
~ResidualSumPreconditioner() override=default
Destructor, empty.
void initialize(std::vector< size_t > &svs) override
initialize the preconditioner
void _update_(bool timeWindowComplete, const Eigen::VectorXd &oldValues, const Eigen::VectorXd &res) override
Update the scaling after every FSI iteration.
This class provides a lightweight logger.
Definition Logger.hpp:17