syten::IPEPSv2 Namespace Reference

Namespace for the second-generation iPEPS code (iPEPSv2). More...

## Classes | |

struct | A12Op |

iPEPSv2 operator representing a linear combination of an applied one-site operator and an applied two-site operator. More... | |

struct | AOneOp |

iPEPSv2 single-site operator on a specific site. More... | |

struct | ATwoOp |

iPEPSv2 two-site operator on two specific sites. More... | |

struct | CornerTransferMatrix |

iPEPSv2 corner transfer matrix representation. More... | |

struct | FullUpdateReturn |

Helper struct containing the return value of a (fast) full update step. More... | |

struct | Lattice |

iPEPSv2 lattice, storing one-site operators as well as sum and product operators and generating applied operators on-the-fly. More... | |

struct | OneOp |

iPEPSv2 single-site operator not applied to any specific site. More... | |

struct | ProdOp |

iPEPSv2 operator representing a product of one- and two-site operators. More... | |

class | State |

iPEPSv2 State structure. More... | |

struct | SumOp |

iPEPSv2 operator representing a sum of one- and two-site operators. More... | |

struct | UpdateStage |

Configuration for an iPEPSv2 update stage. More... | |

## Typedefs | |

using | UpdateConf = Vec< UpdateStage > |

Configuration of an entire calculation, a series of stages. More... | |

## Enumerations | |

enum class | UpdateMode { Simple , Full , Fast } |

Update mode to use during a stage, either simple, full or fast full update. More... | |

## Functions | |

std::tuple< STensor, STensor, SBasis > | directional_qr (STensor const &in, SBasisId const &aux, SBasisId const &phy) |

Decomposes the state tensor `in` in the direction of the basis `aux` , moving the physical basis `phy` into a rank-3 tensor. More... | |

std::tuple< STensor, STensor, SBasis > | directional_svd (STensor const &in, SBasisId const &aux, SBasisId const &phy) |

Like `directional_qr` , decomposes the state tensor into a rank-3 tensor with auxiliary basis `aux` and the physical basis `phy` , but does so using a truncating SVD. More... | |

AOneOp | exp (SDef const tau, AOneOp op) |

Returns the exponential \( e^{\tau \hat o} \) for the applied one-site operator `op` and prefactor `tau` . More... | |

ATwoOp | exp (SDef const tau, ATwoOp op) |

Returns the exponential \( e^{\tau \hat o} \) for the applied two-site operator `op` and prefactor `tau` . More... | |

ProdOp | exp (SDef const tau, SumOp const &op, Index const order=1) |

Returns a first or second order approximation to \( e^{\tau
\hat O} \) for the sum operator `op` and prefactor `tau` . More... | |

STensor | expectation_value (State const &psi, CornerTransferMatrix const &ctm, A12Op const &op) |

Calculates the expectation value of the state `psi` with respect to the applied one/two-site operator `op` using the CTM `ctm` . More... | |

STensor | expectation_value (State const &psi, CornerTransferMatrix const &ctm, AOneOp const &op) |

Calculates the expectation value of the state `psi` with respect to the applied one-site operator `op` . More... | |

STensor | expectation_value (State const &psi, CornerTransferMatrix const &ctm, ATwoOp const &op) |

Calculates the expectation value of the state `psi` with respect to the applied two-site operator `op` using the CTM `ctm` . More... | |

STensor | expectation_value (State const &psi, CornerTransferMatrix const &ctm, ATwoOp const &op1, ATwoOp const &op2) |

Implementation helper: Calculates the expectation value of a state with two applied two-site operators. More... | |

STensor | expectation_value (State const &psi, CornerTransferMatrix const &ctm, ProdOp const &op) |

Calculates the expectation value of the state `psi` with respect to the product operator `op` using the CTM `ctm` . More... | |

STensor | expectation_value (State const &psi, CornerTransferMatrix const &ctm, SumOp const &op) |

Calculates the expectation value of the state `psi` with respect to the sum operator `op` using the CTM `ctm` . More... | |

SRDef | fast_full_update (State &psi, ATwoOp const &op, UpdateStage const &conf, CornerTransferMatrix &ctm) |

Does a fast full update application of a single two-site gate and doing the necessary CTM growth steps afterwards. More... | |

std::tuple< FullUpdateReturn, CornerTransferMatrix > | fast_full_update (State &psi, ProdOp const &ops, UpdateStage const &conf) |

Does a fast full update step, first calculating the CTM, then doing the updates and finally returning the CTM. More... | |

std::tuple< FullUpdateReturn, CornerTransferMatrix > | fast_full_update (State &psi, ProdOp const &ops, UpdateStage const &conf, CornerTransferMatrix ctm) |

Does a fast full update step by reusing the supplied CTM, doing the updates and returning the CTM. More... | |

