diff --git a/Src/LinearSolvers/MLMG/AMReX_MLCellABecLap.H b/Src/LinearSolvers/MLMG/AMReX_MLCellABecLap.H index 5b60fb7853..9c2e936d38 100644 --- a/Src/LinearSolvers/MLMG/AMReX_MLCellABecLap.H +++ b/Src/LinearSolvers/MLMG/AMReX_MLCellABecLap.H @@ -43,6 +43,23 @@ public: return m_overset_mask[amrlev][mglev].get(); } + void setOversetMask(int amrlev, const iMultiFab& a_mask) + { +#ifdef AMREX_USE_OMP +#pragma omp parallel if(Gpu::notInLaunchRegion()) +#endif + for (MFIter mfi(*m_overset_mask[amrlev][0], TilingIfNotGPU());mfi.isValid();++mfi) + { + Array4 const& amsk = a_mask.const_array(mfi); + Array4 const& omsk = m_overset_mask[amrlev][0]->array(mfi); + Box const& bx = mfi.tilebox(); + AMREX_HOST_DEVICE_PARALLEL_FOR_3D(bx,i,j,k, + { + omsk(i,j,k) = 1-amsk(i,j,k); + }); + } + } + [[nodiscard]] bool needsUpdate () const override { return MLCellLinOpT::needsUpdate(); }