Function sequant::mbpt::project_integral_domains¶
Defined in File pno.cpp
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) everyintegral_labeltensor of a selected cell gets each virtual legxthat 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 withAmplitude`