Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
lkdvos committed Dec 3, 2024
1 parent f2fe462 commit 397ad3c
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

# BlockTensorKit

Contains code for handling `BlockTensorMaps`, which are the [TensorKit.jl](https://github.com/jutho/TensorKit.jl) equivalent of BlockArrays.
*A Julia package for handling arrays-of-tensors, built on top of [TensorKit.jl](https://github.com/Jutho/TensorKit.jl)*

| **Documentation** | **Build Status** | **Coverage** | **Quality assurance** |
|:-----------------:|:----------------:|:------------:|:---------------------:|
Expand All @@ -16,7 +16,7 @@ Contains code for handling `BlockTensorMaps`, which are the [TensorKit.jl](https
[docs-stable-url]: https://lkdvos.github.io/BlockTensorKit.jl/stable

[docs-dev-img]: https://img.shields.io/badge/docs-dev-blue.svg
[docs-dev-url]: https://lkdvos.github.io/BlockTensorKit.jl/latest
[docs-dev-url]: https://lkdvos.github.io/BlockTensorKit.jl/dev

[ci-img]: https://github.com/lkdvos/BlockTensorKit.jl/actions/workflows/CI.yml/badge.svg
[ci-url]: https://github.com/lkdvos/BlockTensorKit.jl/actions/workflows/CI.yml
Expand All @@ -28,4 +28,16 @@ Contains code for handling `BlockTensorMaps`, which are the [TensorKit.jl](https
[aqua-url]: https://github.com/JuliaTesting/Aqua.jl


In the context of developing efficient tensor network algorithms, it can sometimes be convenient to write a tensor as a concatenation of other tensors, without explicitly merging them.
This is helpful whenever there are some guarantees on the resulting structure, such as sparsity patterns, triangular structures, or just as a way of keeping things organized.
One particular example, for which this package is primarily developed, is the construction of Matrix Product Operators (MPOs) that represent a sum of local operators, both on 1-dimensional geometries, but also for more general tree-like geometries.
In those cases, the combination of an upper-triangular blocked structure, as well as efficient usage of the sparsity, can not only greatly speed up runtime, but also facilitates rapid development of novel algorithms.

Mathematically speaking, we can consider these blocked tensors as acting on direct sums of vector spaces, where the indiviual vector spaces are supplied by TensorKit.
This leads to a very natural generalization of `AbstractTensorMap`, which is able to handle arbitrary symmetries.

BlockTensorKit.jl aims to provide a convenient interface to such blocked tensors.
In particular, the central types of this package (`<:AbstractBlockTensorMap`) could be describes as having both `AbstractArray`-like interfaces, which allow indexing as well as slicing operations, and `AbstractTensorMap`-like interfaces, allowing linear algebra routines, tensor contraction and tensor factorization.
The goal is to abstract away the need to deal with the inner structures of such tensors as much as possible, and have the ability to replace `AbstractTensorMap`s with `AbstractBlockTensorMap` without having to change the high-level code.

For examples and further information, please check out the [documentation](https://lkdvos.github.io/BlockTensorKit.jl/dev).

0 comments on commit 397ad3c

Please sign in to comment.