Alamo
Matrix3.H
Go to the documentation of this file.
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  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  return data[i](j,k);
21  }
22  AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
23  Matrix & operator [] (const int i)
24  {
25  return data[i];
26  }
27 
28  AMREX_FORCE_INLINE
30  {
31  Set::Scalar ret = 0.0;
32  for (int i = 0 ; i < AMREX_SPACEDIM; i++) ret += data[i].squaredNorm();
33  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
Set::Matrix3::norm
AMREX_FORCE_INLINE Set::Scalar norm()
Definition: Matrix3.H:29
Base.H
Set::Matrix3::operator/=
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator/=(Set::Scalar alpha)
Definition: Matrix3.H:40
Util::Random
Set::Scalar Random()
Definition: Set.cpp:9
Set::Scalar
amrex::Real Scalar
Definition: Base.H:19
Set
A collection of data types and symmetry-reduced data structures.
Definition: Base.H:17
Set::Matrix3
Definition: Matrix3.H:8
Set::Matrix3::operator*=
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator*=(Set::Scalar alpha)
Definition: Matrix3.H:39
Set::Matrix
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, AMREX_SPACEDIM > Matrix
Definition: Base.H:23
Set::Matrix3::Zero
static Matrix3 Zero()
Definition: Matrix3.H:42
Set::Matrix3::Random
static Matrix3 Random()
Definition: Matrix3.H:48
Set::Matrix3::operator+=
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator+=(Matrix3 a)
Definition: Matrix3.H:37
Set::Matrix3::operator-=
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void operator-=(Matrix3 a)
Definition: Matrix3.H:38
Set::Matrix3::operator()
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Scalar & operator()(const int i, const int j, const int k)
Definition: Matrix3.H:13
Set::Matrix3::operator[]
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Matrix & operator[](const int i)
Definition: Matrix3.H:23
Set::Matrix3::data
Set::Matrix data[AMREX_SPACEDIM]
Definition: Matrix3.H:11