![]() |
CheMPS2
|
#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 SyBookkeeper * | bk_up |
| The bookkeeper of the upper MPS. | |
| const SyBookkeeper * | bk_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. | |
Tensor3RDM class.
The Tensor3RDM class contains the functions to calculate new renormalized operators for three second quantized operators.
Definition at line 34 of file Tensor3RDM.h.
| 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.
| boundary | The boundary index |
| two_j1_in | Twice the spin-value of the intermediary coupling of the first two second quantized operators |
| two_j2 | Twice the spin-value of coupling of the three second quantized operators |
| nelec | How many electrons there are more in the symmetry sector of the lower leg compared to the upper leg |
| irrep | Direct product of irreps of the three second quantized operators |
| prime_last | Convention in which the tensor operator is stored (see class information) |
| book | The symmetry sector partitioning |
Definition at line 29 of file Tensor3RDM.cpp.
| void CheMPS2::Tensor3RDM::a1 | ( | TensorOperator * | Sigma, |
| TensorT * | denT, | ||
| double * | workmem | ||
| ) |
Make diagram a1.
| Sigma | The TensorS0 or TensorS1 to make diagram a1 |
| denT | The TensorT to make diagram a1 |
| workmem | Work 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.
| Sigma | The TensorS0 or TensorS1 to make diagram b1 |
| denT | The TensorT to make diagram b1 |
| workmem | Work 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.
| denF | The TensorF0 or TensorF1 to make diagram c1 |
| denT | The TensorT to make diagram c1 |
| workmem | Work 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.
| buddy | The second tensor |
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.
| denF | The TensorF0 or TensorF1 to make diagram d1 |
| denT | The TensorT to make diagram d1 |
| workmem | Work 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.
| denT | The TensorT to make diagram extra1 |
Definition at line 356 of file Tensor3RDM.cpp.
Here is the call graph for this function:Make diagram extra2.
| denL | The TensorL to make diagram extra2 |
| denT | The TensorT to make diagram extra2 |
| workmem | Work memory |
Definition at line 391 of file Tensor3RDM.cpp.
Here is the call graph for this function:Make diagram extra3.
| denL | The TensorL to make diagram extra3 |
| denT | The TensorT to make diagram extra3 |
| workmem | Work memory |
Definition at line 430 of file Tensor3RDM.cpp.
Here is the call graph for this function:Make diagram extra4.
| denL | The TensorL to make diagram extra4 |
| denT | The TensorT to make diagram extra4 |
| workmem | Work 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.
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.
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.
Definition at line 48 of file Tensor3RDM.cpp.
Here is the call graph for this function:
Here is the caller graph for this function: