Added multi-level SDC for Firedrake and Gusto coupling #520
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR includes very rudimentary versions of multi-level SDC that work with both the Firedrake and the Gusto examples. I have not made an effort to find the best possible parameters on the different levels. I reckon this exceeds the scope of what I can do within the rest of the week. And, as mentioned below, some performance improvements are needed to really use this in practice.
Anyways, I wanted to do the PR already now so I can add block Gauß-Seidel SDC / PFASST to the Gusto coupling in the coming days, which may be more useful.
Features
MeshToMeshFiredrake
that transfers between any unrelated Firedrake meshes that are simultaneously supported by theFiredrake.interpolate
method.MeshToMeshFiredrakeHierarchy
that transfers between meshes that have been generated usingFiredrake.MeshHierarchy
. This is a a bit more effort to setup, but is required for certain discretizations, as is the case in the Williamson 5 test case.Tests
Caveats