Cubic anisotropy#

  • this notebook can be used to compute the dispersion of films with cubic anisotropy

  • as an example, we choose Fe material parameters for a 20 nm thick film and compute the FMR frequency for anisotropy axes of two different orientation

  • NOTE: the notebook might run for several minutes, depending on the computer/notebook computational capabilities

[1]:
import tetrax as tx
import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt

We set Fe material parameters#

  • anisotropy axes: (1,0,0),(0,1,0),(0,0,1)

  • Note: you only have to set the first two axes, the third will be computed as a cross produc of them

[2]:
sample = tx.create_sample(name="Fe_film",geometry="layer")
sample.Msat = 1714e3
sample.Aex = 21e-12
sample.Kc1 = 48000
sample.v1Kc = (1,0,0)
sample.v2Kc = (0,1,0)
mesh = tx.geometries.monolayer_line_trace(20,lc=1)
sample.set_geom(mesh)
Setting geometry and calculating discretized differential operators on mesh.
Done.

Angular dependence of the f0 mode in the XZ plane#

[3]:
angle_ = np.linspace(0,360,181)
Bext = 300e-3
f0 = []
exp = tx.create_experimental_setup(sample,name="xz-plane")

for angle in angle_:
    sample.mag = tx.vectorfields.homogeneous(sample.xyz, angle, 0)
    exp.Bext = Bext*tx.vectorfields.homogeneous(sample.xyz, angle, 0)
    dispersion = exp.eigenmodes(num_cpus=-1,num_modes=2,k=0,save_modes=False,verbose=False)
    f0.append(dispersion.iloc[0]["f0 (GHz)"])

Plotting XZ-plane data#

[4]:
plt.rcParams["figure.figsize"] = (8,6.5)
plt.figure()
plt.plot(angle_,f0, ls="", marker="o",label="xz-plane")
plt.legend()
plt.show()

Changing anisotropy axes#

  • v1Kc = (0.707,0.707,0)

  • v2Kc = (0,0,1)

[5]:
angle = 45
sample.v1Kc = (np.sin(angle*np.pi/180),np.sin(angle*np.pi/180),0)
sample.v2Kc = (0,0,1)
[6]:
angle_ = np.linspace(0,360,181)
Bext = 300e-3
f0 = []
exp = tx.create_experimental_setup(sample,name="xz-plane")

for angle in angle_:
    sample.mag = tx.vectorfields.homogeneous(sample.xyz, angle, 0)
    exp.Bext = Bext*tx.vectorfields.homogeneous(sample.xyz, angle, 0)
    dispersion = exp.eigenmodes(num_cpus=-1,num_modes=2,k=0,save_modes=False,verbose=False)
    f0.append(dispersion.iloc[0]["f0 (GHz)"])
[7]:
plt.rcParams["figure.figsize"] = (8,6.5)
plt.figure()
plt.plot(angle_,f0, ls="", marker="o",label="xz-plane")
plt.legend()
plt.show()