''
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13800 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -1,70 +1,171 @@
|
||||
<HTML>
|
||||
<script type="text/javascript"
|
||||
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||
</script>
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({ TeX: { equationNumbers: {autoNumber: "AMS"} } });
|
||||
</script>
|
||||
|
||||
<H3>Tutorial for Thermalized Drude oscillators in LAMMPS
|
||||
</H3>
|
||||
<P>This tutorial explains how to use Drude oscillators in LAMMPS to
|
||||
simulate polarizable systems using the USER-DRUDE package. As an
|
||||
illustration, the input files for a simulation of 250 phenol molecules
|
||||
are documented. First of all, LAMMPS has to be compiled with the
|
||||
USER-DRUDE package activated. Then, the data file and input scripts
|
||||
have to be modified to include the Drude dipoles and how to handle
|
||||
them.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P><B>Overview of Drude induced dipoles</B>
|
||||
</P>
|
||||
<P>Polarizable atoms acquire an induced electric dipole moment under the
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title><no title> — LAMMPS 15 May 2015 version documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/>
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
|
||||
<a href="Manual.html" class="icon icon-home"> LAMMPS
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="Manual.html">LAMMPS</a>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="Manual.html">Docs</a> »</li>
|
||||
|
||||
<li><no title></li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="http://lammps.sandia.gov">Website</a>
|
||||
<a href="Section_commands.html#comm">Commands</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<p><strong>Overview of Drude induced dipoles</strong></p>
|
||||
<p>Polarizable atoms acquire an induced electric dipole moment under the
|
||||
action of an external electric field, for example the electric field
|
||||
created by the surrounding particles. Drude oscillators represent
|
||||
these dipoles by two fixed charges: the core (DC) and the Drude
|
||||
particle (DP) bound by a harmonic potential. The Drude particle can be
|
||||
thought of as the electron cloud whose center can be displaced from
|
||||
the position of the the corresponding nucleus.
|
||||
</P>
|
||||
<P>The sum of the masses of a core-Drude pair should be the mass of the
|
||||
initial (unsplit) atom, \(m_C + m_D = m\). The sum of their charges
|
||||
should be the charge of the initial (unsplit) atom, \(q_C + q_D = q\).
|
||||
the position of the the corresponding nucleus.</p>
|
||||
<p>The sum of the masses of a core-Drude pair should be the mass of the
|
||||
initial (unsplit) atom, (m_C + m_D = m). The sum of their charges
|
||||
should be the charge of the initial (unsplit) atom, (q_C + q_D = q).
|
||||
A harmonic potential between the core and Drude partners should be
|
||||
present, with force constant \(k_D\) and an equilibrium distance of
|
||||
zero. The (half-)stiffness of the <A HREF = "bond_harmonic.html">harmonic bond</A>
|
||||
\(K_D = k_D/2\) and the Drude charge \(q_D\) are related to the atom
|
||||
polarizability \(\alpha\) by
|
||||
</P>
|
||||
<P>\begin{equation} K_D = \frac 1 2\, \frac {q_D^2} \alpha
|
||||
\end{equation}
|
||||
</P>
|
||||
<P>Ideally, the mass of the Drude particle should be small, and the
|
||||
present, with force constant (k_D) and an equilibrium distance of
|
||||
zero. The (half-)stiffness of the <a class="reference internal" href="bond_harmonic.html"><em>harmonic bond</em></a>
|
||||
(K_D = k_D/2) and the Drude charge (q_D) are related to the atom
|
||||
polarizability (alpha) by</p>
|
||||
<p>begin{equation} K_D = frac 1 2, frac {q_D^2} alpha
|
||||
end{equation}</p>
|
||||
<p>Ideally, the mass of the Drude particle should be small, and the
|
||||
stiffness of the harmonic bond should be large, so that the Drude
|
||||
particle remains close ot the core. The values of Drude mass, Drude
|
||||
charge, and force constant can be chosen following different
|
||||
strategies, as in the following examples of polarizable force
|
||||
fields.
|
||||
</P>
|
||||
<UL><LI><A HREF = "#Lamoureux">Lamoureux and Roux</A> suggest adopting a global
|
||||
half-stiffness, \(K_D\) = 500 kcal/(mol Å<sup>2</sup>) —
|
||||
which corresponds to a force constant \(k_D\) = 4184 kJ/(mol
|
||||
Å<sup>2</sup>) — for all types of core-Drude bond, a
|
||||
global mass \(m_D\) = 0.4 g/mol (or u) for all types of Drude
|
||||
fields.</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#lamoureux"><span>Lamoureux and Roux</span></a> suggest adopting a global
|
||||
half-stiffness, (K_D) = 500 kcal/(mol &Aring;<sup>2</sup>) &mdash;
|
||||
which corresponds to a force constant (k_D) = 4184 kJ/(mol
|
||||
&Aring;<sup>2</sup>) &mdash; for all types of core-Drude bond, a
|
||||
global mass (m_D) = 0.4 g/mol (or u) for all types of Drude
|
||||
particle, and to calculate the Drude charges for individual atom types
|
||||
from the atom polarizabilities using equation (1). This choice is
|
||||
followed in the polarizable CHARMM force field.
|
||||
|
||||
<LI><A HREF = "#Schroeder">Schroeder and Steinhauser</A> suggest adopting a global
|
||||
charge \(q_D\) = -1.0e and a global mass \(m_D\) = 0.1 g/mol (or u)
|
||||
followed in the polarizable CHARMM force field.</li>
|
||||
<li><a class="reference internal" href="#schroeder"><span>Schroeder and Steinhauser</span></a> suggest adopting a global
|
||||
charge (q_D) = -1.0e and a global mass (m_D) = 0.1 g/mol (or u)
|
||||
for all Drude particles, and to calculate the force constant for each
|
||||
type of core-Drude bond from equation (1). The timesteps used by these
|
||||
authors are between 0.5 and 2 fs, with the degrees of freedom of the
|
||||
Drude oscillators kept cold at 1 K. In both these force fields
|
||||
hydrogen atoms are treated as non-polarizable.
|
||||
</UL>
|
||||
<P>The motion of of the Drude particles can be calculated by minimizing
|
||||
hydrogen atoms are treated as non-polarizable.</li>
|
||||
</ul>
|
||||
<p>The motion of of the Drude particles can be calculated by minimizing
|
||||
the energy of the induced dipoles at each timestep, by an interative,
|
||||
self-consistent procedure. The Drude particles can be massless and
|
||||
therefore do not contribute to the kinetic energy. However, the
|
||||
@ -75,215 +176,203 @@ decouple the degrees of freedom associated with the Drude oscillators
|
||||
from those of the normal atoms. Thermalizing the Drude dipoles at
|
||||
temperatures comparable to the rest of the simulation leads to several
|
||||
problems (kinetic energy transfer, very short timestep, etc.), which
|
||||
can be remediated by the "cold Drude" technique (<A HREF = "#Lamoureux">Lamoureux and
|
||||
Roux</A>).
|
||||
</P>
|
||||
<P>Two closely related models are used to represent polarization through
|
||||
"charges on a spring": the core-shell model and the Drude
|
||||
can be remediated by the “cold Drude” technique (<a class="reference internal" href="#lamoureux"><span>Lamoureux and Roux</span></a>).</p>
|
||||
<p>Two closely related models are used to represent polarization through
|
||||
“charges on a spring”: the core-shell model and the Drude
|
||||
model. Although the basic idea is the same, the core-shell model is
|
||||
normally used for ionic/crystalline materials, whereas the Drude model
|
||||
is normally used for molecular systems and fluid states. In ionic
|
||||
crystals the symmetry around each ion and the distance between them
|
||||
are such that the core-shell model is sufficiently stable. But to be
|
||||
applicable to molecular/covalent systems the Drude model includes two
|
||||
important features:
|
||||
</P>
|
||||
<OL><LI>The possibility to thermostat the additional degrees of freedom
|
||||
associated with the induced dipoles at very low temperature, in terms
|
||||
important features:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The possibility to thermostat the additional degrees of freedom</li>
|
||||
</ol>
|
||||
<blockquote>
|
||||
<div>associated with the induced dipoles at very low temperature, in terms
|
||||
of the reduced coordinates of the Drude particles with respect to
|
||||
their cores. This makes the trajectory close to that of relaxed
|
||||
induced dipoles.
|
||||
|
||||
<LI>The Drude dipoles on covalently bonded atoms interact too strongly
|
||||
induced dipoles.</div></blockquote>
|
||||
<ol class="arabic simple">
|
||||
<li>The Drude dipoles on covalently bonded atoms interact too strongly
|
||||
due to the short distances, so an atom may capture the Drude particle
|
||||
(shell) of a neighbor, or the induced dipoles within the same molecule
|
||||
may align too much. To avoid this, damping at short of the
|
||||
interactions between the point charges composing the induced dipole
|
||||
can be done by <A HREF = "#Thole">Thole</A> functions.
|
||||
</OL>
|
||||
<HR>
|
||||
|
||||
<P><B>Preparation of the data file</B>
|
||||
</P>
|
||||
<P>The data file is similar to a standard LAMMPS data file for
|
||||
<I>atom_style full</I>. The DPs and the <I>harmonic bonds</I> connecting them
|
||||
to their DC should appear in the data file as normal atoms and bonds.
|
||||
</P>
|
||||
<P>You can use the <I>polarizer</I> tool (Python script distributed with the
|
||||
can be done by <a class="reference internal" href="#thole"><span>Thole</span></a> functions.</li>
|
||||
</ol>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Preparation of the data file</strong></p>
|
||||
<p>The data file is similar to a standard LAMMPS data file for
|
||||
<em>atom_style full</em>. The DPs and the <em>harmonic bonds</em> connecting them
|
||||
to their DC should appear in the data file as normal atoms and bonds.</p>
|
||||
<p>You can use the <em>polarizer</em> tool (Python script distributed with the
|
||||
USER-DRUDE package) to convert a non-polarizable data file (here
|
||||
<I>data.102494.lmp</I>) to a polarizable data file (<I>data-p.lmp</I>)
|
||||
</P>
|
||||
<PRE>polarizer -q -f phenol.dff data.102494.lmp data-p.lmp
|
||||
</PRE>
|
||||
<P>This will automatically insert the new atoms and bonds.
|
||||
<em>data.102494.lmp</em>) to a polarizable data file (<em>data-p.lmp</em>)</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>polarizer -q -f phenol.dff data.102494.lmp data-p.lmp
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This will automatically insert the new atoms and bonds.
|
||||
The masses and charges of DCs and DPs are computed
|
||||
from <I>phenol.dff</I>, as well as the DC-DP bond constants. The file
|
||||
<I>phenol.dff</I> contains the polarizabilities of the atom types
|
||||
and the mass of the Drude particles, for instance:
|
||||
</P>
|
||||
<PRE># units: kJ/mol, A, deg
|
||||
from <em>phenol.dff</em>, as well as the DC-DP bond constants. The file
|
||||
<em>phenol.dff</em> contains the polarizabilities of the atom types
|
||||
and the mass of the Drude particles, for instance:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre># units: kJ/mol, A, deg
|
||||
# kforce is in the form k/2 r_D^2
|
||||
# type m_D/u q_D/e k_D alpha/A3 thole
|
||||
OH 0.4 -1.0 4184.0 0.63 0.67
|
||||
CA 0.4 -1.0 4184.0 1.36 2.51
|
||||
CAI 0.4 -1.0 4184.0 1.09 2.51
|
||||
</PRE>
|
||||
<P>The hydrogen atoms are absent from this file, so they will be treated
|
||||
CAI 0.4 -1.0 4184.0 1.09 2.51
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The hydrogen atoms are absent from this file, so they will be treated
|
||||
as non-polarizable atoms. In the non-polarizable data file
|
||||
<I>data.102494.lmp</I>, atom names corresponding to the atom type numbers
|
||||
have to be specified as comments at the end of lines of the <I>Masses</I>
|
||||
<em>data.102494.lmp</em>, atom names corresponding to the atom type numbers
|
||||
have to be specified as comments at the end of lines of the <em>Masses</em>
|
||||
section. You probably need to edit it to add these names. It should
|
||||
look like
|
||||
</P>
|
||||
<PRE>Masses
|
||||
</PRE>
|
||||
<PRE>1 12.011 # CAI
|
||||
look like</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">Masses</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-python"><div class="highlight"><pre>1 12.011 # CAI
|
||||
2 12.011 # CA
|
||||
3 15.999 # OH
|
||||
4 1.008 # HA
|
||||
5 1.008 # HO
|
||||
</PRE>
|
||||
<HR>
|
||||
|
||||
<P><B>Basic input file</B>
|
||||
</P>
|
||||
<P>The atom style should be set to (or derive from) <I>full</I>, so that you
|
||||
can define atomic charges and molecular bonds, angles, dihedrals...
|
||||
</P>
|
||||
<P>The <I>polarizer</I> tool also outputs certain lines related to the input
|
||||
5 1.008 # HO
|
||||
</pre></div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Basic input file</strong></p>
|
||||
<p>The atom style should be set to (or derive from) <em>full</em>, so that you
|
||||
can define atomic charges and molecular bonds, angles, dihedrals...</p>
|
||||
<p>The <em>polarizer</em> tool also outputs certain lines related to the input
|
||||
script (the use of these lines will be explained below). In order for
|
||||
LAMMPS to recognize that you are using Drude oscillators, you should
|
||||
use the fix <I>drude</I>. The command is
|
||||
</P>
|
||||
<PRE>fix DRUDE all drude C C C N N D D D
|
||||
</PRE>
|
||||
<P>The N, C, D following the <I>drude</I> keyword have the following meaning:
|
||||
use the fix <em>drude</em>. The command is</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix DRUDE all drude C C C N N D D D
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The N, C, D following the <em>drude</em> keyword have the following meaning:
|
||||
There is one tag for each atom type. This tag is C for DCs, D for DPs
|
||||
and N for non-polarizable atoms. Here the atom types 1 to 3 (C and O
|
||||
atoms) are DC, atom types 4 and 5 (H atoms) are non-polarizable and
|
||||
the atom types 6 to 8 are the newly created DPs.
|
||||
</P>
|
||||
<P>By recognizing the fix <I>drude</I>, LAMMPS will find and store matching
|
||||
the atom types 6 to 8 are the newly created DPs.</p>
|
||||
<p>By recognizing the fix <em>drude</em>, LAMMPS will find and store matching
|
||||
DC-DP pairs and will treat DP as equivalent to their DC in the
|
||||
<I>special bonds</I> relations. It may be necessary to extend the space
|
||||
<em>special bonds</em> relations. It may be necessary to extend the space
|
||||
for storing such special relations. In this case extra space should
|
||||
be reserved by using the <I>extra</I> keyword of the <I>special_bonds</I>
|
||||
be reserved by using the <em>extra</em> keyword of the <em>special_bonds</em>
|
||||
command. With our phenol, there is 1 more special neighbor for which
|
||||
space is required. Otherwise LAMMPS crashes and gives the required
|
||||
value.
|
||||
</P>
|
||||
<PRE>special_bonds lj/coul 0.0 0.0 0.5 extra 1
|
||||
</PRE>
|
||||
<P>Let us assume we want to run a simple NVT simulation at 300 K. Note
|
||||
value.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>special_bonds lj/coul 0.0 0.0 0.5 extra 1
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Let us assume we want to run a simple NVT simulation at 300 K. Note
|
||||
that Drude oscillators need to be thermalized at a low temperature in
|
||||
order to approximate a self-consistent field (SCF), therefore it is not
|
||||
possible to simulate an NVE ensemble with this package. Since dipoles
|
||||
are approximated by a charged DC-DP pair, the <I>pair_style</I> must
|
||||
include Coulomb interactions, for instance <I>lj/cut/coul/long</I> with
|
||||
<I>kspace_style pppm</I>. For example, with a cutoff of 10. and a precision
|
||||
1.e-4:
|
||||
</P>
|
||||
<PRE>pair_style lj/cut/coul/long 10.0
|
||||
kspace_style pppm 1.0e-4
|
||||
</PRE>
|
||||
<P>As compared to the non-polarizable input file, <I>pair_coeff</I> lines need
|
||||
are approximated by a charged DC-DP pair, the <em>pair_style</em> must
|
||||
include Coulomb interactions, for instance <em>lj/cut/coul/long</em> with
|
||||
<em>kspace_style pppm</em>. For example, with a cutoff of 10. and a precision
|
||||
1.e-4:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_style lj/cut/coul/long 10.0
|
||||
kspace_style pppm 1.0e-4
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>As compared to the non-polarizable input file, <em>pair_coeff</em> lines need
|
||||
to be added for the DPs. Since the DPs have no Lennard-Jones
|
||||
interactions, their <I>epsilon</I> is 0. so the only <I>pair_coeff</I> line
|
||||
that needs to be added is
|
||||
</P>
|
||||
<PRE>pair_coeff * 6* 0.0 0.0 # All-DPs
|
||||
</PRE>
|
||||
<P>Now for the thermalization, the simplest choice is to use the <A HREF = "fix_langevin_drude.html">fix
|
||||
langevin/drude</A>.
|
||||
</P>
|
||||
<PRE>fix LANG all langevin/drude 300. 100 12435 1. 20 13977
|
||||
</PRE>
|
||||
<P>This applies a Langevin thermostat at temperature 300. to the centers
|
||||
interactions, their <em>epsilon</em> is 0. so the only <em>pair_coeff</em> line
|
||||
that needs to be added is</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_coeff * 6* 0.0 0.0 # All-DPs
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Now for the thermalization, the simplest choice is to use the <a class="reference internal" href="fix_langevin_drude.html"><em>fix langevin/drude</em></a>.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix LANG all langevin/drude 300. 100 12435 1. 20 13977
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This applies a Langevin thermostat at temperature 300. to the centers
|
||||
of mass of the DC-DP pairs, with relaxation time 100 and with random
|
||||
seed 12345. This fix applies also a Langevin thermostat at temperature
|
||||
1. to the relative motion of the DPs around their DCs, with relaxation
|
||||
time 20 and random seed 13977. Only the DCs and non-polarizable
|
||||
atoms need to be in this fix's group. LAMMPS will thermostate the DPs
|
||||
atoms need to be in this fix’s group. LAMMPS will thermostate the DPs
|
||||
together with their DC. For this, ghost atoms need to know their
|
||||
velocities. Thus you need to add the following command:
|
||||
</P>
|
||||
<PRE>comm_modify vel yes
|
||||
</PRE>
|
||||
<P>In order to avoid that the center of mass of the whole system
|
||||
velocities. Thus you need to add the following command:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>comm_modify vel yes
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>In order to avoid that the center of mass of the whole system
|
||||
drifts due to the random forces of the Langevin thermostat on DCs, you
|
||||
can add the <I>zero yes</I> option at the end of the fix line.
|
||||
</P>
|
||||
<P>If the fix <I>shake</I> is used to constrain the C-H bonds, it should be
|
||||
invoked after the fix <I>langevin/drude</I> for more accuracy.
|
||||
</P>
|
||||
<PRE>fix SHAKE ATOMS shake 0.0001 20 0 t 4 5
|
||||
</PRE>
|
||||
<P>IMPORTANT NOTE: The group of the fix <I>shake</I> must not include the DPs.
|
||||
If the group <I>ATOMS</I> is defined by non-DPs atom types, you could use
|
||||
</P>
|
||||
<P>Since the fix <I>langevin/drude</I> does not perform time integration (just
|
||||
can add the <em>zero yes</em> option at the end of the fix line.</p>
|
||||
<p>If the fix <em>shake</em> is used to constrain the C-H bonds, it should be
|
||||
invoked after the fix <em>langevin/drude</em> for more accuracy.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix SHAKE ATOMS shake 0.0001 20 0 t 4 5
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition warning">
|
||||
<p class="first admonition-title">Warning</p>
|
||||
<p class="last">The group of the fix <em>shake</em> must not include the DPs.
|
||||
If the group <em>ATOMS</em> is defined by non-DPs atom types, you could use</p>
|
||||
</div>
|
||||
<p>Since the fix <em>langevin/drude</em> does not perform time integration (just
|
||||
modification of forces but no position/velocity updates), the fix
|
||||
<I>nve</I> should be used in conjunction.
|
||||
</P>
|
||||
<PRE>fix NVE all nve
|
||||
</PRE>
|
||||
<P>Finally, do not forget to update the atom type elements if you use
|
||||
them in a <I>dump_modify ... element ...</I> command, by adding the element
|
||||
type of the DPs. Here for instance
|
||||
</P>
|
||||
<PRE>dump DUMP all custom 10 dump.lammpstrj id mol type element x y z ix iy iz
|
||||
dump_modify DUMP element C C O H H D D D
|
||||
</PRE>
|
||||
<P>The input file should now be ready for use!
|
||||
</P>
|
||||
<P>You will notice that the global temperature <I>thermo_temp</I> computed by
|
||||
<em>nve</em> should be used in conjunction.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix NVE all nve
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Finally, do not forget to update the atom type elements if you use
|
||||
them in a <em>dump_modify ... element ...</em> command, by adding the element
|
||||
type of the DPs. Here for instance</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>dump DUMP all custom 10 dump.lammpstrj id mol type element x y z ix iy iz
|
||||
dump_modify DUMP element C C O H H D D D
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The input file should now be ready for use!</p>
|
||||
<p>You will notice that the global temperature <em>thermo_temp</em> computed by
|
||||
LAMMPS is not 300. K as wanted. This is because LAMMPS treats DPs as
|
||||
standard atoms in his default compute. If you want to output the
|
||||
temperatures of the DC-DP pair centers of mass and of the DPs relative
|
||||
to their DCs, you should use the <A HREF = "compute_temp_drude.html">compute
|
||||
temp_drude</A>
|
||||
</P>
|
||||
<PRE>compute TDRUDE all temp/drude
|
||||
</PRE>
|
||||
<P>And then output the correct temperatures of the Drude oscillators
|
||||
using <I>thermo_style custom</I> with respectively <I>c_TDRUDE[1]</I> and
|
||||
<I>c_TDRUDE[2]</I>. These should be close to 300.0 and 1.0 on average.
|
||||
</P>
|
||||
<PRE>thermo_style custom step temp c_TDRUDE[1] c_TDRUDE[2]
|
||||
</PRE>
|
||||
<HR>
|
||||
|
||||
<P><B>Thole screening</B>
|
||||
</P>
|
||||
<P>Dipolar interactions represented by point charges on springs may not
|
||||
to their DCs, you should use the <a class="reference internal" href="compute_temp_drude.html"><em>compute temp_drude</em></a></p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>compute TDRUDE all temp/drude
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>And then output the correct temperatures of the Drude oscillators
|
||||
using <em>thermo_style custom</em> with respectively <em>c_TDRUDE[1]</em> and
|
||||
<em>c_TDRUDE[2]</em>. These should be close to 300.0 and 1.0 on average.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>thermo_style custom step temp c_TDRUDE[1] c_TDRUDE[2]
|
||||
</pre></div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Thole screening</strong></p>
|
||||
<p>Dipolar interactions represented by point charges on springs may not
|
||||
be stable, for example if the atomic polarizability is too high for
|
||||
instance, a DP can escape from its DC and be captured by another DC,
|
||||
which makes the force and energy diverge and the simulation
|
||||
crash. Even without reaching this extreme case, the correlation
|
||||
between nearby dipoles on the same molecule may be exagerated. Often,
|
||||
special bond relations prevent bonded neighboring atoms to see the
|
||||
charge of each other's DP, so that the problem does not always appear.
|
||||
charge of each other’s DP, so that the problem does not always appear.
|
||||
It is possible to use screened dipole dipole interactions by using the
|
||||
<A HREF = "pair_thole.html"><I>pair_style thole</I></A>. This is implemented as a
|
||||
<a class="reference internal" href="pair_thole.html"><em>*pair_style thole*</em></a>. This is implemented as a
|
||||
correction to the Coulomb pair_styles, which dampens at short distance
|
||||
the interactions between the charges representing the induced dipoles.
|
||||
It is to be used as <I>hybrid/overlay</I> with any standard <I>coul</I> pair
|
||||
style. In our example, we would use
|
||||
</P>
|
||||
<PRE>pair_style hybrid/overlay lj/cut/coul/long 10.0 thole 2.6 10.0
|
||||
</PRE>
|
||||
<P>This tells LAMMPS that we are using two pair_styles. The first one is
|
||||
as above (<I>lj/cut/coul/long 10.0</I>). The second one is a <I>thole</I>
|
||||
pair_style with default screening factor 2.6 (<A HREF = "#Noskov">Noskov</A>) and
|
||||
cutoff 10.0.
|
||||
</P>
|
||||
<P>Since <I>hybrid/overlay</I> does not support mixing rules, the interaction
|
||||
coefficients of all the pairs of atom types with i < j should be
|
||||
explicitly defined. The output of the <I>polarizer</I> script can be used
|
||||
to complete the <I>pair_coeff</I> section of the input file. In our
|
||||
example, this will look like:
|
||||
</P>
|
||||
<PRE>pair_coeff 1 1 lj/cut/coul/long 0.0700 3.550
|
||||
It is to be used as <em>hybrid/overlay</em> with any standard <em>coul</em> pair
|
||||
style. In our example, we would use</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_style hybrid/overlay lj/cut/coul/long 10.0 thole 2.6 10.0
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This tells LAMMPS that we are using two pair_styles. The first one is
|
||||
as above (<em>lj/cut/coul/long 10.0</em>). The second one is a <em>thole</em>
|
||||
pair_style with default screening factor 2.6 (<a class="reference internal" href="#noskov"><span>Noskov</span></a>) and
|
||||
cutoff 10.0.</p>
|
||||
<p>Since <em>hybrid/overlay</em> does not support mixing rules, the interaction
|
||||
coefficients of all the pairs of atom types with i < j should be
|
||||
explicitly defined. The output of the <em>polarizer</em> script can be used
|
||||
to complete the <em>pair_coeff</em> section of the input file. In our
|
||||
example, this will look like:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_coeff 1 1 lj/cut/coul/long 0.0700 3.550
|
||||
pair_coeff 1 2 lj/cut/coul/long 0.0700 3.550
|
||||
pair_coeff 1 3 lj/cut/coul/long 0.1091 3.310
|
||||
pair_coeff 1 4 lj/cut/coul/long 0.0458 2.985
|
||||
@ -315,153 +404,192 @@ pair_coeff 6 7 thole 1.218 2.510
|
||||
pair_coeff 6 8 thole 0.829 1.590
|
||||
pair_coeff 7 7 thole 1.360 2.510
|
||||
pair_coeff 7 8 thole 0.926 1.590
|
||||
pair_coeff 8 8 thole 0.630 0.670
|
||||
</PRE>
|
||||
<P>For the <I>thole</I> pair style the coefficients are
|
||||
</P>
|
||||
<OL><LI>the atom polarizability in units of cubic length
|
||||
|
||||
<LI>the screening factor of the Thole function (optional, default value
|
||||
specified by the pair_style command)
|
||||
|
||||
<LI>the cutoff (optional, default value defined by the pair_style command)
|
||||
|
||||
</OL>
|
||||
<P>The special neighbors have charge-charge and charge-dipole
|
||||
interactions screened by the <I>coul</I> factors of the <I>special_bonds</I>
|
||||
pair_coeff 8 8 thole 0.630 0.670
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For the <em>thole</em> pair style the coefficients are</p>
|
||||
<ol class="arabic simple">
|
||||
<li>the atom polarizability in units of cubic length</li>
|
||||
<li>the screening factor of the Thole function (optional, default value
|
||||
specified by the pair_style command)</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>the cutoff (optional, default value defined by the pair_style command)</li>
|
||||
</ul>
|
||||
<p>The special neighbors have charge-charge and charge-dipole
|
||||
interactions screened by the <em>coul</em> factors of the <em>special_bonds</em>
|
||||
command (0.0, 0.0, and 0.5 in the example above). Without using the
|
||||
pair_style <I>thole</I>, dipole-dipole interactions are screened by the
|
||||
same factor. By using the pair_style <I>thole</I>, dipole-dipole
|
||||
interactions are screened by Thole's function, whatever their special
|
||||
pair_style <em>thole</em>, dipole-dipole interactions are screened by the
|
||||
same factor. By using the pair_style <em>thole</em>, dipole-dipole
|
||||
interactions are screened by Thole’s function, whatever their special
|
||||
relationship (except within each DC-DP pair of course). Consider for
|
||||
example 1-2 neighbors: using the pair_style <I>thole</I>, their dipoles
|
||||
will see each other (despite the <I>coul</I> factor being 0.) and the
|
||||
interactions between these dipoles will be damped by Thole's function.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P><B>Thermostats and barostats</B>
|
||||
</P>
|
||||
<P>Using a Nose-Hoover barostat with the <I>langevin/drude</I> thermostat is
|
||||
straightforward using fix <I>nph</I> instead of <I>nve</I>. For example:
|
||||
</P>
|
||||
<PRE>fix NPH all nph iso 1. 1. 500
|
||||
</PRE>
|
||||
<P>It is also possible to use a Nose-Hoover instead of a Langevin
|
||||
thermostat. This requires to use <A HREF = "fix_drude_transform.html"><I>fix
|
||||
drude/transform</I></A> just before and after the
|
||||
time intergation fixes. The <I>fix drude/transform/direct</I> converts the
|
||||
example 1-2 neighbors: using the pair_style <em>thole</em>, their dipoles
|
||||
will see each other (despite the <em>coul</em> factor being 0.) and the
|
||||
interactions between these dipoles will be damped by Thole’s function.</p>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Thermostats and barostats</strong></p>
|
||||
<p>Using a Nose-Hoover barostat with the <em>langevin/drude</em> thermostat is
|
||||
straightforward using fix <em>nph</em> instead of <em>nve</em>. For example:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix NPH all nph iso 1. 1. 500
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>It is also possible to use a Nose-Hoover instead of a Langevin
|
||||
thermostat. This requires to use <a class="reference internal" href="fix_drude_transform.html"><em>*fix drude/transform*</em></a> just before and after the
|
||||
time intergation fixes. The <em>fix drude/transform/direct</em> converts the
|
||||
atomic masses, positions, velocities and forces into a reduced
|
||||
representation, where the DCs transform into the centers of mass of
|
||||
the DC-DP pairs and the DPs transform into their relative position
|
||||
with respect to their DC. The <I>fix drude/transform/inverse</I> performs
|
||||
with respect to their DC. The <em>fix drude/transform/inverse</em> performs
|
||||
the reverse transformation. For a NVT simulation, with the DCs and
|
||||
atoms at 300 K and the DPs at 1 K relative to their DC one would use
|
||||
</P>
|
||||
<PRE>fix DIRECT all drude/transform/direct
|
||||
atoms at 300 K and the DPs at 1 K relative to their DC one would use</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix DIRECT all drude/transform/direct
|
||||
fix NVT1 ATOMS nvt temp 300. 300. 100
|
||||
fix NVT2 DRUDES nvt temp 1. 1. 20
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</PRE>
|
||||
<P>For our phenol example, the groups would be defined as
|
||||
</P>
|
||||
<PRE>group ATOMS type 1 2 3 4 5 # DCs and non-polarizable atoms
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For our phenol example, the groups would be defined as</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>group ATOMS type 1 2 3 4 5 # DCs and non-polarizable atoms
|
||||
group CORES type 1 2 3 # DCs
|
||||
group DRUDES type 6 7 8 # DPs
|
||||
</PRE>
|
||||
<P>Note that with the fixes <I>drude/transform</I>, it is not required to
|
||||
specify <I>comm_modify vel yes</I> because the fixes do it anyway (several
|
||||
group DRUDES type 6 7 8 # DPs
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Note that with the fixes <em>drude/transform</em>, it is not required to
|
||||
specify <em>comm_modify vel yes</em> because the fixes do it anyway (several
|
||||
times and for the forces also). To avoid the flying ice cube artifact
|
||||
<A HREF = "#Lamoureux">(Lamoureux)</A>, where the atoms progressively freeze and the
|
||||
center of mass of the whole system drifts faster and faster, the <I>fix
|
||||
momentum</I> can be used. For instance:
|
||||
</P>
|
||||
<PRE>fix MOMENTUM all momentum 100 linear 1 1 1
|
||||
</PRE>
|
||||
<P>It is a bit more tricky to run a NPT simulation with Nose-Hoover
|
||||
<a class="reference internal" href="#lamoureux"><span>(Lamoureux)</span></a>, where the atoms progressively freeze and the
|
||||
center of mass of the whole system drifts faster and faster, the <em>fix
|
||||
momentum</em> can be used. For instance:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix MOMENTUM all momentum 100 linear 1 1 1
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>It is a bit more tricky to run a NPT simulation with Nose-Hoover
|
||||
barostat and thermostat. First, the volume should be integrated only
|
||||
once. So the fix for DCs and atoms should be <I>npt</I> while the fix for
|
||||
DPs should be <I>nvt</I> (or vice versa). Second, the <I>fix npt</I> computes a
|
||||
once. So the fix for DCs and atoms should be <em>npt</em> while the fix for
|
||||
DPs should be <em>nvt</em> (or vice versa). Second, the <em>fix npt</em> computes a
|
||||
global pressure and thus a global temperature whatever the fix group.
|
||||
We do want the pressure to correspond to the whole system, but we want
|
||||
the temperature to correspond to the fix group only. We must then use
|
||||
the <I>fix_modify</I> command for this. In the end, the block of
|
||||
instructions for thermostating and barostating will look like
|
||||
</P>
|
||||
<PRE>compute TATOMS ATOMS temp
|
||||
the <em>fix_modify</em> command for this. In the end, the block of
|
||||
instructions for thermostating and barostating will look like</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>compute TATOMS ATOMS temp
|
||||
fix DIRECT all drude/transform/direct
|
||||
fix NPT ATOMS npt temp 300. 300. 100 iso 1. 1. 500
|
||||
fix_modify NPT temp TATOMS press thermo_press
|
||||
fix NVT DRUDES nvt temp 1. 1. 20
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</PRE>
|
||||
<HR>
|
||||
|
||||
<P><B>Rigid bodies</B>
|
||||
</P>
|
||||
<P>You may want to simulate molecules as rigid bodies (but polarizable).
|
||||
Common cases are water models such as <A HREF = "#SWM4-NDP">SWM4-NDP</A>, which is a
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</pre></div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Rigid bodies</strong></p>
|
||||
<p>You may want to simulate molecules as rigid bodies (but polarizable).
|
||||
Common cases are water models such as <a class="reference internal" href="#swm4-ndp"><span>SWM4-NDP</span></a>, which is a
|
||||
kind of polarizable TIP4P water. The rigid bodies and the DPs should
|
||||
be integrated separately, even with the Langevin thermostat. Let us
|
||||
review the different thermostats and ensemble combinations.
|
||||
</P>
|
||||
<P>NVT ensemble using Langevin thermostat:
|
||||
</P>
|
||||
<PRE>comm_modify vel yes
|
||||
review the different thermostats and ensemble combinations.</p>
|
||||
<p>NVT ensemble using Langevin thermostat:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>comm_modify vel yes
|
||||
fix LANG all langevin/drude 300. 100 12435 1. 20 13977
|
||||
fix RIGID ATOMS rigid/nve/small molecule
|
||||
fix NVE DRUDES nve
|
||||
</PRE>
|
||||
<P>NVT ensemble using Nose-Hoover thermostat:
|
||||
</P>
|
||||
<PRE>fix DIRECT all drude/transform/direct
|
||||
fix NVE DRUDES nve
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>NVT ensemble using Nose-Hoover thermostat:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>fix DIRECT all drude/transform/direct
|
||||
fix RIGID ATOMS rigid/nvt/small molecule temp 300. 300. 100
|
||||
fix NVT DRUDES nvt temp 1. 1. 20
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</PRE>
|
||||
<P>NPT ensemble with Langevin thermostat:
|
||||
</P>
|
||||
<PRE>comm_modify vel yes
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>NPT ensemble with Langevin thermostat:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>comm_modify vel yes
|
||||
fix LANG all langevin/drude 300. 100 12435 1. 20 13977
|
||||
fix RIGID ATOMS rigid/nph/small molecule iso 1. 1. 500
|
||||
fix NVE DRUDES nve
|
||||
</PRE>
|
||||
<P>NPT ensemble using Nose-Hoover thermostat:
|
||||
</P>
|
||||
<PRE>compute TATOM ATOMS temp
|
||||
fix NVE DRUDES nve
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>NPT ensemble using Nose-Hoover thermostat:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>compute TATOM ATOMS temp
|
||||
fix DIRECT all drude/transform/direct
|
||||
fix RIGID ATOMS rigid/npt/small molecule temp 300. 300. 100 iso 1. 1. 500
|
||||
fix_modify RIGID temp TATOM press thermo_press
|
||||
fix NVT DRUDES nvt temp 1. 1. 20
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</PRE>
|
||||
<HR>
|
||||
fix INVERSE all drude/transform/inverse
|
||||
</pre></div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<p id="lamoureux"><strong>(Lamoureux)</strong> Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003)</p>
|
||||
<p id="schroeder"><strong>(Schroeder)</strong> Schr&ouml;der and Steinhauser, J Chem Phys, 133,
|
||||
154511 (2010).</p>
|
||||
<dl class="docutils" id="jiang">
|
||||
<dt><strong>(Jiang)</strong> Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux,</dt>
|
||||
<dd>J Phys Chem Lett, 2, 87-92 (2011).</dd>
|
||||
</dl>
|
||||
<p id="thole"><strong>(Thole)</strong> Chem Phys, 59, 341 (1981).</p>
|
||||
<p id="noskov"><strong>(Noskov)</strong> Noskov, Lamoureux and Roux, J Phys Chem B, 109, 6705 (2005).</p>
|
||||
<p id="swm4-ndp"><strong>(SWM4-NDP)</strong> Lamoureux, Harder, Vorobyov, Roux, MacKerell, Chem Phys
|
||||
Let, 418, 245-249 (2006)</p>
|
||||
|
||||
<A NAME = "Lamoureux"></A>
|
||||
|
||||
<P><B>(Lamoureux)</B> Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003)
|
||||
</P>
|
||||
<A NAME = "Schroeder"></A>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<P><B>(Schroeder)</B> Schröder and Steinhauser, J Chem Phys, 133,
|
||||
154511 (2010).
|
||||
</P>
|
||||
<A NAME = "Jiang"></A>
|
||||
<hr/>
|
||||
|
||||
<P><B>(Jiang)</B> Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux,
|
||||
J Phys Chem Lett, 2, 87-92 (2011).
|
||||
</P>
|
||||
<A NAME = "Thole"></A>
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright .
|
||||
</p>
|
||||
</div>
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
<P><B>(Thole)</B> Chem Phys, 59, 341 (1981).
|
||||
</P>
|
||||
<A NAME = "Noskov"></A>
|
||||
</footer>
|
||||
|
||||
<P><B>(Noskov)</B> Noskov, Lamoureux and Roux, J Phys Chem B, 109, 6705 (2005).
|
||||
</P>
|
||||
<A NAME = "SWM4-NDP"></A>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<P><B>(SWM4-NDP)</B> Lamoureux, Harder, Vorobyov, Roux, MacKerell, Chem Phys
|
||||
Let, 418, 245-249 (2006)
|
||||
</P>
|
||||
</HTML>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'15 May 2015 version',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script>
|
||||
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script>
|
||||
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.StickyNav.enable();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user