Using keys not indices
parent
a7826ab417
commit
334c85a298
|
@ -508,8 +508,10 @@ Errors SubgraphPreconditioner::operator*(const VectorValues& y) const {
|
|||
void SubgraphPreconditioner::multiplyInPlace(const VectorValues& y, Errors& e) const {
|
||||
|
||||
Errors::iterator ei = e.begin();
|
||||
for (size_t i = 0; i < y.size(); ++i, ++ei)
|
||||
*ei = y[i];
|
||||
for(const auto& key_value: y) {
|
||||
*ei = key_value.second;
|
||||
++ei;
|
||||
}
|
||||
|
||||
// Add A2 contribution
|
||||
VectorValues x = Rc1()->backSubstitute(y); // x=inv(R1)*y
|
||||
|
@ -522,8 +524,10 @@ VectorValues SubgraphPreconditioner::operator^(const Errors& e) const {
|
|||
|
||||
Errors::const_iterator it = e.begin();
|
||||
VectorValues y = zero();
|
||||
for (size_t i = 0; i < y.size(); ++i, ++it)
|
||||
y[i] = *it;
|
||||
for(auto& key_value: y) {
|
||||
key_value.second = *it;
|
||||
++it;
|
||||
}
|
||||
transposeMultiplyAdd2(1.0, it, e.end(), y);
|
||||
return y;
|
||||
}
|
||||
|
@ -534,9 +538,10 @@ void SubgraphPreconditioner::transposeMultiplyAdd
|
|||
(double alpha, const Errors& e, VectorValues& y) const {
|
||||
|
||||
Errors::const_iterator it = e.begin();
|
||||
for (size_t i = 0; i < y.size(); ++i, ++it) {
|
||||
for(auto& key_value: y) {
|
||||
const Vector& ei = *it;
|
||||
axpy(alpha, ei, y[i]);
|
||||
axpy(alpha, ei, key_value.second);
|
||||
++it;
|
||||
}
|
||||
transposeMultiplyAdd2(alpha, it, e.end(), y);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue