API

Here are all the exported functions of Skyrmions3D.

Types

Skyrmions3D.SkyrmionType
Skyrmion(lp::Int64, ls::Float64)
Skyrmion([lpx,lpy,lpx], [lsx,lsy,lsz])

Create a skyrme field with lp lattice points and ls lattice spacing.

Optional arguments

  • mpi = 0.0: sets the pion mass for this Skyrme field
source
Skyrmions3D.GridType
Grid([lpx,lpy,lpx], [lsx,lsy,lsz], boundary_conditions::String)

Create a Grid field with lp lattice points and ls lattice spacing.

Optional arguments

  • boundary_conditions
source

Set up the system

Skyrmions3D.set_lattice!Function
set_lattice!(skyrmion, lp = [lpx, lpy, lpz], ls = [lsx, lsy, lsz])

Sets the underlying lattice to one with lpxxlpyxlpz points and lsxxlsyxlsz spacings, and reinterpolates skyrmion on the new grid.

source
Skyrmions3D.set_physical!Function
set_physical!(skyrmion::Skyrmion, is_physical; Fpi=Fpi, ee=ee)

Sets skyrmion to use physical units, when is_physical is true. Also used to turn off physical units by setting is_physical=false

source

Getters and checkers

Skyrmions3D.get_gridFunction
get_grid(skyrmion::Skyrmion)

Returns an array of 3D arrays [x, y, z], which can be used in integrals.

source
Skyrmions3D.get_fieldFunction
get_field(skyrmion::Skyrmion)

Returns an array of pion fields [π1, π2, π3, π0], which can be used in integrals.

source

Create

Skyrmions3D.make_rational_map!Function
make_rational_map!(skyrmion, prof, pfn, qfn; kwargs... )

Writes a rational map skyrmion in to skyrmion. The rational map is given by the polynomials R(z) = p(z)/q(z) and the profile f(r).

If no f is given, the function will find an OK approximation for the profile.

Optional arguments

  • X=[0.0,0.0,0.0]: translate the initial skyrmion by X
  • iTH = 0.0: isorotate by initial skyrmion by iTH
  • i_n = 0.0: isorotate initial skyrmion around i_n
  • jTH = 0.0: isorotate by initial skyrmion by jTH
  • j_n = 0.0: isorotate initial skyrmion around j_n
source
Skyrmions3D.make_RM_product!Function
make_RM_product!(skyrmion, X_list)

Makes a product approximation of many rational map skyrmions, determined through the list X_list. The final field is written into skyrmion.

The formatting of the list is as follow: X_list = [ data_1, data_2, data_3, ... ] where data_1 = [ p(z), q(z), f(r), X, θiso, n_iso, θrot, n_rot ]

See also [product]

Example of list

p1(z) = z; q1(z) = 1; f1(r) = 4*atan(exp(-r));
p2(z) = z^2; q2(z) = 1; f2(r) = 4*atan(exp(-0.7*r));
X_list = [ [ p1, q1, f1, [0.0,0.0,1.5], 0.0, [0.0,0.0,1.0], 0.0, [0.0,0.0,1.0] ], [ p2, q2, f2, [0.0,0.0,-1.5], pi, [1.0,0.0,0.0], 0.0, [0.0,0.0,1.0] ] ]

Technical details

The product is taken pairwise in order. E.g. for a list of 3 skyrmions, we first calculate the symmetrised product of the first and second skyrmions then calculate the symmtrised product with the third skyrmion. Hence the final solution is not symmetric under permutations.

source
Skyrmions3D.make_ADHM!Function
make_ADHM!(skyrmion, L, M )

Writes an ADHM skyrmion in to skyrmion. The ADHM data is given by L and M. L and M should be given by B and BxB arrays of Quaternions, from the GLMakie package.

Example of data

B=2

L = [ Quaternion(0.0,0.0,0.0,0.0) for a in 1:B ]
M = [ Quaternion(0.0,0.0,0.0,0.0) for a in 1:B, b in 1:B ]

L[1] = Quaternion(0.0, 0.0, 0.0, sqrt(2.0))
L[2] = Quaternion(0.0, 0.0, sqrt(2.0), 0.0)

M[1,1] = Quaternion(1.0, 0.0, 0.0, 0.0)
M[1,2] = Quaternion(0.0, 1.0, 0.0, 0.0)
M[2,1] = Quaternion(0.0, 1.0, 0.0, 0.0)
M[2,2] = Quaternion(-1.0, 0.0, 0.0, 0.0)
source
Skyrmions3D.product_approx!Function
product_approx!(skyrmion1,skyrmion2)

Makes the symmetrised product approximation of skyrmion1 and skyrmion2. The output is written in to skyrmion1. The returned field is normalised.

See also [product_approx]

source
Skyrmions3D.product_approxFunction
product_approx(skyrmion1,skyrmion2) -> product_skyrmion

Returns the symmetrised product approximation of skyrmion1 and skyrmion2. The returned field is normalised.

See also [product_approx!]

source

Transform

Skyrmions3D.translate_sk!Function
translate_sk!(skyrmion,X)

