Preconditioner that uses the residuals of all iterations of the current time window summed up to scale the quasi-Newton system. This is somewhat similar to what is done in the Marks and Luke paper.
More...
#include <ResidualSumPreconditioner.hpp>
|
| ResidualSumPreconditioner (int maxNonConstTimeWindows) |
|
virtual | ~ResidualSumPreconditioner () |
| Destructor, empty.
|
|
virtual void | initialize (std::vector< size_t > &svs) |
| initialize the preconditioner
|
|
| Preconditioner (int maxNonConstTimeWindows) |
|
virtual | ~Preconditioner () |
| Destructor, empty.
|
|
void | apply (Eigen::MatrixXd &M, bool transpose) |
| Apply preconditioner to matrix.
|
|
void | revert (Eigen::MatrixXd &M, bool transpose) |
| Apply inverse preconditioner to matrix.
|
|
void | apply (Eigen::MatrixXd &M) |
| To transform physical values to balanced values. Matrix version.
|
|
void | apply (Eigen::VectorXd &v) |
| To transform physical values to balanced values. Vector version.
|
|
void | revert (Eigen::MatrixXd &M) |
| To transform balanced values back to physical values. Matrix version.
|
|
void | revert (Eigen::VectorXd &v) |
| To transform balanced values back to physical values. Vector version.
|
|
void | update (bool timeWindowComplete, const Eigen::VectorXd &oldValues, const Eigen::VectorXd &res) |
| Update the scaling after every FSI iteration and require a new QR decomposition (if necessary)
|
|
bool | requireNewQR () |
| returns true if a QR decomposition from scratch is necessary
|
|
void | newQRfulfilled () |
| to tell the preconditioner that QR-decomposition has been recomputed
|
|
std::vector< double > & | getWeights () |
|
bool | isConst () |
|
|
virtual void | _update_ (bool timeWindowComplete, const Eigen::VectorXd &oldValues, const Eigen::VectorXd &res) |
| Update the scaling after every FSI iteration.
|
|
|
std::vector< double > | _weights |
| Weights used to scale the matrix V and the residual.
|
|
std::vector< double > | _invWeights |
| Inverse weights (for efficiency reasons)
|
|
std::vector< size_t > | _subVectorSizes |
| Sizes of each sub-vector, i.e. each coupling data.
|
|
int | _maxNonConstTimeWindows |
| maximum number of non-const time windows, i.e., after this number of time windows, the preconditioner is frozen with the current weights and becomes a constant preconditioner
|
|
int | _nbNonConstTimeWindows = 0 |
| Counts the number of completed time windows with a non-const weighting.
|
|
bool | _requireNewQR = false |
| True if a QR decomposition from scratch is necessary.
|
|
bool | _frozen = false |
| True if _nbNonConstTimeWindows >= _maxNonConstTimeWindows, i.e., preconditioner is not updated any more.
|
|
Preconditioner that uses the residuals of all iterations of the current time window summed up to scale the quasi-Newton system. This is somewhat similar to what is done in the Marks and Luke paper.
Definition at line 18 of file ResidualSumPreconditioner.hpp.
◆ ResidualSumPreconditioner()
precice::acceleration::impl::ResidualSumPreconditioner::ResidualSumPreconditioner |
( |
int | maxNonConstTimeWindows | ) |
|
◆ ~ResidualSumPreconditioner()
virtual precice::acceleration::impl::ResidualSumPreconditioner::~ResidualSumPreconditioner |
( |
| ) |
|
|
inlinevirtual |
◆ _update_()
void precice::acceleration::impl::ResidualSumPreconditioner::_update_ |
( |
bool | timeWindowComplete, |
|
|
const Eigen::VectorXd & | oldValues, |
|
|
const Eigen::VectorXd & | res ) |
|
privatevirtual |
◆ initialize()
void precice::acceleration::impl::ResidualSumPreconditioner::initialize |
( |
std::vector< size_t > & | svs | ) |
|
|
virtual |
◆ _log
logging::Logger precice::acceleration::impl::ResidualSumPreconditioner::_log {"acceleration::ResidualSumPreconditioner"} |
|
private |
◆ _residualSum
std::vector<double> precice::acceleration::impl::ResidualSumPreconditioner::_residualSum |
|
private |
The documentation for this class was generated from the following files: