Function sequant::mbpt::bernoulli::hbar

Function Documentation

ExprPtr sequant::mbpt::bernoulli::hbar(std::size_t N, std::size_t rank, bool skip1)

Tensor-level H̄ = Σ_{k=0..rank} H̄^k in the Bernoulli expansion, for σ = T−T† of rank N. H̄⁰..H̄⁴ are Eqs. (46)-(50) of 10.1063/1.5030344.

The result is coefficient tensors times normal-ordered operators, not mbpt::op operators, and nothing is screened out of it, so the caller projects every term.

Warning

Single-reference only, and nothing checks for it. The N/R split expands general indices over the hole and particle spaces alone (see detail::expand_to_blocks) and classifies each one as wholly occupied or wholly unoccupied relative to the single-product vacuum. That classification does not represent multireference excitation semantics; for example, the active space in make_mr_spaces() is vacuum-unoccupied.

Parameters:
  • N – cluster/excitation rank (also the N/R rank cutoff)

  • rank – highest Bernoulli order H̄^k to include (0..4)

  • skip1 – exclude singles from T

Throws:

Exception – if CSV is enabled or rank > 4

Pre:

an HF reference: F is taken to have no occupied-virtual block, which keeps F out of H̄² and higher (see the F-cancellation in bernoulli.cpp)