47 #ifndef __INTREPID2_PROJECTIONTOOLS_HPP__
48 #define __INTREPID2_PROJECTIONTOOLS_HPP__
50 #include "Intrepid2_ConfigDefs.hpp"
54 #include "Shards_CellTopology.hpp"
55 #include "Shards_BasicTopologies.hpp"
100 #include "Teuchos_LAPACK.hpp"
107 namespace Intrepid2 {
109 namespace Experimental {
168 template<
typename ExecSpaceType>
172 enum EvalPointsType {BASIS, TARGET};
191 template<
typename BasisType,
192 typename ortValueType,
class ...ortProperties>
195 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
196 const BasisType* cellBasis,
198 const EvalPointsType evalPointType = TARGET
220 template<
typename basisCoeffsValueType,
class ...basisCoeffsProperties,
221 typename funValsValueType,
class ...funValsProperties,
223 typename ortValueType,
class ...ortProperties>
225 getL2BasisCoeffs(Kokkos::DynRankView<basisCoeffsValueType,basisCoeffsProperties...> basisCoeffs,
226 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetAtEvalPoints,
227 const typename BasisType::scalarViewType evaluationPoints,
228 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
229 const BasisType* cellBasis,
252 template<
typename BasisType,
253 typename ortValueType,
class ...ortProperties>
256 typename BasisType::scalarViewType gradEvalPoints,
257 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
258 const BasisType* cellBasis,
260 const EvalPointsType evalPointType = TARGET
286 template<
typename basisCoeffsValueType,
class ...basisCoeffsProperties,
287 typename funValsValueType,
class ...funValsProperties,
289 typename ortValueType,
class ...ortProperties>
291 getHGradBasisCoeffs(Kokkos::DynRankView<basisCoeffsValueType,basisCoeffsProperties...> basisCoeffs,
292 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetAtEvalPoints,
293 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetGradAtGradEvalPoints,
294 const typename BasisType::scalarViewType evaluationPoints,
295 const typename BasisType::scalarViewType gradEvalPoints,
296 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
297 const BasisType* cellBasis,
320 template<
typename BasisType,
321 typename ortValueType,
class ...ortProperties>
324 typename BasisType::scalarViewType curlEvalPoints,
325 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
326 const BasisType* cellBasis,
328 const EvalPointsType evalPointType = TARGET
356 template<
typename basisCoeffsValueType,
class ...basisCoeffsProperties,
357 typename funValsValueType,
class ...funValsProperties,
359 typename ortValueType,
class ...ortProperties>
361 getHCurlBasisCoeffs(Kokkos::DynRankView<basisCoeffsValueType,basisCoeffsProperties...> basisCoeffs,
362 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetAtEvalPoints,
363 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetCurlAtCurlEvalPoints,
364 const typename BasisType::scalarViewType evaluationPoints,
365 const typename BasisType::scalarViewType curlEvalPoints,
366 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
367 const BasisType* cellBasis,
390 template<
typename BasisType,
391 typename ortValueType,
class ...ortProperties>
394 typename BasisType::scalarViewType divEvalPoints,
395 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
396 const BasisType* cellBasis,
398 const EvalPointsType evalPointType = TARGET
424 template<
typename basisCoeffsValueType,
class ...basisCoeffsProperties,
425 typename funValsValueType,
class ...funValsProperties,
427 typename ortValueType,
class ...ortProperties>
429 getHDivBasisCoeffs(Kokkos::DynRankView<basisCoeffsValueType,basisCoeffsProperties...> basisCoeffs,
430 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetAtEvalPoints,
431 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetDivAtDivEvalPoints,
432 const typename BasisType::scalarViewType evaluationPoints,
433 const typename BasisType::scalarViewType divEvalPoints,
434 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
435 const BasisType* cellBasis,
454 template<
typename BasisType,
455 typename ortValueType,
class ...ortProperties>
458 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
459 const BasisType* cellBasis,
461 const EvalPointsType evalPointType = TARGET
482 template<
typename basisCoeffsValueType,
class ...basisCoeffsProperties,
483 typename funValsValueType,
class ...funValsProperties,
485 typename ortValueType,
class ...ortProperties>
487 getHVolBasisCoeffs(Kokkos::DynRankView<basisCoeffsValueType,basisCoeffsProperties...> basisCoeffs,
488 const Kokkos::DynRankView<funValsValueType,funValsProperties...> targetAtEvalPoints,
489 const typename BasisType::scalarViewType evaluationPoints,
490 const Kokkos::DynRankView<ortValueType, ortProperties...> cellOrientations,
491 const BasisType* cellBasis,
Header file for the Intrepid2::Basis_HGRAD_LINE_Cn_FEM class.
Header file for the Intrepid2::Basis_HDIV_TET_I1_FEM class.
Header file for the Intrepid2::Basis_HCURL_HEX_In_FEM class.
Header file for the Intrepid2::Basis_HDIV_HEX_I1_FEM class.
Header file for the Intrepid2::Basis_HDIV_WEDGE_I1_FEM class.
Header file for the Intrepid2::Basis_HDIV_HEX_In_FEM class.
Header function for Intrepid2::Util class and other utility functions.
Header file for the Intrepid2::Basis_HGRAD_TRI_Cn_FEM class.
Header file for the Intrepid2::Basis_HVOL_LINE_Cn_FEM class.
Header file for the Intrepid2::Basis_HDIV_QUAD_I1_FEM class.
Header file for the Intrepid2::Basis_HCURL_TET_In_FEM class.
Header file for the Intrepid2::Basis_HGRAD_TET_Cn_FEM class.
Header file for the Intrepid2::Basis_HDIV_TRI_I1_FEM class.
Header file for the Intrepid2::Basis_HDIV_QUAD_In_FEM class.
Header file for the Intrepid2::Basis_HCURL_QUAD_In_FEM class.
Header file for the Intrepid2::Basis_HDIV_TRI_In_FEM class.
Contains definitions of custom data types in Intrepid2.
Header file for the Intrepid2::Basis_HGRAD_QUAD_Cn_FEM class.
Header file for the Intrepid2::Basis_HDIV_TET_In_FEM class.
Header file for the Intrepid2::Experimental::ProjectionStruct.
Header file for the Intrepid2::Basis_HCURL_QUAD_I1_FEM class.
Header file for the Intrepid2::Basis_HCURL_WEDGE_I1_FEM class.
Header file for the Intrepid2::Basis_HCURL_TET_I1_FEM class.
Header file for the Intrepid2::Basis_HCURL_HEX_I1_FEM class.
An helper class to compute the evaluation points and weights needed for performing projections...
Header file for the Intrepid2::Basis_HCURL_TRI_I1_FEM class.
Header file for the Intrepid2::Basis_HVOL_TRI_Cn_FEM class.
Header file for the abstract base class Intrepid2::Basis.
Header file for the Intrepid2::Basis_HCURL_TRI_In_FEM class.
Header file for the Intrepid2::Basis_HGRAD_HEX_Cn_FEM class.