SRDef | full_update (State &psi, ATwoOp const &op, UpdateStage const &conf, CornerTransferMatrix const &ctm) |

Does a single full-update application of the two-site operator `op` onto the state `psi` using the configuration `conf` and CTM `ctm` . More... | |

FullUpdateReturn | full_update (State &psi, ProdOp const &ops, UpdateStage const &conf) |

Does a full update step of the state `psi` (in-place) applying the operator `ops` according to the configuration `conf` . More... | |

FullUpdateReturn | full_update (State &psi, ProdOp const &ops, UpdateStage const &conf, CornerTransferMatrix ctm) |

Does a full update step of the state `psi` (in-place) applying the operator `ops` according to the configuration `conf` . More... | |

std::tuple< SRDef, SBasisId > | full_update_apply_gate (STensor const &n, ATwoOp const &op, UpdateStage const &conf, STensor &left, STensor &right, SBasis const &lb, SBasis const &rb) |

Internal helper to apply the gate to the reduced site tensors during a full update step. More... | |

SRDef | full_update_cond_num (STensor const &in, Pair< SBasisId, SBasisId > upper_basis) |

Internal helper to calculate the condition number of a rank-4 tensor. More... | |

SRDef | full_update_cost_function (SDef const &ideal_ideal, STensor const &r_tensor, STensor const &s_tensor, STensor const &als_tensor, SBasisId external_basis, SBasisId central_basis) |

Internal helper calculating the cost of the full update given the squared norm of the ideal state, the norm tensor with two copies of the not-als reduced tensor, the norm tensor with the ideal tensor and one copy of the not-als reduced tensor, the als reduced tensor and the external and central basis of the als reduced tensor. More... | |

void | full_update_gauge_fix (STensor &norm_tensor, STensor &l3, STensor &r3, STensor &l4, STensor &r4, SBasis &llb, SBasis &lrb, SBasisId const &ulb, SBasisId const &urb, UpdateStage const &conf) |

Internal helper to gauge fix the norm tensor necessary during the full update. More... | |

SRDef | full_update_horizontal (State &psi, ATwoOp const &op, UpdateStage const &conf, CornerTransferMatrix const &ctm) |

A full-update step for a horizontal two-site gate. More... | |

std::tuple< SRDef, STensor > | full_update_pseudo_invert_r4 (STensor const &in, Pair< SBasisId, SBasisId > upper_basis, Pair< SBasisId, SBasisId > lower_basis) |

Internal helper to invert a rank-4 tensor. More... | |

void | full_update_split_evenly (STensor &left, STensor &right, SBasisId ¢ral_basis) |

Internal helper to evenly split singular values between two reduced tensors. More... | |

SRDef | full_update_vertical (State &psi, ATwoOp const &op, UpdateStage const &conf, CornerTransferMatrix const &ctm) |

A full-update step for the vertical two-site gate. More... | |

STensor | inv_directional_qr (STensor const &r4, STensor const &r3) |

Inverts the `directional_qr` operation by multiplying the rank-4 and rank-3 tensors. More... | |

bool | is_00_coord (Coord const coord, int width, int depth) |

Returns true if, given a unit cell of width `width` and depth `depth` , the coordinate `coord` corresponds to the `0,0` site. More... | |

STensor | make_random_tensor (SBasis const &out_1, SBasis const &out_2, SBasis const &out_3, SBasis const &in_1, SBasis const &in_2) |

Generates a single random iPEPSv2 tensor with the specified bases. More... | |

State | make_tree_like (Lattice const &lat) |

Generates a random tree-like IPEPS unit cell. More... | |

std::ostream & | operator<< (std::ostream &, UpdateConf const &) |

Output for the UpdateConf. More... | |

std::ostream & | operator<< (std::ostream &, UpdateMode const &) |

Output for IPEPSv2::UpdateMode. More... | |

std::ostream & | operator<< (std::ostream &, UpdateStage const &) |

Output for an UpdateStage object. More... | |

std::ostream & | operator<< (std::ostream &, Verbose< UpdateConf > const &) |

Verbose output for UpdateConf. More... | |

std::ostream & | operator<< (std::ostream &, Verbose< UpdateStage > const &) |

verbose Output for an UpdateStage object. More... | |

std::ostream & | operator<< (std::ostream &out, CornerTransferMatrix::GrowthMode const &m) |

Output for a CTM growth mode. More... | |

std::ostream & | operator<< (std::ostream &out, FullUpdateReturn const &ret) |

Output for a `FullUpdateReturn` struct. More... | |

std::ostream & | operator<< (std::ostream &out, Lattice const &lat) |

std::ostream & | operator<< (std::ostream &out, State const &psi) |

Output for an iPEPSv2 state. More... | |

std::istream & | operator>> (std::istream &, UpdateConf &) |

