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 OutputValViewType,
599  typename JacobianInverseViewType,
600  typename InputValViewType>
601  static void
602  HGRADtransformGRAD( OutputValViewType outputVals,
603  const JacobianInverseViewType jacobianInverse,
604  const InputValViewType 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 OutputValViewType,
1189  typename InputDetViewType,
1190  typename InputWeightViewType>
1191  static bool
1192  computeCellMeasure( OutputValViewType outputVals,
1193  const InputDetViewType inputDet,
1194  const InputWeightViewType 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 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.
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).