CheMPS2
CheMPS2::Tensor3RDM Class Reference

#include <Tensor3RDM.h>

+ Inheritance diagram for CheMPS2::Tensor3RDM:
+ Collaboration diagram for CheMPS2::Tensor3RDM:

Public Member Functions

 Tensor3RDM (const int boundary, const int two_j1_in, const int two_j2, const int nelec, const int irrep, const bool prime_last, const SyBookkeeper *book)
 Constructor. More...
 
virtual ~Tensor3RDM ()
 Destructor.
 
int get_two_j1 () const
 Get the intermediary spin coupling value of the Tensor3RDM. More...
 
int get_two_j2 () const
 Get the spin value of the Tensor3RDM. More...
 
void a1 (TensorOperator *Sigma, TensorT *denT, double *workmem)
 Make diagram a1. More...
 
void b1 (TensorOperator *Sigma, TensorT *denT, double *workmem)
 Make diagram b1. More...
 
void c1 (TensorOperator *denF, TensorT *denT, double *workmem)
 Make diagram c1. More...
 
void d1 (TensorOperator *denF, TensorT *denT, double *workmem)
 Make diagram d1. More...
 
void extra1 (TensorT *denT)
 Make diagram extra1. More...
 
void extra2 (TensorL *denL, TensorT *denT, double *workmem)
 Make diagram extra2. More...
 
void extra3 (TensorL *denL, TensorT *denT, double *workmem)
 Make diagram extra3. More...
 
void extra4 (TensorL *denL, TensorT *denT, double *workmem)
 Make diagram extra4. More...
 
double contract (Tensor3RDM *buddy) const
 Make the in-product of two Tensor3RDMs. More...
 
bool get_prime_last () const
 Get whether the tensor convention is prime last. More...
 
- Public Member Functions inherited from CheMPS2::TensorOperator
 TensorOperator (const int boundary_index, const int two_j, const int n_elec, const int n_irrep, const bool moving_right, const bool prime_last, const bool jw_phase, const SyBookkeeper *bk_up, const SyBookkeeper *bk_down)
 Constructor. More...
 
virtual ~TensorOperator ()
 Destructor.
 
int gNKappa () const
 Get the number of symmetry blocks. More...
 
double * gStorage ()
 Get the pointer to the storage. More...
 
int gKappa (const int N1, const int TwoS1, const int I1, const int N2, const int TwoS2, const int I2) const
 Get the index corresponding to a certain tensor block. More...
 
int gKappa2index (const int kappa) const
 Get the storage jump corresponding to a certain tensor block. More...
 
double * gStorage (const int N1, const int TwoS1, const int I1, const int N2, const int TwoS2, const int I2)
 Get the pointer to the storage of a certain tensor block. More...
 
int gIndex () const
 Get the boundary index. More...
 
int get_2j () const
 Get twice the spin of the tensor operator. More...
 
int get_nelec () const
 Get how many electrons there are more in the symmetry sector of the lower leg compared to the upper leg. More...
 
int get_irrep () const
 Get the (real-valued abelian) point group irrep difference between the symmetry sectors of the lower and upper legs (see Irreps.h) More...
 
void update (TensorOperator *previous, TensorT *mps_tensor_up, TensorT *mps_tensor_down, double *workmem)
 Clear and update. More...
 
void daxpy (double alpha, TensorOperator *to_add)
 daxpy for TensorOperator More...
 
void daxpy_transpose_tensorCD (const double alpha, TensorOperator *to_add)
 daxpy_transpose for C- and D-tensors (with special spin-dependent factors) More...
 
void clear ()
 Set all storage variables to 0.0.
 
double inproduct (TensorOperator *buddy, const char trans) const
 Make the in-product of two TensorOperator. More...
 

Additional Inherited Members

- Protected Member Functions inherited from CheMPS2::TensorOperator
void update_moving_right (const int ikappa, TensorOperator *previous, TensorT *mps_tensor_up, TensorT *mps_tensor_down, double *workmem)
 Update moving right. More...
 
void update_moving_left (const int ikappa, TensorOperator *previous, TensorT *mps_tensor_up, TensorT *mps_tensor_down, double *workmem)
 Update moving left. More...
 
- Protected Attributes inherited from CheMPS2::TensorOperator
const SyBookkeeperbk_up
 The bookkeeper of the upper MPS.
 
const SyBookkeeperbk_down
 The bookkeeper of the lower MPS.
 
int two_j
 Twice the spin of the tensor operator.
 
int n_elec
 How many electrons there are more in the symmetry sector of the lower leg compared to the upper leg.
 
int n_irrep
 The (real-valued abelian) point group irrep difference between the symmetry sectors of the lower and upper legs (see Irreps.h)
 
bool moving_right
 Whether or not moving right.
 
int * sector_nelec_up
 The up particle number sector.
 
int * sector_irrep_up
 The up spin symmetry sector.
 
int * sector_spin_up
 The up spin symmetry sector.
 
int * sector_spin_down
 The down spin symmetry sector (pointer points to sectorTwoS1 if two_j == 0)
 
bool prime_last
 Convention in which the tensor operator is stored (see class information)
 
