283 int dcomp,
int numcomp,
291 Box gdomain = domain;
292 for (
int idim = 0; idim < AMREX_SPACEDIM; ++idim) {
294 gdomain.
grow(idim,len[idim]);
298 if (gdomain.
contains(bx)) {
return; }
301 const auto geomdata = geom.
data();
306 const auto f_user = m_user_f;
315 for (
int n = dcomp; n < dcomp+numcomp; ++n) {
316 fab(i,j,k,n) = fab(dxlo,j,k,n);
319 bcr_p, 0, orig_comp);
326 int dxhi = domain.
bigEnd(0);
330 for (
int n = dcomp; n < dcomp+numcomp; ++n) {
331 fab(i,j,k,n) = fab(dxhi,j,k,n);
334 bcr_p, 0, orig_comp);
338#if (AMREX_SPACEDIM >= 2)
346 for (
int n = dcomp; n < dcomp+numcomp; ++n) {
347 fab(i,j,k,n) = fab(i,dylo,k,n);
350 bcr_p, 0, orig_comp);
357 int dyhi = domain.
bigEnd(1);
361 for (
int n = dcomp; n < dcomp+numcomp; ++n) {
362 fab(i,j,k,n) = fab(i,dyhi,k,n);
365 bcr_p, 0, orig_comp);
370#if (AMREX_SPACEDIM == 3)
378 for (
int n = dcomp; n < dcomp+numcomp; ++n) {
379 fab(i,j,k,n) = fab(i,j,dzlo,n);
382 bcr_p, 0, orig_comp);
389 int dzhi = domain.
bigEnd(2);
393 for (
int n = dcomp; n < dcomp+numcomp; ++n) {
394 fab(i,j,k,n) = fab(i,j,dzhi,n);
397 bcr_p, 0, orig_comp);
407 int dcomp,
int numcomp,
410 int orig_comp, FF
const& fillfunc)
416 Box gdomain = domain;
417 for (
int idim = 0; idim < AMREX_SPACEDIM; ++idim) {
419 gdomain.
grow(idim,len[idim]);
423 if (gdomain.
contains(bx)) {
return; }
426 const auto geomdata = geom.
data();
432 const auto f_user = m_user_f;
445 for (
const Box&
b : dom_face_boxes) {
447 if (tmp.
ok()) { face_boxes.push_back(tmp); }
449 const int n_face_boxes = face_boxes.
size();
450 if (n_face_boxes == 1) {
456 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
457 f_user(idx, fab, dcomp, numcomp, geomdata, time,
458 bcr_p, 0, orig_comp);
460 }
else if (n_face_boxes > 1) {
462 Box* boxes_p = face_boxes_aa.
data();
464 for (
const auto&
b : face_boxes) {
465 ncounts +=
b.numPts();
470 const auto& idx =
getCell(boxes_p, n_face_boxes, icount);
471 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
472 f_user(idx, fab, dcomp, numcomp, geomdata, time,
473 bcr_p, 0, orig_comp);
478#if (AMREX_SPACEDIM >= 2)
481#if (AMREX_SPACEDIM == 2)
505 for (
const Box&
b : dom_edge_boxes) {
507 if (tmp.
ok()) { edge_boxes.push_back(tmp); }
509 const int n_edge_boxes = edge_boxes.
size();
510 if (n_edge_boxes == 1) {
516 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
517 f_user(idx, fab, dcomp, numcomp, geomdata, time,
518 bcr_p, 0, orig_comp);
520 }
else if (n_edge_boxes > 1) {
522 Box* boxes_p = edge_boxes_aa.
data();
524 for (
const auto&
b : edge_boxes) {
525 ncounts +=
b.numPts();
530 const auto& idx =
getCell(boxes_p, n_edge_boxes, icount);
531 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
532 f_user(idx, fab, dcomp, numcomp, geomdata, time,
533 bcr_p, 0, orig_comp);
539#if (AMREX_SPACEDIM == 3)
553 for (
const Box&
b : dom_corner_boxes) {
555 if (tmp.
ok()) { corner_boxes.push_back(tmp); }
557 const int n_corner_boxes = corner_boxes.
size();
558 if (n_corner_boxes == 1) {
563 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
564 f_user(idx, fab, dcomp, numcomp, geomdata, time,
565 bcr_p, 0, orig_comp);
567 }
else if (n_corner_boxes > 1) {
569 Box* boxes_p = corner_boxes_aa.
data();
571 for (
const auto&
b : corner_boxes) {
572 ncounts +=
b.numPts();
577 const auto& idx =
getCell(boxes_p, n_corner_boxes, icount);
578 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
579 f_user(idx, fab, dcomp, numcomp, geomdata, time,
580 bcr_p, 0, orig_comp);
587 BCRec const* bcr_p = bcr.data()+bcomp;
589 const auto& f_user = m_user_f;
601 for (
const Box&
b : dom_face_boxes) {
603 amrex::For(tmp, [=] (
int i,
int j,
int k)
noexcept
607 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
608 f_user(idx, fab, dcomp, numcomp, geomdata, time,
609 bcr_p, 0, orig_comp);
614#if (AMREX_SPACEDIM >= 2)
617#if (AMREX_SPACEDIM == 2)
641 for (
const Box&
b : dom_edge_boxes) {
643 amrex::For(tmp, [=] (
int i,
int j,
int k)
noexcept
647 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
648 f_user(idx, fab, dcomp, numcomp, geomdata, time,
649 bcr_p, 0, orig_comp);
655#if (AMREX_SPACEDIM == 3)
668 for (
const Box&
b : dom_corner_boxes) {
670 amrex::For(tmp, [=] (
int i,
int j,
int k)
noexcept
673 fillfunc(idx, fab, dcomp, numcomp, domain, bcr_p, 0);
674 f_user(idx, fab, dcomp, numcomp, geomdata, time,
675 bcr_p, 0, orig_comp);