Skip to main content

Aleph - 0.27.0

๐Ÿš€ Highlightsโ€‹

  • Added Model class which can be used to represent arbitrary lattice Hamiltonians and construct associated observables.
  • The function chebyshev_series_delta and operator_chebyshev_series can be used together with iterative_eigensolver to compute interior eigenvalues and eigenvectors of operators. This is particularly useful for large-scale problems where traditional matrix representations are infeasible.
  • Linear Algebra now has sparse matrices.
  • Tensor multithreaded operations.

โœจ New Featuresโ€‹

  • The matrix factory (which returns the matrix representation of an operator) now supports the as_sparsematrix type tag as an optional argument. This allows users to directly obtain a sparse matrix representation of an operator. Note that the type tag can be combined with other type tags such as as_real to specify the desired scalar type of the resulting sparse matrix (i.e. as_real | as_sparsematrix).
  • The Model class can be used to represent a Hamiltonian and observables in terms of lattice coordinates.
  • A new overload for operator_sum that takes an instance of Model and returns either a complex (default) or real OperatorSum depending on the type specifier (as_complex or as_real)
  • The chebyshev_series_delta function creates a Chebyshev series that approximate the delta function over a specified interval. This is useful for spectral filtering and other applications requiring delta function approximations.
  • The operator_chebyshev_series factory has been added to create operators based on Chebyshev series. This allows for efficient representation and manipulation of operators using Chebyshev polynomial expansions.
  • Added more count methods to Fbit that help in counting the number of occupied sites on subsets and linear cuts of the system.
  • Sparse matrices can be specified as a list of lists of numbers, similar to dense matrices but with the as_sparsematrix flag. One can also convert arrays and dense matrices directly to sparse matrices with the matrix factory. One can also create sparse matrices is by initializing them with the zeros, identity, uninitialized factory. Yet another way is to use insert which accepts three arguments: an array of row indices, an array of column indices, and an array of values. Lastly, one can of course use [] to extract elements or assign to them.
  • Sparse matrices support addition, subtraction, multiplication (including with dense matrices), transposition, and conversion to dense matrices.
  • Tensor multithreaded operations.
  • Set to the detected hardware concurrency by default.
  • The function set_tensor_threads(thread_number) can be invoked to control the thread count for tensor operations.
  • Aleph global's control will override the tensor threadcount whenever it is called.
  • Add extended for lists, an out-of-place extension of a list by an input list.
  • Add as_real variants for TimerDuration conversion methods: hours, microseconds, milliseconds, minutes, seconds to retrieve more precise values when needed.

๐Ÿ›  Improvementsโ€‹

  • Add operator multiplication between OperatorSum and scalars with mixed coefficient types, enabling operations; real * ComplexOperatorSum and complex * RealOperatorSum.

๐Ÿ› Fixesโ€‹

  • stdout is now forced into line-buffered mode when Aleph runs without a TTY, ensuring CI/job executions emit work-in-progress logs immediately.
  • time, benchmark_for and benchmark_for are now marked standalone, bringing the documentation to the Module Functions section.

โš™๏ธ Internal / Technical Changesโ€‹


โš ๏ธ Breaking Changesโ€‹

  • The Polynomial class eval method has been renamed to evaluate for improved clarity and consistency.
  • The Polynomial class evaluate method returns objects of the same type as the input argument. For example, if the input is a list, the output will also be a list.

๐Ÿงช Migration Notesโ€‹