Class CC¶
Defined in File cc.hpp
Nested Relationships¶
Nested Types¶
Class Documentation¶
-
class CC¶
CC is a derivation engine for the coupled-cluster method.
Public Types
Public Functions
-
explicit CC(size_t n)¶
constructs CC engine with default options (traditional ansatz, screening enabled, topological optimization enabled)
- Parameters:
n – coupled cluster excitation rank
-
explicit CC(size_t n, const Options &opts)¶
constructs CC engine with custom options
See also
- Parameters:
n – coupled cluster excitation rank
opts – configuration options
-
bool unitary() const¶
- Returns:
true if the ansatz is unitary
-
bool screen() const¶
- Returns:
whether screening is on or not
-
bool use_topology() const¶
- Returns:
whether topological optimization is used in WickTheorem
-
std::vector<ExprPtr> t(size_t pmax = std::numeric_limits<size_t>::max(), size_t pmin = 0)¶
derives t amplitude equations, \( \langle P|\bar{H}|0 \rangle = 0 \)
- Parameters:
pmax – highest particle rank of the projector manifold
\f \langle P | \f; the default value is to use the cluster operator rank of this enginepmin – lowest particle rank of the projector manifold
\f \langle P | \f; the default value is 0
- Returns:
vector of t amplitude equations, with element
kcontaining equation \( \langle k |\bar{H}|0 \rangle = 0 \) forkin the [pmin,pmax] range, and null value otherwise
- std::vector< ExprPtr > λ ()
derives λ amplitude equations, \( \langle 0| (1 + \hat{\Lambda}) \frac{d \bar{H}}{d \hat{T}_P} |0 \rangle = 0 \)
- Returns:
vector of λ amplitude equations, with element
kcontaining equation \( \langle 0| (1 + \hat{\Lambda}) \frac{d \bar{H}}{d \hat{T}_k} |0 \rangle = 0 \) forkin the [1,N] range; element 0 is always null
- std::vector< ExprPtr > tʼ (size_t rank=1, size_t order=1, std::optional< size_t > nbatch=std::nullopt)
derives perturbed t amplitude equations
- Parameters:
rank – rank of perturbation operator. r = 1 means one-body perturbation operator
order – order of perturbation
nbatch – optional batching index rank for perturbation operators
- Pre:
rank==1 && order==1, only first order perturbation and one-body perturbation operator is supported now- Returns:
std::vector of perturbed t amplitude equations
- std::vector< ExprPtr > λʼ (size_t rank=1, size_t order=1, std::optional< size_t > nbatch=std::nullopt)
derives perturbed λ amplitude equations
- Parameters:
rank – rank of perturbation operator. r = 1 means one-body perturbation operator
order – order of perturbation
nbatch – optional batching index rank for perturbation operators
- Pre:
rank==1 && order==1, only first order perturbation and one-body perturbation operator is supported now- Returns:
std::vector of perturbed λ amplitude equations
- std::vector< ExprPtr > eom_r (nₚ np, nₕ nh)
derives right-side sigma equations for EOM-CC
- Parameters:
np – number of particle creators in R operator
nh – number of hole creators in R operator
- Returns:
vector of right side sigma equations, element 0 is always null
- std::vector< ExprPtr > eom_l (nₚ np, nₕ nh)
derives left-side sigma equations for EOM-CC
- Parameters:
np – number of particle annihilators in L operator
nh – number of hole annihilators in L operator
- Returns:
vector of left side sigma equations, element 0 is always null
-
struct Options¶
Configuration options for CC class.
Public Members
-
bool screen = true¶
if true, uses Operator level screening before applying WickTheorem. This propagates to all ref_av() calls
-
bool use_topology = true¶
if true, uses topological optimizations in WickTheorem
-
std::optional<size_t> hbar_comm_rank = std::nullopt¶
maximum order of nested commutators in H̄; must be specified if unitary ansatz is used
-
std::optional<size_t> pertbar_comm_rank = std::nullopt¶
maximum order of nested commutators in the similarity transformed perturbation operator; must be specified if unitary ansatz is used in perturbed amplitude derivation
-
bool screen = true¶
-
explicit CC(size_t n)¶