preCICE v3.2.0
Loading...
Searching...
No Matches
IQNILSAcceleration.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Core>
4#include <map>
5#include <vector>
9
10namespace precice::acceleration {
11
26public:
28 double initialRelaxation,
29 bool forceInitialRelaxation,
30 int maxIterationsUsed,
31 int pastTimeWindowsReused,
32 int filter,
33 double singularityLimit,
34 std::vector<int> dataIDs,
35 impl::PtrPreconditioner preconditioner,
36 bool reducedTimeGrid);
37
38 ~IQNILSAcceleration() override = default;
39
46 void specializedIterationsConverged(const DataMap &cplData) override;
47
48private:
51
53 void updateDifferenceMatrices(const DataMap &cplData) override;
54
56 void computeQNUpdate(Eigen::VectorXd &xUpdate) override;
57
59 void removeMatrixColumn(int columnIndex) override;
60
62 void specializedInitializeVectorsAndPreconditioner(const DataMap &cplData) final override {};
63};
64} // namespace precice::acceleration
std::map< int, cplscheme::PtrCouplingData > DataMap
Map from data ID to data values.
BaseQNAcceleration(double initialRelaxation, bool forceInitialRelaxation, int maxIterationsUsed, int timeWindowsReused, int filter, double singularityLimit, std::vector< int > dataIDs, impl::PtrPreconditioner preconditioner, bool reducedTimeGrid)
IQNILSAcceleration(double initialRelaxation, bool forceInitialRelaxation, int maxIterationsUsed, int pastTimeWindowsReused, int filter, double singularityLimit, std::vector< int > dataIDs, impl::PtrPreconditioner preconditioner, bool reducedTimeGrid)
void specializedInitializeVectorsAndPreconditioner(const DataMap &cplData) final override
void specializedIterationsConverged(const DataMap &cplData) override
Marks a iteration sequence as converged.
void removeMatrixColumn(int columnIndex) override
Removes one iteration from V,W matrices and adapts _matrixCols.
std::map< int, Eigen::VectorXd > _secondaryOldXTildes
Secondary data solver output from last iteration.
void computeQNUpdate(Eigen::VectorXd &xUpdate) override
computes the IQN-ILS update using QR decomposition
void updateDifferenceMatrices(const DataMap &cplData) override
updates the V, W matrices (as well as the matrices for the secondary data)
std::shared_ptr< Preconditioner > PtrPreconditioner
contains implementations of acceleration schemes.