-
Notifications
You must be signed in to change notification settings - Fork 160
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
BUG: Periodic utility meshes cannot create mesh hierarchies in parallel #2984
Comments
It seems we should make those Firedrake DG coordinates in the callback. |
The way I got around this previously was by making a base mesh of the manifold, making the mesh hierarchy of that, periodising each one, then snapping the vertices of the periodised meshes so that they form a nested sequence. I agree it should be done in a better way. Anyway, in case it is useful for your development efforts, I attach the code for this (which does an MMS for a Stokes problem set up in Irksome, but that is incidental).
|
So the reason for not allowing refinement of overlapped meshes (which is what the periodic meshes are) is that if you do that then the halo region gets bigger than necessary (by a lot) on the refined meshes. The right way to do this nicely is, I think:
Then you can compose the maps appropriately to produce the thing the multigrid hierarchy needs which is the map from owned cells on C_O to owned cells on F_O. Previously (many moons ago when I wrote the code) DMPlexFilter didn't exist (or I didn't understand), so I simplified the problem generating the cell-to-cell map between a pair of related non-overlapped meshes and then adding overlap on every level. |
@pefarrell thank you for the code. I think that it would likely be better to pursue a solution with tighter integration with DMPlex. |
Running the following code in parallel
raises the exception
The same error is observed for other periodic meshes like
PeriodicRectangleMesh
.This error is happening because we create these periodic meshes by first creating a manifold mesh and then transforming the coordinates. This means we always have code in each
utility_meshes.py
function like (example):Constructing this
VectorFunctionSpace
callsmesh.init()
which then means that we cannot construct a mesh hierarchy using the topology.The text was updated successfully, but these errors were encountered: