Skip to content

Releases: krivenko/libcommute

Release v0.7.2

12 Nov 14:05
Compare
Choose a tag to compare
  • Export namespaced CMake target libcommute::libcommute instead of plain libcommute.
  • Install CMake configuration files into ${CMAKE_INSTALL_PREFIX}/lib/cmake/libcommute, which is the recommended location.
  • Upgraded bundled Catch2 to version 2.13.9 (this fixes issue #2 a.k.a. catchorg/Catch2#2178).
  • Fixed compilation with clang/libc++ 15 (issue #5).
  • Added project citation information.

Release v0.7.1

17 Dec 11:21
Compare
Choose a tag to compare
  • New methods space_partition::subspace_basis() and space_partition::subspace_bases().
  • New methods sparse_state_vector::prune() (two overloads).
  • New example hubbard_holstein_1d and minor updates to the documentation.

Release v0.7.0

09 Oct 12:36
Compare
Choose a tag to compare
  • Added an implementation of the StateVector concept for some Eigen 3 types (vectors, vector segments,
    column-like matrix blocks and one-dimensional Eigen::Map views). The corresponding header file is loperator/state_vector_eigen3.hpp.
  • New classes n_fermion_sector_view and n_fermion_multisector_view that implement N-fermion (multi)sector views of a state vector. The classes are supplemented with free utility functions make_nf(m)s_view(), make_const_nf(m)s_view(), n_fermion_(multi)sector_size() and n_fermion_(multi)sector_basis_states().
  • New member typedef hilbert_space::index_types.
  • New method hilbert_space::has_algebra().
  • New method space_partition::find_connections().
  • Renamed the constexpr integer LIBCOMMUTE_MIN_USER_DEFINED_ALGEBRA_ID to min_user_defined_algebra_id so that it does not appear to be a macro.
  • In the 3-argument constructor of basis_mapper, change the type of the last argument N from int to unsigned int.
  • Removed methods basis_mapper::make_(const_)view_no_ref(). basis_mapper::make_(const_)view() will now return a non-reference view when supplied with a non lvalue-reference argument.
  • New CMake option STATIC_ANALYSIS. When enabled, the clang-tidy and cppcheck static analysis tools will be run on the C++ sources of unit tests and examples as part of build process.
  • Minor bugfixes in unit tests and improvements in coding style.
  • Reformatted C++ sources using clang-format and a style based on LLVM.

Release v0.6.1

30 Mar 12:30
Compare
Choose a tag to compare

Added a new method, hilbert_space::index().

Release v0.6

23 Mar 18:12
Compare
Choose a tag to compare

Minor corrections and additions to API required for pycommute.

Release v0.5

05 Oct 09:13
Compare
Choose a tag to compare

This is the first feature-complete, fully documented release.

libcommute is a C++11/14/17 template library without external dependencies. It is made of two major parts.

  • A Domain-Specific Language (DSL) designed to easily construct and manipulate polynomial expressions with quantum-mechanical operators, especially those used in the theory of many interacting fermions, bosons and spins. The goal here is to make expressions written in C++ code closely resemble the standard mathematical notation.

  • A fast representation of the quantum-mechanical operators that enables their action on finite-dimensional state vectors. This feature provides a basis for writing highly performant Exact Diagonalization (ED) codes without loss of flexibility.

libcommute is designed with extensibility in mind and can be easily adapted to work with new operator algebras, numeric types and matrix/vector algebra libraries (Eigen, Armadillo, etc).

Learn more about libcommute's capabilities at https://krivenko.github.io/libcommute/.