Skip to content

Commit 9b733ec

Browse files
authored
solve_cg: avoid use of MF z (#3637)
## Summary The method `solve_cg` is modified so that the MF `z` is no longer used, thus saving on memory usage. ## Additional background This is similar to the PR that changed `solve_bicgstab` that avoided use of `s`.
1 parent 0cd1385 commit 9b733ec

File tree

1 file changed

+3
-6
lines changed

1 file changed

+3
-6
lines changed

Src/LinearSolvers/MLMG/AMReX_MLCGSolver.H

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@ MLCGSolverT<MF>::solve_cg (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
262262

263263
MF sorig = Lp.make(amrlev, mglev, nghost);
264264
MF r = Lp.make(amrlev, mglev, nghost);
265-
MF z = Lp.make(amrlev, mglev, nghost);
266265
MF q = Lp.make(amrlev, mglev, nghost);
267266

268267
sorig.LocalCopy(sol,0,0,ncomp,nghost);
@@ -295,22 +294,20 @@ MLCGSolverT<MF>::solve_cg (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
295294

296295
for (; iter <= maxiter; ++iter)
297296
{
298-
z.LocalCopy(r,0,0,ncomp,nghost);
299-
300-
RT rho = dotxy(z,r);
297+
RT rho = dotxy(r,r);
301298

302299
if ( rho == 0 )
303300
{
304301
ret = 1; break;
305302
}
306303
if (iter == 1)
307304
{
308-
p.LocalCopy(z,0,0,ncomp,nghost);
305+
p.LocalCopy(r,0,0,ncomp,nghost);
309306
}
310307
else
311308
{
312309
RT beta = rho/rho_1;
313-
MF::Xpay(p, beta, z, 0, 0, ncomp, nghost); // p = z + beta * p
310+
MF::Xpay(p, beta, r, 0, 0, ncomp, nghost); // p = r + beta * p
314311
}
315312
Lp.apply(amrlev, mglev, q, p, MLLinOpT<MF>::BCMode::Homogeneous, MLLinOpT<MF>::StateMode::Correction);
316313

0 commit comments

Comments
 (0)