SyTen

◆ sweep_twosite()

bool syten::MPS::TDVP::LBOWorker::sweep_twosite ( Timer timer,
SRDef trunc_error,
SRDef krylov_error 
)

Does a single sweep of two-site TDVP, delivering the timer and errors in its arguments and returning true if we should exit due to having received a signal.

The error of this integrator compared to the 1TDVP version is larger, as it is not quite straightforward to update the LBO basis properly. At the moment, I update the two MPS site tensors in their reduced basis and afterwards backwards-evolve the combined MPS-LBO site tensor on the next site. Because this procedure never updates boundary LBO tensors, they are merged into the two-site tensor during the forward update. Because this is only effective on the boundary, where bond dimensions are typically small, this should not be too much of a problem. Better solutions are welcome.

References syten::Tensor< rank >::b(), calc_contrl(), calc_contrr(), check_signals(), conf, contrl, contrr, syten::Timer::end(), syten::IterativeExit::error, evo_two_m(), evo_two_v(), expo_unity, syten::genIONode(), syten::MPS::LBOState::leftnormM(), syten::MPS::LBOState::m(), syten::Timer::middle(), syten::MPS::LBOState::No, syten::MPS::norm(), syten::MPS::LBOState::physnormM(), syten::MPS::LBOState::physnormV(), psi, syten::MPS::LBOState::rightnormM(), syten::Truncation::scaled(), syten::MPS::LBOState::size(), syten::Timer::start(), SYTEN_ASSERT_MSG, syten::TDVP::Conf::trunc, and syten::MPS::LBOState::v().

Referenced by run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: