Standard problem 3#
Problem specification#
This problem is to calculate a single domain limit of a cubic magnetic particle. This is the size \(L\) of equal energy for the so-called flower state (which one may also call a splayed state or a modified single-domain state) on the one hand, and the vortex or curling state on the other hand.
Geometry:
A cube with edge length, \(L\), expressed in units of the intrinsic length scale, \(l_\text{ex} = \sqrt{A/K_\text{m}}\), where \(K_\text{m}\) is a magnetostatic energy density, \(K_\text{m} = \frac{1}{2}\mu_{0}M_\text{s}^{2}\).
Material parameters:
uniaxial anisotropy \(K_\text{u}\) with \(K_\text{u} = 0.1 K_\text{m}\), and with the easy axis directed parallel to a principal axis of the cube (0, 0, 1),
exchange energy constant is \(A = \frac{1}{2}\mu_{0}M_\text{s}^{2}l_\text{ex}^{2}\).
More details about the standard problem 3 can be found in Ref. 1.
Simulation#
Firstly, we import all necessary modules and configure pyvista for static rendering.
[1]:
import matplotlib.pyplot as plt
import numpy as np
import pyvista as pv
from scipy import constants
import neuralmag as nm
pv.set_jupyter_backend("static")
2025-05-12 21:32:04 NeuralMag:INFO [NeuralMag] Version 0.9.1
The following two functions are used for initialising the system’s magnetisation [1].
[2]:
# Function for initiaising the flower state.
def m_init_flower(state):
return nm.VectorFunction(state).fill((0.0, 0.0, 1))
# Function for initialising the vortex state.
def m_init_vortex(state):
x, y, z = state.coordinates(spaces="nnn", numpy=True)
m = np.stack([np.ones_like(x) * 1e-9, z, -y], axis=-1)
norm = np.linalg.norm(m, axis=-1, keepdims=True)
return nm.VectorFunction(state, tensor=state.tensor(m / norm))
The following function is used for convenience. It takes two arguments:
\(L\) - the cube edge length in units of \(l_\text{ex}\), and
the function for initialising the system’s magnetization.
It returns the relaxed system object.
Please refer to other tutorials for more details on how to create system objects and drive them using specific drivers.
[3]:
def minimise_system_energy(L, m_init):
N = 10 # discretisation in one dimension
Ms = 8e5 # saturation magnetization
A = 13e-12 # exchange constant
Km = constants.mu_0 * Ms**2 / 2.0 # effective anisotropy
lex = (A / Km) ** 0.5 # exchange length
dx = L * lex / N
mesh = nm.Mesh((N, N, N), (dx, dx, dx), origin=(-L * lex / 2, -L * lex / 2, -L * lex / 2))
state = nm.State(mesh)
state.material.Ms = Ms
state.material.A = A
state.material.alpha = 0.5
state.material.Ku = 0.1 * Km
state.material.Ku_axis = [0, 0, 1]
state.m = m_init(state)
nm.ExchangeField().register(state, "exchange")
nm.UniaxialAnisotropyField().register(state, "aniso")
nm.DemagField().register(state, "demag")
nm.TotalField("exchange", "demag", "aniso").register(state)
# relax the system
llg = nm.LLGSolver(state)
llg.relax()
return state
Relaxed magnetization states#
Vortex state:
[4]:
# Minimize energy and write magnetization to file
state = minimise_system_energy(8, m_init_vortex)
state.write_vti(["m"], "standard-problem-3/vortex.vti")
# Plot the vortex state
mesh = pv.read("standard-problem-3/vortex.vti")
glyphs = mesh.glyph(orient="m", scale="m", factor=1e-8)
p = pv.Plotter()
p.add_mesh(glyphs, color="white", lighting=True, smooth_shading=True)
p.show()
2025-05-12 21:32:05 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.54864e-09 x 4.54864e-09 x 4.54864e-09)
2025-05-12 21:32:05 NeuralMag:INFO [NeuralMag] Backend set to 'jax'.
2025-05-12 21:32:05 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:32:05 NeuralMag:INFO [NeuralMag] Set default dtype to 'float32'.
2025-05-12 21:32:06 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:32:06 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:32:06 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:32:06 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:32:06 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:32:08 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:32:08 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:32:13 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 1.02965e-17 J
2025-05-12 21:32:18 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.81133e+10) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.90873e+10) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.54113e+10) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.00681e+10) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.73152e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.22228e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.9462e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.67268e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.53596e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.60657e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.8909e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.34957e+09) 1/s
2025-05-12 21:32:43 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.29453e+08) 1/s
2025-05-12 21:32:44 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.33289e+08) 1/s
2025-05-12 21:32:44 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.04823e+08) 1/s
2025-05-12 21:32:44 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.64987e+08) 1/s
2025-05-12 21:32:44 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.55131e+08) 1/s
2025-05-12 21:32:44 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.06878e+08) 1/s
2025-05-12 21:32:44 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.23066e+07) 1/s
2025-05-12 21:32:44 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 8.32036e-18 J
Flower state:
[5]:
# Minimize energy and write magnetization to file
state = minimise_system_energy(8, m_init_flower)
state.write_vti(["m"], "standard-problem-3/flower.vti")
# Plot the flower state
mesh = pv.read("standard-problem-3/flower.vti")
glyphs = mesh.glyph(orient="m", scale="m", factor=1e-8)
p = pv.Plotter()
p.add_mesh(glyphs, color="white", lighting=True, smooth_shading=True)
p.show()
2025-05-12 21:32:44 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.54864e-09 x 4.54864e-09 x 4.54864e-09)
2025-05-12 21:32:44 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:32:44 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:32:44 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:32:44 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:32:44 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:32:44 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:32:45 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:32:45 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:32:49 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 8.83041e-18 J
2025-05-12 21:32:55 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.03936e+10) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.84233e+10) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.05206e+10) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.18722e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.94088e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.12178e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.90824e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.77944e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.56041e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.27509e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.97409e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.65024e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.36882e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.10898e+09) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.86171e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.97051e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.42941e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.16065e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.17405e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.39154e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.78283e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.3194e+08) 1/s
2025-05-12 21:33:17 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.70341e+07) 1/s
2025-05-12 21:33:18 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.38251e+07) 1/s
2025-05-12 21:33:18 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 7.78493e-18 J
Energy crossing#
We can plot the energies of both vortex and flower states as a function of cube edge length \(L\). This will give us an idea where the state transition occurrs. We can achieve that by simply looping over the edge lengths \(L\) of interest, computing the energy of both vortex and flower states, and finally, plotting the energy dependence.
[6]:
vortex_energies, flower_energies = [], []
L_array = [8.3, 8.4, 8.5]
for L in L_array:
vortex = minimise_system_energy(L, m_init_vortex)
flower = minimise_system_energy(L, m_init_flower)
vortex_energies.append(nm.config.backend.to_numpy(vortex.E))
flower_energies.append(nm.config.backend.to_numpy(flower.E))
plt.figure(figsize=(8, 4))
plt.plot(L_array, vortex_energies, "o-", label="vortex")
plt.plot(L_array, flower_energies, "o-", label="flower")
plt.xlabel("L (lex)")
plt.ylabel("E (J)")
plt.grid()
plt.legend()
plt.show()
2025-05-12 21:33:18 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.71922e-09 x 4.71922e-09 x 4.71922e-09)
2025-05-12 21:33:18 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:33:18 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:33:18 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:33:18 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:33:18 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:33:18 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:33:19 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:33:19 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:33:23 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 1.06999e-17 J
2025-05-12 21:33:28 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.30015e+10) 1/s
2025-05-12 21:33:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.9308e+10) 1/s
2025-05-12 21:33:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.56454e+10) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.41397e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.21845e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.76544e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.62231e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.50214e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.48505e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.59433e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.89315e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.34796e+09) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.48519e+08) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.33826e+08) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.25062e+08) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.61878e+08) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.71537e+08) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.06448e+08) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.91726e+07) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.2628e+07) 1/s
2025-05-12 21:33:50 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 8.73784e-18 J
2025-05-12 21:33:50 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.71922e-09 x 4.71922e-09 x 4.71922e-09)
2025-05-12 21:33:50 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:33:50 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:33:50 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:33:50 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:33:50 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:33:50 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:33:51 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:33:51 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:33:54 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 9.86155e-18 J
2025-05-12 21:33:59 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.03936e+10) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.89867e+10) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.10452e+10) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.57906e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.0329e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.98763e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.7193e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.67746e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.54175e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.37421e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.1365e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.89758e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.63441e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.40621e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.18384e+09) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.93292e+08) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.29822e+08) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.79075e+08) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.66145e+08) 1/s
2025-05-12 21:34:19 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.53414e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.79936e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.97421e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.51853e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.96224e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.65374e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.29025e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.08285e+08) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.44397e+07) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.04062e+07) 1/s
2025-05-12 21:34:20 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 8.63997e-18 J
2025-05-12 21:34:20 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.77607e-09 x 4.77607e-09 x 4.77607e-09)
2025-05-12 21:34:20 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:34:20 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:34:20 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:34:20 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:34:20 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:34:20 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:34:21 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:34:21 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:34:25 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 1.08342e-17 J
2025-05-12 21:34:29 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.14203e+10) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.92933e+10) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.56931e+10) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.21578e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.05867e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.6427e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.50509e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.4543e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.46725e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.59704e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.90073e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.35859e+09) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.56711e+08) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.46312e+08) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.29015e+08) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.7386e+08) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.69473e+08) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.16707e+08) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.13235e+07) 1/s
2025-05-12 21:34:49 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.68511e+07) 1/s
2025-05-12 21:34:50 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.39425e+07) 1/s
2025-05-12 21:34:50 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 8.87384e-18 J
2025-05-12 21:34:50 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.77607e-09 x 4.77607e-09 x 4.77607e-09)
2025-05-12 21:34:50 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:34:50 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:34:50 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:34:50 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:34:50 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:34:50 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:34:50 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:34:50 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:34:55 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 1.02223e-17 J
2025-05-12 21:35:01 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.03936e+10) 1/s
2025-05-12 21:35:21 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.91704e+10) 1/s
2025-05-12 21:35:21 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.12226e+10) 1/s
2025-05-12 21:35:21 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.7173e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.07782e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.93694e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.64769e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.6126e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.51565e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.37037e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.16647e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.94579e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.70907e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.48334e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.27527e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.08039e+09) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.22251e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.63465e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.48558e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.32393e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.49203e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.70789e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.08855e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.58e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.10435e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.80956e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.44497e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.26576e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.02231e+08) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.81497e+07) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.311e+07) 1/s
2025-05-12 21:35:22 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 8.9376e-18 J
2025-05-12 21:35:22 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.83293e-09 x 4.83293e-09 x 4.83293e-09)
2025-05-12 21:35:22 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:35:22 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:35:22 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:35:22 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:35:22 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:35:22 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:35:23 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:35:23 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:35:28 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 1.09683e-17 J
2025-05-12 21:35:33 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.98955e+10) 1/s
2025-05-12 21:35:52 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.9238e+10) 1/s
2025-05-12 21:35:52 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.5725e+10) 1/s
2025-05-12 21:35:52 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.02636e+09) 1/s
2025-05-12 21:35:52 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.90489e+09) 1/s
2025-05-12 21:35:52 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.53405e+09) 1/s
2025-05-12 21:35:52 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.39013e+09) 1/s
2025-05-12 21:35:52 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.40322e+09) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.44702e+09) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.60254e+09) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.91165e+09) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.37411e+09) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.66269e+08) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.63123e+08) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.34536e+08) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.86811e+08) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.71532e+08) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.20681e+08) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 9.54353e+07) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.07538e+07) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.81469e+07) 1/s
2025-05-12 21:35:53 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 9.00833e-18 J
2025-05-12 21:35:53 NeuralMag:INFO [Mesh] 3D, 10 x 10 x 10 (size = 4.83293e-09 x 4.83293e-09 x 4.83293e-09)
2025-05-12 21:35:53 NeuralMag:INFO [NeuralMag] Set default device to 'TFRT_CPU_0'.
2025-05-12 21:35:53 NeuralMag:INFO [State] Running on device: TFRT_CPU_0 (dtype = float32, backend = jax)
2025-05-12 21:35:53 NeuralMag:INFO [ExchangeField] Register state methods (field: 'h_exchange', energy: 'E_exchange')
2025-05-12 21:35:53 NeuralMag:INFO [UniaxialAnisotropyField] Register state methods (field: 'h_aniso', energy: 'E_aniso')
2025-05-12 21:35:53 NeuralMag:INFO [DemagField] Register state methods (field: 'h_demag', energy: 'E_demag')
2025-05-12 21:35:53 NeuralMag:INFO [DemagField]: Set up demag tensor
2025-05-12 21:35:54 NeuralMag:INFO [TotalField] Register state methods (field: 'h', energy: 'E')
2025-05-12 21:35:54 NeuralMag:INFO [LLGSolverJAX] Initialize RHS function
2025-05-12 21:35:58 NeuralMag:INFO [LLGSolverJAX] Relaxation started, initial energy E = 1.05918e-17 J
2025-05-12 21:36:03 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.03936e+10) 1/s
2025-05-12 21:36:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.93521e+10) 1/s
2025-05-12 21:36:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.14005e+10) 1/s
2025-05-12 21:36:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.85682e+09) 1/s
2025-05-12 21:36:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.11792e+09) 1/s
2025-05-12 21:36:22 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.88741e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.56422e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.53336e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.47778e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.34745e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.18344e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.97603e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.77135e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.54804e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.36065e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.16277e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.01133e+09) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.5993e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.35021e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 6.2938e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 5.25306e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 4.54541e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.73035e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 3.22339e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.63616e+08) 1/s
2025-05-12 21:36:23 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 2.27931e+08) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.91246e+08) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.62225e+08) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.41037e+08) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.16063e+08) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 1.04816e+08) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 8.48769e+07) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation step (max dm/dt = 7.5759e+07) 1/s
2025-05-12 21:36:24 NeuralMag:INFO [LLGSolverJAX] Relaxation finished, final energy E = 9.2416e-18 J
From the plot, we can see that the energy crossing occurrs between \(8.3l_\text{ex}\) and \(8.5l_\text{ex}\).
References#
[1] µMAG Site Directory http://www.ctcms.nist.gov/~rdm/mumag.org.
This tutorial was adapted from Ubermag.