-
Notifications
You must be signed in to change notification settings - Fork 572
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
Panzer q2 mesh support #11364
Panzer q2 mesh support #11364
Conversation
@rppawlo Putting this up as a WIP so we can look more closely at some of the changes I'm proposing. Leaving in a lot of incremental commits for now until we are sure we didn't break anything and decide the changes are reasonable. As an FYI, I was able to get the mesh topology to the intrepid bases (one of my big concerns from the other day) fairly easily. |
// For backwards compatability, allow the FE basis to supply the mesh cell topology (via the FEM base cell topo) | ||
// If provided, use the mesh topology directly | ||
if (meshCellTopology==Teuchos::null) { | ||
cellTools.mapToPhysicalFrame(coords,localCoords,cellNodes,intrepidBasis_->getBaseCellTopology()); |
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.
Why don't you pass directly the (HGRAD) basis to the mapToPhysicalFrame
function?
https://github.com/trilinos/Trilinos/blob/master/packages/intrepid2/src/Cell/Intrepid2_CellTools.hpp#L1021-L1024
In fact, when you pass the topology, intrepid2 has to build the corresponding HGRAD basis.
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.
Good question. That particular bit was there from before my time, but we should examine. Would you get different behavior passing in a higher Intrepid basis for any reason? I thought so, which is why I made the change if a meshCellTopology is provided.
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.
Anyway, my thought process was ::
- If the user has a first-order mesh, then cellNodes will just be cellVertices and to be compatible with computing the map, you'd want a first-order basis in that calculation.
- If the user has a higher-order mesh, the cellNodes is larger and corresponds with the order of the mesh.
Essentially, in either case, we are using a basis which corresponds to the mesh order to create this map.
If no mesh topology is supplied, we are using the intrepidbasis to determine the mesh topology (which will be the lowest-order topology).
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.
I see your reasoning. What is the intrepidBasis
? Is it the basis used for mapping between the ref element and the physical element (e.g., for affine meshes it would be HGRAD_C1, for quadratic meshes it would be HGRAD_C2)? If so, it's better to directly pass the basis, which will also work for higher order (>2) meshes.
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.
In this case, intrepidBasis_
is the FE basis, which at least theoretically could be any order and, generally, does not match the mesh order. As this snippet indicates, we are not explicitly constructing or carrying around an additional intrepid basis specifically for the mapping -- but rather constructing it within mapToPhysicalFrame
.
If you see this as problematic, I can look into constructing a basis upstream specifically for this purpose.
I guess it may depend on if this function is called many time and a temporary basis keeps getting made over and over.
There may also be some utility to eliminating this if statement and always explicitly requiring the mesh topology (or a "mesh-order" intrepid basis, like you point out).
cf75055
to
e009d98
Compare
@rppawlo Ready for review, thanks. |
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
Using Repos:
Pull Request Author: reuterb |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED Note: Testing will normally be attempted again in approx. 2 Hrs 30 Mins. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run. Pull Request Auto Testing has FAILED (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
|
Status Flag 'Pull Request AutoTester' - User Requested Retest - Label AT: RETEST will be reset after testing. |
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
Using Repos:
Pull Request Author: reuterb |
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
|
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... |
4 similar comments
All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur... |
All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur... |
All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur... |
All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur... |
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest.... |
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: reuterb |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED Note: Testing will normally be attempted again in approx. 2 Hrs 30 Mins. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run. Pull Request Auto Testing has FAILED (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-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: reuterb |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED Note: Testing will normally be attempted again in approx. 2 Hrs 30 Mins. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run. Pull Request Auto Testing has FAILED (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-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: reuterb |
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... |
@rppawlo Please re-approve when you have a chance. I needed to merge the develop branch in and correct one thing in the test since the L2 projection stuff won the race. |
All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur... |
Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ rppawlo ]! |
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' (1dd3da3). * trilinos-develop: Panzer q2 mesh support (trilinos#11364) Update GDSW_Proxy_def.hpp Tpetra: Oops Tpetra: Adding docs Tpetra: Adding unit labels Tpetra: Adding GDSW memory diagnostic XML support Tpetra: Adding GDSWStyle perf tests Tpetra: GDSW Fixes Tpetra: GDSW test mods Tpetra: Modifying test Tpetra: Modifying test Tpetra: More mods to the test Tpetra: Initial commit for GDSW Proxy
…s:develop' (1dd3da3). * trilinos-develop: Fix logic error when parsing --kokkos-develop flag Correct spec inheritance for CXX20 build Panzer q2 mesh support (trilinos#11364) Skip PR merge when using --kokkos-develop flag. Add flag to set Kokkos and KokkosKernels to develop Tpetra_Kokkos_Compat_KokkosSYCLWrapperNode->Tpetra_KokkosCompat_KokkosSYCLWrapperNode typo Cherry-pick kokkos/kokkos-kernels#1914 Update GDSW_Proxy_def.hpp Tpetra: Oops Tpetra: Adding docs Tpetra: Adding unit labels Tpetra: Adding GDSW memory diagnostic XML support Kokkos: Disable default oneDPL support Tpetra: Adding GDSWStyle perf tests Tpetra: GDSW Fixes Tpetra: GDSW test mods Tpetra: Modifying test Tpetra: Modifying test Tpetra: More mods to the test Tpetra: Initial commit for GDSW Proxy
…s:develop' (1dd3da3). * trilinos-develop: (22 commits) Fix logic error when parsing --kokkos-develop flag Correct spec inheritance for CXX20 build Tpetra: Use Kokkos::Experimental::SYCLDeviceUSMSpace for KokkosSYCLWrapperNode Panzer q2 mesh support (trilinos#11364) Skip PR merge when using --kokkos-develop flag. Add flag to set Kokkos and KokkosKernels to develop Tpetra_Kokkos_Compat_KokkosSYCLWrapperNode->Tpetra_KokkosCompat_KokkosSYCLWrapperNode typo Cherry-pick kokkos/kokkos-kernels#1914 Update GDSW_Proxy_def.hpp Tpetra: Oops Tpetra: Adding docs Tpetra: Adding unit labels Tpetra: Adding GDSW memory diagnostic XML support Kokkos: Disable default oneDPL support Tpetra: Adding GDSWStyle perf tests Tpetra: GDSW Fixes Tpetra: GDSW test mods Tpetra: Modifying test Tpetra: Modifying test Tpetra: More mods to the test ...
…s:develop' (1dd3da3). * trilinos-develop: (22 commits) Fix logic error when parsing --kokkos-develop flag Correct spec inheritance for CXX20 build Tpetra: Use Kokkos::Experimental::SYCLDeviceUSMSpace for KokkosSYCLWrapperNode Panzer q2 mesh support (trilinos#11364) Skip PR merge when using --kokkos-develop flag. Add flag to set Kokkos and KokkosKernels to develop Tpetra_Kokkos_Compat_KokkosSYCLWrapperNode->Tpetra_KokkosCompat_KokkosSYCLWrapperNode typo Cherry-pick kokkos/kokkos-kernels#1914 Update GDSW_Proxy_def.hpp Tpetra: Oops Tpetra: Adding docs Tpetra: Adding unit labels Tpetra: Adding GDSW memory diagnostic XML support Kokkos: Disable default oneDPL support Tpetra: Adding GDSWStyle perf tests Tpetra: GDSW Fixes Tpetra: GDSW test mods Tpetra: Modifying test Tpetra: Modifying test Tpetra: More mods to the test ...
…s:develop' (1dd3da3). * trilinos-develop: (22 commits) Fix logic error when parsing --kokkos-develop flag Correct spec inheritance for CXX20 build Tpetra: Use Kokkos::Experimental::SYCLDeviceUSMSpace for KokkosSYCLWrapperNode Panzer q2 mesh support (trilinos#11364) Skip PR merge when using --kokkos-develop flag. Add flag to set Kokkos and KokkosKernels to develop Tpetra_Kokkos_Compat_KokkosSYCLWrapperNode->Tpetra_KokkosCompat_KokkosSYCLWrapperNode typo Cherry-pick kokkos/kokkos-kernels#1914 Update GDSW_Proxy_def.hpp Tpetra: Oops Tpetra: Adding docs Tpetra: Adding unit labels Tpetra: Adding GDSW memory diagnostic XML support Kokkos: Disable default oneDPL support Tpetra: Adding GDSWStyle perf tests Tpetra: GDSW Fixes Tpetra: GDSW test mods Tpetra: Modifying test Tpetra: Modifying test Tpetra: More mods to the test ...
…s:develop' (1dd3da3). * trilinos-develop: (22 commits) Fix logic error when parsing --kokkos-develop flag Correct spec inheritance for CXX20 build Tpetra: Use Kokkos::Experimental::SYCLDeviceUSMSpace for KokkosSYCLWrapperNode Panzer q2 mesh support (trilinos#11364) Skip PR merge when using --kokkos-develop flag. Add flag to set Kokkos and KokkosKernels to develop Tpetra_Kokkos_Compat_KokkosSYCLWrapperNode->Tpetra_KokkosCompat_KokkosSYCLWrapperNode typo Cherry-pick kokkos/kokkos-kernels#1914 Update GDSW_Proxy_def.hpp Tpetra: Oops Tpetra: Adding docs Tpetra: Adding unit labels Tpetra: Adding GDSW memory diagnostic XML support Kokkos: Disable default oneDPL support Tpetra: Adding GDSWStyle perf tests Tpetra: GDSW Fixes Tpetra: GDSW test mods Tpetra: Modifying test Tpetra: Modifying test Tpetra: More mods to the test ...
Panzer :: Some steps to enable Q2 mesh support. Can read in a Q2 mesh and run w/ second order nodal elements.
@trilinos/panzer
Motivation
Panzer is looking to support higher order meshes for various customers.
As a first step, we are looking to get a lot of the machinery in place to do so, as well as ensure second order mesh support.
Stakeholder Feedback
Testing