SyTen

◆ gen_merge()

std::tuple< STensor, SBasis > syten::STensorImpl::gen_merge ( SBasis const &  b1,
SBasis const &  b2,
Index  maxBlocksize = std::numeric_limitsIndex >::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().

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