Exemplo n.º 1
0
Real
ABecLaplacian::norm (int nm, int level, const bool local)
{
    BL_PROFILE("ABecLaplacian::norm()");

    BL_ASSERT(nm == 0);
    const MultiFab& a   = aCoefficients(level);

    D_TERM(const MultiFab& bX  = bCoefficients(0,level);,
Exemplo n.º 2
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);
    }
  }
}
Exemplo n.º 3
0
void
ABec4::compFlux (D_DECL(MultiFab &xflux, MultiFab &yflux, MultiFab &zflux),
		 MultiFab& in, bool do_ApplyBC, const BC_Mode& bc_mode,
		 int src_comp, int dst_comp, int num_comp, int bnd_comp)
{
    const int level = 0;
    BL_ASSERT(num_comp==1);

    if (do_ApplyBC)
      applyBC(in,src_comp,num_comp,level,bc_mode,bnd_comp);

    const MultiFab& a = aCoefficients(level);
    const MultiFab& b = bCoefficients(level);

    const bool tiling = true;

#ifdef _OPENMP
#pragma omp parallel
#endif
    for (MFIter inmfi(in,tiling); inmfi.isValid(); ++inmfi)
    {
        D_TERM(const Box& xbx   = inmfi.nodaltilebox(0);,
	       const Box& ybx   = inmfi.nodaltilebox(1);,
Exemplo n.º 4
0
ABecLaplacian::~ABecLaplacian ()
{
    clearToLevel(-1);
}

Real
ABecLaplacian::norm (int nm, int level, const bool local)
{
    BL_PROFILE("ABecLaplacian::norm()");

    BL_ASSERT(nm == 0);
    const MultiFab& a   = aCoefficients(level);

    D_TERM(const MultiFab& bX  = bCoefficients(0,level);,
           const MultiFab& bY  = bCoefficients(1,level);,
           const MultiFab& bZ  = bCoefficients(2,level););

    //const int nc = a.nComp(); // FIXME: This LinOp only really support single-component
    const int nc = 1;
    Real res = 0.0;

    const bool tiling = true;

#ifdef _OPENMP
#pragma omp parallel reduction(max:res)
#endif
    {
	for (MFIter amfi(a,tiling); amfi.isValid(); ++amfi)
	{
	    Real tres;