VMPS++
|
Definition at line 14 of file DmrgHamiltonianTerms.h.
#include <DmrgHamiltonianTerms.h>
Public Member Functions | |
HamiltonianTerms () | |
HamiltonianTerms (std::size_t L, bool bc=true) | |
void | push (std::size_t n, std::size_t loc, Scalar lambda, OperatorType outOp, std::vector< OperatorType > trans, OperatorType inOp) |
void | push_local (std::size_t loc, Scalar lambda, OperatorType Op) |
void | push_tight (std::size_t loc, Scalar lambda, OperatorType Op1, OperatorType Op2) |
void | push_nextn (std::size_t loc, Scalar lambda, OperatorType Op1, OperatorType Trans, OperatorType Op2) |
void | save_label (std::size_t loc, const std::string &label) |
void | set_name (const std::string &label_in) |
std::vector< std::string > | get_info () const |
std::size_t | Hilbert_dimension (std::size_t loc) const |
std::vector< SuperMatrix< Symmetry, Scalar > > | construct_Matrix () |
std::string | name () const |
void | scale (double factor, double offset=0.) |
std::size_t | size () const |
template<typename OtherScalar > | |
HamiltonianTerms< Symmetry, OtherScalar > | cast () |
OperatorType const & | localOps (std::size_t loc) const |
std::vector< std::vector< OperatorType > > const & | inOps (std::size_t n, std::size_t loc) const |
std::vector< std::vector< OperatorType > > const & | outOps (std::size_t n, std::size_t loc) const |
std::vector< std::vector< OperatorType > > const & | transferOps (std::size_t n, std::size_t loc) const |
std::vector< OperatorType > const & | tight_inOps (std::size_t loc) const |
std::vector< OperatorType > const & | tight_outOps (std::size_t loc) const |
std::vector< std::vector< OperatorType > > const & | nextn_inOps (std::size_t loc) const |
std::vector< std::vector< OperatorType > > const & | nextn_outOps (std::size_t loc) const |
Private Types | |
typedef SiteOperator< Symmetry, Scalar > | OperatorType |
typedef Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > | MatrixType |
Private Member Functions | |
void | assert_hilbert (std::size_t loc, int dim) |
void | compress (std::vector< std::vector< std::vector< std::vector< OperatorType > > > > &incoming_compressed, std::vector< std::vector< std::vector< std::vector< OperatorType > > > > &outgoing_compressed) |
Private Attributes | |
Symmetry::qType | qvac = Symmetry::qvacuum() |
std::vector< OperatorType > | local |
std::vector< bool > | localSet |
std::vector< int > | hilbert_dimension |
std::size_t | N_sites |
std::vector< std::vector< std::string > > | info |
std::string | label ="" |
bool | OPEN_BC |
std::vector< std::vector< std::vector< std::vector< OperatorType > > > > | outgoing |
std::vector< std::vector< std::vector< std::vector< OperatorType > > > > | incoming |
std::vector< std::vector< std::vector< std::vector< OperatorType > > > > | transfer |
std::vector< std::vector< std::vector< MatrixType > > > | coupling |
std::size_t | n_max = 0 |
|
private |
Definition at line 19 of file DmrgHamiltonianTerms.h.
|
private |
Definition at line 17 of file DmrgHamiltonianTerms.h.
|
inline |
Default constructor, does nothing
Definition at line 106 of file DmrgHamiltonianTerms.h.
HamiltonianTerms< Symmetry, Scalar >::HamiltonianTerms | ( | std::size_t | L, |
bool | bc = true |
||
) |
Constructor
L | Lattice size |
bc | Open boundary conditions |
Definition at line 363 of file DmrgHamiltonianTerms.h.
|
private |
Checks whether the dimension of an operator matches the local Hilbert space dimension. Sets the latter if it has not been set yet.
loc | Lattice site |
dim | Assumed dimension of local Hilbert space |
Definition at line 252 of file DmrgHamiltonianTerms.h.
HamiltonianTerms< Symmetry, OtherScalar > HamiltonianTerms< Symmetry, Scalar >::cast |
Definition at line 749 of file DmrgHamiltonianTerms.h.
|
private |
Takes the plain interaction operator vectors and matrices and compresses them (Todo: by singular value decomposition)
Definition at line 451 of file DmrgHamiltonianTerms.h.
std::vector< SuperMatrix< Symmetry, Scalar > > HamiltonianTerms< Symmetry, Scalar >::construct_Matrix |
Constructs a vector of SuperMatrix from interactions. Compresses the interaction before. Resizes the first and last SuperMatrix to row/column for open boundary conditions.
Definition at line 505 of file DmrgHamiltonianTerms.h.
std::vector< std::string > HamiltonianTerms< Symmetry, Scalar >::get_info |
Definition at line 383 of file DmrgHamiltonianTerms.h.
std::size_t HamiltonianTerms< Symmetry, Scalar >::Hilbert_dimension | ( | std::size_t | loc | ) | const |
loc | Lattice site |
Definition at line 426 of file DmrgHamiltonianTerms.h.
|
inline |
n
.-neighbour interaction terms at lattice site loc
Definition at line 219 of file DmrgHamiltonianTerms.h.
|
inline |
loc
Definition at line 214 of file DmrgHamiltonianTerms.h.
|
inline |
Definition at line 191 of file DmrgHamiltonianTerms.h.
|
inline |
Const reference to the incoming next-nearest-neighbour terms at lattice site loc
Definition at line 244 of file DmrgHamiltonianTerms.h.
|
inline |
Const reference to the outgoing next-nearest-neighbour terms at lattice site loc
Definition at line 249 of file DmrgHamiltonianTerms.h.
|
inline |
n
.-neighbour interaction terms at lattice site loc
Definition at line 224 of file DmrgHamiltonianTerms.h.
void HamiltonianTerms< Symmetry, Scalar >::push | ( | std::size_t | n, |
std::size_t | loc, | ||
Scalar | lambda, | ||
OperatorType | outOp, | ||
std::vector< OperatorType > | trans, | ||
OperatorType | inOp | ||
) |
Adds an interaction between lattice sites loc and loc+n to the HamiltonianTerms.
n | Distance (n=1 means next-neighbour) |
loc | Lattice site where the interaction starts |
lambda | Interaction strength |
outOp | Outgoing operator at site loc |
trans | Vector of transfer operators at sites loc+1, ..., loc+n-1 |
inOp | Incoming operator at site loc+m |
Definition at line 264 of file DmrgHamiltonianTerms.h.
void HamiltonianTerms< Symmetry, Scalar >::push_local | ( | std::size_t | loc, |
Scalar | lambda, | ||
OperatorType | Op | ||
) |
Adds a new local interaction to the HamiltonianTerms
loc | Lattice site |
Op | SiteOperator acting on the local Hilbert space of site loc |
lambda | Scalar of interaction strength that is multiplied to the operator |
For convenience, redirects to push(0, loc, lambda, Op, ...)
Definition at line 433 of file DmrgHamiltonianTerms.h.
void HamiltonianTerms< Symmetry, Scalar >::push_nextn | ( | std::size_t | loc, |
Scalar | lambda, | ||
OperatorType | Op1, | ||
OperatorType | Trans, | ||
OperatorType | Op2 | ||
) |
Adds a new next-nearest-neighbour interaction to the HamiltonianTerms
loc | Lattice site of first site |
Op1 | SiteOperator acting on the local Hilbert space of site loc |
Trans | SiteOperator acting as transfer operator on the local Hilbert space of site loc+1 |
Op2 | SiteOperator acting on the local Hilbert space of site loc+2 |
lambda | Scalar of interaction strength that is multiplied to the operator |
For convenience, redirects to push(2, loc, lambda, Op1, {Trans}, Op2)
Definition at line 445 of file DmrgHamiltonianTerms.h.
void HamiltonianTerms< Symmetry, Scalar >::push_tight | ( | std::size_t | loc, |
Scalar | lambda, | ||
OperatorType | Op1, | ||
OperatorType | Op2 | ||
) |
Adds a new nearest-neighbour interaction to the HamiltonianTerms
loc | Lattice site of first site |
Op1 | SiteOperator acting on the local Hilbert space of site loc |
Op2 | SiteOperator acting on the local Hilbert space of site loc+1 |
lambda | Scalar of interaction strength that is multiplied to the operator |
For convenience, redirects to push(1, loc, lambda, Op1, ..., Op2)
Definition at line 439 of file DmrgHamiltonianTerms.h.
void HamiltonianTerms< Symmetry, Scalar >::save_label | ( | std::size_t | loc, |
const std::string & | label | ||
) |
loc | Lattice site |
label | Information |
Definition at line 373 of file DmrgHamiltonianTerms.h.
void HamiltonianTerms< Symmetry, Scalar >::scale | ( | double | factor, |
double | offset = 0. |
||
) |
Scales all interactions by a given factor.
factor | The factor to scale the interactions with |
offset |
Definition at line 715 of file DmrgHamiltonianTerms.h.
|
inline |
label_in | Name to be given to this instance of HamiltonianTerms |
Definition at line 168 of file DmrgHamiltonianTerms.h.
|
inline |
N_sites
Definition at line 204 of file DmrgHamiltonianTerms.h.
|
inline |
loc
Definition at line 234 of file DmrgHamiltonianTerms.h.
|
inline |
loc
Definition at line 239 of file DmrgHamiltonianTerms.h.
|
inline |
Const reference to the transfer operator lists of n
.-neighbour interactions starting at lattice site loc
Definition at line 229 of file DmrgHamiltonianTerms.h.
|
private |
Collection of all interaction strengths, needed for n site wide interactions interactions starting between lattice site loc and loc+n Index structure: [Distance n-1][Lattice site loc][Number of transfer operator set t](Number of outgoing operators at site loc, Number of incoming operators at site loc+n)
Definition at line 82 of file DmrgHamiltonianTerms.h.
|
private |
Local hilbert space dimensions. Initialized with 0 and set whenever a operator is added at a given site Index structure: [Lattice Site]
Definition at line 37 of file DmrgHamiltonianTerms.h.
|
private |
Collection of all incoming operators, needed for n site wide interactions starting between lattice site loc-n and loc Index structure: [Distance n-1][Lattice site loc][Number of transfer operator set t][Number of incoming local operator j]
Definition at line 70 of file DmrgHamiltonianTerms.h.
|
private |
All informations stored about the HamiltonianTerms Index structure [Lattice Site i][Index of information string]
Definition at line 48 of file DmrgHamiltonianTerms.h.
|
private |
A given name for the HamiltonianTerms, such as Heisenberg
Definition at line 53 of file DmrgHamiltonianTerms.h.
|
private |
Local terms of Hamiltonian Index structure: [Lattice Site]
Definition at line 25 of file DmrgHamiltonianTerms.h.
|
private |
Stores whether the local operator has been set yet Index structure: [Lattice Site]
Definition at line 31 of file DmrgHamiltonianTerms.h.
|
private |
Stores the currently widest interaction within the system. Is increased, when a wider interaction is added. (E.g. n_max = 4 refers to a 4 sites wide interaction between lattice sites 0 and 4)
Definition at line 87 of file DmrgHamiltonianTerms.h.
|
private |
Number of lattice sites
Definition at line 42 of file DmrgHamiltonianTerms.h.
|
private |
Stores whether to use periodic boundary conditions or not
Definition at line 58 of file DmrgHamiltonianTerms.h.
|
private |
Collection of all outgoing operators, needed for n site wide interactions starting between lattice site loc and loc+n Index structure: [Distance n-1][Lattice site loc][Number of transfer operator set t][Number of outgoing local operator i]
Definition at line 64 of file DmrgHamiltonianTerms.h.
|
private |
Definition at line 18 of file DmrgHamiltonianTerms.h.
|
private |
Collection of all transfer operators, needed for n site wide interactions starting between lattice site loc and loc+n Index structure: [Distance n-1][Lattice site loc][Number of transfer operator set t][Number k of transfer operator acting on site loc+k+1]
Definition at line 76 of file DmrgHamiltonianTerms.h.