# 3.1.8. horton.orbital_utils – Utility functions for orbital modifications¶

horton.orbital_utils.rotate_orbitals(*args)

Rotate AO/MO (or MO/MO) coefficient matrix such that C = C*U

Arguments:

args
Rotation matrices (TwoIndex instance) and AO/MO coefficients (Expansion instance). rots and exps are ordered such that rot1 corresponds to exp1, etc., i.e., rot1, rot2,..., exp1, exp2,...
horton.orbital_utils.compute_unitary_matrix(kappa)

Determine a unitary matrix from a skew-symmetric matrix K as U = exp(-K) by approximating U = 1 - K + 1/2 K^2 + O(3)

Arguments:

kappa
A skew-symmetric matrix (TwoIndex instance)
horton.orbital_utils.transform_integrals(*args, **kwargs)

Update MO integrals. Returns list of transformed 1- and 2-electron integrals according to a list of expansion coefficients.

Arguments:

one
One-electron integrals in the AO basis. A TwoIndex instance.
two
Two-electron integrals in the AO basis.

Optional arguments:

indextrans
Choice of 4-index transformation. Default ‘tensordot’.
args
The expansion coefficients.
horton.orbital_utils.split_core_active(one, two, ecore, orb, ncore, nactive, indextrans='tensordot')

Reduce a Hamiltonian to an active space

Works only for restricted wavefunctions.

Arguments:

one/two
One and two-electron integrals.
ecore
The core energy of the given Hamiltonian. In the case of a standard molecular system, this is the nuclear nuclear repulsion.
orb
The MO expansion coefficients. An Expansion instance. If None, integrals are assued to be already transformed into the mo basis and no transformation is carried out in this function.
ncore
The number of frozen core orbitals (int)
nactive
The number of active orbitals (int)

Optional arguments:

indextrans
4-index transformation (str). One of tensordot, einsum`

Returns a tuple with three values:

one_small
The one-body operator in the small space
two_small
The two-body operator in the small space
ecore
The core energy, i.e. the sum of the given core energy and HF contributions from the core orbitals.