JeszenszkiBasis.jl

Bosonic occupation basis.
Author 0
Popularity
2 Stars
Updated Last
4 Years Ago
Started In
November 2015

JeszenszkiBasis

Bosonic occupation basis using algorithms from Szabados et al., 2012 (preprint).

Tested with Julia 1.0.

Installation

``````pkg> add JeszenszkiBasis
``````

Examples

`julia> using JeszenszkiBasis`

2 sites, 3 particles:

```julia> basis = Szbasis(2, 3);
julia> join([to_str(v) for v in basis], ", ")
"3 0, 2 1, 1 2, 0 3"
julia> length(basis)
4```

4 sites, 4 particles:

```julia> basis = Szbasis(4, 4);
julia> v = basis[8];
julia> to_str(v)
"1 2 1 0"
julia> serial_num(basis, v)
8
julia> sub_serial_num(basis, v[1:2])
9```

3 sites, 3 particles, 2 maximum:

```julia> basis = RestrictedSzbasis(3, 3, 2);
julia> join([to_str(v) for v in basis], ", ")
"2 1 0, 1 2 0, 2 0 1, 1 1 1, 0 2 1, 1 0 2, 0 1 2"
julia> sz"2 1 0" in basis
true
julia> sz"3 0 0" in basis
false```

Caveats

• Indexing returns a view into the vector array:

```julia> basis = Szbasis(2, 1);
julia> join([to_str(v) for v in basis], ", ")
"1 0, 0 1"
julia> basis[1][1] = 11;
julia> join([to_str(v) for v in basis], ", ")
"11 0, 0 1"```

Testing

To run all the tests, activate the package before calling `test`:

``````pkg> activate .
(JeszenszkiBasis) pkg> test
``````

Acknowledgements

Thanks to Roger Melko for getting me up to speed and providing a reference implementation!

Provided under the terms of the MIT license. See `LICENSE` for more information.