Releases: krivenko/libcommute
Release v0.7.2
- Export namespaced CMake target
libcommute::libcommute
instead of plainlibcommute
. - 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
- New methods
space_partition::subspace_basis()
andspace_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
- Added an implementation of the
StateVector
concept for some Eigen 3 types (vectors, vector segments,
column-like matrix blocks and one-dimensionalEigen::Map
views). The corresponding header file isloperator/state_vector_eigen3.hpp
. - New classes
n_fermion_sector_view
andn_fermion_multisector_view
that implement N-fermion (multi)sector views of a state vector. The classes are supplemented with free utility functionsmake_nf(m)s_view()
,make_const_nf(m)s_view()
,n_fermion_(multi)sector_size()
andn_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
integerLIBCOMMUTE_MIN_USER_DEFINED_ALGEBRA_ID
tomin_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 argumentN
fromint
tounsigned 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, theclang-tidy
andcppcheck
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 onLLVM
.
Release v0.6.1
Added a new method, hilbert_space::index()
.
Release v0.6
Minor corrections and additions to API required for pycommute.
Release v0.5
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/.