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<
typename outputValueType,
class ...outputProperties,
175 typename inputValueType,
class ...inputProperties>
178 const Kokkos::DynRankView<inputValueType, inputProperties...> input );
221 template<
typename outputValValueType,
class ...outputValProperties,
222 typename jacobianInverseValueType,
class ...jacobianInverseProperties,
223 typename inputValValueType,
class ...inputValProperties>
225 HGRADtransformGRAD( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
226 const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
227 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
269 template<
typename outputValValueType,
class ...outputValProperties,
270 typename jacobianInverseValueType,
class ...jacobianInverseProperties,
271 typename inputValValueType,
class ...inputValProperties>
273 HCURLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
274 const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
275 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
320 template<
typename outputValValueType,
class ...outputValProperties,
321 typename jacobianValueType,
class ...jacobianProperties,
322 typename jacobianDetValueType,
class ...jacobianDetProperties,
323 typename inputValValueType,
class ...inputValProperties>
325 HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
326 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
327 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
328 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
373 template<
typename outputValValueType,
class ...outputValProperties,
374 typename jacobianDetValueType,
class ...jacobianDetProperties,
375 typename inputValValueType,
class ...inputValProperties>
377 HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
378 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
379 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
425 template<
typename outputValValueType,
class ...outputValProperties,
426 typename jacobianValueType,
class ...jacobianProperties,
427 typename jacobianDetValueType,
class ...jacobianDetProperties,
428 typename inputValValueType,
class ...inputValProperties>
430 HGRADtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
431 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
432 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
433 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
481 template<
typename outputValValueType,
class ...outputValProperties,
482 typename jacobianValueType,
class ...jacobianProperties,
483 typename jacobianDetValueType,
class ...jacobianDetProperties,
484 typename inputValValueType,
class ...inputValProperties>
486 HDIVtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
487 const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
488 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
489 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
532 template<
typename outputValValueType,
class ...outputValProperties,
533 typename jacobianDetValueType,
class ...jacobianDetProperties,
534 typename inputValValueType,
class ...inputValProperties>
536 HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
537 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
538 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
580 template<
typename outputValValueType,
class ...outputValProperties,
581 typename jacobianDetValueType,
class ...jacobianDetProperties,
582 typename inputValValueType,
class ...inputValProperties>
584 HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
585 const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
586 const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
602 template<
typename outputValueValueType,
class ...outputValueProperties,
603 typename leftValueValueType,
class ...leftValueProperties,
604 typename rightValueValueType,
class ...rightValueProperties>
606 integrate( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
607 const Kokkos::DynRankView<leftValueValueType, leftValueProperties...> leftValues,
608 const Kokkos::DynRankView<rightValueValueType, rightValueProperties...> rightValues,
609 const bool sumInto =
false);
641 template<
typename outputValValueType,
class ...outputValProperties,
642 typename inputDetValueType,
class ...inputDetPropertes,
643 typename inputWeightValueType,
class ...inputWeightPropertes>
645 computeCellMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
646 const Kokkos::DynRankView<inputDetValueType, inputDetPropertes...> inputDet,
647 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights );
695 template<
typename outputValValueType,
class ...outputValProperties,
696 typename inputJacValueType,
class ...inputJacProperties,
697 typename inputWeightValueType,
class ...inputWeightPropertes,
698 typename scratchValueType,
class ...scratchProperties>
700 computeFaceMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
701 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
702 const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights,
704 const shards::CellTopology parentCell,
705 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
751 template<
typename outputValValueType,
class ...outputValProperties,
752 typename inputJacValueType,
class ...inputJacProperties,
753 typename inputWeightValueType,
class ...inputWeightProperties,
754 typename scratchValueType,
class ...scratchProperties>
756 computeEdgeMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
757 const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
758 const Kokkos::DynRankView<inputWeightValueType,inputWeightProperties...> inputWeights,
760 const shards::CellTopology parentCell,
761 const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
771 template<
typename outputValValueType,
class ...outputValProperties,
772 typename inputMeasureValueType,
class ...inputMeasureProperties,
773 typename inputValValueType,
class ...inputValProperteis>
775 multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
776 const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
777 const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
812 template<
typename outputFieldValueType,
class ...outputFieldProperties,
813 typename inputDataValueType,
class ...inputDataPropertes,
814 typename inputFieldValueType,
class ...inputFieldProperties>
817 const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
818 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
819 const bool reciprocal =
false );
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,
860 const bool reciprocal =
false );
893 template<
typename outputFieldValueType,
class ...outputFieldProperties,
894 typename inputDataValueType,
class ...inputDataProperties,
895 typename inputFieldValueType,
class ...inputFieldProperties>
897 dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
898 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
899 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
931 template<
typename outputDataValueType,
class ...outputDataProperties,
932 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
933 typename inputDataRightValueType,
class ...inputDataRightProperties>
935 dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
936 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
937 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
973 template<
typename outputFieldValueType,
class ...outputFieldProperties,
974 typename inputDataValueType,
class ...inputDataProperties,
975 typename inputFieldValueType,
class ...inputFieldProperties>
978 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
979 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1015 template<
typename outputDataValueType,
class ...outputDataProperties,
1016 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
1017 typename inputDataRightValueType,
class ...inputDataRightProperties>
1020 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1021 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1073 template<
typename outputFieldValueType,
class ...outputFieldProperties,
1074 typename inputDataValueType,
class ...inputDataProperties,
1075 typename inputFieldValueType,
class ...inputFieldProperties>
1078 const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1079 const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1080 const char transpose =
'N');
1131 template<
typename outputDataValueType,
class ...outputDataProperties,
1132 typename inputDataLeftValueType,
class ...inputDataLeftProperties,
1133 typename inputDataRightValueType,
class ...inputDataRightProperties>
1136 const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1137 const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1138 const char transpose =
'N' );
1166 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1167 typename fieldSignValueType,
class ...fieldSignProperties>
1169 applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1170 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1198 template<
typename inoutOperatorValueType,
class ...inoutOperatorProperties,
1199 typename fieldSignValueType,
class ...fieldSignProperties>
1201 applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1202 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1227 template<
typename inoutFunctionValueType,
class ...inoutFunctionProperties,
1228 typename fieldSignValueType,
class ...fieldSignProperties>
1230 applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1231 const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1269 template<
typename outputPointValueType,
class ...outputPointProperties,
1270 typename inputCoeffValueType,
class ...inputCoeffProperties,
1271 typename inputFieldValueType,
class ...inputFieldProperties>
1273 evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1274 const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1275 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.
Reference-space field values for a basis, designed to support typical vector-valued bases...