Skip to content

Conversation

@gijswl
Copy link
Contributor

@gijswl gijswl commented May 13, 2025

As discussed in issue #1195 I wanted to implement higher-order Hcurl interpolations. These require multiple degrees of freedom interior to the faces, which raises the issue of ensuring continuity between neighbouring elements when their local dofs do not match up.

The first commit (building on the work in PR #1196) includes the shape functions of Nedelec{RefTetrahedron,2} and minor additions to the interpolation tests to properly test this new interpolation. As a proof of concept I've implemented the facedof transformation inside apply_mapping!, but this need not be its final place. For convenience I've just commented out the restriction to a single facedof, although we would probably want to check if the correct face permutations/transformations are implemented.

As a result, the interpolation and continuity tests are passing, but I have my doubts about the actual continuity. Insofar as I can see, test_continuity.jl tests for continuity in the shape functions (i.e. the transformation to Nx), but does not consider dNdx, which is important for forming the shape_curl values during element assembly. @KnutAM do you have any comments on if we need to further transform dNdx and if this should be part of these tests?

@codecov
Copy link

codecov bot commented May 13, 2025

Codecov Report

Attention: Patch coverage is 97.90210% with 3 lines in your changes missing coverage. Please review.

Project coverage is 88.15%. Comparing base (c718c73) to head (2fd726b).
Report is 2 commits behind head on master.

Files with missing lines Patch % Lines
src/interpolations.jl 93.61% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1199      +/-   ##
==========================================
- Coverage   94.03%   88.15%   -5.88%     
==========================================
  Files          39       40       +1     
  Lines        6555     7210     +655     
==========================================
+ Hits         6164     6356     +192     
- Misses        391      854     +463     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@KnutAM
Copy link
Member

KnutAM commented May 13, 2025

Insofar as I can see, test_continuity.jl tests for continuity in the shape functions (i.e. the transformation Nξ to Nx), but does not consider dNdx, which is important for forming the shape_curl values during element assembly.

Just as we don't expect dNdx to be continuous for H1Conformity, we don't expect curl(N(x)) to be continuous for HcurlConformity, that would require a different type of interpolation. HcurlConformity implies that $\mathrm{curl}(u)$ is bounded (i.e. in L2), but it may be discontinuous.

@gijswl
Copy link
Contributor Author

gijswl commented May 13, 2025

we don't expect curl(N(x)) to be continuous for HcurlConformity

Agreed, but since I am now applying a linear transformation to based on the orientation of the face, we should also make sure dNdξ is updated to account for the transformed orientation, right? Intuitively I feel like we have to do something more than apply the same transformation matrix to dNdξ, but I can't substantiate why.

@KnutAM
Copy link
Member

KnutAM commented May 13, 2025

Yes, that is true.

This should be covered by

@testset "Non-identity mapping gradients" begin
, but I see now that we didn't include the new interpolations that you added to this test, having some in 3d makes sense, and then especially also the higher order ones. Since the logic is the same for all interpolations, its not required to do it for every single one, but for each new with different properties (e.g. dimension, order, linear transformation, etc.).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants