202 for (
int lev = 0; lev <= finest_level; ++lev)
205 psi_mf[lev]->FillBoundary();
206 amrex::Box domain = this->geom[lev].Domain();
207 domain.convert(amrex::IntVect::TheNodeVector());
210 for (MFIter mfi(*
model_mf[lev],
false); mfi.isValid(); ++mfi)
212 amrex::Box bx = mfi.nodaltilebox();
215 amrex::Array4<Set::Vector>
const& rhs =
rhs_mf[lev]->array(mfi);
216 amrex::Array4<const Set::Scalar>
const& psi =
psi_mf[lev]->array(mfi);
217 amrex::Array4<const Set::Scalar>
const& trac_normal =
trac_normal_mf[lev]->array(mfi);
219 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) {
221 rhs(i,j,k) = trac_normal(i,j,k) * grad;
228 if (a_step > 0)
return;
230 for (
int lev = 0; lev <= finest_level; ++lev)
232 eta_mf[lev]->FillBoundary();
234 amrex::Box domain = this->geom[lev].Domain();
235 domain.convert(amrex::IntVect::TheNodeVector());
239 for (MFIter mfi(*
model_mf[lev],
false); mfi.isValid(); ++mfi)
241 amrex::Box bx = mfi.grownnodaltilebox();
243 amrex::Array4<MODEL>
const& model =
model_mf[lev]->array(mfi);
244 amrex::Array4<const Set::Scalar>
const& eta =
eta_mf[lev]->array(mfi);
246 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) {
247 model(i, j, k) = MODEL::Zero();
248 for (
unsigned int n = 0; n <
models.size(); n++)
249 model(i, j, k) += eta(i, j, k, n) *
models[n];
257 for (MFIter mfi(*
model_mf[lev],
false); mfi.isValid(); ++mfi)
259 amrex::Box bx = mfi.grownnodaltilebox() & domain;
260 amrex::Array4<MODEL>
const& model = this->
model_mf[lev]->array(mfi);
261 const Dim3 lo = amrex::lbound(domain), hi = amrex::ubound(domain);
263 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k)
265 if (i==lo.x && j==lo.y)
266 model(i,j,k) = 0.5*(model(i+1,j,k)+model(i,j+1,k));
267 else if (i==lo.x && j==hi.y)
268 model(i,j,k) = 0.5*(model(i+1,j,k)+model(i,j-1,k));
269 else if (i==hi.x && j==lo.y)
270 model(i,j,k) = 0.5*(model(i-1,j,k)+model(i,j+1,k));
271 else if (i==hi.x && j==hi.y)
272 model(i,j,k) = 0.5*(model(i-1,j,k)+model(i,j-1,k));
275 model(i,j,k) = model(i+1,j,k);
277 model(i,j,k) = model(i-1,j,k);
279 model(i,j,k) = model(i,j+1,k);
281 model(i,j,k) = model(i,j-1,k);
297 for (amrex::MFIter mfi(*
eta_mf[lev], TilingIfNotGPU()); mfi.isValid(); ++mfi)
299 amrex::Box bx = mfi.nodaltilebox();
300 amrex::Array4<char>
const& tags = a_tags.array(mfi);
301 amrex::Array4<Set::Scalar>
const& eta =
eta_mf[lev]->array(mfi);
302 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k)
305 for (
int n = 0; n <
eta_mf[lev]->nComp(); n++)
309 tags(i, j, k) = amrex::TagBox::SET;
314 amrex::Array4<Set::Scalar>
const& psi =
psi_mf[lev]->array(mfi);
315 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k)
321 tags(i, j, k) = amrex::TagBox::SET;