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
65
66#include "Intrepid2_Data.hpp"
69
70#include "Kokkos_Core.hpp"
71
72
73namespace 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
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 vector data; reference space values and transforma...
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.
Defines expert-level interfaces for the evaluation of functions and operators in physical space (supp...
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 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,...
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 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,...
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 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 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 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...
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 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 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 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 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 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,...
Structure-preserving representation of transformed vector data; reference space values and transforma...
Reference-space field values for a basis, designed to support typical vector-valued bases.