Intrepid2
Intrepid2_FunctionSpaceTools.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ************************************************************************
3 //
4 // Intrepid2 Package
5 // Copyright (2007) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Kyungjoo Kim (kyukim@sandia.gov), or
38 // Mauro Perego (mperego@sandia.gov)
39 //
40 // ************************************************************************
41 // @HEADER
42 
49 #ifndef __INTREPID2_FUNCTIONSPACETOOLS_HPP__
50 #define __INTREPID2_FUNCTIONSPACETOOLS_HPP__
51 
52 #include "Intrepid2_ConfigDefs.hpp"
53 
54 #include "Shards_CellTopology.hpp"
55 #include "Shards_BasicTopologies.hpp"
56 
57 #include "Intrepid2_Types.hpp"
58 #include "Intrepid2_Utils.hpp"
59 
60 #include "Intrepid2_Kernels.hpp"
61 
62 #include "Intrepid2_ArrayTools.hpp"
64 #include "Intrepid2_CellTools.hpp"
65 
66 #include "Intrepid2_Data.hpp"
68 #include "Intrepid2_VectorData.hpp"
69 
70 #include "Kokkos_Core.hpp"
71 
72 
73 namespace Intrepid2 {
74 
81  template<typename DeviceType>
83  using ExecSpaceType = typename DeviceType::execution_space;
84  using MemSpaceType = typename DeviceType::memory_space;
85  public:
129  template<class Scalar>
131  {
132  return TransformedBasisValues<Scalar,DeviceType>(jacobianInverse,refBasisGradValues);
133  }
134 
174  template<class Scalar>
176  getHGRADtransformVALUE(const ordinal_type &numCells, const BasisValues<Scalar,DeviceType> &refBasisValues)
177  {
178  return TransformedBasisValues<Scalar,DeviceType>(numCells,refBasisValues);
179  }
180 
220  template<class Scalar>
223  const BasisValues<Scalar,DeviceType> &refBasisValues )
224  {
225  return TransformedBasisValues<Scalar,DeviceType>(jacobianInverse,refBasisValues);
226  }
227 
269  template<class Scalar>
271  getHCURLtransformCURL(const Data<Scalar,DeviceType> &jacobianDividedByJacobianDet,
272  const BasisValues<Scalar,DeviceType> &refBasisValues )
273  {
274  return TransformedBasisValues<Scalar,DeviceType>(jacobianDividedByJacobianDet,refBasisValues);
275  }
276 
319  template<class Scalar>
322  const BasisValues<Scalar,DeviceType> &refBasisValues )
323  {
324  return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisValues);
325  }
326 
369  template<class Scalar>
371  getHDIVtransformVALUE(const Data<Scalar,DeviceType> &jacobianDividedByJacobianDet,
372  const BasisValues<Scalar,DeviceType> &refBasisValues )
373  {
374  return TransformedBasisValues<Scalar,DeviceType>(jacobianDividedByJacobianDet,refBasisValues);
375  }
376 
417  template<class Scalar>
419  getHDIVtransformDIV(const Data<Scalar,DeviceType> &jacobianDetInverse,
420  const BasisValues<Scalar,DeviceType> &refBasisDivValues )
421  {
422  return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisDivValues);
423  }
424 
465  template<class Scalar>
468  const BasisValues<Scalar,DeviceType> &refBasisValues )
469  {
470  return TransformedBasisValues<Scalar,DeviceType>(jacobianDetInverse,refBasisValues);
471  }
472 
512  template<typename outputValueType, class ...outputProperties,
513  typename inputValueType, class ...inputProperties>
514  static void
515  HGRADtransformVALUE( Kokkos::DynRankView<outputValueType,outputProperties...> output,
516  const Kokkos::DynRankView<inputValueType, inputProperties...> input );
517 
518 
531  template<typename outputValueType, class ...outputProperties,
532  typename inputValueType, class ...inputProperties>
533  static void
534  mapHGradDataFromPhysToRef( Kokkos::DynRankView<outputValueType,outputProperties...> output,
535  const Kokkos::DynRankView<inputValueType, inputProperties...> input );
536 
537 
550  template<typename outputValueType, class ...outputProperties,
551  typename inputValueType, class ...inputProperties>
552  static void
553  mapHGradDataFromPhysSideToRefSide( Kokkos::DynRankView<outputValueType,outputProperties...> output,
554  const Kokkos::DynRankView<inputValueType, inputProperties...> input );
555 
556 
598  template<typename outputValValueType, class ...outputValProperties,
599  typename jacobianInverseValueType, class ...jacobianInverseProperties,
600  typename inputValValueType, class ...inputValProperties>
601  static void
602  HGRADtransformGRAD( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
603  const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
604  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
605 
646  template<typename outputValValueType, class ...outputValProperties,
647  typename jacobianInverseValueType, class ...jacobianInverseProperties,
648  typename inputValValueType, class ...inputValProperties>
649  static void
650  HCURLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
651  const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
652  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
653 
654 
673  template<typename outputValValueType, class ...outputValProperties,
674  typename jacobianValueType, class ...jacobianProperties,
675  typename inputValValueType, class ...inputValProperties>
676  static void
677  mapHCurlDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
678  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
679  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
680 
681 
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>
705  static void
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 );
712 
713 
731  template<typename outputValValueType, class ...outputValProperties,
732  typename jacobianDetValueType, class ...jacobianDetProperties,
733  typename inputValValueType, class ...inputValProperties>
734  static void
736  Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
737  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
738  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
739 
740 
784  template<typename outputValValueType, class ...outputValProperties,
785  typename jacobianValueType, class ...jacobianProperties,
786  typename jacobianDetValueType, class ...jacobianDetProperties,
787  typename inputValValueType, class ...inputValProperties>
788  static void
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 );
793 
794 
837  template<typename outputValValueType, class ...outputValProperties,
838  typename jacobianDetValueType, class ...jacobianDetProperties,
839  typename inputValValueType, class ...inputValProperties>
840  static void
841  HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
842  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
843  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
844 
845 
889  template<typename outputValValueType, class ...outputValProperties,
890  typename jacobianValueType, class ...jacobianProperties,
891  typename jacobianDetValueType, class ...jacobianDetProperties,
892  typename inputValValueType, class ...inputValProperties>
893  static void
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 );
898 
899 
900 
945  template<typename outputValValueType, class ...outputValProperties,
946  typename jacobianValueType, class ...jacobianProperties,
947  typename jacobianDetValueType, class ...jacobianDetProperties,
948  typename inputValValueType, class ...inputValProperties>
949  static void
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 );
954 
955 
975  template<typename outputValValueType, class ...outputValProperties,
976  typename jacobianInverseValueType, class ...jacobianInverseProperties,
977  typename jacobianDetValueType, class ...jacobianDetProperties,
978  typename inputValValueType, class ...inputValProperties>
979  static void
980  mapHDivDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
981  const Kokkos::DynRankView<jacobianInverseValueType, jacobianInverseProperties...> jacobianInv,
982  const Kokkos::DynRankView<jacobianDetValueType, jacobianDetProperties...> jacobianDet,
983  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
984 
985 
1004  template<typename outputValValueType, class ...outputValProperties,
1005  typename jacobianDetValueType, class ...jacobianDetProperties,
1006  typename inputValValueType, class ...inputValProperties>
1007  static void
1009  Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1010  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> metricTensorDet,
1011  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1012 
1013 
1055  template<typename outputValValueType, class ...outputValProperties,
1056  typename jacobianDetValueType, class ...jacobianDetProperties,
1057  typename inputValValueType, class ...inputValProperties>
1058  static void
1059  HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1060  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1061  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1062 
1103  template<typename outputValValueType, class ...outputValProperties,
1104  typename jacobianDetValueType, class ...jacobianDetProperties,
1105  typename inputValValueType, class ...inputValProperties>
1106  static void
1107  HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1108  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1109  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1110 
1128  template<typename outputValValueType, class ...outputValProperties,
1129  typename jacobianDetValueType, class ...jacobianDetProperties,
1130  typename inputValValueType, class ...inputValProperties>
1131  static void
1132  mapHVolDataFromPhysToRef( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1133  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
1134  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
1135 
1149  template<typename outputValueValueType, class ...outputValueProperties,
1150  typename leftValueValueType, class ...leftValueProperties,
1151  typename rightValueValueType, class ...rightValueProperties>
1152  static void
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);
1157 
1188  template<typename outputValValueType, class ...outputValProperties,
1189  typename inputDetValueType, class ...inputDetPropertes,
1190  typename inputWeightValueType, class ...inputWeightPropertes>
1191  static bool
1192  computeCellMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1193  const Kokkos::DynRankView<inputDetValueType, inputDetPropertes...> inputDet,
1194  const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights );
1195 
1242  template<typename outputValValueType, class ...outputValProperties,
1243  typename inputJacValueType, class ...inputJacProperties,
1244  typename inputWeightValueType, class ...inputWeightPropertes,
1245  typename scratchValueType, class ...scratchProperties>
1246  static void
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 );
1253 
1298  template<typename outputValValueType, class ...outputValProperties,
1299  typename inputJacValueType, class ...inputJacProperties,
1300  typename inputWeightValueType, class ...inputWeightProperties,
1301  typename scratchValueType, class ...scratchProperties>
1302  static void
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 );
1309 
1318  template<typename outputValValueType, class ...outputValProperties,
1319  typename inputMeasureValueType, class ...inputMeasureProperties,
1320  typename inputValValueType, class ...inputValProperteis>
1321  static void
1322  multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
1323  const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
1324  const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
1325 
1359  template<typename outputFieldValueType, class ...outputFieldProperties,
1360  typename inputDataValueType, class ...inputDataPropertes,
1361  typename inputFieldValueType, class ...inputFieldProperties>
1362  static void
1363  scalarMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1364  const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
1365  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1366  const bool reciprocal = false );
1367 
1400  template<typename outputDataValuetype, class ...outputDataProperties,
1401  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1402  typename inputDataRightValueType, class ...inputDataRightProperties>
1403  static void
1404  scalarMultiplyDataData( Kokkos::DynRankView<outputDataValuetype, outputDataProperties...> outputData,
1405  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1406  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1407  const bool reciprocal = false );
1408 
1440  template<typename outputFieldValueType, class ...outputFieldProperties,
1441  typename inputDataValueType, class ...inputDataProperties,
1442  typename inputFieldValueType, class ...inputFieldProperties>
1443  static void
1444  dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1445  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1446  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1447 
1478  template<typename outputDataValueType, class ...outputDataProperties,
1479  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1480  typename inputDataRightValueType, class ...inputDataRightProperties>
1481  static void
1482  dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1483  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1484  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1485 
1520  template<typename outputFieldValueType, class ...outputFieldProperties,
1521  typename inputDataValueType, class ...inputDataProperties,
1522  typename inputFieldValueType, class ...inputFieldProperties>
1523  static void
1524  vectorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1525  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1526  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1527 
1528 
1562  template<typename outputDataValueType, class ...outputDataProperties,
1563  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1564  typename inputDataRightValueType, class ...inputDataRightProperties>
1565  static void
1566  vectorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1567  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1568  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1569 
1620  template<typename outputFieldValueType, class ...outputFieldProperties,
1621  typename inputDataValueType, class ...inputDataProperties,
1622  typename inputFieldValueType, class ...inputFieldProperties>
1623  static void
1624  tensorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1625  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1626  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1627  const char transpose = 'N');
1628 
1678  template<typename outputDataValueType, class ...outputDataProperties,
1679  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1680  typename inputDataRightValueType, class ...inputDataRightProperties>
1681  static void
1682  tensorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1683  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1684  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1685  const char transpose = 'N' );
1686 
1713  template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1714  typename fieldSignValueType, class ...fieldSignProperties>
1715  static void
1716  applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1717  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1718 
1745  template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1746  typename fieldSignValueType, class ...fieldSignProperties>
1747  static void
1748  applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1749  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1750 
1751 
1774  template<typename inoutFunctionValueType, class ...inoutFunctionProperties,
1775  typename fieldSignValueType, class ...fieldSignProperties>
1776  static void
1777  applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1778  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1779 
1780 
1816  template<typename outputPointValueType, class ...outputPointProperties,
1817  typename inputCoeffValueType, class ...inputCoeffProperties,
1818  typename inputFieldValueType, class ...inputFieldProperties>
1819  static void
1820  evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1821  const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1822  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1823 
1824  };
1825 
1826 } // end namespace Intrepid2
1827 
1828 // include templated definitions
1830 
1831 #endif
1832 
1833 /***************************************************************************************************
1834  ** **
1835  ** D O C U M E N T A T I O N P A G E S **
1836  ** **
1837  **************************************************************************************************/
1838 
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 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 > 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 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 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 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...
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 > 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 HGRADtransformGRAD(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< jacobianInverseValueType, jacobianInverseProperties... > jacobianInverse, const Kokkos::DynRankView< inputValValueType, inputValProperties... > inputVals)
Transformation of a gradient field in the H-grad 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 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.
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.
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 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 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 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 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 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 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 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 bool computeCellMeasure(Kokkos::DynRankView< outputValValueType, outputValProperties... > outputVals, const Kokkos::DynRankView< inputDetValueType, inputDetPropertes... > inputDet, const Kokkos::DynRankView< inputWeightValueType, inputWeightPropertes... > inputWeights)
Returns the weighted integration measures outputVals with dimensions (C,P) used for the computation o...
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...
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.
Reference-space field values for a basis, designed to support typical vector-valued bases...
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-...
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...
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 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...
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 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...
Header file for Intrepid2::ArrayTools class providing utilities for array operations.
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 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...
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 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...
Structure-preserving representation of transformed basis values; reference space values and transform...
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...
Header file for Intrepid2::RealSpaceTools class providing basic linear algebra functionality in 1D...
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 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...
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.
Header file for small functions used in Intrepid2.
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 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...
Header file for the Intrepid2::CellTools class.
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).
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 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...