VMPS++
Loading...
Searching...
No Matches
Mpo< Symmetry, Scalar > Class Template Reference

Detailed Description

template<typename Symmetry, typename Scalar = double>
class Mpo< Symmetry, Scalar >

Definition at line 39 of file Mpo.h.

#include <Mpo.h>

Inheritance diagram for Mpo< Symmetry, Scalar >:

Public Types

typedef SparseMatrixXd SparseMatrixType
 
typedef SiteOperator< Symmetry, Scalar > OperatorType
 
typedef Symmetry::qType qType
 
typedef Matrix< Scalar, Dynamic, Dynamic > MatrixType
 
typedef Scalar Scalar_
 
typedef Mps< Symmetry, double > StateXd
 
typedef Umps< Symmetry, double > StateUd
 
typedef Mps< Symmetry, std::complex< double > > StateXcd
 
typedef Umps< Symmetry, std::complex< double > > StateUcd
 
typedef MpsCompressor< Symmetry, double, double > CompressorXd
 
typedef MpsCompressor< Symmetry, std::complex< double >, double > CompressorXcd
 
typedef Mpo< Symmetry > Operator
 
- Public Types inherited from MpoTerms< Symmetry, Scalar >
typedef SiteOperator< Symmetry, Scalar > OperatorType
 
typedef Symmetry::qType qType
 
typedef Eigen::SparseMatrix< Scalar, Eigen::ColMajor, EIGEN_DEFAULT_SPARSE_INDEX_TYPEMatrixType
 

Public Member Functions

 Mpo ()
 
 Mpo (MpoTerms< Symmetry, Scalar > &Terms)
 
 Mpo (size_t L_input)
 
 Mpo (std::size_t L_input, qType Qtot_input, std::string label_input="Mpo", bool HERMITIAN_input=false, bool UNITARY_input=false, BC BC_input=BC::OPEN, DMRG::VERBOSITY::OPTION VERB_input=DMRG::VERBOSITY::OPTION::SILENT)
 
template<typename CouplScalar >
void construct_from_pushlist (const PushType< OperatorType, CouplScalar > &pushlist, const std::vector< std::vector< std::string > > &labellist, size_t Lcell)
 
template<typename CouplScalar >
void calc_reversedData_from_pushlist (const PushType< OperatorType, CouplScalar > &pushlist, double tolerance=::mynumeric_limits< double >::epsilon())
 
void push_qpath (const std::size_t loc, const std::vector< OperatorType > &opList, const std::vector< qType > &qList, const Scalar lambda=1.0)
 
void setLocal (std::size_t loc, const OperatorType &op)
 
void setLocal (std::size_t loc, const OperatorType &op, const OperatorType &signOp)
 
void setLocal (std::size_t loc, const OperatorType &op, const std::vector< OperatorType > &signOp)
 
void setLocal (const std::vector< std::size_t > &locs, const std::vector< OperatorType > &ops)
 
void setLocal (const std::vector< std::size_t > &locs, const std::vector< OperatorType > &ops, const OperatorType &signOp)
 
void setLocal (const std::vector< std::size_t > &locs, const std::vector< OperatorType > &ops, const std::vector< OperatorType > &signOps)
 
void setLocalStag (std::size_t loc, const OperatorType &op, const std::vector< OperatorType > &stagSignOps)
 
void setLocalSum (const OperatorType &op, Scalar(*f)(int)=localSumTrivial)
 
void setLocalSum (const std::vector< OperatorType > &op, std::vector< Scalar > coeffs)
 
void setProductSum (const OperatorType &op1, const OperatorType &op2)
 
void precalc_TwoSiteData (bool FORCE=false)
 
std::string info (bool REDUCED=false) const
 
int get_dAux_max (int power=1) const
 
std::size_t length () const
 
std::size_t volume () const
 
int locality () const
 
void set_locality (std::size_t LocalSite_input)
 
OperatorType localOperator () const
 
void set_localOperator (OperatorType LocalOp_input)
 
Mpo< Symmetry, Scalar > Identity () const
 
Mpo< Symmetry, Scalar > Zero () const
 
bool IS_UNITARY () const
 
