-
Notifications
You must be signed in to change notification settings - Fork 565
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
Intrepid2: Add H^1 Hierarchical Pyramid Basis #12079
Intrepid2: Add H^1 Hierarchical Pyramid Basis #12079
Conversation
… exec space (for the new pyramid bases, to start).
… various known ways.
- added missing definitions of mu, nu functions and their gradients - added a basis equivalence test comparing the existing lowest-order H^1 pyramid implementation to the new one - tweaked CMakeLists.txt to honor the Pyramid ETI for double, Kokkos::DefaultExecutionSpace With those changes, the code compiles. However, the pyramid implementation is incomplete; e.g. we don't have tags set up correctly, and there are some value computations that are still copied and pasted from the tet implementation. The basis equivalence test fails with a Kokkos View out-of-bounds error inside IntegratedLegendreBasis_HGRAD_PYR; it's a member view that is being accessed, and probably the code sizing this is part of the unrevised construction code.
…where the constructor still needs to be revised. With this change, the basis equivalence test agains the lowest-order nodal implementation passes! (There's a lot of code that that test doesn't exercise, but it's certainly nice that the vertex functions appear to be working.)
Added TODOs for mapping from (-1,1)^2 --> (0,1)^2 for (x,y) coords (Intrepid2 versus ESEAS).
…isn't yet, due to bugs: this test fails right now.)
…losely the ESEAS implementation. With this change, my verification test comparing ESEAS basis to ours passes for p=1 (i.e., vertex functions only) -- this compares both values and gradients. HOWEVER, now the BasisEquivalence test against our nodal basis implementation fails. I'm not sure, but I suspect that this is because the two bases really do span two distinct spaces. Since these are rational functions rather than polynomials, this is possible even when both bases are nodal.
…s gets the p=2 "mixed" edges to agree with ESEAS, in both value and gradient.
…o agree with ESEAS. Have not tried higher p.
…ESEAS for p up to 9, for both values and gradients.
… relate to the mapping from the Intrepid2 pyramid to the ESEAS).
…ther, this time in BasisValuesTests_Pyramid.
Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection Is Not Necessary for this Pull Request. |
Status Flag 'Pull Request AutoTester' - GitHub reports Mergeable status = False |
Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection Is Not Necessary for this Pull Request. |
Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects: Pull Request Auto Testing STARTING (click to expand)Build InformationTest Name: Trilinos_PR_gcc-8.3.0
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_gcc-8.3.0-serial
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_gcc-8.3.0-debug
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_clang-11.0.1
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_python3
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_cuda-11.4.2-uvm-off
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_intel-2021.3
Jenkins Parameters
Using Repos:
Pull Request Author: CamelliaDPG |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED Pull Request Auto Testing has PASSED (click to expand)Build InformationTest Name: Trilinos_PR_gcc-8.3.0
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_gcc-8.3.0-serial
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_gcc-8.3.0-debug
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_clang-11.0.1
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_python3
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_cuda-11.4.2-uvm-off
Jenkins Parameters
Build InformationTest Name: Trilinos_PR_intel-2021.3
Jenkins Parameters
|
Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging |
All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur... |
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.
@CamelliaDPG this looks good to me! We should add more testing though, including tests for orientations and projections. I'm fine to address this in a subsequent PR once you have implemented the HCURL and HDIV basis functions.
Thanks, @mperego! Yes, agreed on the testing. I realized just now that I should also have some tests against the assignment of basis functions to subcells: that's implemented, but almost completely untested. (The "basis equivalence" test provides some tests of the correctness of the assignment, but the only basis we have to compare with is the lowest-order basis, so we're just checking the vertex dof assignment. The offline ESEAS comparison tests confirm the correctness of the basis values and gradients, but do not do anything with the topological data.) For all the other function spaces, we have no equivalent bases to compare against, so as I implement those, I'll add some tests for the subcell associations, including the H^1 basis here. |
Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ mperego ]! |
Status Flag 'Pull Request AutoTester' - AutoMerge IS ENABLED, but the Label AT: AUTOMERGE is not set. Either set Label AT: AUTOMERGE or manually merge the PR... |
…s:develop' (b04db0d). * trilinos-develop: Intrepid2: Add H^1 Hierarchical Pyramid Basis (trilinos#12079) stokhos: guard math_functions.h header based on cuda version rework MPIAdvance AllToAll test to use Kokkos::Views make array size constexpr Ifpack2: fixing PR failures Ifpack2: address comments from @brian-kelley Ifpack2: fix PR failures Ifpack2: interface to kokkos-kernels par-ilut
…s:develop' (b04db0d). * trilinos-develop: Intrepid2: Add H^1 Hierarchical Pyramid Basis (trilinos#12079) stokhos: guard math_functions.h header based on cuda version rework MPIAdvance AllToAll test to use Kokkos::Views make array size constexpr Ifpack2: fixing PR failures Ifpack2: address comments from @brian-kelley Ifpack2: fix PR failures Ifpack2: interface to kokkos-kernels par-ilut
## Motivation This PR adds an arbitrary-order, hierarchical basis for H(grad) on the pyramid. This follows trilinos#11061, which added hierarchical bases for the wedge, and trilinos#11009, which did so for the tetrahedron. We will be adding a hierarchical L^2 basis for the pyramid soon after this, followed by H(div) and H(curl). We also add support for generating equispaced point lattices on the pyramid. ## Testing A basic "basis equivalence" test, which establishes that the new basis spans the same space as the existing low-order nodal basis, is included here. Additionally, I have done offline comparison with the ESEAS implementation of this basis, testing up to 9th order, with excellent agreement. I hope to include these tests with Intrepid2 soon; this has been prevented previously by the license for ESEAS, but they are changing the license to one that will allow inclusion. In the follow-on PRs, we also plan to add tests against orientations and projection with the new bases, as well as tests against the association of basis degrees of freedom with subcell topologies.
## Motivation This PR adds an arbitrary-order, hierarchical basis for H(vol) on the pyramid. This follows #12079, which added hierarchical bases for H(grad) on the pyramid. Additionally, this PR adds "sub-basis inclusion" tests for both H(vol) and H(grad) on the pyramid, and orientation tests against H(grad) on the pyramid. ## Testing This PR includes "sub-basis inclusion" tests for both H(vol) and H(grad) on the pyramid, and orientation tests against H(grad) on the pyramid. It also adds a simple basis cardinality test for the new H(vol) basis. Additionally, I have done offline comparison with the ESEAS implementation of this basis, testing up to 10th order, with excellent agreement. I hope to include these tests with Intrepid2 soon; this has been prevented previously by the license for ESEAS, but they are changing the license to one that will allow inclusion.
## Motivation This PR adds an arbitrary-order, hierarchical basis for H(grad) on the pyramid. This follows trilinos#11061, which added hierarchical bases for the wedge, and trilinos#11009, which did so for the tetrahedron. We will be adding a hierarchical L^2 basis for the pyramid soon after this, followed by H(div) and H(curl). We also add support for generating equispaced point lattices on the pyramid. ## Testing A basic "basis equivalence" test, which establishes that the new basis spans the same space as the existing low-order nodal basis, is included here. Additionally, I have done offline comparison with the ESEAS implementation of this basis, testing up to 9th order, with excellent agreement. I hope to include these tests with Intrepid2 soon; this has been prevented previously by the license for ESEAS, but they are changing the license to one that will allow inclusion. In the follow-on PRs, we also plan to add tests against orientations and projection with the new bases, as well as tests against the association of basis degrees of freedom with subcell topologies.
## Motivation This PR adds an arbitrary-order, hierarchical basis for H(vol) on the pyramid. This follows trilinos#12079, which added hierarchical bases for H(grad) on the pyramid. Additionally, this PR adds "sub-basis inclusion" tests for both H(vol) and H(grad) on the pyramid, and orientation tests against H(grad) on the pyramid. ## Testing This PR includes "sub-basis inclusion" tests for both H(vol) and H(grad) on the pyramid, and orientation tests against H(grad) on the pyramid. It also adds a simple basis cardinality test for the new H(vol) basis. Additionally, I have done offline comparison with the ESEAS implementation of this basis, testing up to 10th order, with excellent agreement. I hope to include these tests with Intrepid2 soon; this has been prevented previously by the license for ESEAS, but they are changing the license to one that will allow inclusion.
@trilinos/intrepid2 ## Motivation This PR adds an arbitrary-order, hierarchical basis for H(div) on the pyramid. This follows #12079, which added hierarchical bases for H(grad) on the pyramid, and #12136, which added bases for H(vol). This PR also adds support in CellGeometry for a pyramidal subdivision of regular hexahedral meshes, and support for a rudimentary node numbering within CellGeometry. This is in support of new projection convergence tests, so far implemented for H(grad) and H(vol). H(div) support for such projections actually requires H(curl) bases to be implemented as well; those will be coming in a subsequent PR. Additionally, this PR adds orientation tests against H(div) on the pyramid. ## Testing This PR has orientation and basis cardinality tests for the new H(div) basis. The new CellGeometry features have some limited tests against them as well. It also adds projection convergence tests for H(grad) and H(vol) on the pyramid. Additionally, I have done offline comparison with the ESEAS implementation of this basis, testing up to 9th order, with excellent agreement. (There were actually a couple of bugs I found in ESEAS's implementation, which I plan to submit fixes for there shortly.) I hope to include these tests with Intrepid2 soon; this has been prevented previously by the license for ESEAS, but they are changing the license to one that will allow inclusion.
Motivation
This PR adds an arbitrary-order, hierarchical basis for H(grad) on the pyramid. This follows #11061, which added hierarchical bases for the wedge, and #11009, which did so for the tetrahedron. We will be adding a hierarchical L^2 basis for the pyramid soon after this, followed by H(div) and H(curl).
We also add support for generating equispaced point lattices on the pyramid.
Testing
A basic "basis equivalence" test, which establishes that the new basis spans the same space as the existing low-order nodal basis, is included here. Additionally, I have done offline comparison with the ESEAS implementation of this basis, testing up to 9th order, with excellent agreement. I hope to include these tests with Intrepid2 soon; this has been prevented previously by the license for ESEAS, but they are changing the license to one that will allow inclusion.