49 #ifndef __INTREPID2_FUNCTIONSPACETOOLS_HPP__
50 #define __INTREPID2_FUNCTIONSPACETOOLS_HPP__
52 #include "Intrepid2_ConfigDefs.hpp"
54 #include "Shards_CellTopology.hpp"
55 #include "Shards_BasicTopologies.hpp"
70 #include "Kokkos_Core.hpp"
81 template<
typename DeviceType>
83 using ExecSpaceType =
typename DeviceType::execution_space;
84 using MemSpaceType =
typename DeviceType::memory_space;
129 template<
class Scalar>
174 template<
class Scalar>
220 template<
class Scalar>
269 template<
class Scalar>
319 template<
class Scalar>
369 template<
class Scalar>
417 template<
class Scalar>
465 template<
class Scalar>
512 template<
typename outputValueType,
class ...outputProperties,
513 typename inputValueType,
class ...inputProperties>
516 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
531 template<
typename outputValueType,
class ...outputProperties,
532 typename inputValueType,
class ...inputProperties>
535 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
550 template<
typename outputValueType,
class ...outputProperties,
551 typename inputValueType,
class ...inputProperties>
554 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
598 template<
typename OutputValViewType,
599 typename JacobianInverseViewType,
600 typename InputValViewType>
603 const JacobianInverseViewType jacobianInverse,
604 const InputValViewType inputVals );
646 template<
typename outputValValueType,
class ...outputValProperties,
647 typename jacobianInverseValueType,
class ...jacobianInverseProperties,
648 typename inputValValueType,
class ...inputValProperties>
650 HCURLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
651 const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
652 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
673 template<
typename outputValValueType,
class ...outputValProperties,
674 typename jacobianValueType,
class ...jacobianProperties,
675 typename inputValValueType,
class ...inputValProperties>
678 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
679 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
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>
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 );
731 template<
typename outputValValueType,
class ...outputValProperties,
732 typename jacobianDetValueType,
class ...jacobianDetProperties,
733 typename inputValValueType,
class ...inputValProperties>
736 Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
737 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
738 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
784 template<
typename outputValValueType,
class ...outputValProperties,
785 typename jacobianValueType,
class ...jacobianProperties,
786 typename jacobianDetValueType,
class ...jacobianDetProperties,
787 typename inputValValueType,
class ...inputValProperties>
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 );
837 template<
typename outputValValueType,
class ...outputValProperties,
838 typename jacobianDetValueType,
class ...jacobianDetProperties,
839 typename inputValValueType,
class ...inputValProperties>
841 HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
842 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
843 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
889 template<
typename outputValValueType,
class ...outputValProperties,
890 typename jacobianValueType,
class ...jacobianProperties,
891 typename jacobianDetValueType,
class ...jacobianDetProperties,
892 typename inputValValueType,
class ...inputValProperties>
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 );
945 template<
typename outputValValueType,
class ...outputValProperties,
946 typename jacobianValueType,
class ...jacobianProperties,
947 typename jacobianDetValueType,
class ...jacobianDetProperties,
948 typename inputValValueType,
class ...inputValProperties>
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 );
975 template<
typename outputValValueType,
class ...outputValProperties,
976 typename jacobianInverseValueType,
class ...jacobianInverseProperties,
977 typename jacobianDetValueType,
class ...jacobianDetProperties,
978 typename inputValValueType,
class ...inputValProperties>
981 const Kokkos::DynRankView<jacobianInverseValueType, jacobianInverseProperties...> jacobianInv,
982 const Kokkos::DynRankView<jacobianDetValueType, jacobianDetProperties...> jacobianDet,
983 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1004 template<
typename outputValValueType,
class ...outputValProperties,
1005 typename jacobianDetValueType,
class ...jacobianDetProperties,
1006 typename inputValValueType,
class ...inputValProperties>
1009 Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1010 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
1011 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1055 template<
typename outputValValueType,
class ...outputValProperties,
1056 typename jacobianDetValueType,
class ...jacobianDetProperties,
1057 typename inputValValueType,
class ...inputValProperties>
1059 HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1060 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1061 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1103 template<
typename outputValValueType,
class ...outputValProperties,
1104 typename jacobianDetValueType,
class ...jacobianDetProperties,
1105 typename inputValValueType,
class ...inputValProperties>
1107 HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1108 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1109 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1128 template<
typename outputValValueType,
class ...outputValProperties,
1129 typename jacobianDetValueType,
class ...jacobianDetProperties,
1130 typename inputValValueType,
class ...inputValProperties>
1133 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1134 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1149 template<
typename outputValueValueType,
class ...outputValueProperties,
1150 typename leftValueValueType,
class ...leftValueProperties,
1151 typename rightValueValueType,
class ...rightValueProperties>
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);
1188 template<
typename OutputValViewType,
1189 typename InputDetViewType,
1190 typename InputWeightViewType>
1193 const InputDetViewType inputDet,
1194 const InputWeightViewType inputWeights );
1242 template<
typename outputValValueType,
class ...outputValProperties,
1243 typename inputJacValueType,
class ...inputJacProperties,
1244 typename inputWeightValueType,
class ...inputWeightPropertes,
1245 typename scratchValueType,
class ...scratchProperties>
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 );
1298 template<
typename outputValValueType,
class ...outputValProperties,
1299 typename inputJacValueType,
class ...inputJacProperties,
1300 typename inputWeightValueType,
class ...inputWeightProperties,
1301 typename scratchValueType,
class ...scratchProperties>
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 );
1318 template<
typename outputValValueType,
class ...outputValProperties,
1319 typename inputMeasureValueType,
class ...inputMeasureProperties,
1320 typename inputValValueType,
class ...inputValProperteis>
1322 multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1323 const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
1324 const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
1359 template<
typename outputFieldValueType,
class ...outputFieldProperties,
1360 typename inputDataValueType,
class ...inputDataPropertes,
1361 typename inputFieldValueType,
class ...inputFieldProperties>
1364 const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
1365 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1366 const bool reciprocal =
false );
1400 template<
typename outputDataValuetype,
class ...outputDataProperties,
1401 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
1402 typename inputDataRightValueType,
class ...inputDataRightProperties>
1405 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1406 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1407 const bool reciprocal =
false );
1440 template<
typename outputFieldValueType,
class ...outputFieldProperties,
1441 typename inputDataValueType,
class ...inputDataProperties,
1442 typename inputFieldValueType,
class ...inputFieldProperties>
1444 dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1445 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1446 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1478 template<
typename outputDataValueType,
class ...outputDataProperties,
1479 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
1480 typename inputDataRightValueType,
class ...inputDataRightProperties>
1482 dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1483 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1484 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1520 template<
typename outputFieldValueType,
class ...outputFieldProperties,
1521 typename inputDataValueType,
class ...inputDataProperties,
1522 typename inputFieldValueType,
class ...inputFieldProperties>
1525 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1526 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1562 template<
typename outputDataValueType,
class ...outputDataProperties,
1563 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
1564 typename inputDataRightValueType,
class ...inputDataRightProperties>
1567 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1568 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1620 template<
typename outputFieldValueType,
class ...outputFieldProperties,
1621 typename inputDataValueType,
class ...inputDataProperties,
1622 typename inputFieldValueType,
class ...inputFieldProperties>
1625 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1626 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1627 const char transpose =
'N');
1678 template<
typename outputDataValueType,
class ...outputDataProperties,
1679 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
1680 typename inputDataRightValueType,
class ...inputDataRightProperties>
1683 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1684 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1685 const char transpose =
'N' );
1713 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1714 typename fieldSignValueType,
class ...fieldSignProperties>
1716 applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1717 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1745 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1746 typename fieldSignValueType,
class ...fieldSignProperties>
1748 applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1749 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1774 template<
typename inoutFunctionValueType,
class ...inoutFunctionProperties,
1775 typename fieldSignValueType,
class ...fieldSignProperties>
1777 applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1778 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1816 template<
typename outputPointValueType,
class ...outputPointProperties,
1817 typename inputCoeffValueType,
class ...inputCoeffProperties,
1818 typename inputFieldValueType,
class ...inputFieldProperties>
1820 evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1821 const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1822 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
Defines the Data class, a wrapper around a Kokkos::View that allows data that is constant or repeatin...
Header function for Intrepid2::Util class and other utility functions.
Reference-space field values for a basis, designed to support typical vector-valued bases...
Contains definitions of custom data types in Intrepid2.
Header file for small functions used in Intrepid2.