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 thewall_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
- xyz
MeshVector
Coordinates on a mesh.
- thickness
float
Thickness of the domain wall (default is 10).
- x0
float
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.
- xyz
- Returns
MeshVector
Vector field \(\mathbf{v}\) defined at each node of the mesh.
See also
- 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
- xyz
MeshVector
Coordinates on a mesh.
- chi
int
Circularity \(\chi\) or sense of rotation around the \(z\) axis (either
1
or-1
).- p
int
Polarity \(p\) of the vortex core along the \(z\) axis (either
1
or-1
).
- xyz
- Returns
MeshVector
Vector field \(\mathbf{v}\) defined at each node of the mesh.
See also
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
- xyz
MeshVector
Coordinates on a mesh.
- Theta
float
Angle \(\Theta\) of the helical field with the \(z\) axis (given in degree).
- chi
int
Circularity \(\chi\) or sense of rotation around the \(z\) axis (either
1
or-1
).
- xyz
- Returns
MeshVector
Vector field \(\mathbf{v}\) defined at each node of the mesh.
See also
- tetrax.vectorfields.homogeneous(xyz, theta, phi)#
Homogeneous magnetization state with direction given by spherical angles \(\theta\) and \(\phi\).
- Parameters
- xyz
MeshVector
Coordinates on a mesh.
- theta
float
Polar angle \(\theta\) given in degree.
- phi
float
Azimuthal angle \(\phi\) given in degree.
- xyz
- 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 setupexp
, 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
- xyz
MeshVector
Coordinates on a mesh.
- thickness
float
Thickness of the domain wall (default is 10).
- x0
float
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.
- xyz
- Returns
MeshVector
Vector field \(\mathbf{v}\) defined at each node of the mesh.
See also
- 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
- xyz
MeshVector
Coordinates on a mesh.
- p
int
Polarization \(p\) of the radial field (either
1
for outward or-1
for inward).
- xyz
- Returns
MeshVector
Vector field \(\mathbf{v}\) defined at each node of the mesh.
See also
- tetrax.vectorfields.radial_vortex(xyz, p)#
Not implemented yet.