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
32
33#include "Intrepid2_Data.hpp"
36
37#include "Kokkos_Core.hpp"
38
39
40namespace 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>
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
Header file for Intrepid2::ArrayTools class providing utilities for array operations.
Header file for the Intrepid2::CellTools class.
Defines the Data class, a wrapper around a Kokkos::View that allows data that is constant or repeatin...
Definition file for the Intrepid2::FunctionSpaceTools class.
Header file for small functions used in Intrepid2.
Header file for Intrepid2::RealSpaceTools class providing basic linear algebra functionality in 1D,...
Structure-preserving representation of transformed basis values; reference space values and transform...
Contains definitions of custom data types in Intrepid2.
Header function for Intrepid2::Util class and other utility functions.
Reference-space field values for a basis, designed to support typical vector-valued bases.
The data containers in Intrepid2 that support sum factorization and other reduced-data optimizations ...
Wrapper around a Kokkos::View that allows data that is constant or repeating in various logical dimen...
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
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,...
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 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 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 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 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 > 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 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 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...
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 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 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 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 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 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 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 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 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 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,...
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 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 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 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 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 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 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 > 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 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 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 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 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 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 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,...
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,...
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 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.
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 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,...
Structure-preserving representation of transformed vector data; reference space values and transforma...