API
Here are all the exported functions of Skyrmions3D.
Types
Skyrmions3D.Skyrmion — TypeSkyrmion(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
Set up the system
Skyrmions3D.set_lattice! — Functionset_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.
Skyrmions3D.set_dirichlet! — Functionset_dirichlet!(skyrmion::Skyrmion)Sets the skyrmion to have periodic boundary conditions.
Skyrmions3D.set_neumann! — Functionset_dirichlet!(skyrmion::Skyrmion)Sets the skyrmion to have Dirichlet boundary conditions.
Skyrmions3D.set_periodic! — Functionset_periodic!(skyrmion::Skyrmion)Sets the skyrmion to have periodic boundary conditions.
Skyrmions3D.set_mpi! — Functionset_mpi!(skyrmion::Skyrmion, mpi)Set the pion mass of skyrmion to mpi.
Skyrmions3D.set_physical! — Functionset_physical!(skyrmion::Skyrmion, is_physical; Fpi=Fpi, ee=ee)Sets skyrmion to use physical units with Fpi MeV and skyrme coupling ee, when is_physical is true. Also used to turn off physical units by setting is_physical=false
Skyrmions3D.set_Fpi! — Functionset_Fpi!(skyrmion::Skyrmion, Fpi)Sets the pion decay constant of skyrmion to Fpi.
Skyrmions3D.set_ee! — Functionset_ee!(skyrmion::Skyrmion, ee)Sets the Skyrme coupling constant of skyrmion to ee.
Create
Skyrmions3D.make_rational_map! — Functionmake_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 byXiTH = 0.0: isorotate by initial skyrmion byiTHi_n = 0.0: isorotate initial skyrmion aroundi_njTH = 0.0: isorotate by initial skyrmion byjTHj_n = 0.0: isorotate initial skyrmion aroundj_n
Skyrmions3D.make_RM_product! — Functionmake_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.
Skyrmions3D.make_ADHM! — Functionmake_ADHM!(skyrmion, L, M )Writes an ADHM skyrmion in to skyrmion. The ADHM data is given by L and M. L and M can be given by Bx4 and BxBx4 arrays or as 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)Skyrmions3D.product_approx! — Functionproduct_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]
Skyrmions3D.product_approx — Functionproduct_approx(skyrmion1,skyrmion2) -> product_skyrmionReturns the symmetrised product approximation of skyrmion1 and skyrmion2. The returned field is normalised.
See also [product_approx!]
Transform
Skyrmions3D.translate_sk! — Functiontranslate_sk!(skyrmion,X)Translates skyrmion by the 3-Vector X, e.g. X = [1.0, 0.0, 0.0]
See also [translate_sk]
Skyrmions3D.translate_sk — Functiontranslate_sk(skyrmion,X) -> translated_skyrmionReturns skyrmion translated by 3-Vector X, e.g. X = [1.0, 0.0, 0.0]
See also [translate_sk!]
Skyrmions3D.rotate_sk! — Functionrotate_sk!(skyrmion,θ,n)Rotates skyrmion by θ around the vector n. The given vector is automatically normalised.
See also [rotate_sk]
Skyrmions3D.rotate_sk — Functionrotate_sk(skyrmion,θ,n) -> rotated_skyrmionReturns skyrmion rotated by θ around the vector n. The given vector is automatically normalised.
See also [rotate_sk!]
Skyrmions3D.isorotate_sk! — Functionisorotate_sk!(skyrmion,θ,n)Isorotates skyrmion by θ around the vector n. The given vector is automatically normalised.
See also [isorotate_sk!]
Skyrmions3D.isorotate_sk — Functionisorotate_sk(skyrmion,θ,n) -> isorotated_skyrmionReturns skyrmion isorotated by θ around the vector n. The given vector is automatically normalised.
See also [isorotate_sk!]
Skyrmions3D.center_skyrmion! — Functioncenter_skyrmion(my_skyrmion)Translates skyrmion' so that the center of mass is(0,0,0)'.
Skyrmions3D.normer — Functionnormer(skyrmion)Returns normalised skyrmion.
See also [normer!]
Skyrmions3D.normer! — Functionnormer!(skyrmion)Normalises skyrmion.
See also [normer]
Probe
Skyrmions3D.overview — Functionoverview(skyrmion)Displays an overview of skyrmion's properties.
Skyrmions3D.Energy — FunctionEnergy(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.
Skyrmions3D.Baryon — FunctionBaryon(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.
Skyrmions3D.center_of_mass — Functioncenter_of_mass(skyrmion; density=false, moment=0)Compute the center of mass of skyrmion, based on the energy density.
Skyrmions3D.compute_current — Functioncompute_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.
Flow
Skyrmions3D.gradient_flow! — Functiongradient_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!]
Skyrmions3D.arrested_newton_flow! — Functionarrested_newton_flow!(skyrmion; skyrmion_dot, steps = n, tolerance = tol, dt=ls^2/80.0, frequency_of_checking_tolerance = 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!]
Visualise
Skyrmions3D.plot_overview — Functionplot_overview(skyrmion)Plots the pion fields and a baryon density of skyrmion.
Skyrmions3D.plot_baryon_density — Functionplot_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: [].
Skyrmions3D.interactive_flow — Functioninteractive_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'.