tetrax package#

Subpackages#

Submodules#

tetrax.vectorfields module#

tetrax.vectorfields.bloch_wall(xyz, thickness=10, x0=0, domain_axis='y', domain_polarity=1, wall_polarity=1)#

Domain wall of Bloch type perpendicular to the \(x\) direction.

The field is calculated according to

\[\begin{split}\mathbf{v} = \begin{cases} p_\mathrm{D} \cos(\theta)\mathbf{e}_y + p_\mathrm{DW} \sin(\theta)\mathbf{e}_z, & \text{domains polarized along } y\\ p_\mathrm{DW} \sin(\theta) \mathbf{e}_y + p_\mathrm{D} \cos(\theta)\mathbf{e}_z, & \text{domains polarized along } z \end{cases}\end{split}\]

with \(p_\mathrm{D}\) and \(p_\mathrm{DW}\) being the domain_polarity and the wall_polarity, respectively. The domain-wall angle \(\theta = \theta(x)\) is given by the Bloch wall solution

\[\theta(x) = 2 \arctan\left(e^{(x-x_0)/\Delta}\right)\]

with \(\Delta\) being the thickness and \(x_0 =\) x0 being the position of the wall.

Parameters
xyzMeshVector

Coordinates on a mesh.

thicknessfloat

Thickness of the domain wall (default is 10).

x0float

Position of the domain wall along the \(x\) direction (default is 0).

domain_axis{“y”, “z”}

Axis, along which the domains adjecent to the Bloch wall are oriented (default is “y”).

domain_polarity{1, -1}

Polarity of the first domain with respect to the domain_axis.

wall_polarity{1, -1}

Polarity of the domain wall.

Returns
MeshVector

Vector field \(\mathbf{v}\) defined at each node of the mesh.

See also

neel_wall
tetrax.vectorfields.circular_vortex(xyz, chi, p, rho_c=10)#

Vortex state with given circularity \(\chi\) and core polarity \(p\).

The field is calculated according to

\[\mathbf{v} = \chi\sin[\theta(\rho)] \mathbf{e}_\phi +\cos[\theta(\rho)]\mathbf{e}_z\]

which, in cartesian basis, is

\[\mathbf{v} = -\chi\sin[\theta(\rho)]\sin(\phi) \mathbf{e}_x + \chi\sin[\theta(\rho)]\cos(\phi) \mathbf{e}_y + \cos[\theta(\rho)]\mathbf{e}_z\]

with \(\phi\) being the azimuthal angle and \(\rho\) being the radius in a cylindrical coordinate system. Here, \(\theta(\rho)\) is the angle of the vector field with the \(z\) axis and is approximated by the Usov-Pechany ansatz

\[\begin{split}\theta(\rho) = \begin{cases} 2\arctan(\rho/\rho_c), & \rho \leq \rho_c \\ \pi/2, & \rho > \rho_c\end{cases}\end{split}\]
Parameters
xyzMeshVector

Coordinates on a mesh.

chiint

Circularity \(\chi\) or sense of rotation around the \(z\) axis (either 1 or -1).

pint

Polarity \(p\) of the vortex core along the \(z\) axis (either 1 or -1).

Returns
MeshVector

Vector field \(\mathbf{v}\) defined at each node of the mesh.

References

1

N.A. Usov and S.E. Peschany, “Magnetization curling in a fine cylindrical particle”, J. Magn. Magn. Mater. 118, L290 (1993).

tetrax.vectorfields.helical(xyz, Theta, chi)#

Helical vector field with given angle \(\Theta\) and circularity \(\chi\).

The field is calculated according to

\[\mathbf{v} = \chi\sin(\Theta) \mathbf{e}_\phi + \cos(\Theta)\mathbf{e}_z\]

which, in cartesian basis, is

\[\mathbf{v} = -\chi\sin(\Theta)\sin(\phi) \mathbf{e}_x + \chi\sin(\Theta)\cos(\phi) \mathbf{e}_y + \cos(\Theta)\mathbf{e}_z\]

with \(\phi\) being the azimuthal angle in a cylindrical coordinate system.

Parameters
xyzMeshVector

Coordinates on a mesh.

Thetafloat

Angle \(\Theta\) of the helical field with the \(z\) axis (given in degree).

chiint

Circularity \(\chi\) or sense of rotation around the \(z\) axis (either 1 or -1).

Returns
MeshVector

Vector field \(\mathbf{v}\) defined at each node of the mesh.

tetrax.vectorfields.homogeneous(xyz, theta, phi)#

Homogeneous magnetization state with direction given by spherical angles \(\theta\) and \(\phi\).

Parameters
xyzMeshVector

Coordinates on a mesh.

thetafloat

Polar angle \(\theta\) given in degree.

phifloat

Azimuthal angle \(\phi\) given in degree.

Returns
MeshVector

Vector field \(\mathbf{v}\) defined at each node of the mesh.

Notes

Setting a homogeneous magnetization on sample sample or in an experimental setup exp, the same can also be achieved by giving triplets.

>>> sample.mag = [0, 0, 1]

or

>>> exp.Bext = [0.1, 0, 0]
tetrax.vectorfields.neel_wall(xyz, thickness=10, x0=0, domain_axis='z', domain_polarity=1, wall_polarity=1)#

Domain wall of Neel type perpendicular to the \(x\) direction.

This profile is simply being approximated as the profile of a Bloch wall (see bloch_wall()), however, with rotation of the vecto field perpendicular to the wall plane.

Parameters
xyzMeshVector

Coordinates on a mesh.

thicknessfloat

Thickness of the domain wall (default is 10).

x0float

Position of the domain wall along the \(x\) direction (default is 0).

domain_axis{“y”, “z”}

Axis, along which the domains adjecent to the Bloch wall are oriented (default is “z”).

domain_polarity{1, -1}

Polarity of the first domain with respect to the domain_axis.

wall_polarity{1, -1}

Polarity of the domain wall.

Returns
MeshVector

Vector field \(\mathbf{v}\) defined at each node of the mesh.

See also

bloch_wall
tetrax.vectorfields.radial(xyz, p)#

Radial vector field with given polarization \(p\).

The field is calculated according to

\[\mathbf{v} = p \mathbf{e}_\rho.\]
Parameters
xyzMeshVector

Coordinates on a mesh.

pint

Polarization \(p\) of the radial field (either 1 for outward or -1 for inward).

Returns
MeshVector

Vector field \(\mathbf{v}\) defined at each node of the mesh.

tetrax.vectorfields.radial_vortex(xyz, p)#

Not implemented yet.

Module contents#