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
26namespace 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 clone / scale operations of the array tools interface.
Definition file for contraction (integration) operations of the array tools class.
Definition file for dot-multiply operations of the array tools class.
Definition file for scalar multiply operations of the array tools class.
Definition file for tensor multiply operations of the array tools class.
Header file for small functions used in Intrepid2.
Contains definitions of custom data types in Intrepid2.
Utility class that provides methods for higher-order algebraic manipulation of user-defined arrays,...
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 "point" and "space" dimensions P, D1, and D2 of two rank-5 containers with dimensions (...
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 "point" and "space" dimensions P and D of rank-3 containers with dimensions (C,...
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 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,...
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 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 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 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 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 contractFieldFieldScalar(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties... > leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties... > rightFields, const bool sumInto=false)
Contracts the "point" dimension P of two rank-3 containers with dimensions (C,L,P) and (C,...
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 "point" dimensions P of a rank-3 containers and a rank-2 container 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 "point" and "space" dimensions P, D1 and D2 of rank-4 containers with dimensions (C,...
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 contractDataFieldVector(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties... > inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties... > inputFields, const bool sumInto=false)
Contracts the "point" and "space" dimensions P and D of a rank-4 container and a rank-3 container wit...
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 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 contractDataFieldTensor(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties... > inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties... > inputFields, const bool sumInto=false)
Contracts the "point" and "space" dimensions P, D1 and D2 of a rank-5 container and a rank-4 containe...
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 contractFieldFieldVector(Kokkos::DynRankView< outputFieldValueType, outputFieldProperties... > outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties... > leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties... > rightFields, const bool sumInto=false)
Contracts the "point" and "space" dimensions P and D1 of two rank-4 containers 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...
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 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,...
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 "point" dimensions P of rank-2 containers with dimensions (C,P), and returns the result...