Conversation
We promise all mistaken comments will get revised and corrected within 25 years, or your money back!
This fixes various errors that occur when trying to use static condensation after an EquationSystems::read()
This might be an error in some cases, but it's the code path we hit in adaptivity_ex2
We can get subvectors out of EigenSparseVector pretty easily, but shell matrices are trickier.
This lets us clean up vector_fe_ex9 a bit
Nobody uses GMV anymore, and it doesn't support some of the element types I was experimenting with.
This makes it easier to see how things are developing as AMR/C proceeds, which is good for tweaking our heuristics.
| # If our build supports static condensation, run from scratch and then | ||
| # from restart with higher p (and less h refinement) to test static | ||
| # condensation |
There was a problem hiding this comment.
but we aren't actually doing static condensation yet right? I don't see a triggering API call nor a command line option
There was a problem hiding this comment.
Well, we weren't doing it until I saw this comment, anyway. I was testing it manually, then got sidetracked figuring out how to test for Eigen in run.sh to enable it automatically when appropriate, then after I finally figured out the last of the $enableeigen propagation I forgot to add the CLI options here. They're added now.
| void set_current_elem(const Elem &) {} | ||
| void dont_condense_vars(const std::unordered_set<unsigned int> &) {} |
There was a problem hiding this comment.
These let us compile static-condensation-aware application codes even when we don't have PETSc and Eigen and can't enable static condensation.
The options we use for our distributed sweeps aren't compatible with the shell matrix we use for static condensation.
|
The trouble with adding extra test coverage is that sometimes it reveals that you really needed the extra test coverage. I can replicate that failure at -np 4; processor 3 is in backwards_substitution()/set_local_vectors() and calling for an index that isn't in the ghosted solution vector. It's a hanging node, with one vertex DoF and two distinct edge DoFs, so that might be what's throwing things. Looking into it now. |
|
This seems like it might be a bug in how our ghosting calculations interact with static condensation. Algebraic ghosting, too, so it's only the fact that we do our sweeps distributed that's preventing the bug from showing up on a ReplicatedMesh. We're on a triangle whose tip touches a coarser ghosted triangle's mid-edge, so our vertex DoF at that node is constrained in terms of the edge DoFs at that node. All DoFs at that node are owned by the coarse element's processor, so we don't see them as local and we don't bother to ghost all our own element's constraining DoFs. That's usually fine, because when usually when we're doing constraint calculations like This might be as simple to fix as checking |
Not sure if this is the right way to refactor this but it's a lot simpler than the alternatives I tried
|
Job Test MOOSE GCC min on c9e88c1 : invalidated by @roystgnr Restarting after web control failures |
|
Job Test MOOSE recover and restep on c9e88c1 : invalidated by @roystgnr Restarting after thermochimica failure |
I haven't yet succeeded at the StaticCondensation updates I wanted to accomplish, but along the way I noticed some feature compatibility issues that I was able to fix and add test coverage for.