21 for (
int d = 0; d < AMREX_SPACEDIM; ++d) {
24 if ( std::signbit(tmp) )
30 civ.coarsen(mglevel->refinement());
33 scalar_t dx = 0.5 * ( iv[0] - civ[0] * 2 ) - 0.25;
34 scalar_t dy = 0.5 * ( iv[1] - civ[1] * 2 ) - 0.25;
35 #if AMREX_SPACEDIM == 3
36 scalar_t dz = 0.5 * ( iv[2] - civ[2] * 2 ) - 0.25;
41 #if AMREX_SPACEDIM == 3
45 go_t crse_gidx = mglevel->serialize(civ);
46 scalar_t value = AMREX_D_TERM(xdiff, * ydiff, * zdiff) * scale;
48 if ( !mglevel->applyBoundary(civ, fab, map, value) )
49 map[crse_gidx] += value;
53 value = AMREX_D_TERM(dx, * ydiff, * zdiff) * scale;
54 if ( !mglevel->applyBoundary(tmp, map, value) )
55 map[mglevel->serialize(tmp)] += value;
59 value = AMREX_D_TERM(xdiff, * dy, * zdiff) * scale;
60 if ( !mglevel->applyBoundary(tmp, map, value) )
61 map[mglevel->serialize(tmp)] += value;
65 value = AMREX_D_TERM(dx, * dy, * zdiff) * scale;
66 if ( !mglevel->applyBoundary(tmp, map, value) )
67 map[mglevel->serialize(tmp)] += value;
69 #if AMREX_SPACEDIM == 3
72 value = AMREX_D_TERM(xdiff, * ydiff, * dz) * scale;
73 if ( !mglevel->applyBoundary(tmp, map, value) )
74 map[mglevel->serialize(tmp)] += value;
78 value = AMREX_D_TERM(dx, * ydiff, * dz) * scale;
79 if ( !mglevel->applyBoundary(tmp, map, value) )
80 map[mglevel->serialize(tmp)] += value;
84 value = AMREX_D_TERM(xdiff, * dy, * dz) * scale;
85 if ( !mglevel->applyBoundary(tmp, map, value) )
86 map[mglevel->serialize(tmp)] += value;
89 tmp =
AmrIntVect_t(D_DECL(civ[0]+1, civ[1]+1, civ[2]+1));
90 value = AMREX_D_TERM(dx, * dy, * dz) * scale;
91 if ( !mglevel->applyBoundary(tmp, map, value) )
92 map[mglevel->serialize(tmp)] += value;
97 template <
class Level>
110 template <
class Level>
122 this->stencil(iv, fab, map, scale, mglevel);
Level::basefab_t basefab_t
< Abstract base class for all coarse to fine cell interpolaters
void fine(const AmrIntVect_t &iv, umap_t &map, const scalar_t &scale, lo_t dir, lo_t shift, const basefab_t &fab, Level *mglevel)
AmrTrilinearInterpolater()
amrex::IntVect AmrIntVect_t
amr::AmrIntVect_t AmrIntVect_t
void stencil(const AmrIntVect_t &iv, const basefab_t &fab, umap_t &map, const scalar_t &scale, Level *mglevel)
void coarse(const AmrIntVect_t &iv, umap_t &map, const scalar_t &scale, lo_t dir, lo_t shift, const basefab_t &rfab, const AmrIntVect_t &riv, Level *mglevel)
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)