Alamo
Public Member Functions | Static Public Member Functions | Private Attributes | Friends
Set::Matrix4< 3, Sym::MajorMinor > Class Reference

Public Member Functions

AMREX_GPU_HOST_DEVICE Matrix4 ()
 
const AMREX_FORCE_INLINE Scalaroperator() (const int i, const int j, const int k, const int l) const
 
AMREX_FORCE_INLINE Scalaroperator() (const int i, const int j, const int k, const int l)
 
void Print (std::ostream &os)
 
Set::Scalar Norm ()
 
bool contains_nan () const
 
AMREX_GPU_HOST_DEVICE void operator+= (Matrix4< 3, Sym::MajorMinor > a)
 
AMREX_GPU_HOST_DEVICE void operator-= (Matrix4< 3, Sym::MajorMinor > a)
 
AMREX_GPU_HOST_DEVICE void operator*= (Matrix4< 3, Sym::MajorMinor > a)
 
AMREX_GPU_HOST_DEVICE void operator/= (Matrix4< 3, Sym::MajorMinor > a)
 
AMREX_GPU_HOST_DEVICE void operator*= (Set::Scalar alpha)
 
AMREX_GPU_HOST_DEVICE void operator/= (Set::Scalar alpha)
 

Static Public Member Functions

static Matrix4< 3, Sym::MajorMinor > Increment ()
 
static Matrix4< 3, Sym::MajorMinor > Randomize ()
 
static Matrix4< 3, Sym::MajorMinor > Zero ()
 
static Matrix4< 3, Sym::MajorMinor > Cubic (Set::Scalar C11, Set::Scalar C12, Set::Scalar C44, Eigen::Matrix3d R=Eigen::Matrix3d::Identity())
 
static Matrix4< 3, Sym::MajorMinor > Cubic (Set::Scalar C11, Set::Scalar C12, Set::Scalar C44, Set::Scalar phi1, Set::Scalar Phi, Set::Scalar phi2)
 
static Matrix4< 3, Sym::MajorMinor > Cubic (Set::Scalar C11, Set::Scalar C12, Set::Scalar C44, Set::Quaternion q)
 

Private Attributes

Scalar data [21]
 

Friends

bool operator== (Matrix4< 3, Sym::MajorMinor > a, Matrix4< 3, Sym::MajorMinor > b)
 
Matrix4< 3, Sym::MajorMinor > operator+ (Matrix4< 3, Sym::MajorMinor > a, Matrix4< 3, Sym::MajorMinor > b)
 
Matrix4< 3, Sym::MajorMinor > operator- (Matrix4< 3, Sym::MajorMinor > a, Matrix4< 3, Sym::MajorMinor > b)
 
Matrix4< 3, Sym::MajorMinor > operator* (Matrix4< 3, Sym::MajorMinor > a, Set::Scalar b)
 
Matrix4< 3, Sym::MajorMinor > operator* (Set::Scalar b, Matrix4< 3, Sym::MajorMinor > a)
 
Matrix4< 3, Sym::MajorMinor > operator/ (Matrix4< 3, Sym::MajorMinor > a, Set::Scalar b)
 
Set::Vector operator* (Matrix4< 3, Sym::MajorMinor > a, Set::Matrix3 b)
 
Eigen::Matrix< amrex::Real, 3, 3 > operator* (Matrix4< 3, Sym::MajorMinor > a, Eigen::Matrix< amrex::Real, 3, 3 > b)
 

Detailed Description

Let the tensor \(\mathbb{C}\in\mathbb{R}^3\times\mathbb{R}^3\times\mathbb{R}^3\times\mathbb{R}^3\) be have major symmetry ( \(\mathbb{C}_{ijkl}=\mathbb{C}_{klij}\)) and minor symmetry ( \(\mathbb{C}_{ijkl}=\mathbb{C}_{jikl}=\mathbb{C}_{ijlk}\)) Then there are only 21 unique elements (rather than 81).