bool jw_phase
 Whether or not to include a Jordan-Wigner phase due to the fermion anti-commutation relations.
 
- Protected Attributes inherited from CheMPS2::Tensor
int index
 Index of the Tensor object. For TensorT: a site index; for other tensors: a boundary index.
 
double * storage
 The actual variables. Tensor block kappa begins at storage+kappa2index[kappa] and ends at storage+kappa2index[kappa+1].
 
int nKappa
 Number of Tensor blocks.
 
int * kappa2index
 kappa2index[kappa] indicates the start of tensor block kappa in storage. kappa2index[nKappa] gives the size of storage.
 

Detailed Description

Tensor3RDM class.

Author
Sebastian Wouters sebas.nosp@m.tian.nosp@m.woute.nosp@m.rs@g.nosp@m.mail..nosp@m.com
Date
November 18, 2015

The Tensor3RDM class contains the functions to calculate new renormalized operators for three second quantized operators.

Definition at line 34 of file Tensor3RDM.h.

Constructor & Destructor Documentation

CheMPS2::Tensor3RDM::Tensor3RDM ( const int  boundary,
const int  two_j1_in,
const int  two_j2,
const int  nelec,
const int  irrep,
const bool  prime_last,
const SyBookkeeper book 
)

Constructor.

Parameters
boundaryThe boundary index
two_j1_inTwice the spin-value of the intermediary coupling of the first two second quantized operators
two_j2Twice the spin-value of coupling of the three second quantized operators
nelecHow many electrons there are more in the symmetry sector of the lower leg compared to the upper leg
irrepDirect product of irreps of the three second quantized operators
prime_lastConvention in which the tensor operator is stored (see class information)
bookThe symmetry sector partitioning

Definition at line 29 of file Tensor3RDM.cpp.

Member Function Documentation

void CheMPS2::Tensor3RDM::a1 ( TensorOperator Sigma,
TensorT denT,
double *  workmem 
)

Make diagram a1.

Parameters
SigmaThe TensorS0 or TensorS1 to make diagram a1
denTThe TensorT to make diagram a1
workmemWork memory

Definition at line 52 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

void CheMPS2::Tensor3RDM::b1 ( TensorOperator Sigma,
TensorT denT,
double *  workmem 
)

Make diagram b1.

Parameters
SigmaThe TensorS0 or TensorS1 to make diagram b1
denTThe TensorT to make diagram b1
workmemWork memory

Definition at line 128 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

void CheMPS2::Tensor3RDM::c1 ( TensorOperator denF,
TensorT denT,
double *  workmem 
)

Make diagram c1.

Parameters
denFThe TensorF0 or TensorF1 to make diagram c1
denTThe TensorT to make diagram c1
workmemWork memory

Definition at line 204 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

double CheMPS2::Tensor3RDM::contract ( Tensor3RDM buddy) const

Make the in-product of two Tensor3RDMs.

Parameters
buddyThe second tensor
Returns
The in-product

Definition at line 543 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void CheMPS2::Tensor3RDM::d1 ( TensorOperator denF,
TensorT denT,
double *  workmem 
)

Make diagram d1.

Parameters
denFThe TensorF0 or TensorF1 to make diagram d1
denTThe TensorT to make diagram d1
workmemWork memory

Definition at line 280 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

void CheMPS2::Tensor3RDM::extra1 ( TensorT denT)

Make diagram extra1.

Parameters
denTThe TensorT to make diagram extra1

Definition at line 356 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

void CheMPS2::Tensor3RDM::extra2 ( TensorL denL,
TensorT denT,
double *  workmem 
)

Make diagram extra2.

Parameters
denLThe TensorL to make diagram extra2
denTThe TensorT to make diagram extra2
workmemWork memory

Definition at line 391 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

void CheMPS2::Tensor3RDM::extra3 ( TensorL denL,
TensorT denT,
double *  workmem 
)

Make diagram extra3.

Parameters
denLThe TensorL to make diagram extra3
denTThe TensorT to make diagram extra3
workmemWork memory

Definition at line 430 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

void CheMPS2::Tensor3RDM::extra4 ( TensorL denL,
TensorT denT,
double *  workmem 
)

Make diagram extra4.

Parameters
denLThe TensorL to make diagram extra4
denTThe TensorT to make diagram extra4
workmemWork memory

Definition at line 469 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

bool CheMPS2::Tensor3RDM::get_prime_last ( ) const

Get whether the tensor convention is prime last.

Returns
Whether the tensor convention is prime last

Definition at line 50 of file Tensor3RDM.cpp.

+ Here is the caller graph for this function:

int CheMPS2::Tensor3RDM::get_two_j1 ( ) const

Get the intermediary spin coupling value of the Tensor3RDM.

Returns
Twice J1, the intermediary spin coupling value of the Tensor3RDM

Definition at line 46 of file Tensor3RDM.cpp.

+ Here is the caller graph for this function:

int CheMPS2::Tensor3RDM::get_two_j2 ( ) const

Get the spin value of the Tensor3RDM.

Returns
Twice J2, the spin value of the Tensor3RDM

Definition at line 48 of file Tensor3RDM.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


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