@@ -353,22 +353,36 @@ void MLCurlCurl::smooth4 (int amrlev, int mglev, MF& sol, MF const& rhs,
353
353
auto * plusolver = m_lusolver[amrlev][mglev]->dataPtr ();
354
354
ParallelFor (nmf, [=] AMREX_GPU_DEVICE (int bno, int i, int j, int k)
355
355
{
356
- mlcurlcurl_gs4 (i,j,k,ex[bno],ey[bno],ez[bno],rhsx[bno],rhsy[bno],rhsz[bno],
356
+ mlcurlcurl_gs4_lu (i,j,k,ex[bno],ey[bno],ez[bno],
357
+ rhsx[bno],rhsy[bno],rhsz[bno],
357
358
#if (AMREX_SPACEDIM == 2)
358
- b,
359
+ b,
359
360
#endif
360
- adxinv,color,*plusolver,dinfo,sinfo);
361
+ adxinv,color,*plusolver,dinfo,sinfo);
361
362
});
362
363
} else {
363
364
auto const & bcx = m_bcoefs[amrlev][mglev][0 ]->const_arrays ();
364
365
auto const & bcy = m_bcoefs[amrlev][mglev][1 ]->const_arrays ();
365
366
auto const & bcz = m_bcoefs[amrlev][mglev][2 ]->const_arrays ();
366
- ParallelFor (nmf, [=] AMREX_GPU_DEVICE (int bno, int i, int j, int k)
367
- {
367
+ if (m_use_pcg) {
368
+ ParallelFor (nmf, [=] AMREX_GPU_DEVICE (int bno, int i, int j, int k)
369
+ {
368
370
369
- mlcurlcurl_gs4 (i,j,k,ex[bno],ey[bno],ez[bno],rhsx[bno],rhsy[bno],rhsz[bno],
370
- adxinv,color,bcx[bno],bcy[bno],bcz[bno],dinfo,sinfo);
371
- });
371
+ mlcurlcurl_gs4<true >(i,j,k,ex[bno],ey[bno],ez[bno],
372
+ rhsx[bno],rhsy[bno],rhsz[bno],
373
+ adxinv,color,bcx[bno],bcy[bno],bcz[bno],
374
+ dinfo,sinfo);
375
+ });
376
+ } else {
377
+ ParallelFor (nmf, [=] AMREX_GPU_DEVICE (int bno, int i, int j, int k)
378
+ {
379
+
380
+ mlcurlcurl_gs4<false >(i,j,k,ex[bno],ey[bno],ez[bno],
381
+ rhsx[bno],rhsy[bno],rhsz[bno],
382
+ adxinv,color,bcx[bno],bcy[bno],bcz[bno],
383
+ dinfo,sinfo);
384
+ });
385
+ }
372
386
}
373
387
Gpu::streamSynchronize ();
374
388
}
0 commit comments