IM-SRG++  0
Public Member Functions | Public Attributes | List of all members
TwoBodyME Class Reference

#include <TwoBodyME.hh>

Public Member Functions

 TwoBodyME (ModelSpace *)
 
 TwoBodyME (TwoBodyME_ph &)
 
 TwoBodyME (ModelSpace *ms, int rankJ, int rankT, int parity)
 
TwoBodyMEoperator*= (const double)
 
TwoBodyMEoperator+= (const TwoBodyME &)
 
TwoBodyMEoperator-= (const TwoBodyME &)
 
void Allocate ()
 
bool IsHermitian ()
 
bool IsAntiHermitian ()
 
bool IsNonHermitian ()
 
void SetHermitian ()
 
void SetAntiHermitian ()
 
void SetNonHermitian ()
 
arma::mat & GetMatrix (int chbra, int chket)
 
arma::mat & GetMatrix (int ch)
 
arma::mat & GetMatrix (array< int, 2 > a)
 
const arma::mat & GetMatrix (int chbra, int chket) const
 
const arma::mat & GetMatrix (int ch) const
 
double GetTBME (int ch_bra, int ch_ket, int a, int b, int c, int d) const
 This returns the matrix element times a factor \( \sqrt{(1+\delta_{ij})(1+\delta_{kl})} \).
 
double GetTBME_norm (int ch_bra, int ch_ket, int a, int b, int c, int d) const
 This returns the normalized matrix element.
 
void SetTBME (int ch_bra, int ch_ket, int a, int b, int c, int d, double tbme)
 
void AddToTBME (int ch_bra, int ch_ket, int a, int b, int c, int d, double tbme)
 
double GetTBME (int ch_bra, int ch_ket, Ket &bra, Ket &ket) const
 
void SetTBME (int ch_bra, int ch_ket, Ket &bra, Ket &ket, double tbme)
 
void AddToTBME (int ch_bra, int ch_ket, Ket &bra, Ket &ket, double tbme)
 
double GetTBME_norm (int ch_bra, int ch_ket, int ibra, int iket) const
 
void SetTBME (int ch_bra, int ch_ket, int ibra, int iket, double tbme)
 
void AddToTBME (int ch_bra, int ch_ket, int ibra, int iket, double tbme)
 
double GetTBME (int j_bra, int p_bra, int t_bra, int j_ket, int p_ket, int t_ket, Ket &bra, Ket &ket) const
 
void SetTBME (int j_bra, int p_bra, int t_bra, int j_ket, int p_ket, int t_ket, Ket &bra, Ket &ket, double tbme)
 
void AddToTBME (int j_bra, int p_bra, int t_bra, int j_ket, int p_ket, int t_ket, Ket &bra, Ket &ket, double tbme)
 
double GetTBME (int j_bra, int p_bra, int t_bra, int j_ket, int p_ket, int t_ket, int a, int b, int c, int d) const
 
void SetTBME (int j_bra, int p_bra, int t_bra, int j_ket, int p_ket, int t_ket, int a, int b, int c, int d, double tbme)
 
void AddToTBME (int j_bra, int p_bra, int t_bra, int j_ket, int p_ket, int t_ket, int a, int b, int c, int d, double tbme)
 
double GetTBME_J (int j_bra, int j_ket, int a, int b, int c, int d) const
 
void SetTBME_J (int j_bra, int j_ket, int a, int b, int c, int d, double tbme)
 
void AddToTBME_J (int j_bra, int j_ket, int a, int b, int c, int d, double tbme)
 
double GetTBME_J_norm (int j_bra, int j_ket, int a, int b, int c, int d) const
 
double GetTBME (int ch, int a, int b, int c, int d) const
 
double GetTBME_norm (int ch, int a, int b, int c, int d) const
 
void SetTBME (int ch, int a, int b, int c, int d, double tbme)
 
void AddToTBME (int ch, int a, int b, int c, int d, double tbme)
 
double GetTBME (int ch, Ket &bra, Ket &ket) const
 
double GetTBME_norm (int ch, Ket &bra, Ket &ket) const
 
void SetTBME (int ch, Ket &bra, Ket &ket, double tbme)
 
void AddToTBME (int ch, Ket &bra, Ket &ket, double tbme)
 
double GetTBME_norm (int ch, int ibra, int iket) const
 
void SetTBME (int ch, int ibra, int iket, double tbme)
 
void AddToTBME (int ch, int ibra, int iket, double tbme)
 
double GetTBME (int j, int p, int t, Ket &bra, Ket &ket) const
 
void SetTBME (int j, int p, int t, Ket &bra, Ket &ket, double tbme)
 
