void ABec4::buildWorkSpace() { const BoxArray& ba = boxArray(); BL_ASSERT(resL.size()==0); resL.define(ba, 1, 0, Fab_allocate); }
void iMultiFab::FillBoundary (int scomp, int ncomp, bool local, bool cross) { if ( n_grow <= 0 ) return; if ( local ) { // // Do what you can with the FABs you own. No parallelism allowed. // const BoxArray& ba = boxArray(); const DistributionMapping& DMap = DistributionMap(); const int MyProc = ParallelDescriptor::MyProc(); #ifdef _OPENMP #pragma omp parallel #endif { std::vector< std::pair<int,Box> > isects; for (MFIter mfi(*this); mfi.isValid(); ++mfi) { const int i = mfi.index(); ba.intersections((*this)[mfi].box(),isects); for (int ii = 0, N = isects.size(); ii < N; ii++) { const Box& bx = isects[ii].second; const int iii = isects[ii].first; if (i != iii && DMap[iii] == MyProc) { (*this)[mfi].copy((*this)[iii], bx, scomp, bx, scomp, ncomp); } } } } } else { FabArray<IArrayBox>::FillBoundary(scomp,ncomp,cross); } }
void ABec4::setCoefficients (const MultiFab &_a, const MultiFab &_b) { aCoefficients(_a); bCoefficients(_b); if (LO_Op) { int level = 0; const BoxArray& cba = boxArray(level); LO_Op->aCoefficients(_a); bool do_harm = true; for (int d=0; d<BL_SPACEDIM; ++d) { BoxArray eba = BoxArray(cba).surroundingNodes(d); MultiFab btmp(eba,1,0); lo_cc2ec(_b,btmp,0,0,1,d,do_harm); LO_Op->bCoefficients(btmp,d); } } }