std::tuple<State, SRDef> syten::MPS::apply_op_orthogonalise_fit | ( | State const & | in, |
Operator const & | op, | ||
Truncation const & | trunc, | ||
SRDef | desired_change, | ||
Index | max_exp_sweeps = 12 , |
||
Index | max_opt_sweeps = 2 , |
||
State | res = State() , |
||
Iterator | first = nullptr , |
||
Iterator | last = nullptr |
||
) |
Applies the operator op
to the state in
while orthogonalising the result against states [first, last)
and truncating with trunc
.
in | the initial state \( |\psi \rangle \) as a MPS::State |
op | the operator \( \hat O \) |
trunc | a truncation specification |
desired_change | sweeps are considered converged if the total change during a sweep is below this. |
max_exp_sweeps | maximal number of full (back&forth) expansion sweeps |
max_opt_sweeps | maximal number of full (back&forth) optimisation sweeps |
res | input guess state to use as initial state |
first | iterator to the first element of the orthogonalised set \( \{ | v_i \rangle \}_{i=\mathtt{first}}^{\mathtt{last-1}} \) |
last | iterator to the one-past-the-end element of the orthogonalised set \( \{ | v_i \rangle \}_{i=\mathtt{first}}^{\mathtt{last-1}} \) |
first
and last
are optional and can be left off. No orthogonalisation will occur in this case. References syten::abs(), syten::Timer::add(), std::vector< T >::back(), syten::Tensor< rank >::begin(), syten::conj(), distance(), std::distance(), syten::Tensor< rank >::end(), syten::Timer::end(), expand_to_left(), expand_to_right(), syten::genFuse(), syten::genIONode(), syten::genSplit(), syten::MPS::State::leftnorm(), syten::MPS::Operator::lIdx, syten::MPS::State::lIdx, syten::MPS::State::lInt, syten::logGD(), syten::logTV(), std::make_tuple(), syten::Timer::middle(), std::move(), mps_mpo_ctr_ctr(), mps_mpo_mps_ctr_left(), mps_mpo_mps_ctr_right(), norm(), syten::orthogonalise_solve_svd(), std::vector< T >::pop_back(), std::vector< T >::push_back(), syten::MPS::Operator::rIdx, syten::MPS::State::rIdx, syten::MPS::State::rInt, syten::MPS::State::size(), syten::Timer::start(), syten::to_string_rd(), syten::MPS::State::uIdx, syten::MPS::State::uInt, and syten::underThreshold().
Referenced by syten::Krylov::TensorNetworksImpl::VarApplyOrtho::apply(), apply_op_itrunc_fit(), syten::do_apply_op(), syten::MPS::TDVP::Worker::gse_build_krylov_vectors(), syten::MPS::DMRG::Worker::gse_build_krylov_vectors(), and taylor_time_evolution().