bool IS_HERMITIAN () const
 
bool IS_HAMILTONIAN () const
 
bool HAS_TWO_SITE_DATA () const
 
bool HAS_W () const
 
boost::multi_array< Scalar, 4 > H2site (std::size_t loc, bool HALF_THE_LOCAL_TERM=false) const
 
void generate_label (std::size_t Lcell)
 
void push_width (const std::size_t n, const std::size_t loc, const Scalar lambda, const OperatorType &outOp, const std::vector< OperatorType > &trans, const OperatorType &inOp)
 
void push_local (const std::size_t loc, const Scalar lambda, const OperatorType &op)
 
void push_tight (const std::size_t loc, const Scalar lambda, const OperatorType &op1, const OperatorType &op2)
 
void push_nextn (const std::size_t loc, const Scalar lambda, const OperatorType &op1, const OperatorType &trans, const OperatorType &op2)
 
- Public Member Functions inherited from MpoTerms< Symmetry, Scalar >
void reconstruct (const std::vector< std::map< std::array< qType, 2 >, std::vector< std::vector< std::map< qType, OperatorType > > > > > &O_in, const std::vector< Qbasis< Symmetry > > &qAux_in, const std::vector< std::vector< qType > > &qPhys_in, const bool FINALIZED_IN, const BC boundary_condition_in, const qType &qTot_in=Symmetry::qvacuum())
 
 MpoTerms (const std::size_t L=0, const BC boundary_condition_in=BC::OPEN, const qType &qTot_in=Symmetry::qvacuum(), const DMRG::VERBOSITY::OPTION &VERB_in=DMRG::VERBOSITY::OPTION::SILENT)
 
void initialize (const std::size_t L, const BC boundary_condition_in, const qType &qTot_in)
 
virtual void push (const std::size_t loc, const std::vector< OperatorType > &opList, const std::vector< qType > &qList, const Scalar lambda=1.0)
 
void push (const std::size_t loc, const std::vector< OperatorType > &opList, const Scalar lambda=1.0)
 
void show () const
 
void save_label (const std::size_t loc, const std::string &info_label)
 
void set_name (const std::string &label_in)
 
const std::string get_name () const
 
std::vector< std::string > get_info () const
 
void scale (const Scalar factor, const Scalar offset=0., const std::size_t power=0ul, const double tolerance=1.e-14)
 
template<typename OtherScalar >
MpoTerms< Symmetry, OtherScalar > cast ()
 
void set_qPhys (const std::size_t loc, const std::vector< qType > &qPhys_in)
 
void finalize (const bool COMPRESS=true, const std::size_t power=1, const double tolerance=::mynumeric_limits< double >::epsilon())
 
void calc (const std::size_t power)
 
bool is_finalized () const
 
const std::vector< std::map< std::array< qType, 2 >, std::vector< std::vector< std::map< qType, OperatorType > > > > > & get_O () const
 
const std::vector< std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > > & get_W () const
 
const std::vector< Qbasis< Symmetry > > & get_qAux () const
 
const std::vector< std::vector< qType > > & get_qOp () const
 
const std::vector< std::vector< qType > > & get_qPhys () const
 
const std::vector< std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > > & get_W_power (std::size_t power) const
 
const std::vector< Qbasis< Symmetry > > & get_qAux_power (std::size_t power) const
 
const std::vector< std::vector< qType > > & get_qOp_power (std::size_t power) const
 
std::size_t get_hilbert_dimension (const std::size_t loc) const
 
BC get_boundary_condition () const
 
const qTypeget_qVac () const
 
const qTypeget_qTot () const
 
const std::size_t get_pos_qTot () const
 
bool check_qPhys () const
 
bool check_power (std::size_t power) const
 
std::size_t maxPower () const
 
std::size_t size () const
 
void transform_base (const qType &qShift, const bool PRINT=false, const int factor=-1, const std::size_t powre=0ul)
 
std::vector< std::vector< TwoSiteData< Symmetry, Scalar > > > calc_TwoSiteData () const
 
std::vector< std::pair< qType, std::size_t > > base_order_IBC (const std::size_t power=1) const
 
double memory (MEMUNIT memunit=kB) const
 
double sparsity (const std::size_t power=1, const bool PER_MATRIX=false) const
 
void set_Identity (const typename Symmetry::qType &Q=Symmetry::qvacuum())
 
void set_Zero ()
 
void set_verbosity (const DMRG::VERBOSITY::OPTION VERB_in)
 
DMRG::VERBOSITY::OPTION get_verbosity () const
 
void save (std::string filename)
 
void load (std::string filename)
 
const std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > & W_at (const std::size_t loc) const
 
const std::vector< std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > > & W_full () const
 
const std::vector< std::vector< qType > > & locBasis () const
 
const std::vector< qType > & locBasis (const std::size_t loc) const
 
const std::vector< Qbasis< Symmetry > > & auxBasis () const
 
const Qbasis< Symmetry > & auxBasis (const std::size_t loc) const
 
const Qbasis< Symmetry > & inBasis (const std::size_t loc) const
 
const Qbasis< Symmetry > & outBasis (const std::size_t loc) const
 
const std::vector< std::vector< qType > > & opBasis () const
 
const std::vector< qType > & opBasis (const std::size_t loc) const
 
const qTypeQtarget () const
 
void setLocBasis (const std::vector< std::vector< qType > > &q)
 
void setLocBasis (const std::vector< qType > &q, std::size_t loc)
 
const std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > & Wsq_at (const std::size_t loc) const
 
const std::vector< qType > & opBasisSq (const std::size_t loc) const
 
const std::vector< std::vector< qType > > & opBasisSq () const
 
const bool check_SQUARE () const
 
double sparsity (bool USE_SQUARE, bool PER_MATRIX) const
 
void setQtarget (const qType &q)
 

Static Public Member Functions

template<typename T , typename ... Operator>
static std::vector< T > get_N_site_interaction (T const &Op0, Operator const &... Ops)
 
static Mpo< Symmetry, Scalar > Identity (const std::vector< std::vector< qType > > &qPhys, const qType &Q=Symmetry::qvacuum())
 
static Mpo< Symmetry, Scalar > Zero (const std::vector< std::vector< qType > > &qPhys)
 
static Mpo< Symmetry, Scalar > cast_Terms_to_Mpo (const MpoTerms< Symmetry, Scalar > &input)
 
- Static Public Member Functions inherited from MpoTerms< Symmetry, Scalar >
static MpoTerms< Symmetry, Scalar > prod (const MpoTerms< Symmetry, Scalar > &top, const MpoTerms< Symmetry, Scalar > &bottom, const qType &qTot, const double tolerance=::mynumeric_limits< double >::epsilon())
 
static MpoTerms< Symmetry, Scalar > sum (const MpoTerms< Symmetry, Scalar > &top, const MpoTerms< Symmetry, Scalar > &bottom, const double tolerance=::mynumeric_limits< double >::epsilon())
 

Public Attributes

Symmetry::qType qVac = Symmetry::qvacuum()
 
bool GOT_TWO_SITE_DATA = false
 
std::vector< std::vector< TwoSiteData< Symmetry, Scalar > > > TSD
 
bool UNITARY = false
 
bool HERMITIAN = false
 
bool HAMILTONIAN = false
 
bool GOT_SEMIOPEN_LEFT = false
 
bool GOT_SEMIOPEN_RIGHT = false
 
OperatorType LocalOp
 
int LocalSite = -1
 
- Public Attributes inherited from MpoTerms< Symmetry, Scalar >
std::vector< std::vector< qType > > qOp
 
std::vector< Qbasis< Symmetry > > qAux
 
std::vector< std::vector< qType > > qPhys
 
std::vector< std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > > W
 
std::vector< std::vector< std::vector< qType > > > qOp_powers
 
std::vector< std::vector< Qbasis< Symmetry > > > qAux_powers
 
std::vector< std::vector< std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > > > W_powers
 
std::size_t N_sites
 
std::size_t N_phys = 0ul
 
reversedData reversed
 
std::string label = "MPO"
 

Static Public Attributes

static constexpr size_t Nq = Symmetry::Nq
 

