IM-SRG++  0
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 &)

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: