@@ -12,8 +12,8 @@ class MLCGSolverT
1212{
1313public:
1414
15- using FAB = typename MF::fab_type ;
16- using RT = typename MF::value_type ;
15+ using FAB = typename MLLinOpT<MF>::FAB ;
16+ using RT = typename MLLinOpT<MF>::RT ;
1717
1818 enum struct Type { BiCGStab, CG };
1919
@@ -99,12 +99,12 @@ MLCGSolverT<MF>::solve_bicgstab (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
9999{
100100 BL_PROFILE (" MLCGSolver::bicgstab" );
101101
102- const int ncomp = sol. nComp ();
102+ const int ncomp = nComp (sol );
103103
104- MF p = Lp.make (amrlev, mglev, sol. nGrowVect ());
105- MF r = Lp.make (amrlev, mglev, sol. nGrowVect ());
106- p. setVal (RT (0.0 )); // Make sure all entries are initialized to avoid errors
107- r. setVal (RT (0.0 ));
104+ MF p = Lp.make (amrlev, mglev, nGrowVect (sol ));
105+ MF r = Lp.make (amrlev, mglev, nGrowVect (sol ));
106+ setVal (p, RT (0.0 )); // Make sure all entries are initialized to avoid errors
107+ setVal (r, RT (0.0 ));
108108
109109 MF rh = Lp.make (amrlev, mglev, nghost);
110110 MF v = Lp.make (amrlev, mglev, nghost);
@@ -114,19 +114,19 @@ MLCGSolverT<MF>::solve_bicgstab (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
114114 MF sorig;
115115
116116 if ( initial_vec_zeroed ) {
117- r. LocalCopy (rhs,0 ,0 ,ncomp,nghost);
117+ LocalCopy (r, rhs,0 ,0 ,ncomp,nghost);
118118 } else {
119119 sorig = Lp.make (amrlev, mglev, nghost);
120120
121121 Lp.correctionResidual (amrlev, mglev, r, sol, rhs, MLLinOpT<MF>::BCMode::Homogeneous);
122122
123- sorig. LocalCopy (sol,0 ,0 ,ncomp,nghost);
124- sol. setVal (RT (0.0 ));
123+ LocalCopy (sorig, sol,0 ,0 ,ncomp,nghost);
124+ setVal (sol, RT (0.0 ));
125125 }
126126
127127 // Then normalize
128128 Lp.normalize (amrlev, mglev, r);
129- rh. LocalCopy (r , 0 ,0 ,ncomp,nghost);
129+ LocalCopy (rh, r, 0 ,0 ,ncomp,nghost);
130130
131131 RT rnorm = norm_inf (r);
132132 const RT rnorm0 = rnorm;
@@ -159,13 +159,13 @@ MLCGSolverT<MF>::solve_bicgstab (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
159159 }
160160 if ( iter == 1 )
161161 {
162- p. LocalCopy (r,0 ,0 ,ncomp,nghost);
162+ LocalCopy (p, r,0 ,0 ,ncomp,nghost);
163163 }
164164 else
165165 {
166166 const RT beta = (rho/rho_1)*(alpha/omega);
167- MF:: Saxpy (p, -omega, v, 0 , 0 , ncomp, nghost); // p += -omega*v
168- MF:: Xpay (p, beta, r, 0 , 0 , ncomp, nghost); // p = r + beta*p
167+ Saxpy (p, -omega, v, 0 , 0 , ncomp, nghost); // p += -omega*v
168+ Xpay (p, beta, r, 0 , 0 , ncomp, nghost); // p = r + beta*p
169169 }
170170 Lp.apply (amrlev, mglev, v, p, MLLinOpT<MF>::BCMode::Homogeneous, MLLinOpT<MF>::StateMode::Correction);
171171 Lp.normalize (amrlev, mglev, v);
@@ -179,8 +179,8 @@ MLCGSolverT<MF>::solve_bicgstab (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
179179 {
180180 ret = 2 ; break ;
181181 }
182- MF:: Saxpy (sol, alpha, p, 0 , 0 , ncomp, nghost); // sol += alpha * p
183- MF:: Saxpy (r, -alpha, v, 0 , 0 , ncomp, nghost); // r += -alpha * v
182+ Saxpy (sol, alpha, p, 0 , 0 , ncomp, nghost); // sol += alpha * p
183+ Saxpy (r, -alpha, v, 0 , 0 , ncomp, nghost); // r += -alpha * v
184184
185185 rnorm = norm_inf (r);
186186 rnorm = norm_inf (r);
@@ -216,8 +216,8 @@ MLCGSolverT<MF>::solve_bicgstab (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
216216 {
217217 ret = 3 ; break ;
218218 }
219- MF:: Saxpy (sol, omega, r, 0 , 0 , ncomp, nghost); // sol += omega * r
220- MF:: Saxpy (r, -omega, t, 0 , 0 , ncomp, nghost); // r += -omega * t
219+ Saxpy (sol, omega, r, 0 , 0 , ncomp, nghost); // sol += omega * r
220+ Saxpy (r, -omega, t, 0 , 0 , ncomp, nghost); // r += -omega * t
221221
222222 rnorm = norm_inf (r);
223223
@@ -257,14 +257,14 @@ MLCGSolverT<MF>::solve_bicgstab (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
257257 if ( ( ret == 0 || ret == 8 ) && (rnorm < rnorm0) )
258258 {
259259 if ( !initial_vec_zeroed ) {
260- sol. LocalAdd (sorig, 0 , 0 , ncomp, nghost);
260+ LocalAdd (sol, sorig, 0 , 0 , ncomp, nghost);
261261 }
262262 }
263263 else
264264 {
265- sol. setVal (RT (0.0 ));
265+ setVal (sol, RT (0.0 ));
266266 if ( !initial_vec_zeroed ) {
267- sol. LocalAdd (sorig, 0 , 0 , ncomp, nghost);
267+ LocalAdd (sol, sorig, 0 , 0 , ncomp, nghost);
268268 }
269269 }
270270
@@ -277,25 +277,25 @@ MLCGSolverT<MF>::solve_cg (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
277277{
278278 BL_PROFILE (" MLCGSolver::cg" );
279279
280- const int ncomp = sol. nComp ();
280+ const int ncomp = nComp (sol );
281281
282- MF p = Lp.make (amrlev, mglev, sol. nGrowVect ());
283- p. setVal (RT (0.0 ));
282+ MF p = Lp.make (amrlev, mglev, nGrowVect (sol ));
283+ setVal (p, RT (0.0 ));
284284
285285 MF r = Lp.make (amrlev, mglev, nghost);
286286 MF q = Lp.make (amrlev, mglev, nghost);
287287
288288 MF sorig;
289289
290290 if ( initial_vec_zeroed ) {
291- r. LocalCopy (rhs,0 ,0 ,ncomp,nghost);
291+ LocalCopy (r, rhs,0 ,0 ,ncomp,nghost);
292292 } else {
293293 sorig = Lp.make (amrlev, mglev, nghost);
294294
295295 Lp.correctionResidual (amrlev, mglev, r, sol, rhs, MLLinOpT<MF>::BCMode::Homogeneous);
296296
297- sorig. LocalCopy (sol,0 ,0 ,ncomp,nghost);
298- sol. setVal (RT (0.0 ));
297+ LocalCopy (sorig, sol,0 ,0 ,ncomp,nghost);
298+ setVal (sol, RT (0.0 ));
299299 }
300300
301301 RT rnorm = norm_inf (r);
@@ -330,12 +330,12 @@ MLCGSolverT<MF>::solve_cg (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
330330 }
331331 if (iter == 1 )
332332 {
333- p. LocalCopy (r,0 ,0 ,ncomp,nghost);
333+ LocalCopy (p, r,0 ,0 ,ncomp,nghost);
334334 }
335335 else
336336 {
337337 RT beta = rho/rho_1;
338- MF:: Xpay (p, beta, r, 0 , 0 , ncomp, nghost); // p = r + beta * p
338+ Xpay (p, beta, r, 0 , 0 , ncomp, nghost); // p = r + beta * p
339339 }
340340 Lp.apply (amrlev, mglev, q, p, MLLinOpT<MF>::BCMode::Homogeneous, MLLinOpT<MF>::StateMode::Correction);
341341
@@ -357,8 +357,8 @@ MLCGSolverT<MF>::solve_cg (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
357357 << " rho " << rho
358358 << " alpha " << alpha << ' \n ' ;
359359 }
360- MF:: Saxpy (sol, alpha, p, 0 , 0 , ncomp, nghost); // sol += alpha * p
361- MF:: Saxpy (r, -alpha, q, 0 , 0 , ncomp, nghost); // r += -alpha * q
360+ Saxpy (sol, alpha, p, 0 , 0 , ncomp, nghost); // sol += alpha * p
361+ Saxpy (r, -alpha, q, 0 , 0 , ncomp, nghost); // r += -alpha * q
362362 rnorm = norm_inf (r);
363363
364364 if ( verbose > 2 )
@@ -393,14 +393,14 @@ MLCGSolverT<MF>::solve_cg (MF& sol, const MF& rhs, RT eps_rel, RT eps_abs)
393393 if ( ( ret == 0 || ret == 8 ) && (rnorm < rnorm0) )
394394 {
395395 if ( !initial_vec_zeroed ) {
396- sol. LocalAdd (sorig, 0 , 0 , ncomp, nghost);
396+ LocalAdd (sol, sorig, 0 , 0 , ncomp, nghost);
397397 }
398398 }
399399 else
400400 {
401- sol. setVal (RT (0.0 ));
401+ setVal (sol, RT (0.0 ));
402402 if ( !initial_vec_zeroed ) {
403- sol. LocalAdd (sorig, 0 , 0 , ncomp, nghost);
403+ LocalAdd (sol, sorig, 0 , 0 , ncomp, nghost);
404404 }
405405 }
406406
@@ -422,8 +422,8 @@ template <typename MF>
422422auto
423423MLCGSolverT<MF>::norm_inf (const MF& res, bool local) -> RT
424424{
425- int ncomp = res. nComp ();
426- RT result = res. norminf (0 ,ncomp,IntVect (0 ),true );
425+ int ncomp = nComp (res );
426+ RT result = norminf (res, 0 ,ncomp,IntVect (0 ),true );
427427 if (!local) {
428428 BL_PROFILE (" MLCGSolver::ParallelAllReduce" );
429429 ParallelAllReduce::Max (result, Lp.BottomCommunicator ());
0 commit comments