Friends

template<typename Symmetry_ , typename MpHamiltonian , typename Scalar_ >
class DmrgSolver
 
template<typename Symmetry_ , typename MpHamiltonian , typename Scalar_ >
class VumpsSolver
 
template<typename Symmetry_ , typename S1 , typename S2 >
class MpsCompressor
 
template<typename H , typename Symmetry_ , typename S1 , typename S2 , typename V >
class TDVPPropagator
 
template<typename Symmetry_ , typename S_ >
class Mpo
 

Additional Inherited Members

- Protected Member Functions inherited from MpoTerms< Symmetry, Scalar >
void increment_auxdim (const std::size_t loc, const qType &q)
 
void increment_first_auxdim_OBC (const qType &qIn)
 
void increment_last_auxdim_OBC (const qType &qOut)
 
void decrement_auxdim (const std::size_t loc, const qType &q)
 
void decrement_first_auxdim_OBC (const qType &qIn)
 
void decrement_last_auxdim_OBC (const qType &qOut)
 
void add (const std::size_t loc, const OperatorType &op, const qType &qIn, const qType &qOut, const std::size_t IndexIn, const std::size_t IndexOut)
 
std::size_t get_auxdim (const std::size_t loc, const qType &q) const
 
void assert_hilbert (const std::size_t loc, const std::size_t dim)
 
bool eliminate_linearlyDependent_rows (const std::size_t loc, const qType &qIn, const double tolerance)
 
bool eliminate_linearlyDependent_cols (const std::size_t loc, const qType &qOut, const double tolerance)
 
std::map< qType, std::vector< std::map< qType, OperatorType > > > delete_row (const std::size_t loc, const qType &qIn, const std::size_t row_to_delete, const bool SAMESITE)
 
std::map< qType, std::vector< std::map< qType, OperatorType > > > delete_col (const std::size_t loc, const qType &qOut, const std::size_t col_to_delete, const bool SAMESITE)
 
void add_to_row (const std::size_t loc, const qType &qIn, const std::size_t row, const std::map< qType, std::vector< std::map< qType, OperatorType > > > &ops, const Scalar factor)
 
void add_to_col (const std::size_t loc, const qType &qOut, const std::size_t col, const std::map< qType, std::vector< std::map< qType, OperatorType > > > &ops, const Scalar factor)
 
void calc_qOp ()
 
void calc_qAux ()
 
void calc_W ()
 
void got_update ()
 
void initialize ()
 
void compress (const double tolerance)
 
void renormalize ()
 
void clear_opLabels ()
 
std::tuple< std::size_t, std::size_t, std::size_t, std::size_t > auxdim_infos () const
 
std::vector< qTypecalc_qList (const std::vector< OperatorType > &opList)
 
void fill_O_from_W ()
 
- Static Protected Member Functions inherited from MpoTerms< Symmetry, Scalar >
static void prod_swap_IBC (std::vector< std::map< std::array< qType, 2 >, std::vector< std::vector< std::map< qType, OperatorType > > > > > &O_out, std::vector< std::size_t > &row_qVac, std::vector< std::size_t > &col_qVac, std::vector< std::size_t > &row_qTot, std::vector< std::size_t > &col_qTot)
 
static void prod_delZeroCols_OBC (std::map< std::array< qType, 2 >, std::vector< std::vector< std::map< qType, OperatorType > > > > &O_last, Qbasis< Symmetry > &qAux_last, Qbasis< Symmetry > &qAux_prev, const qType &qTot, const std::size_t col_qTot)
 
static std::string power_to_string (std::size_t power)
 
static std::pair< std::string, std::size_t > detect_and_remove_power (const std::string &name_w_power)
 
- Protected Attributes inherited from MpoTerms< Symmetry, Scalar >
std::vector< std::map< std::array< qType, 2 >, std::vector< std::vector< std::map< qType, OperatorType > > > > > O
 
std::vector< std::map< qType, std::size_t > > auxdim
 
qType qTot
 
qType qVac = Symmetry::qvacuum()
 
std::size_t pos_qTot
 
std::size_t pos_qVac
 
BC boundary_condition
 
