23 PS (amrex::Vector<amrex::Geometry> &a_geom) :
IC(a_geom) {}
28 Define(a_nspheres,a_matrix,a_inclusion);
51 AMREX_D_TERM(size(0) =
geom[0].ProbHi()[0] -
geom[0].ProbLo()[0];,
52 size(1) =
geom[0].ProbHi()[1] -
geom[0].ProbLo()[1];,
53 size(2) =
geom[0].ProbHi()[2] -
geom[0].ProbLo()[2];)
54 amrex::IndexType type = a_field[lev]->ixType();
56 for (amrex::MFIter mfi(*a_field[lev],amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi)
58 amrex::Box bx = mfi.tilebox();
60 amrex::Array4<Set::Scalar>
const& field = a_field[lev]->array(mfi);
61 amrex::ParallelFor (bx,[=] AMREX_GPU_DEVICE(
int i,
int j,
int k) {
70 if (
geom[lev].isPeriodic(0))
72 d = std::min(d,std::min((x-
points[n] + size(0)*Set::Vector::Unit(0)).lpNorm<2>(),
73 (x-
points[n] - size(0)*Set::Vector::Unit(0)).lpNorm<2>()));
76 if (
geom[lev].isPeriodic(1))
78 d = std::min(d,std::min((x-
points[n] + size(1)*Set::Vector::Unit(1)).lpNorm<2>(),
79 (x-
points[n] - size(1)*Set::Vector::Unit(1)).lpNorm<2>()));
83 if (
geom[lev].isPeriodic(2))
85 d = std::min(d,std::min((x-
points[n] + size(2)*Set::Vector::Unit(2)).lpNorm<2>(),
86 (x-
points[n] - size(2)*Set::Vector::Unit(2)).lpNorm<2>()));
89 if (d<
radii[n]) inside =
true;
93 else field(i,j,k) +=
matrix;
111 pp_query(
"inclusion",tmp_inclusion);
112 value.
Define(tmp_nspheres,tmp_matrix,tmp_inclusion);