Making Skyrmions

Skyrmions in Skyrmions3D are represented by the Skyrmion struct. This contains all the information needed to reproduce the skyrmion: it's pion field, grid, pion mass etc. You can create a Skyrmion by passing some of these parameters, for example

 # A skyrmion on a 30^3 grid with lattice spacing 0.2
my_skyrmion = Skyrmion(30,0.2)

# A skyrmion on a 60x60x120 grid with lattice spacing 0.15
another_skyrmion = Skyrmion([60,60,120],[0.15,0.15,0.15]) 

# A skyrmion with pion mass 1 and periodic bounary conditions
massive_periodic_skyrmion = Skyrmion(
    [30,30,30],
    [0.2,0.2,0.2], 
    mpi=1.0, 
    boundary_conditions="periodic",
    Fpi=184, 
    ee=4.5,
)

Find out more about the Skyrmion constructor in the API.

By default the pion mass is set equal to (0,0,0,1). So we next want to add some field structure to it...

Rational Maps

A complex rational map is defined by two complex valued polynomials; we call these the numerator p(z) and the denominator q(z). Given these polynomials, we can create a skyrmion from the (rational map approximation)[https://arxiv.org/pdf/hep-th/9705151]. For example, the baryon number 3 tetrahedral skyrmion can be constructed as follows:

p3(z) = sqrt(3)*im*z^2 - 1
q3(z) = z*(z^2 - sqrt(3)*im)
make_rational_map!(my_skyrmion, p3, q3)

Note: By convention the "bang" character ! at the end of function means it is a modifiying function. So we are modifiying my_skyrmion, not creating a new skyrmion.

The make_rational_map! function tries to estimate the degree of the rational map, and tries to find a reasonable profile function for it. If this all worked, you should get a sensible output when you compute the energy of the skyrmion.

Energy(my_skyrmion)
>>> 4.106354608768089

Find out more about computing skyrmion properties in the (computing properties section)[].

The make_rational_map! function also accepts custom profile functions.

ADHM data

ADHM (https://arxiv.org/pdf/2110.15190)[skrmions] are skyrmions generated from ADHM data. The data consists of symmetric quaternionic matrices which satisfy a constraint. Most highly symmetric skyrmions can be represented by ADHM data. This package implements the very efficient (parallel transport)[https://arxiv.org/abs/2204.04032] algorithm from Derek Harland. We can make the baryon number 2 toroidal skyrmion as follows:

using Quaternions

B=2
adhm_data = [ Quaternion(0.0,0.0,0.0,0.0) for a in 1:B+1, b in 1:B]

lam = 1.0
adhm_data[1,1] = Quaternion(0.0,0.0,0.0,1.0)*lam
adhm_data[1,2] = Quaternion(0.0,0.0,1.0,0.0)*lam

adhm_data[2,1] = Quaternion(1.0,0.0,0.0,0.0)*lam/sqrt(2)
adhm_data[2,2] = Quaternion(0.0,1.0,0.0,0.0)*lam/sqrt(2)

adhm_data[3,1] = Quaternion(0.0,1.0,0.0,0.0)*lam/sqrt(2)
adhm_data[3,2] = Quaternion(-1.0,0.0,0.0,0.0)*lam/sqrt(2)

make_ADHM!(my_skyrmion, adhm_data)