Initialize a Scipy sparse matrix in a specific symmetry sector.
openfermion.linalg.get_number_preserving_sparse_operator(
fermion_op,
num_qubits,
num_electrons,
spin_preserving=False,
reference_determinant=None,
excitation_level=None
)
This method initializes a Scipy sparse matrix from a FermionOperator,
explicitly working in a particular particle number sector. Optionally, it
can also restrict the space to contain only states with a particular Sz.
Finally, the Hilbert space can also be restricted to only those states
which are reachable by excitations up to a fixed rank from an initial
reference determinant.
Args |
fermion_op
|
FermionOperator
An instance of the FermionOperator class.
It should not contain terms which do not preserve particle number.
If spin_preserving is set to True it should also not contain terms
which do not preserve the Sz (it is assumed that the ordering of
the indices goes alpha, beta, alpha, beta, ...).
|
num_qubits
|
int
The total number of qubits / spin-orbitals in the
system.
|
num_electrons
|
int
The number of particles in the desired Hilbert
space.
|
spin_preserving
|
bool
Whether or not the constructed operator should
be defined in a space which has support only on states with the
same Sz value as the reference_determinant.
|
reference_determinant
|
list(bool
A list, whose length is equal to
num_qubits, which specifies which orbitals should be occupied in
the reference state. If spin_preserving is set to True then the Sz
value of this reference state determines the Sz value of the
symmetry sector in which the generated operator acts. If a value
for excitation_level is provided then the excitations are generated
with respect to the reference state. In any case, the ordering of
the states in the matrix representation of the operator depends on
reference_determinant and the state corresponding to
reference_determinant is the vector [1.0, 0.0, 0.0 ... 0.0]. Can be
set to None in order to take the first num_electrons orbitals to be
the occupied orbitals.
|
excitation_level
|
int
The number of excitations from the reference
state which should be included in the generated operator's matrix
representation. Can be set to None to include all levels of
excitation.
|
Returns |
sparse_op
|
scipy.sparse.csc_matrix
A sparse matrix representation of
fermion_op in the basis set by the arguments.
|