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 jacobianValueType,
class ...jacobianProperties,
320 typename jacobianDetValueType,
class ...jacobianDetProperties,
321 typename inputValValueType,
class ...inputValProperties>
323 HDIVtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
324 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
325 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
326 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
369 template<
typename outputValValueType,
class ...outputValProperties,
370 typename jacobianDetValueType,
class ...jacobianDetProperties,
371 typename inputValValueType,
class ...inputValProperties>
373 HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
374 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
375 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
417 template<
typename outputValValueType,
class ...outputValProperties,
418 typename jacobianDetValueType,
class ...jacobianDetProperties,
419 typename inputValValueType,
class ...inputValProperties>
421 HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
422 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
423 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
439 template<
typename outputValueValueType,
class ...outputValueProperties,
440 typename leftValueValueType,
class ...leftValueProperties,
441 typename rightValueValueType,
class ...rightValueProperties>
443 integrate( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
444 const Kokkos::DynRankView<leftValueValueType, leftValueProperties...> leftValues,
445 const Kokkos::DynRankView<rightValueValueType, rightValueProperties...> rightValues,
446 const bool sumInto =
false);
479 template<
typename outputValValueType,
class ...outputValProperties,
480 typename inputDetValueType,
class ...inputDetPropertes,
481 typename inputWeightValueType,
class ...inputWeightPropertes>
483 computeCellMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
484 const Kokkos::DynRankView<inputDetValueType, inputDetPropertes...> inputDet,
485 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights );
533 template<
typename outputValValueType,
class ...outputValProperties,
534 typename inputJacValueType,
class ...inputJacProperties,
535 typename inputWeightValueType,
class ...inputWeightPropertes,
536 typename scratchValueType,
class ...scratchProperties>
538 computeFaceMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
539 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
540 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights,
542 const shards::CellTopology parentCell,
543 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
589 template<
typename outputValValueType,
class ...outputValProperties,
590 typename inputJacValueType,
class ...inputJacProperties,
591 typename inputWeightValueType,
class ...inputWeightProperties,
592 typename scratchValueType,
class ...scratchProperties>
594 computeEdgeMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
595 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
596 const Kokkos::DynRankView<inputWeightValueType,inputWeightProperties...> inputWeights,
598 const shards::CellTopology parentCell,
599 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
609 template<
typename outputValValueType,
class ...outputValProperties,
610 typename inputMeasureValueType,
class ...inputMeasureProperties,
611 typename inputValValueType,
class ...inputValProperteis>
613 multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
614 const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
615 const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
650 template<
typename outputFieldValueType,
class ...outputFieldProperties,
651 typename inputDataValueType,
class ...inputDataPropertes,
652 typename inputFieldValueType,
class ...inputFieldProperties>
655 const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
656 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
657 const bool reciprocal =
false );
691 template<
typename outputDataValuetype,
class ...outputDataProperties,
692 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
693 typename inputDataRightValueType,
class ...inputDataRightProperties>
696 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
697 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
698 const bool reciprocal =
false );
731 template<
typename outputFieldValueType,
class ...outputFieldProperties,
732 typename inputDataValueType,
class ...inputDataProperties,
733 typename inputFieldValueType,
class ...inputFieldProperties>
735 dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
736 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
737 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
769 template<
typename outputDataValueType,
class ...outputDataProperties,
770 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
771 typename inputDataRightValueType,
class ...inputDataRightProperties>
773 dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
774 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
775 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
811 template<
typename outputFieldValueType,
class ...outputFieldProperties,
812 typename inputDataValueType,
class ...inputDataProperties,
813 typename inputFieldValueType,
class ...inputFieldProperties>
816 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
817 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
853 template<
typename outputDataValueType,
class ...outputDataProperties,
854 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
855 typename inputDataRightValueType,
class ...inputDataRightProperties>
858 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
859 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
911 template<
typename outputFieldValueType,
class ...outputFieldProperties,
912 typename inputDataValueType,
class ...inputDataProperties,
913 typename inputFieldValueType,
class ...inputFieldProperties>
916 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
917 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
918 const char transpose =
'N');
969 template<
typename outputDataValueType,
class ...outputDataProperties,
970 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
971 typename inputDataRightValueType,
class ...inputDataRightProperties>
974 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
975 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
976 const char transpose =
'N' );
1004 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1005 typename fieldSignValueType,
class ...fieldSignProperties>
1007 applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1008 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1036 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1037 typename fieldSignValueType,
class ...fieldSignProperties>
1039 applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1040 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1065 template<
typename inoutFunctionValueType,
class ...inoutFunctionProperties,
1066 typename fieldSignValueType,
class ...fieldSignProperties>
1068 applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1069 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1107 template<
typename outputPointValueType,
class ...outputPointProperties,
1108 typename inputCoeffValueType,
class ...inputCoeffProperties,
1109 typename inputFieldValueType,
class ...inputFieldProperties>
1111 evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1112 const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1113 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.