OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
RealDiracMatrix Class Reference

#include <RealDiracMatrix.h>

Collaboration diagram for RealDiracMatrix:

Public Types

typedef boost::numeric::ublas::compressed_matrix< double, boost::numeric::ublas::row_major > sparse_matrix_t
 Sparse matrix type definition.
typedef boost::numeric::ublas::matrix< double > matrix_t
 Dense matrix type definition.
typedef boost::numeric::ublas::vector< double, std::vector< double > > vector_t
 Dense vector type definition.

Public Member Functions

 RealDiracMatrix ()
 Default constructor (sets only NumOfRDMs and DimOfRDMs).
sparse_matrix_t getRDM (short)
void diagonalize (matrix_t &, sparse_matrix_t &, sparse_matrix_t &)
sparse_matrix_t diagonalize (matrix_t &)
matrix_t symplex (const matrix_t &)

Private Member Functions

void transform (matrix_t &, short, double, sparse_matrix_t &, sparse_matrix_t &)
void transform (short, double, sparse_matrix_t &, sparse_matrix_t &)
void update (matrix_t &sigma, short i, sparse_matrix_t &R, sparse_matrix_t &invR)

Detailed Description

Definition at line 31 of file RealDiracMatrix.h.

Member Typedef Documentation

◆ matrix_t

typedef boost::numeric::ublas::matrix<double> RealDiracMatrix::matrix_t

Dense matrix type definition.

Definition at line 41 of file RealDiracMatrix.h.

◆ sparse_matrix_t

typedef boost::numeric::ublas::compressed_matrix< double, boost::numeric::ublas::row_major > RealDiracMatrix::sparse_matrix_t

Sparse matrix type definition.

Definition at line 38 of file RealDiracMatrix.h.

◆ vector_t

typedef boost::numeric::ublas::vector< double, std::vector<double> > RealDiracMatrix::vector_t

Dense vector type definition.

Definition at line 46 of file RealDiracMatrix.h.

Constructor & Destructor Documentation

◆ RealDiracMatrix()

RealDiracMatrix::RealDiracMatrix ( )

Default constructor (sets only NumOfRDMs and DimOfRDMs).

Definition at line 32 of file RealDiracMatrix.cpp.

Member Function Documentation

◆ diagonalize() [1/2]

RealDiracMatrix::sparse_matrix_t RealDiracMatrix::diagonalize ( matrix_t & sigma)

Diagonalizes (in-place) the 4x4 sigma matrix. This algorithm is Implemented according to https://arxiv.org/abs/1205.3601

Parameters
sigmais the 4x4 sigma matrix
Returns
the inverse of the total transformation

Definition at line 149 of file RealDiracMatrix.cpp.

References matt_boost::gemmm(), getRDM(), and update().

Here is the call graph for this function:

◆ diagonalize() [2/2]

void RealDiracMatrix::diagonalize ( matrix_t & Ms,
sparse_matrix_t & R,
sparse_matrix_t & invR )

Brings a 4x4 symplex matrix into Hamilton form and computes the transformation matrix and its inverse

Parameters
Msis a 4x4 symplex matrix
Ris the 4x4 transformation matrix (gets computed)
invRis the 4x4 inverse transformation matrix (gets computed)

Definition at line 62 of file RealDiracMatrix.cpp.

References matt_boost::cross_prod(), getRDM(), matt_boost::trace(), and transform().

Referenced by Distribution::generateMatchedGauss().

Here is the call graph for this function:

◆ getRDM()

RealDiracMatrix::sparse_matrix_t RealDiracMatrix::getRDM ( short i)
Parameters
ispecifying the matrix (has to be in the range from 0 to 15)
Returns
the i-th Real Dirac matrix

Definition at line 35 of file RealDiracMatrix.cpp.

Referenced by diagonalize(), diagonalize(), symplex(), and transform().

◆ symplex()

RealDiracMatrix::matrix_t RealDiracMatrix::symplex ( const matrix_t & M)
Parameters
M4x4 real-valued matrix
Returns
the symplex part of a 4x4 real-valued matrix

Definition at line 169 of file RealDiracMatrix.cpp.

References matt_boost::gemmm(), and getRDM().

Here is the call graph for this function:

◆ transform() [1/2]

void RealDiracMatrix::transform ( matrix_t & M,
short i,
double phi,
sparse_matrix_t & Rtot,
sparse_matrix_t & invRtot )
private

Applies a rotation to the matrix M by a given angle

Parameters
Mis the matrix to be transformed
iis the i-th RDM used for transformation
phiis the angle of rotation
Rtotis a reference to the current transformation matrix
invRtotis a reference to the inverse of the current transformation matrix

Definition at line 178 of file RealDiracMatrix.cpp.

References matt_boost::gemmm(), and transform().

Referenced by diagonalize(), transform(), and update().

Here is the call graph for this function:

◆ transform() [2/2]

void RealDiracMatrix::transform ( short i,
double phi,
sparse_matrix_t & R,
sparse_matrix_t & invR )
private

Obtain transformation matrices.

Parameters
iis the i-th RDM used for transformation
phiis the angle of rotation
Ris a reference to the transformation matrix
invRis a reference to the inverse of the transformation matrix

Definition at line 194 of file RealDiracMatrix.cpp.

References getRDM().

Here is the call graph for this function:

◆ update()

void RealDiracMatrix::update ( matrix_t & sigma,
short i,
sparse_matrix_t & R,
sparse_matrix_t & invR )
private

Update quantites to decouple the sigma-matrix

Parameters
sigmacurrent state of sigma-matrix
iis the i-th step
Ris a reference to the transformation matrix
invRis a reference to the inverse of the transformation matrix

Definition at line 211 of file RealDiracMatrix.cpp.

References matt_boost::cross_prod(), and transform().

Referenced by diagonalize().

Here is the call graph for this function:

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