std::tuple< STensor, SBasis > syten::STensorImpl::gen_merge | ( | SBasis const & | b1, |
SBasis const & | b2, | ||
Index | maxBlocksize = std::numeric_limits< Index >::max() , |
||
SRDef | ratio = 1. , |
||
Index | minBlocksize = 1 , |
||
bool | ethereal = false |
||
) |
Returns a fusing or splitting half-isometry and the generated new basis.
Fusing isometries have fermionic order |fuse><b2|<b1| while splitting ones have order |b1>|b2><fuse| to allow fermionic-sign-less contractions.
References syten::STensorImpl::SBasis::add(), syten::STensorImpl::SBasis::dir(), syten::STensorImpl::SBasis::gen_basis(), gen_merge_id(), syten::gM(), syten::Inc, std::move(), syten::STensorImpl::SBasis::name(), syten::STensorImpl::SBasis::rename(), syten::STensorImpl::SBasis::set_dir(), syten::STensorImpl::SBasis::set_id(), and SYTEN_ASSERT_MSG.
Referenced by syten::T3N::apply_operator_itrunc(), syten::T3N::DMRG::Run::build_rootContr_rec(), syten::T3N::TDVP::Worker::build_rootContr_rec(), syten::T3N::RDMs::OneParticleRDM::construct(), demerge(), syten::T3N::expectation_rec(), syten::T3N::genBranchId(), syten::T3N::genPhysCmp(), syten::T3N::ProjectedPurification::genTransformation(), syten::IPEPSv2::CornerTransferMatrix::grow_helper(), syten::IPEPSv2::Lattice::Lattice(), syten::IPEPSv2::make_random_tensor(), syten::IPEPSv2::make_tree_like(), merge(), syten::T3N::State::multiply_rec(), syten::T3N::Operator::product_rec(), syten::BasisTransformation::SwapGate::SwapGate(), syten::T3N::RDMs::OneParticleRDM::twoSite_right_rec(), syten::T3N::RDMs::OneParticleRDM::twoSite_upwards_rec(), syten::T3N::DMRG::Run::update_phys_2site(), syten::T3N::TDVP::Worker::update_phys_branch_phys(), syten::T3N::DMRG::Run::update_phys_branching_2site(), and syten::T3N::TDVP::Worker::update_phys_phys().