@@ -197,13 +197,14 @@ namespace ReSolve
197
197
vec_w_->setData (V->getVectorData (i + 1 , memspace), memspace);
198
198
vec_rv_->setCurrentSize (i + 1 );
199
199
200
- vector_handler_->massDot2Vec (n, V, i, vec_v_, vec_rv_, memspace);
200
+ // vector_handler_->massDot2Vec(n, V, i + 1, vec_v_, vec_rv_, memspace);
201
+ vector_handler_->massDot2Vec (n, V, i + 1 , vec_v_, vec_rv_, memspace);
201
202
vec_rv_->setDataUpdated (memspace);
202
203
vec_rv_->copyData (memspace, memory::HOST);
203
204
204
205
vec_rv_->deepCopyVectorData (&h_L_[idxmap (i, 0 , num_vecs_ + 1 )], 0 , memory::HOST);
205
206
h_rv_ = vec_rv_->getVectorData (1 , memory::HOST);
206
-
207
+
207
208
for (int j=0 ; j<=i; ++j) {
208
209
H[ idxmap (i, j, num_vecs_ + 1 ) ] = 0.0 ;
209
210
}
@@ -218,7 +219,7 @@ namespace ReSolve
218
219
} // for j
219
220
vec_Hcolumn_->setCurrentSize (i + 1 );
220
221
vec_Hcolumn_->update (&H[ idxmap (i, 0 , num_vecs_ + 1 )], memory::HOST, memspace);
221
- vector_handler_->massAxpy (n, vec_Hcolumn_, i, V, vec_w_, memspace);
222
+ vector_handler_->massAxpy (n, vec_Hcolumn_, i + 1 , V, vec_w_, memspace);
222
223
223
224
// normalize (second synch)
224
225
t = vector_handler_->dot (vec_w_, vec_w_, memspace);
@@ -228,6 +229,11 @@ namespace ReSolve
228
229
if (fabs (t) > EPSILON) {
229
230
t = 1.0 / t;
230
231
vector_handler_->scal (&t, vec_w_, memspace);
232
+ for (int ii=0 ; ii<=i; ++ii)
233
+ {
234
+ vec_v_->setData (V->getVectorData (ii, memspace), memspace);
235
+ vec_w_->setData (V->getVectorData (i + 1 , memspace), memspace);
236
+ }
231
237
} else {
232
238
assert (0 && " Iterative refinement failed, Krylov vector with ZERO norm\n " );
233
239
return -1 ;
@@ -240,7 +246,7 @@ namespace ReSolve
240
246
vec_w_->setData (V->getVectorData (i + 1 , memspace), memspace);
241
247
vec_rv_->setCurrentSize (i + 1 );
242
248
243
- vector_handler_->massDot2Vec (n, V, i, vec_v_, vec_rv_, memspace);
249
+ vector_handler_->massDot2Vec (n, V, i + 1 , vec_v_, vec_rv_, memspace);
244
250
vec_rv_->setDataUpdated (memspace);
245
251
vec_rv_->copyData (memspace, memory::HOST);
246
252
@@ -290,7 +296,7 @@ namespace ReSolve
290
296
vec_Hcolumn_->setCurrentSize (i + 1 );
291
297
vec_Hcolumn_->update (&H[ idxmap (i, 0 , num_vecs_ + 1 )], memory::HOST, memspace);
292
298
293
- vector_handler_->massAxpy (n, vec_Hcolumn_, i, V, vec_w_, memspace);
299
+ vector_handler_->massAxpy (n, vec_Hcolumn_, i + 1 , V, vec_w_, memspace);
294
300
// normalize (second synch)
295
301
t = vector_handler_->dot (vec_w_, vec_w_, memspace);
296
302
// set the last entry in Hessenberg matrix
0 commit comments