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()