-
Notifications
You must be signed in to change notification settings - Fork 21
Improved interpolation nodes for RT and N1curl elements. #52
Improved interpolation nodes for RT and N1curl elements. #52
Conversation
d4b679a
to
5278b42
Compare
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.
Some drive-by comments.
Is there a "pure FIAT"-level test we could devise that would test these new nodes are a thing? |
@FabianL1908 I think the only outstanding question here is if we can test these elements in FIAT. We could add these variants to the |
@wence- I added the tests for the new variants. They were actually helpful since helped me to spot a small bug. Do you think that are enough tests or do you have more in mind? |
Maybe check that the error-checking for specifying quadrature for the integral representation by hand that is too low works. Since the code is repeated, you only need to do it for one element I think. You can do this by doing:
|
I have added the test for two elements, since the bound is slightly different for N1curl and N2curl. |
9074289
to
5074ada
Compare
I rebased and squashed things, and addressed the final comments. I think this is good to go. |
Although the existing FIAT functionals are fine for tabulation and hence normal finite element assembly, they under-integrate for the purposes of interpolation. This results in sub-optimal convergence in the H(div/curl) norm of the interpolation error, which should be (for example) ||u - I_q u||_H(div, T) \le C h^q |u|_H^{q+1}(T) for RTq elements. To fix this, implement the dual basis using "textbook" integral moment functionals (even on edges). These functionals are selected by creating the element with an appropriate variant string on construction.
5074ada
to
21b447d
Compare
This is mostly work by @FabianL1908
Addresses #40.