Ejemplo n.º 1
0
Real
MCLinOp::norm (const MultiFab& in,
	       int             level) const
{
    Real norm = 0.0;
    for (MFIter inmfi(in); inmfi.isValid(); ++inmfi)
    {
        Real tnorm = in[inmfi].norm(gbox[level][inmfi.index()]);
	norm += tnorm*tnorm;
    }
    ParallelDescriptor::ReduceRealSum(norm);
    return norm;
}
Ejemplo n.º 2
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);,