Skip to content

0/JeszenszkiBasis.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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!

License

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