Intrepid2
Intrepid2_FunctionSpaceTools.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Intrepid2 Package
4 //
5 // Copyright 2007 NTESS and the Intrepid2 contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
16 #ifndef __INTREPID2_FUNCTIONSPACETOOLS_HPP__
17 #define __INTREPID2_FUNCTIONSPACETOOLS_HPP__
18 
19 #include "Intrepid2_ConfigDefs.hpp"
20 
21 #include "Shards_CellTopology.hpp"
22 #include "Shards_BasicTopologies.hpp"
23 
24 #include "Intrepid2_Types.hpp"
25 #include "Intrepid2_Utils.hpp"
26 
27 #include "Intrepid2_Kernels.hpp"
28 
29 #include "Intrepid2_ArrayTools.hpp"
31 #include "Intrepid2_CellTools.hpp"
32 
33 #include "Intrepid2_Data.hpp"
35 #include "Intrepid2_VectorData.hpp"
36 
37 #include "Kokkos_Core.hpp"
38 
39 
40 namespace Intrepid2 {
41 
48  template<typename DeviceType>
50  using ExecSpaceType = typename DeviceType::execution_space;
51  using MemSpaceType = typename DeviceType::memory_space;
52  public:
96  template<class Scalar>
98  {
99  return TransformedBasisValues<Scalar,DeviceType>(jacobianInverse,refBasisGradValues);
100  }
101 
141  template<class Scalar>
143  getHGRADtransformVALUE(const ordinal_type &numCells, const BasisValues<Scalar,DeviceType> &refBasisValues)
144  {
145  return TransformedBasisValues<Scalar,DeviceType>(numCells,refBasisValues);
146  }
147 
187  template<class Scalar>
190  const BasisValues<Scalar,DeviceType> &refBasisValues )
191  {
192  return TransformedBasisValues<Scalar,DeviceType>(jacobianInverse,refBasisValues);
193  }
194 
236  template<class Scalar>
238  getHCURLtransformCURL(const Data<Scalar,DeviceType> &jacobianDividedByJacobianDet,
239  const BasisValues<Scalar,DeviceType> &refBasisValues )
240  {
241  return TransformedBasisValues<Scalar,DeviceType>(jacobianDividedByJacobianDet,refBasisValues);
242  }
243 
286  template<class Scalar>
289  const BasisValues<Scalar,DeviceType> &refBasisValues )
290  {
291  return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisValues);
292  }
293 
336  template<class Scalar>
338  getHDIVtransformVALUE(const Data<Scalar,DeviceType> &jacobianDividedByJacobianDet,
339  const BasisValues<Scalar,DeviceType> &refBasisValues )
340  {
341  return TransformedBasisValues<Scalar,DeviceType>(jacobianDividedByJacobianDet,refBasisValues);
342  }
343 
384  template<class Scalar>
386  getHDIVtransformDIV(const Data<Scalar,DeviceType> &jacobianDetInverse,
387  const BasisValues<Scalar,DeviceType> &refBasisDivValues )
388  {
389  return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisDivValues);
390  }
391 
432  template<class Scalar>
435  const BasisValues<Scalar,DeviceType> &refBasisValues )
436  {
437  return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisValues);
438  }
439 
479  template<typename outputValueType, class ...outputProperties,
480  typename inputValueType, class ...inputProperties>
481  static void
482  HGRADtransformVALUE( Kokkos::DynRankView<outputValueType,outputProperties...> output,
483  const Kokkos::DynRankView<inputValueType, inputProperties...> input );
484 
485 
498  template<typename outputValueType, class ...outputProperties,
499  typename inputValueType, class ...inputProperties>
500  static void
501  mapHGradDataFromPhysToRef( Kokkos::DynRankView<outputValueType,outputProperties...> output,
502  const Kokkos::DynRankView<inputValueType, inputProperties...> input );
503 
504 
517  template<typename outputValueType, class ...outputProperties,
518  typename inputValueType, class ...inputProperties>
519  static void
520  mapHGradDataFromPhysSideToRefSide( Kokkos::DynRankView<outputValueType,outputProperties...> output,
521  const Kokkos::DynRankView<inputValueType, inputProperties...> input );
522 
523 
565  template<typename OutputValViewType,
566  typename JacobianInverseViewType,
567  typename InputValViewType>
568  static void
569  HGRADtransformGRAD( OutputValViewType outputVals,
570  const JacobianInverseViewType jacobianInverse,
571  const InputValViewType inputVals );
572 
613  template<typename outputValValueType, class ...outputValProperties,
614  typename jacobianInverseValueType, class ...jacobianInverseProperties,
615  typename inputValValueType, class ...inputValProperties>
616  static void
617  HCURLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
618  const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
619  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
620 
621 
640  template<typename outputValValueType, class ...outputValProperties,
641  typename jacobianValueType, class ...jacobianProperties,
642  typename inputValValueType, class ...inputValProperties>
643  static void
644  mapHCurlDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
645  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
646  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
647 
648 
667  template<typename outputValValueType, class ...outputValProperties,
668  typename tangentsValueType, class ...tangentsProperties,
669  typename metricTensorInvValueType, class ...metricTensorInvProperties,
670  typename metricTensorDetValueType, class ...metricTensorDetProperties,
671  typename inputValValueType, class ...inputValProperties>
672  static void
674  Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
675  const Kokkos::DynRankView<tangentsValueType, tangentsProperties...> tangents,
676  const Kokkos::DynRankView<metricTensorInvValueType,metricTensorInvProperties...> metricTensorInv,
677  const Kokkos::DynRankView<metricTensorDetValueType,metricTensorDetProperties...> metricTensorDet,
678  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
679 
680 
698  template<typename outputValValueType, class ...outputValProperties,
699  typename jacobianDetValueType, class ...jacobianDetProperties,
700  typename inputValValueType, class ...inputValProperties>
701  static void
703  Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
704  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
705  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
706 
707 
751  template<typename outputValValueType, class ...outputValProperties,
752  typename jacobianValueType, class ...jacobianProperties,
753  typename jacobianDetValueType, class ...jacobianDetProperties,
754  typename inputValValueType, class ...inputValProperties>
755  static void
756  HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
757  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
758  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
759  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
760 
761 
804  template<typename outputValValueType, class ...outputValProperties,
805  typename jacobianDetValueType, class ...jacobianDetProperties,
806  typename inputValValueType, class ...inputValProperties>
807  static void
808  HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
809  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
810  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
811 
812 
856  template<typename outputValValueType, class ...outputValProperties,
857  typename jacobianValueType, class ...jacobianProperties,
858  typename jacobianDetValueType, class ...jacobianDetProperties,
859  typename inputValValueType, class ...inputValProperties>
860  static void
861  HGRADtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
862  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
863  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
864  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
865 
866 
867 
912  template<typename outputValValueType, class ...outputValProperties,
913  typename jacobianValueType, class ...jacobianProperties,
914  typename jacobianDetValueType, class ...jacobianDetProperties,
915  typename inputValValueType, class ...inputValProperties>
916  static void
917  HDIVtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
918  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
919  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
920  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
921 
922 
942  template<typename outputValValueType, class ...outputValProperties,
943  typename jacobianInverseValueType, class ...jacobianInverseProperties,
944  typename jacobianDetValueType, class ...jacobianDetProperties,
945  typename inputValValueType, class ...inputValProperties>
946  static void
947  mapHDivDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
948  const Kokkos::DynRankView<jacobianInverseValueType, jacobianInverseProperties...> jacobianInv,
949  const Kokkos::DynRankView<jacobianDetValueType, jacobianDetProperties...> jacobianDet,
950  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
951 
952 
971  template<typename outputValValueType, class ...outputValProperties,
972  typename jacobianDetValueType, class ...jacobianDetProperties,
973  typename inputValValueType, class ...inputValProperties>
974  static void
976  Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
977  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
978  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
979 
980 
1022  template<typename outputValValueType, class ...outputValProperties,
1023  typename jacobianDetValueType, class ...jacobianDetProperties,
1024  typename inputValValueType, class ...inputValProperties>
1025  static void
1026  HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1027  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1028  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1029 
1070  template<typename outputValValueType, class ...outputValProperties,
1071  typename jacobianDetValueType, class ...jacobianDetProperties,
1072  typename inputValValueType, class ...inputValProperties>
1073  static void
1074  HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1075  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1076  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1077 
1095  template<typename outputValValueType, class ...outputValProperties,
1096  typename jacobianDetValueType, class ...jacobianDetProperties,
1097  typename inputValValueType, class ...inputValProperties>
1098  static void
1099  mapHVolDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1100  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1101  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1102 
1116  template<typename outputValueValueType, class ...outputValueProperties,
1117  typename leftValueValueType, class ...leftValueProperties,
1118  typename rightValueValueType, class ...rightValueProperties>
1119  static void
1120  integrate( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
1121  const Kokkos::DynRankView<leftValueValueType, leftValueProperties...> leftValues,
1122  const Kokkos::DynRankView<rightValueValueType, rightValueProperties...> rightValues,
1123  const bool sumInto = false);
1124 
1155  template<typename OutputValViewType,
1156  typename InputDetViewType,
1157  typename InputWeightViewType>
1158  static bool
1159  computeCellMeasure( OutputValViewType outputVals,
1160  const InputDetViewType inputDet,
1161  const InputWeightViewType inputWeights );
1162 
1209  template<typename outputValValueType, class ...outputValProperties,
1210  typename inputJacValueType, class ...inputJacProperties,
1211  typename inputWeightValueType, class ...inputWeightPropertes,
1212  typename scratchValueType, class ...scratchProperties>
1213  static void
1214  computeFaceMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1215  const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
1216  const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights,
1217  const int whichFace,
1218  const shards::CellTopology parentCell,
1219  const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
1220 
1265  template<typename outputValValueType, class ...outputValProperties,
1266  typename inputJacValueType, class ...inputJacProperties,
1267  typename inputWeightValueType, class ...inputWeightProperties,
1268  typename scratchValueType, class ...scratchProperties>
1269  static void
1270  computeEdgeMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1271  const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
1272  const Kokkos::DynRankView<inputWeightValueType,inputWeightProperties...> inputWeights,
1273  const int whichEdge,
1274  const shards::CellTopology parentCell,
1275  const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
1276 
1285  template<typename outputValValueType, class ...outputValProperties,
1286  typename inputMeasureValueType, class ...inputMeasureProperties,
1287  typename inputValValueType, class ...inputValProperteis>
1288  static void
1289  multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1290  const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
1291  const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
1292 
1326  template<typename outputFieldValueType, class ...outputFieldProperties,
1327  typename inputDataValueType, class ...inputDataPropertes,
1328  typename inputFieldValueType, class ...inputFieldProperties>
1329  static void
1330  scalarMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1331  const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
1332  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1333  const bool reciprocal = false );
1334 
1367  template<typename outputDataValuetype, class ...outputDataProperties,
1368  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1369  typename inputDataRightValueType, class ...inputDataRightProperties>
1370  static void
1371  scalarMultiplyDataData( Kokkos::DynRankView<outputDataValuetype, outputDataProperties...> outputData,
1372  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1373  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1374  const bool reciprocal = false );
1375 
1407  template<typename outputFieldValueType, class ...outputFieldProperties,
1408  typename inputDataValueType, class ...inputDataProperties,
1409  typename inputFieldValueType, class ...inputFieldProperties>
1410  static void
1411  dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1412  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1413  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1414 
1445  template<typename outputDataValueType, class ...outputDataProperties,
1446  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1447  typename inputDataRightValueType, class ...inputDataRightProperties>
1448  static void
1449  dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1450  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1451  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1452 
1487  template<typename outputFieldValueType, class ...outputFieldProperties,
1488  typename inputDataValueType, class ...inputDataProperties,
1489  typename inputFieldValueType, class ...inputFieldProperties>
1490  static void
1491  vectorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1492  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1493  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1494 
1495 
1529  template<typename outputDataValueType, class ...outputDataProperties,
1530  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1531  typename inputDataRightValueType, class ...inputDataRightProperties>
1532  static void
1533  vectorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1534  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1535  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1536 
1587  template<typename outputFieldValueType, class ...outputFieldProperties,
1588  typename inputDataValueType, class ...inputDataProperties,
1589  typename inputFieldValueType, class ...inputFieldProperties>
1590  static void
1591  tensorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1592  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1593  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1594  const char transpose = 'N');
1595 
1645  template<typename outputDataValueType, class ...outputDataProperties,
1646  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1647  typename inputDataRightValueType, class ...inputDataRightProperties>
1648  static void
1649  tensorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1650  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1651  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1652  const char transpose = 'N' );
1653 
1680  template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1681  typename fieldSignValueType, class ...fieldSignProperties>
1682  static void
1683  applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1684  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1685 
1712  template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1713  typename fieldSignValueType, class ...fieldSignProperties>
1714  static void
1715  applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1716  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1717 
1718 
1741  template<typename inoutFunctionValueType, class ...inoutFunctionProperties,
1742  typename fieldSignValueType, class ...fieldSignProperties>
1743  static void
1744  applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1745  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1746 
1747 
1783  template<typename outputPointValueType, class ...outputPointProperties,
1784  typename inputCoeffValueType, class ...inputCoeffProperties,
1785  typename inputFieldValueType, class ...inputFieldProperties>
1786  static void
1787  evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1788  const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1789  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1790 
1791  };
1792 
1793 } // end namespace Intrepid2
1794 
1795 // include templated definitions
1797 
1798 #endif
1799 
1800 /***************************************************************************************************
1801  ** **
1802  ** D O C U M E N T A T I O N P A G E S **
1803  ** **
1804  **************************************************************************************************/
1805 
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 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, stored in the user-provided container inputVals and indexed by (C,P,D), into the output container outputVals, defined on the reference cell and indexed by (C,P,D).
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 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 > 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 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...
Defines the Data class, a wrapper around a Kokkos::View that allows data that is constant or repeatin...
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 > 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 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 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...
Header function for Intrepid2::Util class and other utility functions.
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 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.
The data containers in Intrepid2 that support sum factorization and other reduced-data optimizations ...
Definition file for the Intrepid2::FunctionSpaceTools class.
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...
Reference-space field values for a basis, designed to support typical vector-valued bases...
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 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 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.
Contains definitions of custom data types in Intrepid2.
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 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 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-...
Header file for Intrepid2::ArrayTools class providing utilities for array operations.
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 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 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, stored in the user-provided container inputVals and indexed by (C,P), into the output container outputVals, defined on the reference cell and indexed by (C,P).
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 HGRADtransformGRAD(OutputValViewType outputVals, const JacobianInverseViewType jacobianInverse, const InputValViewType inputVals)
Transformation of a gradient field in the H-grad 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...
Structure-preserving representation of transformed basis values; reference space values and transform...
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 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 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...
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
Structure-preserving representation of transformed vector data; reference space values and transforma...
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 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...
Header file for Intrepid2::RealSpaceTools class providing basic linear algebra functionality in 1D...
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 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 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...
Header file for small functions used in Intrepid2.
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 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 bool computeCellMeasure(OutputValViewType outputVals, const InputDetViewType inputDet, const InputWeightViewType inputWeights)
Returns the weighted integration measures outputVals with dimensions (C,P) used for the computation o...
Header file for the Intrepid2::CellTools class.
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...
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, stored in the user-provided container inputVals and indexed by (C,P,D), into the output container outputVals, defined on the reference cell and indexed by (C,P,D).