203 lines
6.9 KiB
ReStructuredText
203 lines
6.9 KiB
ReStructuredText
.. index:: fix precession/spin
|
|
|
|
fix precession/spin command
|
|
===========================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
fix ID group precession/spin style args
|
|
|
|
* ID, group are documented in :doc:`fix <fix>` command
|
|
* precession/spin = style name of this fix command
|
|
* style = *zeeman* or *anisotropy* or *cubic* or *stt*
|
|
|
|
.. parsed-literal::
|
|
|
|
*zeeman* args = H x y z
|
|
H = intensity of the magnetic field (in Tesla)
|
|
x y z = vector direction of the field
|
|
*anisotropy* args = K x y z
|
|
K = intensity of the magnetic anisotropy (in eV)
|
|
x y z = vector direction of the anisotropy
|
|
*cubic* args = K1 K2c n1x n1y n1x n2x n2y n2z n3x n3y n3z
|
|
K1 and K2c = intensity of the magnetic anisotropy (in eV)
|
|
n1x to n3z = three direction vectors of the cubic anisotropy
|
|
*stt* args = J x y z
|
|
J = intensity of the spin-transfer torque field
|
|
x y z = vector direction of the field
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0
|
|
fix 1 3 precession/spin anisotropy 0.001 0.0 0.0 1.0
|
|
fix 1 iron precession/spin cubic 0.001 0.0005 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0
|
|
fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 anisotropy 0.001 0.0 0.0 1.0
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
This fix applies a precession torque to each magnetic spin in the
|
|
group.
|
|
|
|
Style *zeeman* is used for the simulation of the interaction between
|
|
the magnetic spins in the defined group and an external magnetic
|
|
field:
|
|
|
|
.. math::
|
|
|
|
H_{Zeeman} = -g \sum_{i=0}^{N}\mu_{i}\, \vec{s}_{i} \cdot\vec{B}_{ext}
|
|
|
|
with:
|
|
|
|
* :math:`\vec{B}_{ext}` the external magnetic field (in T)
|
|
* :math:`g` the Lande factor (hard-coded as :math:`g=2.0`)
|
|
* :math:`\vec{s}_i` the unitary vector describing the orientation of spin :math:`i`
|
|
* :math:`\mu_i` the atomic moment of spin :math:`i` given as a multiple of the
|
|
Bohr magneton :math:`\mu_B` (for example, :math:`\mu_i \approx 2.2` in bulk iron).
|
|
|
|
The field value in Tesla is multiplied by the gyromagnetic
|
|
ratio, :math:`g \cdot \mu_B/\hbar`, converting it into a precession frequency in
|
|
rad.THz (in metal units and with :math:`\mu_B = 5.788\cdot 10^{-5}`
|
|
eV/T).
|
|
|
|
As a comparison, the figure below displays the simulation of a single
|
|
spin (of norm :math:`\mu_i = 1.0`) submitted to an external magnetic
|
|
field of :math:`\vert B_{ext}\vert = 10.0\; \mathrm{Tesla}` (and
|
|
oriented along the z axis). The upper plot shows the average
|
|
magnetization along the external magnetic field axis and the lower
|
|
plot the Zeeman energy, both as a function of temperature. The
|
|
reference result is provided by the plot of the Langevin function for
|
|
the same parameters.
|
|
|
|
.. image:: JPG/zeeman_langevin.jpg
|
|
:align: center
|
|
:width: 600
|
|
|
|
The temperature effects are accounted for by connecting the spin
|
|
:math:`i` to a thermal bath using a Langevin thermostat (see
|
|
:doc:`fix langevin/spin <fix_langevin_spin>` for the definition of
|
|
this thermostat).
|
|
|
|
Style *anisotropy* is used to simulate an easy axis or an easy plane
|
|
for the magnetic spins in the defined group:
|
|
|
|
.. math::
|
|
|
|
H_{aniso} = -\sum_{{ i}=1}^{N} K_{an}(\mathbf{r}_{i})\, \left(
|
|
\vec{s}_{i} \cdot \vec{n}_{i} \right)^2
|
|
|
|
with :math:`n` defining the direction of the anisotropy, and :math:`K`
|
|
(in eV) its intensity. If :math:`K > 0`, an easy axis is defined, and
|
|
if :math:`K < 0`, an easy plane is defined.
|
|
|
|
Style *cubic* is used to simulate a cubic anisotropy, with three
|
|
possible easy axis for the magnetic spins in the defined group:
|
|
|
|
.. math::
|
|
|
|
H_{cubic} = -\sum_{{ i}=1}^{N} K_{1}
|
|
\Big[
|
|
\left(\vec{s}_{i} \cdot \vec{n_1} \right)^2
|
|
\left(\vec{s}_{i} \cdot \vec{n_2} \right)^2 +
|
|
\left(\vec{s}_{i} \cdot \vec{n_2} \right)^2
|
|
\left(\vec{s}_{i} \cdot \vec{n_3} \right)^2 +
|
|
\left(\vec{s}_{i} \cdot \vec{n_1} \right)^2
|
|
\left(\vec{s}_{i} \cdot \vec{n_3} \right)^2 \Big]
|
|
+K_{2}^{(c)} \left(\vec{s}_{i} \cdot \vec{n_1} \right)^2
|
|
\left(\vec{s}_{i} \cdot \vec{n_2} \right)^2
|
|
\left(\vec{s}_{i} \cdot \vec{n_3} \right)^2
|
|
|
|
with :math:`K_1` and :math:`K_{2c}` (in eV) the intensity coefficients
|
|
and :math:`\vec{n}_1`, :math:`\vec{n}_2` and :math:`\vec{n}_3`
|
|
defining the three anisotropic directions defined by the command (from
|
|
*n1x* to *n3z*). For :math:`\vec{n}_1 = (1 0 0)`, :math:`\vec{n}_2 =
|
|
(0 1 0)`, and :math:`\vec{n}_3 = (0 0 1)`, :math:`K_1 < 0` defines an
|
|
iron type anisotropy (easy axis along the :math:`(0 0 1)`-type cube
|
|
edges), and :math:`K_1 > 0` defines a nickel type anisotropy (easy
|
|
axis along the :math:`(1 1 1)`-type cube diagonals). :math:`K_2^c >
|
|
0` also defines easy axis along the :math:`(1 1 1)`-type cube
|
|
diagonals. See chapter 2 of :ref:`(Skomski) <Skomski1>` for more
|
|
details on cubic anisotropies.
|
|
|
|
Style *stt* is used to simulate the interaction between the spins and
|
|
a spin-transfer torque.
|
|
See equation (7) of :ref:`(Chirac) <Chirac1>` for more details about the
|
|
implemented spin-transfer torque term.
|
|
|
|
In all cases, the choice of :math:`(x y z)` only imposes the vector
|
|
directions for the forces. Only the direction of the vector is
|
|
important; its length is ignored (the entered vectors are
|
|
normalized).
|
|
|
|
Those styles can be combined within one single command line.
|
|
|
|
.. note::
|
|
|
|
The norm of all vectors defined with the precession/spin command
|
|
have to be non-zero. For example, defining
|
|
"fix 1 all precession/spin zeeman 0.1 0.0 0.0 0.0" would result
|
|
in an error message.
|
|
Since those vector components are used to compute the inverse of the
|
|
field (or anisotropy) vector norm, setting a zero-vector would result
|
|
in a division by zero.
|
|
|
|
----------
|
|
|
|
Restart, fix_modify, output, run start/stop, minimize info
|
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
|
|
No information about this fix is written to :doc:`binary restart files
|
|
<restart>`.
|
|
|
|
The :doc:`fix_modify <fix_modify>` *energy* option is supported by
|
|
this fix to add the energy associated with the spin precession
|
|
torque to the global potential energy of the system as part of
|
|
:doc:`thermodynamic output <thermo_style>`. The default setting for
|
|
this fix is :doc:`fix_modify energy no <fix_modify>`.
|
|
|
|
This fix computes a global scalar which can be accessed by various
|
|
:doc:`output commands <Howto_output>`. The scalar is the potential
|
|
energy (in energy units) discussed in the previous paragraph. The
|
|
scalar value is an "extensive" quantity.
|
|
|
|
No information about this fix is written to :doc:`binary restart files
|
|
<restart>`.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
|
|
The *precession/spin* style is part of the SPIN package. This style
|
|
is only enabled if LAMMPS was built with this package, and if the
|
|
atom_style "spin" was declared. See the :doc:`Build package
|
|
<Build_package>` page for more info.
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`atom_style spin <atom_style>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
|
|
none
|
|
|
|
----------
|
|
|
|
.. _Skomski1:
|
|
|
|
**(Skomski)** Skomski, R. (2008). Simple models of magnetism.
|
|
Oxford University Press.
|
|
|
|
.. _Chirac1:
|
|
|
|
**(Chirac)** Chirac, Theophile, et al. Ultrafast antiferromagnetic
|
|
switching in NiO induced by spin transfer torques.
|
|
Physical Review B 102.13 (2020): 134415.
|