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:
Bextfloat
  1. external magnetic field.

materialMaterial

Instance of Material describing the magnetic layer material. Its properties are saved as attributes, but this object is not.

dfloat
  1. magnetic layer thickness (in z direction).

kxifloat or ndarray, optional

(rad/m) k-vector (wavenumber), usually a vector.

lamfloat, optional
  1. penetration depth of the superconducting layer.

Attributes:
[same as Parameters (except `material`), plus these]
Msfloat

(A/m) saturation magnetization.

gammafloat

(rad*Hz/T) gyromagnetic ratio (positive convention).

Aexfloat

(J/m) exchange stiffness constant.

alphafloat

() Gilbert damping.

mu0dH0float
  1. inhomogeneous broadening.

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.

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 as R_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”.

tolfloat, optional

() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.

d_scfloat, optional

(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.

d_isfloat, optional

(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.

Nfint, optional

Number of frequency levels for the Bloch function.

Returns:
wndarray

(rad*Hz) frequency axis for the 2D Bloch function.

blochFuncndarray

() 2D Bloch function for given kxi and w.

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 as R_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”.

tolfloat, optional

() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.

d_scfloat, optional

(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.

d_isfloat, optional

(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.

Returns:
declenndarray
  1. decay length.

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 as R_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”.

tolfloat, optional

() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.

d_scfloat, optional

(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.

d_isfloat, optional

(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.

Returns:
dosndarray

(s/m) value proportional to density of states.

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 as R_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”.

tolfloat, optional

() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.

d_scfloat, optional

(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.

d_isfloat, optional

(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.

Returns:
freqfloat or ndarray

(rad/s) angular frequency of spin waves.

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_ky0float or ndarray, 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.

tolfloat, optional

() a_ky tolerance. Default is 1e-5.

d_scfloat, optional

(m) thickness of the superconductor layer. Default is np.inf.

d_isfloat, optional
  1. thickness of the insulating spacer layer. Default is 0.

Returns:
a_kyfloat or ndarray
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 as R_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”.

tolfloat, optional

() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.

d_scfloat, optional

(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.

d_isfloat, optional

(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.

Returns:
vgndarray

(m/s) tangential group velocity.

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 as R_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”.

tolfloat, optional

() tolerance of the spin-wave ellipticity a_ky. Default is 1e-5.

d_scfloat, optional

(m) thickness of the superconducting layer. Used only in the approximate models. Default is np.inf.

d_isfloat, optional

(m) thickness of the insulating spacer layer. Used only in the approximate models. Default is 0.

Returns:
lifetimendarray
  1. lifetime.