Intrepid2
Intrepid2_ArrayTools.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_ARRAYTOOLS_HPP__
17 #define __INTREPID2_ARRAYTOOLS_HPP__
18 
19 #include "Intrepid2_ConfigDefs.hpp"
20 #include "Intrepid2_Types.hpp"
21 
22 #include "Intrepid2_Kernels.hpp"
23 
24 #include "Kokkos_Core.hpp"
25 
26 namespace Intrepid2 {
27 
43  template<typename DeviceType>
44  class ArrayTools {
45  using ExecSpaceType = typename DeviceType::execution_space;
46  public:
47 
65  template<typename outputFieldValueType, class ...outputFieldProperties,
66  typename leftFieldValueType, class ...leftFieldProperties,
67  typename rightFieldValueType, class ...rightFieldProperties>
68  static void
69  contractFieldFieldScalar( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
70  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
71  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
72  const bool sumInto = false );
73 
94  template<typename outputFieldValueType, class ...outputFieldProperties,
95  typename leftFieldValueType, class ...leftFieldProperties,
96  typename rightFieldValueType, class ...rightFieldProperties>
97  static void
98  contractFieldFieldVector( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
99  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
100  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
101  const bool sumInto = false );
102 
124  template<typename outputFieldValueType, class ...outputFieldProperties,
125  typename leftFieldValueType, class ...leftFieldProperties,
126  typename rightFieldValueType, class ...rightFieldProperties>
127  static void
128  contractFieldFieldTensor( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
129  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
130  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
131  const bool sumInto = false );
132 
150  template<typename outputFieldValueType, class ...outputFieldProperties,
151  typename inputDataValueType, class ...inputDataProperties,
152  typename inputFieldValueType, class ...inputFieldProperties>
153  static void
154  contractDataFieldScalar( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
155  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
156  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
157  const bool sumInto = false );
158 
177  template<typename outputFieldValueType, class ...outputFieldProperties,
178  typename inputDataValueType, class ...inputDataProperties,
179  typename inputFieldValueType, class ...inputFieldProperties>
180  static void
181  contractDataFieldVector( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
182  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
183  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
184  const bool sumInto = false );
185 
205  template<typename outputFieldValueType, class ...outputFieldProperties,
206  typename inputDataValueType, class ...inputDataProperties,
207  typename inputFieldValueType, class ...inputFieldProperties>
208  static void
209  contractDataFieldTensor( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
210  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
211  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
212  const bool sumInto = false);
213 
229  template<typename outputDataValueType, class ...outputDataProperties,
230  typename inputDataLeftValueType, class ...inputDataLeftProperties,
231  typename inputDataRightValueType, class ...inputDataRightProperties>
232  static void
233  contractDataDataScalar( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
234  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
235  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
236  const bool sumInto = false );
237 
253  template<typename outputDataValueType, class ...outputDataProperties,
254  typename inputDataLeftValueType, class ...inputDataLeftProperties,
255  typename inputDataRightValueType, class ...inputDataRightProperties>
256  static void
257  contractDataDataVector( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
258  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
259  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
260  const bool sumInto = false );
261 
278  template<typename outputDataValueType, class ...outputDataProperties,
279  typename inputDataLeftValueType, class ...inputDataLeftProperties,
280  typename inputDataRightValueType, class ...inputDataRightProperties>
281  static void
282  contractDataDataTensor( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
283  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
284  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
285  const bool sumInto = false );
286 
316  template<typename outputFieldValueType, class ...outputFieldProperties,
317  typename inputDataValueType, class ...inputDataProperties,
318  typename inputFieldValueType, class ...inputFieldProperties>
319  static void
320  scalarMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
321  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
322  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
323  const bool reciprocal = false );
324 
353  template<typename outputDataValueType, class ...outputDataProperties,
354  typename inputDataLeftValueType, class ...inputDataLeftProperties,
355  typename inputDataRightValueType, class ...inputDataRightProperties>
356  static void
357  scalarMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
358  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
359  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
360  const bool reciprocal = false );
361 
389  template<typename outputFieldValueType, class ...outputFieldProperties,
390  typename inputDataValueType, class ...inputDataProperties,
391  typename inputFieldValueType, class ...inputFieldProperties>
392  static void
393  dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
394  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
395  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
396 
423  template<typename outputDataValueType, class ...outputDataProperties,
424  typename inputDataLeftValueType, class ...inputDataLeftProperties,
425  typename inputDataRightValueType, class ...inputDataRightProperties>
426  static void
427  dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
428  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
429  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
430 
431 
453  template<typename outputFieldValueType, class ...outputFieldProperties,
454  typename inputDataValueType, class ...inputDataProperties,
455  typename inputFieldValueType, class ...inputFieldProperties>
456  static void
457  crossProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
458  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
459  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
460 
481  template<typename outputDataValueType, class ...outputDataProperties,
482  typename inputDataLeftValueType, class ...inputDataLeftProperties,
483  typename inputDataRightValueType, class ...inputDataRightProperties>
484  static void
485  crossProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
486  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
487  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
488 
511  template<typename outputFieldValueType, class ...outputFieldProperties,
512  typename inputDataValueType, class ...inputDataProperties,
513  typename inputFieldValueType, class ...inputFieldProperties>
514  static void
515  outerProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
516  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
517  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
518 
540  template<typename outputDataValueType, class ...outputDataProperties,
541  typename inputDataLeftValuetype, class ...inputDataLeftProperties,
542  typename inputDataRightValueType, class ...inputDataRightProperties>
543  static void
544  outerProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
545  const Kokkos::DynRankView<inputDataLeftValuetype, inputDataLeftProperties...> inputDataLeft,
546  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
547 
583  template<typename outputFieldValueType, class ...outputFieldProperties,
584  typename inputDataValueType, class ...inputDataProperties,
585  typename inputFieldValueType, class ...inputFieldProperties>
586  static void
587  matvecProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
588  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
589  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
590  const char transpose = 'N');
591 
624  template<typename outputDataValueType, class ...outputDataProperties,
625  typename inputDataLeftValueType, class ...inputDataLeftProperties,
626  typename inputDataRightValueType, class ...inputDataRightProperties>
627  static void
628  matvecProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
629  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
630  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
631  const char transpose = 'N');
632 
667  template<typename outputFieldValueType, class ...outputFieldProperties,
668  typename inputDataValueType, class ...inputDataProperties,
669  typename inputFieldValueType, class ...inputFieldProperties>
670  static void
671  matmatProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
672  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
673  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
674  const char transpose = 'N' );
675 
709  template<typename outputDataValueType, class ...outputDataProperties,
710  typename inputDataLeftValueType, class ...inputDataLeftProperties,
711  typename inputDataRightValueType, class ...inputDataRightProperties>
712  static void
713  matmatProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
714  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
715  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
716  const char transpose = 'N' );
717 
734  template<typename outputFieldValueType, class ...outputFieldProperties,
735  typename inputFieldValueType, class ...inputFieldProperties>
736  static void
737  cloneFields( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
738  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
739 
756  template<typename outputDataValueType, class ...outputDataProperties,
757  typename inputDataValueType, class ...inputDataProperties>
758  static void
759  cloneData( Kokkos::DynRankView<outputDataValueType,outputDataProperties...> outputData,
760  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData );
761 
762  // =====================================================================================
763  // Internal universal implementations
764  //
765  //
766  private:
767 
768  class Internal {
769  public:
770 
771  template<typename outputFieldValueType, class ...outputFieldProperties,
772  typename leftFieldValueType, class ...leftFieldProperties,
773  typename rightFieldValueType, class ...rightFieldProperties>
774  static void
775  contractFieldField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
776  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
777  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
778  const bool sumInto );
779 
780  template<typename outputFieldValueType, class ...outputFieldProperties,
781  typename inputDataValueType, class ...inputDataProperties,
782  typename inputFieldValuetype, class ...inputFieldProperties>
783  static void
784  contractDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
785  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
786  const Kokkos::DynRankView<inputFieldValuetype, inputFieldProperties...> inputFields,
787  const bool sumInto );
788 
789  template<typename outputDataValueType, class ...outputDataProperties,
790  typename inputDataLeftValueType, class ...inputDataLeftProperties,
791  typename inputDataRightValueType, class ...inputDataRightProperties>
792  static void
793  contractDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
794  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
795  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
796  const bool sumInto );
797 
798  template<typename outputValueType, class ...outputProperties,
799  typename leftInputValueType, class ...leftInputProperties,
800  typename rightInputValueType, class ...rightInputProperties>
801  static void
802  dotMultiply( Kokkos::DynRankView<outputValueType, outputProperties...> output,
803  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
804  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
805  const bool hasField );
806 
807  template<typename outputValueType, class ...outputProperties,
808  typename leftInputValueType, class ...leftInputProperties,
809  typename rightInputValueType, class ...rightInputProperties>
810  static void
811  crossProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
812  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
813  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
814  const bool hasField );
815 
816  template<typename outputValueType, class ...outputProperties,
817  typename leftInputValueType, class ...leftInputProperties,
818  typename rightInputValueType, class ...rightInputProperties>
819  static void
820  outerProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
821  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
822  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
823  const bool hasField );
824 
825  template<typename outputValueType, class ...outputProperties,
826  typename leftInputValueType, class ...leftInputProperties,
827  typename rightInputValueType, class ...rightInputProperties>
828  static void
829  matvecProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
830  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
831  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
832  const bool hasField,
833  const bool isTranspose );
834 
835  template<typename outputValueType, class ...outputProperties,
836  typename leftInputValueType, class ...leftInputProperties,
837  typename rightInputValueType, class ...rightInputProperties>
838  static void
839  matmatProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
840  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
841  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
842  const bool hasField,
843  const bool isTranspose );
844  };
845 
846  }; // end class ArrayTools
847 
848 } // end namespace Intrepid2
849 
850 // include templated definitions
856 
857 #endif
Definition file for tensor multiply operations of the array tools class.
Definition file for scalar multiply operations of the array tools class.
Definition file for clone / scale operations of the array tools interface.
static void contractFieldFieldTensor(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...> leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...> rightFields, const bool sumInto=false)
Contracts the &quot;point&quot; and &quot;space&quot; dimensions P, D1, and D2 of two rank-5 containers with dimensions (...
static void cloneData(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData)
Replicates a rank-2, 3, or 4 container with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, into an output value container of size (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2).
static void scalarMultiplyDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool reciprocal=false)
There are two use cases: (1) multiplies a rank-2, 3, or 4 container inputDataRight with dimensions (C...
static void contractFieldFieldScalar(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...> leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...> rightFields, const bool sumInto=false)
Contracts the &quot;point&quot; dimension P of two rank-3 containers with dimensions (C,L,P) and (C...
static void matmatProductDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const char transpose= 'N')
There are two use cases: (1) matrix-matrix product of a rank-4 container inputDataRight with dimensio...
static void contractDataFieldTensor(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool sumInto=false)
Contracts the &quot;point&quot; and &quot;space&quot; dimensions P, D1 and D2 of a rank-5 container and a rank-4 containe...
static void crossProductDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight)
There are two use cases: (1) cross product of a rank-3 container inputDataRight with dimensions (C...
static void crossProductDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
There are two use cases: (1) cross product of a rank-4 container inputFields with dimensions (C...
static void contractDataDataScalar(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool sumInto=false)
Contracts the &quot;point&quot; dimensions P of rank-2 containers with dimensions (C,P), and returns the result...
Definition file for contraction (integration) operations of the array tools class.
static void matvecProductDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const char transpose= 'N')
There are two use cases: (1) matrix-vector product of a rank-4 container inputFields with dimensions ...
static void dotMultiplyDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight)
There are two use cases: (1) dot product of a rank-2, 3 or 4 container inputDataRight with dimensions...
static void outerProductDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
There are two use cases: (1) outer product of a rank-4 container inputFields with dimensions (C...
static void cloneFields(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
Replicates a rank-2, 3, or 4 container with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, into an output value container of size (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2).
static void scalarMultiplyDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool reciprocal=false)
There are two use cases: (1) multiplies a rank-3, 4, or 5 container inputFields with dimensions (C...
static void contractDataFieldVector(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool sumInto=false)
Contracts the &quot;point&quot; and &quot;space&quot; dimensions P and D of a rank-4 container and a rank-3 container wit...
static void contractDataFieldScalar(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool sumInto=false)
Contracts the &quot;point&quot; dimensions P of a rank-3 containers and a rank-2 container with dimensions (C...
static void contractDataDataVector(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool sumInto=false)
Contracts the &quot;point&quot; and &quot;space&quot; dimensions P and D of rank-3 containers with dimensions (C...
static void matmatProductDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const char transpose= 'N')
There are two use cases: (1) matrix-matrix product of a rank-5 container inputFields with dimensions ...
Contains definitions of custom data types in Intrepid2.
static void outerProductDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValuetype, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight)
There are two use cases: (1) outer product of a rank-3 container inputDataRight with dimensions (C...
static void contractDataDataTensor(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool sumInto=false)
Contracts the &quot;point&quot; and &quot;space&quot; dimensions P, D1 and D2 of rank-4 containers with dimensions (C...
Definition file for dot-multiply operations of the array tools class.
Header file for small functions used in Intrepid2.
Utility class that provides methods for higher-order algebraic manipulation of user-defined arrays...
static void contractFieldFieldVector(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...> leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...> rightFields, const bool sumInto=false)
Contracts the &quot;point&quot; and &quot;space&quot; dimensions P and D1 of two rank-4 containers with dimensions (C...
static void dotMultiplyDataField(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
There are two use cases: (1) dot product of a rank-3, 4 or 5 container inputFields with dimensions (C...
static void matvecProductDataData(Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const char transpose= 'N')
There are two use cases: (1) matrix-vector product of a rank-3 container inputDataRight with dimensio...