Line data Source code
1 : #ifndef SET_MATRIX3_H
2 : #define SET_MATRIX3_H
3 :
4 : #include "Set/Base.H"
5 :
6 : namespace Set
7 : {
8 : class Matrix3
9 : {
10 : public:
11 : Set::Matrix data[AMREX_SPACEDIM];
12 : AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
13 : Scalar & operator () (const int i, const int j, const int k)
14 : {
15 780799364 : return data[i](j,k);
16 : }
17 : AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
18 : const Scalar & operator () (const int i, const int j, const int k) const
19 : {
20 731122037 : return data[i](j,k);
21 : }
22 : AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
23 : Matrix & operator [] (const int i)
24 : {
25 10999032 : return data[i];
26 : }
27 :
28 : AMREX_FORCE_INLINE
29 : Set::Scalar norm()
30 : {
31 4360376 : Set::Scalar ret = 0.0;
32 15359408 : for (int i = 0 ; i < AMREX_SPACEDIM; i++) ret += data[i].squaredNorm();
33 4360376 : return sqrt(ret);
34 : }
35 :
36 : //AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator = (Matrix3 a) {for (int i = 0; i < AMREX_SPACEDIM; i++) data[i] = a.data[i];}
37 : AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator += (Matrix3 a) {for (int i = 0; i < AMREX_SPACEDIM; i++) data[i] += a.data[i];}
38 : AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator -= (Matrix3 a) {for (int i = 0; i < AMREX_SPACEDIM; i++) data[i] -= a.data[i];}
39 : AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator *= (Set::Scalar alpha) {for (int i = 0; i < AMREX_SPACEDIM; i++) data[i] *= alpha;}
40 : AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator /= (Set::Scalar alpha) {for (int i = 0; i < AMREX_SPACEDIM; i++) data[i] /= alpha;}
41 :
42 : static Matrix3 Zero()
43 : {
44 : Matrix3 ret;
45 : for (int i = 0; i < AMREX_SPACEDIM; i++) ret.data[i] = Set::Matrix::Zero();
46 : return ret;
47 : }
48 : static Matrix3 Random()
49 : {
50 : Matrix3 ret;
51 : for (int i = 0; i < AMREX_SPACEDIM; i++) ret.data[i] = Set::Matrix::Random();
52 : return ret;
53 : }
54 :
55 : };
56 : }
57 : #endif
|