-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Faster nodal patch recovery #18721
Faster nodal patch recovery #18721
Conversation
@lynnmunday I remember you are interested in this as well. |
You did it! |
I did a rough performance comparison by running the test with a finer mesh and more time steps: The new nodal patch recovery:
Using first order monomial:
Using constant monomial:
I think this new nodal patch recovery is now actually "usable". |
Yeah, this is implementing exactly what we discussed yesterday. The not-so-good part of this design is that we need to write a new |
Job Documentation on 3901256 wanted to post the following: View the site here This comment will be updated on new commits. |
|
modules/tensor_mechanics/include/auxkernels/nodal_patch_recovery/NPRAux.h
Outdated
Show resolved
Hide resolved
modules/tensor_mechanics/include/userobjects/nodal_patch_recovery/NPRBase.h
Outdated
Show resolved
Hide resolved
Can you revert the change from |
modules/tensor_mechanics/src/userobjects/nodal_patch_recovery/NPRRankTwoAux.C
Outdated
Show resolved
Hide resolved
Yes, I think I get it now. See my reply to Alex above. |
Alternatively you can do point to point communication in the user object! |
@dschwen that code looks like a very good candidate for the push/pull family of functions in TIMPI. I think it could probably reduce the LOC by quite a bit. Yes @hugary1995 if you need nonlocal data |
Thanks for the pointer! (That code is a little over 3 years old - older than TIMPI :-D. But I should definitely check out the push/pull stuff!) |
modules/tensor_mechanics/src/userobjects/nodal_patch_recovery/NPRBase.C
Outdated
Show resolved
Hide resolved
modules/tensor_mechanics/src/userobjects/nodal_patch_recovery/NPRBase.C
Outdated
Show resolved
Hide resolved
There's an external app failing (probably due to the algebraic ghosting fix). Is it my responsibility to fix/regold the test in that app? |
Nah. I'll handle it |
9395b24
to
7151212
Compare
Job Precheck on 6d700bb wanted to post the following: A change of the following file(s) triggered this check: libmesh The following file(s) are unchanged: conda/mpich/conda_build_config.yaml The libmesh submodule or configuration was changed but the conda build config was not |
Yes! |
A warm greeting when you wake up tomorrow: The IndexableProperty is giving me the same error
If I do not check the validity of the indexable property at
|
I'll check out your branch tomorrow.
|
D'Oh, ok, I get it. That's a design flaw that I need to think about a bit. I have This of course does not take care of objects that run entirely before the first material is even constructed. @loganharbour that's why I actually wanted to store the proxies in FEProblem. We'll have to come up with a better design that takes care of that 3rd phase of objects that are constructed even earlier than materials. I should have thought of the UserObject case! My tests for that PR only use Material and AuxKernel. Dang! |
#19546 will fix this |
- Enable nodal patch recovery in parallel using RMs - Refactor to avoid redundant material property evaluations - Use the modern push/pull during finalize() of NodalPatchRecoveryBase to communicate precomputed elemental least squares coefficients and values. refs idaholab#15748 closes idaholab#12036 Co-authored-by: Alex Lindsay <alexlindsay239@gmail.com>
Writing this PR has been fun. New capabilities like the parallel push/pull interfaces and IndexableProperty are making my life so much easier as a downstream developer. |
modules/tensor_mechanics/src/userobjects/NodalPatchRecoveryBase.C
Outdated
Show resolved
Hide resolved
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.
Looks fine to me.
I'm really excited to have this finally merged in! One minor follow-on -- this broke the documentation builds for the apps that do sqa checks because that test points to |
For example, see this issue: idaholab/blackbear#285 |
So in principal the tests in a module should only point to docs in that module (or dependent modules). Otherwise, apps that depend on that module will have to explicitly include those docs in the config. Am I understanding it correctly? I guess we can either add |
refs #15748
closes #12036