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"
66 #include "Kokkos_Core.hpp"
77 template<
typename ExecSpaceType =
void>
119 template<
typename outputValueType,
class ...outputProperties,
120 typename inputValueType,
class ...inputProperties>
123 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
166 template<
typename outputValValueType,
class ...outputValProperties,
167 typename jacobianInverseValueType,
class ...jacobianInverseProperties,
168 typename inputValValueType,
class ...inputValProperties>
170 HGRADtransformGRAD( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
171 const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
172 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
214 template<
typename outputValValueType,
class ...outputValProperties,
215 typename jacobianInverseValueType,
class ...jacobianInverseProperties,
216 typename inputValValueType,
class ...inputValProperties>
218 HCURLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
219 const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
220 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
265 template<
typename outputValValueType,
class ...outputValProperties,
266 typename jacobianValueType,
class ...jacobianProperties,
267 typename jacobianDetValueType,
class ...jacobianDetProperties,
268 typename inputValValueType,
class ...inputValProperties>
270 HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
271 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
272 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
273 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
318 template<
typename outputValValueType,
class ...outputValProperties,
319 typename jacobianDetValueType,
class ...jacobianDetProperties,
320 typename inputValValueType,
class ...inputValProperties>
322 HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
323 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
324 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
370 template<
typename outputValValueType,
class ...outputValProperties,
371 typename jacobianValueType,
class ...jacobianProperties,
372 typename jacobianDetValueType,
class ...jacobianDetProperties,
373 typename inputValValueType,
class ...inputValProperties>
375 HGRADtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
376 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
377 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
378 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
426 template<
typename outputValValueType,
class ...outputValProperties,
427 typename jacobianValueType,
class ...jacobianProperties,
428 typename jacobianDetValueType,
class ...jacobianDetProperties,
429 typename inputValValueType,
class ...inputValProperties>
431 HDIVtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
432 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
433 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
434 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
477 template<
typename outputValValueType,
class ...outputValProperties,
478 typename jacobianDetValueType,
class ...jacobianDetProperties,
479 typename inputValValueType,
class ...inputValProperties>
481 HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
482 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
483 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
525 template<
typename outputValValueType,
class ...outputValProperties,
526 typename jacobianDetValueType,
class ...jacobianDetProperties,
527 typename inputValValueType,
class ...inputValProperties>
529 HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
530 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
531 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
547 template<
typename outputValueValueType,
class ...outputValueProperties,
548 typename leftValueValueType,
class ...leftValueProperties,
549 typename rightValueValueType,
class ...rightValueProperties>
551 integrate( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
552 const Kokkos::DynRankView<leftValueValueType, leftValueProperties...> leftValues,
553 const Kokkos::DynRankView<rightValueValueType, rightValueProperties...> rightValues,
554 const bool sumInto =
false);
587 template<
typename outputValValueType,
class ...outputValProperties,
588 typename inputDetValueType,
class ...inputDetPropertes,
589 typename inputWeightValueType,
class ...inputWeightPropertes>
591 computeCellMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
592 const Kokkos::DynRankView<inputDetValueType, inputDetPropertes...> inputDet,
593 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights );
641 template<
typename outputValValueType,
class ...outputValProperties,
642 typename inputJacValueType,
class ...inputJacProperties,
643 typename inputWeightValueType,
class ...inputWeightPropertes,
644 typename scratchValueType,
class ...scratchProperties>
646 computeFaceMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
647 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
648 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights,
650 const shards::CellTopology parentCell,
651 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
697 template<
typename outputValValueType,
class ...outputValProperties,
698 typename inputJacValueType,
class ...inputJacProperties,
699 typename inputWeightValueType,
class ...inputWeightProperties,
700 typename scratchValueType,
class ...scratchProperties>
702 computeEdgeMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
703 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
704 const Kokkos::DynRankView<inputWeightValueType,inputWeightProperties...> inputWeights,
706 const shards::CellTopology parentCell,
707 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
717 template<
typename outputValValueType,
class ...outputValProperties,
718 typename inputMeasureValueType,
class ...inputMeasureProperties,
719 typename inputValValueType,
class ...inputValProperteis>
721 multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
722 const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
723 const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
758 template<
typename outputFieldValueType,
class ...outputFieldProperties,
759 typename inputDataValueType,
class ...inputDataPropertes,
760 typename inputFieldValueType,
class ...inputFieldProperties>
763 const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
764 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
765 const bool reciprocal =
false );
799 template<
typename outputDataValuetype,
class ...outputDataProperties,
800 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
801 typename inputDataRightValueType,
class ...inputDataRightProperties>
804 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
805 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
806 const bool reciprocal =
false );
839 template<
typename outputFieldValueType,
class ...outputFieldProperties,
840 typename inputDataValueType,
class ...inputDataProperties,
841 typename inputFieldValueType,
class ...inputFieldProperties>
843 dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
844 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
845 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
877 template<
typename outputDataValueType,
class ...outputDataProperties,
878 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
879 typename inputDataRightValueType,
class ...inputDataRightProperties>
881 dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
882 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
883 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
919 template<
typename outputFieldValueType,
class ...outputFieldProperties,
920 typename inputDataValueType,
class ...inputDataProperties,
921 typename inputFieldValueType,
class ...inputFieldProperties>
924 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
925 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
961 template<
typename outputDataValueType,
class ...outputDataProperties,
962 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
963 typename inputDataRightValueType,
class ...inputDataRightProperties>
966 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
967 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1019 template<
typename outputFieldValueType,
class ...outputFieldProperties,
1020 typename inputDataValueType,
class ...inputDataProperties,
1021 typename inputFieldValueType,
class ...inputFieldProperties>
1024 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1025 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1026 const char transpose =
'N');
1077 template<
typename outputDataValueType,
class ...outputDataProperties,
1078 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
1079 typename inputDataRightValueType,
class ...inputDataRightProperties>
1082 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1083 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1084 const char transpose =
'N' );
1112 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1113 typename fieldSignValueType,
class ...fieldSignProperties>
1115 applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1116 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1144 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1145 typename fieldSignValueType,
class ...fieldSignProperties>
1147 applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1148 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1173 template<
typename inoutFunctionValueType,
class ...inoutFunctionProperties,
1174 typename fieldSignValueType,
class ...fieldSignProperties>
1176 applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1177 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1215 template<
typename outputPointValueType,
class ...outputPointProperties,
1216 typename inputCoeffValueType,
class ...inputCoeffProperties,
1217 typename inputFieldValueType,
class ...inputFieldProperties>
1219 evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1220 const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1221 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
Header function for Intrepid2::Util class and other utility functions.
Contains definitions of custom data types in Intrepid2.
Header file for small functions used in Intrepid2.