<liclass="toctree-l2"><aclass="reference internal"href="#submitting-new-features-for-inclusion-in-lammps">10.15. Submitting new features for inclusion in LAMMPS</a></li>
</ul>
</li>
<liclass="toctree-l1"><aclass="reference internal"href="Section_python.html">11. Python interface to LAMMPS</a></li>
<divclass="line">10.6 <aclass="reference internal"href="#mod-6"><span>Fix styles</span></a> which include integrators, temperature and pressure control, force constraints, boundary conditions, diagnostic output, etc</div>
<td>retreive extra info unique to this atom style (optional)</td>
</tr>
<trclass="row-odd"><td>pack_border</td>
<td>store an atom’s info in a buffer communicated on neighbor re-builds (required)</td>
</tr>
<trclass="row-even"><td>pack_border_vel</td>
<td>add velocity info to buffer (required)</td>
</tr>
<trclass="row-odd"><td>pack_border_hybrid</td>
<td>store extra info unique to this atom style (optional)</td>
</tr>
<trclass="row-even"><td>unpack_border</td>
<td>retrieve an atom’s info from the buffer (required)</td>
</tr>
<trclass="row-odd"><td>unpack_border_vel</td>
<td>also retrieve velocity info (required)</td>
</tr>
<trclass="row-even"><td>unpack_border_hybrid</td>
<td>retreive extra info unique to this atom style (optional)</td>
</tr>
<trclass="row-odd"><td>pack_exchange</td>
<td>store all an atom’s info to migrate to another processor (required)</td>
</tr>
<trclass="row-even"><td>unpack_exchange</td>
<td>retrieve an atom’s info from the buffer (required)</td>
</tr>
<trclass="row-odd"><td>size_restart</td>
<td>number of restart quantities associated with proc’s atoms (required)</td>
</tr>
<trclass="row-even"><td>pack_restart</td>
<td>pack atom quantities into a buffer (required)</td>
</tr>
<trclass="row-odd"><td>unpack_restart</td>
<td>unpack atom quantities from a buffer (required)</td>
</tr>
<trclass="row-even"><td>create_atom</td>
<td>create an individual atom of this style (required)</td>
</tr>
<trclass="row-odd"><td>data_atom</td>
<td>parse an atom line from the data file (required)</td>
</tr>
<trclass="row-even"><td>data_atom_hybrid</td>
<td>parse additional atom info unique to this atom style (optional)</td>
</tr>
<trclass="row-odd"><td>data_vel</td>
<td>parse one line of velocity information from data file (optional)</td>
</tr>
<trclass="row-even"><td>data_vel_hybrid</td>
<td>parse additional velocity data unique to this atom style (optional)</td>
</tr>
<trclass="row-odd"><td>memory_usage</td>
<td>tally memory allocated by atom arrays (required)</td>
</tr>
</tbody>
</table>
<p>The constructor of the derived class sets values for several variables
that you must set when defining a new atom style, which are documented
in atom_vec.h. New atom arrays are defined in atom.cpp. Search for
the word “customize” and you will find locations you will need to
modify.</p>
<divclass="admonition note">
<pclass="first admonition-title">Note</p>
<pclass="last">It is possible to add some attributes, such as a molecule ID, to
atom styles that do not have them via the <aclass="reference internal"href="fix_property_atom.html"><em>fix property/atom</em></a> command. This command also
allows new custom attributes consisting of extra integer or
floating-point values to be added to atoms. See the <aclass="reference internal"href="fix_property_atom.html"><em>fix property/atom</em></a> doc page for examples of cases
where this is useful and details on how to initialize, access, and
output the custom values.</p>
</div>
<p>New <aclass="reference internal"href="pair_style.html"><em>pair styles</em></a>, <aclass="reference internal"href="fix.html"><em>fixes</em></a>, or
<aclass="reference internal"href="compute.html"><em>computes</em></a> can be added to LAMMPS, as discussed below.
The code for these classes can use the per-atom properties defined by
fix property/atom. The Atom class has a find_custom() method that is
useful in this context:</p>
<divclass="highlight-python"><divclass="highlight"><pre>int index = atom->find_custom(char *name, int &flag);
</pre></div>
</div>
<p>The “name” of a custom attribute, as specified in the <aclass="reference internal"href="fix_property_atom.html"><em>fix property/atom</em></a> command, is checked to verify
that it exists and its index is returned. The method also sets flag =
0/1 depending on whether it is an integer or floating-point attribute.
The vector of values associated with the attribute can then be
<spanid="mod-2"></span><h2>10.2. Bond, angle, dihedral, improper potentials<aclass="headerlink"href="#bond-angle-dihedral-improper-potentials"title="Permalink to this headline">¶</a></h2>
<p>Classes that compute molecular interactions are derived from the Bond,
Angle, Dihedral, and Improper classes. New styles can be created to
add new potentials to LAMMPS.</p>
<p>Bond_harmonic.cpp is the simplest example of a bond style. Ditto for
the harmonic forms of the angle, dihedral, and improper style
commands.</p>
<p>Here is a brief description of common methods you define in your
new derived class. See bond.h, angle.h, dihedral.h, and improper.h
for details and specific additional methods.</p>
<tableborder="1"class="docutils">
<colgroup>
<colwidth="23%"/>
<colwidth="77%"/>
</colgroup>
<tbodyvalign="top">
<trclass="row-odd"><td>init</td>
<td>check if all coefficients are set, calls <em>init_style</em> (optional)</td>
</tr>
<trclass="row-even"><td>init_style</td>
<td>check if style specific conditions are met (optional)</td>
</tr>
<trclass="row-odd"><td>compute</td>
<td>compute the molecular interactions (required)</td>
</tr>
<trclass="row-even"><td>settings</td>
<td>apply global settings for all types (optional)</td>
</tr>
<trclass="row-odd"><td>coeff</td>
<td>set coefficients for one type (required)</td>
</tr>
<trclass="row-even"><td>equilibrium_distance</td>
<td>length of bond, used by SHAKE (required, bond only)</td>
</tr>
<trclass="row-odd"><td>equilibrium_angle</td>
<td>opening of angle, used by SHAKE (required, angle only)</td>
</tr>
<trclass="row-even"><td>write & read_restart</td>
<td>writes/reads coeffs to restart files (required)</td>
</tr>
<trclass="row-odd"><td>single</td>
<td>force and energy of a single bond or angle (required, bond or angle only)</td>
</tr>
<trclass="row-even"><td>memory_usage</td>
<td>tally memory allocated by the style (optional)</td>
</tr>
</tbody>
</table>
<hrclass="docutils"/>
</div>
<divclass="section"id="compute-styles">
<spanid="mod-3"></span><h2>10.3. Compute styles<aclass="headerlink"href="#compute-styles"title="Permalink to this headline">¶</a></h2>
<p>Classes that compute scalar and vector quantities like temperature
and the pressure tensor, as well as classes that compute per-atom
quantities like kinetic energy and the centro-symmetry parameter
are derived from the Compute class. New styles can be created
to add new calculations to LAMMPS.</p>
<p>Compute_temp.cpp is a simple example of computing a scalar
temperature. Compute_ke_atom.cpp is a simple example of computing
per-atom kinetic energy.</p>
<p>Here is a brief description of methods you define in your new derived
class. See compute.h for details.</p>
<tableborder="1"class="docutils">
<colgroup>
<colwidth="24%"/>
<colwidth="76%"/>
</colgroup>
<tbodyvalign="top">
<trclass="row-odd"><td>init</td>
<td>perform one time setup (required)</td>
</tr>
<trclass="row-even"><td>init_list</td>
<td>neighbor list setup, if needed (optional)</td>
</tr>
<trclass="row-odd"><td>compute_scalar</td>
<td>compute a scalar quantity (optional)</td>
</tr>
<trclass="row-even"><td>compute_vector</td>
<td>compute a vector of quantities (optional)</td>
</tr>
<trclass="row-odd"><td>compute_peratom</td>
<td>compute one or more quantities per atom (optional)</td>
</tr>
<trclass="row-even"><td>compute_local</td>
<td>compute one or more quantities per processor (optional)</td>
</tr>
<trclass="row-odd"><td>pack_comm</td>
<td>pack a buffer with items to communicate (optional)</td>
</tr>
<trclass="row-even"><td>unpack_comm</td>
<td>unpack the buffer (optional)</td>
</tr>
<trclass="row-odd"><td>pack_reverse</td>
<td>pack a buffer with items to reverse communicate (optional)</td>
</tr>
<trclass="row-even"><td>unpack_reverse</td>
<td>unpack the buffer (optional)</td>
</tr>
<trclass="row-odd"><td>remove_bias</td>
<td>remove velocity bias from one atom (optional)</td>
</tr>
<trclass="row-even"><td>remove_bias_all</td>
<td>remove velocity bias from all atoms in group (optional)</td>
</tr>
<trclass="row-odd"><td>restore_bias</td>
<td>restore velocity bias for one atom after remove_bias (optional)</td>
</tr>
<trclass="row-even"><td>restore_bias_all</td>
<td>same as before, but for all atoms in group (optional)</td>
</tr>
<trclass="row-odd"><td>pair_tally_callback</td>
<td>callback function for <em>tally</em>-style computes (optional).</td>
</tr>
<trclass="row-even"><td>memory_usage</td>
<td>tally memory usage (optional)</td>
</tr>
</tbody>
</table>
<p>Tally-style computes are a special case, as their computation is done
in two stages: the callback function is registered with the pair style
and then called from the Pair::ev_tally() function, which is called for
each pair after force and energy has been computed for this pair. Then
the tallied values are retrieved with the standard compute_scalar or
compute_vector or compute_peratom methods. The USER-TALLY package
provides <ahref="#id7"><spanclass="problematic"id="id8">*</span></a>examples*_compute_tally.html for utilizing this mechanism.</p>
<hrclass="docutils"/>
</div>
<divclass="section"id="dump-styles">
<spanid="mod-4"></span><h2>10.4. Dump styles<aclass="headerlink"href="#dump-styles"title="Permalink to this headline">¶</a></h2>
<spanid="mod-5"></span><h2>10.5. Dump custom output options<aclass="headerlink"href="#dump-custom-output-options"title="Permalink to this headline">¶</a></h2>
<p>Classes that dump per-atom info to files are derived from the Dump
class. To dump new quantities or in a new format, a new derived dump
class can be added, but it is typically simpler to modify the
DumpCustom class contained in the dump_custom.cpp file.</p>
<p>Dump_atom.cpp is a simple example of a derived dump class.</p>
<p>Here is a brief description of methods you define in your new derived
class. See dump.h for details.</p>
<tableborder="1"class="docutils">
<colgroup>
<colwidth="22%"/>
<colwidth="78%"/>
</colgroup>
<tbodyvalign="top">
<trclass="row-odd"><td>write_header</td>
<td>write the header section of a snapshot of atoms</td>
</tr>
<trclass="row-even"><td>count</td>
<td>count the number of lines a processor will output</td>
</tr>
<trclass="row-odd"><td>pack</td>
<td>pack a proc’s output data into a buffer</td>
</tr>
<trclass="row-even"><td>write_data</td>
<td>write a proc’s data to a file</td>
</tr>
</tbody>
</table>
<p>See the <aclass="reference internal"href="dump.html"><em>dump</em></a> command and its <em>custom</em> style for a list of
keywords for atom information that can already be dumped by
DumpCustom. It includes options to dump per-atom info from Compute
classes, so adding a new derived Compute class is one way to calculate
new quantities to dump.</p>
<p>Alternatively, you can add new keywords to the dump custom command.
Search for the word “customize” in dump_custom.cpp to see the
half-dozen or so locations where code will need to be added.</p>
<hrclass="docutils"/>
</div>
<divclass="section"id="fix-styles">
<spanid="mod-6"></span><h2>10.6. Fix styles<aclass="headerlink"href="#fix-styles"title="Permalink to this headline">¶</a></h2>
<p>In LAMMPS, a “fix” is any operation that is computed during
timestepping that alters some property of the system. Essentially
everything that happens during a simulation besides force computation,
neighbor list construction, and output, is a “fix”. This includes
time integration (update of coordinates and velocities), force
constraints or boundary conditions (SHAKE or walls), and diagnostics
(compute a diffusion coefficient). New styles can be created to add
new options to LAMMPS.</p>
<p>Fix_setforce.cpp is a simple example of setting forces on atoms to
prescribed values. There are dozens of fix options already in LAMMPS;
choose one as a template that is similar to what you want to
implement.</p>
<p>Here is a brief description of methods you can define in your new
derived class. See fix.h for details.</p>
<tableborder="1"class="docutils">
<colgroup>
<colwidth="22%"/>
<colwidth="78%"/>
</colgroup>
<tbodyvalign="top">
<trclass="row-odd"><td>setmask</td>
<td>determines when the fix is called during the timestep (required)</td>
</tr>
<trclass="row-even"><td>init</td>
<td>initialization before a run (optional)</td>
</tr>
<trclass="row-odd"><td>setup_pre_exchange</td>
<td>called before atom exchange in setup (optional)</td>
</tr>
<trclass="row-even"><td>setup_pre_force</td>
<td>called before force computation in setup (optional)</td>
</tr>
<trclass="row-odd"><td>setup</td>
<td>called immediately before the 1st timestep and after forces are computed (optional)</td>
</tr>
<trclass="row-even"><td>min_setup_pre_force</td>
<td>like setup_pre_force, but for minimizations instead of MD runs (optional)</td>
</tr>
<trclass="row-odd"><td>min_setup</td>
<td>like setup, but for minimizations instead of MD runs (optional)</td>
</tr>
<trclass="row-even"><td>initial_integrate</td>
<td>called at very beginning of each timestep (optional)</td>
</tr>
<trclass="row-odd"><td>pre_exchange</td>
<td>called before atom exchange on re-neighboring steps (optional)</td>
</tr>
<trclass="row-even"><td>pre_neighbor</td>
<td>called before neighbor list build (optional)</td>
</tr>
<trclass="row-odd"><td>pre_force</td>
<td>called before pair & molecular forces are computed (optional)</td>
</tr>
<trclass="row-even"><td>post_force</td>
<td>called after pair & molecular forces are computed and communicated (optional)</td>
</tr>
<trclass="row-odd"><td>final_integrate</td>
<td>called at end of each timestep (optional)</td>
</tr>
<trclass="row-even"><td>end_of_step</td>
<td>called at very end of timestep (optional)</td>
</tr>
<trclass="row-odd"><td>write_restart</td>
<td>dumps fix info to restart file (optional)</td>
</tr>
<trclass="row-even"><td>restart</td>
<td>uses info from restart file to re-initialize the fix (optional)</td>
</tr>
<trclass="row-odd"><td>grow_arrays</td>
<td>allocate memory for atom-based arrays used by fix (optional)</td>
</tr>
<trclass="row-even"><td>copy_arrays</td>
<td>copy atom info when an atom migrates to a new processor (optional)</td>
</tr>
<trclass="row-odd"><td>pack_exchange</td>
<td>store atom’s data in a buffer (optional)</td>
</tr>
<trclass="row-even"><td>unpack_exchange</td>
<td>retrieve atom’s data from a buffer (optional)</td>
</tr>
<trclass="row-odd"><td>pack_restart</td>
<td>store atom’s data for writing to restart file (optional)</td>
</tr>
<trclass="row-even"><td>unpack_restart</td>
<td>retrieve atom’s data from a restart file buffer (optional)</td>
</tr>
<trclass="row-odd"><td>size_restart</td>
<td>size of atom’s data (optional)</td>
</tr>
<trclass="row-even"><td>maxsize_restart</td>
<td>max size of atom’s data (optional)</td>
</tr>
<trclass="row-odd"><td>setup_pre_force_respa</td>
<td>same as setup_pre_force, but for rRESPA (optional)</td>
<spanid="mod-13"></span><h2>10.13. Thermodynamic output options<aclass="headerlink"href="#thermodynamic-output-options"title="Permalink to this headline">¶</a></h2>
<p>There is one class that computes and prints thermodynamic information
to the screen and log file; see the file thermo.cpp.</p>
<p>There are two styles defined in thermo.cpp: “one” and “multi”. There
is also a flexible “custom” style which allows the user to explicitly
list keywords for quantities to print when thermodynamic info is
output. See the <aclass="reference internal"href="thermo_style.html"><em>thermo_style</em></a> command for a list
of defined quantities.</p>
<p>The thermo styles (one, multi, etc) are simply lists of keywords.
Adding a new style thus only requires defining a new list of keywords.
Search for the word “customize” with references to “thermo style” in
thermo.cpp to see the two locations where code will need to be added.</p>
<p>New keywords can also be added to thermo.cpp to compute new quantities
for output. Search for the word “customize” with references to
“keyword” in thermo.cpp to see the several locations where code will
need to be added.</p>
<p>Note that the <aclass="reference internal"href="thermo.html"><em>thermo_style custom</em></a> command already allows
for thermo output of quantities calculated by <aclass="reference internal"href="fix.html"><em>fixes</em></a>,
<aclass="reference internal"href="compute.html"><em>computes</em></a>, and <aclass="reference internal"href="variable.html"><em>variables</em></a>. Thus, it may
be simpler to compute what you wish via one of those constructs, than
by adding a new keyword to the thermo command.</p>
<hrclass="docutils"/>
</div>
<divclass="section"id="variable-options">
<spanid="mod-14"></span><h2>10.14. Variable options<aclass="headerlink"href="#variable-options"title="Permalink to this headline">¶</a></h2>
<p>There is one class that computes and stores <aclass="reference internal"href="variable.html"><em>variable</em></a>
information in LAMMPS; see the file variable.cpp. The value
associated with a variable can be periodically printed to the screen
via the <aclass="reference internal"href="print.html"><em>print</em></a>, <aclass="reference internal"href="fix_print.html"><em>fix print</em></a>, or
<aclass="reference internal"href="thermo_style.html"><em>thermo_style custom</em></a> commands. Variables of style
“equal” can compute complex equations that involve the following types
<spanid="mod-15"></span><h2>10.15. Submitting new features for inclusion in LAMMPS<aclass="headerlink"href="#submitting-new-features-for-inclusion-in-lammps"title="Permalink to this headline">¶</a></h2>
<p>We encourage users to submit new features to <aclass="reference external"href="http://lammps.sandia.gov/authors.html">the developers</a> that they add to
LAMMPS, especially if you think they will be of interest to other
users. If they are broadly useful we may add them as core files to
LAMMPS or as part of a <aclass="reference internal"href="Section_start.html#start-3"><span>standard package</span></a>.
Else we will add them as a user-contributed file or package. Examples
of user packages are in src sub-directories that start with USER. The
USER-MISC package is simply a collection of (mostly) unrelated single
files, which is the simplest way to have your contribution quickly
added to the LAMMPS distribution. You can see a list of the both
standard and user packages by typing “make package” in the LAMMPS src
directory.</p>
<p>Note that by providing us the files to release, you are agreeing to
make them open-source, i.e. we can release them under the terms of the
GPL, used as a license for the rest of LAMMPS. See <aclass="reference internal"href="Section_intro.html#intro-4"><span>Section 1.4</span></a> for details.</p>
<p>With user packages and files, all we are really providing (aside from
the fame and fortune that accompanies having your name in the source
code and on the <aclass="reference external"href="http://lammps.sandia.gov/authors.html">Authors page</a>
of the <aclass="reference external"href="http://lammps.sandia.gov">LAMMPS WWW site</a>), is a means for you to distribute your
work to the LAMMPS user community, and a mechanism for others to
easily try out your new feature. This may help you find bugs or make
contact with new collaborators. Note that you’re also implicitly
agreeing to support your code which means answer questions, fix bugs,
and maintain it if LAMMPS changes in some way that breaks it (an
unusual event).</p>
<divclass="admonition note">
<pclass="first admonition-title">Note</p>
<pclass="last">If you prefer to actively develop and support your add-on
feature yourself, then you may wish to make it available for download
from your own website, as a user package that LAMMPS users can add to
their copy of LAMMPS. See the <aclass="reference external"href="http://lammps.sandia.gov/offsite.html">Offsite LAMMPS packages and tools</a> page of the LAMMPS web
site for examples of groups that do this. We are happy to advertise
your package and web site from that page. Simply email the
<aclass="reference external"href="http://lammps.sandia.gov/authors.html">developers</a> with info about
your package and we will post it there.</p>
</div>
<p>The previous sections of this doc page describe how to add new “style”
files of various kinds to LAMMPS. Packages are simply collections of
one or more new class files which are invoked as a new style within a
LAMMPS input script. If designed correctly, these additions typically
do not require changes to the main core of LAMMPS; they are simply
add-on files. If you think your new feature requires non-trivial
changes in core LAMMPS files, you’ll need to <aclass="reference external"href="http://lammps.sandia.gov/authors.html">communicate with the developers</a>, since we may or may
not want to make those changes. An example of a trivial change is
making a parent-class method “virtual” when you derive a new child
class from it.</p>
<p>Here are the steps you need to follow to submit a single file or user
package for our consideration. Following these steps will save both
you and us time. See existing files in packages in the src dir for
examples.</p>
<ulclass="simple">
<li>All source files you provide must compile with the most current
version of LAMMPS.</li>
<li>If you want your file(s) to be added to main LAMMPS or one of its
standard packages, then it needs to be written in a style compatible
with other LAMMPS source files. This is so the developers can
understand it and hopefully maintain it. This basically means that
the code accesses data structures, performs its operations, and is
formatted similar to other LAMMPS source files, including the use of
the error class for error and warning messages.</li>
<li>If you want your contribution to be added as a user-contributed
feature, and it’s a single file (actually a <ahref="#id10"><spanclass="problematic"id="id11">*</span></a>.cpp and <ahref="#id12"><spanclass="problematic"id="id13">*</span></a>.h file) it can
rapidly be added to the USER-MISC directory. Send us the one-line
entry to add to the USER-MISC/README file in that dir, along with the
2 source files. You can do this multiple times if you wish to
contribute several individual features.</li>
<li>If you want your contribution to be added as a user-contribution and
it is several related featues, it is probably best to make it a user
package directory with a name like USER-FOO. In addition to your new
files, the directory should contain a README text file. The README
should contain your name and contact information and a brief
description of what your new package does. If your files depend on
other LAMMPS style files also being installed (e.g. because your file
is a derived class from the other LAMMPS class), then an Install.sh
file is also needed to check for those dependencies. See other README
and Install.sh files in other USER directories as examples. Send us a
tarball of this USER-FOO directory.</li>
<li>Your new source files need to have the LAMMPS copyright, GPL notice,
and your name and email address at the top, like other
user-contributed LAMMPS source files. They need to create a class
that is inside the LAMMPS namespace. If the file is for one of the
USER packages, including USER-MISC, then we are not as picky about the
coding style (see above). I.e. the files do not need to be in the
same stylistic format and syntax as other LAMMPS files, though that
would be nice for developers as well as users who try to read your
code.</li>
<li>You must also create a documentation file for each new command or
style you are adding to LAMMPS. This will be one file for a
single-file feature. For a package, it might be several files. These
are simple text files which we auto-convert to HTML. Thus they must
be in the same format as other <em>.txt files in the lammps/doc directory
for similar commands and styles; use one or more of them as a starting
point. As appropriate, the text files can include links to equations
(see doc/Eqs/</em>.tex for examples, we auto-create the associated JPG
files), or figures (see doc/JPG for examples), or even additional PDF
files with further details (see doc/PDF for examples). The doc page
should also include literature citations as appropriate; see the
bottom of doc/fix_nh.txt for examples and the earlier part of the same
file for how to format the cite itself. The “Restrictions” section of
the doc page should indicate that your command is only available if
LAMMPS is built with the appropriate USER-MISC or USER-FOO package.
See other user package doc files for examples of how to do this. The
txt2html tool we use to convert to HTML can be downloaded from <aclass="reference external"href="http://www.sandia.gov/~sjplimp/download.html">this site</a>, so you can perform
the HTML conversion yourself to proofread your doc page.</li>
<li>For a new package (or even a single command) you can include one or
more example scripts. These should run in no more than 1 minute, even
on a single processor, and not require large data files as input. See
directories under examples/USER for examples of input scripts other
users provided for their packages.</li>
<li>If there is a paper of yours describing your feature (either the
algorithm/science behind the feature itself, or its initial usage, or
its implementation in LAMMPS), you can add the citation to the <ahref="#id14"><spanclass="problematic"id="id15">*</span></a>.cpp
source file. See src/USER-EFF/atom_vec_electron.cpp for an example.
A LaTeX citation is stored in a variable at the top of the file and a
single line of code that references the variable is added to the
constructor of the class. Whenever a user invokes your feature from
their input script, this will cause LAMMPS to output the citation to a
log.cite file and prompt the user to examine the file. Note that you
should only use this for a paper you or your group authored.
E.g. adding a cite in the code for a paper by Nose and Hoover if you
write a fix that implements their integrator is not the intended
usage. That kind of citation should just be in the doc page you
provide.</li>
</ul>
<p>Finally, as a general rule-of-thumb, the more clear and
self-explanatory you make your doc and README files, and the easier
you make it for people to get started, e.g. by providing example
scripts, the more likely it is that users will try out your new
feature.</p>
<pid="foo"><strong>(Foo)</strong> Foo, Morefoo, and Maxfoo, J of Classic Potentials, 75, 345 (1997).</p>
Built with <ahref="http://sphinx-doc.org/">Sphinx</a> using a <ahref="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <ahref="https://readthedocs.org">Read the Docs</a>.