Linewidths of spin waves in magnetic film#
In this example, we show how to calculate the line widths of the Damon-Eshbach modes in a 50 nm thick permalloy film. Since the line widths are calculated from the mode profiles, first, we calculate the linear spectrum.
[1]:
import tetrax as tx
import numpy as np
Dispersion calculation#
For the numerical calculations with TetraX, we create a permalloy film with 50 nm thickness and a line trace mesh along the thickness with 1 nm resolution. Remember: the normal direction is the \(y\) direction, and the propagation direction is the \(z\) direction. We also set permalloy material paremeters.
[2]:
T = 50
sample = tx.Sample(tx.geometries.layer.monolayer(thickness=T,cell_size=1))
sample.material = tx.materials.permalloy
The film is magnetized along the \(x\) direction, using an external magnetic field of 20 mT, thus the wave vector is perpendicular to the equilibrium magnetization.
[3]:
sample.mag = (1,0,0)
Bext = 20e-3
sample.external_field = (Bext,0,0)
The linewidths will be calculated from the mode profiles (more specifically, from the mode ellipticities) of a calculated eigenspectrum, see Ref. 2 or Ref. 3. By default, the mode profiles will always be saved. Nevertheless, if you set save_mode_profiles=False, line widths CANNOT can be calculated.
[4]:
spectrum_DE = tx.experiments.eigenmodes(sample, num_modes=3,num_cpus=-1, num_k=201, save_mode_profiles=True)
100%|█████████████████| 101/101 [00:02<00:00, 38.13it/s]
We can visualize the calculated dispersion easily using the built-in plot() methdod of the EigenResult.
[5]:
spectrum_DE.plot(n=[0,2], k=(0,40e6), fscale="G", kscale="u", renderer="notebook") # remove the renderer argument when running on your computer)
Linewidths#
Now, we can calculate the line widths. Calling plot_linewidths() method of the EigenResult spectrum_DE will automatically calculate them from the mode profiles. The avoided level crossing between the first and the second mode is also seen in the line widths.
[6]:
spectrum_DE.plot_linewidths(n=[0,2], k=(0,40e6), fscale="M", kscale="u",renderer="notebook") # remove the renderer argument when running on your computer)