Input/parsing for the UpdateConf. More... | |

std::istream & | operator>> (std::istream &, UpdateMode &) |

Input/parsing of IPEPSv2::UpdateMode. More... | |

std::istream & | operator>> (std::istream &, UpdateStage &) |

Input/parsing for an UpdateStage object. More... | |

std::istream & | operator>> (std::istream &in, CornerTransferMatrix::GrowthMode &m) |

Input/parsing of a CTM growth mode. More... | |

SRDef | simple_update (State &psi, AOneOp const &op, Truncation const &) |

Applies the one-site operator `op` to the state. More... | |

SRDef | simple_update (State &psi, ATwoOp const &op, Truncation const &trunc) |

Applies the two-site operator `op` to the state using the truncation criterion `trunc` . More... | |

SRDef | simple_update (State &psi, ProdOp const &ops, Truncation const &trunc) |

Applies the series of operators `ops` to the state using the truncation criterion `trunc` . More... | |

SRDef | simple_update (State &psi, ProdOp const &ops, UpdateStage const &conf) |

Applies the series of operators `ops` to the state using the truncation criterion stored in the configuration `conf` . More... | |

Operator output | |

std::ostream & | operator<< (std::ostream &out, OneOp const &op) |

Outputs an unapplied single-site operator. More... | |

std::ostream & | operator<< (std::ostream &out, AOneOp const &op) |

Outputs a single-site operator applied to a specific site. More... | |

std::ostream & | operator<< (std::ostream &out, ATwoOp const &op) |

Outputs a two-site operator applied to a specific site. More... | |

std::ostream & | operator<< (std::ostream &out, A12Op const &op) |

Outputs a 1-2 operator applied to specific sites. More... | |

std::ostream & | operator<< (std::ostream &out, SumOp const &op) |

Outputs a sum operator. More... | |

std::ostream & | operator<< (std::ostream &out, ProdOp const &op) |

Outputs a product operator. More... | |

Single- and two-site operator addition and multiplication implementations. | |

AOneOp | add (AOneOp a, AOneOp const &b) |

Addition of two one-site operators acting on the same site. More... | |

ATwoOp | add (ATwoOp a, ATwoOp const &b) |

Addition of two two-site operators acting on the same sites. More... | |

AOneOp | lmult (AOneOp const &a, AOneOp const &b) |

Multiplication of two one-site operators acting on the same site, giving a new one-site operator. More... | |

ATwoOp | mult (AOneOp const &a, AOneOp const &b) |

Multiplication of two one-site operators acting on different sites forming a new two-site operator. More... | |

ATwoOp | mult (ATwoOp const &a, ATwoOp const &b) |

Multiplication of two two-site operators acting on the same sites forming a new two-site operator. More... | |

ATwoOp | mult (ATwoOp a, AOneOp const &b) |

Multiplication of one two-site operator and one one-site operator (acting on one of the sites of the former) giving a new two-site operator. More... | |

ATwoOp | mult (AOneOp const &a, ATwoOp b) |

Multiplication of one two-site operator and one one-site operator (acting on one of the sites of the former) giving a new two-site operator. More... | |

A12Op | make_12op (AOneOp const &a, ATwoOp const &b) |

Multiplication of an applied one-site and an applied two-site operator to yield an A12Op. More... | |

ATwoOp | dot (AOneOp const &a, AOneOp const &b) |

Dot product of two one-site operators. More... | |

ATwoOp | dot (ATwoOp const &a, ATwoOp const &b) |

Dot product of two two-site operators. More... | |

AOneOp | ldot (AOneOp const &a, AOneOp const &b) |

Dot product of two one-site operators acting on the same site. More... | |

iPEPSv2 operator operators | |

AOneOp | operator+ (AOneOp a, AOneOp const &b) |

Evaluates \( \hat a + \hat b \) for `a` and `b` acting on the same site. More... | |

AOneOp & | operator+= (AOneOp &a, AOneOp const &b) |

Evaluates \( \hat a \gets \hat a + \hat b \) for `a` and `b` acting on the same site. More... | |

ATwoOp | operator+ (ATwoOp a, ATwoOp const &b) |

Evaluates \( \hat a + \hat b \) for `a` and `b` acting on the same sites. More... | |

ATwoOp & | operator+= (ATwoOp &a, ATwoOp const &b) |

Evaluates \( \hat a \gets \hat a + \hat b \) for `a` and `b` acting on the same sites. More... | |

AOneOp | operator- (AOneOp a, AOneOp const &b) |

Evaluates \( \hat a - \hat b \) for `a` and `b` acting on the same site. More... | |

AOneOp & | operator-= (AOneOp &a, AOneOp const &b) |

Evaluates \( \hat a \gets \hat a - \hat b \) for `a` and `b` acting on the same site. More... | |

