-
Notifications
You must be signed in to change notification settings - Fork 300
Make is_prepared() more fine-grained #3759
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
base: devel
Are you sure you want to change the base?
Conversation
|
Does "do not merge" also mean "do not review"? |
It's already bad enough to need fixing, huh? ;-) Nah, please jump in as you see fit. I've got more I'm wanting to add here, but if there's flaws in the foundation then it's probably better to fix them before I put more layers on top. |
lindsayad
left a comment
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.
Just looking at the header this seems like a great foundation to me
7c8c1d1 to
fc6ee94
Compare
This wasn't failing the test, because the kernel here didn't need the unprepared data, but we'd like to simply assert that we're not assembling or solving on unprepared meshes.
Otherwise the mesh still thinks its fully prepared even when it isn't and we can't assert valid_is_prepared() on it.
We need things like neighbor pointers, and in general we'd like to assert that we're never assembling or solving on unprepared meshes.
We're trying to allow meshes to keep track of "half-prepared" status, for the sake of efficiency in large chains or webs of mesh generators, but at the very least user assembly kernels should be able to rely on a mesh being prepared for use - they're what we mean by "use"!.
We can rebuild point locators or element caches, but we don't want to use an already-built invalid cache by accident.
We've added some tricky interior_mesh options that our copy_nodes_and_elements code wasn't handling correctly, and it was possible for a clone() of such a mesh to fail its operator== assertion.
fc6ee94 to
e39fc75
Compare
|
This might actually be in shape to merge soon. My remaining concerns:
|
I'm still trying to figure out how to make this easy to use, but I'd like to at least test that what I've got so far still passes CI.