This object acts like a 4D array such that C(i,j,k,l) returns the corresponding element, but symmetry is always obeyed. This allows the user code to be much prettier, while maintaining a relatively small object size.

Definition at line 248 of file Matrix4_MajorMinor.H.

Constructor & Destructor Documentation

◆ Matrix4()

AMREX_GPU_HOST_DEVICE Set::Matrix4< 3, Sym::MajorMinor >::Matrix4 ( )
inline

Definition at line 255 of file Matrix4_MajorMinor.H.

Member Function Documentation

◆ contains_nan()

bool Set::Matrix4< 3, Sym::MajorMinor >::contains_nan ( ) const
inline

Definition at line 391 of file Matrix4_MajorMinor.H.

◆ Cubic() [1/3]

static Matrix4<3,Sym::MajorMinor> Set::Matrix4< 3, Sym::MajorMinor >::Cubic ( Set::Scalar  C11,
Set::Scalar  C12,
Set::Scalar  C44,
Eigen::Matrix3d  R = Eigen::Matrix3d::Identity() 
)
inlinestatic

Definition at line 443 of file Matrix4_MajorMinor.H.

◆ Cubic() [2/3]

static Matrix4<3,Sym::MajorMinor> Set::Matrix4< 3, Sym::MajorMinor >::Cubic ( Set::Scalar  C11,
Set::Scalar  C12,
Set::Scalar  C44,
Set::Quaternion  q 
)
inlinestatic

Definition at line 482 of file Matrix4_MajorMinor.H.

◆ Cubic() [3/3]

static Matrix4<3,Sym::MajorMinor> Set::Matrix4< 3, Sym::MajorMinor >::Cubic ( Set::Scalar  C11,
Set::Scalar  C12,
Set::Scalar  C44,
Set::Scalar  phi1,
Set::Scalar  Phi,
Set::Scalar  phi2 
)
inlinestatic

Definition at line 473 of file Matrix4_MajorMinor.H.

◆ Increment()

static Matrix4<3,Sym::MajorMinor> Set::Matrix4< 3, Sym::MajorMinor >::Increment ( )
inlinestatic

Definition at line 425 of file Matrix4_MajorMinor.H.

◆ Norm()

Set::Scalar Set::Matrix4< 3, Sym::MajorMinor >::Norm ( )
inline

Definition at line 385 of file Matrix4_MajorMinor.H.

◆ operator()() [1/2]

AMREX_FORCE_INLINE Scalar& Set::Matrix4< 3, Sym::MajorMinor >::operator() ( const int  i,
const int  j,
const int  k,
const int  l 
)
inline

Definition at line 306 of file Matrix4_MajorMinor.H.

Here is the call graph for this function:

◆ operator()() [2/2]

const AMREX_FORCE_INLINE Scalar& Set::Matrix4< 3, Sym::MajorMinor >::operator() ( const int  i,
const int  j,
const int  k,
const int  l 
) const
inline

Definition at line 257 of file Matrix4_MajorMinor.H.

Here is the call graph for this function:

◆ operator*=() [1/2]

AMREX_GPU_HOST_DEVICE void Set::Matrix4< 3, Sym::MajorMinor >::operator*= ( Matrix4< 3, Sym::MajorMinor >  a)
inline

Definition at line 420 of file Matrix4_MajorMinor.H.

◆ operator*=() [2/2]

AMREX_GPU_HOST_DEVICE void Set::Matrix4< 3, Sym::MajorMinor >::operator*= ( Set::Scalar  alpha)
inline

Definition at line 422 of file Matrix4_MajorMinor.H.

◆ operator+=()

AMREX_GPU_HOST_DEVICE void Set::Matrix4< 3, Sym::MajorMinor >::operator+= ( Matrix4< 3, Sym::MajorMinor >  a)
inline

Definition at line 418 of file Matrix4_MajorMinor.H.

◆ operator-=()

AMREX_GPU_HOST_DEVICE void Set::Matrix4< 3, Sym::MajorMinor >::operator-= ( Matrix4< 3, Sym::MajorMinor >  a)
inline

