All notable changes to this project will be documented in this file.
- Enable support for Python 3.11 and 3.12.
- Added methods
__copy__()
and__deepcopy__()
to a few mutable objects:expression.Monomial
,expression.Expression[R|C]
,loperator.HilbertSpace
andloperator.SpacePartition
.
- Enable support for Python 3.10.
- New methods
loperator.SpacePartition.subspace_basis()
andloperator.SpacePartition.subspace_bases()
. - Minor documentation updates.
- New function
loperator.make_matrix()
with three overloads. These wrapped C++ functions construct and return a matrix representation (2D NumPy array) of a linear operator acting (1) in a full Hilbert space, (2) in its subspace spanned by a given list of basis vectors or (3) between two subspaces of the Hilbert space. - New classes
loperator.NFermionSectorView(R|C)
. These objects areLOperator(R|C)
-compatible views that represent state vectors defined in an N-fermion subspace of a full Hilbert space. In addition to the view classes, there are two new utility functionsloperator.n_fermion_sector_size()
andloperator.n_fermion_sector_basis_states()
. - New classes
loperator.NFermionMultiSectorView(R|C)
. These objects areLOperator(R|C)
-compatible views that represent state vectors defined in an N-fermion multisector. A multisector is a set of all basis states, which haveN_1
particles within a subset of fermionic modes{S_1}
,N_2
particles within another subset{S_2}
and so on. There can be any number of individual pairs({S_i}, N_i)
(sectors contributing to the multisector) as long as all subsets{S_i}
are disjoint. In addition to the view classes, there are two new utility functionsloperator.n_fermion_multisector_size()
andloperator.n_fermion_multisector_basis_states()
. - New method
loperator.HilbertSpace.has_algebra()
. - New method
loperator.SpacePartition.find_connections()
.
- New method
expression.Indices.__getitem__()
. - New method
loperator.HilbertSpace.index()
. - CI: Tagged versions are now built into Docker images and pushed to Docker Hub.