SyTen

◆ sync()

void syten::MPS::DMRG::Worker::sync ( Tensor< 2 > &  connector,
Tensor< 3 > &  rPsi,
Tensor< 3 > const &  rrPsi,
std::vector< Tensor< 3 > > const &  rContr,
std::vector< Tensor< 3 > > &  lContr,
std::vector< Tensor< 2 > > const &  rOrtho,
std::vector< Tensor< 2 > > &  lOrtho,
SRDef lastEnergy,
SRDef lastAlpha 
)

Synchronises with the right neighbour.

Firstly combines the data from the right into a locally coherent state, then updates on rBound, rBound+1 and rBound again to increase the bond dimension on (rBound,rBound+1) and finally deletes unneeded data.

Parameters
[in,out]connectorinverted connection matrix
[in,out]rPsiupdated local state component on first site of right neighbour
[in]rrPsiupdated local state component on the second site of right neighbour
[in]rContrcontraction of right neighbour state up to (excluding) site rPsi
[out]lContrcontraction of our segment
[in]rOrthocontractions of psi and orthogonal states to the right up to (excluding) site rPsi
[out]lOrthocontractions of psi and orthogonal states on our segment
[out]lastEnergynew lowest energy for rhs neighbour
[out]lastAlphanew alpha for rhs neighbour

References syten::Tensor< rank >::dirs, syten::MPS::expand_to_left(), syten::MPS::expand_to_right(), syten::genRandom(), syten::herm(), syten::invertDiagonal(), syten::AsyncCached< Type >::load(), std::move(), syten::Krylov::norm(), syten::STensorImpl::svd(), std::swap(), SYTEN_ASSERT_DEBUG, SYTEN_ZNORM_THRESHOLD, syten::transpose_exchange(), and syten::underThreshold().

+ Here is the call graph for this function: