Skip to content
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

Removing need for ReorientTetMesh [no-tet-reorder-dev] #1046

Merged
merged 211 commits into from
Aug 20, 2021
Merged

Conversation

mlstowell
Copy link
Member

@mlstowell mlstowell commented Aug 27, 2019

This PR adds a DofTransformation class which performs a linear mapping of degrees of freedom on triangular faces to enable Nedelec basis functions to align properly regardless of the relative orientation of the elements.

With the addition of DofTransformation, the methods [Par]Mesh::ReorientTetMesh are no longer needed. This PR currently comments out these methods rather than removing them. Unless someone makes an argument for keeping them in the library I think we should remove these methods before merging this PR.

The test_eigs.cpp and test_eigs_nd.cpp programs were used to validate the new DoF ordering scheme for all triangle face orientations at a variety of basis function orders. These programs don't need to be part of this PR but they may be useful as part of the test suite. Edit: a version of test_eigs.cpp has been added as a unit test in tests/unit/fem/test_eigs.cpp.

The ex_nd_amr_p.cpp program can be used to test the new code in an AMR context. This code implements an exact solution which is only valid on square or cube-shaped domains. It can be run on any 2D or 3D mesh but the solution errors will only be correct on squares or cubes.

This PR has the potential to interfere with any code that uses high order Nedelec basis functions on tetrahedral meshes. Unfortunately, we don't have that many relevant test cases in our examples/miniapps/unit tests. I've invested a lot of time testing this branch with the unit tests, autotest, and custom examples but I know there are pieces of code that have not been covered by these tests. I would really appreciate it if the reviewers could test this code further if they know of any suitable test cases.

PR Author Editor Reviewers Assignment Approval Merge
#1046 @mlstowell @tzanio @jakubcerveny + @psocratis 02/09/21 08/01/21 08/20/21

# Conflicts:
#	linalg/strumpack.cpp
#	linalg/strumpack.hpp
mesh/mesh.hpp Outdated Show resolved Hide resolved
mesh/mesh.cpp Outdated Show resolved Hide resolved
fem/bilinearform.cpp Outdated Show resolved Hide resolved
mesh/pmesh.cpp Outdated Show resolved Hide resolved
fem/doftrans.hpp Outdated Show resolved Hide resolved
Copy link
Member

@tzanio tzanio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved modulus some small review comments.

Thanks for this impressive effort @mlstowell... it has been long time in the making!

🎉 🎉 🎉

@tzanio
Copy link
Member

tzanio commented Aug 20, 2021

Re-merged in next for testing ...

@tzanio tzanio merged commit 6206c77 into master Aug 20, 2021
@tzanio tzanio deleted the no-tet-reorder-dev branch August 20, 2021 21:07
tzanio added a commit that referenced this pull request Jul 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants