forked from lijiext/lammps
238 lines
8.9 KiB
Plaintext
238 lines
8.9 KiB
Plaintext
.. index:: fix phonon
|
|
|
|
fix phonon command
|
|
==================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
fix ID group-ID phonon N Noutput Nwait map_file prefix keyword values ...
|
|
|
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
|
* phonon = style name of this fix command
|
|
* N = measure the Green's function every this many timesteps
|
|
* Noutput = output the dynamical matrix every this many measurements
|
|
* Nwait = wait this many timesteps before measuring
|
|
* map_file = *file* or *GAMMA*
|
|
.. parsed-literal::
|
|
|
|
*file* is the file that contains the mapping info between atom ID and the lattice indices.
|
|
|
|
.. parsed-literal::
|
|
|
|
*GAMMA* flags to treate the whole simulation box as a unit cell, so that the mapping
|
|
info can be generated internally. In this case, dynamical matrix at only the gamma-point
|
|
will/can be evaluated.
|
|
|
|
* prefix = prefix for output files
|
|
* one or none keyword/value pairs may be appended
|
|
* keyword = *sysdim* or *nasr*
|
|
.. parsed-literal::
|
|
|
|
*sysdim* value = d
|
|
d = dimension of the system, usually the same as the MD model dimension
|
|
*nasr* value = n
|
|
n = number of iterations to enforce the acoustic sum rule
|
|
|
|
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
fix 1 all phonon 20 5000 200000 map.in LJ1D sysdim 1
|
|
fix 1 all phonon 20 5000 200000 map.in EAM3D
|
|
fix 1 all phonon 10 5000 500000 GAMMA EAM0D nasr 100
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Calculate the dynamical matrix from molecular dynamics simulations
|
|
based on fluctuation-dissipation theory for a group of atoms.
|
|
|
|
Consider a crystal with :math:`N` unit cells in three dimensions labelled :math:`l = (l_1, l_2, l_3)` where :math:`l_i`
|
|
are integers. Each unit cell is defined by three linearly independent
|
|
vectors :math:`\mathbf{a}_1`, :math:`\mathbf{a}_2`, :math:`\mathbf{a}_3` forming a
|
|
parallelipiped, containing :math:`K` basis atoms labeled :math:`k`.
|
|
|
|
Based on fluctuation-dissipation theory, the force constant
|
|
coefficients of the system in reciprocal space are given by
|
|
(:ref:`Campana <Campana>` , :ref:`Kong <Kong>`)
|
|
|
|
|
|
.. math::
|
|
|
|
\begin{equation}\mathbf{\Phi}_{k\alpha,k^\prime \beta}(\mathbf{q}) = k_B T \mathbf{G}^{-1}_{k\alpha,k^\prime \beta}(\mathbf{q})\end{equation}
|
|
|
|
where :math:`\mathbf{G}` is the Green's functions coefficients given by
|
|
|
|
|
|
.. math::
|
|
|
|
\begin{equation}\mathbf{G}_{k\alpha,k^\prime \beta}(\mathbf{q}) = \left< \mathbf{u}_{k\alpha}(\mathbf{q}) \bullet \mathbf{u}_{k^\prime \beta}^*(\mathbf{q}) \right>\end{equation}
|
|
|
|
where :math:`\left< \ldots \right>` denotes the ensemble average, and
|
|
|
|
|
|
.. math::
|
|
|
|
\begin{equation}\mathbf{u}_{k\alpha}(\mathbf{q}) = \sum_l \mathbf{u}_{l k \alpha} \exp{(i\mathbf{qr}_l)}\end{equation}
|
|
|
|
is the :math:`\alpha` component of the atomic displacement for the :math:`k` th atom
|
|
in the unit cell in reciprocal space at :math:`\mathbf{q}`. In practice, the Green's
|
|
functions coefficients can also be measured according to the following
|
|
formula,
|
|
|
|
|
|
.. math::
|
|
|
|
\begin{equation}\mathbf{G}_{k\alpha,k^\prime \beta}(\mathbf{q}) =
|
|
\left< \mathbf{R}_{k \alpha}(\mathbf{q}) \bullet \mathbf{R}^*_{k^\prime \beta}(\mathbf{q}) \right>
|
|
- \left<\mathbf{R}\right>_{k \alpha}(\mathbf{q}) \bullet \left<\mathbf{R}\right>^*_{k^\prime \beta}(\mathbf{q})\end{equation}
|
|
|
|
where :math:`\mathbf{R}` is the instantaneous positions of atoms, and :math:`\left<\mathbf{R}\right>` is the
|
|
averaged atomic positions. It gives essentially the same results as
|
|
the displacement method and is easier to implement in an MD code.
|
|
|
|
Once the force constant matrix is known, the dynamical matrix :math:`\mathbf{D}` can
|
|
then be obtained by
|
|
|
|
|
|
.. math::
|
|
|
|
\begin{equation}\mathbf{D}_{k\alpha, k^\prime\beta}(\mathbf{q}) =
|
|
(m_k m_{k^\prime})^{-\frac{1}{2}} \mathbf{\Phi}_{k \alpha, k^\prime \beta}(\mathbf{q})\end{equation}
|
|
|
|
whose eigenvalues are exactly the phonon frequencies at :math:`\mathbf{q}`.
|
|
|
|
This fix uses positions of atoms in the specified group and calculates
|
|
two-point correlations. To achieve this. the positions of the atoms
|
|
are examined every *Nevery* steps and are Fourier-transformed into
|
|
reciprocal space, where the averaging process and correlation
|
|
computation is then done. After every *Noutput* measurements, the
|
|
matrix :math:`\mathbf{G}(\mathbf{q})` is calculated and inverted to obtain the elastic
|
|
stiffness coefficients. The dynamical matrices are then constructed
|
|
and written to *prefix*.bin.timestep files in binary format and to the
|
|
file *prefix*.log for each wavevector :math:`\mathbf{q}`.
|
|
|
|
A detailed description of this method can be found in
|
|
(:ref:`Kong2011 <Kong2011>`).
|
|
|
|
The *sysdim* keyword is optional. If specified with a value smaller
|
|
than the dimensionality of the LAMMPS simulation, its value is used
|
|
for the dynamical matrix calculation. For example, using LAMMPS ot
|
|
model a 2D or 3D system, the phonon dispersion of a 1D atomic chain
|
|
can be computed using *sysdim* = 1.
|
|
|
|
The *nasr* keyword is optional. An iterative procedure is employed to
|
|
enforce the acoustic sum rule on :math:`\Phi` at :math:`\Gamma`, and the number
|
|
provided by keyword *nasr* gives the total number of iterations. For a
|
|
system whose unit cell has only one atom, *nasr* = 1 is sufficient;
|
|
for other systems, *nasr* = 10 is typically sufficient.
|
|
|
|
The *map_file* contains the mapping information between the lattice
|
|
indices and the atom IDs, which tells the code which atom sits at
|
|
which lattice point; the lattice indices start from 0. An auxiliary
|
|
code, `latgen <http://code.google.com/p/latgen>`_, can be employed to
|
|
generate the compatible map file for various crystals.
|
|
|
|
In case one simulates an aperiodic system, where the whole simulation box
|
|
is treated as a unit cell, one can set *map_file* as *GAMMA*, so that the mapping
|
|
info will be generated internally and a file is not needed. In this case, the
|
|
dynamical matrix at only the gamma-point will/can be evaluated. Please keep in
|
|
mind that fix-phonon is designed for cyrstals, it will be inefficient and
|
|
even degrade the performance of lammps in case the unit cell is too large.
|
|
|
|
The calculated dynamical matrix elements are written out in
|
|
:doc:`energy/distance^2/mass <units>` units. The coordinates for *q*
|
|
points in the log file is in the units of the basis vectors of the
|
|
corresponding reciprocal lattice.
|
|
|
|
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>` *temp* option is supported by this
|
|
fix. You can use it to change the temperature compute from thermo_temp
|
|
to the one that reflects the true temperature of atoms in the group.
|
|
|
|
No global scalar or vector or per-atom quantities are stored by this
|
|
fix for access by various :ref:`output commands <4_15>`.
|
|
|
|
Instead, this fix outputs its initialization information (including
|
|
mapping information) and the calculated dynamical matrices to the file
|
|
*prefix*.log, with the specified *prefix*. The dynamical matrices are
|
|
also written to files *prefix*.bin.timestep in binary format. These
|
|
can be read by the post-processing tool in tools/phonon to compute the
|
|
phonon density of states and/or phonon dispersion curves.
|
|
|
|
No parameter of this fix can be used with the *start/stop* keywords
|
|
of the :doc:`run <run>` command.
|
|
|
|
This fix is not invoked during :doc:`energy minimization <minimize>`.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
|
|
|
|
This fix assumes a crystalline system with periodical lattice. The
|
|
temperature of the system should not exceed the melting temperature to
|
|
keep the system in its solid state.
|
|
|
|
This fix is part of the USER-PHONON package. It is only enabled if
|
|
LAMMPS was built with that package. See the :ref:`Making LAMMPS <start_3>` section for more info.
|
|
|
|
This fix requires LAMMPS be built with an FFT library. See the
|
|
:ref:`Making LAMMPS <start_2>` section for more info.
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`compute msd <compute_msd>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
The option defaults are sysdim = the same dimemsion as specified by
|
|
the `dimension <dimension>`_ command, and nasr = 20.
|
|
|
|
|
|
----------
|
|
|
|
|
|
.. _Campana:
|
|
|
|
|
|
|
|
**(Campana)** C. Campana and
|
|
M. H. Muser, *Practical Green's function approach to the
|
|
simulation of elastic semi-infinite solids*, `Phys. Rev. B [74], 075420 (2006) <http://dx.doi.org/10.1103/PhysRevB.74.075420>`_
|
|
|
|
.. _Kong:
|
|
|
|
|
|
|
|
**(Kong)** L.T. Kong, G. Bartels, C. Campana,
|
|
C. Denniston, and Martin H. Muser, *Implementation of Green's
|
|
function molecular dynamics: An extension to LAMMPS*, `Computer Physics Communications [180](6):1004-1010 (2009). <http://dx.doi.org/10.1016/j.cpc.2008.12.035>`_
|
|
|
|
L.T. Kong, C. Denniston, and Martin H. Muser,
|
|
*An improved version of the Green's function molecular dynamics
|
|
method*, `Computer Physics Communications [182](2):540-541 (2011). <http://dx.doi.org/10.1016/j.cpc.2010.10.006>`_
|
|
|
|
.. _Kong2011:
|
|
|
|
|
|
|
|
**(Kong2011)** L.T. Kong, *Phonon dispersion measured directly from
|
|
molecular dynamics simulations*, `Computer Physics Communications [182](10):2201-2207, (2011). <http://dx.doi.org/10.1016/j.cpc.2011.04.019>`_
|
|
|
|
|
|
.. _lws: http://lammps.sandia.gov
|
|
.. _ld: Manual.html
|
|
.. _lc: Section_commands.html#comm
|