76 lines
3.3 KiB
ReStructuredText
76 lines
3.3 KiB
ReStructuredText
Calculate elastic constants
|
|
===========================
|
|
|
|
Elastic constants characterize the stiffness of a material. The formal
|
|
definition is provided by the linear relation that holds between the
|
|
stress and strain tensors in the limit of infinitesimal deformation.
|
|
In tensor notation, this is expressed as
|
|
|
|
.. math::
|
|
|
|
s_{ij} = C_{ijkl} e_{kl}
|
|
|
|
where
|
|
the repeated indices imply summation. :math:`s_{ij}` are the elements of the
|
|
symmetric stress tensor. :math:`e_{kl}` are the elements of the symmetric strain
|
|
tensor. :math:`C_{ijkl}` are the elements of the fourth rank tensor of elastic
|
|
constants. In three dimensions, this tensor has :math:`3^4=81` elements. Using
|
|
Voigt notation, the tensor can be written as a 6x6 matrix, where :math:`C_{ij}`
|
|
is now the derivative of :math:`s_i` w.r.t. :math:`e_j`. Because :math:`s_i` is itself a
|
|
derivative w.r.t. :math:`e_i`, it follows that :math:`C_{ij}` is also symmetric, with at
|
|
most :math:`\frac{7 \times 6}{2}` = 21 distinct elements.
|
|
|
|
At zero temperature, it is easy to estimate these derivatives by
|
|
deforming the simulation box in one of the six directions using the
|
|
:doc:`change_box <change_box>` command and measuring the change in the
|
|
stress tensor. A general-purpose script that does this is given in the
|
|
``examples/ELASTIC`` directory described on the :doc:`Examples <Examples>`
|
|
doc page.
|
|
|
|
Calculating elastic constants at finite temperature is more
|
|
challenging, because it is necessary to run a simulation that performs
|
|
time averages of differential properties. There are at least
|
|
3 ways to do this in LAMMPS. The most reliable way to do this is
|
|
by exploiting the relationship between elastic constants, stress
|
|
fluctuations, and the Born matrix, the second derivatives of energy
|
|
w.r.t. strain :ref:`(Ray) <Ray>`.
|
|
The Born matrix calculation has been enabled by
|
|
the :doc:`compute born/matrix <compute_born_matrix>` command,
|
|
which works for any bonded or non-bonded potential in LAMMPS.
|
|
The most expensive part of the calculation is the sampling of
|
|
the stress fluctuations. Several examples of this method are
|
|
provided in the ``examples/ELASTIC_T/BORN_MATRIX`` directory
|
|
described on the :doc:`Examples <Examples>` doc page.
|
|
|
|
A second way is to measure
|
|
the change in average stress tensor in an NVT simulations when
|
|
the cell volume undergoes a finite deformation. In order to balance
|
|
the systematic and statistical errors in this method, the magnitude of
|
|
the deformation must be chosen judiciously, and care must be taken to
|
|
fully equilibrate the deformed cell before sampling the stress
|
|
tensor. An example of this method is provided in the
|
|
``examples/ELASTIC_T/DEFORMATION`` directory
|
|
described on the :doc:`Examples <Examples>` doc page.
|
|
|
|
Another approach is to sample the triclinic cell fluctuations
|
|
that occur in an NPT simulation. This method can also be slow to
|
|
converge and requires careful post-processing :ref:`(Shinoda) <Shinoda1>`.
|
|
We do not provide an example of this method.
|
|
|
|
A nice review of the advantages and disadvantages of all of these methods
|
|
is provided in the paper by Clavier et al. :ref:`(Clavier) <Clavier>`.
|
|
|
|
----------
|
|
|
|
.. _Ray:
|
|
|
|
**(Ray)** J. R. Ray and A. Rahman, J Chem Phys, 80, 4423 (1984).
|
|
|
|
.. _Shinoda1:
|
|
|
|
**(Shinoda)** Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
|
|
|
|
.. _Clavier:
|
|
|
|
**(Clavier)** G. Clavier, N. Desbiens, E. Bourasseau, V. Lachet, N. Brusselle-Dupend and B. Rousseau, Mol Sim, 43, 1413 (2017).
|