std::vector< std::vector< std::string > > info
 
std::vector< int > hilbert_dimension
 
MPO_STATUS::OPTION status = MPO_STATUS::ALTERABLE
 
DMRG::VERBOSITY::OPTION VERB = DMRG::VERBOSITY::OPTION::SILENT
 
std::string before_verb_set
 
std::size_t current_power = 1
 
bool GOT_QOP = false
 
bool GOT_QAUX = false
 
bool GOT_W = false
 
std::vector< bool > GOT_QPHYS
 

Member Typedef Documentation

◆ CompressorXcd

template<typename Symmetry , typename Scalar = double>
typedef MpsCompressor<Symmetry,std::complex<double>,double> Mpo< Symmetry, Scalar >::CompressorXcd

Definition at line 152 of file Mpo.h.

◆ CompressorXd

template<typename Symmetry , typename Scalar = double>
typedef MpsCompressor<Symmetry,double,double> Mpo< Symmetry, Scalar >::CompressorXd

Definition at line 151 of file Mpo.h.

◆ MatrixType

template<typename Symmetry , typename Scalar = double>
typedef Matrix<Scalar,Dynamic,Dynamic> Mpo< Symmetry, Scalar >::MatrixType

Definition at line 56 of file Mpo.h.

◆ Operator

template<typename Symmetry , typename Scalar = double>
typedef Mpo<Symmetry> Mpo< Symmetry, Scalar >::Operator

Definition at line 153 of file Mpo.h.

◆ OperatorType

template<typename Symmetry , typename Scalar = double>
typedef SiteOperator<Symmetry,Scalar> Mpo< Symmetry, Scalar >::OperatorType

Definition at line 43 of file Mpo.h.

◆ qType

template<typename Symmetry , typename Scalar = double>
typedef Symmetry::qType Mpo< Symmetry, Scalar >::qType

Definition at line 45 of file Mpo.h.

◆ Scalar_

template<typename Symmetry , typename Scalar = double>
typedef Scalar Mpo< Symmetry, Scalar >::Scalar_

Definition at line 57 of file Mpo.h.

◆ SparseMatrixType

template<typename Symmetry , typename Scalar = double>
typedef SparseMatrixXd Mpo< Symmetry, Scalar >::SparseMatrixType

Definition at line 42 of file Mpo.h.

◆ StateUcd

template<typename Symmetry , typename Scalar = double>
typedef Umps<Symmetry,std::complex<double> > Mpo< Symmetry, Scalar >::StateUcd

Definition at line 150 of file Mpo.h.

◆ StateUd

template<typename Symmetry , typename Scalar = double>
typedef Umps<Symmetry,double> Mpo< Symmetry, Scalar >::StateUd

Definition at line 148 of file Mpo.h.

◆ StateXcd

template<typename Symmetry , typename Scalar = double>
typedef Mps<Symmetry,std::complex<double> > Mpo< Symmetry, Scalar >::StateXcd

Definition at line 149 of file Mpo.h.

◆ StateXd

template<typename Symmetry , typename Scalar = double>
typedef Mps<Symmetry,double> Mpo< Symmetry, Scalar >::StateXd

Definition at line 147 of file Mpo.h.

Constructor & Destructor Documentation

◆ Mpo() [1/4]

template<typename Symmetry , typename Scalar = double>
Mpo< Symmetry, Scalar >::Mpo ( )
inline

Definition at line 59 of file Mpo.h.

◆ Mpo() [2/4]

template<typename Symmetry , typename Scalar = double>
Mpo< Symmetry, Scalar >::Mpo ( MpoTerms< Symmetry, Scalar > &  Terms)
inline

Definition at line 61 of file Mpo.h.

◆ Mpo() [3/4]

template<typename Symmetry , typename Scalar = double>
Mpo< Symmetry, Scalar >::Mpo ( size_t  L_input)

◆ Mpo() [4/4]

