Popularity
6 Stars
Updated Last
2 Years Ago
Started In
September 2017

# VortexDistributions.jl Tools for creating and detecting quantum vortices in Bose-Einstein condensates.

• Fast, accurate vortex detection.
• Highly optimized version of the plaquette method (phase integral around each 4-point plaquette), with recursive interpolation to achieve a good balance between speed and accuracy.
• At present only tests for charge +/-1 in 2D
• Vortex creation
• Solves the 2D GPE problem for charge n on the infinite domain
• Interpolates vortex solution to density and phase imprint on arbitrary 2D domains
• Recursive cluster algorithm
• Vortex correlation functions

# Detection Example

```using VortexDistributions, Plots
gr(xlabel="x",ylabel="y",legend=false)

# make a simple 2D test field
Nx = 400; Ny = Nx
Lx = 200; Ly = Lx
x = LinRange(-Lx / 2, Ly / 2, Nx); y = x
psi0 = one.(x*y') |> complex

# doubly periodic boundary conditions
psi = Torus(psi0,x,y)

# make a point vortex
pv = PointVortex(30.0,70.3,-1)

# make a scalar GPE vortex with exact core
spv = ScalarVortex(pv)
vortex!(psi,spv)

# make some more random vortices
vort = rand_vortex(10,psi)
vortex!(psi,vort)```

We can recover the raw point vortex data from `PointVortex()` with

`vortex_array(pv)`

or from a `ScalarVortex()` with

`vortex_array(spv.vort)`

We can find all the vortices, removing edge vortices by default:

`vfound = findvortices(psi)`

For a single vortex example, we show have the phase at successive zoom levels with vortex location, `+`, and detected location, `o` (see examples): and density at successive zoom levels with vortex location and detected location: The benchmark gives (2018 MacBook Pro 2.33GHz Intel i5)

```using BenchmarkTools
julia> @btime vort = findvortices(psi)
4.037 ms (585 allocations: 3.84 MiB)```

#### Acknowledgements

Matthew Reeves, Thomas Billam, Michael Cawte