CheMPS2
CheMPS2::TensorS0 Class Reference

#include <TensorS0.h>

+ Inheritance diagram for CheMPS2::TensorS0:
+ Collaboration diagram for CheMPS2::TensorS0:

Public Member Functions

 TensorS0 (const int boundary_index, const int Idiff, const bool moving_right, const SyBookkeeper *denBK)
 Constructor. More...
 
virtual ~TensorS0 ()
 Destructor.
 
void makenew (TensorT *denT)
 
void makenew (TensorL *denL, TensorT *denT, double *workmem)
 
- 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

TensorS0 class.

Author
Sebastian Wouters sebas.nosp@m.tian.nosp@m.woute.nosp@m.rs@g.nosp@m.mail..nosp@m.com
Date
March 1, 2013

The TensorS0 class is a storage and manipulation class for the spin-0 component of two contracted creators or two contracted annihilators.

Definition at line 35 of file TensorS0.h.

Constructor & Destructor Documentation

CheMPS2::TensorS0::TensorS0 ( const int  boundary_index,
const int  Idiff,
const bool  moving_right,
const SyBookkeeper denBK 
)

Constructor.

Parameters
boundary_indexThe boundary index
IdiffDirect product of irreps of the two 2nd quantized operators; both sandwiched & to sandwich
moving_rightIf true: sweep from left to right. If false: sweep from right to left
denBKThe symmetry sector partitioning

Definition at line 26 of file TensorS0.cpp.

Member Function Documentation

void CheMPS2::TensorS0::makenew ( TensorT denT)
Parameters
denTTensorT from which the new TensorS0 should be made.

Definition at line 39 of file TensorS0.cpp.

void CheMPS2::TensorS0::makenew ( TensorL denL,
TensorT denT,
double *  workmem 
)
Parameters
denLTensorL from which the new TensorS0 should be made.
denTTensorT from which the new TensorS0 should be made.
workmemWork memory

Definition at line 46 of file TensorS0.cpp.

+ Here is the call graph for this function:


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