Unitary Coupled Cluster Base
- class slowquant.unitary_coupled_cluster.base.StateVector(inactive: list[ndarray], active: list[ndarray], virtual: list[ndarray])
State vector.
Initialize state vector.
- Parameters:
inactive – Kronecker representation of inactive orbitals (reference).
active – Kronecker representation of active orbitals (reference).
virtual – Kronecker representation of virtual orbitals (reference).
- property bra_active: ndarray
Get bra state-vector for active orbitals.
- property bra_active_csr: csr_matrix
Get bra state-vector for inactive orbitals.
- property bra_inactive: list[ndarray]
Get bra configuration for inactive orbitals.
- property bra_virtual: list[ndarray]
Get bra configuration for virtual orbitals.
- property ket_active: ndarray
Get ket state-vector for inactive orbitals.
- property ket_active_csr: csr_matrix
Get ket state-vector for inactive orbitals.
- property ket_inactive: list[ndarray]
Get ket configuration for inactive orbitals.
- property ket_virtual: list[ndarray]
Get ket configuration for virtual orbitals.
- new_u(U: ndarray, allowed_states: ndarray | None = None) None
Create active state-vector by applying transformation matrix to reference.
- Parameters:
U – Transformation matrix.
allowed_states – State to be transformed.
- slowquant.unitary_coupled_cluster.base.kronecker_product(A: Sequence[ndarray]) ndarray
Get Kronecker product of a list of matricies.
Does:
\[P x P x P ...\]- Parameters:
A – List of matrices.
- Returns:
Kronecker product of matrices.
- slowquant.unitary_coupled_cluster.base.kronecker_product_cached(num_prior: int, num_after: int, pauli_mat_symbol: str, is_csr: bool, is_z_prior: bool = False) ndarray | csr_matrix
Get operator in matrix form.
The operator is returned in the form:
\[I x I x .. o .. x I x I\]or
\[Z x Z x .. o .. x I x I\]- Parameters:
num_prior – Number of left-hand side identity matrices.
num_after – Number of right-hand side identity matrices.
is_csr – If the resulting matrix representation should be a sparse matrix.
is_z_prior – Use the Z operator instead of identiy operator as the prior matricies.
- Returns:
Matrix representation of an operator.
- slowquant.unitary_coupled_cluster.base.symbol_to_mat(symbol: str) ndarray
Convert operator matrix symbol to matrix representation.
The symbol needs to be representable by a 2x2 matrix.
- Parameters:
symbol – Symbol matrix symbol.
- Returns:
Matrix representation of symbol.
- slowquant.unitary_coupled_cluster.linalg_wrapper.expm(A: ndarray | csr_matrix | csc_matrix) ndarray | csr_matrix | csc_matrix
Matrix exponential that is agnostic to dense (numpy) and sparse (scipy) matrices.
- Parameters:
A – Matrix.
- Returns:
Matrix exponential of A.
- slowquant.unitary_coupled_cluster.linalg_wrapper.matmul(A: ndarray | csr_matrix | csc_matrix, B: ndarray | csr_matrix | csc_matrix) ndarray | csr_matrix | csc_matrix
Matrix multiplication that is agnostic to dense (numpy) and sparse (scipy) matrices.
- Parameters:
A – Matrix.
B – Matrix.
- Returns:
Matrix product.
- slowquant.unitary_coupled_cluster.linalg_wrapper.outer(A: ndarray | csr_matrix | csc_matrix, B: ndarray | csr_matrix | csc_matrix) ndarray | csr_matrix | csc_matrix
Outerp product between two vectors.
- Parameters:
A – Vector.
B – Vector.
- Returns:
Outer product matrix.
- slowquant.unitary_coupled_cluster.linalg_wrapper.zeros_like(A: ndarray | csr_matrix | csc_matrix) ndarray | csr_matrix | csc_matrix
Create zero array of same shape as input array.
- Parameters:
A – Array to take shape from.
- Returns:
Zero array.
- class slowquant.unitary_coupled_cluster.density_matrix.ReducedDenstiyMatrix(num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int, rdm1: ndarray, rdm2: ndarray | None = None)
Reduced density matrix class.
Initialize reduced density matrix class.
- Parameters:
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
rdm1 – One-electron reduced density matrix in the active space.
rdm2 – Two-electron reduced density matrix in the active space.
- RDM1(p: int, q: int) float
Get one-electron reduced density matrix element.
The only non-zero elements are:
\[\begin{split}\Gamma^{[1]}_{pq} = \left\{\begin{array}{ll} 2\delta_{ij} & pq = ij\\ \left<0\left|\hat{E}_{vw}\right|0\right> & pq = vw\\ 0 & \text{otherwise} \\ \end{array} \right.\end{split}\]and the symmetry \(\Gamma^{[1]}_{pq}=\Gamma^{[1]}_{qp}\).
- Parameters:
p – Spatial orbital index.
q – Spatial orbital index.
- Returns:
One-electron reduved density matrix element.
- RDM2(p: int, q: int, r: int, s: int) float
Get two-electron reduced density matrix element.
\[\begin{split}\Gamma^{[2]}_{pqrs} = \left\{\begin{array}{ll} 4\delta_{ij}\delta_{kl} - 2\delta_{jk}\delta_{il} & pqrs = ijkl\\ 2\delta_{ij} \Gamma^{[1]}_{vw} & pqrs = vwij\\ - \delta_{ij}\Gamma^{[1]}_{vw} & pqrs = ivwj\\ \left<0\left|\hat{e}_{vwxy}\right|0\right> & pqrs = vwxy\\ 0 & \text{otherwise} \\ \end{array} \right.\end{split}\]and the symmetry \(\Gamma^{[2]}_{pqrs}=\Gamma^{[2]}_{rspq}=\Gamma^{[2]}_{qpsr}=\Gamma^{[2]}_{srqp}\).
- Parameters:
p – Spatial orbital index.
q – Spatial orbital index.
r – Spatial orbital index.
s – Spatial orbital index.
- Returns:
Two-electron reduved density matrix element.
- slowquant.unitary_coupled_cluster.density_matrix.get_electronic_energy(rdms: ReducedDenstiyMatrix, h_int: ndarray, g_int: ndarray, num_inactive_orbs: int, num_active_orbs: int) float
Calculate electronic energy.
\[E = \sum_{pq}h_{pq}\Gamma^{[1]}_{pq} + \frac{1}{2}\sum_{pqrs}g_{pqrs}\Gamma^{[2]}_{pqrs}\]- Parameters:
h_int – One-electron integrals in MO.
g_int – Two-electron integrals in MO.
num_inactive_orbs – Number of inactive orbitals.
num_active_orbs – Number of active orbitals.
- Returns:
Electronic energy.
- slowquant.unitary_coupled_cluster.density_matrix.get_orbital_gradient(rdms: ReducedDenstiyMatrix, h_int: ndarray, g_int: ndarray, kappa_idx: list[list[int]], num_inactive_orbs: int, num_active_orbs: int) ndarray
Calculate the orbital gradient.
\[g_{pq}^{\hat{\kappa}} = \left<0\left|\left[\hat{\kappa}_{pq},\hat{H}\right]\right|0\right>\]- Parameters:
rdms – Reduced density matrix class.
h_int – One-electron integrals in MO in Hamiltonian.
g_int – Two-electron integrals in MO in Hamiltonian.
kappa_idx – Orbital parameter indicies in spatial basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
- Returns:
Orbital gradient.
- slowquant.unitary_coupled_cluster.density_matrix.get_orbital_gradient_response(rdms: ReducedDenstiyMatrix, h_int: ndarray, g_int: ndarray, kappa_idx: list[list[int]], num_inactive_orbs: int, num_active_orbs: int) ndarray
Calculate the response orbital parameter gradient.
\[g_{pq}^{\hat{q}} = \left<0\left|\left[\hat{q}_{pq},\hat{H}\right]\right|0\right>\]- Parameters:
rdms – Reduced density matrix class.
h_int – One-electron integrals in MO in Hamiltonian.
g_int – Two-electron integrals in MO in Hamiltonian.
kappa_idx – Orbital parameter indicies in spatial basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
- Returns:
Orbital response parameter gradient.
- slowquant.unitary_coupled_cluster.density_matrix.get_orbital_response_hessian_block(rdms: ReducedDenstiyMatrix, h: ndarray, g: ndarray, kappa_idx1: list[list[int]], kappa_idx2: list[list[int]], num_inactive_orbs: int, num_active_orbs: int) ndarray
Calculate Hessian-like orbital-orbital block.
\[H^{\hat{q},\hat{q}}_{tu,mn} = \left<0\left|\left[\hat{q}_{tu},\left[\hat{H},\hat{q}_{mn}\right]\right]\right|0\right>\]- Parameters:
rdms – Reduced density matrix class.
kappa_idx1 – Orbital parameter indicies in spatial basis.
kappa_idx1 – Orbital parameter indicies in spatial basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
- Returns:
Hessian-like orbital-orbital block.
- slowquant.unitary_coupled_cluster.density_matrix.get_orbital_response_metric_sigma(rdms: ReducedDenstiyMatrix, kappa_idx: list[list[int]]) ndarray
Calculate the Sigma matrix orbital-orbital block.
\[\Sigma_{pq,pq}^{\hat{q},\hat{q}} = \left<0\left|\left[\hat{q}_{pq}^\dagger,\hat{q}_{pq}\right]\right|0\right>\]- Parameters:
rdms – Reduced density matrix class.
kappa_idx – Orbital parameter indicies in spatial basis.
- Returns:
Sigma matrix orbital-orbital block.
- slowquant.unitary_coupled_cluster.density_matrix.get_orbital_response_property_gradient(rdms: ReducedDenstiyMatrix, x_mo: ndarray, kappa_idx: list[list[int]], num_inactive_orbs: int, num_active_orbs: int, response_vectors: ndarray, state_number: int, number_excitations: int) float
Calculate the orbital part of property gradient.
\[P^{\hat{q}} = \sum_k\left<0\left|\left[\hat{O}_{k},\hat{X}\right]\right|0\right>\]- Parameters:
rdms – Reduced density matrix class.
x_mo – Property integral in MO basis.
kappa_idx – Orbital parameter indicies in spatial basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
response_vectors – Response vectors.
state_number – State number counting from zero.
number_excitations – Total number of excitations.
- Returns:
Orbital part of property gradient.
- slowquant.unitary_coupled_cluster.density_matrix.get_orbital_response_vector_norm(rdms: ReducedDenstiyMatrix, kappa_idx: list[list[int]], response_vectors: ndarray, state_number: int, number_excitations: int) float
Calculate the orbital part of excited state norm.
\[N^{\hat{q}} = \sum_k\left<0\left|\left[\hat{O}_{k},\hat{O}_{k}^\dagger\right]\right|0\right>\]- Parameters:
rdms – Reduced density matrix class.
kappa_idx – Orbital parameter indicies in spatial basis.
response_vectors – Response vectors.
state_number – State number counting from zero.
number_excitations – Total number of excitations.
- Returns:
Orbital part of excited state norm.
- class slowquant.unitary_coupled_cluster.operator_hybrid.OperatorHybrid(operator: dict[str, OperatorHybridData])
Initialize hybrid operator.
The key is the Pauli-string of inactive + virtual, i.e. the active part does not contribute to the key.
- Parameters:
operator – Dictonary form of hybrid operator.
- property dagger: OperatorHybrid
Do complex conjugate of operator.
- Returns:
New hybrid operator.
- class slowquant.unitary_coupled_cluster.operator_hybrid.OperatorHybridData(inactive_pauli: str, active_matrix: ndarray | csr_matrix, virtual_pauli: str)
Initialize data structure of hybrid operators.
- Parameters:
inactive_pauli – Pauli string of inactive orbitals.
active_matrix – Matrix operator of active orbitals.
virtual_pauli – Pauli string of virtual orbitals.
- class slowquant.unitary_coupled_cluster.operator_hybrid.StateVectorOperator(state_vector: dict[str, StateVectorOperatorData])
Initialize ‘operator’ form of state vector.
- Parameters:
state_vector – Data class representation of the state vector.
- class slowquant.unitary_coupled_cluster.operator_hybrid.StateVectorOperatorData(inactive_orbs: str, active_space: ndarray | csr_matrix, virtual_orbs: str)
Initialize data class for state vector.
- Parameters:
inactive_orbs – String representation of inactive orbitals occupation. o (one) meaning occupied and z (zero) meaning unoccupoed.
active_space – Active space part of state state vector.
virtual_orbs – String representation of virtual orbitals occupation. o (one) meaning occupied and z (zero) meaning unoccupoed.
- slowquant.unitary_coupled_cluster.operator_hybrid.convert_pauli_to_hybrid_form(pauliop: OperatorPauli, num_inactive_orbs: int, num_active_orbs: int) OperatorHybrid
Convert Pauli operator to hybrid operator.
- Parameters:
pauliop – Pauli operator.
num_inactive_orbs – Number of inactive orbitals.
num_active_orbs – Number of active orbitals.
- Returns:
Hybrid operator.
- slowquant.unitary_coupled_cluster.operator_hybrid.epq_hybrid(p: int, q: int, num_inactive_spin_orbs: int, num_active_spin_orbs: int, num_virtual_spin_orbs: int) OperatorHybrid
Get Epq operator.
- Parameters:
p – Orbital index spatial basis.
q – Orbital index spatial basis.
num_inactive_spin_orbs – Number of inactive orbitals in spin basis.
num_active_spin_orbs – Number of active orbitals in spin basis.
num_virtual_spin_orbs – Number of virtual orbitals in spin basis.
- Returns:
Epq hybrid operator.
- slowquant.unitary_coupled_cluster.operator_hybrid.expectation_value_hybrid(bra: StateVector, hybridop: OperatorHybrid, ket: StateVector, use_csr: int = 10) float
Calculate expectation value of hybrid operator.
- Parameters:
bra – Bra state-vector.
hybridop – Hybrid operator.
ket – Ket state-vector.
use_csr – Size when to use sparse matrices.
- Returns:
Expectation value of hybrid operator.
- slowquant.unitary_coupled_cluster.operator_hybrid.expectation_value_hybrid_flow(state_vec: StateVector, operators: list[OperatorHybrid], ref_vec: StateVector) float
Calculate expectation value of operator.
- Parameters:
state_vec – Bra state vector.
operators – List of operators.
ref_vec – Ket state vector.
- Returns:
Expectation value of operator.
- slowquant.unitary_coupled_cluster.operator_hybrid.expectation_value_hybrid_flow_commutator(state_vec: StateVector, A: OperatorHybrid, B: OperatorHybrid, ref_vec: StateVector) float
Calculate expectation value of commutator.
\[E = \left<n\left|\left[A,B\right]\right|m\right>\]- Parameters:
state_vec – Bra state vector.
A – First operator in commutator.
B – Second operator in commutator.
ref_vec – Ket state vector.
- Returns:
Expectation value of commutator.
- slowquant.unitary_coupled_cluster.operator_hybrid.expectation_value_hybrid_flow_double_commutator(state_vec: StateVector, A: OperatorHybrid, B: OperatorHybrid, C: OperatorHybrid, ref_vec: StateVector) float
Calculate expectation value of double commutator.
\[E = \left<n\left|\left[A,\left[B,C\right]\right]\right|m\right>\]- Parameters:
state_vec – Bra state vector.
A – First operator in commutator.
B – Second operator in commutator.
C – Third operator in commutator.
ref_vec – Ket state vector.
- Returns:
Expectation value of double commutator.
- slowquant.unitary_coupled_cluster.operator_hybrid.hamiltonian_hybrid_0i_0a(h_mo: ndarray, g_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorHybrid
Get energy Hamiltonian operator.
- Parameters:
h_mo – One-electron Hamiltonian integrals in MO.
g_mo – Two-electron Hamiltonian integrals in MO.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
Energy Hamilonian Pauli operator.
- slowquant.unitary_coupled_cluster.operator_hybrid.hamiltonian_hybrid_1i_1a(h_mo: ndarray, g_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorHybrid
Get Hamiltonian operator that works together with an extra inactive and an extra virtual index.
- Parameters:
h_mo – One-electron Hamiltonian integrals in MO.
g_mo – Two-electron Hamiltonian integrals in MO.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
Modified Hamilonian Pauli operator.
- slowquant.unitary_coupled_cluster.operator_hybrid.hamiltonian_hybrid_2i_2a(h_mo: ndarray, g_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorHybrid
Get Hamiltonian operator that works together with two extra inactive and two extra virtual index.
- Parameters:
h_mo – One-electron Hamiltonian integrals in MO.
g_mo – Two-electron Hamiltonian integrals in MO.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
Modified Hamilonian Pauli operator.
- slowquant.unitary_coupled_cluster.operator_hybrid.make_projection_operator(state_vector: StateVector, use_csr: int = 10) OperatorHybrid
Create a projection operator, \(|0><0|\), from a state vector.
- Parameters:
state_vector – State vector class.
- Returns:
Projection operator in hybrid form.
- slowquant.unitary_coupled_cluster.operator_hybrid.one_elec_op_hybrid_0i_0a(ints_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorHybrid
Create one-electron operator that makes no changes in the inactive and virtual orbitals.
- Parameters:
ints_mo – One-electron integrals for operator in MO basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
One-electron operator for active-space.
- slowquant.unitary_coupled_cluster.operator_hybrid.one_elec_op_hybrid_1i_1a(ints_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorHybrid
Create one-electron operator that makes no changes in the inactive and virtual orbitals.
- Parameters:
ints_mo – One-electron integrals for operator in MO basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
One-electron operator for active-space.
- slowquant.unitary_coupled_cluster.operator_matrix.a_op_spin_matrix(idx: int, dagger: bool, number_spin_orbitals: int, use_csr: int = 10) ndarray | csr_matrix
Get matrix representation of fermionic operator.
This is the matrix form that depends on number of electrons i.e.:
\[Z x Z x .. x a x .. I x I\]- Parameters:
idx – Spin orbital index.
dagger – Creation or annihilation operator.
number_spin_orbitals – Total number of spin orbitals.
- Returns:
Matrix representation of ferminonic annihilation or creation operator.
- slowquant.unitary_coupled_cluster.operator_matrix.epq_matrix(p: int, q: int, num_spin_orbs: int, use_csr: int = 10) ndarray | csr_matrix
Contruct Epq operator.
- Parameters:
p – Orbital index.
q – Orbital index.
num_spin_orbs – Number of spin orbitals.
use_csr – Size when to use sparse matrices.
- Returns:
Epq operator in matrix form.
- class slowquant.unitary_coupled_cluster.operator_pauli.OperatorPauli(operator: dict[str, complex])
Initialize Pauli operator.
- Parameters:
operator – Pauli operator in dictionary form.
- property dagger: OperatorPauli
Do complex conjugate of Pauli operator.
- Returns:
New Pauli operator.
- eval_operators(state_vector: StateVector) dict[str, float]
Evalate operator per term.
- Parameters:
state_vector – Bra and Ket state-vector.
- Returns:
Expectation value of all terms in Pauli operator.
- make_folded_operator(num_inactive_spin_orbs: int, num_virtual_spin_orbs: int) OperatorPauli
Make a folded version of the operator.
A folded operator means that the inactive and virtual part is evaluted. This type of operator should not be used with operators that modify the inactive and virtual space.
- Parameters:
num_inactive_spin_orbs – Number of inactive orbitals.
num_virtual_spin_orbs – Number of virtual orbitals.
- Returns:
Folded operator.
- matrix_form(use_csr: int = 10, is_real: bool = False) ndarray | csr_matrix
Get matrix form of operator.
- Parameters:
use_csr – Size for when to use sparse matrices.
is_real – Only return real part of matrix.
- Returns:
Pauli operator in matrix form.
- screen_terms(max_xy_inactive: int, max_xy_virtual: int, num_inactive_spin_orbs: int, num_virtual_spin_orbs) OperatorPauli
Remove terms from the operator that has too many X or Y Pauli operators.
If it is known that a maximum number of Pauli operators can be changed before the expectation value of the operator is taken. Then terms with too many X and Y operators can be removed because they will always evaluate to zero.
- Parameters:
max_xy_inactive – Maximum number of X and Y Pauli operators in the inactive orbitals.
max_xy_virtual – Maximum number of X and Y Pauli operators in the virtual orbitals.
num_inactive_spin_orbs – Number of inactive orbitals.
num_virtual_spin_orbs – Number of virtual orbitals.
- Returns:
Screened Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.a_pauli(spinless_idx: int, spin: str, dagger: bool, num_spin_orbs: int) OperatorPauli
Annihilation operator.
- Parameters:
spinless_idx – Spatial orbital index.
spin – alpha or beta spin.
dagger – If complex conjugated.
num_spin_orbs – Number of spin orbitals.
- Returns:
Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.a_spin_pauli(idx: int, dagger: bool, num_spin_orbs: int) OperatorPauli
Annihilation operator with spin orbital index.
- Parameters:
idx – Spin orbital index.
dagger – If complex conjugated.
num_spin_orbs – Number of spin orbitals.
- Returns:
Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.commutator_pauli(A: OperatorPauli, B: OperatorPauli) OperatorPauli
Calculate commutator of two Pauli operators.
- Parameters:
A – Pauli operator.
B – Pauli operator.
- Returns:
New Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.epq_pauli(p: int, q: int, num_spin_orbs: int) OperatorPauli
Get Epq operator.
- Parameters:
p – Orbital index.
q – Orbital index.
num_spin_orbs – Number of spin orbitals.
- Returns:
Epq Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.epqrs_pauli(p: int, q: int, r: int, s: int, num_spin_orbs: int) OperatorPauli
Get epqrs operator.
- Parameters:
p – Orbital index.
q – Orbital index.
r – Orbital index.
s – Orbital index.
num_spin_orbs – Number of spin orbitals.
- Returns:
epqrs Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.expectation_value_pauli(bra: StateVector, pauliop: OperatorPauli, ket: StateVector, use_csr: int = 10) float
Calculate expectation value of Pauli operator.
- Parameters:
bra – Bra state-vector.
pauliop – Pauli operator.
ket – Ket state-vector.
use_csr – Size for when to use sparse matrices.
- Returns:
Expectation value of Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.hamiltonian_pauli(h_mo: ndarray, g_mo: ndarray, num_orbs: int) OperatorPauli
Get full Hamiltonian operator.
- Parameters:
h_mo – One-electron Hamiltonian integrals in MO.
g_mo – Two-electron Hamiltonian integrals in MO.
num_orbs – Number of spatial orbitals.
- Returns:
Full Hamilonian Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.hamiltonian_pauli_0i_0a(h_mo: ndarray, g_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorPauli
Get energy Hamiltonian operator.
- Parameters:
h_mo – One-electron Hamiltonian integrals in MO.
g_mo – Two-electron Hamiltonian integrals in MO.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
Energy Hamilonian Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.hamiltonian_pauli_1i_1a(h_mo: ndarray, g_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorPauli
Get Hamiltonian operator that works together with an extra inactive and an extra virtual index.
- Parameters:
h_mo – One-electron Hamiltonian integrals in MO.
g_mo – Two-electron Hamiltonian integrals in MO.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
Modified Hamilonian Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.hamiltonian_pauli_2i_2a(h_mo: ndarray, g_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorPauli
Get Hamiltonian operator that works together with two extra inactive and two extra virtual index.
- Parameters:
h_mo – One-electron Hamiltonian integrals in MO.
g_mo – Two-electron Hamiltonian integrals in MO.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
Modified Hamilonian Pauli operator.
- slowquant.unitary_coupled_cluster.operator_pauli.one_elec_op_pauli_0i_0a(ints_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorPauli
Create one-electron operator that makes no changes in the inactive and virtual orbitals.
- Parameters:
ints_mo – One-electron integrals for operator in MO basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
One-electron operator for active-space.
- slowquant.unitary_coupled_cluster.operator_pauli.one_elec_op_pauli_1i_1a(ints_mo: ndarray, num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) OperatorPauli
Create one-electron operator that makes up to one change in the inactive and virtual orbitals.
- Parameters:
ints_mo – One-electron integrals for operator in MO basis.
num_inactive_orbs – Number of inactive orbitals in spatial basis.
num_active_orbs – Number of active orbitals in spatial basis.
num_virtual_orbs – Number of virtual orbitals in spatial basis.
- Returns:
Modified one-electron operator.
- class slowquant.unitary_coupled_cluster.util.ThetaPicker(active_occ_spin_idx: Sequence[int], active_unocc_spin_idx: Sequence[int], is_spin_conserving: bool = False)
Initialize helper class to iterate over active space parameters.
- Parameters:
active_occ_spin_idx – Spin index of strongly occupied orbitals.
active_unocc_spin_idx – Spin index of weakly occupied orbitals.
is_spin_conserving – Generate spin conserving operators.
- get_t1_generator(num_spin_orbs: int) Generator[tuple[int, int, int, OperatorPauli], None, None]
Get generate over T1 operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T1 operator generator.
- get_t1_generator_sa(num_spin_orbs: int) Generator[tuple[int, int, int, OperatorPauli], None, None]
Get generate over T1 spin-adapted operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T1 operator generator.
- get_t1_generator_sa_matrix(num_spin_orbs: int, use_csr: int = 10) Generator[tuple[int, int, int, OperatorPauli], None, None]
Get generate over T1 spin-adapted operators in matrix form.
- Parameters:
num_spin_orbs – Number of spin orbitals.
use_csr – Orbital limit for which sparse matrices will be used.
- Returns:
T1 operator generator.
- get_t2_generator(num_spin_orbs: int) Generator[tuple[int, int, int, int, int, OperatorPauli], None, None]
Get generate over T2 operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T2 operator generator.
- get_t2_generator_sa(num_spin_orbs: int) Generator[tuple[int, int, int, int, int, OperatorPauli], None, None]
Get generate over T2 spin-adapted operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T2 operator generator.
- get_t2_generator_sa_matrix(num_spin_orbs: int, use_csr: int = 10) Generator[tuple[int, int, int, int, int, OperatorPauli], None, None]
Get generate over T2 spin-adapted operators in matrix form.
- Parameters:
num_spin_orbs – Number of spin orbitals.
use_csr – Orbital limit for which sparse matrices will be used.
- Returns:
T2 operator generator.
- get_t3_generator(num_spin_orbs: int) Generator[tuple[int, int, int, int, int, int, int, OperatorPauli], None, None]
Get generate over T3 operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T3 operator generator.
- get_t4_generator(num_spin_orbs: int) Generator[tuple[int, int, int, int, int, int, int, int, int, OperatorPauli], None, None]
Get generate over T4 operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T4 operator generator.
- get_t5_generator(num_spin_orbs: int) Generator[tuple[int, int, int, int, int, int, int, int, int, int, int, OperatorPauli], None, None]
Get generate over T5 operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T5 operator generator.
- get_t6_generator(num_spin_orbs: int) Generator[tuple[int, int, int, int, int, int, int, int, int, int, int, int, int, OperatorPauli], None, None]
Get generate over T6 operators.
- Parameters:
num_spin_orbs – Number of spin orbitals.
- Returns:
T6 operator generator.
- slowquant.unitary_coupled_cluster.util.construct_integral_trans_mat(c_orthonormal: ndarray, kappa: Sequence[float], kappa_idx: Sequence[Sequence[int]]) ndarray
Contruct orbital transformation matrix.
- Parameters:
c_orthonormal – Initial orbital coefficients.
kappa – Orbital rotation parameters.
kappa_idx – Non-redundant orbital rotation parameters indices.
- Returns:
Orbital transformation matrix.
- slowquant.unitary_coupled_cluster.util.construct_ucc_u(num_spin_orbs: int, theta: Sequence[float], theta_picker: ThetaPicker, excitations: str, allowed_states: ndarray | None = None, use_csr: int = 10) ndarray
Contruct unitary transformation matrix.
- Parameters:
num_spin_orbs – Number of spin orbitals.
theta – Active-space parameters. Ordered as (S, D, T, …).
theta_picker – Helper class to pick the parameters in the right order.
excitations – Excitation orders to include.
allowed_states – Allowed states to consider in the state-vector.
use_csr – Use sparse matrices after n spin orbitals.
- Returns:
Unitary transformation matrix.
- slowquant.unitary_coupled_cluster.util.iterate_t1(active_occ_spin_idx: list[int], active_unocc_spin_idx: list[int], num_spin_orbs: int, is_spin_conserving: bool) Generator[tuple[int, int, int, OperatorPauli], None, None]
Iterate over T1 operators.
- Parameters:
active_occ_idx – Spin indices of strongly occupied orbitals.
active_unocc_idx – Spin indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
is_spin_conserving – Make spin conserving operators.
- Returns:
T1 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t1_sa(active_occ_idx: Sequence[int], active_unocc_idx: Sequence[int], num_spin_orbs: int) Generator[tuple[int, int, int, OperatorPauli], None, None]
Iterate over T1 spin-adapted operators.
- Parameters:
active_occ_idx – Indices of strongly occupied orbitals.
active_unocc_idx – Indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
- Returns:
T1 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t1_sa_matrix(active_occ_idx: Sequence[int], active_unocc_idx: Sequence[int], num_spin_orbs: int, use_csr: int) Generator[tuple[int, int, int, OperatorPauli], None, None]
Iterate over T1 spin-adapted operators in matrix form.
- Parameters:
active_occ_idx – Indices of strongly occupied orbitals.
active_unocc_idx – Indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
use_csr – Use sparse matrices.
- Returns:
T1 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t2(active_occ_spin_idx: list[int], active_unocc_spin_idx: list[int], num_spin_orbs: int, is_spin_conserving: bool) Generator[tuple[int, int, int, int, int, OperatorPauli], None, None]
Iterate over T2 operators.
- Parameters:
active_occ_idx – Spin indices of strongly occupied orbitals.
active_unocc_idx – Spin indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
is_spin_conserving – Make spin conserving operators.
- Returns:
T2 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t2_sa(active_occ_idx: Sequence[int], active_unocc_idx: Sequence[int], num_spin_orbs: int) Generator[tuple[int, int, int, int, int, OperatorPauli], None, None]
Iterate over T2 spin-adapted operators.
- Parameters:
active_occ_idx – Indices of strongly occupied orbitals.
active_unocc_idx – Indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
- Returns:
T2 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t2_sa_matrix(active_occ_idx: Sequence[int], active_unocc_idx: Sequence[int], num_spin_orbs: int, use_csr: int) Generator[tuple[int, int, int, int, int, OperatorPauli], None, None]
Iterate over T2 spin-adapted operators in matrix form.
- Parameters:
active_occ_idx – Indices of strongly occupied orbitals.
active_unocc_idx – Indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
use_csr – Use sparse matrices.
- Returns:
T2 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t3(active_occ_spin_idx: list[int], active_unocc_spin_idx: list[int], num_spin_orbs: int, is_spin_conserving: bool) Generator[tuple[int, int, int, int, int, int, int, OperatorPauli], None, None]
Iterate over T3 operators.
- Parameters:
active_occ_idx – Spin indices of strongly occupied orbitals.
active_unocc_idx – Spin indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
is_spin_conserving – Make spin conserving operators.
- Returns:
T3 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t4(active_occ_spin_idx: list[int], active_unocc_spin_idx: list[int], num_spin_orbs: int, is_spin_conserving: bool) Generator[tuple[int, int, int, int, int, int, int, int, int, OperatorPauli], None, None]
Iterate over T4 operators.
- Parameters:
active_occ_idx – Spin indices of strongly occupied orbitals.
active_unocc_idx – Spin indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
is_spin_conserving – Make spin conserving operators.
- Returns:
T4 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t5(active_occ_spin_idx: list[int], active_unocc_spin_idx: list[int], num_spin_orbs: int, is_spin_conserving: bool) Generator[tuple[int, int, int, int, int, int, int, int, int, int, int, OperatorPauli], None, None]
Iterate over T5 operators.
- Parameters:
active_occ_idx – Spin indices of strongly occupied orbitals.
active_unocc_idx – Spin indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
is_spin_conserving – Make spin conserving operators.
- Returns:
T5 operator iteration.
- slowquant.unitary_coupled_cluster.util.iterate_t6(active_occ_spin_idx: list[int], active_unocc_spin_idx: list[int], num_spin_orbs: int, is_spin_conserving: bool) Generator[tuple[int, int, int, int, int, int, int, int, int, int, int, int, int, OperatorPauli], None, None]
Iterate over T6 operators.
- Parameters:
active_occ_idx – Spin indices of strongly occupied orbitals.
active_unocc_idx – Spin indices of weakly occupied orbitals.
num_spin_orbs – Number of spin orbitals.
is_spin_conserving – Make spin conserving operators.
- Returns:
T6 operator iteration.