Intrepid2
Intrepid2_ArrayTools.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_ARRAYTOOLS_HPP__
50 #define __INTREPID2_ARRAYTOOLS_HPP__
51 
52 #include "Intrepid2_ConfigDefs.hpp"
53 #include "Intrepid2_Types.hpp"
54 
55 #include "Intrepid2_Kernels.hpp"
56 
57 #include "Kokkos_Core.hpp"
58 
59 namespace Intrepid2 {
60 
76  template<typename ExecSpaceType = void>
77  class ArrayTools {
78  public:
79 
97  template<typename outputFieldValueType, class ...outputFieldProperties,
98  typename leftFieldValueType, class ...leftFieldProperties,
99  typename rightFieldValueType, class ...rightFieldProperties>
100  static void
101  contractFieldFieldScalar( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
102  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
103  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
104  const bool sumInto = false );
105 
126  template<typename outputFieldValueType, class ...outputFieldProperties,
127  typename leftFieldValueType, class ...leftFieldProperties,
128  typename rightFieldValueType, class ...rightFieldProperties>
129  static void
130  contractFieldFieldVector( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
131  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
132  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
133  const bool sumInto = false );
134 
156  template<typename outputFieldValueType, class ...outputFieldProperties,
157  typename leftFieldValueType, class ...leftFieldProperties,
158  typename rightFieldValueType, class ...rightFieldProperties>
159  static void
160  contractFieldFieldTensor( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
161  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
162  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
163  const bool sumInto = false );
164 
182  template<typename outputFieldValueType, class ...outputFieldProperties,
183  typename inputDataValueType, class ...inputDataProperties,
184  typename inputFieldValueType, class ...inputFieldProperties>
185  static void
186  contractDataFieldScalar( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
187  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
188  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
189  const bool sumInto = false );
190 
209  template<typename outputFieldValueType, class ...outputFieldProperties,
210  typename inputDataValueType, class ...inputDataProperties,
211  typename inputFieldValueType, class ...inputFieldProperties>
212  static void
213  contractDataFieldVector( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
214  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
215  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
216  const bool sumInto = false );
217 
237  template<typename outputFieldValueType, class ...outputFieldProperties,
238  typename inputDataValueType, class ...inputDataProperties,
239  typename inputFieldValueType, class ...inputFieldProperties>
240  static void
241  contractDataFieldTensor( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
242  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
243  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
244  const bool sumInto = false);
245 
261  template<typename outputDataValueType, class ...outputDataProperties,
262  typename inputDataLeftValueType, class ...inputDataLeftProperties,
263  typename inputDataRightValueType, class ...inputDataRightProperties>
264  static void
265  contractDataDataScalar( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
266  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
267  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
268  const bool sumInto = false );
269 
285  template<typename outputDataValueType, class ...outputDataProperties,
286  typename inputDataLeftValueType, class ...inputDataLeftProperties,
287  typename inputDataRightValueType, class ...inputDataRightProperties>
288  static void
289  contractDataDataVector( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
290  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
291  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
292  const bool sumInto = false );
293 
310  template<typename outputDataValueType, class ...outputDataProperties,
311  typename inputDataLeftValueType, class ...inputDataLeftProperties,
312  typename inputDataRightValueType, class ...inputDataRightProperties>
313  static void
314  contractDataDataTensor( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
315  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
316  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
317  const bool sumInto = false );
318 
348  template<typename outputFieldValueType, class ...outputFieldProperties,
349  typename inputDataValueType, class ...inputDataProperties,
350  typename inputFieldValueType, class ...inputFieldProperties>
351  static void
352  scalarMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
353  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
354  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
355  const bool reciprocal = false );
356 
385  template<typename outputDataValueType, class ...outputDataProperties,
386  typename inputDataLeftValueType, class ...inputDataLeftProperties,
387  typename inputDataRightValueType, class ...inputDataRightProperties>
388  static void
389  scalarMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
390  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
391  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
392  const bool reciprocal = false );
393 
421  template<typename outputFieldValueType, class ...outputFieldProperties,
422  typename inputDataValueType, class ...inputDataProperties,
423  typename inputFieldValueType, class ...inputFieldProperties>
424  static void
425  dotMultiplyDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
426  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
427  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
428 
455  template<typename outputDataValueType, class ...outputDataProperties,
456  typename inputDataLeftValueType, class ...inputDataLeftProperties,
457  typename inputDataRightValueType, class ...inputDataRightProperties>
458  static void
459  dotMultiplyDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
460  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
461  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
462 
463 
485  template<typename outputFieldValueType, class ...outputFieldProperties,
486  typename inputDataValueType, class ...inputDataProperties,
487  typename inputFieldValueType, class ...inputFieldProperties>
488  static void
489  crossProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
490  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
491  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
492 
513  template<typename outputDataValueType, class ...outputDataProperties,
514  typename inputDataLeftValueType, class ...inputDataLeftProperties,
515  typename inputDataRightValueType, class ...inputDataRightProperties>
516  static void
517  crossProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
518  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
519  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
520 
543  template<typename outputFieldValueType, class ...outputFieldProperties,
544  typename inputDataValueType, class ...inputDataProperties,
545  typename inputFieldValueType, class ...inputFieldProperties>
546  static void
547  outerProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
548  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
549  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
550 
572  template<typename outputDataValueType, class ...outputDataProperties,
573  typename inputDataLeftValuetype, class ...inputDataLeftProperties,
574  typename inputDataRightValueType, class ...inputDataRightProperties>
575  static void
576  outerProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
577  const Kokkos::DynRankView<inputDataLeftValuetype, inputDataLeftProperties...> inputDataLeft,
578  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight );
579 
615  template<typename outputFieldValueType, class ...outputFieldProperties,
616  typename inputDataValueType, class ...inputDataProperties,
617  typename inputFieldValueType, class ...inputFieldProperties>
618  static void
619  matvecProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
620  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
621  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
622  const char transpose = 'N');
623 
656  template<typename outputDataValueType, class ...outputDataProperties,
657  typename inputDataLeftValueType, class ...inputDataLeftProperties,
658  typename inputDataRightValueType, class ...inputDataRightProperties>
659  static void
660  matvecProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
661  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
662  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
663  const char transpose = 'N');
664 
699  template<typename outputFieldValueType, class ...outputFieldProperties,
700  typename inputDataValueType, class ...inputDataProperties,
701  typename inputFieldValueType, class ...inputFieldProperties>
702  static void
703  matmatProductDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
704  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
705  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields,
706  const char transpose = 'N' );
707 
741  template<typename outputDataValueType, class ...outputDataProperties,
742  typename inputDataLeftValueType, class ...inputDataLeftProperties,
743  typename inputDataRightValueType, class ...inputDataRightProperties>
744  static void
745  matmatProductDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
746  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
747  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
748  const char transpose = 'N' );
749 
766  template<typename outputFieldValueType, class ...outputFieldProperties,
767  typename inputFieldValueType, class ...inputFieldProperties>
768  static void
769  cloneFields( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
770  const Kokkos::DynRankView<inputFieldValueType, inputFieldProperties...> inputFields );
771 
788  template<typename outputDataValueType, class ...outputDataProperties,
789  typename inputDataValueType, class ...inputDataProperties>
790  static void
791  cloneData( Kokkos::DynRankView<outputDataValueType,outputDataProperties...> outputData,
792  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData );
793 
794  // =====================================================================================
795  // Internal universal implementations
796  //
797  //
798  private:
799 
800  class Internal {
801  public:
802 
803  template<typename outputFieldValueType, class ...outputFieldProperties,
804  typename leftFieldValueType, class ...leftFieldProperties,
805  typename rightFieldValueType, class ...rightFieldProperties>
806  static void
807  contractFieldField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
808  const Kokkos::DynRankView<leftFieldValueType, leftFieldProperties...> leftFields,
809  const Kokkos::DynRankView<rightFieldValueType, rightFieldProperties...> rightFields,
810  const bool sumInto );
811 
812  template<typename outputFieldValueType, class ...outputFieldProperties,
813  typename inputDataValueType, class ...inputDataProperties,
814  typename inputFieldValuetype, class ...inputFieldProperties>
815  static void
816  contractDataField( Kokkos::DynRankView<outputFieldValueType,outputFieldProperties...> outputFields,
817  const Kokkos::DynRankView<inputDataValueType, inputDataProperties...> inputData,
818  const Kokkos::DynRankView<inputFieldValuetype, inputFieldProperties...> inputFields,
819  const bool sumInto );
820 
821  template<typename outputDataValueType, class ...outputDataProperties,
822  typename inputDataLeftValueType, class ...inputDataLeftProperties,
823  typename inputDataRightValueType, class ...inputDataRightProperties>
824  static void
825  contractDataData( Kokkos::DynRankView<outputDataValueType, outputDataProperties...> outputData,
826  const Kokkos::DynRankView<inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft,
827  const Kokkos::DynRankView<inputDataRightValueType,inputDataRightProperties...> inputDataRight,
828  const bool sumInto );
829 
830  template<typename outputValueType, class ...outputProperties,
831  typename leftInputValueType, class ...leftInputProperties,
832  typename rightInputValueType, class ...rightInputProperties>
833  static void
834  dotMultiply( Kokkos::DynRankView<outputValueType, outputProperties...> output,
835  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
836  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
837  const bool hasField );
838 
839  template<typename outputValueType, class ...outputProperties,
840  typename leftInputValueType, class ...leftInputProperties,
841  typename rightInputValueType, class ...rightInputProperties>
842  static void
843  crossProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
844  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
845  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
846  const bool hasField );
847 
848  template<typename outputValueType, class ...outputProperties,
849  typename leftInputValueType, class ...leftInputProperties,
850  typename rightInputValueType, class ...rightInputProperties>
851  static void
852  outerProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
853  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
854  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
855  const bool hasField );
856 
857  template<typename outputValueType, class ...outputProperties,
858  typename leftInputValueType, class ...leftInputProperties,
859  typename rightInputValueType, class ...rightInputProperties>
860  static void
861  matvecProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
862  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
863  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
864  const bool hasField,
865  const bool isTranspose );
866 
867  template<typename outputValueType, class ...outputProperties,
868  typename leftInputValueType, class ...leftInputProperties,
869  typename rightInputValueType, class ...rightInputProperties>
870  static void
871  matmatProduct( Kokkos::DynRankView<outputValueType, outputProperties...> output,
872  const Kokkos::DynRankView<leftInputValueType, leftInputProperties...> leftInput,
873  const Kokkos::DynRankView<rightInputValueType,rightInputProperties...> rightInput,
874  const bool hasField,
875  const bool isTranspose );
876  };
877 
878  }; // end class ArrayTools
879 
880 } // end namespace Intrepid2
881 
882 // include templated definitions
888 
889 #endif
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 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...
Definition file for tensor multiply operations of the array tools class.
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...
Definition file for scalar multiply operations of the array tools class.
Definition file for clone / scale operations of the array tools interface.
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 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 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 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...
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...
Definition file for contraction (integration) operations of the array tools class.
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 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 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...
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 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 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 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...
Contains definitions of custom data types in Intrepid2.
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 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 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 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 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 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 ...
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 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).