Magnetic island only appear in non idea MHD condition, where the resistivity effect is considered.

Although we always talk about (m/n=3/1) mode, where m is poloidal mode number, n is toroidal mode number. However, in real condition, it is always difficult to imagine the structure of magnetic island. So we make a simulation of magnetic island structure here. Major reference of this simulation see this book [1]. In the future, the theory concerning magnetic island may also be discussed.

Simulation of magnetic island structure

Magnetic flux loop with n = 0 structure

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import numpy
import pylab
import sys

from mpl_toolkits.mplot3d import Axes3D
sys.path.append('../../')
from function_lib import plot_lib

pi = numpy.pi
pylab.close('all')

theta1 = numpy.linspace(0, 4.0*pi, 120)
# phi1 = numpy.linspace(0, 2*pi, 60)
phi1 = numpy.linspace(0, 4*pi, 120)
theta2, phi2 = numpy.meshgrid(theta1, phi1)

# define the long and short axis of the ellipese
a = 0.9
b = 0.3
R0 = 2

# prepare 2D mesh plot
a = 0.9
b = 0.3
R0 = 2
theta = numpy.linspace(0, 2*pi, 90)
phi = theta

RR = R0 + b*numpy.cos(theta2)
ZZ = a*numpy.sin(theta2)
XX = RR*numpy.cos(phi2)
YY = RR*numpy.sin(phi2)


fig2 = pylab.figure()
ax = Axes3D(fig2)
ax.plot_surface(XX, YY, ZZ, alpha = 0.3)
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
ax.set_title('toroidal loop')
plot_lib.axes_equal_3d(ax)
plot_lib.single_axis_paras(ax)
# add projection on the 3 direcitons
cset = ax.contour(XX, YY, ZZ, zdir='z', offset = -pi, cmap = 'coolwarm')
cset = ax.contour(XX, YY, ZZ, zdir='x', offset = -pi, cmap = 'coolwarm')
cset = ax.contour(XX, YY, ZZ, zdir='y', offset = 1*pi, cmap = 'coolwarm')

loop sturcture figure
Magnetic flux surface

Island with (m/n=3/1) structure

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# prepare tearing mode simulation
# prepare 2D mesh plot
a = 0.5
b = 0.3
R0 = 1.5
r0 = 0.6

# theta = numpy.linspace(0, 2.0*pi, 90)
# phi = theta
# toroidal turn is m
m = 3
# poloidal turn is n
n = 1
# safety factor
q = m*1.0/n

theta1 = numpy.linspace(0, n*1.95*pi, 100)
# phi1 = numpy.linspace(0, 2*pi, 60)
phi1 = numpy.linspace(0, m*2*pi, 100)
theta2, phi2 = numpy.meshgrid(theta1, phi1)


# define structure of magnetic island
RR = b*numpy.cos(theta2)
# define structure of magnetic field line
RR2 = R0 + r0*numpy.cos(theta2)

XX = RR*numpy.cos(phi2) + RR2*numpy.cos(q*theta2)
YY = RR*numpy.sin(phi2) + RR2*numpy.sin(q*theta2)
ZZ = a*numpy.sin(theta2) + r0*numpy.sin(theta2)


fig3 = pylab.figure()
ax = Axes3D(fig3)
ax.plot_surface(XX, YY, ZZ, alpha = 0.3)
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
ax.set_title('TM structure' + ', q=m/n='+str(q)+'='+str(m)+'/'+str(n))
plot_lib.axes_equal_3d(ax)
plot_lib.single_axis_paras(ax)

# add projection on the 3 directions
cset = ax.contour(XX, YY, ZZ, zdir='z', offset = -pi, cmap = 'coolwarm')
cset = ax.contour(XX, YY, ZZ, zdir='x', offset = -pi, cmap = 'coolwarm')
cset = ax.contour(XX, YY, ZZ, zdir='y', offset = 1*pi, cmap = 'coolwarm')

Island with m/n = 3/1 structure.
Magnetic island 3/1

The basic idea to plot this island structure is to first build an elliptic surface and then let this surface rotation in a helix structure of magnetic field line as safety factor defines.

q = m/n and (m,n) MHD mode[2]

Pay attention, for safety factor at the rational flux surface q=m/n=ΔϕΔθq = m/n = \frac{\Delta\phi}{\Delta\theta} , the m actually refers toroidal angle and n refers to poloidal angle. And the m/n = 3/1 MHD mode number defines m as poloidal mode number, n as toroidal mode number. This definition agrees with the definition of safety factor. The m/n = 3/1 mode is located at the q = m/n = 3/1 rational surface. Where the poloidal mode number m = 3 means the mode rotates 3 turns in toroidal direction, and toroidal mode number means the mode rotates 1 turn in poloidal direction. You can easily understand this by the poloidal cross section of this mode, m = 3 has 3*2 circles and which means the mode rotates 3 turns toroidally.
Cross section of magnetic islands
Fig(a) shows the poloidal mode number m at the poloidal cross section, where m = 3 means the islands structure rotate 3 turns toroidally, fig(b) shows the toroidal mode number n at the toroidal cross section, n = 1 means the islands structure rotate 1 turn poloidally.

Reference

[1] 谢华生,计算等离子体物理导论, 科学出版社,2018,北京。

[2] http://fusionwiki.ciemat.es/wiki/Rotational_transform