58 AMREX_D_TERM(size(0) =
geom[0].ProbHi()[0] -
geom[0].ProbLo()[0];,
59 size(1) =
geom[0].ProbHi()[1] -
geom[0].ProbLo()[1];,
60 size(2) =
geom[0].ProbHi()[2] -
geom[0].ProbLo()[2];)
62 for (amrex::MFIter mfi(*a_field[lev],amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi)
65 amrex::IndexType ixtype = a_field[lev]->ixType();
66 if (ixtype == amrex::IndexType::TheCellType()) bx = mfi.growntilebox();
67 else if (ixtype == amrex::IndexType::TheNodeType()) bx = mfi.grownnodaltilebox();
69 int ncomp = a_field[lev]->nComp();
70 amrex::Array4<Set::Scalar>
const& field = a_field[lev]->array(mfi);
71 amrex::ParallelFor (bx,[=] AMREX_GPU_DEVICE(
int i,
int j,
int k) {
74 AMREX_D_TERM(x(0) =
geom[lev].ProbLo()[0] + ((amrex::Real)(i) + 0.5) *
geom[lev].CellSize()[0];,
75 x(1) =
geom[lev].ProbLo()[1] + ((amrex::Real)(j) + 0.5) *
geom[lev].CellSize()[1];,
76 x(2) =
geom[lev].ProbLo()[2] + ((amrex::Real)(k) + 0.5) *
geom[lev].CellSize()[2];);
78 amrex::Real min_distance = std::numeric_limits<amrex::Real>::infinity();
79 int min_grain_id = -1;
85 if (
geom[0].isPeriodic(0))
88 std::min( (x-
voronoi[n] + size(0)*Set::Vector::Unit(0)).lpNorm<2>(),
89 (x-
voronoi[n] - size(0)*Set::Vector::Unit(0)).lpNorm<2>()));
92 if (
geom[0].isPeriodic(1))
95 std::min( (x-
voronoi[n] + size(0)*Set::Vector::Unit(1)).lpNorm<2>(),
96 (x-
voronoi[n] - size(0)*Set::Vector::Unit(1)).lpNorm<2>()));
100 if (
geom[0].isPeriodic(2))
103 std::min( (x-
voronoi[n] + size(0)*Set::Vector::Unit(2)).lpNorm<2>(),
104 (x-
voronoi[n] - size(0)*Set::Vector::Unit(2)).lpNorm<2>()));