template<typename Symmetry , typename Scalar = double>
Mpo< Symmetry, Scalar >::Mpo ( std::size_t  L_input,
qType  Qtot_input,
std::string  label_input = "Mpo< Symmetry, Scalar >",
bool  HERMITIAN_input = false,
bool  UNITARY_input = false,
BC  BC_input = BC::OPEN,
DMRG::VERBOSITY::OPTION  VERB_input = DMRG::VERBOSITY::OPTION::SILENT 
)

Member Function Documentation

◆ calc_reversedData_from_pushlist()

template<typename Symmetry , typename Scalar = double>
template<typename CouplScalar >
void Mpo< Symmetry, Scalar >::calc_reversedData_from_pushlist ( const PushType< OperatorType, CouplScalar > &  pushlist,
double  tolerance = ::mynumeric_limits< double >::epsilon() 
)

◆ cast_Terms_to_Mpo()

template<typename Symmetry , typename Scalar = double>
static Mpo< Symmetry, Scalar > Mpo< Symmetry, Scalar >::cast_Terms_to_Mpo ( const MpoTerms< Symmetry, Scalar > &  input)
static

◆ construct_from_pushlist()

template<typename Symmetry , typename Scalar = double>
template<typename CouplScalar >
void Mpo< Symmetry, Scalar >::construct_from_pushlist ( const PushType< OperatorType, CouplScalar > &  pushlist,
const std::vector< std::vector< std::string > > &  labellist,
size_t  Lcell 
)

◆ generate_label()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::generate_label ( std::size_t  Lcell)

◆ get_dAux_max()

template<typename Symmetry , typename Scalar = double>
int Mpo< Symmetry, Scalar >::get_dAux_max ( int  power = 1) const

◆ get_N_site_interaction()

template<typename Symmetry , typename Scalar = double>
template<typename T , typename ... Operator>
static std::vector< T > Mpo< Symmetry, Scalar >::get_N_site_interaction ( T const &  Op0,
Operator const &...  Ops 
)
inlinestatic

Definition at line 117 of file Mpo.h.

◆ H2site()

template<typename Symmetry , typename Scalar = double>
boost::multi_array< Scalar, 4 > Mpo< Symmetry, Scalar >::H2site ( std::size_t  loc,
bool  HALF_THE_LOCAL_TERM = false 
) const
inline

Definition at line 145 of file Mpo.h.

◆ HAS_TWO_SITE_DATA()

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::HAS_TWO_SITE_DATA ( ) const
inline

Definition at line 141 of file Mpo.h.

◆ HAS_W()

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::HAS_W ( ) const
inline

Definition at line 143 of file Mpo.h.

◆ Identity() [1/2]

template<typename Symmetry , typename Scalar = double>
Mpo< Symmetry, Scalar > Mpo< Symmetry, Scalar >::Identity ( ) const
inline

Definition at line 130 of file Mpo.h.

◆ Identity() [2/2]

template<typename Symmetry , typename Scalar = double>
static Mpo< Symmetry, Scalar > Mpo< Symmetry, Scalar >::Identity ( const std::vector< std::vector< qType > > &  qPhys,
const qType Q = Symmetry::qvacuum() 
)
static

◆ info()

template<typename Symmetry , typename Scalar = double>
std::string Mpo< Symmetry, Scalar >::info ( bool  REDUCED = false) const

◆ IS_HAMILTONIAN()

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::IS_HAMILTONIAN ( ) const
inline

Definition at line 139 of file Mpo.h.

◆ IS_HERMITIAN()

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::IS_HERMITIAN ( ) const
inline

Definition at line 137 of file Mpo.h.

◆ IS_UNITARY()

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::IS_UNITARY ( ) const
inline

Definition at line 135 of file Mpo.h.

◆ length()

template<typename Symmetry , typename Scalar = double>
std::size_t Mpo< Symmetry, Scalar >::length ( ) const
inline

Definition at line 112 of file Mpo.h.

◆ locality()

template<typename Symmetry , typename Scalar = double>
int Mpo< Symmetry, Scalar >::locality ( ) const
inline

Definition at line 124 of file Mpo.h.

◆ localOperator()

template<typename Symmetry , typename Scalar = double>
OperatorType Mpo< Symmetry, Scalar >::localOperator ( ) const
inline

Definition at line 126 of file Mpo.h.

