-
Notifications
You must be signed in to change notification settings - Fork 0
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
Parallel-safe mesh-to-mesh interpolation #128
Conversation
Hi @jwallwork23 and @stephankramer, after reading the whole day about The biggest question is what to do with |
Thanks for this @ddundo. Hopefully you learnt something while looking into I noticed the test failures on this PR so I tried out the mesh-to-mesh interpolation functionality in Firedrake myself. It seems like there are still some teething problems. I tried interpolating between two Regarding your question, let's not try to fix too many things in one PR. I think we should have both interpolation and projection options available. |
goalie/mesh_seq.py
Outdated
@@ -324,7 +325,9 @@ def get_checkpoints( | |||
checkpoints.append( | |||
AttrDict( | |||
{ | |||
field: project(sols[field], fs[i + 1]) | |||
field: firedrake.Function(fs[i + 1]).interpolate( |
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.
Two comments:
- I think we should still support
project
, with an option to switch. I guessinterpolate
should be the default, if we can get it to work better in parallel. - Do we expect the
interpolate
method to work for mixed spaces? (I haven't tested it.) Theproject
method doesn't, which is why we had to write an interpolation module for Goalie.
Thanks @jwallwork23! Regarding test failures and your review comment, actually when I run the tests locally only the gray_scott demo fails because
|
Hm no I get the same errors running locally:
|
Hmm thanks @jwallwork23, that's odd. I guess you are using the same docker image as the workflow here? Here is the results of my firedrake-status and the output of goalie test suite out.txt
Could you please send me this script? |
Yeah, I'm using the docker image locally rather than installing. Attached scripts here. |
Thanks @jwallwork23, these both work for me locally. Could you please check if the docker image needs to be updated? I'm clueless for docker sadly :) but no rush! Sorry for the spam today |
Yeah annoyingly the weekly automated Docker build hasn't worked recently for some reason (see mesh-adaptation/animate#79). I'll rebuild it now, push to DockerHub and then rerun the tests here. |
Thanks for doing that! Unfortunately there are still some failures here but everything passes on my local install. |
No worries. I notice that Gray-Scott is now fixed and all the errors are with Burgers. I wonder if the problem is with the demo... |
Well let me get docker running locally and investigate - I don't want to waste your time (and I need to finally give docker a go anyway :) ). I will ping you with updates/questions. Thanks for the help! |
Closes #130. File has been renamed VTKFile on the Firedrake side
39c7313
to
a00cad2
Compare
No rush at all with this, but it's ready for review when you have time please :) I just wanted to get it out of the way. A few comments:
|
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.
Really nice work @ddundo, thanks for this. Just a few requests.
Thanks again @jwallwork23, ready for a re-review :) |
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.
Good to go, thanks @ddundo!
@acse-ej321 Just pinging you here to make you aware that interpolation is now used as the main transfer method :) so you might need to pass |
Closes #39.
Introduces parallel-compatible mesh-to-mesh interpolation (already wrapped up in firedrake as
f_dest = Function(V_dest).interpolate(f_src)
where twoVertexOnlyMesh
es are used as intermediaries).