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

Intrepid2: Add H^1 Hierarchical Pyramid Basis #12079

Merged

Conversation

CamelliaDPG
Copy link
Contributor

@CamelliaDPG CamelliaDPG commented Jul 26, 2023

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.

… exec space (for the new pyramid bases, to start).
- 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.
@CamelliaDPG CamelliaDPG requested a review from mperego July 26, 2023 22:06
@trilinos-autotester
Copy link
Contributor

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection Is Not Necessary for this Pull Request.

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pull Request AutoTester' - GitHub reports Mergeable status = False

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection Is Not Necessary for this Pull Request.

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: Trilinos_PR_gcc-8.3.0

  • Build Num: 2555
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-gnu-8.3.0-openmpi-1.10.1-openmp_release-debug_static_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_gcc-8.3.0-serial

  • Build Num: 1083
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-v2-gnu-8.3.0-serial_release-debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_no-mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_gcc-8.3.0-debug

  • Build Num: 1075
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-gnu-8.3.0-openmpi-1.10.1-serial_debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_clang-11.0.1

  • Build Num: 1074
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-clang-11.0.1-openmpi-1.10.1-serial_release-debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_python3

  • Build Num: 2295
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-gnu-7.2.0-anaconda3-serial_debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_no-mpi_no-pt_no-rdc_no-uvm_deprecated-on_pr-framework
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL ascic
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_cuda-11.4.2-uvm-off

  • Build Num: 2077
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-cuda-11.4.2-sems-gnu-10.1.0-sems-openmpi-4.0.5_release_static_Volta70_no-asan_complex_no-fpic_mpi_pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL GPU
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_intel-2021.3

  • Build Num: 716
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-intel-2021.3-sems-openmpi-4.0.5_release-debug_shared_no-kokkos-arch_no-asan_no-complex_fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Using Repos:

Repo: TRILINOS (CamelliaDPG/Trilinos)
  • Branch: intrepid2-add-hierarchical-pyramids-H1
  • SHA: bccd7ed
  • Mode: TEST_REPO

Pull Request Author: CamelliaDPG

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: Trilinos_PR_gcc-8.3.0

  • Build Num: 2555
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-gnu-8.3.0-openmpi-1.10.1-openmp_release-debug_static_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_gcc-8.3.0-serial

  • Build Num: 1083
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-v2-gnu-8.3.0-serial_release-debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_no-mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_gcc-8.3.0-debug

  • Build Num: 1075
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-gnu-8.3.0-openmpi-1.10.1-serial_debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_clang-11.0.1

  • Build Num: 1074
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-clang-11.0.1-openmpi-1.10.1-serial_release-debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_python3

  • Build Num: 2295
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-gnu-7.2.0-anaconda3-serial_debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_no-mpi_no-pt_no-rdc_no-uvm_deprecated-on_pr-framework
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL ascic
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_cuda-11.4.2-uvm-off

  • Build Num: 2077
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-cuda-11.4.2-sems-gnu-10.1.0-sems-openmpi-4.0.5_release_static_Volta70_no-asan_complex_no-fpic_mpi_pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL GPU
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d

Build Information

Test Name: Trilinos_PR_intel-2021.3

  • Build Num: 716
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
FORCE_CLEAN true
GENCONFIG_BUILD_NAME rhel7_sems-intel-2021.3-sems-openmpi-4.0.5_release-debug_shared_no-kokkos-arch_no-asan_no-complex_fpic_mpi_no-pt_no-rdc_no-uvm_deprecated-on_no-package-enables
PR_LABELS
PULLREQUESTNUM 12079
PULLREQUEST_CDASH_TRACK Pull Request
TEST_REPO_ALIAS TRILINOS
TRILINOS_NODE_LABEL trilinos-any
TRILINOS_SOURCE_BRANCH intrepid2-add-hierarchical-pyramids-H1
TRILINOS_SOURCE_REPO https://github.com/CamelliaDPG/Trilinos
TRILINOS_SOURCE_SHA bccd7ed
TRILINOS_SRN_CONFIG true
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 572701d


CDash Test Results for PR# 12079.

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
NO REVIEWS HAVE BEEN PERFORMED ON THIS PULL REQUEST!

@trilinos-autotester
Copy link
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

Copy link
Contributor

@mperego mperego left a 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.

@CamelliaDPG
Copy link
Contributor Author

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.

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ mperego ]!

@trilinos-autotester
Copy link
Contributor

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...

@CamelliaDPG CamelliaDPG merged commit f1a7c6c into trilinos:develop Jul 27, 2023
3 checks passed
jmgate pushed a commit to tcad-charon/Trilinos that referenced this pull request Jul 28, 2023
…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
jmgate pushed a commit to tcad-charon/Trilinos that referenced this pull request Jul 28, 2023
…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
JacobDomagala pushed a commit to NexGenAnalytics/Trilinos that referenced this pull request Aug 4, 2023
## 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.
CamelliaDPG added a commit that referenced this pull request Aug 18, 2023
## 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.
cwpearson pushed a commit to cwpearson/Trilinos that referenced this pull request Sep 19, 2023
## 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.
cwpearson pushed a commit to cwpearson/Trilinos that referenced this pull request Sep 19, 2023
## 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.
CamelliaDPG added a commit that referenced this pull request Sep 22, 2023
@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.
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.

None yet

3 participants