-
Notifications
You must be signed in to change notification settings - Fork 369
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The average_down_faces calls between AMR levels in the linear solvers need to see periodicity #1221
The average_down_faces calls between AMR levels in the linear solvers need to see periodicity #1221
Conversation
that sees the periodicity. This requires adding that functionality to EB_average_down_faces (it has already been added to non-EB average_down_faces.)
Src/EB/AMReX_EBMultiFabUtil.cpp
Outdated
int ncomp = crse[0]->nComp(); | ||
if (!(*fine[0]).hasEBFabFactory()) | ||
{ | ||
amrex::average_down_faces(fine, crse, ratio, ngcrse); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems that we should call the version with Geometry.
Src/EB/AMReX_EBMultiFabUtil.cpp
Outdated
} | ||
} | ||
} | ||
// TODO: NEED TO ENFORCE PERIODICITY IN THIS CASE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we could remove this entire block of if (isMFIterSafe(*fine[0], *crse[0]))
. If we need to enforce periodicity, we have to do the thing in the else block below.
… need to see periodicity (AMReX-Codes#1221) The average_down_faces calls between AMR levels need to use the interfaces that sees the periodicity. This requires adding that functionality to EB_average_down_faces (it has already been added to non-EB average_down_faces.) ## Summary Recently we added the functionality for an average_down_faces call to average fine data from one side to average not only onto the face under it but also onto the face on the other side of the domain if periodic in that direction. This PR 1) extends that functionality to the EB_average_down_faces call and 2) uses this new functionality when averaging down face-based coefficients between AMR levels in the cell-centered linear solvers. ## Checklist The proposed changes: - [X] fix a bug or incorrect behavior in AMReX - [X] add new capabilities to AMReX - [X] changes answers in the test suite to more than roundoff level - [X] are likely to significantly affect the results of downstream AMReX users - [ ] are described in the proposed changes to the AMReX documentation, if appropriate
The average_down_faces calls between AMR levels need to use the interfaces that sees the periodicity. This requires adding that functionality to EB_average_down_faces (it has already been added to non-EB average_down_faces.)
Summary
Recently we added the functionality for an average_down_faces call to average fine data from one side to average not only onto the face under it but also onto the face on the other side of the domain if periodic in that direction. This PR 1) extends that functionality to the EB_average_down_faces call and 2) uses this new functionality when averaging down face-based coefficients between AMR levels in the cell-centered linear solvers.
NOTE: I have left a "TODO" in amrex/Src/EB/AMReX_EBMultiFabUtil.cpp -- I wasn't sure how to best implement the functionality in that case
Additional background
Checklist
The proposed changes: