preCICE v3.2.0
Loading...
Searching...
No Matches
AitkenAcceleration.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Core>
4#include <algorithm>
5#include <map>
6#include <string>
7#include <vector>
11#include "logging/Logger.hpp"
12
13namespace precice::acceleration {
14
16public:
18 double initialRelaxationFactor,
19 std::vector<int> dataIDs,
20 impl::PtrPreconditioner preconditioner);
21
22 ~AitkenAcceleration() override = default;
23
24 std::vector<int> getPrimaryDataIDs() const final override
25 {
26 return _primaryDataIDs;
27 }
28
29 void initialize(
30 const DataMap &cpldata) final override;
31
33 DataMap &cpldata,
34 double windowStart,
35 double windowEnd) final override;
36
38 const DataMap &cpldata, double windowStart) final override;
39
40private:
43 const DataMap &cplData, const std::vector<DataID> &dataIDs, Eigen::VectorXd &targetValues, Eigen::VectorXd &targetOldValues, double windowStart, double windowEnd) const;
44
45 logging::Logger _log{"acceleration::AitkenAcceleration"};
46
47 const double _initialRelaxation;
48
50
52
54
55 Eigen::VectorXd _oldResiduals;
56 Eigen::VectorXd _values;
57 Eigen::VectorXd _oldValues;
58
61};
62} // namespace precice::acceleration
std::map< int, PtrCouplingData > DataMap
void performAcceleration(DataMap &cpldata, double windowStart, double windowEnd) final override
std::vector< int > getPrimaryDataIDs() const final override
void initialize(const DataMap &cpldata) final override
AitkenAcceleration(double initialRelaxationFactor, std::vector< int > dataIDs, impl::PtrPreconditioner preconditioner)
void concatenateCouplingData(const DataMap &cplData, const std::vector< DataID > &dataIDs, Eigen::VectorXd &targetValues, Eigen::VectorXd &targetOldValues, double windowStart, double windowEnd) const
Concatenates the data and old data in cplData into two long vectors.
impl::PtrPreconditioner _preconditioner
Preconditioner for data vector if multiple data sets are used.
void iterationsConverged(const DataMap &cpldata, double windowStart) final override
This class provides a lightweight logger.
Definition Logger.hpp:17
std::shared_ptr< Preconditioner > PtrPreconditioner
contains implementations of acceleration schemes.