void AddToTBME (int j, int p, int t, Ket &bra, Ket &ket, double tbme)
 
double GetTBME (int j, int p, int t, int a, int b, int c, int d) const
 
double GetTBME_norm (int j, int p, int t, int a, int b, int c, int d) const
 
void SetTBME (int j, int p, int t, int a, int b, int c, int d, double tbme)
 
void AddToTBME (int j, int p, int t, int a, int b, int c, int d, double tbme)
 
double GetTBME_J (int j, int a, int b, int c, int d) const
 
void SetTBME_J (int j, int a, int b, int c, int d, double tbme)
 
void AddToTBME_J (int j, int a, int b, int c, int d, double tbme)
 
double GetTBME_J_norm (int j, int a, int b, int c, int d) const
 
void Set_pn_TBME_from_iso (int j, int T, int tz, int a, int b, int c, int d, double tbme)
 
double Get_iso_TBME_from_pn (int j, int T, int tz, int a, int b, int c, int d)
 
double GetTBMEmonopole (int a, int b, int c, int d) const
 
double GetTBMEmonopole_norm (int a, int b, int c, int d) const
 
double GetTBMEmonopole (Ket &bra, Ket &ket) const
 
void Erase ()
 Take a matrix element expressed in relative/CM frame, and add it to the lab frame TBME. More...
 
void Scale (double)
 
double Norm () const
 
void Symmetrize ()
 
void AntiSymmetrize ()
 
void Eye ()
 
void PrintMatrix (int chbra, int chket) const
 
int Dimension ()
 
int size ()
 
void WriteBinary (ofstream &)
 
void ReadBinary (ifstream &)
 

Public Attributes

ModelSpacemodelspace
 
map< array< int, 2 >, arma::mat > MatEl
 
int nChannels
 
bool hermitian
 
bool antihermitian
 
int rank_J
 
int rank_T
 
int parity
 

Detailed Description

The two-body piece of the operator, stored in a vector of maps of of armadillo matrices. The index of the vector indicates the J-coupled two-body channel of the ket state, while the map key is the two-body channel of the bra state. This is done to allow for tensor operators which connect different two-body channels without having to store all possible combinations. In the case of a scalar operator, there is only one map key for the bra state, corresponding to that of the ket state. The normalized J-coupled TBME's are stored in the matrices. However, when the TBME's are accessed by GetTBME(), they are returned as \( \tilde{\Gamma}_{ijkl} \equiv \sqrt{(1+\delta_{ij})(1+\delta_{kl})} \Gamma_{ijkl} \) because the flow equations are derived in terms of \( \tilde{\Gamma} \). For efficiency, only matrix elements with \( i\leq j \) and \( k\leq l \) are stored. When performing sums that can be cast as matrix multiplication, we have something of the form

\[ \tilde{Z}_{ijkl} \sim \frac{1}{2} \sum_{ab}\tilde{X}_{ijab} \tilde{Y}_{abkl} \]

which may be rewritten as a restricted sum, or matrix multiplication

\[ Z_{ijkl} \sim \sum_{a\leq b} X_{ijab} Y_{abkl} = \left( X\cdot Y \right)_{ijkl} \]

Member Function Documentation

void TwoBodyME::Erase ( )

Take a matrix element expressed in relative/CM frame, and add it to the lab frame TBME.

For a given ket expressed in relative/CM coordinates, return the indices of all the lab frame kets with non-zero overlap, as well as the overlap

double TwoBodyME::GetTBMEmonopole ( int  a,
int  b,
int  c,
int  d 
) const

Returns an unnormalized monopole-like (angle-averaged) term

\[ \bar{V}_{ijkl} = \sqrt{(1+\delta_{ij})(1+\delta_{kl})} \frac{\sum_{J}(2J+1) V_{ijkl}^J}{(2j_i+1)(2j_j+1)} \]

void TwoBodyME::Set_pn_TBME_from_iso ( int  j,
int  T,
int  tz,
int  a,
int  b,
int  c,
int  d,
double  tbme 
)

Useful for reading in files in isospin formalism

\[ \left\langle ab | V | cd \right\rangle_{pnpn} = \frac{\sqrt{(1+\delta_{ab})(1+\delta_{cd})}}{2} \left( \left\langle ab | V | cd \right\rangle_{10} + \left\langle ab | V | cd \right\rangle_{00} \right) \]

\[ \left\langle ab | V | cd \right\rangle_{pnnp} = \frac{\sqrt{(1+\delta_{ab})(1+\delta_{cd})}}{2} \left( \left\langle ab | V | cd \right\rangle_{10} - \left\langle ab | V | cd \right\rangle_{00} \right) \]


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