-
Notifications
You must be signed in to change notification settings - Fork 578
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Intrepid2: add support for weighted gradients in sum-factorized assem…
…bly (#13391) Intrepid2: This PR adds support for additional uses cases to the existing sum-factorized assembly mechanism. On the way, it adds support for vector weights to `TransformedBasisValues`; previously, only matrix and scalar weights were supported. This PR also makes some minor adjustments to the timings performed in `StructuredIntegrationPerformance.cpp` to ensure fair comparisons. The new use cases are demonstrated most directly in the following: ``` packages/intrepid2/assembly-examples/VectorWeightedGRADGRADStructuredAssembly.hpp ``` which demonstrates performing an integral of the form $`({\mathbf a} \cdot \nabla e_i, {\mathbf b} \cdot \nabla e_j)`$ for an $H^1$ basis. ## Testing The new use cases are well-exercised by the tests; a new set of `VectorWeightedPoisson` test cases (corresponding to the integral above) are included in the structured-versus-standard tests. ## Other notes/details: - Added support for dot products to Intrepid2_Data; added a corresponding test. Also hardened the test MatVec_CPDD_transpose to include a check that u' A v = v' A' u for vectors u, v. - Added free function rank() taking BasisValues object as argument. - Data: fixed an issue in allocateMatVec in which an incorrect variation type and/or incorrect extent could be used for the final result dimension. - TransformedBasisValues: added support for a (C,P,D) transform, with the main use case being a dot product with a vector-valued basis evaluation. - In allocateMatMatResult(), fixed an issue in which the wrong getUnderlyingView() method was being called; resolved by calling the one that gets a DynRankView. - Added a test against taking the outer product of two vectors; fixed the issue that this demonstrated in Intrepid2::Data. - Added test template StructuredVersusStandardVectorWeighted_D2_P1_P1. - Fixed an issue with the transpose arguments to a mat-mat call. - In setJacobianDetInv(), corrected argument name in method declaration and doxygen. - In DataTools, broadened the use cases for multiplyByCPWeights(), and added a transposeMatrix() method. - In TransformedBasisValues, fixed some issues with spaceDim(). - In StandardAssembly and StructuredAssembly, revised to support more vector-weighted use cases. - Added more vector-weighted tests, covering cases when a vector field is dotted with a vector and then integrated against a scalar. - Modified standard assembly performance tests to exclude the orientation application from "core integration" timing. - Added VectorWeightedPoisson to allFormulationChoices. For now, setting the "best" CUDA choices to match Poisson. But we need to redo those calibrations regardless, and maybe switch to reading them in from file: these are for older CUDA cards.
- Loading branch information
1 parent
3132245
commit 9c6525b
Showing
24 changed files
with
2,362 additions
and
374 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.