diff --git a/Src/Extern/HYPRE/AMReX_HypreMLABecLap.cpp b/Src/Extern/HYPRE/AMReX_HypreMLABecLap.cpp index b726f307bb..6f5718f826 100644 --- a/Src/Extern/HYPRE/AMReX_HypreMLABecLap.cpp +++ b/Src/Extern/HYPRE/AMReX_HypreMLABecLap.cpp @@ -411,6 +411,15 @@ void HypreMLABecLap::addNonStencilEntriesToGraph () m_f2c_offset.resize(m_nlevels-1); m_f2c_values.resize(m_nlevels-1); + Vector period(m_nlevels); + Vector smallend(m_nlevels); + Vector bigend(m_nlevels); + for (int ilev = 0; ilev (entry); auto const to_level = std::get<3>(entry); @@ -424,6 +433,15 @@ void HypreMLABecLap::addNonStencilEntriesToGraph () GpuArray to_index{AMREX_D_DECL(to_iv[0], to_iv[1], to_iv[2])}; + for (int idim = 0; idim < AMREX_SPACEDIM; ++idim) { + if (m_geom[0].isPeriodic(idim)) { + if (to_index[idim] < smallend[to_level][idim]) { + to_index[idim] += period[to_level][idim]; + } else if (to_index[idim] > bigend[to_level][idim]) { + to_index[idim] -= period[to_level][idim]; + } + } + } constexpr int ivar = 0; HYPRE_SStructGraphAddEntries(m_ss_graph, from_level, from_index.data(), ivar,