◆ precalc_TwoSiteData()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::precalc_TwoSiteData ( bool  FORCE = false)

◆ push_local()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::push_local ( const std::size_t  loc,
const Scalar  lambda,
const OperatorType op 
)

Adds a new local interaction to the MpoTerms

Parameters
locLattice site
opSiteOperator acting on the local Hilbert space of site loc
lambdaScalar of interaction strength that is multiplied to the operator

For convenience, redirects to push(std::size_t loc, std::vector<OperatorType> opList, Scalar lambda)

◆ push_nextn()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::push_nextn ( const std::size_t  loc,
const Scalar  lambda,
const OperatorType op1,
const OperatorType trans,
const OperatorType op2 
)

Adds a new next-nearest-neighbour interaction to the MpoTerms

Parameters
locLattice site of first site
op1SiteOperator acting on the local Hilbert space of site loc
transSiteOperator acting as transfer operator on the local Hilbert space of site loc+1
op2SiteOperator acting on the local Hilbert space of site loc+2
lambdaScalar of interaction strength that is multiplied to the operator

For convenience, redirects to push(std::size_t loc, std::vector<OperatorType> opList, Scalar lambda)

◆ push_qpath()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::push_qpath ( const std::size_t  loc,
const std::vector< OperatorType > &  opList,
const std::vector< qType > &  qList,
const Scalar  lambda = 1.0 
)
inline

Definition at line 75 of file Mpo.h.

◆ push_tight()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::push_tight ( const std::size_t  loc,
const Scalar  lambda,
const OperatorType op1,
const OperatorType op2 
)

Adds a new nearest-neighbour interaction to the MpoTerms

Parameters
locLattice site of first site
op1SiteOperator acting on the local Hilbert space of site loc
op2SiteOperator acting on the local Hilbert space of site loc+1
lambdaScalar of interaction strength that is multiplied to the operator

For convenience, redirects to push(std::size_t loc, std::vector<OperatorType> opList, Scalar lambda)

◆ push_width()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::push_width ( const std::size_t  n,
const std::size_t  loc,
const Scalar  lambda,
const OperatorType outOp,
const std::vector< OperatorType > &  trans,
const OperatorType inOp 
)

Adds an interaction between lattice sites loc and loc+n to the Hamiltonianthis->

Parameters
nDistance (n=1 means next-neighbour)
locLattice site where the interaction starts
lambdaInteraction strength
outOpOutgoing operator at site loc
transVector of transfer operators at sites loc+1, ..., loc+n-1
inOpIncoming operator at site loc+m

For convenience, redirects to push(std::size_t loc, std::vector<OperatorType> opList, Scalar lambda)

◆ set_locality()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::set_locality ( std::size_t  LocalSite_input)
inline

Definition at line 125 of file Mpo.h.

◆ set_localOperator()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::set_localOperator ( OperatorType  LocalOp_input)
inline

Definition at line 127 of file Mpo.h.

◆ setLocal() [1/6]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocal ( const std::vector< std::size_t > &  locs,
const std::vector< OperatorType > &  ops 
)

◆ setLocal() [2/6]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocal ( const std::vector< std::size_t > &  locs,
const std::vector< OperatorType > &  ops,
const OperatorType signOp 
)

◆ setLocal() [3/6]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocal ( const std::vector< std::size_t > &  locs,
const std::vector< OperatorType > &  ops,
const std::vector< OperatorType > &  signOps 
)

◆ setLocal() [4/6]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocal ( std::size_t  loc,
const OperatorType op 
)

◆ setLocal() [5/6]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocal ( std::size_t  loc,
const OperatorType op,
const OperatorType signOp 
)

◆ setLocal() [6/6]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocal ( std::size_t  loc,
const OperatorType op,
const std::vector< OperatorType > &  signOp 
)

◆ setLocalStag()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocalStag ( std::size_t  loc,
const OperatorType op,
const std::vector< OperatorType > &  stagSignOps 
)

◆ setLocalSum() [1/2]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocalSum ( const OperatorType op,
Scalar(*)(int)  f = localSumTrivial 
)

