Function sequant::mbpt::bernoulli::hbar

Function Documentation

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

Tensor-level \(\bar{H} = \sum_{k=0}^{\mathrm{rank}} \bar{H}^{k}\) in the Bernoulli expansion, for \(\sigma = T-T^\dagger\) of rank N. \(\bar{H}^{0},\ldots,\bar{H}^{4}\) are Eqs. (46)-(50), and higher orders are generated from Eq. (44), 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. 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 \(\bar{H}^{k}\) to include

  • skip1 – exclude singles from T

Throws:

Exception – if CSV is enabled

Pre:

a HF reference: \(F\) is taken to have no occupied-virtual block, which keeps \(F\) out of \(\bar{H}^{2}\) and higher (see the F-cancellation in bernoulli.cpp)

Pre:

the reference is the Wick vacuum (enforced in every build)