You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* updating sectors part 1
* major doc restructuring and update
* fix setup block and do format after all
* Commit first batch of suggestions.
Co-authored-by: Boris De Vos <143942306+borisdevos@users.noreply.github.com>
* More suggestions committed
Co-authored-by: Boris De Vos <143942306+borisdevos@users.noreply.github.com>
* address review comments
* adjust header level
* update tensormanipulations section
* fix type restriction on tensorcat
* capitalise references
* leftover typos and cleaner sentences
* missed some citations
* reformat markdown lines
* Apply suggestions from code review [skip ci]
Co-authored-by: Boris De Vos <143942306+borisdevos@users.noreply.github.com>
* `AbstractTensorMap{T, S}`
---------
Co-authored-by: Boris De Vos <143942306+borisdevos@users.noreply.github.com>
Co-authored-by: Lukas Devos <ldevos98@gmail.com>
Co-authored-by: Boris De Vos <boris.devos@ugent.be>
Copy file name to clipboardExpand all lines: docs/src/index.md
+13-24Lines changed: 13 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,34 +8,23 @@ CurrentModule = TensorKit
8
8
9
9
## Package summary
10
10
11
-
TensorKit.jl aims to be a generic package for working with tensors as they appear throughout
12
-
the physical sciences. TensorKit implements a parametric type [`Tensor`](@ref) (which is
13
-
actually a specific case of the type [`TensorMap`](@ref)) and defines for these types a
14
-
number of vector space operations (scalar multiplication, addition, norms and inner
15
-
products), index operations (permutations) and linear algebra operations (multiplication,
16
-
factorizations). Finally, tensor contractions can be performed using the `@tensor` macro
17
-
from [TensorOperations.jl](https://github.com/QuantumKitHub/TensorOperations.jl).
18
-
19
-
Currently, most effort is oriented towards tensors as they appear in the context of quantum
20
-
many-body physics and in particular the field of tensor networks. Such tensors often have
21
-
large dimensions and take on a specific structure when symmetries are present. By employing
22
-
concepts from category theory, we can represent and manipulate tensors with a large
23
-
variety of symmetries, including abelian and non-abelian symmetries, fermionic statistics,
24
-
as well as generalized (a.k.a. non-invertible or anyonic) symmetries.
25
-
26
-
At the same time, TensorKit.jl focusses on computational efficiency and performance. The
27
-
underlying storage of a tensor's data can be any `DenseArray`. When the data is stored
28
-
in main memory (corresponding to `Array`), multiple CPUs can be leveraged as many
29
-
operations come with multithreaded implementations, either by distributing the different
30
-
blocks in case of a structured tensor (i.e. with symmetries) or by using multithreading
31
-
provided by the package [Strided.jl](https://github.com/Jutho/Strided.jl). Support for
32
-
storing and manipulating tensors on NVidia and AMD GPUs is currently being developed,
33
-
whereas support for distributed arrays is planned for the future.
11
+
TensorKit.jl aims to be a generic package for working with tensors as they appear throughout the physical sciences.
12
+
TensorKit implements a parametric type [`Tensor`](@ref) (which is actually a specific case of the type [`TensorMap`](@ref)) and defines for these types a number of vector space operations (scalar multiplication, addition, norms and inner products), index operations (permutations) and linear algebra operations (multiplication, factorizations).
13
+
Finally, tensor contractions can be performed using the `@tensor` macro from [TensorOperations.jl](https://github.com/QuantumKitHub/TensorOperations.jl).
14
+
15
+
Currently, most effort is oriented towards tensors as they appear in the context of quantum many-body physics and in particular the field of tensor networks.
16
+
Such tensors often have large dimensions and take on a specific structure when symmetries are present.
17
+
By employing concepts from category theory, we can represent and manipulate tensors with a large variety of symmetries, including abelian and non-abelian symmetries, fermionic statistics, as well as generalized (a.k.a. non-invertible or anyonic) symmetries.
18
+
19
+
At the same time, TensorKit.jl focusses on computational efficiency and performance.
20
+
The underlying storage of a tensor's data can be any `DenseArray`.
21
+
When the data is stored in main memory (corresponding to `Array`), multiple CPUs can be leveraged as many operations come with multithreaded implementations, either by distributing the different blocks in case of a structured tensor (i.e. with symmetries) or by using multithreading provided by the package [Strided.jl](https://github.com/Jutho/Strided.jl).
22
+
Support for storing and manipulating tensors on Nvidia and AMD GPUs is currently being developed, whereas support for distributed arrays is planned for the future.
Copy file name to clipboardExpand all lines: docs/src/lib/fusiontrees.md
+3-5Lines changed: 3 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,8 +31,7 @@ braid(f::FusionTree{I,N}, levels::NTuple{N,Int}, p::NTuple{N,Int}) where {I<:Sec
31
31
permute(f::FusionTree{I,N}, p::NTuple{N,Int}) where {I<:Sector,N}
32
32
```
33
33
34
-
These can be composed to implement elementary manipulations of fusion-splitting tree pairs,
35
-
according to the following methods
34
+
These can be composed to implement elementary manipulations of fusion-splitting tree pairs, according to the following methods
36
35
37
36
```julia
38
37
#TODO: add documentation for the following methods
@@ -44,9 +43,8 @@ TensorKit.cycleclockwise
44
43
TensorKit.cycleanticlockwise
45
44
```
46
45
47
-
Finally, these are used to define large manipulations of fusion-splitting tree pairs, which
48
-
are then used in the index manipulation of `AbstractTensorMap` objects. The following methods
49
-
defined on fusion splitting tree pairs have an associated definition for tensors.
46
+
Finally, these are used to define large manipulations of fusion-splitting tree pairs, which are then used in the index manipulation of `AbstractTensorMap` objects.
47
+
The following methods defined on fusion splitting tree pairs have an associated definition for tensors.
50
48
```@docs
51
49
repartition(::FusionTree{I,N₁}, ::FusionTree{I,N₂}, ::Int) where {I<:Sector,N₁,N₂}
52
50
transpose(::FusionTree{I}, ::FusionTree{I}, ::IndexTuple{N₁}, ::IndexTuple{N₂}) where {I<:Sector,N₁,N₂}
Several more concrete sector types can be found in other packages such as [SUNRepresentations.jl](https://github.com/QuantumKitHub/SUNRepresentations.jl), [CategoryData.jl](https://github.com/QuantumKitHub/CategoryData.jl), [QWignerSymbols.jl](https://github.com/lkdvos/QWignerSymbols.jl), ...:
42
39
43
40
Some of these types are parameterized by a type parameter that represents a group.
44
41
We therefore also provide a number of types to represent groups:
@@ -54,17 +51,15 @@ TensorKitSectors.Dihedral
54
51
TensorKitSectors.ProductGroup
55
52
```
56
53
57
-
The following types are used to characterise different properties of the different types
58
-
of sectors:
54
+
The following types are used to characterize different properties of the different types of sectors:
59
55
60
56
```@docs
61
57
FusionStyle
62
58
BraidingStyle
63
59
UnitStyle
64
60
```
65
61
66
-
Finally, the following auxiliary types are defined to facilitate the implementation
67
-
of some of the methods on sectors:
62
+
Finally, the following auxiliary types are defined to facilitate the implementation of some of the methods on sectors:
The following constants are defined to facilitate obtaining the type associated
77
-
with the group elements or the irreducible representations of a given group:
71
+
The following constants are defined to facilitate obtaining the type associated with the group elements or the irreducible representations of a given group:
78
72
79
73
```@docs
80
74
Irrep
@@ -83,8 +77,7 @@ GroupElement
83
77
84
78
## Methods for characterizing and manipulating `Sector` objects
85
79
86
-
The following methods can be used to obtain properties such as topological data
87
-
of sector objects, or to manipulate them or create related sectors:
80
+
The following methods can be used to obtain properties such as topological data of sector objects, or to manipulate them or create related sectors:
Copy file name to clipboardExpand all lines: docs/src/lib/spaces.md
+6-10Lines changed: 6 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,25 +21,22 @@ ProductSpace
21
21
HomSpace
22
22
```
23
23
24
-
together with the following specific type for encoding the inner product structure of
25
-
a space:
24
+
together with the following specific type for encoding the inner product structure of a space:
26
25
27
26
```@docs
28
27
InnerProductStyle
29
28
```
30
29
31
30
## Useful constants
32
31
33
-
The following constants are defined to easily create the concrete type of `GradedSpace`
34
-
associated with a given type of sector.
32
+
The following constants are defined to easily create the concrete type of `GradedSpace` associated with a given type of sector.
35
33
36
34
```@docs
37
35
Vect
38
36
Rep
39
37
```
40
38
41
-
In this respect, there are also a number of type aliases for the `GradedSpace` types
42
-
associated with the most common sectors, namely
39
+
In this respect, there are also a number of type aliases for the `GradedSpace` types associated with the most common sectors, namely
43
40
44
41
```julia
45
42
const ZNSpace{N} = Vect[ZNIrrep{N}]
@@ -110,16 +107,15 @@ isepimorphic
110
107
isisomorphic
111
108
```
112
109
113
-
Inserting trivial space factors or removing such factors for `ProductSpace` instances
114
-
can be done with the following methods.
110
+
Inserting trivial space factors or removing such factors for `ProductSpace` instances can be done with the following methods.
111
+
115
112
```@docs
116
113
insertleftunit(::ProductSpace, ::Val{i}) where {i}
117
114
insertrightunit(::ProductSpace, ::Val{i}) where {i}
118
115
removeunit(::ProductSpace, ::Val{i}) where {i}
119
116
```
120
117
121
-
There are also specific methods for `HomSpace` instances, that are used in determining
122
-
the resuling `HomSpace` after applying certain tensor operations.
118
+
There are also specific methods for `HomSpace` instances, that are used in determining the resulting `HomSpace` after applying certain tensor operations.
0 commit comments