Skip to main content

Aleph - 0.31.1

๐Ÿš€ Highlightsโ€‹


โœจ New Featuresโ€‹

  • Introduced the Plotting module to create figures in Aleph for data analysis, including bar, line, scatter, and heatmap plots.
    • Supports legends, multiple series, multiple plots in the same figure, and a ton of customization options.
  • Functions for the computation of matrix elements and expectation values with MPS and MPO.
    • matrix_element(bra,operator,ket) to compute the matrix element โŸจฯ•โˆฃOโˆฃฯˆโŸฉ\bra{\phi} O \ket{\psi} of an operator.
    • expval(operator,ket) to compute the expected value โŸจฯˆโˆฃOโˆฃฯˆโŸฉ\bra{\psi} O\ket{\psi} of the operator.
  • Added accumulators for binning analysis of time series and markov chain data. Currently support accumulator("no_binning") and accumulator("binning"). The bin size can be set via accumulator("binning" ["bin_size" : 1024 ]).
  • Added a FourBody symbolic fermionic operator: ciโ€ cjโ€ ckclc^{\dag}_{i}c^{\dag}_j c_k c_l. An operator can be created via FourBody(i,j,k,l) where i,j,k,l are the sites where the operator acts.
  • Added a DoubleExcitation fermionic operator: ciโ€ cjโ€ ckcl+h.c.c^{\dag}_{i}c^{\dag}_j c_k c_l + h.c.. An operator can be created via DoubleExcitation(i,j,k,l) where i,j,k,l are the sites where the operator acts.
  • The array and matrix factories now accept array and matrix objects together with a type tag. For example: array(my_matrix, as_complex) will create a complex array from my_matrix even if it is of real type.
  • MPS compression routine. mps.compress(tol) to compress a MPS to specified error tolerance.
  • operator_function now supports both Hermitian and non-Hermitian matrices and operators. The appropriate Krylov method (Lanczos or Arnoldi) is automatically selected based on the input. The API can be summarized as:
    • operator_function(H, dim, fun(real){real}, ["is_real":true]) for real-valued functions and Hermitian operators. Note that the ["is_real":true] option is required to indicate that the function is real-valued.
    • operator_function(H, dim, fun(complex){complex}) for other Hermitian operators.
    • operator_function(H, dim, fun(complex, integer){complex}) for non-Hermitian operators. The integer argument stands for the order of the derivative of the function, which is required for non-Hermitian operators.
    • Any of the above can also be called with a matrix Hmat instead of an operator H and a dimension dim.
    • Any of the above also accepts an optional dictionary of options as last argument, e.g. ["krylov_dimension": 32].
  • The PhaseHop(angle,i,j) factory function has been added to create fermionic hopping operators with an associated phase factor: eiโ‹…angleciโ€ cj+h.c.e^{i \cdot angle} c^{\dag}_i c_j + \mathrm{h.c.}.

๐Ÿ› Fixesโ€‹

  • Assigning complex arrays or matrices to real arrays or matrices used to silently fail, it now raises an error.

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

  • Adds internal support for handling sparse matrix operations with free fermion objects.

  • Real arrays and matrices are not implicitly convertible to complex arrays and matrices anymore. An explicit conversion is now required using as_complex.

  • Cmake presets to help manage compilation with IDE/VScode.

    • Presets for qbitpp
    • Presets for chaiqpp
  • VScode devcontainer mount the user's .ssh for syncing with gitlab.

    • no further setup required for syncing git, if the user already has set his ssh keys in $HOME/.ssh

โš ๏ธ Breaking Changesโ€‹

  • operator_function API has changed to support both Hermitian and non-Hermitian operators; it now accepts an option map similar to that of iterative_eigensolver. See the New Features section for details.

๐Ÿงช Migration Notesโ€‹