Published February 8, 2023
| Version v0.3.0
Software
Open
GregDMeyer/dynamite: v0.3.0
Description
Added
- Dynamite now automatically checks that an operator is the same across all MPI ranks before building it (thus catching bugs due to e.g. different random number generator seeds on different ranks)
computations.eigsolve()
andcomputations.evolve()
now take amax_its
flag to adjust the solver's iteration limit- More descriptive error messages when solvers fail to converge
- Methods
.scale()
,.axpy()
,.scale_and_sum()
,+
,+=
,-
,-=
,*
,*=
for thestates.State
class, allowing states to be summed together and multiplied by scalars - More descriptive output when
str()
is called onstates.State
class, and LaTeX representation of states in Jupyter State.set_all_by_function()
which takes a user-supplied function and applies it to set each element of a state vectorState.set_uniform()
to set the state to a uniform superpositionOperator.infinity_norm()
- The
run_all_tests.py
script (intests/integration
) now has an optional flag--test-set <filename>
, which accepts a file listing tests to be run (instead of simply running all available tests) L
can now be passed to most subspaces as an argumentL
for theState
class can be inferred from the length of string passed to thestate
argument of the constructorL
for state class can now be set directly via theState.L
parameterXParity
subspace, which implements Parity but in the X basis and can be applied on top of other subspaces
Changed
- Order of arguments to
State
class changed - Moved
operators.load_from_file
into the Operator class, asoperators.Operator.load
- Moved
operators.from_bytes
into the Operator class, asoperators.Operator.from_bytes
- Switched to using
pyproject.toml
for package metadata and build configuration operators.Operator.scale()
no longer returns the operator it's called on, to avoid confusion about whether a new operator is being created- Initial product states can be specified with either the characters
U
andD
or0
and1
(previously onlyU
andD
were allowed) states.State.normalize()
now has no return value (previously returned the scale factor used for normalization)hash(subspace)
now is only the same for two subspaces ifsubspace.identical
would returnTrue
- Subspace methods
idx_to_state
andstate_to_idx
now return a scalar when passed a scalar, instead of returning a length-1 array - Removed
spinflip
argument fromSpinConserve
(replaced byXParity
subspace)
Fixed
- An exception is now raised if an unknown keyword argument is passed to
computations.evolve()
- Ensure compatibility when saving operators to disk using a 64 bit dynamite install but loading with a 32 bit install
- Ensure spin indices passed to operator constructors fall within valid range
computations.entanglement_entropy()
andcomputations.dm_entanglement_entropy()
sometimes returned bad values due to uninitialized memory being included in the computation- Imaginary time evolution is now possible (for entirely real Hamiltonians), when dynamite is built without complex numbers
- Edge case where matrix norm was incorrect for a few very specific operators, with SpinConserve + spinflip subspace
- Bug in shell matrix-vector multiply for certain operators when L>31
- Ensure backend gets recompiled if
PETSC_ARCH
changes hash(subspace)
is now much more performant for large Hilbert spaces- Incorrect memory usage reported by
benchmark.py
- Matrix-vector multiplication was incorrect for
Parity
subspace when operator did not conserve the subspace - Deprecated
np.float
type
Files
GregDMeyer/dynamite-v0.3.0.zip
Files
(214.1 kB)
Name | Size | Download all |
---|---|---|
md5:0f4a0d5f865d506f9ca56729dcb32c21
|
214.1 kB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/GregDMeyer/dynamite/tree/v0.3.0 (URL)