mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 13:40:46 +01:00
Make z in FGMRES a single Field
This commit is contained in:
parent
0f75ea52b7
commit
e843d83d9d
@ -165,16 +165,16 @@ class FlexibleGeneralisedMinimalResidual : public OperatorFunction<Field> {
|
|||||||
|
|
||||||
Field w(src._grid);
|
Field w(src._grid);
|
||||||
Field r(src._grid);
|
Field r(src._grid);
|
||||||
|
Field z(src._grid);
|
||||||
|
|
||||||
std::vector<Field> v(RestartLength + 1, src._grid);
|
std::vector<Field> v(RestartLength + 1, src._grid);
|
||||||
std::vector<Field> z(RestartLength + 1, src._grid);
|
|
||||||
|
|
||||||
MatrixTimer.Start();
|
MatrixTimer.Start();
|
||||||
LinOp.Op(psi, z[0]);
|
LinOp.Op(psi, z);
|
||||||
MatrixTimer.Stop();
|
MatrixTimer.Stop();
|
||||||
|
|
||||||
PrecTimer.Start();
|
PrecTimer.Start();
|
||||||
Preconditioner(z[0], r);
|
Preconditioner(z, r);
|
||||||
PrecTimer.Stop();
|
PrecTimer.Stop();
|
||||||
|
|
||||||
LinalgTimer.Start();
|
LinalgTimer.Start();
|
||||||
@ -210,14 +210,14 @@ class FlexibleGeneralisedMinimalResidual : public OperatorFunction<Field> {
|
|||||||
return cp;
|
return cp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void arnoldiStep(LinearOperatorBase<Field> &LinOp, std::vector<Field> &v, std::vector<Field> &z, Field &w, int iter) {
|
void arnoldiStep(LinearOperatorBase<Field> &LinOp, std::vector<Field> &v, Field &z, Field &w, int iter) {
|
||||||
|
|
||||||
MatrixTimer.Start();
|
MatrixTimer.Start();
|
||||||
LinOp.Op(v[iter], z[0]);
|
LinOp.Op(v[iter], z);
|
||||||
MatrixTimer.Stop();
|
MatrixTimer.Stop();
|
||||||
|
|
||||||
PrecTimer.Start();
|
PrecTimer.Start();
|
||||||
Preconditioner(z[0], w);
|
Preconditioner(z, w);
|
||||||
PrecTimer.Stop();
|
PrecTimer.Stop();
|
||||||
|
|
||||||
LinalgTimer.Start();
|
LinalgTimer.Start();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user