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.
[in,out] | connector | inverted connection matrix |
[in,out] | rPsi | updated local state component on first site of right neighbour |
[in] | rrPsi | updated local state component on the second site of right neighbour |
[in] | rContr | contraction of right neighbour state up to (excluding) site rPsi |
[out] | lContr | contraction of our segment |
[in] | rOrtho | contractions of psi and orthogonal states to the right up to (excluding) site rPsi |
[out] | lOrtho | contractions of psi and orthogonal states on our segment |
[out] | lastEnergy | new lowest energy for rhs neighbour |
[out] | lastAlpha | new 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().