Exemple #1
0
void
ABec4::buildWorkSpace()
{
  const BoxArray& ba = boxArray();
  BL_ASSERT(resL.size()==0);
  resL.define(ba, 1, 0, Fab_allocate);
}
Exemple #2
0
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);
    }
}
Exemple #3
0
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);
    }
  }
}