IMSRG.normal_ordering¶
Module defining normal ordering utilities for the IMSRG.
Functions
Computes the normal-ordered Hamiltonian with respect to a reference state |
|
|
Creates an array of occupation numbers indicating which states in the basis are occupied in the reference state |
|
Expands two-body matrix elements by applying antisymmetrization relations |
|
Expands three-body matrix elements by applying antisymmetrization relations |
|
Generates all antisymmetrized permutations of three indices with appropriate signs |
- IMSRG.normal_ordering.create_occupations(basis, ref)¶
Creates an array of occupation numbers indicating which states in the basis are occupied in the reference state
- Parameters:
basis (list[tuple[int, int, int, int, int]]) – List of all possible single-particle states in the basis
ref (list[tuple[int, int, int, int, int]]) – List of occupied single-particle states in the reference configuration
- Returns:
Array with 1.0 for occupied states and 0.0 for unoccupied states
- Return type:
numpy array
- IMSRG.normal_ordering.expand_h2(h2)¶
Expands two-body matrix elements by applying antisymmetrization relations
Generates all antisymmetrized matrix elements from the input two-body interactions using the relations <pq|rs> = -<qp|rs> = -<pq|sr> = <qp|sr>
- Parameters:
h2 (list[tuple[int, int, int, int, float]]) – List of two-body matrix elements in format [p, q, r, s, matrix_element]
- Returns:
Expanded list with all antisymmetrized two-body matrix elements
- Return type:
list[tuple[int, int, int, int, float]]
- IMSRG.normal_ordering.get_three_body_permutations(pp, qq, rr)¶
Generates all antisymmetrized permutations of three indices with appropriate signs
Computes the six permutations of three indices with the correct antisymmetrization factors for fermionic systems
- Parameters:
pp (int) – First index
qq (int) – Second index
rr (int) – Third index
- Returns:
List of permutations with format [index1, index2, index3, sign_factor]
- Return type:
list[tuple[int, int, int, float]]
- IMSRG.normal_ordering.expand_h3(h3)¶
Expands three-body matrix elements by applying antisymmetrization relations
Generates all antisymmetrized three-body matrix elements from the input interactions (with p < q < r and s < t < u) by applying permutations to both bra and ket indices with appropriate sign factors
- Parameters:
h3 (list[tuple[int, int, int, int, int, int, float]]) – List of three-body matrix elements in format [p, q, r, s, t, u, matrix_element]
- Returns:
Expanded list with all antisymmetrized three-body matrix elements
- Return type:
list[tuple[int, int, int, int, int, int, float]]
- IMSRG.normal_ordering.compute_normal_ordered_hamiltonian_no2b(occs, h1, h2, h3=None)¶
Computes the normal-ordered Hamiltonian with respect to a reference state
Transforms the Hamiltonian to normal-ordered form by summing over occupied states, yielding the reference-state energy, effective one-body (Fock) operator, and effective two-body interactions
- Parameters:
occs (numpy array) – Occupation numbers for each single-particle state (1.0 if occupied, 0.0 if empty)
h1 (list[tuple[int, int, float]]) – One-body matrix elements in format [p, q, matrix_element]
h2 (list[tuple[int, int, int, int, float]]) – Two-body matrix elements in format [p, q, r, s, matrix_element]
h3 (list[tuple[int, int, int, int, int, int, float]] | None) – Optional; three-body matrix elements in format [p, q, r, s, t, u, matrix_element]
- Returns:
Reference state energy, normal-ordered one-body operator (Fock matrix), normal-ordered two-body operator
- Return type:
float, numpy array, numpy array