Function sequant::mbpt::project_integral_domains

Function Documentation

ExprPtr sequant::mbpt::project_integral_domains(ExprPtr const &expr, ProjectionOptions const &opts)

In each R2 term (residual rank read off the Ŝ/Â symmetrizer; other terms are returned as is) every integral_label tensor of a selected cell gets each virtual leg x that is not a residual external replaced by a fresh ‘x’on the target pair and basis, times the overlaps{x’;x} (s{x;x’}for a bra leg); a leg already there stays. An approximation, exact only at complete domains, and opt-in: with the default ProjectionOptions::terms (None) nothing changes. Run it after spin tracing and before density fitting. @return @p expr itself if nothing changed @note the result holds fresh temporary indices: canonicalize it before serializing (deserialization rejects ordinals >= Index::min_tmp_index()) A leg shared by two integrals of one term moves once per integral, each to a fresh index, so the overlaps chain through the leg:x’ s{x’;x} ...s{x;x’’} x’’. @throw Exception if an integral of an R2 term carries auxiliary indices, Integrallackscell_instance, orPartnerPairis combined with Amplitude`