21 template <
class Level>
27 template <
class Level>
41 for (
int d = 0; d < AMREX_SPACEDIM; ++d) {
44 if ( std::signbit(tmp) )
50 civ.coarsen(mglevel->refinement());
53 scalar_t dx = 0.5 * ( iv[0] - civ[0] * 2 ) - 0.25;
54 scalar_t dy = 0.5 * ( iv[1] - civ[1] * 2 ) - 0.25;
55 #if AMREX_SPACEDIM == 3
56 scalar_t dz = 0.5 * ( iv[2] - civ[2] * 2 ) - 0.25;
61 #if AMREX_SPACEDIM == 3
65 go_t crse_gidx = mglevel->serialize(civ);
66 scalar_t value = AMREX_D_TERM(xdiff, * ydiff, * zdiff) * scale;
68 if ( !mglevel->applyBoundary(civ, fab, map, value) )
69 map[crse_gidx] += value;
73 value = AMREX_D_TERM(dx, * ydiff, * zdiff) * scale;
74 if ( !mglevel->applyBoundary(tmp, map, value) )
75 map[mglevel->serialize(tmp)] += value;
79 value = AMREX_D_TERM(xdiff, * dy, * zdiff) * scale;
80 if ( !mglevel->applyBoundary(tmp, map, value) )
81 map[mglevel->serialize(tmp)] += value;
85 value = AMREX_D_TERM(dx, * dy, * zdiff) * scale;
86 if ( !mglevel->applyBoundary(tmp, map, value) )
87 map[mglevel->serialize(tmp)] += value;
89 #if AMREX_SPACEDIM == 3
92 value = AMREX_D_TERM(xdiff, * ydiff, * dz) * scale;
93 if ( !mglevel->applyBoundary(tmp, map, value) )
94 map[mglevel->serialize(tmp)] += value;
98 value = AMREX_D_TERM(dx, * ydiff, * dz) * scale;
99 if ( !mglevel->applyBoundary(tmp, map, value) )
100 map[mglevel->serialize(tmp)] += value;
104 value = AMREX_D_TERM(xdiff, * dy, * dz) * scale;
105 if ( !mglevel->applyBoundary(tmp, map, value) )
106 map[mglevel->serialize(tmp)] += value;
109 tmp =
AmrIntVect_t(D_DECL(civ[0]+1, civ[1]+1, civ[2]+1));
110 value = AMREX_D_TERM(dx, * dy, * dz) * scale;
111 if ( !mglevel->applyBoundary(tmp, map, value) )
112 map[mglevel->serialize(tmp)] += value;
117 template <
class Level>
130 template <
class Level>
142 this->stencil(iv, fab, map, scale, mglevel);
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
amrex::IntVect AmrIntVect_t
amr::AmrIntVect_t AmrIntVect_t
Level::basefab_t basefab_t
AmrTrilinearInterpolater()
void stencil(const AmrIntVect_t &iv, const basefab_t &fab, umap_t &map, const scalar_t &scale, Level *mglevel)
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)
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)