Intrepid2
Intrepid2_FunctionSpaceTools.hpp
Go to the documentation of this file.
1// @HEADER
2// ************************************************************************
3//
4// Intrepid2 Package
5// Copyright (2007) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Kyungjoo Kim (kyukim@sandia.gov), or
38// Mauro Perego (mperego@sandia.gov)
39//
40// ************************************************************************
41// @HEADER
42
48
49#ifndef __INTREPID2_FUNCTIONSPACETOOLS_HPP__
50#define __INTREPID2_FUNCTIONSPACETOOLS_HPP__
51
52#include "Intrepid2_ConfigDefs.hpp"
53
54#include "Shards_CellTopology.hpp"
55#include "Shards_BasicTopologies.hpp"
56
57#include "Intrepid2_Types.hpp"
58#include "Intrepid2_Utils.hpp"
59
60#include "Intrepid2_Kernels.hpp"
61
65
66#include "Intrepid2_Data.hpp"
69
70#include "Kokkos_Core.hpp"
71
72
73namespace Intrepid2 {
74
81 template<typename DeviceType>
83 using ExecSpaceType = typename DeviceType::execution_space;
84 using MemSpaceType = typename DeviceType::memory_space;
85 public:
129 template<class Scalar>
131 {
132 return TransformedBasisValues<Scalar,DeviceType>(jacobianInverse,refBasisGradValues);
133 }
134
174 template<class Scalar>
176 getHGRADtransformVALUE(const ordinal_type &numCells, const BasisValues<Scalar,DeviceType> &refBasisValues)
177 {
178 return TransformedBasisValues<Scalar,DeviceType>(numCells,refBasisValues);
179 }
180
220 template<class Scalar>
223 const BasisValues<Scalar,DeviceType> &refBasisValues )
224 {
225 return TransformedBasisValues<Scalar,DeviceType>(jacobianInverse,refBasisValues);
226 }
227
269 template<class Scalar>
271 getHCURLtransformCURL(const Data<Scalar,DeviceType> &jacobianDividedByJacobianDet,
272 const BasisValues<Scalar,DeviceType> &refBasisValues )
273 {
274 return TransformedBasisValues<Scalar,DeviceType>(jacobianDividedByJacobianDet,refBasisValues);
275 }
276
318
319 template<class Scalar>
322 const BasisValues<Scalar,DeviceType> &refBasisValues )
323 {
324 return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisValues);
325 }
326
368
369 template<class Scalar>
371 getHDIVtransformVALUE(const Data<Scalar,DeviceType> &jacobianDividedByJacobianDet,
372 const BasisValues<Scalar,DeviceType> &refBasisValues )
373 {
374 return TransformedBasisValues<Scalar,DeviceType>(jacobianDividedByJacobianDet,refBasisValues);
375 }
376
417 template<class Scalar>
420 const BasisValues<Scalar,DeviceType> &refBasisDivValues )
421 {
422 return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisDivValues);
423 }
424
465 template<class Scalar>
468 const BasisValues<Scalar,DeviceType> &refBasisValues )
469 {
470 return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisValues);
471 }
472
512 template<typename outputValueType, class ...outputProperties,
513 typename inputValueType, class ...inputProperties>
514 static void
515 HGRADtransformVALUE( Kokkos::DynRankView<outputValueType,outputProperties...> output,
516 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
517
518
531 template<typename outputValueType, class ...outputProperties,
532 typename inputValueType, class ...inputProperties>
533 static void
534 mapHGradDataFromPhysToRef( Kokkos::DynRankView<outputValueType,outputProperties...> output,
535 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
536
537
550 template<typename outputValueType, class ...outputProperties,
551 typename inputValueType, class ...inputProperties>
552 static void
553 mapHGradDataFromPhysSideToRefSide( Kokkos::DynRankView<outputValueType,outputProperties...> output,
554 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
555
556
598 template<typename outputValValueType, class ...outputValProperties,
599 typename jacobianInverseValueType, class ...jacobianInverseProperties,
600 typename inputValValueType, class ...inputValProperties>
601 static void
602 HGRADtransformGRAD( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
603 const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
604 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
605
646 template<typename outputValValueType, class ...outputValProperties,
647 typename jacobianInverseValueType, class ...jacobianInverseProperties,
648 typename inputValValueType, class ...inputValProperties>
649 static void
650 HCURLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
651 const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
652 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
653
654
673 template<typename outputValValueType, class ...outputValProperties,
674 typename jacobianValueType, class ...jacobianProperties,
675 typename inputValValueType, class ...inputValProperties>
676 static void
677 mapHCurlDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
678 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
679 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
680
681
700 template<typename outputValValueType, class ...outputValProperties,
701 typename tangentsValueType, class ...tangentsProperties,
702 typename metricTensorInvValueType, class ...metricTensorInvProperties,
703 typename metricTensorDetValueType, class ...metricTensorDetProperties,
704 typename inputValValueType, class ...inputValProperties>
705 static void
707 Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
708 const Kokkos::DynRankView<tangentsValueType, tangentsProperties...> tangents,
709 const Kokkos::DynRankView<metricTensorInvValueType,metricTensorInvProperties...> metricTensorInv,
710 const Kokkos::DynRankView<metricTensorDetValueType,metricTensorDetProperties...> metricTensorDet,
711 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
712
713
731 template<typename outputValValueType, class ...outputValProperties,
732 typename jacobianDetValueType, class ...jacobianDetProperties,
733 typename inputValValueType, class ...inputValProperties>
734 static void
736 Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
737 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
738 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
739
740
784 template<typename outputValValueType, class ...outputValProperties,
785 typename jacobianValueType, class ...jacobianProperties,
786 typename jacobianDetValueType, class ...jacobianDetProperties,
787 typename inputValValueType, class ...inputValProperties>
788 static void
789 HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
790 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
791 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
792 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
793
794
836
837 template<typename outputValValueType, class ...outputValProperties,
838 typename jacobianDetValueType, class ...jacobianDetProperties,
839 typename inputValValueType, class ...inputValProperties>
840 static void
841 HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
842 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
843 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
844
845
889 template<typename outputValValueType, class ...outputValProperties,
890 typename jacobianValueType, class ...jacobianProperties,
891 typename jacobianDetValueType, class ...jacobianDetProperties,
892 typename inputValValueType, class ...inputValProperties>
893 static void
894 HGRADtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
895 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
896 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
897 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
898
899
900
944
945 template<typename outputValValueType, class ...outputValProperties,
946 typename jacobianValueType, class ...jacobianProperties,
947 typename jacobianDetValueType, class ...jacobianDetProperties,
948 typename inputValValueType, class ...inputValProperties>
949 static void
950 HDIVtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
951 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
952 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
953 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
954
955
975 template<typename outputValValueType, class ...outputValProperties,
976 typename jacobianInverseValueType, class ...jacobianInverseProperties,
977 typename jacobianDetValueType, class ...jacobianDetProperties,
978 typename inputValValueType, class ...inputValProperties>
979 static void
980 mapHDivDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
981 const Kokkos::DynRankView<jacobianInverseValueType, jacobianInverseProperties...> jacobianInv,
982 const Kokkos::DynRankView<jacobianDetValueType, jacobianDetProperties...> jacobianDet,
983 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
984
985
1004 template<typename outputValValueType, class ...outputValProperties,
1005 typename jacobianDetValueType, class ...jacobianDetProperties,
1006 typename inputValValueType, class ...inputValProperties>
1007 static void
1009 Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1010 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
1011 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1012
1013
1055 template<typename outputValValueType, class ...outputValProperties,
1056 typename jacobianDetValueType, class ...jacobianDetProperties,
1057 typename inputValValueType, class ...inputValProperties>
1058 static void
1059 HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1060 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1061 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1062
1103 template<typename outputValValueType, class ...outputValProperties,
1104 typename jacobianDetValueType, class ...jacobianDetProperties,
1105 typename inputValValueType, class ...inputValProperties>
1106 static void
1107 HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1108 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1109 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1110
1128 template<typename outputValValueType, class ...outputValProperties,
1129 typename jacobianDetValueType, class ...jacobianDetProperties,
1130 typename inputValValueType, class ...inputValProperties>
1131 static void
1132 mapHVolDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1133 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1134 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1135
1149 template<typename outputValueValueType, class ...outputValueProperties,
1150 typename leftValueValueType, class ...leftValueProperties,
1151 typename rightValueValueType, class ...rightValueProperties>
1152 static void
1153 integrate( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
1154 const Kokkos::DynRankView<leftValueValueType, leftValueProperties...> leftValues,
1155 const Kokkos::DynRankView<rightValueValueType, rightValueProperties...> rightValues,
1156 const bool sumInto = false);
1157
1188 template<typename outputValValueType, class ...outputValProperties,
1189 typename inputDetValueType, class ...inputDetPropertes,
1190 typename inputWeightValueType, class ...inputWeightPropertes>
1191 static bool
1192 computeCellMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1193 const Kokkos::DynRankView<inputDetValueType, inputDetPropertes...> inputDet,
1194 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights );
1195
1242 template<typename outputValValueType, class ...outputValProperties,
1243 typename inputJacValueType, class ...inputJacProperties,
1244 typename inputWeightValueType, class ...inputWeightPropertes,
1245 typename scratchValueType, class ...scratchProperties>
1246 static void
1247 computeFaceMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1248 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
1249 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights,
1250 const int whichFace,
1251 const shards::CellTopology parentCell,
1252 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
1253
1298 template<typename outputValValueType, class ...outputValProperties,
1299 typename inputJacValueType, class ...inputJacProperties,
1300 typename inputWeightValueType, class ...inputWeightProperties,
1301 typename scratchValueType, class ...scratchProperties>
1302 static void
1303 computeEdgeMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1304 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
1305 const Kokkos::DynRankView<inputWeightValueType,inputWeightProperties...> inputWeights,
1306 const int whichEdge,
1307 const shards::CellTopology parentCell,
1308 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
1309
1318 template<typename outputValValueType, class ...outputValProperties,
1319 typename inputMeasureValueType, class ...inputMeasureProperties,
1320 typename inputValValueType, class ...inputValProperteis>
1321 static void
1322 multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1323 const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
1324 const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
1325
1359 template<typename outputFieldValueType, class ...outputFieldProperties,
1360 typename inputDataValueType, class ...inputDataPropertes,
1361 typename inputFieldValueType, class ...inputFieldProperties>
1362 static void
1363 scalarMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1364 const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
1365 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1366 const bool reciprocal = false );
1367
1400 template<typename outputDataValuetype, class ...outputDataProperties,
1401 typename inputDataLeftValueType, class ...inputDataLeftProperties,
1402 typename inputDataRightValueType, class ...inputDataRightProperties>
1403 static void
1404 scalarMultiplyDataData( Kokkos::DynRankView<outputDataValuetype, outputDataProperties...> outputData,
1405 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1406 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1407 const bool reciprocal = false );
1408
1440 template<typename outputFieldValueType, class ...outputFieldProperties,
1441 typename inputDataValueType, class ...inputDataProperties,
1442 typename inputFieldValueType, class ...inputFieldProperties>
1443 static void
1444 dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1445 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1446 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1447
1478 template<typename outputDataValueType, class ...outputDataProperties,
1479 typename inputDataLeftValueType, class ...inputDataLeftProperties,
1480 typename inputDataRightValueType, class ...inputDataRightProperties>
1481 static void
1482 dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1483 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1484 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1485
1520 template<typename outputFieldValueType, class ...outputFieldProperties,
1521 typename inputDataValueType, class ...inputDataProperties,
1522 typename inputFieldValueType, class ...inputFieldProperties>
1523 static void
1524 vectorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1525 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1526 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1527
1528
1562 template<typename outputDataValueType, class ...outputDataProperties,
1563 typename inputDataLeftValueType, class ...inputDataLeftProperties,
1564 typename inputDataRightValueType, class ...inputDataRightProperties>
1565 static void
1566 vectorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1567 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1568 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1569
1620 template<typename outputFieldValueType, class ...outputFieldProperties,
1621 typename inputDataValueType, class ...inputDataProperties,
1622 typename inputFieldValueType, class ...inputFieldProperties>
1623 static void
1624 tensorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1625 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1626 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1627 const char transpose = 'N');
1628
1678 template<typename outputDataValueType, class ...outputDataProperties,
1679 typename inputDataLeftValueType, class ...inputDataLeftProperties,
1680 typename inputDataRightValueType, class ...inputDataRightProperties>
1681 static void
1682 tensorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1683 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1684 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1685 const char transpose = 'N' );
1686
1713 template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1714 typename fieldSignValueType, class ...fieldSignProperties>
1715 static void
1716 applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1717 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1718
1745 template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1746 typename fieldSignValueType, class ...fieldSignProperties>
1747 static void
1748 applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1749 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1750
1751
1774 template<typename inoutFunctionValueType, class ...inoutFunctionProperties,
1775 typename fieldSignValueType, class ...fieldSignProperties>
1776 static void
1777 applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1778 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1779
1780
1816 template<typename outputPointValueType, class ...outputPointProperties,
1817 typename inputCoeffValueType, class ...inputCoeffProperties,
1818 typename inputFieldValueType, class ...inputFieldProperties>
1819 static void
1820 evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1821 const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1822 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1823
1824 };
1825
1826} // end namespace Intrepid2
1827
1828// include templated definitions
1830
1831#endif
1832
1833/***************************************************************************************************
1834 ** **
1835 ** D O C U M E N T A T I O N P A G E S **
1836 ** **
1837 **************************************************************************************************/
1838
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
Header file for Intrepid2::ArrayTools class providing utilities for array operations.
Header file for the Intrepid2::CellTools class.
Defines the Data class, a wrapper around a Kokkos::View that allows data that is constant or repeatin...
Definition file for the Intrepid2::FunctionSpaceTools class.
Header file for small functions used in Intrepid2.
Header file for Intrepid2::RealSpaceTools class providing basic linear algebra functionality in 1D,...
Structure-preserving representation of transformed basis values; reference space values and transform...
Contains definitions of custom data types in Intrepid2.
Header function for Intrepid2::Util class and other utility functions.
Reference-space field values for a basis, designed to support typical vector-valued bases.
The data containers in Intrepid2 that support sum factorization and other reduced-data optimizations ...
Wrapper around a Kokkos::View that allows data that is constant or repeating in various logical dimen...
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
static TransformedBasisValues< Scalar, DeviceType > getHCURLtransformCURL2D(const Data< Scalar, DeviceType > &jacobianDetInverse, const BasisValues< Scalar, DeviceType > &refBasisValues)
Transformation of a 2D curl field in the H-curl space, defined at points on a reference cell,...
static void computeFaceMeasure(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< inputJacValueType, inputJacProperties... > inputJac, const Kokkos::DynRankView< inputWeightValueType, inputWeightPropertes... > inputWeights, const int whichFace, const shards::CellTopology parentCell, const Kokkos::DynRankView< scratchValueType, scratchProperties... > scratch)
Returns the weighted integration measures outputVals with dimensions (C,P) used for the computation o...
static void HVOLtransformVALUE(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > jacobianDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a (scalar) value field in the H-vol space, defined at points on a reference cell,...
static TransformedBasisValues< Scalar, DeviceType > getHGRADtransformVALUE(const ordinal_type &numCells, const BasisValues< Scalar, DeviceType > &refBasisValues)
Transformation of a (scalar) value field in the H-grad space, defined at points on a reference cell,...
static void integrate(Kokkos::DynRankView< outputValueValueType, outputValueProperties... > outputValues, const Kokkos::DynRankView< leftValueValueType, leftValueProperties... > leftValues, const Kokkos::DynRankView< rightValueValueType, rightValueProperties... > rightValues, const bool sumInto=false)
Contracts leftValues and rightValues arrays on the point and possibly space dimensions and stores the...
static void applyRightFieldSigns(Kokkos::DynRankView< inoutOperatorValueType, inoutOperatorProperties... > inoutOperator, const Kokkos::DynRankView< fieldSignValueType, fieldSignProperties... > fieldSigns)
Applies right (column) signs, stored in the user-provided container fieldSigns and indexed by (C,...
static TransformedBasisValues< Scalar, DeviceType > getHCURLtransformVALUE(const Data< Scalar, DeviceType > &jacobianInverse, const BasisValues< Scalar, DeviceType > &refBasisValues)
Transformation of a (vector) value field in the H-curl space, defined at points on a reference cell,...
static void HGRADtransformGRAD(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianInverseValueType, jacobianInverseProperties... > jacobianInverse, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a gradient field in the H-grad space, defined at points on a reference cell,...
static void tensorMultiplyDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties... > outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties... > inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties... > inputDataRight, const char transpose='N')
Matrix-vector or matrix-matrix product of data and data; please read the description below.
static void HCURLtransformCURL(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianValueType, jacobianProperties... > jacobian, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > jacobianDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a 3D curl field in the H-curl space, defined at points on a reference cell,...
static void computeEdgeMeasure(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< inputJacValueType, inputJacProperties... > inputJac, const Kokkos::DynRankView< inputWeightValueType, inputWeightProperties... > inputWeights, const int whichEdge, const shards::CellTopology parentCell, const Kokkos::DynRankView< scratchValueType, scratchProperties... > scratch)
Returns the weighted integration measures outVals with dimensions (C,P) used for the computation of e...
static void mapHGradDataFromPhysToRef(Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input)
Transformation of a (scalar) data in the H-grad space, defined in physical space, stored in the user-...
static void mapHDivDataDotNormalFromPhysSideToRefSide(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > metricTensorDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of HDIV data from physical side to reference side. It takes the input defined on phys...
static void dotMultiplyDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties... > outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties... > inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties... > inputDataRight)
Dot product of data and data; please read the description below.
static void multiplyMeasure(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< inputMeasureValueType, inputMeasureProperties... > inputMeasure, const Kokkos::DynRankView< inputValValueType, inputValProperteis... > inputVals)
Multiplies fields inputVals by weighted measures inputMeasure and returns the field array outputVals;...
static bool computeCellMeasure(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< inputDetValueType, inputDetPropertes... > inputDet, const Kokkos::DynRankView< inputWeightValueType, inputWeightPropertes... > inputWeights)
Returns the weighted integration measures outputVals with dimensions (C,P) used for the computation o...
static TransformedBasisValues< Scalar, DeviceType > getHGRADtransformGRAD(const Data< Scalar, DeviceType > &jacobianInverse, const BasisValues< Scalar, DeviceType > &refBasisGradValues)
Transformation of a gradient field in the H-grad space, defined at points on a reference cell,...
static void mapHGradDataFromPhysSideToRefSide(Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input)
Transformation of a (scalar) data in the H-grad space, defined in physical space, stored in the user-...
static void HGRADtransformCURL(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianValueType, jacobianProperties... > jacobian, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > jacobianDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a 2D curl field in the H-grad space, defined at points on a reference cell,...
static void mapHCurlDataCrossNormalFromPhysSideToRefSide(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< tangentsValueType, tangentsProperties... > tangents, const Kokkos::DynRankView< metricTensorInvValueType, metricTensorInvProperties... > metricTensorInv, const Kokkos::DynRankView< metricTensorDetValueType, metricTensorDetProperties... > metricTensorDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of 3D HCURL data from physical side to reference side. It takes the input vector defi...
static void mapHCurlDataFromPhysToRef(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianValueType, jacobianProperties... > jacobian, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a (vector) data in the H-curl space, defined in the physical space,...
static TransformedBasisValues< Scalar, DeviceType > getHDIVtransformDIV(const Data< Scalar, DeviceType > &jacobianDetInverse, const BasisValues< Scalar, DeviceType > &refBasisDivValues)
Transformation of a divergence field in the H-div space, defined at points on a reference cell,...
static void evaluate(Kokkos::DynRankView< outputPointValueType, outputPointProperties... > outputPointVals, const Kokkos::DynRankView< inputCoeffValueType, inputCoeffProperties... > inputCoeffs, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties... > inputFields)
Computes point values outPointVals of a discrete function specified by the basis inFields and coeffic...
static TransformedBasisValues< Scalar, DeviceType > getHCURLtransformCURL(const Data< Scalar, DeviceType > &jacobianDividedByJacobianDet, const BasisValues< Scalar, DeviceType > &refBasisValues)
Transformation of a 3D curl field in the H-curl space, defined at points on a reference cell,...
static void scalarMultiplyDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataPropertes... > inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties... > inputFields, const bool reciprocal=false)
Scalar multiplication of data and fields; please read the description below.
static void dotMultiplyDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties... > inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties... > inputFields)
Dot product of data and fields; please read the description below.
static void applyLeftFieldSigns(Kokkos::DynRankView< inoutOperatorValueType, inoutOperatorProperties... > inoutOperator, const Kokkos::DynRankView< fieldSignValueType, fieldSignProperties... > fieldSigns)
Applies left (row) signs, stored in the user-provided container fieldSigns and indexed by (C,...
static void applyFieldSigns(Kokkos::DynRankView< inoutFunctionValueType, inoutFunctionProperties... > inoutFunction, const Kokkos::DynRankView< fieldSignValueType, fieldSignProperties... > fieldSigns)
Applies field signs, stored in the user-provided container fieldSigns and indexed by (C,...
static TransformedBasisValues< Scalar, DeviceType > getHDIVtransformVALUE(const Data< Scalar, DeviceType > &jacobianDividedByJacobianDet, const BasisValues< Scalar, DeviceType > &refBasisValues)
Transformation of a (vector) value field in the H-div space, defined at points on a reference cell,...
static void HCURLtransformVALUE(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianInverseValueType, jacobianInverseProperties... > jacobianInverse, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a (vector) value field in the H-curl space, defined at points on a reference cell,...
static void vectorMultiplyDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties... > outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties... > inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties... > inputDataRight)
Cross or outer product of data and data; please read the description below.
static TransformedBasisValues< Scalar, DeviceType > getHVOLtransformVALUE(const Data< Scalar, DeviceType > &jacobianDetInverse, const BasisValues< Scalar, DeviceType > &refBasisValues)
Transformation of a (scalar) value field in the H-vol space, defined at points on a reference cell,...
static void vectorMultiplyDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties... > inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties... > inputFields)
Cross or outer product of data and fields; please read the description below.
static void scalarMultiplyDataData(Kokkos::DynRankView< outputDataValuetype, outputDataProperties... > outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties... > inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties... > inputDataRight, const bool reciprocal=false)
Scalar multiplication of data and data; please read the description below.
static void HDIVtransformVALUE(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianValueType, jacobianProperties... > jacobian, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > jacobianDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a (vector) value field in the H-div space, defined at points on a reference cell,...
static void mapHDivDataFromPhysToRef(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianInverseValueType, jacobianInverseProperties... > jacobianInv, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > jacobianDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a (vector) data in the H-div space, defined in the physical space,...
static void mapHVolDataFromPhysToRef(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > jacobianDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a (scalar) data in the H-vol space, defined in the physical space,...
static void HDIVtransformDIV(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianDetValueType, jacobianDetProperties... > jacobianDet, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a divergence field in the H-div space, defined at points on a reference cell,...
static void tensorMultiplyDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties... > inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties... > inputFields, const char transpose='N')
Matrix-vector or matrix-matrix product of data and fields; please read the description below.
static void HGRADtransformVALUE(Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input)
Transformation of a (scalar) value field in the H-grad space, defined at points on a reference cell,...
Structure-preserving representation of transformed vector data; reference space values and transforma...