SpinWaveToolkit.SingleLayerSCcoupled
#
- class SpinWaveToolkit.SingleLayerSCcoupled(Bext, material, d, kxi=array([1.00000000e-12, 1.25628141e+05, 2.51256281e+05, 3.76884422e+05, 5.02512563e+05, 6.28140704e+05, 7.53768844e+05, 8.79396985e+05, 1.00502513e+06, 1.13065327e+06, 1.25628141e+06, 1.38190955e+06, 1.50753769e+06, 1.63316583e+06, 1.75879397e+06, 1.88442211e+06, 2.01005025e+06, 2.13567839e+06, 2.26130653e+06, 2.38693467e+06, 2.51256281e+06, 2.63819095e+06, 2.76381910e+06, 2.88944724e+06, 3.01507538e+06, 3.14070352e+06, 3.26633166e+06, 3.39195980e+06, 3.51758794e+06, 3.64321608e+06, 3.76884422e+06, 3.89447236e+06, 4.02010050e+06, 4.14572864e+06, 4.27135678e+06, 4.39698492e+06, 4.52261307e+06, 4.64824121e+06, 4.77386935e+06, 4.89949749e+06, 5.02512563e+06, 5.15075377e+06, 5.27638191e+06, 5.40201005e+06, 5.52763819e+06, 5.65326633e+06, 5.77889447e+06, 5.90452261e+06, 6.03015075e+06, 6.15577889e+06, 6.28140704e+06, 6.40703518e+06, 6.53266332e+06, 6.65829146e+06, 6.78391960e+06, 6.90954774e+06, 7.03517588e+06, 7.16080402e+06, 7.28643216e+06, 7.41206030e+06, 7.53768844e+06, 7.66331658e+06, 7.78894472e+06, 7.91457286e+06, 8.04020101e+06, 8.16582915e+06, 8.29145729e+06, 8.41708543e+06, 8.54271357e+06, 8.66834171e+06, 8.79396985e+06, 8.91959799e+06, 9.04522613e+06, 9.17085427e+06, 9.29648241e+06, 9.42211055e+06, 9.54773869e+06, 9.67336683e+06, 9.79899497e+06, 9.92462312e+06, 1.00502513e+07, 1.01758794e+07, 1.03015075e+07, 1.04271357e+07, 1.05527638e+07, 1.06783920e+07, 1.08040201e+07, 1.09296482e+07, 1.10552764e+07, 1.11809045e+07, 1.13065327e+07, 1.14321608e+07, 1.15577889e+07, 1.16834171e+07, 1.18090452e+07, 1.19346734e+07, 1.20603015e+07, 1.21859296e+07, 1.23115578e+07, 1.24371859e+07, 1.25628141e+07, 1.26884422e+07, 1.28140704e+07, 1.29396985e+07, 1.30653266e+07, 1.31909548e+07, 1.33165829e+07, 1.34422111e+07, 1.35678392e+07, 1.36934673e+07, 1.38190955e+07, 1.39447236e+07, 1.40703518e+07, 1.41959799e+07, 1.43216080e+07, 1.44472362e+07, 1.45728643e+07, 1.46984925e+07, 1.48241206e+07, 1.49497487e+07, 1.50753769e+07, 1.52010050e+07, 1.53266332e+07, 1.54522613e+07, 1.55778894e+07, 1.57035176e+07, 1.58291457e+07, 1.59547739e+07, 1.60804020e+07, 1.62060302e+07, 1.63316583e+07, 1.64572864e+07, 1.65829146e+07, 1.67085427e+07, 1.68341709e+07, 1.69597990e+07, 1.70854271e+07, 1.72110553e+07, 1.73366834e+07, 1.74623116e+07, 1.75879397e+07, 1.77135678e+07, 1.78391960e+07, 1.79648241e+07, 1.80904523e+07, 1.82160804e+07, 1.83417085e+07, 1.84673367e+07, 1.85929648e+07, 1.87185930e+07, 1.88442211e+07, 1.89698492e+07, 1.90954774e+07, 1.92211055e+07, 1.93467337e+07, 1.94723618e+07, 1.95979899e+07, 1.97236181e+07, 1.98492462e+07, 1.99748744e+07, 2.01005025e+07, 2.02261307e+07, 2.03517588e+07, 2.04773869e+07, 2.06030151e+07, 2.07286432e+07, 2.08542714e+07, 2.09798995e+07, 2.11055276e+07, 2.12311558e+07, 2.13567839e+07, 2.14824121e+07, 2.16080402e+07, 2.17336683e+07, 2.18592965e+07, 2.19849246e+07, 2.21105528e+07, 2.22361809e+07, 2.23618090e+07, 2.24874372e+07, 2.26130653e+07, 2.27386935e+07, 2.28643216e+07, 2.29899497e+07, 2.31155779e+07, 2.32412060e+07, 2.33668342e+07, 2.34924623e+07, 2.36180905e+07, 2.37437186e+07, 2.38693467e+07, 2.39949749e+07, 2.41206030e+07, 2.42462312e+07, 2.43718593e+07, 2.44974874e+07, 2.46231156e+07, 2.47487437e+07, 2.48743719e+07, 2.50000000e+07]), lam=1e-07)#
Compute spin wave characteristic in dependance to k-vector (wavenumber) such as frequency, group velocity, lifetime and propagation length.
This model describes the spin-wave behaviour in a thin ferromagnetic film in contact with a superconductor (neglecting any proximity effects).
The class uses the model of Zhou et al. from https://doi.org/10.1103/PhysRevB.110.L020404 slightly extended as described in this thesis https://www.vut.cz/en/students/final-thesis/detail/166558
Most parameters can be specified as vectors (1d numpy arrays) of the same shape. This functionality is not guaranteed.
Note: Right now only the DE mode is implemented (phi=pi/2, theta=pi/2) for the zeroth order mode in totally unpinned conditions (this also assumes no hybridizations). See original paper for possible limitations.
- Parameters:
- Bext
float
external magnetic field.
- material
Material
Instance of Material describing the magnetic layer material. Its properties are saved as attributes, but this object is not.
- d
float
magnetic layer thickness (in z direction).
- kxi
float
orndarray
,optional
(rad/m) k-vector (wavenumber), usually a vector.
- lam
float
,optional
penetration depth of the superconducting layer.
- Bext
- Attributes:
Methods
GetDispersion
([model, tol, d_sc, d_is])Calculates dispersion relation for the FM-SC bilayer.
GetGroupVelocity
([model, tol, d_sc, d_is])Gives (tangential) group velocities for defined k.
GetLifetime
([model, tol, d_sc, d_is])Gives lifetimes for defined k.
GetDecLen
([model, tol, d_sc, d_is])Give decay lengths for defined k.
GetDensityOfStates
([model, tol, d_sc, d_is])Give density of states for given mode.
GetBlochFunction
([model, tol, d_sc, d_is, Nf])Give Bloch function for given mode.
GetEllipticityIter
([a_ky0, tol, d_sc, d_is])Iteratively solve the values of the spin-wave ellipticity coeffcients a_ky.
See also
Examples
Example of calculation of the dispersion relation f(k_xi), and other important quantities, for the lowest-order mode in a 30 nm thick NiFe (Permalloy) layer covered by a sufficiently thick superconductor (Nb, lam ~ 100 nm).
kxi = np.linspace(1e-6, 150e6, 150) PyChar = SingleLayer(Bext=20e-3, material=Swt.NiFe, d=30e-9, kxi=kxi, lam=100e-9) DispPy = PyChar.GetDispersion()*1e-9/(2*np.pi) # GHz vgPy = PyChar.GetGroupVelocity()*1e-3 # km/s lifetimePy = PyChar.GetLifetime()*1e9 # ns decLen = PyChar.GetDecLen()*1e6 # um
- GetBlochFunction(model='original', tol=1e-05, d_sc=inf, d_is=0, Nf=200)#
Give Bloch function for given mode. Bloch function is calculated with margin of 10% of the lowest and the highest frequency (including Gilbert broadening).
- Parameters:
- model{“original”, “approx0”, “approx1”},
optional
Model to use for the dispersion calculation. “original” uses the original Zhou et al. model. “approx0” uses the APPROXIMATE formulas inspired by the Mruczkiewicz & Krawczyk 2014 paper, https://doi.org/10.1063/1.4868905 and this dispersion relation is given by
f = f_DE + (f_PEC - f_DE)*(-R_k_mod)
, where R_k_mod is a modified reflection factor asR_k_mod = R_k*exp(-2*k*d_is)*tanh(ks*d_sc)
. “approx1” uses the modified reflection factor, directly in the dispersion calculation, but also gives only an APPROXIMATE result, as the modified reflection factor is not derived rigorously. Default is “original”.- tol
float
,optional
() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.
- d_sc
float
,optional
(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.
- d_is
float
,optional
(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.
- Nf
int
,optional
Number of frequency levels for the Bloch function.
- model{“original”, “approx0”, “approx1”},
- Returns:
- GetDecLen(model='original', tol=1e-05, d_sc=inf, d_is=0)#
Give decay lengths for defined k. Decay length is computed as lambda = v_g*tau. The result is given in m.
- Parameters:
- model{“original”, “approx0”, “approx1”},
optional
Model to use for the dispersion calculation. “original” uses the original Zhou et al. model. “approx0” uses the APPROXIMATE formulas inspired by the Mruczkiewicz & Krawczyk 2014 paper, https://doi.org/10.1063/1.4868905 and this dispersion relation is given by
f = f_DE + (f_PEC - f_DE)*(-R_k_mod)
, where R_k_mod is a modified reflection factor asR_k_mod = R_k*exp(-2*k*d_is)*tanh(ks*d_sc)
. “approx1” uses the modified reflection factor, directly in the dispersion calculation, but also gives only an APPROXIMATE result, as the modified reflection factor is not derived rigorously. Default is “original”.- tol
float
,optional
() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.
- d_sc
float
,optional
(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.
- d_is
float
,optional
(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.
- model{“original”, “approx0”, “approx1”},
- Returns:
- declen
ndarray
decay length.
- declen
- GetDensityOfStates(model='original', tol=1e-05, d_sc=inf, d_is=0)#
Give density of states for given mode. Density of states is computed as DoS = 1/v_g. Output is density of states in 1D for given dispersion characteristics.
- Parameters:
- model{“original”, “approx0”, “approx1”},
optional
Model to use for the dispersion calculation. “original” uses the original Zhou et al. model. “approx0” uses the APPROXIMATE formulas inspired by the Mruczkiewicz & Krawczyk 2014 paper, https://doi.org/10.1063/1.4868905 and this dispersion relation is given by
f = f_DE + (f_PEC - f_DE)*(-R_k_mod)
, where R_k_mod is a modified reflection factor asR_k_mod = R_k*exp(-2*k*d_is)*tanh(ks*d_sc)
. “approx1” uses the modified reflection factor, directly in the dispersion calculation, but also gives only an APPROXIMATE result, as the modified reflection factor is not derived rigorously. Default is “original”.- tol
float
,optional
() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.
- d_sc
float
,optional
(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.
- d_is
float
,optional
(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.
- model{“original”, “approx0”, “approx1”},
- Returns:
- dos
ndarray
(s/m) value proportional to density of states.
- dos
- GetDispersion(model='original', tol=1e-05, d_sc=inf, d_is=0)#
Calculates dispersion relation for the FM-SC bilayer.
This corresponds to the actual model of Zhou et al.
- Parameters:
- model{“original”, “approx0”, “approx1”},
optional
Model to use for the dispersion calculation. “original” uses the original Zhou et al. model. “approx0” uses the APPROXIMATE formulas inspired by the Mruczkiewicz & Krawczyk 2014 paper, https://doi.org/10.1063/1.4868905 and this dispersion relation is given by
f = f_DE + (f_PEC - f_DE)*(-R_k_mod)
, where R_k_mod is a modified reflection factor asR_k_mod = R_k*exp(-2*k*d_is)*tanh(ks*d_sc)
. “approx1” uses the modified reflection factor, directly in the dispersion calculation, but also gives only an APPROXIMATE result, as the modified reflection factor is not derived rigorously. Default is “original”.- tol
float
,optional
() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.
- d_sc
float
,optional
(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.
- d_is
float
,optional
(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.
- model{“original”, “approx0”, “approx1”},
- Returns:
- GetEllipticityIter(a_ky0=1.0, tol=1e-05, d_sc=inf, d_is=0)#
Iteratively solve the values of the spin-wave ellipticity coeffcients a_ky.
The ellipticity is such that 0 < a_ky <= 1.
- Parameters:
- a_ky0
float
orndarray
,optional
() initial guess of the SW ellipticity coefficient. If ndarray, must have the same shape as k_y, or k_y must be a float. Default is 1.
- tol
float
,optional
() a_ky tolerance. Default is 1e-5.
- d_sc
float
,optional
(m) thickness of the superconductor layer. Default is np.inf.
- d_is
float
,optional
thickness of the insulating spacer layer. Default is 0.
- a_ky0
- Returns:
- GetGroupVelocity(model='original', tol=1e-05, d_sc=inf, d_is=0)#
Gives (tangential) group velocities for defined k. The group velocity is computed as vg = dw/dk. The result is given in m/s.
Warning
Works only when
kxi.shape[0] >= 2
.- Parameters:
- model{“original”, “approx0”, “approx1”},
optional
Model to use for the dispersion calculation. “original” uses the original Zhou et al. model. “approx0” uses the APPROXIMATE formulas inspired by the Mruczkiewicz & Krawczyk 2014 paper, https://doi.org/10.1063/1.4868905 and this dispersion relation is given by
f = f_DE + (f_PEC - f_DE)*(-R_k_mod)
, where R_k_mod is a modified reflection factor asR_k_mod = R_k*exp(-2*k*d_is)*tanh(ks*d_sc)
. “approx1” uses the modified reflection factor, directly in the dispersion calculation, but also gives only an APPROXIMATE result, as the modified reflection factor is not derived rigorously. Default is “original”.- tol
float
,optional
() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.
- d_sc
float
,optional
(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.
- d_is
float
,optional
(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.
- model{“original”, “approx0”, “approx1”},
- Returns:
- vg
ndarray
(m/s) tangential group velocity.
- vg
- GetLifetime(model='original', tol=1e-05, d_sc=inf, d_is=0)#
Gives lifetimes for defined k. It is computed as tau = (alpha*w*dw/dw0)^-1. The result is given in s.
- Parameters:
- model{“original”, “approx0”, “approx1”},
optional
Model to use for the dispersion calculation. “original” uses the original Zhou et al. model. “approx0” uses the APPROXIMATE formulas inspired by the Mruczkiewicz & Krawczyk 2014 paper, https://doi.org/10.1063/1.4868905 and this dispersion relation is given by
f = f_DE + (f_PEC - f_DE)*(-R_k_mod)
, where R_k_mod is a modified reflection factor asR_k_mod = R_k*exp(-2*k*d_is)*tanh(ks*d_sc)
. “approx1” uses the modified reflection factor, directly in the dispersion calculation, but also gives only an APPROXIMATE result, as the modified reflection factor is not derived rigorously. Default is “original”.- tol
float
,optional
() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.
- d_sc
float
,optional
(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.
- d_is
float
,optional
(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.
- model{“original”, “approx0”, “approx1”},
- Returns:
- lifetime
ndarray
lifetime.
- lifetime