Definition at line 419 of file Matrix4_MajorMinor.H.

◆ operator/=() [1/2]

AMREX_GPU_HOST_DEVICE void Set::Matrix4< 3, Sym::MajorMinor >::operator/= ( Matrix4< 3, Sym::MajorMinor >  a)
inline

Definition at line 421 of file Matrix4_MajorMinor.H.

◆ operator/=() [2/2]

AMREX_GPU_HOST_DEVICE void Set::Matrix4< 3, Sym::MajorMinor >::operator/= ( Set::Scalar  alpha)
inline

Definition at line 423 of file Matrix4_MajorMinor.H.

◆ Print()

void Set::Matrix4< 3, Sym::MajorMinor >::Print ( std::ostream &  os)
inline

Definition at line 354 of file Matrix4_MajorMinor.H.

◆ Randomize()

static Matrix4<3,Sym::MajorMinor> Set::Matrix4< 3, Sym::MajorMinor >::Randomize ( )
inlinestatic

Definition at line 431 of file Matrix4_MajorMinor.H.

Here is the call graph for this function:

◆ Zero()

static Matrix4<3,Sym::MajorMinor> Set::Matrix4< 3, Sym::MajorMinor >::Zero ( )
inlinestatic

Definition at line 437 of file Matrix4_MajorMinor.H.

Friends And Related Function Documentation

◆ operator* [1/4]

Eigen::Matrix<amrex::Real,3,3> operator* ( Matrix4< 3, Sym::MajorMinor >  a,
Eigen::Matrix< amrex::Real, 3, 3 >  b 
)
friend

Definition at line 538 of file Matrix4_MajorMinor.H.

◆ operator* [2/4]

Set::Vector operator* ( Matrix4< 3, Sym::MajorMinor >  a,
Set::Matrix3  b 
)
friend

Definition at line 572 of file Matrix4_MajorMinor.H.

◆ operator* [3/4]

Matrix4<3,Sym::MajorMinor> operator* ( Matrix4< 3, Sym::MajorMinor >  a,
Set::Scalar  b 
)
friend

Definition at line 519 of file Matrix4_MajorMinor.H.

◆ operator* [4/4]

Matrix4<3,Sym::MajorMinor> operator* ( Set::Scalar  b,
Matrix4< 3, Sym::MajorMinor >  a 
)
friend

Definition at line 526 of file Matrix4_MajorMinor.H.

◆ operator+

Matrix4<3,Sym::MajorMinor> operator+ ( Matrix4< 3, Sym::MajorMinor >  a,
Matrix4< 3, Sym::MajorMinor >  b 
)
friend

Definition at line 505 of file Matrix4_MajorMinor.H.

◆ operator-

Matrix4<3,Sym::MajorMinor> operator- ( Matrix4< 3, Sym::MajorMinor >  a,
Matrix4< 3, Sym::MajorMinor >  b 
)
friend

Definition at line 512 of file Matrix4_MajorMinor.H.

◆ operator/

Matrix4<3,Sym::MajorMinor> operator/ ( Matrix4< 3, Sym::MajorMinor >  a,
Set::Scalar  b 
)
friend

Definition at line 531 of file Matrix4_MajorMinor.H.

◆ operator==

bool operator== ( Matrix4< 3, Sym::MajorMinor >  a,
Matrix4< 3, Sym::MajorMinor >  b 
)
friend

Definition at line 499 of file Matrix4_MajorMinor.H.

Field Documentation

◆ data

Scalar Set::Matrix4< 3, Sym::MajorMinor >::data[21]
private
Initial value:
= { NAN,NAN,NAN,NAN,NAN,NAN,NAN,
NAN,NAN,NAN,NAN,NAN,NAN,NAN,
NAN,NAN,NAN,NAN,NAN,NAN,NAN }

Definition at line 250 of file Matrix4_MajorMinor.H.


The documentation for this class was generated from the following file: