You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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() and computations.evolve() now take a max_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 the states.State class, allowing states to be summed together and multiplied by scalars
More descriptive output when str() is called on states.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 vector
State.set_uniform() to set the state to a uniform superposition
Operator.infinity_norm()
The run_all_tests.py script (in tests/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 argument
L for the State class can be inferred from the length of string passed to the state argument of the constructor
L for state class can now be set directly via the State.L parameter
XParity 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, as operators.Operator.load
Moved operators.from_bytes into the Operator class, as operators.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 and D or 0 and 1 (previously only U and D 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 if subspace.identical would return True
Subspace methods idx_to_state and state_to_idx now return a scalar when passed a scalar, instead of returning a length-1 array
Removed spinflip argument from SpinConserve (replaced by XParity 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() and computations.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