Translates skyrmion by the 3-Vector X, e.g. X = [1.0, 0.0, 0.0]

See also [translate_sk]

source
Skyrmions3D.translate_skFunction
translate_sk(skyrmion,X) -> translated_skyrmion

Returns skyrmion translated by 3-Vector X, e.g. X = [1.0, 0.0, 0.0]

See also [translate_sk!]

source
Skyrmions3D.rotate_sk!Function
rotate_sk!(skyrmion,theta,n)

Rotates skyrmion by theta around the vector n. The given vector is automatically normalised.

See also [rotate_sk]

source
Skyrmions3D.rotate_skFunction
rotate_sk(skyrmion,theta,n) -> rotated_skyrmion

Returns skyrmion rotated by theta around the vector n. The given vector is automatically normalised.

See also [rotate_sk!]

source
Skyrmions3D.isorotate_sk!Function
isorotate_sk!(skyrmion,theta,n)

Isorotates skyrmion by theta around the vector n. The given vector is automatically normalised.

See also [isorotate_sk!]

source
Skyrmions3D.isorotate_skFunction
isorotate_sk(skyrmion,theta,n) -> isorotated_skyrmion

Returns skyrmion isorotated by theta around the vector n. The given vector is automatically normalised.

See also [isorotate_sk!]

source

Probe

Skyrmions3D.EnergyFunction
Energy(skyrmion; density=false)

Compute energy of skyrmion.

Set 'density = true' to output the energy density and moment to n to calculate the nth moment of the energy density.

source
Skyrmions3D.BaryonFunction
Baryon(skyrmion; density=false)

Compute baryon number of skyrmion.

Set 'density = true' to output the baryon density and moment to n to calculate the nth moment of the baryon density.

source
Skyrmions3D.center_of_massFunction
center_of_mass(skyrmion; density=false, moment=0)

Compute the center of mass of skyrmion, based on the energy density.

source
Skyrmions3D.compute_currentFunction
compute_current(skyrmion; label="uMOI", indices=[0,0], density = false, moment=0)

Compute a variety of currents in the Skyrme model, based on a skyrmion.

You can calculate specific indices using e.g. indices = [1,2]. If indices = [0,0], the function will calculate all indices. If density = false, the function will return the integrated densities, while density = true it will return the densities.

The possible currents are (currently):

  • uMOI: the isospin moment of inertia.
  • wMOI: the mixed moment of inertia.
  • vMOI: the spin moment of inertia.
  • uAxial: the u-axial moment of inertia.
  • wAxial: the w-axial moment of inertia.
  • NoetherIso: the Noether vector current.
  • NoetherAxial: the Noether axial current.
  • stress: the stress tensor.
source
Skyrmions3D.rms_baryonFunction
rms_baryon(skyrmion)

Compute root mean square charge radius of a skyrmion, using the baryon density.

source

Flow

Skyrmions3D.gradient_flow!Function
gradient_flow!(skyrmion; steps = n, tolerance = tol, dt=ls^2/80.0, checks = freq, print_stuff = true)

Applies a gradient flow to skyrmion with timestep dt, either for n steps or until the error falls below tol. The error is checked every checks steps.

See also [newton_flow!, arrested_newton_flow!]

source
Skyrmions3D.newton_flow!Function
newton_flow!(skyrmion; skyrmion_dot, steps = n, dt=ls^2/80.0, frequency_of_printing = freq, print_stuff = true)

Applies a newton flow to skyrmion whose initial time derivative field is skyrmion_dot with timestep dt, either for n steps or until the error falls below tol. The energy is checked every freq steps.

See also [gradient_flow!, arrested_newton_flow!]

source
Skyrmions3D.arrested_newton_flow!Function
arrested_newton_flow!(skyrmion; skyrmion_dot, steps = n, tolerance = tol, dt=ls^2/80.0, checks = freq, print_stuff = true)

Applies an arrested Newton flow to skyrmion whose initial time derivative field is skyrmion_dot with timestep dt, either for n steps or until the error falls below tol. The error is checked every checks steps.

See also [gradient_flow!, newton_flow!]

source

Visualise

Skyrmions3D.plot_fieldFunction
plot_field!(skyrmion; component=3, iso_value=0.5 )

Plots an isosurface of constant value, skyrme_field[component] = iso_value

source
Skyrmions3D.plot_baryon_densityFunction
plot_baryon_density(skyrmion; iso_value = 0.5*(max(BD) - min(BD)), juggling = false, kwargs...)

Plots an isosurface of constant baryon density, with value iso_value, coloured to reveal the pion field structure, originally described in [].

Can use a juggling ball colouring scheme by setting juggling = true.

Optional argument

Can accept any arguments used in Axis3 from the Makie package. See more: [].

source
Skyrmions3D.interactive_flowFunction
interactive_flow(my_skyrmion; iso_value=2.0, kwargs...)

Initialises a interface, used for dynamics. Requires GLMakie to be active. Once activated, can interactively apply a gradient flow or arrested newton flow to the initial skyrme field `my_skyrmion'.

source