◆ setLocalSum() [2/2]

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setLocalSum ( const std::vector< OperatorType > &  op,
std::vector< Scalar >  coeffs 
)

◆ setProductSum()

template<typename Symmetry , typename Scalar = double>
void Mpo< Symmetry, Scalar >::setProductSum ( const OperatorType op1,
const OperatorType op2 
)

◆ volume()

template<typename Symmetry , typename Scalar = double>
std::size_t Mpo< Symmetry, Scalar >::volume ( ) const
inline

Definition at line 114 of file Mpo.h.

◆ Zero() [1/2]

template<typename Symmetry , typename Scalar = double>
Mpo< Symmetry, Scalar > Mpo< Symmetry, Scalar >::Zero ( ) const
inline

Definition at line 133 of file Mpo.h.

◆ Zero() [2/2]

template<typename Symmetry , typename Scalar = double>
static Mpo< Symmetry, Scalar > Mpo< Symmetry, Scalar >::Zero ( const std::vector< std::vector< qType > > &  qPhys)
static

Friends And Related Function Documentation

◆ DmrgSolver

template<typename Symmetry , typename Scalar = double>
template<typename Symmetry_ , typename MpHamiltonian , typename Scalar_ >
friend class DmrgSolver
friend

Definition at line 48 of file Mpo.h.

◆ Mpo

template<typename Symmetry , typename Scalar = double>
template<typename Symmetry_ , typename S_ >
friend class Mpo
friend

Definition at line 52 of file Mpo.h.

◆ MpsCompressor

template<typename Symmetry , typename Scalar = double>
template<typename Symmetry_ , typename S1 , typename S2 >
friend class MpsCompressor
friend

Definition at line 50 of file Mpo.h.

◆ TDVPPropagator

template<typename Symmetry , typename Scalar = double>
template<typename H , typename Symmetry_ , typename S1 , typename S2 , typename V >
friend class TDVPPropagator
friend

Definition at line 51 of file Mpo.h.

◆ VumpsSolver

template<typename Symmetry , typename Scalar = double>
template<typename Symmetry_ , typename MpHamiltonian , typename Scalar_ >
friend class VumpsSolver
friend

Definition at line 49 of file Mpo.h.

Member Data Documentation

◆ GOT_SEMIOPEN_LEFT

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::GOT_SEMIOPEN_LEFT = false

Definition at line 161 of file Mpo.h.

◆ GOT_SEMIOPEN_RIGHT

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::GOT_SEMIOPEN_RIGHT = false

Definition at line 162 of file Mpo.h.

◆ GOT_TWO_SITE_DATA

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::GOT_TWO_SITE_DATA = false

Definition at line 155 of file Mpo.h.

◆ HAMILTONIAN

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::HAMILTONIAN = false

Definition at line 160 of file Mpo.h.

◆ HERMITIAN

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::HERMITIAN = false

Definition at line 159 of file Mpo.h.

◆ LocalOp

template<typename Symmetry , typename Scalar = double>
OperatorType Mpo< Symmetry, Scalar >::LocalOp

Definition at line 164 of file Mpo.h.

◆ LocalSite

template<typename Symmetry , typename Scalar = double>
int Mpo< Symmetry, Scalar >::LocalSite = -1

Definition at line 165 of file Mpo.h.

◆ Nq

template<typename Symmetry , typename Scalar = double>
constexpr size_t Mpo< Symmetry, Scalar >::Nq = Symmetry::Nq
staticconstexpr

Definition at line 44 of file Mpo.h.

◆ qVac

template<typename Symmetry , typename Scalar = double>
Symmetry::qType Mpo< Symmetry, Scalar >::qVac = Symmetry::qvacuum()

Definition at line 46 of file Mpo.h.

◆ TSD

template<typename Symmetry , typename Scalar = double>
std::vector<std::vector<TwoSiteData<Symmetry,Scalar> > > Mpo< Symmetry, Scalar >::TSD

Definition at line 156 of file Mpo.h.

◆ UNITARY

template<typename Symmetry , typename Scalar = double>
bool Mpo< Symmetry, Scalar >::UNITARY = false

Definition at line 158 of file Mpo.h.


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