IPEPS-related functionality and tools. More...
Namespaces | |
namespace | Lat |
Lattice generators for iPEPS lattices. | |
Classes | |
struct | AOneOp |
A one-site operator acting on a single defined site. More... | |
struct | ATwoOp |
Two-site gate acting on two defined sites. More... | |
class | FullCTM |
Represents the full CTM surrounding the entire unit cell. More... | |
class | Horz2CTM |
A horizontal two-site environment consisting of six tensors surrounding those on two neighbouring sites. More... | |
struct | Lattice |
An IPEPS lattice. More... | |
struct | OneOp |
A local operator acting on an undefined site. More... | |
struct | ProdOp |
Represents a product of two-site gates acting on different sites, e.g. More... | |
class | State |
Represents an IPEPS state on a square lattice. More... | |
struct | SumOp |
Represents a sum of two-site gates acting on different sites, e.g. More... | |
class | Vert2CTM |
A vertical two-site environment consisting of six tensors surrounding those on two neighbouring sites. More... | |
Typedefs | |
using | Coord = std::array< int, 2 > |
Coordinate type used for square IPEPS lattices. More... | |
Functions | |
Tensor< 5 > | barTensor (Tensor< 5 > const &in) |
Given \( M \), builds \( \overline{M} \) which has complex-conjugated entries and the correct ii/oo nodes as well as swap gates inserted. More... | |
Index | c2i (Coord coord, int const width, int const depth) |
Given a coordinate, a unit cell width, and a unit cell depth, calculates the linear offset of the (potentially re-mapped) site in the unit cell. More... | |
SRDef | cond_number (Tensor< 2 > const &inp) |
Returns the condition number of a rank-2 tensor by calculating the ratio of its largest and smallest-larger-than-SYTEN_SMALL_THRESHOLD singular value. More... | |
SRDef | cond_number (Tensor< 4 > const &inp) |
Calculates the condition number of a rank-4 tensor suitable for use in IPEPS::gauge_fix. More... | |
Index | dist (Coord const &a, Coord const &b) |
Returns the Manhattan distance between sites a and b . More... | |
ATwoOp | dot (AOneOp const &a, AOneOp const &b) |
Dot product of two AOneOp . More... | |
ATwoOp | dot (ATwoOp const &a, ATwoOp const &b) |
Calculates the dot product of two two-site gates. More... | |
ProdOp | exp (SDef const tau, SumOp const &op, Lattice const &lat, Index const order=1) |
Compute exp{τ·O} term-wise (first-order Trotter). More... | |
SDef | expectation (State const &psi, ATwoOp const &op, Truncation const &trunc=Truncation()) |
Calculates a single expectation value of the supplied two-site operator with respect to the state psi . More... | |
SDef | expectation (State const &psi, SumOp const &op, Truncation const &trunc=Truncation()) |
For each two-site operator in op , calculates the expectation value and returns their sum. More... | |
std::tuple< Tensor< 4 >, Tensor< 2 >, Tensor< 2 >, Tensor< 2 >, Tensor< 2 > > | gauge_fix (Tensor< 4 > const &inp, bool use_svd) |
Returns a tuple <N_fixed, L, L^-1, R, R^-1> More... | |
State | genRandomCompleteState (Lattice const &lat, Basis const §or, Index max_blocksize) |
Attempts to generate an IPEPS compatible with the lattice, transforming as the desired sector per unit cell and with the lattice vacuum basis on inter-unit cell sites. More... | |
State | genRandomCompleteState (Lattice const &lat, Basis const §or, std::vector< Basis > const &backwards_bases, std::vector< Basis > const &right_bases, Index max_blocksize=Maximum()) |
Attempts to generate an IPEPS compatible with the lattice and the specified bases. More... | |
Tensor< 5 > | genRandomTensor (Basis const &phys, Basis const &left, Basis const &forw, Basis const &right, Basis const &back) |
Generates a random rank-5 tensor with the specified bases on every site. More... | |
State | genRandomTreeLike (Lattice const &lat, Basis const §or) |
Builds a IPEPS initial state much like a tree with only the lowest horizontal rungs not having vacuum quantum numbers. More... | |
void | grow_bottom_rung (Vec< Cached< Tensor< 3 > > > &br, Vec< Basis > &brb, Tensor< 2 > &blc, Tensor< 2 > &brc, State const &psi, int const d, Tensor< 3 > const &lnr, Tensor< 3 > const &rnr, Basis const &lnrb, Basis const &rnrb, Truncation const &trunc) |
Grows the supplied bottom rung br and corner tensors blc and brc by rung d of the state psi . More... | |
void | grow_left_rung (Vec< Cached< Tensor< 3 > > > &lr, Vec< Basis > &lrb, Tensor< 2 > &tlc, Tensor< 2 > &blc, State const &psi, int const w, Tensor< 3 > const &tnr, Tensor< 3 > const &bnr, Basis const &tnrb, Basis const &bnrb, Truncation const &trunc) |
Grows the supplied left rung lr and corner tensors tlc and blc by rung w of the state psi . More... | |
void | grow_right_rung (Vec< Cached< Tensor< 3 > > > &rr, Vec< Basis > &rrb, Tensor< 2 > &trc, Tensor< 2 > &brc, State const &psi, int const w, Tensor< 3 > const &tnr, Tensor< 3 > const &bnr, Basis const &tnrb, Basis const &bnrb, Truncation const &trunc) |
Grows the supplied right rung rr and corner tensors trc and brc by rung w of the state psi . More... | |
void | grow_top_rung (Vec< Cached< Tensor< 3 > > > &tr, Vec< Basis > &trb, Tensor< 2 > &tlc, Tensor< 2 > &trc, State const &psi, int const d, Tensor< 3 > const &lnr, Tensor< 3 > const &rnr, Basis const &lnrb, Basis const &rnrb, Truncation const &trunc) |
Grows the supplied top rung tr and corner tensors tlc and trc by rung d of the state psi . More... | |
SRDef | horizontal_simple_update (State &psi, ATwoOp const &op, Truncation trunc) |
Applies the horizontal two-site operator op onto the state psi . More... | |
Tensor< 4 > | horz2_norm (Horz2CTM const &env, State const &psi, Tensor< 4 > &lq, Tensor< 3 > &a, Tensor< 4 > &rq, Tensor< 3 > &b, bool gauge_fix, bool use_svd) |
Calculates a rank-4 norm tensor from a horizontal two-site environment and the supplied left- and right QR'ed auxiliary tensors. More... | |
bool | is_internal (Coord const &left, Coord const &right, int const width, int const depth) |
Returns true if an operator acting on sites [left,right] on a unit cell of size [width,depth] is internal to that unit cell. More... | |
bool | isLeft (Coord const &f, Coord const &s) |
Returns true if site f is to the left of site s . More... | |
AOneOp | ldot (AOneOp const &a, AOneOp const &b) |
Locally takes the dot product of two applied single-site operators. More... | |
AOneOp | lmult (AOneOp const &a, AOneOp const &b) |
Locally multiplies two applied single-site operators into a new single-site operator. More... | |
ATwoOp | mult (AOneOp const &a, AOneOp const &b) |
Multiplies two applied one-operators such that this is applied first. More... | |
ATwoOp | mult (ATwoOp const &a, ATwoOp const &b) |
Multiplies two applied two-site operators such that a is applied first and b is applied second. More... | |
ATwoOp | operator* (ATwoOp a, SDef const c) |
Evaluates the scalar-ATwoOp product and returns the scaled ATwoOp. More... | |
SumOp | operator* (SDef c, SumOp a) |
Returns a copy of the operator a scaled by a scalar factor c . More... | |
ATwoOp | operator* (SDef const c, ATwoOp a) |
Evaluates the scalar-ATwoOp product and returns the scaled ATwoOp. More... | |
SumOp | operator* (SumOp a, SDef c) |
Returns a copy of the operator a scaled by a scalar factor c . More... | |
SumOp | operator+ (ATwoOp other, SumOp a) |
Adds the applied two-site operator other to a . More... | |
SumOp | operator+ (SumOp a, ATwoOp other) |
Adds the applied two-site operator other to a . More... | |
SumOp | operator+ (SumOp a, SumOp b) |
Adds two sum operators together. More... | |
std::ostream & | operator<< (std::ostream &out, AOneOp const &op) |
Pretty-prints an applied one-site operator. More... | |
std::ostream & | operator<< (std::ostream &out, ATwoOp const &op) |
Pretty-prints a two-site operator to the specified stream. More... | |
std::ostream & | operator<< (std::ostream &out, Lattice const &lat) |
Pretty-prints a lattice. More... | |
std::ostream & | operator<< (std::ostream &out, ProdOp const &op) |
Pretty-printing of a ProdOp. More... | |
std::ostream & | operator<< (std::ostream &out, SumOp const &op) |
Pretty-printing of a SumOp. More... | |
SRDef | simple_update (State &psi, ProdOp const &op, Truncation const &trunc) |
Sequentially applies all two-site operators to the state. More... | |
Tensor< 2 > | sldlmap (Basis const &first, Basis const &second) |
Given two bases a and b which are compatible and correspond to a single-layer leg, this tensor constructs a map between the two fused double-layer bases constructed from the single-layer bases. More... | |
Tensor< 4 > | vert2_norm (Vert2CTM const &env, State const &psi, Tensor< 4 > &fq, Tensor< 3 > &a, Tensor< 4 > &bq, Tensor< 3 > &b, bool gauge_fix, bool use_svd) |
Calculates a rank-4 norm tensor from a vertical two-site environment and the supplied left- and right QR'ed auxiliary tensors. More... | |
Tensor< 4 > | vert2r_norm (Vert2CTM const &env, State const &psi, Tensor< 5 > &fq, Tensor< 3 > &a, Tensor< 4 > &bq, Tensor< 3 > &b, bool gauge_fix, bool use_svd) |
Calculates the same rank-4 norm tensor as vert2_norm but for a link which straddles the remover. More... | |
SRDef | vertical_simple_update (State &psi, ATwoOp const &op, Truncation trunc) |
Applies the vertical two-site operator op onto the state psi . More... | |
SRDef | vertical_simple_update_remover (State &psi, ATwoOp const &op, Truncation trunc) |
Applies the vertical two-site operator with right-hand focus site [0,0] (straddling the remover) onto the state. More... | |
IPEPS directional QRs to move physical indices. | |
All these operations result in an auxiliary rank-4 tensor and a rank-3 tensor sitting on the directional link. Tensor directions for the auxiliary tensor are | |
std::tuple< Tensor< 4 >, Tensor< 3 > > | qr_to_right (Tensor< 5 > in) |
Moves the physical leg onto the RHS bond. More... | |
Tensor< 5 > | inv_qr_to_right (Tensor< 4 > const &lq, Tensor< 3 > const &a) |
Recovers the original tensor from the result of qr_to_right() . More... | |
std::tuple< Tensor< 4 >, Tensor< 3 > > | qr_to_left (Tensor< 5 > in) |
Moves the physical leg onto the LHS bond. More... | |
Tensor< 5 > | inv_qr_to_left (Tensor< 4 > const &rq, Tensor< 3 > const &b) |
Recovers the original tensor from the result of qr_to_left() . More... | |
std::tuple< Tensor< 4 >, Tensor< 3 > > | qr_to_front (Tensor< 5 > in) |
Moves the physical leg onto the forward bond. More... | |
Tensor< 5 > | inv_qr_to_front (Tensor< 4 > const &bq, Tensor< 3 > const &b) |
Recovers the original tensor from the result of qr_to_front() . More... | |
std::tuple< Tensor< 4 >, Tensor< 3 > > | qr_to_back (Tensor< 5 > in) |
Moves the physical leg onto the backward bond. More... | |
Tensor< 5 > | inv_qr_to_back (Tensor< 4 > const &fq, Tensor< 3 > const &a) |
Recovers the original tensor from the result of qr_to_back() . More... | |
std::tuple< Tensor< 5 >, Tensor< 3 > > | qr_to_back_r (Tensor< 5 > in, Tensor< 3 > rem) |
Given an IPEPS state tensor at position [0,-1] and the remover tensor between sites [0,-1] and [0,0] , folds the remover into the auxiliary state tensor and returns a rank-3 tensor living on the edge between the remover and [0,0] tensor with the physical leg from the [0,-1] tensor. More... | |
std::tuple< Tensor< 5 >, Tensor< 3 > > | inv_qr_to_back_r (Tensor< 5 > aux, Tensor< 3 > a, Truncation const &trunc) |
Reconstructs the lower state tensor at position [0,-1] and the remover on the backward link from the auxiliary tensor containing the remover physical index and the physical bond tensor constructed in qr_to_back_r. More... | |
IPEPS-related functionality and tools.