Dof permutations for moment-based reffes#1306
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1306 +/- ##
==========================================
- Coverage 88.85% 80.70% -8.16%
==========================================
Files 228 228
Lines 30197 30255 +58
==========================================
- Hits 26832 24417 -2415
- Misses 3365 5838 +2473
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Update on this:
The implementation of these face wise changes is not that trivial, since currently the permutation info (face_own_dofs_permutations) is used in CellConformity "only", this only works because there are 1 - 1 relations (optionally signed) between dofs. Lastly, the permutation test driver needs to be updated for vector valued bases, since the correct Piola map needs to be applied when mapping the polynomials to the permuted face. |
|
Additional remarks:
|
They have better symmetry properties than Arnold's bases implemented by BarycentricP(m)ΛBases
The basis r=0 now has a geometric meaning, since the basis form are exterior products of barycentric coordinates gradients.
makes extrusion uniquely defined for polytopes of dimension up to 2.
- improved the algorithm for computation of D-cubes vertex permutations (from complexity factorial(2^D) to factorial(D)*2^D) - back to setting all permutations by default in any dimension - if permutation are not available (heterogeneous extrusions for D>=4), empty permutation vector is set with a warning ( no wrong values ) - hard coded permutations for WEDGE and PYRAMID I tried to implement a valid permutation test, but it's not easy for extrusion polytopes with a TET_AXIS, since the map associated to the permutation is not isometric (it stretches the polytope a bit), so the previous det(J(cmap))==1 test isn't valid. It is not enough to check that the facet vertices are planar either, since all QUAD permutations would verify that.
moment-based reffe's dof permutations moved in the GenericRefFE.face_own_dofs_permutations field. this paves the way to implement dof permutations for change_dof = true Also, we should probably move nodal reffes dof permutation in there too.
1f5ba08 to
2a08996
Compare
The strategy:
get_basis_permutations(poly::Polytope, basis)that returns the permutations of the moment bases for a certain face polytope.moment_face_own_dofs_permutationstakes the moments and computes the complete set of permutations by combining the permutations of the moment bases on each face.Details to figure out:
change_dof=false. In the case wherechange_dof=true, the final dofs do not correspond to the moments. I am not sure how to deal with this... Should the dof ownership be attached to the prebasis instead? No idea...I have added a MWE for raviart-thomas on meshed with flipped edges. Right now, we have working: RT on simplices (TRI/TET). RT on QUAD/HEX could work if we changed the default basis to use Bernstein. ND currently depends on bases which are not permutation invariant.
I have also added a small driver that helps inspecting the bases permutations for each combination of polytope and basis. @Antoinemarteau