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 TransformedVectorData<Scalar,DeviceType>(jacobianInverse,refBasisGradValues);
133  }
134 
174  template<typename outputValueType, class ...outputProperties,
175  typename inputValueType, class ...inputProperties>
176  static void
177  HGRADtransformVALUE( Kokkos::DynRankView<outputValueType,outputProperties...> output,
178  const Kokkos::DynRankView<inputValueType, inputProperties...> input );
179 
221  template<typename outputValValueType, class ...outputValProperties,
222  typename jacobianInverseValueType, class ...jacobianInverseProperties,
223  typename inputValValueType, class ...inputValProperties>
224  static void
225  HGRADtransformGRAD( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
226  const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
227  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
228 
269  template<typename outputValValueType, class ...outputValProperties,
270  typename jacobianInverseValueType, class ...jacobianInverseProperties,
271  typename inputValValueType, class ...inputValProperties>
272  static void
273  HCURLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
274  const Kokkos::DynRankView<jacobianInverseValueType,jacobianInverseProperties...> jacobianInverse,
275  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
276 
320  template<typename outputValValueType, class ...outputValProperties,
321  typename jacobianValueType, class ...jacobianProperties,
322  typename jacobianDetValueType, class ...jacobianDetProperties,
323  typename inputValValueType, class ...inputValProperties>
324  static void
325  HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
326  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
327  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
328  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
329 
330 
373  template<typename outputValValueType, class ...outputValProperties,
374  typename jacobianDetValueType, class ...jacobianDetProperties,
375  typename inputValValueType, class ...inputValProperties>
376  static void
377  HCURLtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
378  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
379  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
380 
381 
425  template<typename outputValValueType, class ...outputValProperties,
426  typename jacobianValueType, class ...jacobianProperties,
427  typename jacobianDetValueType, class ...jacobianDetProperties,
428  typename inputValValueType, class ...inputValProperties>
429  static void
430  HGRADtransformCURL( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
431  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
432  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
433  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
434 
435 
436 
481  template<typename outputValValueType, class ...outputValProperties,
482  typename jacobianValueType, class ...jacobianProperties,
483  typename jacobianDetValueType, class ...jacobianDetProperties,
484  typename inputValValueType, class ...inputValProperties>
485  static void
486  HDIVtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
487  const Kokkos::DynRankView<jacobianValueType, jacobianProperties...> jacobian,
488  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
489  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
490 
532  template<typename outputValValueType, class ...outputValProperties,
533  typename jacobianDetValueType, class ...jacobianDetProperties,
534  typename inputValValueType, class ...inputValProperties>
535  static void
536  HDIVtransformDIV( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
537  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
538  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
539 
580  template<typename outputValValueType, class ...outputValProperties,
581  typename jacobianDetValueType, class ...jacobianDetProperties,
582  typename inputValValueType, class ...inputValProperties>
583  static void
584  HVOLtransformVALUE( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
585  const Kokkos::DynRankView<jacobianDetValueType,jacobianDetProperties...> jacobianDet,
586  const Kokkos::DynRankView<inputValValueType, inputValProperties...> inputVals );
587 
588 
602  template<typename outputValueValueType, class ...outputValueProperties,
603  typename leftValueValueType, class ...leftValueProperties,
604  typename rightValueValueType, class ...rightValueProperties>
605  static void
606  integrate( Kokkos::DynRankView<outputValueValueType,outputValueProperties...> outputValues,
607  const Kokkos::DynRankView<leftValueValueType, leftValueProperties...> leftValues,
608  const Kokkos::DynRankView<rightValueValueType, rightValueProperties...> rightValues,
609  const bool sumInto = false);
610 
641  template<typename outputValValueType, class ...outputValProperties,
642  typename inputDetValueType, class ...inputDetPropertes,
643  typename inputWeightValueType, class ...inputWeightPropertes>
644  static bool
645  computeCellMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
646  const Kokkos::DynRankView<inputDetValueType, inputDetPropertes...> inputDet,
647  const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights );
648 
695  template<typename outputValValueType, class ...outputValProperties,
696  typename inputJacValueType, class ...inputJacProperties,
697  typename inputWeightValueType, class ...inputWeightPropertes,
698  typename scratchValueType, class ...scratchProperties>
699  static void
700  computeFaceMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
701  const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
702  const Kokkos::DynRankView<inputWeightValueType,inputWeightPropertes...> inputWeights,
703  const int whichFace,
704  const shards::CellTopology parentCell,
705  const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
706 
751  template<typename outputValValueType, class ...outputValProperties,
752  typename inputJacValueType, class ...inputJacProperties,
753  typename inputWeightValueType, class ...inputWeightProperties,
754  typename scratchValueType, class ...scratchProperties>
755  static void
756  computeEdgeMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
757  const Kokkos::DynRankView<inputJacValueType, inputJacProperties...> inputJac,
758  const Kokkos::DynRankView<inputWeightValueType,inputWeightProperties...> inputWeights,
759  const int whichEdge,
760  const shards::CellTopology parentCell,
761  const Kokkos::DynRankView<scratchValueType, scratchProperties...> scratch );
762 
771  template<typename outputValValueType, class ...outputValProperties,
772  typename inputMeasureValueType, class ...inputMeasureProperties,
773  typename inputValValueType, class ...inputValProperteis>
774  static void
775  multiplyMeasure( Kokkos::DynRankView<outputValValueType, outputValProperties...> outputVals,
776  const Kokkos::DynRankView<inputMeasureValueType,inputMeasureProperties...> inputMeasure,
777  const Kokkos::DynRankView<inputValValueType, inputValProperteis...> inputVals );
778 
812  template<typename outputFieldValueType, class ...outputFieldProperties,
813  typename inputDataValueType, class ...inputDataPropertes,
814  typename inputFieldValueType, class ...inputFieldProperties>
815  static void
816  scalarMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
817  const Kokkos::DynRankView<inputDataValueType, inputDataPropertes...> inputData,
818  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
819  const bool reciprocal = false );
820 
853  template<typename outputDataValuetype, class ...outputDataProperties,
854  typename inputDataLeftValueType, class ...inputDataLeftProperties,
855  typename inputDataRightValueType, class ...inputDataRightProperties>
856  static void
857  scalarMultiplyDataData( Kokkos::DynRankView<outputDataValuetype, outputDataProperties...> outputData,
858  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
859  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
860  const bool reciprocal = false );
861 
893  template<typename outputFieldValueType, class ...outputFieldProperties,
894  typename inputDataValueType, class ...inputDataProperties,
895  typename inputFieldValueType, class ...inputFieldProperties>
896  static void
897  dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
898  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
899  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
900 
931  template<typename outputDataValueType, class ...outputDataProperties,
932  typename inputDataLeftValueType, class ...inputDataLeftProperties,
933  typename inputDataRightValueType, class ...inputDataRightProperties>
934  static void
935  dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
936  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
937  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
938 
973  template<typename outputFieldValueType, class ...outputFieldProperties,
974  typename inputDataValueType, class ...inputDataProperties,
975  typename inputFieldValueType, class ...inputFieldProperties>
976  static void
977  vectorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
978  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
979  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
980 
981 
1015  template<typename outputDataValueType, class ...outputDataProperties,
1016  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1017  typename inputDataRightValueType, class ...inputDataRightProperties>
1018  static void
1019  vectorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1020  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1021  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
1022 
1073  template<typename outputFieldValueType, class ...outputFieldProperties,
1074  typename inputDataValueType, class ...inputDataProperties,
1075  typename inputFieldValueType, class ...inputFieldProperties>
1076  static void
1077  tensorMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
1078  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
1079  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
1080  const char transpose = 'N');
1081 
1131  template<typename outputDataValueType, class ...outputDataProperties,
1132  typename inputDataLeftValueType, class ...inputDataLeftProperties,
1133  typename inputDataRightValueType, class ...inputDataRightProperties>
1134  static void
1135  tensorMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
1136  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
1137  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
1138  const char transpose = 'N' );
1139 
1166  template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1167  typename fieldSignValueType, class ...fieldSignProperties>
1168  static void
1169  applyLeftFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1170  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1171 
1198  template<typename inoutOperatorValueType, class ...inoutOperatorProperties,
1199  typename fieldSignValueType, class ...fieldSignProperties>
1200  static void
1201  applyRightFieldSigns( Kokkos::DynRankView<inoutOperatorValueType,inoutOperatorProperties...> inoutOperator,
1202  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1203 
1204 
1227  template<typename inoutFunctionValueType, class ...inoutFunctionProperties,
1228  typename fieldSignValueType, class ...fieldSignProperties>
1229  static void
1230  applyFieldSigns( Kokkos::DynRankView<inoutFunctionValueType,inoutFunctionProperties...> inoutFunction,
1231  const Kokkos::DynRankView<fieldSignValueType, fieldSignProperties...> fieldSigns );
1232 
1233 
1269  template<typename outputPointValueType, class ...outputPointProperties,
1270  typename inputCoeffValueType, class ...inputCoeffProperties,
1271  typename inputFieldValueType, class ...inputFieldProperties>
1272  static void
1273  evaluate( Kokkos::DynRankView<outputPointValueType,outputPointProperties...> outputPointVals,
1274  const Kokkos::DynRankView<inputCoeffValueType, inputCoeffProperties...> inputCoeffs,
1275  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
1276 
1277  };
1278 
1279 } // end namespace Intrepid2
1280 
1281 // include templated definitions
1283 
1284 #endif
1285 
1286 /***************************************************************************************************
1287  ** **
1288  ** D O C U M E N T A T I O N P A G E S **
1289  ** **
1290  **************************************************************************************************/
1291 
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 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 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 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.
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 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...
Structure-preserving representation of transformed vector data; reference space values and transforma...
Definition file for the Intrepid2::FunctionSpaceTools class.
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 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 TransformedVectorData< Scalar, DeviceType > getHGRADtransformGRAD(const Data< Scalar, DeviceType > &jacobianInverse, const VectorData< Scalar, DeviceType > &refBasisGradValues)
Transformation of a gradient field in the H-grad space, defined at points on a reference cell...
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 vector data; reference space values and transforma...
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
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.
Header file for the Intrepid2::CellTools class.
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...
Reference-space field values for a basis, designed to support typical vector-valued bases...
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...