ATwoOp | operator- (ATwoOp a, ATwoOp const &b) |

Evaluates \( \hat a \gets \hat a - \hat b \) for `a` and `b` acting on the same sites. More... | |

ATwoOp & | operator-= (ATwoOp &a, ATwoOp const &b) |

Evaluates \( \hat a \gets \hat a - \hat b \) for `a` and `b` acting on the same sites. More... | |

ATwoOp | operator* (AOneOp const &a, AOneOp const &b) |

Evaluates \( \hat b \hat a \) (`a` applied first) for `a` and `b` acting on different sites. More... | |

ATwoOp | operator* (ATwoOp const &a, ATwoOp const &b) |

Evaluates \( \hat b \hat a \) (`a` applied first) for `a` and `b` acting on the same sites. More... | |

AOneOp | operator* (AOneOp a, SDef c) |

Evaluates \( c \hat a \). More... | |

AOneOp | operator* (SDef c, AOneOp a) |

Evaluates \( c \hat a \). More... | |

ATwoOp | operator* (ATwoOp a, SDef c) |

Evaluates \( c \hat a \). More... | |

ATwoOp | operator* (SDef c, ATwoOp a) |

Evaluates \( c \hat a \). More... | |

A12Op | operator* (A12Op a, SDef c) |

Evaluates \( c \hat a \). More... | |

A12Op | operator* (SDef c, A12Op a) |

Evaluates \( c \hat a \). More... | |

SumOp & | operator+= (SumOp &a, ATwoOp b) |

Evaluates \( \hat a \gets \hat a + \hat b \). More... | |

SumOp & | operator+= (SumOp &a, AOneOp b) |

Evaluates \( \hat a \gets \hat a + \hat b \). More... | |

SumOp & | operator+= (SumOp &a, A12Op b) |

Evaluates \( \hat a \gets \hat a + \hat b \). More... | |

SumOp & | operator+= (SumOp &a, SumOp b) |

Evaluates \( \hat a \gets \hat a + \hat b \). More... | |

SumOp & | operator-= (SumOp &a, ATwoOp const &b) |

Evaluates \( \hat a \gets \hat a - \hat b \). More... | |

SumOp & | operator-= (SumOp &a, AOneOp const &b) |

Evaluates \( \hat a \gets \hat a - \hat b \). More... | |

SumOp & | operator-= (SumOp &a, A12Op const &b) |

Evaluates \( \hat a \gets \hat a - \hat b \). More... | |

SumOp & | operator-= (SumOp &a, SumOp const &b) |

Evaluates \( \hat a \gets \hat a - \hat b \). More... | |

SumOp & | operator*= (SumOp &a, SDef c) |

Evaluates \( \hat a \gets c \hat a \). More... | |

SumOp | operator+ (SumOp a, SumOp b) |

Evaluates \( \hat a + \hat b \). More... | |

SumOp | operator+ (SumOp a, ATwoOp b) |

Evaluates \( \hat a + \hat b \). More... | |

SumOp | operator+ (ATwoOp b, SumOp a) |

Evaluates \( \hat a + \hat b \). More... | |

SumOp | operator+ (SumOp a, AOneOp b) |

Evaluates \( \hat a + \hat b \). More... | |

SumOp | operator+ (AOneOp b, SumOp a) |

Evaluates \( \hat a + \hat b \). More... | |

SumOp | operator+ (SumOp a, A12Op b) |

Evaluates \( \hat a + \hat b \). More... | |

SumOp | operator+ (A12Op b, SumOp a) |

Evaluates \( \hat a + \hat b \). More... | |

SumOp | operator- (SumOp a, SumOp const &b) |

Evaluates \( \hat a - \hat b \). More... | |

SumOp | operator- (SumOp a, ATwoOp const &b) |

Evaluates \( \hat a - \hat b \). More... | |

SumOp | operator- (ATwoOp b, SumOp a) |

Evaluates \( \hat b - \hat a \). More... | |

SumOp | operator- (SumOp a, AOneOp const &b) |

Evaluates \( \hat a - \hat b \). More... | |

SumOp | operator- (AOneOp b, SumOp a) |

Evaluates \( \hat b - \hat a \). More... | |

SumOp | operator- (SumOp a, A12Op const &b) |

Evaluates \( \hat a - \hat b \). More... | |

SumOp | operator- (A12Op b, SumOp a) |

Evaluates \( \hat b - \hat a \). More... | |

SumOp | operator* (SumOp a, SDef c) |

Evaluates \( c \hat a \). More... | |

SumOp | operator* (SDef c, SumOp a) |

Evaluates \( c \hat a \). More... | |

## Variables | |

bool | have_shown_ctm_ad_warning = false |

Set to true once we have shown a warning regarding the AD of the CTM. More... | |

Namespace for the second-generation iPEPS code (iPEPSv2).