forte2.base_classes.ci_base#

Module Contents#

class forte2.base_classes.ci_base.CIBase#

Bases: forte2.base_classes.active_space_solver.ActiveSpaceSolver

Base class for (state-averaged) CI-type active-space solvers.

Provides the representation-agnostic orchestration shared by all concrete solvers: root/state bookkeeping, state-averaged RDMs, and cumulants. These methods assume the subclass populates the following in its _startup/run:

  • self.norb : number of active orbitals

  • self.evals_flat : flat array of eigenvalues over all roots

  • self.sub_solvers : list of per-state worker objects, each exposing nroot and make_{1,2,3}rdm(root) returning the spin-free RDMs.

Subclasses implement the eigensolve and RDM primitives (run, reset_eigensolver, get_convergence_status, make_sf_*/make_sd_*).

first_run: bool = True#
executed: bool = False#
compute_average_energy()#

Compute the average energy from the CI roots using the weights.

Returns:
float

Average energy of the CI roots.

make_average_1rdm()#

Make the average spin-free one-particle RDM from the CI vectors.

Returns:
NDArray

Average spin-free one-particle RDM.

make_average_2rdm()#

Make the average spin-free two-particle RDM from the CI vectors.

Returns:
NDArray

Average spin-free two-particle RDM.

make_average_3rdm()#

Make the average spin-free three-particle RDM from the CI vectors.

Returns:
NDArray

Average spin-free three-particle RDM.

make_average_2cumulant()#
make_average_3cumulant()#
make_average_cumulants()#
abstractmethod run()#
abstractmethod reset_eigensolver()#
abstractmethod get_convergence_status()#
abstractmethod make_1rdm(left_root: int, right_root: int | None = None)#
abstractmethod make_2rdm(left_root: int, right_root: int | None = None)#
class forte2.base_classes.ci_base.RelCIBase#

Bases: forte2.base_classes.active_space_solver.RelActiveSpaceSolver

first_run: bool = True#
executed: bool = False#
compute_average_energy#
make_average_1rdm#
make_average_2rdm#
make_average_3rdm#
make_average_2cumulant#
make_average_3cumulant#
make_average_cumulants#
abstractmethod run(use_asym_ints=False)#
abstractmethod reset_eigensolver()#
abstractmethod get_convergence_status()#
abstractmethod make_1rdm(left_root: int, right_root: int | None = None)#
abstractmethod make_2rdm(left_root: int, right_root: int | None = None)#