void MultiGrid::average (MultiFab& c, const MultiFab& f) { BL_PROFILE("MultiGrid::average()"); // // Use Fortran function to average down (restrict) f to c. // const bool tiling = true; #ifdef _OPENMP #pragma omp parallel #endif for (MFIter cmfi(c,tiling); cmfi.isValid(); ++cmfi) { BL_ASSERT(c.boxArray().get(cmfi.index()) == cmfi.validbox()); const int nc = c.nComp(); const Box& bx = cmfi.tilebox(); FArrayBox& cfab = c[cmfi]; const FArrayBox& ffab = f[cmfi]; FORT_AVERAGE(cfab.dataPtr(), ARLIM(cfab.loVect()), ARLIM(cfab.hiVect()), ffab.dataPtr(), ARLIM(ffab.loVect()), ARLIM(ffab.hiVect()), bx.loVect(), bx.hiVect(), &nc); } }
void MCMultiGrid::average (MultiFab& c, const MultiFab& f) { // // Use Fortran function to average down (restrict) f to c. // for (MFIter cmfi(c); cmfi.isValid(); ++cmfi) { const Box& bx = cmfi.validbox(); int nc = c.nComp(); FArrayBox& cfab = c[cmfi]; const FArrayBox& ffab = f[cmfi]; FORT_AVERAGE( cfab.dataPtr(),ARLIM(cfab.loVect()),ARLIM(cfab.hiVect()), ffab.dataPtr(),ARLIM(ffab.loVect()),ARLIM(ffab.hiVect()), bx.loVect(), bx.hiVect(), &nc); } }