Merge remote-tracking branch 'lammps-ro/master' into lammps-icms
# Resolved Conflicts: # doc/Manual.html # doc/Manual.txt # lib/colvars/colvarmodule.h # src/Makefile # src/min_cg.cpp # src/min_fire.cpp # src/min_quickmin.cpp # src/min_sd.cpp # src/respa.cpp # src/version.h
BIN
doc/Eqs/pair_mgpt.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
12
doc/Eqs/pair_mgpt.tex
Normal file
@ -0,0 +1,12 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
E_{\rm tot}({\bf R}_1 \ldots {\bf R}_N) = NE_{\rm vol}(\Omega )
|
||||
+ \frac{1}{2} \sum _{i,j} \mbox{}^\prime \ v_2(ij;\Omega )
|
||||
+ \frac{1}{6} \sum _{i,j,k} \mbox{}^\prime \ v_3(ijk;\Omega )
|
||||
+ \frac{1}{24} \sum _{i,j,k,l} \mbox{}^\prime \ v_4(ijkl;\Omega )
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
BIN
doc/Eqs/pair_smtbq1.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
13
doc/Eqs/pair_smtbq1.tex
Executable file
@ -0,0 +1,13 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
E_{tot} & = & E_{ES} + E_{OO} + E_{MO} \\
|
||||
E_{ES} & = & \sum_i{\Big[ \chi_{i}^{0}Q_i + \frac{1}{2}J_{i}^{0}Q_{i}^{2} +
|
||||
\frac{1}{2} \sum_{j\neq i}{ J_{ij}(r_{ij})f_{cut}^{R_{coul}}(r_{ij})Q_i Q_j } \Big] } \\
|
||||
E_{OO} & = & \sum_{i,j}^{i,j = O}{\Bigg[Cexp( -\frac{r_{ij}}{\rho} ) - Df_{cut}^{r_1^{OO}r_2^{OO}}(r_{ij}) exp(Br_{ij})\Bigg]} \\
|
||||
E_{MO} & = & \sum_i{E_{cov}^{i} + \sum_{j\neq i}{ Af_{cut}^{r_{c1}r_{c2}}(r_{ij})exp\Big[-p(\frac{r_{ij}}{r_0} -1) \Big] } } \\
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
BIN
doc/Eqs/pair_smtbq2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
12
doc/Eqs/pair_smtbq2.tex
Executable file
@ -0,0 +1,12 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
E_{cov}^{i(i=M,O)} & = & - \Bigg\{\eta_i(\mu \xi^{0})^2 f_{cut}^{r_{c1}r_{c2}}(r_{ij})
|
||||
\Bigg( \sum_{j(j=O,M)}{ exp[ -2q(\frac{r_{ij}}{r_0} - 1)] } \Bigg)
|
||||
\delta Q_i \Big( 2\frac{n_0}{\eta_i} - \delta Q_i \Big) \Bigg\}^{1/2} \\
|
||||
\delta Q_i & = & | Q_i^{F} | - | Q_i |
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
BIN
doc/Eqs/pair_smtbq3.jpg
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
10
doc/Eqs/pair_smtbq3.tex
Executable file
@ -0,0 +1,10 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
\xi^0 & = & \frac{\xi_O}{m} = \frac{\xi_C}{n} \\
|
||||
\frac{\beta_O}{\sqrt{m}} & = & \frac{\beta_C}{\sqrt{n}} = \xi^0 \frac{\sqrt{m}+\sqrt{n}}{2}\\
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
860
doc/Manual.html
@ -1,147 +1,38 @@
|
||||
<HTML>
|
||||
<!-- HTML_ONLY -->
|
||||
<HEAD>
|
||||
<TITLE>LAMMPS Users Manual</TITLE>
|
||||
<META NAME="docnumber" CONTENT="24 Oct 2015 version">
|
||||
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
||||
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
||||
</HEAD>
|
||||
|
||||
<BODY>
|
||||
|
||||
<!-- END_HTML_ONLY -->
|
||||
|
||||
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
|
||||
</CENTER>
|
||||
|
||||
|
||||
<!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>LAMMPS Documentation — 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"/>
|
||||
<link rel="next" title="1. Introduction" href="Section_intro.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="#" 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="#">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="#">Docs</a> »</li>
|
||||
|
||||
<li>LAMMPS Documentation</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 class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation">
|
||||
|
||||
<a href="Section_intro.html" class="btn btn-neutral float-right" title="1. Introduction" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<H1></H1><div class="section" id="lammps-documentation">
|
||||
<h1>LAMMPS Documentation<a class="headerlink" href="#lammps-documentation" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="aug-2015-version">
|
||||
<h2>10 Aug 2015 version<a class="headerlink" href="#aug-2015-version" title="Permalink to this headline">¶</a></h2>
|
||||
</div>
|
||||
<div class="section" id="version-info">
|
||||
<h2>Version info:<a class="headerlink" href="#version-info" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The LAMMPS “version” is the date when it was released, such as 1 May
|
||||
|
||||
|
||||
<HR>
|
||||
|
||||
<H1></H1>
|
||||
|
||||
<CENTER><H3>LAMMPS Documentation
|
||||
</H3></CENTER>
|
||||
<CENTER><H4>24 Oct 2015 version
|
||||
</H4></CENTER>
|
||||
<H4>Version info:
|
||||
</H4>
|
||||
<P>The LAMMPS "version" is the date when it was released, such as 1 May
|
||||
2010. LAMMPS is updated continuously. Whenever we fix a bug or add a
|
||||
feature, we release it immediately, and post a notice on <a class="reference external" href="http://lammps.sandia.gov/bug.html">this page of the WWW site</a>. Each dated copy of LAMMPS contains all the
|
||||
feature, we release it immediately, and post a notice on <A HREF = "http://lammps.sandia.gov/bug.html">this page of
|
||||
the WWW site</A>. Each dated copy of LAMMPS contains all the
|
||||
features and bug-fixes up to and including that version date. The
|
||||
version date is printed to the screen and logfile every time you run
|
||||
LAMMPS. It is also in the file src/version.h and in the LAMMPS
|
||||
@ -162,7 +53,6 @@ development will be halted except for important bugfixes until
|
||||
all features of LAMMPS-ICMS fully compatible with the upstream
|
||||
version or replaced by alternate implementations.
|
||||
</P>
|
||||
|
||||
<UL><LI>If you browse the HTML doc pages on the LAMMPS WWW site, they always
|
||||
describe the most current version of LAMMPS.
|
||||
|
||||
@ -175,298 +65,428 @@ it to be part of every patch.
|
||||
|
||||
<LI>There is also a <A HREF = "Developer.pdf">Developer.pdf</A> file in the doc
|
||||
directory, which describes the internal structure and algorithms of
|
||||
LAMMPS.</li>
|
||||
</ul>
|
||||
<p>LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
|
||||
Simulator.</p>
|
||||
<p>LAMMPS is a classical molecular dynamics simulation code designed to
|
||||
LAMMPS.
|
||||
</UL>
|
||||
<P>LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
|
||||
Simulator.
|
||||
</P>
|
||||
<P>LAMMPS is a classical molecular dynamics simulation code designed to
|
||||
run efficiently on parallel computers. It was developed at Sandia
|
||||
National Laboratories, a US Department of Energy facility, with
|
||||
funding from the DOE. It is an open-source code, distributed freely
|
||||
under the terms of the GNU Public License (GPL).</p>
|
||||
<p>The primary developers of LAMMPS are <a class="reference external" href="http://www.sandia.gov/~sjplimp">Steve Plimpton</a>, Aidan
|
||||
under the terms of the GNU Public License (GPL).
|
||||
</P>
|
||||
<P>The primary developers of LAMMPS are <A HREF = "http://www.sandia.gov/~sjplimp">Steve Plimpton</A>, Aidan
|
||||
Thompson, and Paul Crozier who can be contacted at
|
||||
sjplimp,athomps,pscrozi at sandia.gov. The <a class="reference external" href="http://lammps.sandia.gov">LAMMPS WWW Site</a> at
|
||||
<a class="reference external" href="http://lammps.sandia.gov">http://lammps.sandia.gov</a> has more information about the code and its
|
||||
uses.</p>
|
||||
<hr class="docutils" />
|
||||
<p>The LAMMPS documentation is organized into the following sections. If
|
||||
sjplimp,athomps,pscrozi at sandia.gov. The <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> at
|
||||
http://lammps.sandia.gov has more information about the code and its
|
||||
uses.
|
||||
</P>
|
||||
|
||||
|
||||
|
||||
|
||||
<HR>
|
||||
|
||||
<P>The LAMMPS documentation is organized into the following sections. If
|
||||
you find errors or omissions in this manual or have suggestions for
|
||||
useful information to add, please send an email to the developers so
|
||||
we can improve the LAMMPS documentation.</p>
|
||||
<p>Once you are familiar with LAMMPS, you may want to bookmark <a class="reference internal" href="Section_commands.html#comm"><span>this page</span></a> at Section_commands.html#comm since
|
||||
it gives quick access to documentation for all LAMMPS commands.</p>
|
||||
<p><a class="reference external" href="Manual.pdf">PDF file</a> of the entire manual, generated by
|
||||
<a class="reference external" href="http://freecode.com/projects/htmldoc">htmldoc</a></p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#what-is-lammps">1.1. What is LAMMPS</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#lammps-features">1.2. LAMMPS features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#lammps-non-features">1.3. LAMMPS non-features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#open-source-distribution">1.4. Open source distribution</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#acknowledgments-and-citations">1.5. Acknowledgments and citations</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#what-s-in-the-lammps-distribution">2.1. What’s in the LAMMPS distribution</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#making-lammps">2.2. Making LAMMPS</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#making-lammps-with-optional-packages">2.3. Making LAMMPS with optional packages</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#building-lammps-via-the-make-py-tool">2.4. Building LAMMPS via the Make.py tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#building-lammps-as-a-library">2.5. Building LAMMPS as a library</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#running-lammps">2.6. Running LAMMPS</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#command-line-options">2.7. Command-line options</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#lammps-screen-output">2.8. LAMMPS screen output</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_start.html#tips-for-users-of-previous-lammps-versions">2.9. Tips for users of previous LAMMPS versions</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#lammps-input-script">3.1. LAMMPS input script</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#parsing-rules">3.2. Parsing rules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#input-script-structure">3.3. Input script structure</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#commands-listed-by-category">3.4. Commands listed by category</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#individual-commands">3.5. Individual commands</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#fix-styles">3.6. Fix styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#compute-styles">3.7. Compute styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#pair-style-potentials">3.8. Pair_style potentials</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#bond-style-potentials">3.9. Bond_style potentials</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#angle-style-potentials">3.10. Angle_style potentials</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#dihedral-style-potentials">3.11. Dihedral_style potentials</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#improper-style-potentials">3.12. Improper_style potentials</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#kspace-solvers">3.13. Kspace solvers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#standard-packages">4.1. Standard packages</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-compress-package">4.2. Build instructions for COMPRESS package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-gpu-package">4.3. Build instructions for GPU package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-kim-package">4.4. Build instructions for KIM package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-kokkos-package">4.5. Build instructions for KOKKOS package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-kspace-package">4.6. Build instructions for KSPACE package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-meam-package">4.7. Build instructions for MEAM package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-poems-package">4.8. Build instructions for POEMS package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-python-package">4.9. Build instructions for PYTHON package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-reax-package">4.10. Build instructions for REAX package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-voronoi-package">4.11. Build instructions for VORONOI package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-xtc-package">4.12. Build instructions for XTC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-packages">4.13. User packages</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-atc-package">4.14. USER-ATC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-awpmd-package">4.15. USER-AWPMD package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-cg-cmm-package">4.16. USER-CG-CMM package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-colvars-package">4.17. USER-COLVARS package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-cuda-package">4.18. USER-CUDA package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-diffraction-package">4.19. USER-DIFFRACTION package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-drude-package">4.20. USER-DRUDE package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-eff-package">4.21. USER-EFF package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-fep-package">4.22. USER-FEP package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-h5md-package">4.23. USER-H5MD package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-intel-package">4.24. USER-INTEL package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-lb-package">4.25. USER-LB package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-misc-package">4.26. USER-MISC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-molfile-package">4.27. USER-MOLFILE package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-omp-package">4.28. USER-OMP package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-phonon-package">4.29. USER-PHONON package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-qmmm-package">4.30. USER-QMMM package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-qtb-package">4.31. USER-QTB package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-reaxc-package">4.32. USER-REAXC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-smd-package">4.33. USER-SMD package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-sph-package">4.34. USER-SPH package</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#measuring-performance">5.1. Measuring performance</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#general-strategies">5.2. General strategies</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#packages-with-optimized-styles">5.3. Packages with optimized styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#comparison-of-various-accelerator-packages">5.4. Comparison of various accelerator packages</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#restarting-a-simulation">6.1. Restarting a simulation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#d-simulations">6.2. 2d simulations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#charmm-amber-and-dreiding-force-fields">6.3. CHARMM, AMBER, and DREIDING force fields</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#running-multiple-simulations-from-one-input-script">6.4. Running multiple simulations from one input script</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#multi-replica-simulations">6.5. Multi-replica simulations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#granular-models">6.6. Granular models</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#tip3p-water-model">6.7. TIP3P water model</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#tip4p-water-model">6.8. TIP4P water model</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#spc-water-model">6.9. SPC water model</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#coupling-lammps-to-other-codes">6.10. Coupling LAMMPS to other codes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#visualizing-lammps-snapshots">6.11. Visualizing LAMMPS snapshots</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#triclinic-non-orthogonal-simulation-boxes">6.12. Triclinic (non-orthogonal) simulation boxes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#nemd-simulations">6.13. NEMD simulations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#finite-size-spherical-and-aspherical-particles">6.14. Finite-size spherical and aspherical particles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#output-from-lammps-thermo-dumps-computes-fixes-variables">6.15. Output from LAMMPS (thermo, dumps, computes, fixes, variables)</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#thermostatting-barostatting-and-computing-temperature">6.16. Thermostatting, barostatting, and computing temperature</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#walls">6.17. Walls</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#elastic-constants">6.18. Elastic constants</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#library-interface-to-lammps">6.19. Library interface to LAMMPS</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#calculating-thermal-conductivity">6.20. Calculating thermal conductivity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#calculating-viscosity">6.21. Calculating viscosity</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#calculating-a-diffusion-coefficient">6.22. Calculating a diffusion coefficient</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#using-chunks-to-calculate-system-properties">6.23. Using chunks to calculate system properties</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#setting-parameters-for-the-kspace-style-pppm-disp-command">6.24. Setting parameters for the <code class="docutils literal"><span class="pre">kspace_style</span> <span class="pre">pppm/disp</span></code> command</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#polarizable-models">6.25. Polarizable models</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#adiabatic-core-shell-model">6.26. Adiabatic core/shell model</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#drude-induced-dipoles">6.27. Drude induced dipoles</a></li>
|
||||
</ul>
|
||||
</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><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#amber2lmp-tool">9.1. amber2lmp tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#binary2txt-tool">9.2. binary2txt tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#ch2lmp-tool">9.3. ch2lmp tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#chain-tool">9.4. chain tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#colvars-tools">9.5. colvars tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#createatoms-tool">9.6. createatoms tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#data2xmovie-tool">9.7. data2xmovie tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#eam-database-tool">9.8. eam database tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#eam-generate-tool">9.9. eam generate tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#eff-tool">9.10. eff tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#emacs-tool">9.11. emacs tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#fep-tool">9.12. fep tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#i-pi-tool">9.13. i-pi tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#ipp-tool">9.14. ipp tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#kate-tool">9.15. kate tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#lmp2arc-tool">9.16. lmp2arc tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#lmp2cfg-tool">9.17. lmp2cfg tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#lmp2vmd-tool">9.18. lmp2vmd tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#matlab-tool">9.19. matlab tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#micelle2d-tool">9.20. micelle2d tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#moltemplate-tool">9.21. moltemplate tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#msi2lmp-tool">9.22. msi2lmp tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#phonon-tool">9.23. phonon tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#polymer-bonding-tool">9.24. polymer bonding tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#pymol-asphere-tool">9.25. pymol_asphere tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#python-tool">9.26. python tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#reax-tool">9.27. reax tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#restart2data-tool">9.28. restart2data tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#vim-tool">9.29. vim tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#xmgrace-tool">9.30. xmgrace tool</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#xmovie-tool">9.31. xmovie tool</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#atom-styles">10.1. Atom styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#bond-angle-dihedral-improper-potentials">10.2. Bond, angle, dihedral, improper potentials</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#compute-styles">10.3. Compute styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#dump-styles">10.4. Dump styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#dump-custom-output-options">10.5. Dump custom output options</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#fix-styles">10.6. Fix styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#input-script-commands">10.7. Input script commands</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#kspace-computations">10.8. Kspace computations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#minimization-styles">10.9. Minimization styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#pairwise-potentials">10.10. Pairwise potentials</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#region-styles">10.11. Region styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#body-styles">10.12. Body styles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#thermodynamic-output-options">10.13. Thermodynamic output options</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#variable-options">10.14. Variable options</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#submitting-new-features-for-inclusion-in-lammps">10.15. Submitting new features for inclusion in LAMMPS</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#overview-of-running-lammps-from-python">11.1. Overview of running LAMMPS from Python</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#overview-of-using-python-from-a-lammps-script">11.2. Overview of using Python from a LAMMPS script</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#building-lammps-as-a-shared-library">11.3. Building LAMMPS as a shared library</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#installing-the-python-wrapper-into-python">11.4. Installing the Python wrapper into Python</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#extending-python-with-mpi-to-run-in-parallel">11.5. Extending Python with MPI to run in parallel</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#testing-the-python-lammps-interface">11.6. Testing the Python-LAMMPS interface</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#using-lammps-from-python">11.7. Using LAMMPS from Python</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_python.html#example-python-scripts-that-use-lammps">11.8. Example Python scripts that use LAMMPS</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#common-problems">12.1. Common problems</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#reporting-bugs">12.2. Reporting bugs</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#error-warning-messages">12.3. Error & warning messages</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#error">12.4. Errors:</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#warnings">12.5. Warnings:</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_history.html#coming-attractions">13.1. Coming attractions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Section_history.html#past-versions">13.2. Past versions</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="indices-and-tables">
|
||||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="genindex.html"><span>Index</span></a></li>
|
||||
<li><a class="reference internal" href="search.html"><span>Search Page</span></a></li>
|
||||
</ul>
|
||||
</BODY></div>
|
||||
we can improve the LAMMPS documentation.
|
||||
</P>
|
||||
<P>Once you are familiar with LAMMPS, you may want to bookmark <A HREF = "Section_commands.html#comm">this
|
||||
page</A> at Section_commands.html#comm since
|
||||
it gives quick access to documentation for all LAMMPS commands.
|
||||
</P>
|
||||
<P><A HREF = "Manual.pdf">PDF file</A> of the entire manual, generated by
|
||||
<A HREF = "http://freecode.com/projects/htmldoc">htmldoc</A>
|
||||
</P>
|
||||
<P><!-- RST
|
||||
</P>
|
||||
<P>.. toctree::
|
||||
:maxdepth: 2
|
||||
:numbered: // comment
|
||||
</P>
|
||||
<P> Section_intro
|
||||
Section_start
|
||||
Section_commands
|
||||
Section_packages
|
||||
Section_accelerate
|
||||
Section_howto
|
||||
Section_example
|
||||
Section_perf
|
||||
Section_tools
|
||||
Section_modify
|
||||
Section_python
|
||||
Section_errors
|
||||
Section_history
|
||||
</P>
|
||||
<P>Indices and tables
|
||||
==================
|
||||
</P>
|
||||
<P>* :ref:`genindex` // comment
|
||||
* :ref:`search` // comment
|
||||
</P>
|
||||
<P>END_RST -->
|
||||
</P>
|
||||
<OL><LI><!-- HTML_ONLY -->
|
||||
<A HREF = "Section_intro.html">Introduction</A>
|
||||
|
||||
<UL> 1.1 <A HREF = "Section_intro.html#intro_1">What is LAMMPS</A>
|
||||
<BR>
|
||||
1.2 <A HREF = "Section_intro.html#intro_2">LAMMPS features</A>
|
||||
<BR>
|
||||
1.3 <A HREF = "Section_intro.html#intro_3">LAMMPS non-features</A>
|
||||
<BR>
|
||||
1.4 <A HREF = "Section_intro.html#intro_4">Open source distribution</A>
|
||||
<BR>
|
||||
1.5 <A HREF = "Section_intro.html#intro_5">Acknowledgments and citations</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_start.html">Getting started</A>
|
||||
|
||||
<UL> 2.1 <A HREF = "Section_start.html#start_1">What's in the LAMMPS distribution</A>
|
||||
<BR>
|
||||
2.2 <A HREF = "Section_start.html#start_2">Making LAMMPS</A>
|
||||
<BR>
|
||||
2.3 <A HREF = "Section_start.html#start_3">Making LAMMPS with optional packages</A>
|
||||
<BR>
|
||||
2.4 <A HREF = "Section_start.html#start_4">Building LAMMPS via the Make.py script</A>
|
||||
<BR>
|
||||
2.5 <A HREF = "Section_start.html#start_5">Building LAMMPS as a library</A>
|
||||
<BR>
|
||||
2.6 <A HREF = "Section_start.html#start_6">Running LAMMPS</A>
|
||||
<BR>
|
||||
2.7 <A HREF = "Section_start.html#start_7">Command-line options</A>
|
||||
<BR>
|
||||
2.8 <A HREF = "Section_start.html#start_8">Screen output</A>
|
||||
<BR>
|
||||
2.9 <A HREF = "Section_start.html#start_9">Tips for users of previous versions</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_commands.html">Commands</A>
|
||||
|
||||
<UL> 3.1 <A HREF = "Section_commands.html#cmd_1">LAMMPS input script</A>
|
||||
<BR>
|
||||
3.2 <A HREF = "Section_commands.html#cmd_2">Parsing rules</A>
|
||||
<BR>
|
||||
3.3 <A HREF = "Section_commands.html#cmd_3">Input script structure</A>
|
||||
<BR>
|
||||
3.4 <A HREF = "Section_commands.html#cmd_4">Commands listed by category</A>
|
||||
<BR>
|
||||
3.5 <A HREF = "Section_commands.html#cmd_5">Commands listed alphabetically</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_packages.html">Packages</A>
|
||||
|
||||
<UL> 4.1 <A HREF = "Section_packages.html#pkg_1">Standard packages</A>
|
||||
<BR>
|
||||
4.2 <A HREF = "Section_packages.html#pkg_2">User packages</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_accelerate.html">Accelerating LAMMPS performance</A>
|
||||
|
||||
<UL> 5.1 <A HREF = "Section_accelerate.html#acc_1">Measuring performance</A>
|
||||
<BR>
|
||||
5.2 <A HREF = "Section_accelerate.html#acc_2">Algorithms and code options to boost performace</A>
|
||||
<BR>
|
||||
5.3 <A HREF = "Section_accelerate.html#acc_3">Accelerator packages with optimized styles</A>
|
||||
<BR>
|
||||
<UL> 5.3.1 <A HREF = "accelerate_cuda.html">USER-CUDA package</A>
|
||||
<BR>
|
||||
5.3.2 <A HREF = "accelerate_gpu.html">GPU package</A>
|
||||
<BR>
|
||||
5.3.3 <A HREF = "accelerate_intel.html">USER-INTEL package</A>
|
||||
<BR>
|
||||
5.3.4 <A HREF = "accelerate_kokkos.html">KOKKOS package</A>
|
||||
<BR>
|
||||
5.3.5 <A HREF = "accelerate_omp.html">USER-OMP package</A>
|
||||
<BR>
|
||||
5.3.6 <A HREF = "accelerate_opt.html">OPT package</A>
|
||||
<BR></UL>
|
||||
5.4 <A HREF = "Section_accelerate.html#acc_4">Comparison of various accelerator packages</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_howto.html">How-to discussions</A>
|
||||
|
||||
<UL> 6.1 <A HREF = "Section_howto.html#howto_1">Restarting a simulation</A>
|
||||
<BR>
|
||||
6.2 <A HREF = "Section_howto.html#howto_2">2d simulations</A>
|
||||
<BR>
|
||||
6.3 <A HREF = "Section_howto.html#howto_3">CHARMM and AMBER force fields</A>
|
||||
<BR>
|
||||
6.4 <A HREF = "Section_howto.html#howto_4">Running multiple simulations from one input script</A>
|
||||
<BR>
|
||||
6.5 <A HREF = "Section_howto.html#howto_5">Multi-replica simulations</A>
|
||||
<BR>
|
||||
6.6 <A HREF = "Section_howto.html#howto_6">Granular models</A>
|
||||
<BR>
|
||||
6.7 <A HREF = "Section_howto.html#howto_7">TIP3P water model</A>
|
||||
<BR>
|
||||
6.8 <A HREF = "Section_howto.html#howto_8">TIP4P water model</A>
|
||||
<BR>
|
||||
6.9 <A HREF = "Section_howto.html#howto_9">SPC water model</A>
|
||||
<BR>
|
||||
6.10 <A HREF = "Section_howto.html#howto_10">Coupling LAMMPS to other codes</A>
|
||||
<BR>
|
||||
6.11 <A HREF = "Section_howto.html#howto_11">Visualizing LAMMPS snapshots</A>
|
||||
<BR>
|
||||
6.12 <A HREF = "Section_howto.html#howto_12">Triclinic (non-orthogonal) simulation boxes</A>
|
||||
<BR>
|
||||
6.13 <A HREF = "Section_howto.html#howto_13">NEMD simulations</A>
|
||||
<BR>
|
||||
6.14 <A HREF = "Section_howto.html#howto_14">Finite-size spherical and aspherical particles</A>
|
||||
<BR>
|
||||
6.15 <A HREF = "Section_howto.html#howto_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A>
|
||||
<BR>
|
||||
6.16 <A HREF = "Section_howto.html#howto_16">Thermostatting, barostatting, and compute temperature</A>
|
||||
<BR>
|
||||
6.17 <A HREF = "Section_howto.html#howto_17">Walls</A>
|
||||
<BR>
|
||||
6.18 <A HREF = "Section_howto.html#howto_18">Elastic constants</A>
|
||||
<BR>
|
||||
6.19 <A HREF = "Section_howto.html#howto_19">Library interface to LAMMPS</A>
|
||||
<BR>
|
||||
6.20 <A HREF = "Section_howto.html#howto_20">Calculating thermal conductivity</A>
|
||||
<BR>
|
||||
6.21 <A HREF = "Section_howto.html#howto_21">Calculating viscosity</A>
|
||||
<BR>
|
||||
6.22 <A HREF = "Section_howto.html#howto_22">Calculating a diffusion coefficient</A>
|
||||
<BR>
|
||||
6.23 <A HREF = "Section_howto.html#howto_23">Using chunks to calculate system properties</A>
|
||||
<BR>
|
||||
6.24 <A HREF = "Section_howto.html#howto_24">Setting parameters for pppm/disp</A>
|
||||
<BR>
|
||||
6.25 <A HREF = "Section_howto.html#howto_25">Polarizable models</A>
|
||||
<BR>
|
||||
6.26 <A HREF = "Section_howto.html#howto_26">Adiabatic core/shell model</A>
|
||||
<BR>
|
||||
6.27 <A HREF = "Section_howto.html#howto_27">Drude induced dipoles</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_example.html">Example problems</A>
|
||||
|
||||
<LI><A HREF = "Section_perf.html">Performance & scalability</A>
|
||||
|
||||
<LI><A HREF = "Section_tools.html">Additional tools</A>
|
||||
|
||||
<LI><A HREF = "Section_modify.html">Modifying & extending LAMMPS</A>
|
||||
|
||||
<UL> 10.1 <A HREF = "Section_modify.html#mod_1">Atom styles</A>
|
||||
<BR>
|
||||
10.2 <A HREF = "Section_modify.html#mod_2">Bond, angle, dihedral, improper potentials</A>
|
||||
<BR>
|
||||
10.3 <A HREF = "Section_modify.html#mod_3">Compute styles</A>
|
||||
<BR>
|
||||
10.4 <A HREF = "Section_modify.html#mod_4">Dump styles</A>
|
||||
<BR>
|
||||
10.5 <A HREF = "Section_modify.html#mod_5">Dump custom output options</A>
|
||||
<BR>
|
||||
10.6 <A HREF = "Section_modify.html#mod_6">Fix styles</A>
|
||||
<BR>
|
||||
10.7 <A HREF = "Section_modify.html#mod_7">Input script commands</A>
|
||||
<BR>
|
||||
10.8 <A HREF = "Section_modify.html#mod_8">Kspace computations</A>
|
||||
<BR>
|
||||
10.9 <A HREF = "Section_modify.html#mod_9">Minimization styles</A>
|
||||
<BR>
|
||||
10.10 <A HREF = "Section_modify.html#mod_10">Pairwise potentials</A>
|
||||
<BR>
|
||||
10.11 <A HREF = "Section_modify.html#mod_11">Region styles</A>
|
||||
<BR>
|
||||
10.12 <A HREF = "Section_modify.html#mod_12">Body styles</A>
|
||||
<BR>
|
||||
10.13 <A HREF = "Section_modify.html#mod_13">Thermodynamic output options</A>
|
||||
<BR>
|
||||
10.14 <A HREF = "Section_modify.html#mod_14">Variable options</A>
|
||||
<BR>
|
||||
10.15 <A HREF = "Section_modify.html#mod_15">Submitting new features for inclusion in LAMMPS</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_python.html">Python interface</A>
|
||||
|
||||
<UL> 11.1 <A HREF = "Section_python.html#py_1">Overview of running LAMMPS from Python</A>
|
||||
<BR>
|
||||
11.2 <A HREF = "Section_python.html#py_2">Overview of using Python from a LAMMPS script</A>
|
||||
<BR>
|
||||
11.3 <A HREF = "Section_python.html#py_3">Building LAMMPS as a shared library</A>
|
||||
<BR>
|
||||
11.4 <A HREF = "Section_python.html#py_4">Installing the Python wrapper into Python</A>
|
||||
<BR>
|
||||
11.5 <A HREF = "Section_python.html#py_5">Extending Python with MPI to run in parallel</A>
|
||||
<BR>
|
||||
11.6 <A HREF = "Section_python.html#py_6">Testing the Python-LAMMPS interface</A>
|
||||
<BR>
|
||||
11.7 <A HREF = "py_7">Using LAMMPS from Python</A>
|
||||
<BR>
|
||||
11.8 <A HREF = "py_8">Example Python scripts that use LAMMPS</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_errors.html">Errors</A>
|
||||
|
||||
<UL> 12.1 <A HREF = "Section_errors.html#err_1">Common problems</A>
|
||||
<BR>
|
||||
12.2 <A HREF = "Section_errors.html#err_2">Reporting bugs</A>
|
||||
<BR>
|
||||
12.3 <A HREF = "Section_errors.html#err_3">Error & warning messages</A>
|
||||
<BR></UL>
|
||||
<LI><A HREF = "Section_history.html">Future and history</A>
|
||||
|
||||
<UL> 13.1 <A HREF = "Section_history.html#hist_1">Coming attractions</A>
|
||||
<BR>
|
||||
13.2 <A HREF = "Section_history.html#hist_2">Past versions</A>
|
||||
<BR></UL>
|
||||
|
||||
</OL>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
|
||||
<a href="Section_intro.html" class="btn btn-neutral float-right" title="1. Introduction" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<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>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- END_HTML_ONLY -->
|
||||
|
||||
</BODY>
|
||||
|
||||
</HTML>
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<!-- HTML_ONLY -->
|
||||
<HEAD>
|
||||
<TITLE>LAMMPS Users Manual</TITLE>
|
||||
<META NAME="docnumber" CONTENT="22 Oct 2015 version">
|
||||
<META NAME="docnumber" CONTENT="23 Oct 2015 version">
|
||||
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
||||
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
||||
</HEAD>
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
<P><CENTER><H3>LAMMPS Documentation
|
||||
</H3></CENTER>
|
||||
<CENTER><H4>22 Oct 2015 version
|
||||
<CENTER><H4>23 Oct 2015 version
|
||||
</H4></CENTER>
|
||||
<H4>Version info:
|
||||
</H4>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!-- HTML_ONLY -->
|
||||
<HEAD>
|
||||
<TITLE>LAMMPS-ICMS Users Manual</TITLE>
|
||||
<META NAME="docnumber" CONTENT="22 Oct 2015 version">
|
||||
<META NAME="docnumber" CONTENT="24 Oct 2015 version">
|
||||
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
||||
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
||||
</HEAD>
|
||||
@ -21,7 +21,7 @@
|
||||
<H1></H1>
|
||||
|
||||
LAMMPS-ICMS Documentation :c,h3
|
||||
5 Oct 2015 version :c,h4
|
||||
24 Oct 2015 version :c,h4
|
||||
|
||||
Version info: :h4
|
||||
|
||||
@ -100,7 +100,7 @@ it gives quick access to documentation for all LAMMPS commands.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:numbered:
|
||||
:numbered: // comment
|
||||
|
||||
Section_intro
|
||||
Section_start
|
||||
@ -120,8 +120,8 @@ it gives quick access to documentation for all LAMMPS commands.
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
* :ref:`genindex` // comment
|
||||
* :ref:`search` // comment
|
||||
|
||||
END_RST -->
|
||||
|
||||
|
||||
@ -1150,10 +1150,10 @@ KOKKOS, o = USER-OMP, t = OPT.</p>
|
||||
if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="21%" />
|
||||
<col width="25%" />
|
||||
<col width="29%" />
|
||||
<col width="22%" />
|
||||
<col width="24%" />
|
||||
<col width="31%" />
|
||||
<col width="23%" />
|
||||
</colgroup>
|
||||
<tbody valign="top">
|
||||
<tr class="row-odd"><td><a class="reference internal" href="pair_awpmd.html"><em>awpmd/cut</em></a></td>
|
||||
@ -1182,28 +1182,28 @@ if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS
|
||||
<td><a class="reference internal" href="pair_meam_spline.html"><em>meam/spline</em></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="pair_meam_sw_spline.html"><em>meam/sw/spline</em></a></td>
|
||||
<td><a class="reference internal" href="pair_mgpt.html"><em>mgpt</em></a></td>
|
||||
<td><a class="reference internal" href="pair_quip.html"><em>quip</em></a></td>
|
||||
<td><a class="reference internal" href="pair_reax_c.html"><em>reax/c</em></a></td>
|
||||
<td><a class="reference internal" href="pair_smd_hertz.html"><em>smd/hertz</em></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="pair_smd_tlsph.html"><em>smd/tlsph</em></a></td>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="pair_smd_hertz.html"><em>smd/hertz</em></a></td>
|
||||
<td><a class="reference internal" href="pair_smd_tlsph.html"><em>smd/tlsph</em></a></td>
|
||||
<td><a class="reference internal" href="pair_smd_triangulated_surface.html"><em>smd/triangulated/surface</em></a></td>
|
||||
<td><a class="reference internal" href="pair_smd_ulsph.html"><em>smd/ulsph</em></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="pair_smtbq.html"><em>smtbq</em></a></td>
|
||||
<td><a class="reference internal" href="pair_sph_heatconduction.html"><em>sph/heatconduction</em></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="pair_sph_idealgas.html"><em>sph/idealgas</em></a></td>
|
||||
<td><a class="reference internal" href="pair_sph_idealgas.html"><em>sph/idealgas</em></a></td>
|
||||
<td><a class="reference internal" href="pair_sph_lj.html"><em>sph/lj</em></a></td>
|
||||
<td><a class="reference internal" href="pair_sph_rhosum.html"><em>sph/rhosum</em></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="pair_sph_rhosum.html"><em>sph/rhosum</em></a></td>
|
||||
<td><a class="reference internal" href="pair_sph_taitwater.html"><em>sph/taitwater</em></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="pair_sph_taitwater_morris.html"><em>sph/taitwater/morris</em></a></td>
|
||||
<td><a class="reference internal" href="pair_sph_taitwater_morris.html"><em>sph/taitwater/morris</em></a></td>
|
||||
<td><a class="reference internal" href="pair_srp.html"><em>srp</em></a></td>
|
||||
<td><a class="reference internal" href="pair_tersoff.html"><em>tersoff/table (o)</em></a></td>
|
||||
<td><a class="reference internal" href="pair_thole.html"><em>thole</em></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="pair_lj_soft.html"><em>tip4p/long/soft (o)</em></a></td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<tr class="row-even"><td><a class="reference internal" href="pair_tersoff.html"><em>tersoff/table (o)</em></a></td>
|
||||
<td><a class="reference internal" href="pair_thole.html"><em>thole</em></a></td>
|
||||
<td><a class="reference internal" href="pair_lj_soft.html"><em>tip4p/long/soft (o)</em></a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@ -916,12 +916,14 @@ package"_Section_start.html#start_3.
|
||||
"lj/sf (o)"_pair_lj_sf.html,
|
||||
"meam/spline"_pair_meam_spline.html,
|
||||
"meam/sw/spline"_pair_meam_sw_spline.html,
|
||||
"mgpt"_pair_mgpt.html,
|
||||
"quip"_pair_quip.html,
|
||||
"reax/c"_pair_reax_c.html,
|
||||
"smd/hertz"_pair_smd_hertz.html,
|
||||
"smd/tlsph"_pair_smd_tlsph.html,
|
||||
"smd/triangulated/surface"_pair_smd_triangulated_surface.html,
|
||||
"smd/ulsph"_pair_smd_ulsph.html,
|
||||
"smtbq"_pair_smtbq.html,
|
||||
"sph/heatconduction"_pair_sph_heatconduction.html,
|
||||
"sph/idealgas"_pair_sph_idealgas.html,
|
||||
"sph/lj"_pair_sph_lj.html,
|
||||
|
||||
@ -103,15 +103,17 @@
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-h5md-package">4.23. USER-H5MD package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-intel-package">4.24. USER-INTEL package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-lb-package">4.25. USER-LB package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-misc-package">4.26. USER-MISC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-molfile-package">4.27. USER-MOLFILE package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-omp-package">4.28. USER-OMP package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-phonon-package">4.29. USER-PHONON package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-qmmm-package">4.30. USER-QMMM package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-qtb-package">4.31. USER-QTB package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-reaxc-package">4.32. USER-REAXC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-smd-package">4.33. USER-SMD package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-sph-package">4.34. USER-SPH package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-mgpt-package">4.26. USER-MGPT package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-misc-package">4.27. USER-MISC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-molfile-package">4.28. USER-MOLFILE package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-omp-package">4.29. USER-OMP package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-phonon-package">4.30. USER-PHONON package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-qmmm-package">4.31. USER-QMMM package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-qtb-package">4.32. USER-QTB package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-reaxc-package">4.33. USER-REAXC package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-smd-package">4.34. USER-SMD package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-smtbq-package">4.35. USER-SMTBQ package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#user-sph-package">4.36. USER-SPH package</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li>
|
||||
@ -823,7 +825,21 @@ serial.</p>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>USER-MISC</td>
|
||||
<tr class="row-even"><td>USER-MGPT</td>
|
||||
<td>fast MGPT multi-ion potentials</td>
|
||||
<td>Tomas Oppelstrup & John Moriarty (LLNL)</td>
|
||||
<td><a class="reference internal" href="pair_mgpt.html"><em>pair_style mgpt</em></a></td>
|
||||
<td>USER/mgpt</td>
|
||||
<td><ul class="first last simple">
|
||||
<li></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><ul class="first last simple">
|
||||
<li></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>USER-MISC</td>
|
||||
<td>single-file contributions</td>
|
||||
<td>USER-MISC/README</td>
|
||||
<td>USER-MISC/README</td>
|
||||
@ -840,7 +856,7 @@ serial.</p>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>USER-MOLFILE</td>
|
||||
<tr class="row-even"><td>USER-MOLFILE</td>
|
||||
<td><a class="reference external" href="http://www.ks.uiuc.edu/Research/vmd">VMD</a> molfile plug-ins</td>
|
||||
<td>Axel Kohlmeyer (Temple U)</td>
|
||||
<td><a class="reference internal" href="dump_molfile.html"><em>dump molfile</em></a></td>
|
||||
@ -854,7 +870,7 @@ serial.</p>
|
||||
</td>
|
||||
<td>VMD-MOLFILE</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>USER-OMP</td>
|
||||
<tr class="row-odd"><td>USER-OMP</td>
|
||||
<td>OpenMP threaded styles</td>
|
||||
<td>Axel Kohlmeyer (Temple U)</td>
|
||||
<td><a class="reference internal" href="accelerate_omp.html"><em>Section accelerate</em></a></td>
|
||||
@ -871,7 +887,7 @@ serial.</p>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>USER-PHONON</td>
|
||||
<tr class="row-even"><td>USER-PHONON</td>
|
||||
<td>phonon dynamical matrix</td>
|
||||
<td>Ling-Ti Kong (Shanghai Jiao Tong U)</td>
|
||||
<td><a class="reference internal" href="fix_phonon.html"><em>fix phonon</em></a></td>
|
||||
@ -885,7 +901,7 @@ serial.</p>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>USER-QMMM</td>
|
||||
<tr class="row-odd"><td>USER-QMMM</td>
|
||||
<td>QM/MM coupling</td>
|
||||
<td>Axel Kohlmeyer (Temple U)</td>
|
||||
<td><a class="reference internal" href="fix_qmmm.html"><em>fix qmmm</em></a></td>
|
||||
@ -896,7 +912,7 @@ serial.</p>
|
||||
</td>
|
||||
<td>lib/qmmm</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>USER-QTB</td>
|
||||
<tr class="row-even"><td>USER-QTB</td>
|
||||
<td>quantum nuclear effects</td>
|
||||
<td>Yuan Shen (Stanford)</td>
|
||||
<td><a class="reference internal" href="fix_qtb.html"><em>fix qtb</em></a> <a class="reference internal" href="fix_qbmsst.html"><em>fix_qbmsst</em></a></td>
|
||||
@ -910,7 +926,7 @@ serial.</p>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>USER-QUIP</td>
|
||||
<tr class="row-odd"><td>USER-QUIP</td>
|
||||
<td>QUIP/libatoms interface</td>
|
||||
<td>Albert Bartok-Partay (U Cambridge)</td>
|
||||
<td><a class="reference internal" href="pair_quip.html"><em>pair_style quip</em></a></td>
|
||||
@ -921,7 +937,7 @@ serial.</p>
|
||||
</td>
|
||||
<td>lib/quip</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>USER-REAXC</td>
|
||||
<tr class="row-even"><td>USER-REAXC</td>
|
||||
<td>C version of ReaxFF</td>
|
||||
<td>Metin Aktulga (LBNL)</td>
|
||||
<td><a class="reference internal" href="pair_reax_c.html"><em>pair_style reaxc</em></a></td>
|
||||
@ -935,7 +951,7 @@ serial.</p>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>USER-SMD</td>
|
||||
<tr class="row-odd"><td>USER-SMD</td>
|
||||
<td>smoothed Mach dynamics</td>
|
||||
<td>Georg Ganzenmuller (EMI)</td>
|
||||
<td><a class="reference external" href="PDF/SMD_LAMMPS_userguide.pdf">userguide.pdf</a></td>
|
||||
@ -949,6 +965,20 @@ serial.</p>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>USER-SMTBQ</td>
|
||||
<td>Second Moment Tight Binding - QEq potential</td>
|
||||
<td>Salles & Maras & Politano & Tetot (4)</td>
|
||||
<td><a class="reference internal" href="pair_smtbq.html"><em>pair_style smtbq</em></a></td>
|
||||
<td>USER/smtbq</td>
|
||||
<td><ul class="first last simple">
|
||||
<li></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><ul class="first last simple">
|
||||
<li></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>USER-SPH</td>
|
||||
<td>smoothed particle hydrodynamics</td>
|
||||
<td>Georg Ganzenmuller (EMI)</td>
|
||||
@ -994,6 +1024,8 @@ Jerome Henin (LISM, Marseille, France).</p>
|
||||
<p>(3) The DRUDE package was created by Alain Dequidt (U Blaise Pascal
|
||||
Clermont-Ferrand) and co-authors Julien Devemy (CNRS) and Agilio Padua
|
||||
(U Blaise Pascal).</p>
|
||||
<p>(4) The SMTBQ package was created by Nicolas Salles, Emile Maras,
|
||||
Olivier Politano, and Robert Tetot (LAAS-CNRS, France).</p>
|
||||
<p>If the Library is not listed as lib/package, then it is a third-party
|
||||
library not included in the LAMMPS distribution. See the
|
||||
src/package/Makefile.lammps file for info on where to download the
|
||||
@ -1275,8 +1307,31 @@ uwo.ca) and Colin (cdennist at uwo.ca) Denniston, University of
|
||||
Western Ontario. Contact them directly if you have questions.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-mgpt-package">
|
||||
<h2>4.26. USER-MGPT package<a class="headerlink" href="#user-mgpt-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package contains a fast implementation for LAMMPS of
|
||||
quantum-based MGPT multi-ion potentials. The MGPT or model GPT method
|
||||
derives from first-principles DFT-based generalized pseudopotential
|
||||
theory (GPT) through a series of systematic approximations valid for
|
||||
mid-period transition metals with nearly half-filled d bands. The
|
||||
MGPT method was originally developed by John Moriarty at Lawrence
|
||||
Livermore National Lab (LLNL).</p>
|
||||
<p>In the general matrix representation of MGPT, which can also be
|
||||
applied to f-band actinide metals, the multi-ion potentials are
|
||||
evaluated on the fly during a simulation through d- or f-state matrix
|
||||
multiplication, and the forces that move the ions are determined
|
||||
analytically. The <em>mgpt</em> pair style in this package calculates forces
|
||||
and energies using an optimized matrix-MGPT algorithm due to Tomas
|
||||
Oppelstrup at LLNL.</p>
|
||||
<p>See this doc page to get started:</p>
|
||||
<p><a class="reference internal" href="pair_mgpt.html"><em>pair_style mgpt</em></a></p>
|
||||
<p>The persons who created the USER-MGPT package are Tomas Oppelstrup
|
||||
(<a class="reference external" href="mailto:oppelstrup2%40llnl.gov">oppelstrup2<span>@</span>llnl<span>.</span>gov</a>) and John Moriarty (<a class="reference external" href="mailto:moriarty2%40llnl.gov">moriarty2<span>@</span>llnl<span>.</span>gov</a>)
|
||||
Contact them directly if you have any questions.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-misc-package">
|
||||
<h2>4.26. USER-MISC package<a class="headerlink" href="#user-misc-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.27. USER-MISC package<a class="headerlink" href="#user-misc-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The files in this package are a potpourri of (mostly) unrelated
|
||||
features contributed to LAMMPS by users. Each feature is a single
|
||||
pair of files (<a href="#id2"><span class="problematic" id="id3">*</span></a>.cpp and <a href="#id4"><span class="problematic" id="id5">*</span></a>.h).</p>
|
||||
@ -1293,7 +1348,7 @@ about the feature or its coding.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-molfile-package">
|
||||
<h2>4.27. USER-MOLFILE package<a class="headerlink" href="#user-molfile-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.28. USER-MOLFILE package<a class="headerlink" href="#user-molfile-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package contains a dump molfile command which uses molfile
|
||||
plugins that are bundled with the
|
||||
<a class="reference external" href="http://www.ks.uiuc.edu/Research/vmd">VMD</a> molecular visualization and
|
||||
@ -1312,7 +1367,7 @@ application itself.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-omp-package">
|
||||
<h2>4.28. USER-OMP package<a class="headerlink" href="#user-omp-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.29. USER-OMP package<a class="headerlink" href="#user-omp-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package provides OpenMP multi-threading support and
|
||||
other optimizations of various LAMMPS pair styles, dihedral
|
||||
styles, and fix styles.</p>
|
||||
@ -1323,7 +1378,7 @@ styles, and fix styles.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-phonon-package">
|
||||
<h2>4.29. USER-PHONON package<a class="headerlink" href="#user-phonon-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.30. USER-PHONON package<a class="headerlink" href="#user-phonon-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package contains a fix phonon command that calculates dynamical
|
||||
matrices, which can then be used to compute phonon dispersion
|
||||
relations, directly from molecular dynamics simulations.</p>
|
||||
@ -1335,7 +1390,7 @@ if you have questions.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-qmmm-package">
|
||||
<h2>4.30. USER-QMMM package<a class="headerlink" href="#user-qmmm-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.31. USER-QMMM package<a class="headerlink" href="#user-qmmm-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package provides a fix qmmm command which allows LAMMPS to be
|
||||
used in a QM/MM simulation, currently only in combination with pw.x
|
||||
code from the <a class="reference external" href="http://www.quantum-espresso.org">Quantum ESPRESSO</a> package.</p>
|
||||
@ -1352,7 +1407,7 @@ without changes to LAMMPS itself.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-qtb-package">
|
||||
<h2>4.31. USER-QTB package<a class="headerlink" href="#user-qtb-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.32. USER-QTB package<a class="headerlink" href="#user-qtb-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package provides a self-consistent quantum treatment of the
|
||||
vibrational modes in a classical molecular dynamics simulation. By
|
||||
coupling the MD simulation to a colored thermostat, it introduces zero
|
||||
@ -1374,7 +1429,7 @@ have questions.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-reaxc-package">
|
||||
<h2>4.32. USER-REAXC package<a class="headerlink" href="#user-reaxc-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.33. USER-REAXC package<a class="headerlink" href="#user-reaxc-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package contains a implementation for LAMMPS of the ReaxFF force
|
||||
field. ReaxFF uses distance-dependent bond-order functions to
|
||||
represent the contributions of chemical bonding to the potential
|
||||
@ -1402,7 +1457,7 @@ questions.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-smd-package">
|
||||
<h2>4.33. USER-SMD package<a class="headerlink" href="#user-smd-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.34. USER-SMD package<a class="headerlink" href="#user-smd-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package implements smoothed Mach dynamics (SMD) in
|
||||
LAMMPS. Currently, the package has the following features:</p>
|
||||
<ul class="simple">
|
||||
@ -1424,8 +1479,23 @@ Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in
|
||||
Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if
|
||||
you have questions.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-smtbq-package">
|
||||
<h2>4.35. USER-SMTBQ package<a class="headerlink" href="#user-smtbq-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package implements the Second Moment Tight Binding - QEq (SMTB-Q)
|
||||
potential for the description of ionocovalent bonds in oxides.</p>
|
||||
<p>There are example scripts for using this package in
|
||||
examples/USER/smtbq.</p>
|
||||
<p>See this doc page to get started:</p>
|
||||
<p><a class="reference internal" href="pair_smtbq.html"><em>pair_style smtbq</em></a></p>
|
||||
<p>The persons who created the USER-SMTBQ package are Nicolas Salles,
|
||||
Emile Maras, Olivier Politano, Robert Tetot, who can be contacted at
|
||||
these email addreses: <a class="reference external" href="mailto:lammps%40u-bourgogne.fr">lammps<span>@</span>u-bourgogne<span>.</span>fr</a>, <a class="reference external" href="mailto:nsalles%40laas.fr">nsalles<span>@</span>laas<span>.</span>fr</a>. Contact
|
||||
them directly if you have any questions.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="user-sph-package">
|
||||
<h2>4.34. USER-SPH package<a class="headerlink" href="#user-sph-package" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>4.36. USER-SPH package<a class="headerlink" href="#user-sph-package" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This package implements smoothed particle hydrodynamics (SPH) in
|
||||
LAMMPS. Currently, the package has the following features:</p>
|
||||
<ul class="simple">
|
||||
|
||||
@ -206,6 +206,7 @@ USER-FEP, free energy perturbation, Agilio Padua (U Blaise Pascal Clermont-Ferra
|
||||
USER-H5MD, dump output via HDF5, Pierre de Buyl (KU Leuven), "dump h5md"_dump_h5md.html, -, -, lib/h5md
|
||||
USER-INTEL, Vectorized CPU and Intel(R) coprocessor styles, W. Michael Brown (Intel), "Section accelerate"_accelerate_intel.html, examples/intel, -, -
|
||||
USER-LB, Lattice Boltzmann fluid, Colin Denniston (U Western Ontario), "fix lb/fluid"_fix_lb_fluid.html, USER/lb, -, -
|
||||
USER-MGPT, fast MGPT multi-ion potentials, Tomas Oppelstrup & John Moriarty (LLNL), "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -, -
|
||||
USER-MISC, single-file contributions, USER-MISC/README, USER-MISC/README, -, -, -
|
||||
USER-MOLFILE, "VMD"_VMD molfile plug-ins, Axel Kohlmeyer (Temple U), "dump molfile"_dump_molfile.html, -, -, VMD-MOLFILE
|
||||
USER-OMP, OpenMP threaded styles, Axel Kohlmeyer (Temple U), "Section accelerate"_accelerate_omp.html, -, -, -
|
||||
@ -215,6 +216,7 @@ USER-QTB, quantum nuclear effects, Yuan Shen (Stanford), "fix qtb"_fix_qtb.html
|
||||
USER-QUIP, QUIP/libatoms interface, Albert Bartok-Partay (U Cambridge), "pair_style quip"_pair_quip.html, USER/quip, -, lib/quip
|
||||
USER-REAXC, C version of ReaxFF, Metin Aktulga (LBNL), "pair_style reaxc"_pair_reax_c.html, reax, -, -
|
||||
USER-SMD, smoothed Mach dynamics, Georg Ganzenmuller (EMI), "userguide.pdf"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, -, -
|
||||
USER-SMTBQ, Second Moment Tight Binding - QEq potential, Salles & Maras & Politano & Tetot (4), "pair_style smtbq"_pair_smtbq.html, USER/smtbq, -, -
|
||||
USER-SPH, smoothed particle hydrodynamics, Georg Ganzenmuller (EMI), "userguide.pdf"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, "sph"_sph, -
|
||||
USER-TALLY, Pairwise tallied computes, Axel Kohlmeyer (Temple U), "compute <...>/tally"_compute_tally.html, USER/tally, -, -
|
||||
:tb(ea=c)
|
||||
@ -239,6 +241,9 @@ Jerome Henin (LISM, Marseille, France).
|
||||
Clermont-Ferrand) and co-authors Julien Devemy (CNRS) and Agilio Padua
|
||||
(U Blaise Pascal).
|
||||
|
||||
(4) The SMTBQ package was created by Nicolas Salles, Emile Maras,
|
||||
Olivier Politano, and Robert Tetot (LAAS-CNRS, France).
|
||||
|
||||
If the Library is not listed as lib/package, then it is a third-party
|
||||
library not included in the LAMMPS distribution. See the
|
||||
src/package/Makefile.lammps file for info on where to download the
|
||||
@ -581,6 +586,34 @@ Western Ontario. Contact them directly if you have questions.
|
||||
|
||||
:line
|
||||
|
||||
USER-MGPT package :h4
|
||||
|
||||
This package contains a fast implementation for LAMMPS of
|
||||
quantum-based MGPT multi-ion potentials. The MGPT or model GPT method
|
||||
derives from first-principles DFT-based generalized pseudopotential
|
||||
theory (GPT) through a series of systematic approximations valid for
|
||||
mid-period transition metals with nearly half-filled d bands. The
|
||||
MGPT method was originally developed by John Moriarty at Lawrence
|
||||
Livermore National Lab (LLNL).
|
||||
|
||||
In the general matrix representation of MGPT, which can also be
|
||||
applied to f-band actinide metals, the multi-ion potentials are
|
||||
evaluated on the fly during a simulation through d- or f-state matrix
|
||||
multiplication, and the forces that move the ions are determined
|
||||
analytically. The {mgpt} pair style in this package calculates forces
|
||||
and energies using an optimized matrix-MGPT algorithm due to Tomas
|
||||
Oppelstrup at LLNL.
|
||||
|
||||
See this doc page to get started:
|
||||
|
||||
"pair_style mgpt"_pair_mgpt.html
|
||||
|
||||
The persons who created the USER-MGPT package are Tomas Oppelstrup
|
||||
(oppelstrup2@llnl.gov) and John Moriarty (moriarty2@llnl.gov)
|
||||
Contact them directly if you have any questions.
|
||||
|
||||
:line
|
||||
|
||||
USER-MISC package :h4
|
||||
|
||||
The files in this package are a potpourri of (mostly) unrelated
|
||||
@ -775,6 +808,27 @@ Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in
|
||||
Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if
|
||||
you have questions.
|
||||
|
||||
:line
|
||||
|
||||
USER-SMTBQ package :h4
|
||||
|
||||
This package implements the Second Moment Tight Binding - QEq (SMTB-Q)
|
||||
potential for the description of ionocovalent bonds in oxides.
|
||||
|
||||
There are example scripts for using this package in
|
||||
examples/USER/smtbq.
|
||||
|
||||
See this doc page to get started:
|
||||
|
||||
"pair_style smtbq"_pair_smtbq.html
|
||||
|
||||
The persons who created the USER-SMTBQ package are Nicolas Salles,
|
||||
Emile Maras, Olivier Politano, Robert Tetot, who can be contacted at
|
||||
these email addreses: lammps@u-bourgogne.fr, nsalles@laas.fr. Contact
|
||||
them directly if you have any questions.
|
||||
|
||||
:line
|
||||
|
||||
USER-SPH package :h4
|
||||
|
||||
This package implements smoothed particle hydrodynamics (SPH) in
|
||||
|
||||
BIN
doc/_images/pair_mgpt.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
doc/_images/pair_smtbq1.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
doc/_images/pair_smtbq2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
doc/_images/pair_smtbq3.jpg
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
doc/_images/pair_vashishta.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
doc/_images/polymorphic3.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
doc/doc2/Eqs/pair_mgpt.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
12
doc/doc2/Eqs/pair_mgpt.tex
Normal file
@ -0,0 +1,12 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
E_{\rm tot}({\bf R}_1 \ldots {\bf R}_N) = NE_{\rm vol}(\Omega )
|
||||
+ \frac{1}{2} \sum _{i,j} \mbox{}^\prime \ v_2(ij;\Omega )
|
||||
+ \frac{1}{6} \sum _{i,j,k} \mbox{}^\prime \ v_3(ijk;\Omega )
|
||||
+ \frac{1}{24} \sum _{i,j,k,l} \mbox{}^\prime \ v_4(ijkl;\Omega )
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
BIN
doc/doc2/Eqs/pair_smtbq1.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
13
doc/doc2/Eqs/pair_smtbq1.tex
Executable file
@ -0,0 +1,13 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
E_{tot} & = & E_{ES} + E_{OO} + E_{MO} \\
|
||||
E_{ES} & = & \sum_i{\Big[ \chi_{i}^{0}Q_i + \frac{1}{2}J_{i}^{0}Q_{i}^{2} +
|
||||
\frac{1}{2} \sum_{j\neq i}{ J_{ij}(r_{ij})f_{cut}^{R_{coul}}(r_{ij})Q_i Q_j } \Big] } \\
|
||||
E_{OO} & = & \sum_{i,j}^{i,j = O}{\Bigg[Cexp( -\frac{r_{ij}}{\rho} ) - Df_{cut}^{r_1^{OO}r_2^{OO}}(r_{ij}) exp(Br_{ij})\Bigg]} \\
|
||||
E_{MO} & = & \sum_i{E_{cov}^{i} + \sum_{j\neq i}{ Af_{cut}^{r_{c1}r_{c2}}(r_{ij})exp\Big[-p(\frac{r_{ij}}{r_0} -1) \Big] } } \\
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
BIN
doc/doc2/Eqs/pair_smtbq2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
12
doc/doc2/Eqs/pair_smtbq2.tex
Executable file
@ -0,0 +1,12 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
E_{cov}^{i(i=M,O)} & = & - \Bigg\{\eta_i(\mu \xi^{0})^2 f_{cut}^{r_{c1}r_{c2}}(r_{ij})
|
||||
\Bigg( \sum_{j(j=O,M)}{ exp[ -2q(\frac{r_{ij}}{r_0} - 1)] } \Bigg)
|
||||
\delta Q_i \Big( 2\frac{n_0}{\eta_i} - \delta Q_i \Big) \Bigg\}^{1/2} \\
|
||||
\delta Q_i & = & | Q_i^{F} | - | Q_i |
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
BIN
doc/doc2/Eqs/pair_smtbq3.jpg
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
10
doc/doc2/Eqs/pair_smtbq3.tex
Executable file
@ -0,0 +1,10 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
\xi^0 & = & \frac{\xi_O}{m} = \frac{\xi_C}{n} \\
|
||||
\frac{\beta_O}{\sqrt{m}} & = & \frac{\beta_C}{\sqrt{n}} = \xi^0 \frac{\sqrt{m}+\sqrt{n}}{2}\\
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
BIN
doc/doc2/Eqs/pair_vashishta.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
22
doc/doc2/Eqs/pair_vashishta.tex
Normal file
@ -0,0 +1,22 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
U & = & \sum_i^N \sum_{j > i}^N U_{ij}^{(2)} (r_{ij}) +
|
||||
\sum_i^N \sum_{j \neq i}^N \sum_{k > j, k \neq i}^N
|
||||
U_{ijk}^{(3)} (r_{ij}, r_{ik}, \theta_{ijk})
|
||||
\\
|
||||
U_{ij}^{(2)} (r) & = & \frac{H_{ij}}{r^{\eta_{ij}}}
|
||||
+ \frac{Z_i Z_j}{r}\exp(-r/\lambda_{1,ij})
|
||||
- \frac{D_{ij}}{r^4}\exp(-r/\lambda_{4,ij})
|
||||
- \frac{W_{ij}}{r^6}, r < r_{c,{ij}}
|
||||
\\
|
||||
U_{ijk}^{(3)}(r_{ij},r_{ik},\theta_{ijk}) & = & B_{ijk}
|
||||
\frac{\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2}
|
||||
{1+C_{ijk}\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} \times \\
|
||||
& & \exp \left( \frac{\gamma_{ij}}{r_{ij} - r_{0,ij}} \right)
|
||||
\exp \left( \frac{\gamma_{ik}}{r_{ik} - r_{0,ik}} \right), r_{ij} < r_{0,ij}, r_{ik} < r_{0,ik}
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
9
doc/doc2/Eqs/polymorphic1.tex
Normal file
@ -0,0 +1,9 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
E=\frac{1}{2}\sum_{i=1}^{i=N}\sum_{j=1}^{j=N}\left[\left(1-\delta_{ij}\right)\cdot U_{IJ}\left(r_{ij}\right)-\left(1-\eta_{ij}\right)\cdot F_{IJ}\left(r_{ij}\right)\cdot V_{IJ}\left(r_{ij}\right)\right]
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
10
doc/doc2/Eqs/polymorphic2.tex
Normal file
@ -0,0 +1,10 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
X_{ij}=\sum_{k=i_1,k\neq i,j}^{i_N}W_{IK}\left(r_{ik}\right)\cdot G_{JIK}\left(\theta_{jik}\right)\cdot P_{IK}\left(\Delta r_{jik}\right)
|
||||
\label{X_eq2}
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
10
doc/doc2/Eqs/polymorphic3.tex
Normal file
@ -0,0 +1,10 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
\Delta r_{jik}=r_{ij}-\xi_{IJ}\cdot r_{ik}
|
||||
\label{Dr_eq3}
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
17
doc/doc2/Eqs/polymorphic4.tex
Normal file
@ -0,0 +1,17 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
\left\{\begin{array}{l}
|
||||
\eta_{ij}=\delta_{ij},\xi_{IJ}=0 \\
|
||||
U_{IJ}\left(r\right)=A_{IJ}\cdot\epsilon_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^q\cdot \left[B_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^{p-q}-1\right]\cdot exp\left(\frac{\sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
|
||||
V_{IJ}\left(r\right)=\sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
|
||||
F_{IJ}\left(X\right)=-X \\
|
||||
P_{IJ}\left(\Delta r\right)=1 \\
|
||||
W_{IJ}\left(r\right)=\sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
|
||||
G_{JIK}\left(\theta\right)=\left(cos\theta+\frac{1}{3}\right)^2
|
||||
\end{array}\right.
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
17
doc/doc2/Eqs/polymorphic5.tex
Normal file
@ -0,0 +1,17 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
\left\{\begin{array}{l}
|
||||
\eta_{ij}=\delta_{ij},\xi_{IJ}=1 \\
|
||||
U_{IJ}\left(r\right)=\frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}\left(r-r_{e,IJ}\right)}\right]\cdot f_{c,IJ}\left(r\right) \\
|
||||
V_{IJ}\left(r\right)=\frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}\left(r-r_{e,IJ}\right)}\right]\cdot f_{c,IJ}\left(r\right) \\
|
||||
F_{IJ}\left(X\right)=\left(1+X\right)^{-\frac{1}{2}} \\
|
||||
P_{IJ}\left(\Delta r\right)=exp\left(2\mu_{IK}\cdot \Delta r\right) \\
|
||||
W_{IJ}\left(r\right)=f_{c,IK}\left(r\right) \\
|
||||
G_{JIK}\left(\theta\right)=\gamma_{IK}\left[1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}\right]
|
||||
\end{array}\right.
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
13
doc/doc2/Eqs/polymorphic6.tex
Normal file
@ -0,0 +1,13 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
f_{c,IJ}=\left\{\begin{array}{lr}
|
||||
1, & r\leq r_{s,IJ} \\
|
||||
\frac{1}{2}+\frac{1}{2} cos \left[\frac{\pi \left(r-r_{s,IJ}\right)}{r_{c,IJ}-r_{s,IJ}}\right], & r_{s,IJ}<r<r_{c,IJ} \\
|
||||
0, & r \geq r_{c,IJ} \\
|
||||
\end{array}\right.
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
25
doc/doc2/Eqs/polymorphic7.tex
Normal file
@ -0,0 +1,25 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
\left\{\begin{array}{l}
|
||||
\eta_{ij}=\delta_{ij},\xi_{IJ}=1 \\
|
||||
U_{IJ}\left(r\right)=\left\{\begin{array}{lr}
|
||||
A_{IJ}\cdot exp\left(-\lambda_{1,IJ}\cdot r\right)\cdot f_{c,IJ}\left(r\right), & r\leq r_{s,1,IJ} \\
|
||||
A_{IJ}\cdot exp\left(-\lambda_{1,IJ}\cdot r\right)\cdot f_{c,IJ}\left(r\right)\cdot f_{c,1,IJ}\left(r\right), & r_{s,1,IJ}<r<r_{c,1,IJ} \\
|
||||
0, & r\ge r_{c,1,IJ}
|
||||
\end{array}\right. \\
|
||||
V_{IJ}\left(r\right)=\left\{\begin{array}{lr}
|
||||
B_{IJ} \cdot exp\left(-\lambda_{2,IJ}\cdot r\right)\cdot f_{c,IJ}\left(r\right), & r\le r_{s,1,IJ} \\
|
||||
B_{IJ} \cdot exp\left(-\lambda_{2,IJ}\cdot r\right)\cdot f_{c,IJ}\left(r\right)+A_{IJ}\cdot exp\left(-\lambda_{1,IJ}\cdot r\right)\cdot & \\ ~~~~~~ f_{c,IJ}\left(r\right)\cdot \left[1-f_{c,1,IJ}\left(r\right)\right], & r_{s,1,IJ}<r<r_{c,1,IJ} \\
|
||||
B_{IJ} \cdot exp\left(-\lambda_{2,IJ}\cdot r\right)\cdot f_{c,IJ}\left(r\right)+A_{IJ}\cdot exp\left(-\lambda_{1,IJ}\cdot r\right)\cdot & \\ ~~~~~~ f_{c,IJ}\left(r\right) & r \ge r_{c,1,IJ}
|
||||
\end{array}\right. \\
|
||||
F_{IJ}\left(X\right)=\left[1+\left(\beta_{IJ}\cdot X\right)^{n_{IJ}}\right]^{-\frac{1}{2n_{IJ}}} \\
|
||||
P_{IJ}\left(\Delta r\right)=exp\left(\lambda_{3,IK}\cdot \Delta r^3\right) \\
|
||||
W_{IJ}\left(r\right)=f_{c,IK}\left(r\right) \\
|
||||
G_{JIK}\left(\theta\right)=1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}
|
||||
\end{array}\right.
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
13
doc/doc2/Eqs/polymorphic8.tex
Normal file
@ -0,0 +1,13 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
f_{c,1,IJ}=\left\{\begin{array}{lr}
|
||||
1, & r\leq r_{s,1,IJ} \\
|
||||
\frac{1}{2}+\frac{1}{2} cos \left[\frac{\pi \left(r-r_{s,1,IJ}\right)}{r_{c,1,IJ}-r_{s,1,IJ}}\right], & r_{s,1,IJ}<r<r_{c,1,IJ} \\
|
||||
0, & r \geq r_{c,1,IJ} \\
|
||||
\end{array}\right.
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
17
doc/doc2/Eqs/polymorphic9.tex
Normal file
@ -0,0 +1,17 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
\left\{\begin{array}{l}
|
||||
\eta_{ij}=1-\delta_{ij},\xi_{IJ}=0 \\
|
||||
U_{IJ}\left(r\right)=\phi_{IJ}\left(r\right) \\
|
||||
V_{IJ}\left(r\right)=1 \\
|
||||
F_{II}\left(X\right)=-2F_I\left(X\right) \\
|
||||
P_{IJ}\left(\Delta r\right)=1 \\
|
||||
W_{IJ}\left(r\right)=f_{K}\left(r\right) \\
|
||||
G_{JIK}\left(\theta\right)=1
|
||||
\end{array}\right.
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
@ -3,7 +3,7 @@
|
||||
<!-- HTML_ONLY -->
|
||||
<HEAD>
|
||||
<TITLE>LAMMPS Users Manual</TITLE>
|
||||
<META NAME="docnumber" CONTENT="22 Oct 2015 version">
|
||||
<META NAME="docnumber" CONTENT="23 Oct 2015 version">
|
||||
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
||||
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
||||
</HEAD>
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
<P><CENTER><H3>LAMMPS Documentation
|
||||
</H3></CENTER>
|
||||
<CENTER><H4>22 Oct 2015 version
|
||||
<CENTER><H4>23 Oct 2015 version
|
||||
</H4></CENTER>
|
||||
<H4>Version info:
|
||||
</H4>
|
||||
|
||||
@ -536,11 +536,11 @@ package</A>.
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_list.html">list</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/long/soft (o)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/coul/cut/soft (o)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/coul/long/soft (o)</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_dipole.html">lj/cut/dipole/sf (go)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/soft (o)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/tip4p/long/soft (o)</A></TD><TD ><A HREF = "pair_sdk.html">lj/sdk (gko)</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_sdk.html">lj/sdk/coul/long (go)</A></TD><TD ><A HREF = "pair_sdk.html">lj/sdk/coul/msm (o)</A></TD><TD ><A HREF = "pair_lj_sf.html">lj/sf (o)</A></TD><TD ><A HREF = "pair_meam_spline.html">meam/spline</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_meam_sw_spline.html">meam/sw/spline</A></TD><TD ><A HREF = "pair_quip.html">quip</A></TD><TD ><A HREF = "pair_reax_c.html">reax/c</A></TD><TD ><A HREF = "pair_smd_hertz.html">smd/hertz</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_smd_tlsph.html">smd/tlsph</A></TD><TD ><A HREF = "pair_smd_triangulated_surface.html">smd/triangulated/surface</A></TD><TD ><A HREF = "pair_smd_ulsph.html">smd/ulsph</A></TD><TD ><A HREF = "pair_sph_heatconduction.html">sph/heatconduction</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_sph_idealgas.html">sph/idealgas</A></TD><TD ><A HREF = "pair_sph_lj.html">sph/lj</A></TD><TD ><A HREF = "pair_sph_rhosum.html">sph/rhosum</A></TD><TD ><A HREF = "pair_sph_taitwater.html">sph/taitwater</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_sph_taitwater_morris.html">sph/taitwater/morris</A></TD><TD ><A HREF = "pair_srp.html">srp</A></TD><TD ><A HREF = "pair_tersoff.html">tersoff/table (o)</A></TD><TD ><A HREF = "pair_thole.html">thole</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_lj_soft.html">tip4p/long/soft (o)</A>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_meam_sw_spline.html">meam/sw/spline</A></TD><TD ><A HREF = "pair_mgpt.html">mgpt</A></TD><TD ><A HREF = "pair_quip.html">quip</A></TD><TD ><A HREF = "pair_reax_c.html">reax/c</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_smd_hertz.html">smd/hertz</A></TD><TD ><A HREF = "pair_smd_tlsph.html">smd/tlsph</A></TD><TD ><A HREF = "pair_smd_triangulated_surface.html">smd/triangulated/surface</A></TD><TD ><A HREF = "pair_smd_ulsph.html">smd/ulsph</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_smtbq.html">smtbq</A></TD><TD ><A HREF = "pair_sph_heatconduction.html">sph/heatconduction</A></TD><TD ><A HREF = "pair_sph_idealgas.html">sph/idealgas</A></TD><TD ><A HREF = "pair_sph_lj.html">sph/lj</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_sph_rhosum.html">sph/rhosum</A></TD><TD ><A HREF = "pair_sph_taitwater.html">sph/taitwater</A></TD><TD ><A HREF = "pair_sph_taitwater_morris.html">sph/taitwater/morris</A></TD><TD ><A HREF = "pair_srp.html">srp</A></TD></TR>
|
||||
<TR ALIGN="center"><TD ><A HREF = "pair_tersoff.html">tersoff/table (o)</A></TD><TD ><A HREF = "pair_thole.html">thole</A></TD><TD ><A HREF = "pair_lj_soft.html">tip4p/long/soft (o)</A>
|
||||
</TD></TR></TABLE></DIV>
|
||||
|
||||
<HR>
|
||||
|
||||
@ -216,6 +216,7 @@ serial.
|
||||
<TR ALIGN="center"><TD >USER-H5MD</TD><TD > dump output via HDF5</TD><TD > Pierre de Buyl (KU Leuven)</TD><TD > <A HREF = "dump_h5md.html">dump h5md</A></TD><TD > -</TD><TD > -</TD><TD > lib/h5md</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-INTEL</TD><TD > Vectorized CPU and Intel(R) coprocessor styles</TD><TD > W. Michael Brown (Intel)</TD><TD > <A HREF = "accelerate_intel.html">Section accelerate</A></TD><TD > examples/intel</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-LB</TD><TD > Lattice Boltzmann fluid</TD><TD > Colin Denniston (U Western Ontario)</TD><TD > <A HREF = "fix_lb_fluid.html">fix lb/fluid</A></TD><TD > USER/lb</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-MGPT</TD><TD > fast MGPT multi-ion potentials</TD><TD > Tomas Oppelstrup & John Moriarty (LLNL)</TD><TD > <A HREF = "pair_mgpt.html">pair_style mgpt</A></TD><TD > USER/mgpt</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-MISC</TD><TD > single-file contributions</TD><TD > USER-MISC/README</TD><TD > USER-MISC/README</TD><TD > -</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-MOLFILE</TD><TD > <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A> molfile plug-ins</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "dump_molfile.html">dump molfile</A></TD><TD > -</TD><TD > -</TD><TD > VMD-MOLFILE</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-OMP</TD><TD > OpenMP threaded styles</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "accelerate_omp.html">Section accelerate</A></TD><TD > -</TD><TD > -</TD><TD > -</TD></TR>
|
||||
@ -225,6 +226,7 @@ serial.
|
||||
<TR ALIGN="center"><TD >USER-QUIP</TD><TD > QUIP/libatoms interface</TD><TD > Albert Bartok-Partay (U Cambridge)</TD><TD > <A HREF = "pair_quip.html">pair_style quip</A></TD><TD > USER/quip</TD><TD > -</TD><TD > lib/quip</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-REAXC</TD><TD > C version of ReaxFF</TD><TD > Metin Aktulga (LBNL)</TD><TD > <A HREF = "pair_reax_c.html">pair_style reaxc</A></TD><TD > reax</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-SMD</TD><TD > smoothed Mach dynamics</TD><TD > Georg Ganzenmuller (EMI)</TD><TD > <A HREF = "PDF/SMD_LAMMPS_userguide.pdf">userguide.pdf</A></TD><TD > USER/smd</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-SMTBQ</TD><TD > Second Moment Tight Binding - QEq potential</TD><TD > Salles & Maras & Politano & Tetot (4)</TD><TD > <A HREF = "pair_smtbq.html">pair_style smtbq</A></TD><TD > USER/smtbq</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-SPH</TD><TD > smoothed particle hydrodynamics</TD><TD > Georg Ganzenmuller (EMI)</TD><TD > <A HREF = "PDF/SPH_LAMMPS_userguide.pdf">userguide.pdf</A></TD><TD > USER/sph</TD><TD > <A HREF = "http://lammps.sandia.gov/movies.html#sph">sph</A></TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >USER-TALLY</TD><TD > Pairwise tallied computes</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "compute_tally.html">compute <...>/tally</A></TD><TD > USER/tally</TD><TD > -</TD><TD > -</TD></TR>
|
||||
<TR ALIGN="center"><TD >
|
||||
@ -254,6 +256,9 @@ Jerome Henin (LISM, Marseille, France).
|
||||
Clermont-Ferrand) and co-authors Julien Devemy (CNRS) and Agilio Padua
|
||||
(U Blaise Pascal).
|
||||
</P>
|
||||
<P>(4) The SMTBQ package was created by Nicolas Salles, Emile Maras,
|
||||
Olivier Politano, and Robert Tetot (LAAS-CNRS, France).
|
||||
</P>
|
||||
<P>If the Library is not listed as lib/package, then it is a third-party
|
||||
library not included in the LAMMPS distribution. See the
|
||||
src/package/Makefile.lammps file for info on where to download the
|
||||
@ -597,6 +602,34 @@ Western Ontario. Contact them directly if you have questions.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<H4>USER-MGPT package
|
||||
</H4>
|
||||
<P>This package contains a fast implementation for LAMMPS of
|
||||
quantum-based MGPT multi-ion potentials. The MGPT or model GPT method
|
||||
derives from first-principles DFT-based generalized pseudopotential
|
||||
theory (GPT) through a series of systematic approximations valid for
|
||||
mid-period transition metals with nearly half-filled d bands. The
|
||||
MGPT method was originally developed by John Moriarty at Lawrence
|
||||
Livermore National Lab (LLNL).
|
||||
</P>
|
||||
<P>In the general matrix representation of MGPT, which can also be
|
||||
applied to f-band actinide metals, the multi-ion potentials are
|
||||
evaluated on the fly during a simulation through d- or f-state matrix
|
||||
multiplication, and the forces that move the ions are determined
|
||||
analytically. The <I>mgpt</I> pair style in this package calculates forces
|
||||
and energies using an optimized matrix-MGPT algorithm due to Tomas
|
||||
Oppelstrup at LLNL.
|
||||
</P>
|
||||
<P>See this doc page to get started:
|
||||
</P>
|
||||
<P><A HREF = "pair_mgpt.html">pair_style mgpt</A>
|
||||
</P>
|
||||
<P>The persons who created the USER-MGPT package are Tomas Oppelstrup
|
||||
(oppelstrup2@llnl.gov) and John Moriarty (moriarty2@llnl.gov)
|
||||
Contact them directly if you have any questions.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<H4>USER-MISC package
|
||||
</H4>
|
||||
<P>The files in this package are a potpourri of (mostly) unrelated
|
||||
@ -791,6 +824,27 @@ Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in
|
||||
Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if
|
||||
you have questions.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<H4>USER-SMTBQ package
|
||||
</H4>
|
||||
<P>This package implements the Second Moment Tight Binding - QEq (SMTB-Q)
|
||||
potential for the description of ionocovalent bonds in oxides.
|
||||
</P>
|
||||
<P>There are example scripts for using this package in
|
||||
examples/USER/smtbq.
|
||||
</P>
|
||||
<P>See this doc page to get started:
|
||||
</P>
|
||||
<P><A HREF = "pair_smtbq.html">pair_style smtbq</A>
|
||||
</P>
|
||||
<P>The persons who created the USER-SMTBQ package are Nicolas Salles,
|
||||
Emile Maras, Olivier Politano, Robert Tetot, who can be contacted at
|
||||
these email addreses: lammps@u-bourgogne.fr, nsalles@laas.fr. Contact
|
||||
them directly if you have any questions.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<H4>USER-SPH package
|
||||
</H4>
|
||||
<P>This package implements smoothed particle hydrodynamics (SPH) in
|
||||
|
||||
@ -1795,12 +1795,12 @@
|
||||
<dt><a href="pair_lj_smooth.html#index-0">pair_style lj/smooth</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="pair_lj_smooth_linear.html#index-0">pair_style lj/smooth/linear</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="pair_lj96.html#index-0">pair_style lj96/cut</a>
|
||||
</dt>
|
||||
@ -1818,6 +1818,10 @@
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_mgpt.html#index-0">pair_style mgpt</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_mie.html#index-0">pair_style mie/cut</a>
|
||||
</dt>
|
||||
|
||||
@ -1878,6 +1882,10 @@
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_smtbq.html#index-0">pair_style smtbq</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_snap.html#index-0">pair_style snap</a>
|
||||
</dt>
|
||||
|
||||
|
||||
229
doc/doc2/pair_mgpt.html
Normal file
@ -0,0 +1,229 @@
|
||||
<HTML>
|
||||
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
|
||||
</CENTER>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<HR>
|
||||
|
||||
<H3>pair_style mgpt command
|
||||
</H3>
|
||||
<P><B>Syntax:</B>
|
||||
</P>
|
||||
<PRE>pair_style mgpt
|
||||
</PRE>
|
||||
<P><B>Examples:</B>
|
||||
</P>
|
||||
<PRE>pair_style mgpt
|
||||
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin Omega
|
||||
cp ~/lammps/potentials/Ta6.8x.mgpt.parmin parmin
|
||||
cp ~/lammps/potentials/Ta6.8x.mgpt.potin potin
|
||||
pair_coeff * * parmin potin Omega volpress yes nbody 1234 precision double
|
||||
pair_coeff * * parmin potin Omega volpress yes nbody 12
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>Within DFT quantum mechanics, generalized pseudopotential theory (GPT)
|
||||
(<A HREF = "#Moriarty1">Moriarty1</A>) provides a first-principles approach to
|
||||
multi-ion interatomic potentials in d-band transition metals, with a
|
||||
volume-dependent, real-space total-energy functional for the N-ion
|
||||
elemental bulk material in the form
|
||||
</P>
|
||||
<CENTER><IMG SRC = "Eqs/pair_mgpt.jpg">
|
||||
</CENTER>
|
||||
<P>where the prime on each summation sign indicates the exclusion of all
|
||||
self-interaction terms from the summation. The leading volume term
|
||||
E_vol as well as the two-ion central-force pair potential v_2 and the
|
||||
three- and four-ion angular-force potentials, v_3 and v_4, depend
|
||||
explicitly on the atomic volume Omega, but are structure independent
|
||||
and transferable to all bulk ion configurations, either ordered or
|
||||
disordered, and with of without the presence of point and line
|
||||
defects. The simplified model GPT or MGPT (<A HREF = "#Moriarty2">Moriarty2</A>,
|
||||
<A HREF = "#Moriarty3">Moriarty3</A>), which retains the form of E_tot and permits
|
||||
more efficient large-scale atomistic simulations, derives from the GPT
|
||||
through a series of systematic approximations applied to E_vol and the
|
||||
potentials v_n that are valid for mid-period transition metals with
|
||||
nearly half-filled d bands.
|
||||
</P>
|
||||
<P>Both analytic (<A HREF = "#Moriarty2">Moriarty2</A>) and matrix
|
||||
(<A HREF = "#Moriarty3">Moriarty3</A>) representations of MGPT have been developed.
|
||||
In the more general matrix representation, which can also be applied
|
||||
to f-band actinide metals and permits both canonical and non-canonical
|
||||
d/f bands, the multi-ion potentials are evaluated on the fly during a
|
||||
simulation through d- or f-state matrix multiplication, and the forces
|
||||
that move the ions are determined analytically. Fast matrix-MGPT
|
||||
algorithms have been developed independently by Glosli
|
||||
(<A HREF = "#Glosi">Glosli</A>, <A HREF = "#Moriarty3">Moriarty3</A>) and by Oppelstrup
|
||||
(<A HREF = "#Oppelstrup">Oppelstrup</A>)
|
||||
</P>
|
||||
<P>The <I>mgpt</I> pair style calculates forces, energies, and the total
|
||||
energy per atom, E_tot/N, using the Oppelstrup matrix-MGPT algorithm.
|
||||
Input potential and control data are entered through the
|
||||
<A HREF = "pair_coeff.html">pair_coeff</A> command. Each material treated requires
|
||||
input parmin and potin potential files, as shown in the above
|
||||
examples, as well as specification by the user of the initial atomic
|
||||
volume Omega through pair_coeff. At the beginning of a time step in
|
||||
any simulation, the total volume of the simulation cell V should
|
||||
always be equal to Omega*N, where N is the number of metal ions
|
||||
present, taking into account the presence of any vacancies and/or
|
||||
interstitials in the case of a solid. In a constant-volume
|
||||
simulation, which is the normal mode of operation for the <I>mgpt</I> pair
|
||||
style, Omega, V and N all remain constant throughout the simulation
|
||||
and thus are equal to their initial values. In a constant-stress
|
||||
simulation, the cell volume V will change (slowly) as the simulation
|
||||
proceeds. After each time step, the atomic volume should be updated
|
||||
by the code as Omega = V/N. In addition, the volume term E_vol and
|
||||
the potentials v_2, v_3 and v_4 have to be removed at the end of the
|
||||
time step, and then respecified at the new value of Omega. In all
|
||||
smulations, Omega must remain within the defined volume range for
|
||||
E_vol and the potentials for the given material.
|
||||
</P>
|
||||
<P>The default option volpress yes in the <A HREF = "pair_coeff.html">pair_coeff</A>
|
||||
command includes all volume derivatives of E_tot required to calculate
|
||||
the stress tensor and pressure correctly. The option volpress no
|
||||
disregards the pressure contribution resulting from the volume term
|
||||
E_vol, and can be used for testing and analysis purposes. The
|
||||
additional optional variable nbody controls the specific terms in
|
||||
E_tot that are calculated. The default option and the normal option
|
||||
for mid-period transition and actinide metals is nbody 1234 for which
|
||||
all four terms in E_tot are retained. The option nbody 12, for
|
||||
example, retains only the volume term and the two-ion pair potential
|
||||
term and can be used for GPT series-end transition metals that can be
|
||||
well described without v_3 and v_4. The nbody option can also be used
|
||||
to test or analyze the contribution of any of the four terms in E_tot
|
||||
to a given calculated property.
|
||||
</P>
|
||||
<P>The <I>mgpt</I> pair style makes extensive use of matrix algebra and
|
||||
includes optimized kernels for the BlueGene/Q architecture and the
|
||||
Intel/AMD (x86) architectures. When compiled with the appropriate
|
||||
compiler and compiler switches (-msse3 on x86, and using the IBM XL
|
||||
compiler on BG/Q), these optimized routines are used automatically.
|
||||
For BG/Q machines, building with the default Makefile for that
|
||||
architecture (e.g., "make bgq") should enable the optimized algebra
|
||||
routines. For x-86 machines, the here provided Makefile.mpi_fastmgpt
|
||||
(build with "make mpi_fastmgpt") enables the fast algebra routines.
|
||||
The user will be informed in the output files of the matrix kernels in
|
||||
use. To further improve speed, on x86 the option precision single can
|
||||
be added to the <A HREF = "pair_coeff.html">pair_coeff</A> command line, which
|
||||
improves speed (up to a factor of two) at the cost of doing matrix
|
||||
calculations with 7 digit precision instead of the default 16. For
|
||||
consistency the default option can be specified explicitly by the
|
||||
option precision double.
|
||||
</P>
|
||||
<P>All remaining potential and control data are contained with the parmin
|
||||
and potin files, including cutoffs, atomic mass, and other basic MGPT
|
||||
variables. Specific MGPT potential data for the transition metals
|
||||
tantalum (Ta4 and Ta6.8x potentials), molybdenum (Mo5.2 potentials),
|
||||
and vanadium (V6.1 potentials) are contained in the LAMMPS potentials
|
||||
directory. The stored files are, respectively, Ta4.mgpt.parmin,
|
||||
Ta4.mgpt.potin, Ta6.8x.mgpt.parmin, Ta6.8x.mgpt.potin,
|
||||
Mo5.2.mgpt.parmin, Mo5.2.mgpt.potin, V6.1.mgpt.parmin, and
|
||||
V6.1.mgpt.potin . Useful corresponding informational "README" files
|
||||
on the Ta4, Ta6.8x, Mo5.2 and V6.1 potentials are also included in the
|
||||
potentials directory. These latter files indicate the volume mesh and
|
||||
range for each potential and give appropriate references for the
|
||||
potentials. It is expected that MGPT potentials for additional
|
||||
materials will be added over time.
|
||||
</P>
|
||||
<P>Useful example MGPT scripts are given in the examples/USER/mgpt
|
||||
directory. These scripts show the necessary steps to perform
|
||||
constant-volume calculations and simulations. It is strongly
|
||||
recommended that the user work through and understand these examples
|
||||
before proceeding to more complex simulations.
|
||||
</P>
|
||||
<P>IMPORTANT NOTE: For good performance, LAMMPS should be built with the
|
||||
compiler flags "-O3 -msse3 -funroll-loops" when including this pair
|
||||
style. The src/MAKE/OPTIONS/Makefile.mpi_fastmgpt is an example
|
||||
machine Makefile with these options included as part of a standard MPI
|
||||
build. Note that as-is it will build with whatever low-level compiler
|
||||
(g++, icc, etc) is the default for your MPI installation.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P><B>Mixing, shift, table tail correction, restart</B>:
|
||||
</P>
|
||||
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
|
||||
mix, shift, table, and tail options.
|
||||
</P>
|
||||
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
|
||||
files</A>, since it is stored in potential files. Thus, you
|
||||
needs to re-specify the pair_style and pair_coeff commands in an input
|
||||
script that reads a restart file.
|
||||
</P>
|
||||
<P>This pair style can only be used via the <I>pair</I> keyword of the
|
||||
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
|
||||
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P><B>Restrictions:</B>
|
||||
</P>
|
||||
<P>This pair style is part of the USER-MGPT package and is only enabled
|
||||
if LAMMPS is built with that package. See the <A HREF = "Section_start.html#start_3">Making
|
||||
LAMMPS</A> section for more info.
|
||||
</P>
|
||||
<P>The MGPT potentials require the <A HREF = "newton.html">newtion</A> setting to be
|
||||
"on" for pair style interactions.
|
||||
</P>
|
||||
<P>The stored parmin and potin potential files provided with LAMMPS in
|
||||
the "potentials" directory are written in Rydberg atomic units, with
|
||||
energies in Rydbergs and distances in Bohr radii. The <I>mgpt</I> pair
|
||||
style converts Rydbergs to Hartrees to make the potential files
|
||||
compatible with LAMMPS electron <A HREF = "units.html">units</A>.
|
||||
</P>
|
||||
<P>The form of E_tot used in the <I>mgpt</I> pair style is only appropriate
|
||||
for elemental bulk solids and liquids. This includes solids with
|
||||
point and extended defects such as vacancies, interstitials, grain
|
||||
boundaries and dislocations. Alloys and free surfaces, however,
|
||||
require significant modifications, which are not included in the
|
||||
<I>mgpt</I> pair style. Likewise, the <I>hybrid</I> pair style is not allowed,
|
||||
where MGPT would be used for some atoms but not for others.
|
||||
</P>
|
||||
<P>Electron-thermal effects are not included in the standard MGPT
|
||||
potentials provided in the "potentials" directory, where the
|
||||
potentials have been constructed at zero electron temperature.
|
||||
Physically, electron-thermal effects may be important in 3d (e.g., V)
|
||||
and 4d (e.g., Mo) transition metals at high temperatures near melt and
|
||||
above. It is expected that temperature-dependent MGPT potentials for
|
||||
such cases will be added over time.
|
||||
</P>
|
||||
<P><B>Related commands:</B>
|
||||
</P>
|
||||
<P><A HREF = "pair_coeff.html">pair_coeff</A>
|
||||
</P>
|
||||
<P><B>Default:</B>
|
||||
</P>
|
||||
<P>The options defaults for the <A HREF = "pair_coeff.html">pair_coeff</A> command are
|
||||
volpress yes, nbody 1234, and precision double.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<A NAME = "Moriarty1"></A>
|
||||
|
||||
<P><B>(Moriarty1)</B> Moriarty, Physical Review B, 38, 3199 (1988).
|
||||
</P>
|
||||
<A NAME = "Moriarty2"></A>
|
||||
|
||||
<P><B>(Moriarty2)</B> Moriarty, Physical Review B, 42, 1609 (1990).
|
||||
Moriarty, Physical Review B 49, 12431 (1994).
|
||||
</P>
|
||||
<A NAME = "Moriarty3"></A>
|
||||
|
||||
<P><B>(Moriarty3)</B> Moriarty, Benedict, Glosli, Hood, Orlikowski, Patel, Soderlind, Streitz, Tang, and Yang,
|
||||
Journal of Materials Research, 21, 563 (2006).
|
||||
</P>
|
||||
<A NAME = "Glosli"></A>
|
||||
|
||||
<P><B>(Glosli)</B> Glosli, unpublished, 2005.
|
||||
Streitz, Glosli, Patel, Chan, Yates, de Supinski, Sexton and Gunnels, Journal of Physics: Conference
|
||||
Series, 46, 254 (2006).
|
||||
</P>
|
||||
<A NAME = "Oppelstrup"></A>
|
||||
|
||||
<P><B>(Oppelstrup)</B> Oppelstrup, unpublished, 2015.
|
||||
Oppelstrup and Moriarty, to be published.
|
||||
</P>
|
||||
</HTML>
|
||||
272
doc/doc2/pair_smtbq.html
Normal file
@ -0,0 +1,272 @@
|
||||
<HTML>
|
||||
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
|
||||
</CENTER>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<HR>
|
||||
|
||||
<H3>pair_style smtbq command
|
||||
</H3>
|
||||
<P><B>Syntax:</B>
|
||||
</P>
|
||||
<PRE>pair_style smtbq
|
||||
</PRE>
|
||||
<P><B>Examples:</B>
|
||||
</P>
|
||||
<PRE>pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.Al2O3 O Al
|
||||
</PRE>
|
||||
<P><B>Description:</B>
|
||||
</P>
|
||||
<P>This pair stylecomputes a variable charge SMTB-Q (Second-Moment
|
||||
tight-Binding QEq) potential as described in <A HREF = "#SMTB-Q_1">SMTB-Q_1</A> and
|
||||
<A HREF = "#SMTB-Q_2">SMTB-Q_2</A>. Briefly, the energy of metallic-oxygen systems
|
||||
is given by three contributions:
|
||||
</P>
|
||||
<CENTER><IMG SRC = "Eqs/pair_smtbq1.jpg">
|
||||
</CENTER>
|
||||
<P>where <I>E<sub>tot</sub></I> is the total potential energy of the system,
|
||||
<I>E<sub>ES</sub></I> is the electrostatic part of the total energy,
|
||||
<I>E<sub>OO</sub></I> is the interaction between oxygens and
|
||||
<I>E<sub>MO</sub></I> is a short-range interaction between metal and oxygen
|
||||
atoms. This interactions depend on interatomic distance
|
||||
<I>r<sub>ij</sub></I> and/or the charge <I>Q<sub>i</sub></I> of atoms
|
||||
<I>i</I>. Cut-off function enables smooth convergence to zero interaction.
|
||||
</P>
|
||||
<P>The parameters appearing in the upper expressions are set in the
|
||||
ffield.SMTBQ.Syst file where Syst corresponds to the selected system
|
||||
(e.g. field.SMTBQ.Al2O3). Exemples for TiO<sub>2</sub>,
|
||||
Al<sub>2</sub>O<sub>3</sub> are provided. A single pair_coeff command
|
||||
is used with the SMTBQ styles which provides the path to the potential
|
||||
file with parameters for needed elements. These are mapped to LAMMPS
|
||||
atom types by specifying additional arguments after the potential
|
||||
filename in the pair_coeff command. Note that atom type 1 must always
|
||||
correspond to oxygen atoms. As an example, to simulate a TiO2 system,
|
||||
atom type 1 has to be oxygen and atom type 2 Ti. The following
|
||||
pair_coeff command should then be used:
|
||||
</P>
|
||||
<PRE>pair_coeff * * PathToLammps/potentials/ffield.smtbq.TiO2 O Ti
|
||||
</PRE>
|
||||
The electrostatic part of the energy consists of two components
|
||||
|
||||
<P>self-energy of atom <I>i</I> in the form of a second order charge dependent
|
||||
polynomial and a long-range Coulombic electrostatic interaction. The
|
||||
latter uses the wolf summation method described in <A HREF = "#Wolf">Wolf</A>,
|
||||
spherically truncated at a longer cutoff, <I>R<sub>coul</sub></I>. The
|
||||
charge of each ion is modeled by an orbital Slater which depends on
|
||||
the principal quantum number (<I>n</I>) of the outer orbital shared by the
|
||||
ion.
|
||||
</P>
|
||||
<P>Interaction between oxygen, <I>E<sub>OO</sub></I>, consists of two parts,
|
||||
an attractive and a repulsive part. The attractive part is effective
|
||||
only at short range (< r<sub>2</sub><sup>OO</sup>). The attractive
|
||||
contribution was optimized to study surfaces reconstruction
|
||||
(e.g. <A HREF = "#SMTB-Q_2">SMTB-Q_2</A> in TiO<sub>2</sub>) and is not necessary
|
||||
for oxide bulk modeling. The repulsive part is the Pauli interaction
|
||||
between the electron clouds of oxygen. The Pauli repulsion and the
|
||||
coulombic electrostatic interaction have same cut off value. In the
|
||||
ffield.SMTBQ.Syst, the keyword <I>'buck'</I> allows to consider only the
|
||||
repulsive O-O interactions. The keyword <I>'buckPlusAttr'</I> allows to
|
||||
consider the repulsive and the attractive O-O interactions.
|
||||
</P>
|
||||
<P>The short-range interaction between metal-oxygen, <I>E<sub>MO</sub></I> is
|
||||
based on the second moment approximation of the density of states with
|
||||
a N-body potential for the band energy term,
|
||||
<I>E<sup>i</sup><sub>cov</sub></I>, and a Born-Mayer type repulsive terms
|
||||
as indicated by the keyword <I>'second_moment'</I> in the
|
||||
ffield.SMTBQ.Syst. The energy band term is given by:
|
||||
</P>
|
||||
<CENTER><IMG SRC = "Eqs/pair_smtbq2.jpg">
|
||||
</CENTER>
|
||||
<P>where <I>η<sub>i</sub></I> is the stoichiometry of atom <I>i</I>,
|
||||
<I>δQ<sub>i</sub></I> is the charge delocalization of atom <I>i</I>,
|
||||
compared to its formal charge
|
||||
<I>Q<sup>F</sup><sub>i</sub></I>. n<sub>0</sub>, the number of hybridized
|
||||
orbitals, is calculated with to the atomic orbitals shared
|
||||
<I>d<sub>i</sub></I> and the stoichiometry
|
||||
<I>η<sub>i</sub></I>. <I>r<sub>c1</sub></I> and <I>r<sub>c2</sub></I> are the two
|
||||
cutoff radius around the fourth neighbors in the cutoff function.
|
||||
</P>
|
||||
<P>In the formalism used here, <I>ξ<sup>0</sup></I> is the energy
|
||||
parameter. <I>ξ<sup>0</sup></I> is in tight-binding approximation the
|
||||
hopping integral between the hybridized orbitals of the cation and the
|
||||
anion. In the literature we find many ways to write the hopping
|
||||
integral depending on whether one takes the point of view of the anion
|
||||
or cation. These are equivalent vision. The correspondence between the
|
||||
two visions is explained in appendix A of the article in the
|
||||
SrTiO<sub>3</sub> <A HREF = "#SMTB-Q_3">SMTB-Q_3</A> (parameter <I>β</I> shown in
|
||||
this article is in fact the <I>β<sub>O</sub></I>). To summarize the
|
||||
relationship between the hopping integral <I>ξ<sup>0</sup></I> and the
|
||||
others, we have in an oxide C<sub>n</sub>O<sub>m</sub> the following
|
||||
relationship:
|
||||
</P>
|
||||
<CENTER><IMG SRC = "Eqs/pair_smtbq3.jpg">
|
||||
</CENTER>
|
||||
<P>Thus parameter μ, indicated above, is given by : μ = (√n
|
||||
+ √m) ⁄ 2
|
||||
</P>
|
||||
<P>The potential offers the possibility to consider the polarizability of
|
||||
the electron clouds of oxygen by changing the slater radius of the
|
||||
charge density around the oxygens through the parameters <I>rBB, rB and
|
||||
rS</I> in the ffield.SMTBQ.Syst. This change in radius is performed
|
||||
according to the method developed by E. Maras
|
||||
<A HREF = "#SMTB-Q_2">SMTB-Q_2</A>. This method needs to determine the number of
|
||||
nearest neighbors around the oxygen. This calculation is based on
|
||||
first (<I>r<sub>1n</sub></I>) and second (<I>r<sub>2n</sub></I>) distances
|
||||
neighbors.
|
||||
</P>
|
||||
<P>The SMTB-Q potential is a variable charge potential. The equilibrium
|
||||
charge on each atom is calculated by the electronegativity
|
||||
equalization (QEq) method. See <A HREF = "#Rick">Rick</A> for further detail. One
|
||||
can adjust the frequency, the maximum number of iterative loop and the
|
||||
convergence of the equilibrium charge calculation. To obtain the
|
||||
energy conservation in NVE thermodynamic ensemble, we recommend to use
|
||||
a convergence parameter in the interval 10<sup>-5</sup> -
|
||||
10<sup>-6</sup> eV.
|
||||
</P>
|
||||
<P>The ffield.SMTBQ.Syst files are provided for few systems. They consist
|
||||
of nine parts and the lines beginning with '#' are comments (note that
|
||||
the number of comment lines matter). The first sections are on the
|
||||
potential parameters and others are on the simulation options and
|
||||
might be modified. Keywords are character type and must be enclosed in
|
||||
quotation marks ('').
|
||||
</P>
|
||||
<P>1) Number of different element in the oxide:
|
||||
</P>
|
||||
<UL><LI>N<sub>elem</sub>= 2 or 3
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
<P>2) Atomic parameters
|
||||
</P>
|
||||
For the anion (oxygen)
|
||||
|
||||
<UL><LI>Name of element (char) and stoichiometry in oxide
|
||||
<LI>Formal charge and mass of element
|
||||
<LI>Principal quantic number of outer orbital (<I>n</I>), electronegativity (<I>χ<sup>0</sup><sub>i</simulationub></I>) and hardness (<I>J<sup>0</sup><sub>i</sub></I>)
|
||||
<LI> Ionic radius parameters : max coordination number (<I>coordBB</I> = 6 by default), bulk coordination number <I>(coordB)</I>, surface coordination number <I>(coordS)</I> and <I>rBB, rB and rS</I> the slater radius for each coordination number. (<b>note : If you don't want to change the slater radius, use three identical radius values</b>)
|
||||
<LI>Number of orbital shared by the element in the oxide (<I>d<sub>i</sub></I>)
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
<P>For each cations (metal):
|
||||
</P>
|
||||
<UL><LI>Name of element (char) and stoichiometry in oxide
|
||||
<LI>Formal charge and mass of element
|
||||
<LI>Number of electron in outer orbital <I>(ne)</I>, electronegativity (<I>χ<sup>0</sup><sub>i</simulationub></I>), hardness (<I>J<sup>0</sup><sub>i</sub></I>) and <I>r<sub>Salter</sub></I> the slater radius for the cation.
|
||||
<LI>Number of orbitals shared by the elements in the oxide (<I>d<sub>i</sub></I>)
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
<P>3) Potential parameters:
|
||||
</P>
|
||||
<UL><LI>Keyword for element1, element2 and interaction potential ('second_moment' or 'buck' or 'buckPlusAttr') between element 1 and 2. If the potential is 'second_moment', specify 'oxide' or 'metal' for metal-oxygen or metal-metal interactions respectively.
|
||||
<LI>Potential parameter: <pre><br/> If type of potential is 'second_moment' : <I>A (eV)</I>, <I>p</I>, <I>ξ<sup>0</sup></I> (eV) and <I>q</I> <br/> <I>r<sub>c1</sub></I> (Å), <I>r<sub>c2</sub></I> (Å) and <I>r<sub>0</sub></I> (Å) <br/> If type of potential is 'buck' : <I>C</I> (eV) and <I>ρ</I> (Å) <br/> If type of potential is 'buckPlusAttr' : <I>C</I> (eV) and <I>ρ</I> (Å) <br/> <I>D</I> (eV), <I>B</I> (Å<sup>-1</sup>), <I>r<sub>1</sub><sup>OO</sup></I> (Å) and <I>r<sub>2</sub><sup>OO</sup></I> (Å) </pre>
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
<P>4) Tables parameters:
|
||||
</P>
|
||||
<UL><LI>Cutoff radius for the Coulomb interaction (<I>R<sub>coul</sub></I>)
|
||||
<LI>Starting radius (<I>r<sub>min</sub></I> = 1,18845 Å) and increments (<I>dr</I> = 0,001 Å) for creating the potential table.
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
<P>5) Rick model parameter:
|
||||
</P>
|
||||
<UL><LI><I>Nevery</I> : parameter to set the frequency (<I>1/Nevery</I>) of the charge resolution. The charges are evaluated each <I>Nevery</I> time steps.
|
||||
<LI>Max number of iterative loop (<I>loopmax</I>) and precision criterion (<I>prec</I>) in eV of the charge resolution
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
<P>6) Coordination parameter:
|
||||
</P>
|
||||
<UL><LI>First (<I>r<sub>1n</sub></I>) and second (<I>r<sub>2n</sub></I>) neighbor distances in Å
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
<P>7) Charge initialization mode:
|
||||
</P>
|
||||
<UL><LI>Keyword (<I>QInitMode</I>) and initial oxygen charge (<I>Q<sub>init</sub></I>). If keyword = 'true', all oxygen charges are initially set equal to <I>Q<sub>init</sub></I>. The charges on the cations are initially set in order to respect the neutrality of the box. If keyword = 'false', all atom charges are initially set equal to 0 if you use "create_atom"#create_atom command or the charge specified in the file structure using <A HREF = "#read_data.html">read_data</A> command.
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
8) Mode for the electronegativity equalization (Qeq)
|
||||
|
||||
<UL><LI>Keyword mode: <pre> <br/> QEqAll (one QEq group) | no parameters <br/> QEqAllParallel (several QEq groups) | no parameters <br/> Surface | zlim (QEq only for z>zlim) </pre>
|
||||
<LI>Parameter if necessary
|
||||
<LI>Divided line
|
||||
</UL>
|
||||
9) Verbose
|
||||
|
||||
<UL><LI>If you want the code to work in verbose mode or not : 'true' or 'false'
|
||||
<LI>If you want to print or not in file 'Energy_component.txt' the three main contributions to the energy of the system according to the description presented above : 'true' or 'false' and <I>N<sub>Energy</sub></I>. This option writes in file every <I>N<sub>Energy</sub></I> time step. If the value is 'false' then <I>N<sub>Energy</sub></I> = 0. The file take into account the possibility to have several QEq group <I>g</I> then it writes: time step, number of atoms in group <I>g</I>, electrostatic part of energy, <I>E<sub>ES</sub></I>, the interaction between oxygen, <I>E<sub>OO</sub></I>, and short range metal-oxygen interaction, <I>E<sub>MO</sub></I>.
|
||||
<LI>If you want to print in file 'Electroneg_component.txt' the electronegativity component (<I>∂E<sub>tot</sub> ⁄∂Q<sub>i</sub></I>) or not: 'true' or 'false' and <I>N<sub>Electroneg</sub></I>.This option writes in file every <I>N<sub>Electroneg</sub></I> time step. If the value is 'false' then <I>N<sub>Electroneg</sub></I> = 0. The file consist in atom number <I>i</I>, atom type (1 for oxygen and # higher than 1 for metal), atom position: <I>x</I>, <I>y</I> and <I>z</I>, atomic charge of atom <I>i</I>, electrostatic part of atom <I>i</I> electronegativity, covalent part of atom <I>i</I> electronegativity, the hopping integral of atom <I>i</I> <I>(Zβ<sup>2</sup>)<sub>i<sub></I> and box electronegativity.
|
||||
</UL>
|
||||
<P>IMPORTANT NOTE: This last option slows down the calculation
|
||||
dramatically. Use only with a single processor simulation.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info:</B>
|
||||
</P>
|
||||
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
|
||||
mix, shift, table, and tail options.
|
||||
</P>
|
||||
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
|
||||
files</A>, since it is stored in potential files. Thus, you
|
||||
needs to re-specify the pair_style and pair_coeff commands in an input
|
||||
script that reads a restart file.
|
||||
</P>
|
||||
<P>This pair style can only be used via the <I>pair</I> keyword of the
|
||||
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
|
||||
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P><B>Restriction:</B>
|
||||
</P>
|
||||
<P>This pair style is part of the USER-SMTBQ package and is only enabled
|
||||
if LAMMPS is built with that package. See the <A HREF = "Section_start.html#start_3">Making
|
||||
LAMMPS</A> section for more info.
|
||||
</P>
|
||||
<P>This potential requires using atom type 1 for oxygen and atom type
|
||||
higher than 1 for metal atoms.
|
||||
</P>
|
||||
<P>This pair style requires the <A HREF = "newton.html">newton</A> setting to be "on"
|
||||
for pair interactions.
|
||||
</P>
|
||||
<P>The SMTB-Q potential files provided with LAMMPS (see the potentials
|
||||
directory) are parameterized for metal <A HREF = "unit.html">units</A>.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P><B>Citing this work:</B>
|
||||
</P>
|
||||
<P>Please cite related publication: N. Salles, O. Politano, E. Amzallag
|
||||
and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<A NAME = "SMTB-Q_1"></A>
|
||||
|
||||
<P><B>(SMTB-Q_1)</B> N. Salles, O. Politano, E. Amzallag, R. Tetot,
|
||||
Comput. Mater. Sci. 111 (2016) 181-189
|
||||
</P>
|
||||
<A NAME = "SMTB-Q_2"></A>
|
||||
|
||||
<P><B>(SMTB-Q_2)</B> E. Maras, N. Salles, R. Tetot, T. Ala-Nissila,
|
||||
H. Jonsson, J. Phys. Chem. C 2015, 119, 10391-10399
|
||||
</P>
|
||||
<A NAME = "SMTB-Q_3"></A>
|
||||
|
||||
<P><B>(SMTB-Q_3)</B> R. Tetot, N. Salles, S. Landron, E. Amzallag, Surface
|
||||
Science 616, 19-8722 28 (2013)
|
||||
</P>
|
||||
<A NAME = "Wolf"></A>
|
||||
|
||||
<P><B>(Wolf)</B> D. Wolf, P. Keblinski, S. R. Phillpot, J. Eggebrecht, J Chem
|
||||
Phys, 110, 8254 (1999).
|
||||
</P>
|
||||
<A NAME = "Rick"></A>
|
||||
|
||||
<P><B>(Rick)</B> S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141
|
||||
(1994).
|
||||
</P>
|
||||
</HTML>
|
||||
@ -54,7 +54,7 @@ assigned a different temperature. See the <A HREF = "variable.html">variable</A
|
||||
command for more details. For example:
|
||||
</P>
|
||||
<PRE>variable t world 300.0 310.0 320.0 330.0
|
||||
fix myfix all nvt $t $t 100.0
|
||||
fix myfix all nvt temp $t $t 100.0
|
||||
temper 100000 100 $t myfix 3847 58382
|
||||
</PRE>
|
||||
<P>would define 4 temperatures, and assign one of them to the thermostat
|
||||
|
||||
@ -1795,12 +1795,12 @@
|
||||
<dt><a href="pair_lj_smooth.html#index-0">pair_style lj/smooth</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="pair_lj_smooth_linear.html#index-0">pair_style lj/smooth/linear</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="pair_lj96.html#index-0">pair_style lj96/cut</a>
|
||||
</dt>
|
||||
@ -1818,6 +1818,10 @@
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_mgpt.html#index-0">pair_style mgpt</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_mie.html#index-0">pair_style mie/cut</a>
|
||||
</dt>
|
||||
|
||||
@ -1878,6 +1882,10 @@
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_smtbq.html#index-0">pair_style smtbq</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="pair_snap.html#index-0">pair_style snap</a>
|
||||
</dt>
|
||||
|
||||
|
||||
378
doc/pair_mgpt.html
Normal file
@ -0,0 +1,378 @@
|
||||
|
||||
|
||||
<!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>pair_style mgpt command — 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>pair_style mgpt command</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">
|
||||
|
||||
<div class="section" id="pair-style-mgpt-command">
|
||||
<span id="index-0"></span><h1>pair_style mgpt command<a class="headerlink" href="#pair-style-mgpt-command" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="syntax">
|
||||
<h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_style mgpt
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="examples">
|
||||
<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_style mgpt
|
||||
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin Omega
|
||||
cp ~/lammps/potentials/Ta6.8x.mgpt.parmin parmin
|
||||
cp ~/lammps/potentials/Ta6.8x.mgpt.potin potin
|
||||
pair_coeff * * parmin potin Omega volpress yes nbody 1234 precision double
|
||||
pair_coeff * * parmin potin Omega volpress yes nbody 12
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="description">
|
||||
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Within DFT quantum mechanics, generalized pseudopotential theory (GPT)
|
||||
(<a class="reference internal" href="#moriarty1"><span>Moriarty1</span></a>) provides a first-principles approach to
|
||||
multi-ion interatomic potentials in d-band transition metals, with a
|
||||
volume-dependent, real-space total-energy functional for the N-ion
|
||||
elemental bulk material in the form</p>
|
||||
<img alt="_images/pair_mgpt.jpg" class="align-center" src="_images/pair_mgpt.jpg" />
|
||||
<p>where the prime on each summation sign indicates the exclusion of all
|
||||
self-interaction terms from the summation. The leading volume term
|
||||
E_vol as well as the two-ion central-force pair potential v_2 and the
|
||||
three- and four-ion angular-force potentials, v_3 and v_4, depend
|
||||
explicitly on the atomic volume Omega, but are structure independent
|
||||
and transferable to all bulk ion configurations, either ordered or
|
||||
disordered, and with of without the presence of point and line
|
||||
defects. The simplified model GPT or MGPT (<a class="reference internal" href="#moriarty2"><span>Moriarty2</span></a>,
|
||||
<a class="reference internal" href="#moriarty3"><span>Moriarty3</span></a>), which retains the form of E_tot and permits
|
||||
more efficient large-scale atomistic simulations, derives from the GPT
|
||||
through a series of systematic approximations applied to E_vol and the
|
||||
potentials v_n that are valid for mid-period transition metals with
|
||||
nearly half-filled d bands.</p>
|
||||
<p>Both analytic (<a class="reference internal" href="#moriarty2"><span>Moriarty2</span></a>) and matrix
|
||||
(<a class="reference internal" href="#moriarty3"><span>Moriarty3</span></a>) representations of MGPT have been developed.
|
||||
In the more general matrix representation, which can also be applied
|
||||
to f-band actinide metals and permits both canonical and non-canonical
|
||||
d/f bands, the multi-ion potentials are evaluated on the fly during a
|
||||
simulation through d- or f-state matrix multiplication, and the forces
|
||||
that move the ions are determined analytically. Fast matrix-MGPT
|
||||
algorithms have been developed independently by Glosli
|
||||
(<span class="xref std std-ref">Glosli</span>, <a class="reference internal" href="#moriarty3"><span>Moriarty3</span></a>) and by Oppelstrup
|
||||
(<a class="reference internal" href="#oppelstrup"><span>Oppelstrup</span></a>)</p>
|
||||
<p>The <em>mgpt</em> pair style calculates forces, energies, and the total
|
||||
energy per atom, E_tot/N, using the Oppelstrup matrix-MGPT algorithm.
|
||||
Input potential and control data are entered through the
|
||||
<a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command. Each material treated requires
|
||||
input parmin and potin potential files, as shown in the above
|
||||
examples, as well as specification by the user of the initial atomic
|
||||
volume Omega through pair_coeff. At the beginning of a time step in
|
||||
any simulation, the total volume of the simulation cell V should
|
||||
always be equal to Omega*N, where N is the number of metal ions
|
||||
present, taking into account the presence of any vacancies and/or
|
||||
interstitials in the case of a solid. In a constant-volume
|
||||
simulation, which is the normal mode of operation for the <em>mgpt</em> pair
|
||||
style, Omega, V and N all remain constant throughout the simulation
|
||||
and thus are equal to their initial values. In a constant-stress
|
||||
simulation, the cell volume V will change (slowly) as the simulation
|
||||
proceeds. After each time step, the atomic volume should be updated
|
||||
by the code as Omega = V/N. In addition, the volume term E_vol and
|
||||
the potentials v_2, v_3 and v_4 have to be removed at the end of the
|
||||
time step, and then respecified at the new value of Omega. In all
|
||||
smulations, Omega must remain within the defined volume range for
|
||||
E_vol and the potentials for the given material.</p>
|
||||
<p>The default option volpress yes in the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a>
|
||||
command includes all volume derivatives of E_tot required to calculate
|
||||
the stress tensor and pressure correctly. The option volpress no
|
||||
disregards the pressure contribution resulting from the volume term
|
||||
E_vol, and can be used for testing and analysis purposes. The
|
||||
additional optional variable nbody controls the specific terms in
|
||||
E_tot that are calculated. The default option and the normal option
|
||||
for mid-period transition and actinide metals is nbody 1234 for which
|
||||
all four terms in E_tot are retained. The option nbody 12, for
|
||||
example, retains only the volume term and the two-ion pair potential
|
||||
term and can be used for GPT series-end transition metals that can be
|
||||
well described without v_3 and v_4. The nbody option can also be used
|
||||
to test or analyze the contribution of any of the four terms in E_tot
|
||||
to a given calculated property.</p>
|
||||
<p>The <em>mgpt</em> pair style makes extensive use of matrix algebra and
|
||||
includes optimized kernels for the BlueGene/Q architecture and the
|
||||
Intel/AMD (x86) architectures. When compiled with the appropriate
|
||||
compiler and compiler switches (-msse3 on x86, and using the IBM XL
|
||||
compiler on BG/Q), these optimized routines are used automatically.
|
||||
For BG/Q machines, building with the default Makefile for that
|
||||
architecture (e.g., “make bgq”) should enable the optimized algebra
|
||||
routines. For x-86 machines, the here provided Makefile.mpi_fastmgpt
|
||||
(build with “make mpi_fastmgpt”) enables the fast algebra routines.
|
||||
The user will be informed in the output files of the matrix kernels in
|
||||
use. To further improve speed, on x86 the option precision single can
|
||||
be added to the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command line, which
|
||||
improves speed (up to a factor of two) at the cost of doing matrix
|
||||
calculations with 7 digit precision instead of the default 16. For
|
||||
consistency the default option can be specified explicitly by the
|
||||
option precision double.</p>
|
||||
<p>All remaining potential and control data are contained with the parmin
|
||||
and potin files, including cutoffs, atomic mass, and other basic MGPT
|
||||
variables. Specific MGPT potential data for the transition metals
|
||||
tantalum (Ta4 and Ta6.8x potentials), molybdenum (Mo5.2 potentials),
|
||||
and vanadium (V6.1 potentials) are contained in the LAMMPS potentials
|
||||
directory. The stored files are, respectively, Ta4.mgpt.parmin,
|
||||
Ta4.mgpt.potin, Ta6.8x.mgpt.parmin, Ta6.8x.mgpt.potin,
|
||||
Mo5.2.mgpt.parmin, Mo5.2.mgpt.potin, V6.1.mgpt.parmin, and
|
||||
V6.1.mgpt.potin . Useful corresponding informational “README” files
|
||||
on the Ta4, Ta6.8x, Mo5.2 and V6.1 potentials are also included in the
|
||||
potentials directory. These latter files indicate the volume mesh and
|
||||
range for each potential and give appropriate references for the
|
||||
potentials. It is expected that MGPT potentials for additional
|
||||
materials will be added over time.</p>
|
||||
<p>Useful example MGPT scripts are given in the examples/USER/mgpt
|
||||
directory. These scripts show the necessary steps to perform
|
||||
constant-volume calculations and simulations. It is strongly
|
||||
recommended that the user work through and understand these examples
|
||||
before proceeding to more complex simulations.</p>
|
||||
<div class="admonition warning">
|
||||
<p class="first admonition-title">Warning</p>
|
||||
<p class="last">For good performance, LAMMPS should be built with the
|
||||
compiler flags “-O3 -msse3 -funroll-loops” when including this pair
|
||||
style. The src/MAKE/OPTIONS/Makefile.mpi_fastmgpt is an example
|
||||
machine Makefile with these options included as part of a standard MPI
|
||||
build. Note that as-is it will build with whatever low-level compiler
|
||||
(g++, icc, etc) is the default for your MPI installation.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Mixing, shift, table tail correction, restart</strong>:</p>
|
||||
<p>This pair style does not support the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a>
|
||||
mix, shift, table, and tail options.</p>
|
||||
<p>This pair style does not write its information to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>, since it is stored in potential files. Thus, you
|
||||
needs to re-specify the pair_style and pair_coeff commands in an input
|
||||
script that reads a restart file.</p>
|
||||
<p>This pair style can only be used via the <em>pair</em> keyword of the
|
||||
<a class="reference internal" href="run_style.html"><em>run_style respa</em></a> command. It does not support the
|
||||
<em>inner</em>, <em>middle</em>, <em>outer</em> keywords.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="restrictions">
|
||||
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This pair style is part of the USER-MGPT package and is only enabled
|
||||
if LAMMPS is built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></a> section for more info.</p>
|
||||
<p>The MGPT potentials require the <a class="reference internal" href="newton.html"><em>newtion</em></a> setting to be
|
||||
“on” for pair style interactions.</p>
|
||||
<p>The stored parmin and potin potential files provided with LAMMPS in
|
||||
the “potentials” directory are written in Rydberg atomic units, with
|
||||
energies in Rydbergs and distances in Bohr radii. The <em>mgpt</em> pair
|
||||
style converts Rydbergs to Hartrees to make the potential files
|
||||
compatible with LAMMPS electron <a class="reference internal" href="units.html"><em>units</em></a>.</p>
|
||||
<p>The form of E_tot used in the <em>mgpt</em> pair style is only appropriate
|
||||
for elemental bulk solids and liquids. This includes solids with
|
||||
point and extended defects such as vacancies, interstitials, grain
|
||||
boundaries and dislocations. Alloys and free surfaces, however,
|
||||
require significant modifications, which are not included in the
|
||||
<em>mgpt</em> pair style. Likewise, the <em>hybrid</em> pair style is not allowed,
|
||||
where MGPT would be used for some atoms but not for others.</p>
|
||||
<p>Electron-thermal effects are not included in the standard MGPT
|
||||
potentials provided in the “potentials” directory, where the
|
||||
potentials have been constructed at zero electron temperature.
|
||||
Physically, electron-thermal effects may be important in 3d (e.g., V)
|
||||
and 4d (e.g., Mo) transition metals at high temperatures near melt and
|
||||
above. It is expected that temperature-dependent MGPT potentials for
|
||||
such cases will be added over time.</p>
|
||||
</div>
|
||||
<div class="section" id="related-commands">
|
||||
<h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2>
|
||||
<p><a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a></p>
|
||||
</div>
|
||||
<div class="section" id="default">
|
||||
<h2>Default<a class="headerlink" href="#default" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The options defaults for the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command are
|
||||
volpress yes, nbody 1234, and precision double.</p>
|
||||
<hr class="docutils" />
|
||||
<p id="moriarty1"><strong>(Moriarty1)</strong> Moriarty, Physical Review B, 38, 3199 (1988).</p>
|
||||
<p id="moriarty2"><strong>(Moriarty2)</strong> Moriarty, Physical Review B, 42, 1609 (1990).
|
||||
Moriarty, Physical Review B 49, 12431 (1994).</p>
|
||||
<p id="moriarty3"><strong>(Moriarty3)</strong> Moriarty, Benedict, Glosli, Hood, Orlikowski, Patel, Soderlind, Streitz, Tang, and Yang,
|
||||
Journal of Materials Research, 21, 563 (2006).</p>
|
||||
<p id="glosli"><strong>(Glosli)</strong> Glosli, unpublished, 2005.
|
||||
Streitz, Glosli, Patel, Chan, Yates, de Supinski, Sexton and Gunnels, Journal of Physics: Conference
|
||||
Series, 46, 254 (2006).</p>
|
||||
<p id="oppelstrup"><strong>(Oppelstrup)</strong> Oppelstrup, unpublished, 2015.
|
||||
Oppelstrup and Moriarty, to be published.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<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>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</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>
|
||||
219
doc/pair_mgpt.txt
Normal file
@ -0,0 +1,219 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
pair_style mgpt command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
pair_style mgpt :pre
|
||||
|
||||
[Examples:]
|
||||
|
||||
pair_style mgpt
|
||||
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin Omega
|
||||
cp ~/lammps/potentials/Ta6.8x.mgpt.parmin parmin
|
||||
cp ~/lammps/potentials/Ta6.8x.mgpt.potin potin
|
||||
pair_coeff * * parmin potin Omega volpress yes nbody 1234 precision double
|
||||
pair_coeff * * parmin potin Omega volpress yes nbody 12 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Within DFT quantum mechanics, generalized pseudopotential theory (GPT)
|
||||
("Moriarty1"_#Moriarty1) provides a first-principles approach to
|
||||
multi-ion interatomic potentials in d-band transition metals, with a
|
||||
volume-dependent, real-space total-energy functional for the N-ion
|
||||
elemental bulk material in the form
|
||||
|
||||
:c,image(Eqs/pair_mgpt.jpg)
|
||||
|
||||
where the prime on each summation sign indicates the exclusion of all
|
||||
self-interaction terms from the summation. The leading volume term
|
||||
E_vol as well as the two-ion central-force pair potential v_2 and the
|
||||
three- and four-ion angular-force potentials, v_3 and v_4, depend
|
||||
explicitly on the atomic volume Omega, but are structure independent
|
||||
and transferable to all bulk ion configurations, either ordered or
|
||||
disordered, and with of without the presence of point and line
|
||||
defects. The simplified model GPT or MGPT ("Moriarty2"_#Moriarty2,
|
||||
"Moriarty3"_#Moriarty3), which retains the form of E_tot and permits
|
||||
more efficient large-scale atomistic simulations, derives from the GPT
|
||||
through a series of systematic approximations applied to E_vol and the
|
||||
potentials v_n that are valid for mid-period transition metals with
|
||||
nearly half-filled d bands.
|
||||
|
||||
Both analytic ("Moriarty2"_#Moriarty2) and matrix
|
||||
("Moriarty3"_#Moriarty3) representations of MGPT have been developed.
|
||||
In the more general matrix representation, which can also be applied
|
||||
to f-band actinide metals and permits both canonical and non-canonical
|
||||
d/f bands, the multi-ion potentials are evaluated on the fly during a
|
||||
simulation through d- or f-state matrix multiplication, and the forces
|
||||
that move the ions are determined analytically. Fast matrix-MGPT
|
||||
algorithms have been developed independently by Glosli
|
||||
("Glosli"_#Glosi, "Moriarty3"_#Moriarty3) and by Oppelstrup
|
||||
("Oppelstrup"_#Oppelstrup)
|
||||
|
||||
The {mgpt} pair style calculates forces, energies, and the total
|
||||
energy per atom, E_tot/N, using the Oppelstrup matrix-MGPT algorithm.
|
||||
Input potential and control data are entered through the
|
||||
"pair_coeff"_pair_coeff.html command. Each material treated requires
|
||||
input parmin and potin potential files, as shown in the above
|
||||
examples, as well as specification by the user of the initial atomic
|
||||
volume Omega through pair_coeff. At the beginning of a time step in
|
||||
any simulation, the total volume of the simulation cell V should
|
||||
always be equal to Omega*N, where N is the number of metal ions
|
||||
present, taking into account the presence of any vacancies and/or
|
||||
interstitials in the case of a solid. In a constant-volume
|
||||
simulation, which is the normal mode of operation for the {mgpt} pair
|
||||
style, Omega, V and N all remain constant throughout the simulation
|
||||
and thus are equal to their initial values. In a constant-stress
|
||||
simulation, the cell volume V will change (slowly) as the simulation
|
||||
proceeds. After each time step, the atomic volume should be updated
|
||||
by the code as Omega = V/N. In addition, the volume term E_vol and
|
||||
the potentials v_2, v_3 and v_4 have to be removed at the end of the
|
||||
time step, and then respecified at the new value of Omega. In all
|
||||
smulations, Omega must remain within the defined volume range for
|
||||
E_vol and the potentials for the given material.
|
||||
|
||||
The default option volpress yes in the "pair_coeff"_pair_coeff.html
|
||||
command includes all volume derivatives of E_tot required to calculate
|
||||
the stress tensor and pressure correctly. The option volpress no
|
||||
disregards the pressure contribution resulting from the volume term
|
||||
E_vol, and can be used for testing and analysis purposes. The
|
||||
additional optional variable nbody controls the specific terms in
|
||||
E_tot that are calculated. The default option and the normal option
|
||||
for mid-period transition and actinide metals is nbody 1234 for which
|
||||
all four terms in E_tot are retained. The option nbody 12, for
|
||||
example, retains only the volume term and the two-ion pair potential
|
||||
term and can be used for GPT series-end transition metals that can be
|
||||
well described without v_3 and v_4. The nbody option can also be used
|
||||
to test or analyze the contribution of any of the four terms in E_tot
|
||||
to a given calculated property.
|
||||
|
||||
The {mgpt} pair style makes extensive use of matrix algebra and
|
||||
includes optimized kernels for the BlueGene/Q architecture and the
|
||||
Intel/AMD (x86) architectures. When compiled with the appropriate
|
||||
compiler and compiler switches (-msse3 on x86, and using the IBM XL
|
||||
compiler on BG/Q), these optimized routines are used automatically.
|
||||
For BG/Q machines, building with the default Makefile for that
|
||||
architecture (e.g., "make bgq") should enable the optimized algebra
|
||||
routines. For x-86 machines, the here provided Makefile.mpi_fastmgpt
|
||||
(build with "make mpi_fastmgpt") enables the fast algebra routines.
|
||||
The user will be informed in the output files of the matrix kernels in
|
||||
use. To further improve speed, on x86 the option precision single can
|
||||
be added to the "pair_coeff"_pair_coeff.html command line, which
|
||||
improves speed (up to a factor of two) at the cost of doing matrix
|
||||
calculations with 7 digit precision instead of the default 16. For
|
||||
consistency the default option can be specified explicitly by the
|
||||
option precision double.
|
||||
|
||||
All remaining potential and control data are contained with the parmin
|
||||
and potin files, including cutoffs, atomic mass, and other basic MGPT
|
||||
variables. Specific MGPT potential data for the transition metals
|
||||
tantalum (Ta4 and Ta6.8x potentials), molybdenum (Mo5.2 potentials),
|
||||
and vanadium (V6.1 potentials) are contained in the LAMMPS potentials
|
||||
directory. The stored files are, respectively, Ta4.mgpt.parmin,
|
||||
Ta4.mgpt.potin, Ta6.8x.mgpt.parmin, Ta6.8x.mgpt.potin,
|
||||
Mo5.2.mgpt.parmin, Mo5.2.mgpt.potin, V6.1.mgpt.parmin, and
|
||||
V6.1.mgpt.potin . Useful corresponding informational "README" files
|
||||
on the Ta4, Ta6.8x, Mo5.2 and V6.1 potentials are also included in the
|
||||
potentials directory. These latter files indicate the volume mesh and
|
||||
range for each potential and give appropriate references for the
|
||||
potentials. It is expected that MGPT potentials for additional
|
||||
materials will be added over time.
|
||||
|
||||
Useful example MGPT scripts are given in the examples/USER/mgpt
|
||||
directory. These scripts show the necessary steps to perform
|
||||
constant-volume calculations and simulations. It is strongly
|
||||
recommended that the user work through and understand these examples
|
||||
before proceeding to more complex simulations.
|
||||
|
||||
IMPORTANT NOTE: For good performance, LAMMPS should be built with the
|
||||
compiler flags "-O3 -msse3 -funroll-loops" when including this pair
|
||||
style. The src/MAKE/OPTIONS/Makefile.mpi_fastmgpt is an example
|
||||
machine Makefile with these options included as part of a standard MPI
|
||||
build. Note that as-is it will build with whatever low-level compiler
|
||||
(g++, icc, etc) is the default for your MPI installation.
|
||||
|
||||
:line
|
||||
|
||||
[Mixing, shift, table tail correction, restart]:
|
||||
|
||||
This pair style does not support the "pair_modify"_pair_modify.html
|
||||
mix, shift, table, and tail options.
|
||||
|
||||
This pair style does not write its information to "binary restart
|
||||
files"_restart.html, since it is stored in potential files. Thus, you
|
||||
needs to re-specify the pair_style and pair_coeff commands in an input
|
||||
script that reads a restart file.
|
||||
|
||||
This pair style can only be used via the {pair} keyword of the
|
||||
"run_style respa"_run_style.html command. It does not support the
|
||||
{inner}, {middle}, {outer} keywords.
|
||||
|
||||
:line
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This pair style is part of the USER-MGPT package and is only enabled
|
||||
if LAMMPS is built with that package. See the "Making
|
||||
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
|
||||
The MGPT potentials require the "newtion"_newton.html setting to be
|
||||
"on" for pair style interactions.
|
||||
|
||||
The stored parmin and potin potential files provided with LAMMPS in
|
||||
the "potentials" directory are written in Rydberg atomic units, with
|
||||
energies in Rydbergs and distances in Bohr radii. The {mgpt} pair
|
||||
style converts Rydbergs to Hartrees to make the potential files
|
||||
compatible with LAMMPS electron "units"_units.html.
|
||||
|
||||
The form of E_tot used in the {mgpt} pair style is only appropriate
|
||||
for elemental bulk solids and liquids. This includes solids with
|
||||
point and extended defects such as vacancies, interstitials, grain
|
||||
boundaries and dislocations. Alloys and free surfaces, however,
|
||||
require significant modifications, which are not included in the
|
||||
{mgpt} pair style. Likewise, the {hybrid} pair style is not allowed,
|
||||
where MGPT would be used for some atoms but not for others.
|
||||
|
||||
Electron-thermal effects are not included in the standard MGPT
|
||||
potentials provided in the "potentials" directory, where the
|
||||
potentials have been constructed at zero electron temperature.
|
||||
Physically, electron-thermal effects may be important in 3d (e.g., V)
|
||||
and 4d (e.g., Mo) transition metals at high temperatures near melt and
|
||||
above. It is expected that temperature-dependent MGPT potentials for
|
||||
such cases will be added over time.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"pair_coeff"_pair_coeff.html
|
||||
|
||||
[Default:]
|
||||
|
||||
The options defaults for the "pair_coeff"_pair_coeff.html command are
|
||||
volpress yes, nbody 1234, and precision double.
|
||||
|
||||
:line
|
||||
|
||||
:link(Moriarty1)
|
||||
[(Moriarty1)] Moriarty, Physical Review B, 38, 3199 (1988).
|
||||
|
||||
:link(Moriarty2)
|
||||
[(Moriarty2)] Moriarty, Physical Review B, 42, 1609 (1990).
|
||||
Moriarty, Physical Review B 49, 12431 (1994).
|
||||
|
||||
:link(Moriarty3)
|
||||
[(Moriarty3)] Moriarty, Benedict, Glosli, Hood, Orlikowski, Patel, Soderlind, Streitz, Tang, and Yang,
|
||||
Journal of Materials Research, 21, 563 (2006).
|
||||
|
||||
:link(Glosli)
|
||||
[(Glosli)] Glosli, unpublished, 2005.
|
||||
Streitz, Glosli, Patel, Chan, Yates, de Supinski, Sexton and Gunnels, Journal of Physics: Conference
|
||||
Series, 46, 254 (2006).
|
||||
|
||||
:link(Oppelstrup)
|
||||
[(Oppelstrup)] Oppelstrup, unpublished, 2015.
|
||||
Oppelstrup and Moriarty, to be published.
|
||||
428
doc/pair_smtbq.html
Normal file
@ -0,0 +1,428 @@
|
||||
|
||||
|
||||
<!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>pair_style smtbq command — 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>pair_style smtbq command</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">
|
||||
|
||||
<div class="section" id="pair-style-smtbq-command">
|
||||
<span id="index-0"></span><h1>pair_style smtbq command<a class="headerlink" href="#pair-style-smtbq-command" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="syntax">
|
||||
<h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_style smtbq
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="examples">
|
||||
<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.Al2O3 O Al
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="description">
|
||||
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This pair stylecomputes a variable charge SMTB-Q (Second-Moment
|
||||
tight-Binding QEq) potential as described in <a class="reference internal" href="#smtb-q-1"><span>SMTB-Q_1</span></a> and
|
||||
<a class="reference internal" href="#smtb-q-2"><span>SMTB-Q_2</span></a>. Briefly, the energy of metallic-oxygen systems
|
||||
is given by three contributions:</p>
|
||||
<img alt="_images/pair_smtbq1.jpg" class="align-center" src="_images/pair_smtbq1.jpg" />
|
||||
<p>where <em>E<sub>tot</sub></em> is the total potential energy of the system,
|
||||
<em>E<sub>ES</sub></em> is the electrostatic part of the total energy,
|
||||
<em>E<sub>OO</sub></em> is the interaction between oxygens and
|
||||
<em>E<sub>MO</sub></em> is a short-range interaction between metal and oxygen
|
||||
atoms. This interactions depend on interatomic distance
|
||||
<em>r<sub>ij</sub></em> and/or the charge <em>Q<sub>i</sub></em> of atoms
|
||||
<em>i</em>. Cut-off function enables smooth convergence to zero interaction.</p>
|
||||
<p>The parameters appearing in the upper expressions are set in the
|
||||
ffield.SMTBQ.Syst file where Syst corresponds to the selected system
|
||||
(e.g. field.SMTBQ.Al2O3). Exemples for TiO<sub>2</sub>,
|
||||
Al<sub>2</sub>O<sub>3</sub> are provided. A single pair_coeff command
|
||||
is used with the SMTBQ styles which provides the path to the potential
|
||||
file with parameters for needed elements. These are mapped to LAMMPS
|
||||
atom types by specifying additional arguments after the potential
|
||||
filename in the pair_coeff command. Note that atom type 1 must always
|
||||
correspond to oxygen atoms. As an example, to simulate a TiO2 system,
|
||||
atom type 1 has to be oxygen and atom type 2 Ti. The following
|
||||
pair_coeff command should then be used:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>pair_coeff * * PathToLammps/potentials/ffield.smtbq.TiO2 O Ti
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The electrostatic part of the energy consists of two components</p>
|
||||
<p>self-energy of atom <em>i</em> in the form of a second order charge dependent
|
||||
polynomial and a long-range Coulombic electrostatic interaction. The
|
||||
latter uses the wolf summation method described in <a class="reference internal" href="#wolf"><span>Wolf</span></a>,
|
||||
spherically truncated at a longer cutoff, <em>R<sub>coul</sub></em>. The
|
||||
charge of each ion is modeled by an orbital Slater which depends on
|
||||
the principal quantum number (<em>n</em>) of the outer orbital shared by the
|
||||
ion.</p>
|
||||
<p>Interaction between oxygen, <em>E<sub>OO</sub></em>, consists of two parts,
|
||||
an attractive and a repulsive part. The attractive part is effective
|
||||
only at short range (< r<sub>2</sub><sup>OO</sup>). The attractive
|
||||
contribution was optimized to study surfaces reconstruction
|
||||
(e.g. <a class="reference internal" href="#smtb-q-2"><span>SMTB-Q_2</span></a> in TiO<sub>2</sub>) and is not necessary
|
||||
for oxide bulk modeling. The repulsive part is the Pauli interaction
|
||||
between the electron clouds of oxygen. The Pauli repulsion and the
|
||||
coulombic electrostatic interaction have same cut off value. In the
|
||||
ffield.SMTBQ.Syst, the keyword <em>‘buck’</em> allows to consider only the
|
||||
repulsive O-O interactions. The keyword <em>‘buckPlusAttr’</em> allows to
|
||||
consider the repulsive and the attractive O-O interactions.</p>
|
||||
<p>The short-range interaction between metal-oxygen, <em>E<sub>MO</sub></em> is
|
||||
based on the second moment approximation of the density of states with
|
||||
a N-body potential for the band energy term,
|
||||
<em>E<sup>i</sup><sub>cov</sub></em>, and a Born-Mayer type repulsive terms
|
||||
as indicated by the keyword <em>‘second_moment’</em> in the
|
||||
ffield.SMTBQ.Syst. The energy band term is given by:</p>
|
||||
<img alt="_images/pair_smtbq2.jpg" class="align-center" src="_images/pair_smtbq2.jpg" />
|
||||
<p>where <em>&#951<sub>i</sub></em> is the stoichiometry of atom <em>i</em>,
|
||||
<em>&#948Q<sub>i</sub></em> is the charge delocalization of atom <em>i</em>,
|
||||
compared to its formal charge
|
||||
<em>Q<sup>F</sup><sub>i</sub></em>. n<sub>0</sub>, the number of hybridized
|
||||
orbitals, is calculated with to the atomic orbitals shared
|
||||
<em>d<sub>i</sub></em> and the stoichiometry
|
||||
<em>&#951<sub>i</sub></em>. <em>r<sub>c1</sub></em> and <em>r<sub>c2</sub></em> are the two
|
||||
cutoff radius around the fourth neighbors in the cutoff function.</p>
|
||||
<p>In the formalism used here, <em>&#958<sup>0</sup></em> is the energy
|
||||
parameter. <em>&#958<sup>0</sup></em> is in tight-binding approximation the
|
||||
hopping integral between the hybridized orbitals of the cation and the
|
||||
anion. In the literature we find many ways to write the hopping
|
||||
integral depending on whether one takes the point of view of the anion
|
||||
or cation. These are equivalent vision. The correspondence between the
|
||||
two visions is explained in appendix A of the article in the
|
||||
SrTiO<sub>3</sub> <a class="reference internal" href="#smtb-q-3"><span>SMTB-Q_3</span></a> (parameter <em>&#946</em> shown in
|
||||
this article is in fact the <em>&#946<sub>O</sub></em>). To summarize the
|
||||
relationship between the hopping integral <em>&#958<sup>0</sup></em> and the
|
||||
others, we have in an oxide C<sub>n</sub>O<sub>m</sub> the following
|
||||
relationship:</p>
|
||||
<img alt="_images/pair_smtbq3.jpg" class="align-center" src="_images/pair_smtbq3.jpg" />
|
||||
<p>Thus parameter &#956, indicated above, is given by : &#956 = (&#8730n
|
||||
+ &#8730m) &#8260 2</p>
|
||||
<p>The potential offers the possibility to consider the polarizability of
|
||||
the electron clouds of oxygen by changing the slater radius of the
|
||||
charge density around the oxygens through the parameters <em>rBB, rB and
|
||||
rS</em> in the ffield.SMTBQ.Syst. This change in radius is performed
|
||||
according to the method developed by E. Maras
|
||||
<a class="reference internal" href="#smtb-q-2"><span>SMTB-Q_2</span></a>. This method needs to determine the number of
|
||||
nearest neighbors around the oxygen. This calculation is based on
|
||||
first (<em>r<sub>1n</sub></em>) and second (<em>r<sub>2n</sub></em>) distances
|
||||
neighbors.</p>
|
||||
<p>The SMTB-Q potential is a variable charge potential. The equilibrium
|
||||
charge on each atom is calculated by the electronegativity
|
||||
equalization (QEq) method. See <a class="reference internal" href="#rick"><span>Rick</span></a> for further detail. One
|
||||
can adjust the frequency, the maximum number of iterative loop and the
|
||||
convergence of the equilibrium charge calculation. To obtain the
|
||||
energy conservation in NVE thermodynamic ensemble, we recommend to use
|
||||
a convergence parameter in the interval 10<sup>-5</sup> -
|
||||
10<sup>-6</sup> eV.</p>
|
||||
<p>The ffield.SMTBQ.Syst files are provided for few systems. They consist
|
||||
of nine parts and the lines beginning with ‘#’ are comments (note that
|
||||
the number of comment lines matter). The first sections are on the
|
||||
potential parameters and others are on the simulation options and
|
||||
might be modified. Keywords are character type and must be enclosed in
|
||||
quotation marks (‘’).</p>
|
||||
<ol class="arabic simple">
|
||||
<li>Number of different element in the oxide:</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>N<sub>elem</sub>= 2 or 3</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="2">
|
||||
<li>Atomic parameters</li>
|
||||
</ol>
|
||||
<p>For the anion (oxygen)</p>
|
||||
<ul class="simple">
|
||||
<li>Name of element (char) and stoichiometry in oxide</li>
|
||||
<li>Formal charge and mass of element</li>
|
||||
<li>Principal quantic number of outer orbital (<em>n</em>), electronegativity (<em>&#967<sup>0</sup><sub>i</simulationub></em>) and hardness (<em>J<sup>0</sup><sub>i</sub></em>)</li>
|
||||
<li>Ionic radius parameters : max coordination number (<em>coordBB</em> = 6 by default), bulk coordination number <em>(coordB)</em>, surface coordination number <em>(coordS)</em> and <em>rBB, rB and rS</em> the slater radius for each coordination number. (<b>note : If you don’t want to change the slater radius, use three identical radius values</b>)</li>
|
||||
<li>Number of orbital shared by the element in the oxide (<em>d<sub>i</sub></em>)</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<p>For each cations (metal):</p>
|
||||
<ul class="simple">
|
||||
<li>Name of element (char) and stoichiometry in oxide</li>
|
||||
<li>Formal charge and mass of element</li>
|
||||
<li>Number of electron in outer orbital <em>(ne)</em>, electronegativity (<em>&#967<sup>0</sup><sub>i</simulationub></em>), hardness (<em>J<sup>0</sup><sub>i</sub></em>) and <em>r<sub>Salter</sub></em> the slater radius for the cation.</li>
|
||||
<li>Number of orbitals shared by the elements in the oxide (<em>d<sub>i</sub></em>)</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="3">
|
||||
<li>Potential parameters:</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>Keyword for element1, element2 and interaction potential (‘second_moment’ or ‘buck’ or ‘buckPlusAttr’) between element 1 and 2. If the potential is ‘second_moment’, specify ‘oxide’ or ‘metal’ for metal-oxygen or metal-metal interactions respectively.</li>
|
||||
<li>Potential parameter: <pre><br/> If type of potential is ‘second_moment’ : <em>A (eV)</em>, <em>p</em>, <em>&#958<sup>0</sup></em> (eV) and <em>q</em> <br/> <em>r<sub>c1</sub></em> (&#197), <em>r<sub>c2</sub></em> (&#197) and <em>r<sub>0</sub></em> (&#197) <br/> If type of potential is ‘buck’ : <em>C</em> (eV) and <em>&#961</em> (&#197) <br/> If type of potential is ‘buckPlusAttr’ : <em>C</em> (eV) and <em>&#961</em> (&#197) <br/> <em>D</em> (eV), <em>B</em> (&#197<sup>-1</sup>), <em>r<sub>1</sub><sup>OO</sup></em> (&#197) and <em>r<sub>2</sub><sup>OO</sup></em> (&#197) </pre></li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="4">
|
||||
<li>Tables parameters:</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>Cutoff radius for the Coulomb interaction (<em>R<sub>coul</sub></em>)</li>
|
||||
<li>Starting radius (<em>r<sub>min</sub></em> = 1,18845 &#197) and increments (<em>dr</em> = 0,001 &#197) for creating the potential table.</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="5">
|
||||
<li>Rick model parameter:</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li><em>Nevery</em> : parameter to set the frequency (<em>1/Nevery</em>) of the charge resolution. The charges are evaluated each <em>Nevery</em> time steps.</li>
|
||||
<li>Max number of iterative loop (<em>loopmax</em>) and precision criterion (<em>prec</em>) in eV of the charge resolution</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="6">
|
||||
<li>Coordination parameter:</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>First (<em>r<sub>1n</sub></em>) and second (<em>r<sub>2n</sub></em>) neighbor distances in &#197</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="7">
|
||||
<li>Charge initialization mode:</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>Keyword (<em>QInitMode</em>) and initial oxygen charge (<em>Q<sub>init</sub></em>). If keyword = ‘true’, all oxygen charges are initially set equal to <em>Q<sub>init</sub></em>. The charges on the cations are initially set in order to respect the neutrality of the box. If keyword = ‘false’, all atom charges are initially set equal to 0 if you use “create_atom”#create_atom command or the charge specified in the file structure using <span class="xref std std-ref">read_data</span> command.</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="8">
|
||||
<li>Mode for the electronegativity equalization (Qeq)</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>Keyword mode: <pre> <br/> QEqAll (one QEq group) | no parameters <br/> QEqAllParallel (several QEq groups) | no parameters <br/> Surface | zlim (QEq only for z>zlim) </pre></li>
|
||||
<li>Parameter if necessary</li>
|
||||
<li>Divided line</li>
|
||||
</ul>
|
||||
<ol class="arabic simple" start="9">
|
||||
<li>Verbose</li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li>If you want the code to work in verbose mode or not : ‘true’ or ‘false’</li>
|
||||
<li>If you want to print or not in file ‘Energy_component.txt’ the three main contributions to the energy of the system according to the description presented above : ‘true’ or ‘false’ and <em>N<sub>Energy</sub></em>. This option writes in file every <em>N<sub>Energy</sub></em> time step. If the value is ‘false’ then <em>N<sub>Energy</sub></em> = 0. The file take into account the possibility to have several QEq group <em>g</em> then it writes: time step, number of atoms in group <em>g</em>, electrostatic part of energy, <em>E<sub>ES</sub></em>, the interaction between oxygen, <em>E<sub>OO</sub></em>, and short range metal-oxygen interaction, <em>E<sub>MO</sub></em>.</li>
|
||||
<li>If you want to print in file ‘Electroneg_component.txt’ the electronegativity component (<em>&#8706E<sub>tot</sub> &#8260&#8706Q<sub>i</sub></em>) or not: ‘true’ or ‘false’ and <em>N<sub>Electroneg</sub></em>.This option writes in file every <em>N<sub>Electroneg</sub></em> time step. If the value is ‘false’ then <em>N<sub>Electroneg</sub></em> = 0. The file consist in atom number <em>i</em>, atom type (1 for oxygen and # higher than 1 for metal), atom position: <em>x</em>, <em>y</em> and <em>z</em>, atomic charge of atom <em>i</em>, electrostatic part of atom <em>i</em> electronegativity, covalent part of atom <em>i</em> electronegativity, the hopping integral of atom <em>i</em> <em>(Z&#946<sup>2</sup>)<sub>i<sub></em> and box electronegativity.</li>
|
||||
</ul>
|
||||
<div class="admonition warning">
|
||||
<p class="first admonition-title">Warning</p>
|
||||
<p class="last">This last option slows down the calculation
|
||||
dramatically. Use only with a single processor simulation.</p>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Mixing, shift, table, tail correction, restart, rRESPA info:</strong></p>
|
||||
<p>This pair style does not support the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a>
|
||||
mix, shift, table, and tail options.</p>
|
||||
<p>This pair style does not write its information to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>, since it is stored in potential files. Thus, you
|
||||
needs to re-specify the pair_style and pair_coeff commands in an input
|
||||
script that reads a restart file.</p>
|
||||
<p>This pair style can only be used via the <em>pair</em> keyword of the
|
||||
<a class="reference internal" href="run_style.html"><em>run_style respa</em></a> command. It does not support the
|
||||
<em>inner</em>, <em>middle</em>, <em>outer</em> keywords.</p>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Restriction:</strong></p>
|
||||
<p>This pair style is part of the USER-SMTBQ package and is only enabled
|
||||
if LAMMPS is built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></a> section for more info.</p>
|
||||
<p>This potential requires using atom type 1 for oxygen and atom type
|
||||
higher than 1 for metal atoms.</p>
|
||||
<p>This pair style requires the <a class="reference internal" href="newton.html"><em>newton</em></a> setting to be “on”
|
||||
for pair interactions.</p>
|
||||
<p>The SMTB-Q potential files provided with LAMMPS (see the potentials
|
||||
directory) are parameterized for metal <code class="xref doc docutils literal"><span class="pre">units</span></code>.</p>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Citing this work:</strong></p>
|
||||
<p>Please cite related publication: N. Salles, O. Politano, E. Amzallag
|
||||
and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189</p>
|
||||
<hr class="docutils" />
|
||||
<p id="smtb-q-1"><strong>(SMTB-Q_1)</strong> N. Salles, O. Politano, E. Amzallag, R. Tetot,
|
||||
Comput. Mater. Sci. 111 (2016) 181-189</p>
|
||||
<p id="smtb-q-2"><strong>(SMTB-Q_2)</strong> E. Maras, N. Salles, R. Tetot, T. Ala-Nissila,
|
||||
H. Jonsson, J. Phys. Chem. C 2015, 119, 10391-10399</p>
|
||||
<p id="smtb-q-3"><strong>(SMTB-Q_3)</strong> R. Tetot, N. Salles, S. Landron, E. Amzallag, Surface
|
||||
Science 616, 19-8722 28 (2013)</p>
|
||||
<p id="wolf"><strong>(Wolf)</strong> D. Wolf, P. Keblinski, S. R. Phillpot, J. Eggebrecht, J Chem
|
||||
Phys, 110, 8254 (1999).</p>
|
||||
<p id="rick"><strong>(Rick)</strong> S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141
|
||||
(1994).</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<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>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</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>
|
||||
261
doc/pair_smtbq.txt
Executable file
@ -0,0 +1,261 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
pair_style smtbq command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
pair_style smtbq :pre
|
||||
|
||||
[Examples:]
|
||||
|
||||
pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.Al2O3 O Al :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
This pair stylecomputes a variable charge SMTB-Q (Second-Moment
|
||||
tight-Binding QEq) potential as described in "SMTB-Q_1"_#SMTB-Q_1 and
|
||||
"SMTB-Q_2"_#SMTB-Q_2. Briefly, the energy of metallic-oxygen systems
|
||||
is given by three contributions:
|
||||
|
||||
:c,image(Eqs/pair_smtbq1.jpg)
|
||||
|
||||
where {E<sub>tot</sub>} is the total potential energy of the system,
|
||||
{E<sub>ES</sub>} is the electrostatic part of the total energy,
|
||||
{E<sub>OO</sub>} is the interaction between oxygens and
|
||||
{E<sub>MO</sub>} is a short-range interaction between metal and oxygen
|
||||
atoms. This interactions depend on interatomic distance
|
||||
{r<sub>ij</sub>} and/or the charge {Q<sub>i</sub>} of atoms
|
||||
{i}. Cut-off function enables smooth convergence to zero interaction.
|
||||
|
||||
The parameters appearing in the upper expressions are set in the
|
||||
ffield.SMTBQ.Syst file where Syst corresponds to the selected system
|
||||
(e.g. field.SMTBQ.Al2O3). Exemples for TiO<sub>2</sub>,
|
||||
Al<sub>2</sub>O<sub>3</sub> are provided. A single pair_coeff command
|
||||
is used with the SMTBQ styles which provides the path to the potential
|
||||
file with parameters for needed elements. These are mapped to LAMMPS
|
||||
atom types by specifying additional arguments after the potential
|
||||
filename in the pair_coeff command. Note that atom type 1 must always
|
||||
correspond to oxygen atoms. As an example, to simulate a TiO2 system,
|
||||
atom type 1 has to be oxygen and atom type 2 Ti. The following
|
||||
pair_coeff command should then be used:
|
||||
|
||||
pair_coeff * * PathToLammps/potentials/ffield.smtbq.TiO2 O Ti :pre
|
||||
|
||||
The electrostatic part of the energy consists of two components :
|
||||
self-energy of atom {i} in the form of a second order charge dependent
|
||||
polynomial and a long-range Coulombic electrostatic interaction. The
|
||||
latter uses the wolf summation method described in "Wolf"_#Wolf,
|
||||
spherically truncated at a longer cutoff, {R<sub>coul</sub>}. The
|
||||
charge of each ion is modeled by an orbital Slater which depends on
|
||||
the principal quantum number ({n}) of the outer orbital shared by the
|
||||
ion.
|
||||
|
||||
Interaction between oxygen, {E<sub>OO</sub>}, consists of two parts,
|
||||
an attractive and a repulsive part. The attractive part is effective
|
||||
only at short range (< r<sub>2</sub><sup>OO</sup>). The attractive
|
||||
contribution was optimized to study surfaces reconstruction
|
||||
(e.g. "SMTB-Q_2"_#SMTB-Q_2 in TiO<sub>2</sub>) and is not necessary
|
||||
for oxide bulk modeling. The repulsive part is the Pauli interaction
|
||||
between the electron clouds of oxygen. The Pauli repulsion and the
|
||||
coulombic electrostatic interaction have same cut off value. In the
|
||||
ffield.SMTBQ.Syst, the keyword {'buck'} allows to consider only the
|
||||
repulsive O-O interactions. The keyword {'buckPlusAttr'} allows to
|
||||
consider the repulsive and the attractive O-O interactions.
|
||||
|
||||
The short-range interaction between metal-oxygen, {E<sub>MO</sub>} is
|
||||
based on the second moment approximation of the density of states with
|
||||
a N-body potential for the band energy term,
|
||||
{E<sup>i</sup><sub>cov</sub>}, and a Born-Mayer type repulsive terms
|
||||
as indicated by the keyword {'second_moment'} in the
|
||||
ffield.SMTBQ.Syst. The energy band term is given by:
|
||||
|
||||
:c,image(Eqs/pair_smtbq2.jpg)
|
||||
|
||||
where {η<sub>i</sub>} is the stoichiometry of atom {i},
|
||||
{δQ<sub>i</sub>} is the charge delocalization of atom {i},
|
||||
compared to its formal charge
|
||||
{Q<sup>F</sup><sub>i</sub>}. n<sub>0</sub>, the number of hybridized
|
||||
orbitals, is calculated with to the atomic orbitals shared
|
||||
{d<sub>i</sub>} and the stoichiometry
|
||||
{η<sub>i</sub>}. {r<sub>c1</sub>} and {r<sub>c2</sub>} are the two
|
||||
cutoff radius around the fourth neighbors in the cutoff function.
|
||||
|
||||
In the formalism used here, {ξ<sup>0</sup>} is the energy
|
||||
parameter. {ξ<sup>0</sup>} is in tight-binding approximation the
|
||||
hopping integral between the hybridized orbitals of the cation and the
|
||||
anion. In the literature we find many ways to write the hopping
|
||||
integral depending on whether one takes the point of view of the anion
|
||||
or cation. These are equivalent vision. The correspondence between the
|
||||
two visions is explained in appendix A of the article in the
|
||||
SrTiO<sub>3</sub> "SMTB-Q_3"_#SMTB-Q_3 (parameter {β} shown in
|
||||
this article is in fact the {β<sub>O</sub>}). To summarize the
|
||||
relationship between the hopping integral {ξ<sup>0</sup>} and the
|
||||
others, we have in an oxide C<sub>n</sub>O<sub>m</sub> the following
|
||||
relationship:
|
||||
|
||||
:c,image(Eqs/pair_smtbq3.jpg)
|
||||
|
||||
Thus parameter μ, indicated above, is given by : μ = (√n
|
||||
+ √m) ⁄ 2
|
||||
|
||||
The potential offers the possibility to consider the polarizability of
|
||||
the electron clouds of oxygen by changing the slater radius of the
|
||||
charge density around the oxygens through the parameters {rBB, rB and
|
||||
rS} in the ffield.SMTBQ.Syst. This change in radius is performed
|
||||
according to the method developed by E. Maras
|
||||
"SMTB-Q_2"_#SMTB-Q_2. This method needs to determine the number of
|
||||
nearest neighbors around the oxygen. This calculation is based on
|
||||
first ({r<sub>1n</sub>}) and second ({r<sub>2n</sub>}) distances
|
||||
neighbors.
|
||||
|
||||
The SMTB-Q potential is a variable charge potential. The equilibrium
|
||||
charge on each atom is calculated by the electronegativity
|
||||
equalization (QEq) method. See "Rick"_#Rick for further detail. One
|
||||
can adjust the frequency, the maximum number of iterative loop and the
|
||||
convergence of the equilibrium charge calculation. To obtain the
|
||||
energy conservation in NVE thermodynamic ensemble, we recommend to use
|
||||
a convergence parameter in the interval 10<sup>-5</sup> -
|
||||
10<sup>-6</sup> eV.
|
||||
|
||||
The ffield.SMTBQ.Syst files are provided for few systems. They consist
|
||||
of nine parts and the lines beginning with '#' are comments (note that
|
||||
the number of comment lines matter). The first sections are on the
|
||||
potential parameters and others are on the simulation options and
|
||||
might be modified. Keywords are character type and must be enclosed in
|
||||
quotation marks ('').
|
||||
|
||||
1) Number of different element in the oxide:
|
||||
|
||||
N<sub>elem</sub>= 2 or 3
|
||||
Divided line :ul
|
||||
|
||||
2) Atomic parameters
|
||||
|
||||
For the anion (oxygen) :
|
||||
|
||||
Name of element (char) and stoichiometry in oxide
|
||||
Formal charge and mass of element
|
||||
Principal quantic number of outer orbital ({n}), electronegativity ({χ<sup>0</sup><sub>i</simulationub>}) and hardness ({J<sup>0</sup><sub>i</sub>})
|
||||
Ionic radius parameters : max coordination number ({coordBB} = 6 by default), bulk coordination number {(coordB)}, surface coordination number {(coordS)} and {rBB, rB and rS} the slater radius for each coordination number. (<b>note : If you don't want to change the slater radius, use three identical radius values</b>)
|
||||
Number of orbital shared by the element in the oxide ({d<sub>i</sub>})
|
||||
Divided line :ul
|
||||
|
||||
For each cations (metal):
|
||||
|
||||
Name of element (char) and stoichiometry in oxide
|
||||
Formal charge and mass of element
|
||||
Number of electron in outer orbital {(ne)}, electronegativity ({χ<sup>0</sup><sub>i</simulationub>}), hardness ({J<sup>0</sup><sub>i</sub>}) and {r<sub>Salter</sub>} the slater radius for the cation.
|
||||
Number of orbitals shared by the elements in the oxide ({d<sub>i</sub>})
|
||||
Divided line :ul
|
||||
|
||||
3) Potential parameters:
|
||||
|
||||
Keyword for element1, element2 and interaction potential ('second_moment' or 'buck' or 'buckPlusAttr') between element 1 and 2. If the potential is 'second_moment', specify 'oxide' or 'metal' for metal-oxygen or metal-metal interactions respectively.
|
||||
Potential parameter: <pre><br/> If type of potential is 'second_moment' : {A (eV)}, {p}, {ξ<sup>0</sup>} (eV) and {q} <br/> {r<sub>c1</sub>} (Å), {r<sub>c2</sub>} (Å) and {r<sub>0</sub>} (Å) <br/> If type of potential is 'buck' : {C} (eV) and {ρ} (Å) <br/> If type of potential is 'buckPlusAttr' : {C} (eV) and {ρ} (Å) <br/> {D} (eV), {B} (Å<sup>-1</sup>), {r<sub>1</sub><sup>OO</sup>} (Å) and {r<sub>2</sub><sup>OO</sup>} (Å) </pre>
|
||||
Divided line :ul
|
||||
|
||||
4) Tables parameters:
|
||||
|
||||
Cutoff radius for the Coulomb interaction ({R<sub>coul</sub>})
|
||||
Starting radius ({r<sub>min</sub>} = 1,18845 Å) and increments ({dr} = 0,001 Å) for creating the potential table.
|
||||
Divided line :ul
|
||||
|
||||
5) Rick model parameter:
|
||||
|
||||
{Nevery} : parameter to set the frequency ({1/Nevery}) of the charge resolution. The charges are evaluated each {Nevery} time steps.
|
||||
Max number of iterative loop ({loopmax}) and precision criterion ({prec}) in eV of the charge resolution
|
||||
Divided line :ul
|
||||
|
||||
6) Coordination parameter:
|
||||
|
||||
First ({r<sub>1n</sub>}) and second ({r<sub>2n</sub>}) neighbor distances in Å
|
||||
Divided line :ul
|
||||
|
||||
7) Charge initialization mode:
|
||||
|
||||
Keyword ({QInitMode}) and initial oxygen charge ({Q<sub>init</sub>}). If keyword = 'true', all oxygen charges are initially set equal to {Q<sub>init</sub>}. The charges on the cations are initially set in order to respect the neutrality of the box. If keyword = 'false', all atom charges are initially set equal to 0 if you use "create_atom"#create_atom command or the charge specified in the file structure using "read_data"_#read_data.html command.
|
||||
Divided line :ul
|
||||
|
||||
8) Mode for the electronegativity equalization (Qeq) :
|
||||
|
||||
Keyword mode: <pre> <br/> QEqAll (one QEq group) | no parameters <br/> QEqAllParallel (several QEq groups) | no parameters <br/> Surface | zlim (QEq only for z>zlim) </pre>
|
||||
Parameter if necessary
|
||||
Divided line :ul
|
||||
|
||||
9) Verbose :
|
||||
|
||||
If you want the code to work in verbose mode or not : 'true' or 'false'
|
||||
If you want to print or not in file 'Energy_component.txt' the three main contributions to the energy of the system according to the description presented above : 'true' or 'false' and {N<sub>Energy</sub>}. This option writes in file every {N<sub>Energy</sub>} time step. If the value is 'false' then {N<sub>Energy</sub>} = 0. The file take into account the possibility to have several QEq group {g} then it writes: time step, number of atoms in group {g}, electrostatic part of energy, {E<sub>ES</sub>}, the interaction between oxygen, {E<sub>OO</sub>}, and short range metal-oxygen interaction, {E<sub>MO</sub>}.
|
||||
If you want to print in file 'Electroneg_component.txt' the electronegativity component ({∂E<sub>tot</sub> ⁄∂Q<sub>i</sub>}) or not: 'true' or 'false' and {N<sub>Electroneg</sub>}.This option writes in file every {N<sub>Electroneg</sub>} time step. If the value is 'false' then {N<sub>Electroneg</sub>} = 0. The file consist in atom number {i}, atom type (1 for oxygen and # higher than 1 for metal), atom position: {x}, {y} and {z}, atomic charge of atom {i}, electrostatic part of atom {i} electronegativity, covalent part of atom {i} electronegativity, the hopping integral of atom {i} {(Zβ<sup>2</sup>)<sub>i<sub>} and box electronegativity. :ul
|
||||
|
||||
IMPORTANT NOTE: This last option slows down the calculation
|
||||
dramatically. Use only with a single processor simulation.
|
||||
|
||||
:line
|
||||
|
||||
[Mixing, shift, table, tail correction, restart, rRESPA info:]
|
||||
|
||||
This pair style does not support the "pair_modify"_pair_modify.html
|
||||
mix, shift, table, and tail options.
|
||||
|
||||
This pair style does not write its information to "binary restart
|
||||
files"_restart.html, since it is stored in potential files. Thus, you
|
||||
needs to re-specify the pair_style and pair_coeff commands in an input
|
||||
script that reads a restart file.
|
||||
|
||||
This pair style can only be used via the {pair} keyword of the
|
||||
"run_style respa"_run_style.html command. It does not support the
|
||||
{inner}, {middle}, {outer} keywords.
|
||||
|
||||
:line
|
||||
|
||||
[Restriction:]
|
||||
|
||||
This pair style is part of the USER-SMTBQ package and is only enabled
|
||||
if LAMMPS is built with that package. See the "Making
|
||||
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
|
||||
This potential requires using atom type 1 for oxygen and atom type
|
||||
higher than 1 for metal atoms.
|
||||
|
||||
This pair style requires the "newton"_newton.html setting to be "on"
|
||||
for pair interactions.
|
||||
|
||||
The SMTB-Q potential files provided with LAMMPS (see the potentials
|
||||
directory) are parameterized for metal "units"_unit.html.
|
||||
|
||||
:line
|
||||
|
||||
[Citing this work:]
|
||||
|
||||
Please cite related publication: N. Salles, O. Politano, E. Amzallag
|
||||
and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
|
||||
:line
|
||||
|
||||
:link(SMTB-Q_1)
|
||||
[(SMTB-Q_1)] N. Salles, O. Politano, E. Amzallag, R. Tetot,
|
||||
Comput. Mater. Sci. 111 (2016) 181-189
|
||||
|
||||
:link(SMTB-Q_2)
|
||||
[(SMTB-Q_2)] E. Maras, N. Salles, R. Tetot, T. Ala-Nissila,
|
||||
H. Jonsson, J. Phys. Chem. C 2015, 119, 10391-10399
|
||||
|
||||
:link(SMTB-Q_3)
|
||||
[(SMTB-Q_3)] R. Tetot, N. Salles, S. Landron, E. Amzallag, Surface
|
||||
Science 616, 19-8722 28 (2013)
|
||||
|
||||
:link(Wolf)
|
||||
[(Wolf)] D. Wolf, P. Keblinski, S. R. Phillpot, J. Eggebrecht, J Chem
|
||||
Phys, 110, 8254 (1999).
|
||||
|
||||
:link(Rick)
|
||||
[(Rick)] S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141
|
||||
(1994).
|
||||
@ -170,7 +170,7 @@ variable previously set in the input script, so that each partition is
|
||||
assigned a different temperature. See the <a class="reference internal" href="variable.html"><em>variable</em></a>
|
||||
command for more details. For example:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>variable t world 300.0 310.0 320.0 330.0
|
||||
fix myfix all nvt $t $t 100.0
|
||||
fix myfix all nvt temp $t $t 100.0
|
||||
temper 100000 100 $t myfix 3847 58382
|
||||
</pre></div>
|
||||
</div>
|
||||
|
||||
@ -51,7 +51,7 @@ assigned a different temperature. See the "variable"_variable.html
|
||||
command for more details. For example:
|
||||
|
||||
variable t world 300.0 310.0 320.0 330.0
|
||||
fix myfix all nvt $t $t 100.0
|
||||
fix myfix all nvt temp $t $t 100.0
|
||||
temper 100000 100 $t myfix 3847 58382 :pre
|
||||
|
||||
would define 4 temperatures, and assign one of them to the thermostat
|
||||
|
||||
57
examples/USER/mgpt/Ta6.8x.mgpt.README
Normal file
@ -0,0 +1,57 @@
|
||||
MGPT multi-ion potentials: Ta6.8x (Ta, version 6.8x)
|
||||
|
||||
Author: John A. Moriarty
|
||||
|
||||
Potential data files: Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin
|
||||
|
||||
Volume mesh for potential data, with x = (vol/vol0)**(1/3):
|
||||
|
||||
|
||||
x vol/vol0 vol(au) rws(au) dens(g/cc) dens/dens0
|
||||
|
||||
1.080 1.260 153.181 3.31924 13.237 0.794
|
||||
1.070 1.225 148.965 3.28851 13.612 0.816
|
||||
1.060 1.191 144.828 3.25777 14.001 0.840
|
||||
1.050 1.158 140.767 3.22704 14.405 0.864
|
||||
1.040 1.125 136.783 3.19631 14.824 0.889
|
||||
1.030 1.093 132.876 3.16557 15.260 0.915
|
||||
1.020 1.061 129.043 3.13484 15.714 0.942
|
||||
1.010 1.030 125.285 3.10410 16.185 0.971
|
||||
1.000 1.000 121.600 3.07337 16.675 1.000
|
||||
0.990 0.970 117.988 3.04264 17.186 1.031
|
||||
0.980 0.941 114.449 3.01190 17.717 1.062
|
||||
0.970 0.913 110.981 2.98117 18.271 1.096
|
||||
0.960 0.885 107.584 2.95044 18.848 1.130
|
||||
0.950 0.857 104.257 2.91970 19.449 1.166
|
||||
0.940 0.831 100.999 2.88897 20.077 1.204
|
||||
0.930 0.804 97.810 2.85824 20.731 1.243
|
||||
0.920 0.779 94.688 2.82750 21.415 1.284
|
||||
0.910 0.754 91.634 2.79677 22.128 1.327
|
||||
0.900 0.729 88.646 2.76603 22.874 1.372
|
||||
0.890 0.705 85.724 2.73530 23.654 1.419
|
||||
0.880 0.681 82.867 2.70457 24.470 1.467
|
||||
0.870 0.659 80.074 2.67383 25.323 1.519
|
||||
0.860 0.636 77.344 2.64310 26.217 1.572
|
||||
0.850 0.614 74.678 2.61237 27.153 1.628
|
||||
0.840 0.593 72.073 2.58163 28.134 1.687
|
||||
0.830 0.572 69.529 2.55090 29.164 1.749
|
||||
0.820 0.551 67.046 2.52016 30.244 1.814
|
||||
0.810 0.531 64.623 2.48943 31.378 1.882
|
||||
0.800 0.512 62.259 2.45870 32.569 1.953
|
||||
|
||||
Corresponding T = 0 bcc pressure range: -30 GPa to 422 GPa
|
||||
|
||||
|
||||
General references to MGPT potentials:
|
||||
|
||||
J. A. Moriarty, Phys. Rev. B 42, 1609 (1990) and 49, 12431 (1994).
|
||||
|
||||
J. A. Moriarty, L. X. Benedict, J. N. Glosli, R. Q. Hood, D. A. Orlikowski, M. V. Patel,
|
||||
P. Soderlind, F. H. Streitz, M. Tang, and L. H. Yang, J. Mater. Res. 21, 563 (2006).
|
||||
|
||||
|
||||
Specific references to Ta6.8x potentials:
|
||||
|
||||
J. A. Moriarty and J. B. Haskins, Phys. Rev. B 90, 054113 (2014).
|
||||
|
||||
J. B. Haskins, J. A. Moriarty, and R. Q. Hood, Phys. Rev. B 86, 224104 (2012).
|
||||
2
examples/USER/mgpt/Ta6.8x.mgpt.parmin
Normal file
@ -0,0 +1,2 @@
|
||||
0.80 1.08 0.01 121.60
|
||||
6.00 -4.00 1.00 0.00 2
|
||||
11253
examples/USER/mgpt/Ta6.8x.mgpt.potin
Normal file
68
examples/USER/mgpt/in.bcc0
Normal file
@ -0,0 +1,68 @@
|
||||
# script for mgpt t=0 eos in bulk bcc structure
|
||||
|
||||
echo screen
|
||||
|
||||
units electron
|
||||
atom_style atomic
|
||||
|
||||
# Atomic volume for MGPT potential in a.u.
|
||||
variable atomic_vol equal 121.6
|
||||
|
||||
# Derive lattice constant from volume
|
||||
variable lattice_constant equal (${atomic_vol}*2.0)^(1.0/3.0)
|
||||
|
||||
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
|
||||
lattice bcc ${lattice_constant}
|
||||
region box block 0 5 0 5 0 5
|
||||
create_box 1 box
|
||||
create_atoms 1 box
|
||||
|
||||
# Define potential for use in simulation
|
||||
pair_style mgpt
|
||||
|
||||
# Set parameters for potential:
|
||||
# parameter files atomic volume
|
||||
#pair_coeff * * parmin potin ${atomic_vol}
|
||||
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
|
||||
|
||||
# Create velocities at 0 K
|
||||
velocity all create 0.0 87287
|
||||
|
||||
# Set neighbor list parameters
|
||||
neighbor 0.1 bin
|
||||
neigh_modify every 1 delay 0 check yes
|
||||
|
||||
# Set up microcanonical integrator
|
||||
fix 1 all nve
|
||||
|
||||
# Dump coordinates to file every 50 timesteps
|
||||
dump id all atom 50 dump.bcc0
|
||||
|
||||
# Output thermodynamical data every 10 timesteps
|
||||
thermo 10
|
||||
|
||||
# Set output quantities and output format
|
||||
thermo_style custom step vol temp pe etotal press
|
||||
|
||||
## Example: Output floating point number with 5 digits exponential notation.
|
||||
#thermo_modify format float %15.5e
|
||||
|
||||
# Run 0 timesteps
|
||||
run 0
|
||||
|
||||
# Convert energy to rydbergs and pressure to gpa
|
||||
|
||||
variable natoms equal "count(all)"
|
||||
variable voltot equal "vol"
|
||||
variable atvol equal "v_voltot/v_natoms"
|
||||
variable etot equal "2.0*pe"
|
||||
variable etotry equal "v_etot/v_natoms"
|
||||
variable ptot equal "press"
|
||||
variable ptotgpa equal "v_ptot/1.0e+09"
|
||||
|
||||
print "number of atoms = ${natoms}"
|
||||
print "atomic volume (a.u.) = ${atvol}"
|
||||
print "total energy (ry/atom) = ${etotry}"
|
||||
print "pressure (gpa) = ${ptotgpa}"
|
||||
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
|
||||
print "${atvol} ${etotry} ${ptotgpa}"
|
||||
76
examples/USER/mgpt/in.vac0-bcc
Normal file
@ -0,0 +1,76 @@
|
||||
# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice:
|
||||
# input for unrelaxed vacancy formation energy at constant atomic volume
|
||||
|
||||
echo screen
|
||||
|
||||
units electron
|
||||
atom_style atomic
|
||||
|
||||
# Atomic volume for MGPT potential in a.u.
|
||||
variable atomic_vol equal 121.6
|
||||
|
||||
# Derive effective lattice volume from atomic volume for 249-site cell
|
||||
variable lat_vol equal ${atomic_vol}*249/250
|
||||
|
||||
# Derive lattice constant from lattice volume
|
||||
variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0)
|
||||
|
||||
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
|
||||
lattice bcc ${lattice_constant}
|
||||
region box block 0 5 0 5 0 5
|
||||
create_box 1 box
|
||||
create_atoms 1 box
|
||||
|
||||
# Remove central atom from bcc lattice to create vacancy
|
||||
region vacancy sphere 2.5 2.5 2.5 0.1 units lattice
|
||||
delete_atoms region vacancy
|
||||
|
||||
# Define potential for use in simulation
|
||||
pair_style mgpt
|
||||
|
||||
# Set parameters for potential:
|
||||
# parameter files atomic volume
|
||||
#pair_coeff * * parmin potin ${atomic_vol}
|
||||
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
|
||||
|
||||
# Create velocities at 0 K
|
||||
velocity all create 0.0 87287
|
||||
|
||||
# Set neighbor list parameters
|
||||
neighbor 0.1 bin
|
||||
neigh_modify every 1 delay 0 check yes
|
||||
|
||||
# Set up microcanonical integrator
|
||||
fix 1 all nve
|
||||
|
||||
# Dump coordinates to file every 50 timesteps
|
||||
dump id all atom 50 dump.vac0-bcc
|
||||
|
||||
# Output thermodynamical data every 10 timesteps
|
||||
thermo 10
|
||||
|
||||
# Set output quantities and output format
|
||||
thermo_style custom step vol temp pe etotal press
|
||||
|
||||
## Example: Output floating point number with 5 digits exponential notation.
|
||||
#thermo_modify format float %15.5e
|
||||
|
||||
# Run 0 timesteps
|
||||
run 0
|
||||
|
||||
# Convert energy to rydbergs and pressure to gpa
|
||||
|
||||
variable natoms equal "count(all)"
|
||||
variable voltot equal "vol"
|
||||
variable atvol equal "v_voltot/v_natoms"
|
||||
variable etot equal "2.0*pe"
|
||||
variable etotry equal "v_etot/v_natoms"
|
||||
variable ptot equal "press"
|
||||
variable ptotgpa equal "v_ptot/1.0e+09"
|
||||
|
||||
print "number of atoms = ${natoms}"
|
||||
print "atomic volume (a.u.) = ${atvol}"
|
||||
print "total energy (ry/atom) = ${etotry}"
|
||||
print "pressure (gpa) = ${ptotgpa}"
|
||||
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
|
||||
print "${atvol} ${etotry} ${ptotgpa}"
|
||||
71
examples/USER/mgpt/in.vacmin-bcc
Normal file
@ -0,0 +1,71 @@
|
||||
# script for mgpt t=0 eos with relaxed vacancy in bcc structure:
|
||||
# input for relaxed vacancy formation energy at constant pressure
|
||||
|
||||
echo screen
|
||||
|
||||
units electron
|
||||
atom_style atomic
|
||||
|
||||
# Atomic volume for MGPT potential
|
||||
variable atomic_vol equal 121.863
|
||||
|
||||
# Derive effective lattice volume from atomic volume for 249-site cell
|
||||
variable lat_vol equal ${atomic_vol}*249/250
|
||||
|
||||
# Derive lattice constant from lattice volume
|
||||
variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0)
|
||||
|
||||
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
|
||||
lattice bcc ${lattice_constant}
|
||||
region box block 0 5 0 5 0 5
|
||||
create_box 1 box
|
||||
create_atoms 1 box
|
||||
|
||||
# Remove central atom from bcc lattice to create vacancy
|
||||
region vacancy sphere 2.5 2.5 2.5 0.1 units lattice
|
||||
delete_atoms region vacancy
|
||||
|
||||
# Define potential for use in simulation
|
||||
pair_style mgpt
|
||||
|
||||
# Set parameters for potential:
|
||||
# parameter files atomic volume
|
||||
#pair_coeff * * parmin potin ${atomic_vol}
|
||||
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
|
||||
|
||||
# Set neighbor list parameters
|
||||
neighbor 0.1 bin
|
||||
neigh_modify every 1 delay 0 check yes
|
||||
|
||||
# Dump coordinates to file every 50 timesteps
|
||||
dump id all atom 50 dump.vacmin-bcc
|
||||
|
||||
# Output thermodynamical data every 10 timesteps
|
||||
thermo 10
|
||||
|
||||
# Set output quantities and output format
|
||||
thermo_style custom step vol temp pe etotal press
|
||||
|
||||
## Example: Output floating point number with 5 digits exponential notation.
|
||||
#thermo_modify format float %15.5e
|
||||
|
||||
# minimize total energy
|
||||
min_style cg
|
||||
minimize 1.0e-10 1.0e-10 5000 10000
|
||||
|
||||
# Convert energy to rydbergs and pressure to gpa
|
||||
|
||||
variable natoms equal "count(all)"
|
||||
variable voltot equal "vol"
|
||||
variable atvol equal "v_voltot/v_natoms"
|
||||
variable etot equal "2.0*pe"
|
||||
variable etotry equal "v_etot/v_natoms"
|
||||
variable ptot equal "press"
|
||||
variable ptotgpa equal "v_ptot/1.0e+09"
|
||||
|
||||
print "number of atoms = ${natoms}"
|
||||
print "atomic volume (a.u.) = ${atvol}"
|
||||
print "total energy (ry/atom) = ${etotry}"
|
||||
print "pressure (gpa) = ${ptotgpa}"
|
||||
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
|
||||
print "${atvol} ${etotry} ${ptotgpa}"
|
||||
53
examples/USER/mgpt/log.bcc0
Normal file
@ -0,0 +1,53 @@
|
||||
LAMMPS (23 Oct 2015)
|
||||
# script for mgpt t=0 eos in bulk bcc structure
|
||||
|
||||
echo screen
|
||||
Lattice spacing in x,y,z = 6.24196 6.24196 6.24196
|
||||
Created orthogonal box = (0 0 0) to (31.2098 31.2098 31.2098)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
Created 250 atoms
|
||||
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
|
||||
Neighbor list info ...
|
||||
2 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 13.1618
|
||||
ghost atom cutoff = 13.1618
|
||||
binsize = 6.58091 -> bins = 5 5 5
|
||||
Memory usage per processor = 3.54482 Mbytes
|
||||
Step Volume Temp PotEng TotEng Press
|
||||
0 30400 0 -74.412503 -74.412503 -1.1594626e+09
|
||||
Loop time of 1.90735e-06 on 1 procs for 0 steps with 250 atoms
|
||||
|
||||
0.0% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 1.907e-06 | | |100.00
|
||||
|
||||
Nlocal: 250 ave 250 max 250 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1479 ave 1479 max 1479 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 8000 ave 8000 max 8000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 16000 ave 16000 max 16000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 16000
|
||||
Ave neighs/atom = 64
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
number of atoms = 250
|
||||
atomic volume (a.u.) = 121.6
|
||||
total energy (ry/atom) = -0.59530002488734
|
||||
pressure (gpa) = -1.15946260887556
|
||||
250 121.6 -148.825006221835 -1.15946260887556
|
||||
121.6 -0.59530002488734 -1.15946260887556
|
||||
Total wall time: 0:00:00
|
||||
78
examples/USER/mgpt/log.lammps
Normal file
@ -0,0 +1,78 @@
|
||||
LAMMPS (23 Oct 2015)
|
||||
# script for mgpt t=0 eos with relaxed vacancy in bcc structure:
|
||||
# input for relaxed vacancy formation energy at constant pressure
|
||||
|
||||
echo screen
|
||||
Lattice spacing in x,y,z = 6.23812 6.23812 6.23812
|
||||
Created orthogonal box = (0 0 0) to (31.1906 31.1906 31.1906)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
Created 250 atoms
|
||||
Deleted 1 atoms, new total = 249
|
||||
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
|
||||
Neighbor list info ...
|
||||
2 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 13.1712
|
||||
ghost atom cutoff = 13.1712
|
||||
binsize = 6.58562 -> bins = 5 5 5
|
||||
Memory usage per processor = 4.66978 Mbytes
|
||||
Step Volume Temp PotEng TotEng Press
|
||||
0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09
|
||||
10 30343.887 0 -74.002332 -74.002332 -1.107516e+09
|
||||
20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09
|
||||
30 30343.887 0 -74.005762 -74.005762 -1.143304e+09
|
||||
40 30343.887 0 -74.006116 -74.006116 -1.149395e+09
|
||||
50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09
|
||||
60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09
|
||||
70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09
|
||||
80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09
|
||||
90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09
|
||||
100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09
|
||||
110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09
|
||||
120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09
|
||||
130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09
|
||||
139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09
|
||||
Loop time of 4.33109 on 1 procs for 139 steps with 249 atoms
|
||||
|
||||
92.4% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
-73.9945109564 -74.0063705487 -74.0063705557
|
||||
Force two-norm initial, final = 0.0366227 8.09081e-05
|
||||
Force max component initial, final = 0.00730948 8.05242e-06
|
||||
Final line search alpha, max atom move = 1 8.05242e-06
|
||||
Iterations, force evaluations = 139 139
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.3064 | 4.3064 | 4.3064 | 0.0 | 99.43
|
||||
Neigh | 0.019113 | 0.019113 | 0.019113 | 0.0 | 0.44
|
||||
Comm | 0.0017624 | 0.0017624 | 0.0017624 | 0.0 | 0.04
|
||||
Output | 0.00084376 | 0.00084376 | 0.00084376 | 0.0 | 0.02
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.00297 | | | 0.07
|
||||
|
||||
Nlocal: 249 ave 249 max 249 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1479 ave 1479 max 1479 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 7936 ave 7936 max 7936 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 15872 ave 15872 max 15872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 15872
|
||||
Ave neighs/atom = 63.743
|
||||
Neighbor list builds = 4
|
||||
Dangerous builds = 0
|
||||
number of atoms = 249
|
||||
atomic volume (a.u.) = 121.863
|
||||
total energy (ry/atom) = -0.594428679162064
|
||||
pressure (gpa) = -1.15783109519801
|
||||
249 121.863 -148.012741111354 -1.15783109519801
|
||||
121.863 -0.594428679162064 -1.15783109519801
|
||||
Total wall time: 0:00:04
|
||||
55
examples/USER/mgpt/log.vac0-bcc
Normal file
@ -0,0 +1,55 @@
|
||||
LAMMPS (23 Oct 2015)
|
||||
# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice:
|
||||
# input for unrelaxed vacancy formation energy at constant atomic volume
|
||||
|
||||
echo screen
|
||||
Lattice spacing in x,y,z = 6.23363 6.23363 6.23363
|
||||
Created orthogonal box = (0 0 0) to (31.1681 31.1681 31.1681)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
Created 250 atoms
|
||||
Deleted 1 atoms, new total = 249
|
||||
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
|
||||
Neighbor list info ...
|
||||
2 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 13.1618
|
||||
ghost atom cutoff = 13.1618
|
||||
binsize = 6.58091 -> bins = 5 5 5
|
||||
Memory usage per processor = 3.54478 Mbytes
|
||||
Step Volume Temp PotEng TotEng Press
|
||||
0 30278.4 0 -73.996387 -73.996387 -6.3426731e+08
|
||||
Loop time of 1.90735e-06 on 1 procs for 0 steps with 249 atoms
|
||||
|
||||
0.0% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 1.907e-06 | | |100.00
|
||||
|
||||
Nlocal: 249 ave 249 max 249 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1479 ave 1479 max 1479 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 7936 ave 7936 max 7936 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 15872 ave 15872 max 15872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 15872
|
||||
Ave neighs/atom = 63.743
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
number of atoms = 249
|
||||
atomic volume (a.u.) = 121.6
|
||||
total energy (ry/atom) = -0.594348488796036
|
||||
pressure (gpa) = -0.634267307139601
|
||||
249 121.6 -147.992773710213 -0.634267307139601
|
||||
121.6 -0.594348488796036 -0.634267307139601
|
||||
Total wall time: 0:00:00
|
||||
78
examples/USER/mgpt/log.vacmin-bcc
Normal file
@ -0,0 +1,78 @@
|
||||
LAMMPS (23 Oct 2015)
|
||||
# script for mgpt t=0 eos with relaxed vacancy in bcc structure:
|
||||
# input for relaxed vacancy formation energy at constant pressure
|
||||
|
||||
echo screen
|
||||
Lattice spacing in x,y,z = 6.23812 6.23812 6.23812
|
||||
Created orthogonal box = (0 0 0) to (31.1906 31.1906 31.1906)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
Created 250 atoms
|
||||
Deleted 1 atoms, new total = 249
|
||||
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
|
||||
Neighbor list info ...
|
||||
2 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 13.1712
|
||||
ghost atom cutoff = 13.1712
|
||||
binsize = 6.58562 -> bins = 5 5 5
|
||||
Memory usage per processor = 4.66978 Mbytes
|
||||
Step Volume Temp PotEng TotEng Press
|
||||
0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09
|
||||
10 30343.887 0 -74.002332 -74.002332 -1.107516e+09
|
||||
20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09
|
||||
30 30343.887 0 -74.005762 -74.005762 -1.143304e+09
|
||||
40 30343.887 0 -74.006116 -74.006116 -1.149395e+09
|
||||
50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09
|
||||
60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09
|
||||
70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09
|
||||
80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09
|
||||
90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09
|
||||
100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09
|
||||
110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09
|
||||
120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09
|
||||
130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09
|
||||
139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09
|
||||
Loop time of 4.22107 on 1 procs for 139 steps with 249 atoms
|
||||
|
||||
92.1% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
-73.9945109564 -74.0063705487 -74.0063705557
|
||||
Force two-norm initial, final = 0.0366227 8.09081e-05
|
||||
Force max component initial, final = 0.00730948 8.05242e-06
|
||||
Final line search alpha, max atom move = 1 8.05242e-06
|
||||
Iterations, force evaluations = 139 139
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.1973 | 4.1973 | 4.1973 | 0.0 | 99.44
|
||||
Neigh | 0.018799 | 0.018799 | 0.018799 | 0.0 | 0.45
|
||||
Comm | 0.0017059 | 0.0017059 | 0.0017059 | 0.0 | 0.04
|
||||
Output | 0.00080252 | 0.00080252 | 0.00080252 | 0.0 | 0.02
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.002477 | | | 0.06
|
||||
|
||||
Nlocal: 249 ave 249 max 249 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 1479 ave 1479 max 1479 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 7936 ave 7936 max 7936 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 15872 ave 15872 max 15872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 15872
|
||||
Ave neighs/atom = 63.743
|
||||
Neighbor list builds = 4
|
||||
Dangerous builds = 0
|
||||
number of atoms = 249
|
||||
atomic volume (a.u.) = 121.863
|
||||
total energy (ry/atom) = -0.594428679162064
|
||||
pressure (gpa) = -1.15783109519801
|
||||
249 121.863 -148.012741111354 -1.15783109519801
|
||||
121.863 -0.594428679162064 -1.15783109519801
|
||||
Total wall time: 0:00:04
|
||||
1811
examples/USER/smtbq/data.Alpha
Executable file
34
examples/USER/smtbq/ffield.smtbq.Al
Executable file
@ -0,0 +1,34 @@
|
||||
# DATE: 2015-10-22 CONTRIBUTOR: Nicolas Salles, nsalles@laas.fr CITATION: N. Salles, O. Politano, E. Amzallag and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
# SMTBQ parameter for Al-Al interaction.
|
||||
# Edited by N. Salles Univ. Bourgogne and E. Maras from Aalto Univ.
|
||||
# year: 2014
|
||||
# =========================================================================
|
||||
' Nombre.de.type.d.atome..........:' 1
|
||||
' ====== atomic parameters ======= '
|
||||
' Cation.de.l.oxyde..Stoechio.....:' 'Al' 1
|
||||
' Qform.....masse.................:' 3.0 26.98
|
||||
' Param.QEq.(ne,.Chi,.J,.R_eff)...:' 3 1.19258 11.05345 0.57701
|
||||
' Nbre.d.etats.partage.par.cation.:' 3
|
||||
' ===== potential Parameter ======'
|
||||
' Atom1..atom2..potential..mode....' 'Al' 'Al' 'second_moment' 'metal'
|
||||
' Potentiel.Cat-Ox.(A,.p,.Ksi,.q).:' 0.1221 8.612 1.316 2.516
|
||||
' Pot..Cat-Ox.(rc1,.rc2,.r0).Iota.:' 5.6 7.0 2.863 2.0
|
||||
' ======== Parametre tab ========= '
|
||||
' Rcoul...........................:' 11.1714
|
||||
' rmin...dr.......................:' 1.18845 0.001
|
||||
' ======== IFQM Parameter ======== '
|
||||
' Frenquency.Q.resolution..........' 0
|
||||
' loopmax.-.precision..............' 5000 0.0002
|
||||
' ==== Coordination parameters ===='
|
||||
' .r1n................r2n..........' 2.5 3.2
|
||||
' ========== QInitMode ========= '
|
||||
' QInitMode....QInit(if.needed)....' 'false' 0.0
|
||||
' ======== Mode for QEq ======== '
|
||||
' mode(see.end.of.this.file.)......' 'QEqAllParallel'
|
||||
' parameters.for.mode..............'
|
||||
' ========== Verbose ============ '
|
||||
' Verbose(true.or.false)...........' 'false'
|
||||
' Print.Energy.components..........' 'false' 300.0
|
||||
' Print.electroneg...components....' 'false' 300.0
|
||||
# =========================== END's parameters =========================
|
||||
|
||||
56
examples/USER/smtbq/ffield.smtbq.Al2O3
Executable file
@ -0,0 +1,56 @@
|
||||
# DATE: 2015-10-22 CONTRIBUTOR: Nicolas Salles, nsalles@laas.fr CITATION: N. Salles, O. Politano, E. Amzallag and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
# SMTBQ parameter for AlO interaction with a limit length 'rc2sm=dc2**2'.
|
||||
# Edited by N. Salles from Univ Bourgogne and E. Maras from Aalto Univ.
|
||||
#
|
||||
# Presentation atom : nature
|
||||
# q, qmin, qmax, masse
|
||||
# parameter QEq : Chi, J, R_eff
|
||||
# Parameter SM : A, p, Ksi, q
|
||||
# CutOff SM : dc1, dc2, r0
|
||||
# =========================================================================
|
||||
# -------------------------- Begin's parameters ---------------------------
|
||||
' Number.of.atoms.type............:' 2
|
||||
' ====== atomic parameters ======= '
|
||||
' 1st.element.(Oxygen).Stoechio...:' 'O' 3
|
||||
' Qform.....mass..................:' -2.0 16.00
|
||||
' Param.QEq.(ne,.Chi0,.JiO).......:' 2 6.57 10.22
|
||||
' coordBB.coordB.coordS.rBB.rB.rS.:' 6. 4. 3.00 0.529 0.529 0.529
|
||||
' Number.of.shared.state.by.ions..:' 3
|
||||
' -------------------------------- '
|
||||
' 2nd.element.(metal).Stoechio....:' 'Al' 2
|
||||
' Qform.....mass..................:' 3.0 26.98
|
||||
' Param.QEq.(ne,.Chi0,.Ji0,.R_eff):' 3 1.19009 11.1903 0.56619
|
||||
' Number.of.shared.state.by.ions..:' 4
|
||||
' ===== potential Parameter ======'
|
||||
' Atom1..atom2..potential..mode....' 'Al' 'O' 'second_moment' 'oxide'
|
||||
' Pot.CatOx.(A,.p,.Ksi(ref=O),.q).:' 0.18176 8.80041 0.26044 1.58851
|
||||
' Pot..Cat-Ox.(rc1,.rc2,.r0)......:' 4. 5.6 1.91
|
||||
' -------------------------------- '
|
||||
' atom1..atom2..potential..........' 'O' 'O' 'buck'
|
||||
' Potentiel.O-O...(C,.Rho)........:' 580.440 0.3540
|
||||
' ======== Parametre tab ========= '
|
||||
' Rcoul=a*rc(SMASH)...............:' 11.1714
|
||||
' rmin...dr.......................:' 1.18845 0.001
|
||||
' ======== IFQM Parameter ======== '
|
||||
' Nevery.charge.calculation........' 1
|
||||
' loopmax....precision.............' 7000 0.000001
|
||||
' ==== Coordination parameters ===='
|
||||
' .r1n................r2n..........' 2.5 3.2
|
||||
' ========== QInitMode ========= '
|
||||
' QInitMode....QInit(if.needed)....' 'false' -1.8
|
||||
' ======== Mode for QEq ======== '
|
||||
' mode(see.end.of.this.file.)......' 'QEqAll'
|
||||
' parameters.for.mode..............'
|
||||
' ========== Verbose ============ '
|
||||
' Verbose(true.or.false)...........' 'false'
|
||||
' Print.Energy.components..........' 'false' 300.0
|
||||
' Print.electroneg...components....' 'false' 300.0
|
||||
# =========================== FIN des parametres =========================
|
||||
|
||||
#Possible QInit modes
|
||||
# true (then initialize all the oxygen charges to QOxInit and set the cation charge in order to keep the charge balance (neutrality of the box)
|
||||
#any other name would lead to either 0 charges or charge read from the lammps atomic position file
|
||||
#Possible QEq modes | parameters
|
||||
# QEqAll | no parameters
|
||||
# QEqAllParallel | no parameters
|
||||
# Surface | zlim (QEq only for z>zlim)
|
||||
53
examples/USER/smtbq/ffield.smtbq.TiO2
Executable file
@ -0,0 +1,53 @@
|
||||
# DATE: 2015-10-22 CONTRIBUTOR: Nicolas Salles, nsalles@laas.fr CITATION: N. Salles, O. Politano, E. Amzallag and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
# ========================================================================
|
||||
# SMTBQ parameter for Ti-O interaction with a limit length 'rc2sm=dc2**2'.
|
||||
# Edited by N. Salles from Univ Bourgogne and E. Maras from Aalto Univ
|
||||
# september 2014
|
||||
# ========================================================================
|
||||
' Number.of.atoms.type............:' 2
|
||||
' ====== atomic parameters ======= '
|
||||
' 1st.element.(Oxygen).Stoechio...:' 'O' 2
|
||||
' Qform.....mass..................:' -2.0 16.00
|
||||
' Param.QEq.(ne,.Chi0,.JiO).......:' 2 6.57 10.22
|
||||
' coordBB.coordB.coordS.rBB.rB.rS.:' 6. 3. 2.00 0.52 0.54348 0.58
|
||||
' Number.of.shared.state.by.ions..:' 3
|
||||
' -------------------------------- '
|
||||
' 2nd.element.(metal).Stoechio....:' 'Ti' 1
|
||||
' Qform.....mass..................:' 4.0 26.98
|
||||
' Param.QEq.(nq,.Chi0,.Ji0,.R_eff):' 3 0.00 10.572 0.734
|
||||
' Number.of.shared.state.by.ions..:' 5
|
||||
' ===== potential Parameter ======'
|
||||
' Atom1..atom2..potential..mode....' 'Ti' 'O' 'second_moment' 'oxide'
|
||||
' Pot.CatOx.(A,.p,.Ksi(ref=O),.q).:' 0.134 12.609 0.5434 2.0965
|
||||
' Pot..Cat-Ox.(rc1,.rc2,.r0)......:' 3.6 6.0 1.95
|
||||
' -------------------------------- '
|
||||
' atom1..atom2..potential..........' 'O' 'O' 'buckPlusAttr'
|
||||
' Potential.O-O...(C,.Rho)........:' 580.440 0.3540
|
||||
' Potential.O-O...(D.B.r1OO.r2OO).:' -20.86 -0.916 1.4 1.8
|
||||
' ======== Tab Parameter ========= '
|
||||
' Rcoul=a*rc(SMASH)...............:' 12.1744
|
||||
' rmin...dr.......................:' 1.0675 0.001
|
||||
' ======== IFQM Parameter ======== '
|
||||
' Nevery.charge.calculation........' 1
|
||||
' loopmax....precision.............' 7000 0.000001
|
||||
' ==== Coordination parameters ===='
|
||||
' .r1n................r2n..........' 2.0 3.5
|
||||
' ========== QInitMode ========= '
|
||||
' QInitMode....QInit(if.needed)....' 'false' -1.0
|
||||
' ======== Mode for QEq ======== '
|
||||
' mode(see.end.of.this.file.)......' 'QEqAll'
|
||||
' parameters.for.mode..............'
|
||||
' ========== Verbose ============ '
|
||||
' Verbose(true.or.false)...........' 'false'
|
||||
' Print.Energy.components..........' 'false' 300.0
|
||||
' Print.electroneg...components....' 'false' 300.0
|
||||
# =========================== END's parameters =========================
|
||||
|
||||
#Possible QInit modes
|
||||
# true (then initialize all the oxygen charges to QOxInit and set the cation charge in order to keep the charge balance (neutrality of the box)
|
||||
#any other name would lead to either 0 charges or charge read from the lammps atomic position file
|
||||
#Possible QEq modes | parameters
|
||||
# QEqAll | no parameters
|
||||
# QEqAllParallel | no parameters
|
||||
# Surface | zlim (QEq only for z>zlim)
|
||||
# BulkFromSlab | zlim1 zlim2 (QEq only for zlim1<z<zlim2)
|
||||
77
examples/USER/smtbq/in.smtbq.Al
Executable file
@ -0,0 +1,77 @@
|
||||
# Al2O3 crystal, qeq on, minimizes, then calculates elastic constants
|
||||
|
||||
variable T_depart equal 300
|
||||
variable dt equal 0.0002
|
||||
|
||||
#Constante
|
||||
variable rac3 equal sqrt(3.0)
|
||||
variable rac1_2 equal sqrt(0.5)
|
||||
variable rac3_2 equal sqrt(1.5)
|
||||
|
||||
#Structure
|
||||
variable a equal 4.05
|
||||
|
||||
variable nx equal 10
|
||||
variable ny equal 7
|
||||
variable nz equal 4
|
||||
|
||||
variable bx equal ${a}*${nx}*${rac1_2}
|
||||
variable by equal ${a}*${ny}*${rac3_2}
|
||||
variable bz equal ${a}*${nz}*${rac3}
|
||||
# =======================================================================
|
||||
|
||||
units metal
|
||||
atom_style charge
|
||||
dimension 3
|
||||
boundary p p p
|
||||
|
||||
|
||||
lattice sc 1.0
|
||||
region box_vide prism 0 ${bx} 0 ${by} 0 ${bz} 0.0 0.0 0.0
|
||||
create_box 1 box_vide
|
||||
|
||||
# Aluminium atoms z = [111]
|
||||
lattice custom ${a} a1 ${rac1_2} 0.0 0.0 &
|
||||
a2 0.0 ${rac3_2} 0.0 &
|
||||
a3 0.0 0.0 ${rac3} &
|
||||
basis 0.0 0.0 0.0 &
|
||||
basis 0.5 0.5 0.0 &
|
||||
basis 0.5 0.166666667 0.33333 &
|
||||
basis 0.0 0.666666667 0.33333 &
|
||||
basis 0.0 0.333333333 0.66667 &
|
||||
basis 0.5 0.833333333 0.66667
|
||||
|
||||
create_atoms 1 region box_vide
|
||||
|
||||
mass 1 26.98
|
||||
|
||||
velocity all create ${T_depart} 277387
|
||||
|
||||
pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.Al Al
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 20 delay 0 check yes
|
||||
|
||||
timestep ${dt}
|
||||
|
||||
thermo_style custom step temp press pe ke etotal lx ly lz vol
|
||||
thermo_modify flush yes
|
||||
thermo 1
|
||||
|
||||
|
||||
#dump 5 all custom 1 box_Al.lammpstrj id type q x y z
|
||||
|
||||
fix 3 all nve
|
||||
run 10
|
||||
|
||||
unfix 3
|
||||
#thermo 15
|
||||
fix 1 all box/relax tri 0.0 vmax 0.001
|
||||
minimize 1.0e-8 1.0e-10 1000 10000
|
||||
|
||||
unfix 1
|
||||
thermo 1
|
||||
fix 3 all nve
|
||||
run 10
|
||||
|
||||
55
examples/USER/smtbq/in.smtbq.Al2O3
Executable file
@ -0,0 +1,55 @@
|
||||
# Al2O3 crystal, qeq on, minimizes, then calculates elastic constants
|
||||
|
||||
variable T_depart equal 300
|
||||
|
||||
variable dt equal 0.0002
|
||||
|
||||
# =======================================================================
|
||||
|
||||
units metal
|
||||
atom_style charge
|
||||
dimension 3
|
||||
boundary p p p
|
||||
|
||||
read_data data.Alpha
|
||||
# ^ Orthorombic box of corundum strcture
|
||||
|
||||
mass 1 16.00
|
||||
group Oxy type 1
|
||||
compute chargeOxy Oxy property/atom q
|
||||
compute q_Oxy Oxy reduce ave c_chargeOxy
|
||||
|
||||
mass 2 26.98
|
||||
group Al type 2
|
||||
compute chargeAl Al property/atom q
|
||||
compute q_Al Al reduce ave c_chargeAl
|
||||
|
||||
velocity all create ${T_depart} 277387
|
||||
|
||||
pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.Al2O3 O Al
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 20 delay 0 check yes
|
||||
|
||||
timestep ${dt}
|
||||
|
||||
thermo_style custom step temp press pe ke etotal c_q_Al c_q_Oxy lx ly lz vol
|
||||
thermo_modify flush yes
|
||||
thermo 1
|
||||
|
||||
#dump 5 all custom 500 boxAlpha_alumina.lammpstrj id type q x y z
|
||||
|
||||
fix 3 all nve
|
||||
run 10
|
||||
|
||||
unfix 3
|
||||
thermo 1
|
||||
fix 1 all box/relax tri 0.0 vmax 0.001
|
||||
minimize 1.0e-3 1.0e-5 1000 10000
|
||||
|
||||
unfix 1
|
||||
thermo 1
|
||||
fix 3 all nve
|
||||
run 10
|
||||
|
||||
97
examples/USER/smtbq/in.smtbq.TiO2
Executable file
@ -0,0 +1,97 @@
|
||||
# Al2O3 crystal, qeq on, minimizes, then calculates elastic constants
|
||||
|
||||
variable T_depart equal 300
|
||||
|
||||
variable dt equal 0.0002
|
||||
|
||||
variable a equal 4.5937
|
||||
variable c equal 2.9587
|
||||
variable ca equal ${c}/${a}
|
||||
|
||||
variable nx equal 6
|
||||
variable ny equal 6
|
||||
variable nz equal 11
|
||||
|
||||
variable bx equal ${a}*${nx}
|
||||
variable by equal ${a}*${ny}
|
||||
variable bz equal ${c}*${nz}
|
||||
# =======================================================================
|
||||
|
||||
units metal
|
||||
atom_style charge
|
||||
dimension 3
|
||||
boundary p p p
|
||||
|
||||
|
||||
lattice sc 1.0
|
||||
region box_vide prism 0 ${bx} 0 ${by} 0 ${bz} 0.0 0.0 0.0
|
||||
create_box 2 box_vide
|
||||
|
||||
#lattice sc 1.0
|
||||
#region box_TiO2 block 0 ${bx} 0 ${by} 0 ${bz}
|
||||
|
||||
# titanium atoms
|
||||
lattice custom ${a} origin 0.0 0.0 0.0 &
|
||||
orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 &
|
||||
a1 1.0 0.0 0.0 &
|
||||
a2 0.0 1.0 0.0 &
|
||||
a3 0.0 0.0 ${ca} &
|
||||
basis 0.0 0.0 0.0 &
|
||||
basis 0.5 0.5 0.5
|
||||
|
||||
create_atoms 2 region box_vide
|
||||
|
||||
# Oxygen atoms
|
||||
lattice custom ${a} origin 0.0 0.0 0.0 &
|
||||
orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 &
|
||||
a1 1.0 0.0 0.0 &
|
||||
a2 0.0 1.0 0.0 &
|
||||
a3 0.0 0.0 ${ca} &
|
||||
basis 0.30478 0.30478 0.0 &
|
||||
basis 0.69522 0.69522 0.0 &
|
||||
basis 0.19522 0.80478 0.5 &
|
||||
basis 0.80478 0.19522 0.5
|
||||
|
||||
create_atoms 1 region box_vide
|
||||
|
||||
|
||||
mass 1 16.00
|
||||
group Oxy type 1
|
||||
compute chargeOxy Oxy property/atom q
|
||||
compute q_Oxy Oxy reduce ave c_chargeOxy
|
||||
|
||||
mass 2 47.867
|
||||
group Ti type 2
|
||||
compute chargeTi Ti property/atom q
|
||||
compute q_Ti Ti reduce ave c_chargeTi
|
||||
|
||||
velocity all create ${T_depart} 277387
|
||||
|
||||
pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.TiO2 O Ti
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 20 delay 0 check yes
|
||||
|
||||
timestep ${dt}
|
||||
|
||||
thermo_style custom step temp press pe ke etotal c_q_Ti c_q_Oxy lx ly lz vol
|
||||
thermo_modify flush yes
|
||||
thermo 1
|
||||
|
||||
|
||||
#dump 5 all custom 500 boxAlpha_alumina.lammpstrj id type q x y z
|
||||
|
||||
fix 3 all nve
|
||||
run 10
|
||||
|
||||
unfix 3
|
||||
#thermo 15
|
||||
fix 1 all box/relax tri 0.0 vmax 0.001
|
||||
minimize 1.0e-3 1.0e-5 1000 10000
|
||||
|
||||
unfix 1
|
||||
thermo 1
|
||||
fix 3 all nve
|
||||
run 10
|
||||
|
||||
279
examples/USER/smtbq/log.smtbq.Al
Normal file
@ -0,0 +1,279 @@
|
||||
LAMMPS (23 Oct 2015)
|
||||
# Al2O3 crystal, qeq on, minimizes, then calculates elastic constants
|
||||
|
||||
variable T_depart equal 300
|
||||
variable dt equal 0.0002
|
||||
|
||||
#Constante
|
||||
variable rac3 equal sqrt(3.0)
|
||||
variable rac1_2 equal sqrt(0.5)
|
||||
variable rac3_2 equal sqrt(1.5)
|
||||
|
||||
#Structure
|
||||
variable a equal 4.05
|
||||
|
||||
variable nx equal 10
|
||||
variable ny equal 7
|
||||
variable nz equal 4
|
||||
|
||||
variable bx equal ${a}*${nx}*${rac1_2}
|
||||
variable bx equal 4.05*${nx}*${rac1_2}
|
||||
variable bx equal 4.05*10*${rac1_2}
|
||||
variable bx equal 4.05*10*0.707106781186548
|
||||
variable by equal ${a}*${ny}*${rac3_2}
|
||||
variable by equal 4.05*${ny}*${rac3_2}
|
||||
variable by equal 4.05*7*${rac3_2}
|
||||
variable by equal 4.05*7*1.22474487139159
|
||||
variable bz equal ${a}*${nz}*${rac3}
|
||||
variable bz equal 4.05*${nz}*${rac3}
|
||||
variable bz equal 4.05*4*${rac3}
|
||||
variable bz equal 4.05*4*1.73205080756888
|
||||
# =======================================================================
|
||||
|
||||
units metal
|
||||
atom_style charge
|
||||
dimension 3
|
||||
boundary p p p
|
||||
|
||||
|
||||
lattice sc 1.0
|
||||
Lattice spacing in x,y,z = 1 1 1
|
||||
region box_vide prism 0 ${bx} 0 ${by} 0 ${bz} 0.0 0.0 0.0
|
||||
region box_vide prism 0 28.6378246380552 0 ${by} 0 ${bz} 0.0 0.0 0.0
|
||||
region box_vide prism 0 28.6378246380552 0 34.7215171039516 0 ${bz} 0.0 0.0 0.0
|
||||
region box_vide prism 0 28.6378246380552 0 34.7215171039516 0 28.0592230826159 0.0 0.0 0.0
|
||||
create_box 1 box_vide
|
||||
Created triclinic box = (0 0 0) to (28.6378 34.7215 28.0592) with tilt (0 0 0)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
|
||||
# Aluminium atoms z = [111]
|
||||
lattice custom ${a} a1 ${rac1_2} 0.0 0.0 a2 0.0 ${rac3_2} 0.0 a3 0.0 0.0 ${rac3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 basis 0.5 0.166666667 0.33333 basis 0.0 0.666666667 0.33333 basis 0.0 0.333333333 0.66667 basis 0.5 0.833333333 0.66667
|
||||
lattice custom 4.05 a1 ${rac1_2} 0.0 0.0 a2 0.0 ${rac3_2} 0.0 a3 0.0 0.0 ${rac3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 basis 0.5 0.166666667 0.33333 basis 0.0 0.666666667 0.33333 basis 0.0 0.333333333 0.66667 basis 0.5 0.833333333 0.66667
|
||||
lattice custom 4.05 a1 0.707106781186548 0.0 0.0 a2 0.0 ${rac3_2} 0.0 a3 0.0 0.0 ${rac3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 basis 0.5 0.166666667 0.33333 basis 0.0 0.666666667 0.33333 basis 0.0 0.333333333 0.66667 basis 0.5 0.833333333 0.66667
|
||||
lattice custom 4.05 a1 0.707106781186548 0.0 0.0 a2 0.0 1.22474487139159 0.0 a3 0.0 0.0 ${rac3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 basis 0.5 0.166666667 0.33333 basis 0.0 0.666666667 0.33333 basis 0.0 0.333333333 0.66667 basis 0.5 0.833333333 0.66667
|
||||
lattice custom 4.05 a1 0.707106781186548 0.0 0.0 a2 0.0 1.22474487139159 0.0 a3 0.0 0.0 1.73205080756888 basis 0.0 0.0 0.0 basis 0.5 0.5 0.0 basis 0.5 0.166666667 0.33333 basis 0.0 0.666666667 0.33333 basis 0.0 0.333333333 0.66667 basis 0.5 0.833333333 0.66667
|
||||
Lattice spacing in x,y,z = 2.86378 4.96022 7.01481
|
||||
|
||||
create_atoms 1 region box_vide
|
||||
Created 1680 atoms
|
||||
|
||||
mass 1 26.98
|
||||
|
||||
velocity all create ${T_depart} 277387
|
||||
velocity all create 300 277387
|
||||
|
||||
pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.Al Al
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 20 delay 0 check yes
|
||||
|
||||
timestep ${dt}
|
||||
timestep 0.0002
|
||||
|
||||
thermo_style custom step temp press pe ke etotal lx ly lz vol
|
||||
thermo_modify flush yes
|
||||
thermo 1
|
||||
|
||||
|
||||
#dump 5 all custom 1 box_Al.lammpstrj id type q x y z
|
||||
|
||||
fix 3 all nve
|
||||
run 10
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 20 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 11.6714
|
||||
ghost atom cutoff = 11.6714
|
||||
binsize = 5.8357 -> bins = 5 6 5
|
||||
Memory usage per processor = 4.52298 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng Lx Ly Lz Volume
|
||||
0 300 729.26605 -5600.8541 65.108335 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
1 299.98323 729.90439 -5600.8505 65.104695 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
2 299.93288 731.82072 -5600.8395 65.093767 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
3 299.84896 735.01448 -5600.8213 65.075556 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
4 299.7315 739.48472 -5600.7958 65.050064 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
5 299.58053 745.23012 -5600.7631 65.017299 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
6 299.39609 752.24896 -5600.723 64.977269 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
7 299.17822 760.5391 -5600.6757 64.929985 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
8 298.92698 770.098 -5600.6212 64.875459 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
9 298.64244 780.92261 -5600.5595 64.813707 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
10 298.32468 793.00943 -5600.4905 64.744743 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
Loop time of 5.10336 on 1 procs for 10 steps with 1680 atoms
|
||||
|
||||
Performance: 0.034 ns/day, 708.800 hours/ns, 1.959 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 5.1023 | 5.1023 | 5.1023 | 0.0 | 99.98
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00045538 | 0.00045538 | 0.00045538 | 0.0 | 0.01
|
||||
Output | 0.00024509 | 0.00024509 | 0.00024509 | 0.0 | 0.00
|
||||
Modify | 0.00026131 | 0.00026131 | 0.00026131 | 0.0 | 0.01
|
||||
Other | | 0.0001056 | | | 0.00
|
||||
|
||||
Nlocal: 1680 ave 1680 max 1680 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 7518 ave 7518 max 7518 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 638400 ave 638400 max 638400 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 638400
|
||||
Ave neighs/atom = 380
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
unfix 3
|
||||
#thermo 15
|
||||
fix 1 all box/relax tri 0.0 vmax 0.001
|
||||
minimize 1.0e-8 1.0e-10 1000 10000
|
||||
WARNING: Resetting reneighboring criteria during minimization (../min.cpp:168)
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 11.6714
|
||||
ghost atom cutoff = 11.6714
|
||||
binsize = 5.8357 -> bins = 5 6 5
|
||||
Memory usage per processor = 5.64798 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng Lx Ly Lz Volume
|
||||
10 298.32468 793.00943 -5600.4905 64.744743 -5535.7458 28.637825 34.721517 28.059223 27900.653
|
||||
11 298.32468 2483.3228 -5600.5212 64.744743 -5535.7764 28.617938 34.697425 28.039771 27842.617
|
||||
12 298.32468 3102.6624 -5600.6242 64.744743 -5535.8795 28.594201 34.68783 28.048729 27820.715
|
||||
13 298.32468 1681.0688 -5600.6477 64.744743 -5535.903 28.619779 34.708131 28.055945 27869.065
|
||||
14 298.32468 949.90841 -5600.6635 64.744743 -5535.9187 28.648416 34.718691 28.044409 27893.966
|
||||
15 298.32468 2009.1662 -5600.7072 64.744743 -5535.9625 28.652241 34.703261 28.01635 27857.391
|
||||
16 298.32468 2867.1434 -5600.7192 64.744743 -5535.9744 28.626861 34.69005 28.022309 27828.038
|
||||
17 298.32468 2480.3207 -5600.7238 64.744743 -5535.9791 28.618046 34.695106 28.040113 27841.2
|
||||
18 298.32468 2482.4906 -5600.7249 64.744743 -5535.9802 28.614169 34.704237 28.036452 27841.119
|
||||
19 298.32468 2495.6209 -5600.7261 64.744743 -5535.9813 28.616207 34.697481 28.039453 27840.662
|
||||
20 298.32468 2210.2897 -5600.7271 64.744743 -5535.9823 28.620852 34.699678 28.042926 27850.393
|
||||
21 298.32468 2464.137 -5600.734 64.744743 -5535.9893 28.625239 34.687085 28.040022 27841.67
|
||||
22 298.32468 3091.7034 -5600.7471 64.744743 -5536.0024 28.623565 34.674943 28.02983 27820.181
|
||||
23 298.32468 2334.9443 -5600.7598 64.744743 -5536.0151 28.634413 34.684598 28.037298 27845.891
|
||||
24 298.32468 2462.2836 -5600.7767 64.744743 -5536.032 28.615834 34.692433 28.044664 27841.422
|
||||
25 298.32468 2652.08 -5600.7914 64.744743 -5536.0466 28.61528 34.695645 28.035991 27834.85
|
||||
26 298.32468 2365.4126 -5600.7923 64.744743 -5536.0476 28.618526 34.699347 28.039662 27844.623
|
||||
27 298.32468 2334.9429 -5600.7934 64.744743 -5536.0486 28.61826 34.698136 28.041941 27845.656
|
||||
28 298.32468 2501.1598 -5600.7937 64.744743 -5536.0489 28.616356 34.695993 28.039825 27839.982
|
||||
29 298.32468 2506.0962 -5600.794 64.744743 -5536.0493 28.617255 34.699031 28.036317 27839.811
|
||||
30 298.32468 2400.7588 -5600.7942 64.744743 -5536.0495 28.618372 34.698464 28.039299 27843.404
|
||||
31 298.32468 2499.8528 -5600.7945 64.744743 -5536.0497 28.61702 34.69385 28.040945 27840.021
|
||||
32 298.32468 2629.5393 -5600.7967 64.744743 -5536.0519 28.619399 34.691546 28.036003 27835.58
|
||||
33 298.32468 2397.5939 -5600.7973 64.744743 -5536.0526 28.621863 34.69535 28.03848 27843.488
|
||||
34 298.32468 2222.7714 -5600.8007 64.744743 -5536.056 28.609815 34.705091 28.048395 27849.426
|
||||
35 298.32468 2748.5871 -5600.8042 64.744743 -5536.0594 28.600322 34.6998 28.043876 27831.457
|
||||
36 298.32468 2661.1018 -5600.8166 64.744743 -5536.0719 28.615123 34.696499 28.034947 27834.344
|
||||
37 298.32468 2255.4994 -5600.8185 64.744743 -5536.0737 28.618919 34.702261 28.040497 27848.173
|
||||
38 298.32468 2260.815 -5600.8239 64.744743 -5536.0791 28.614993 34.70246 28.043972 27847.962
|
||||
39 298.32468 2549.2876 -5600.8248 64.744743 -5536.0801 28.612892 34.697988 28.039725 27838.113
|
||||
40 298.32468 2488.3825 -5600.8266 64.744743 -5536.0819 28.623347 34.695524 28.033557 27840.182
|
||||
41 298.32468 2400.9714 -5600.8283 64.744743 -5536.0835 28.619176 34.695733 28.040468 27843.155
|
||||
42 298.32468 2496.6566 -5600.8284 64.744743 -5536.0837 28.617629 34.694692 28.039536 27839.89
|
||||
43 298.32468 2486.2773 -5600.8285 64.744743 -5536.0838 28.617585 34.697413 28.037736 27840.243
|
||||
44 298.32468 2446.3916 -5600.8287 64.744743 -5536.0839 28.617115 34.696389 28.040393 27841.603
|
||||
45 298.32468 2547.2311 -5600.8288 64.744743 -5536.0841 28.615267 34.694882 28.039956 27838.161
|
||||
46 298.32468 2479.9982 -5600.8321 64.744743 -5536.0874 28.603008 34.71581 28.037344 27840.427
|
||||
47 298.32468 2449.645 -5600.8444 64.744743 -5536.0997 28.612743 34.683541 28.054837 27841.375
|
||||
48 298.32468 2682.7109 -5600.8695 64.744743 -5536.1248 28.617414 34.683477 28.042139 27833.265
|
||||
49 298.32468 2350.1707 -5600.8711 64.744743 -5536.1263 28.619236 34.694213 28.043092 27844.6
|
||||
50 298.32468 2486.1481 -5600.8719 64.744743 -5536.1271 28.615167 34.699435 28.038181 27839.955
|
||||
51 298.32468 2498.3384 -5600.8721 64.744743 -5536.1274 28.616069 34.696071 28.039596 27839.537
|
||||
52 298.32468 2443.1247 -5600.8722 64.744743 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
Loop time of 36.9389 on 1 procs for 42 steps with 1680 atoms
|
||||
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
-5600.49050006 -5600.87213771 -5600.87218615
|
||||
Force two-norm initial, final = 50.879 1.39888
|
||||
Force max component initial, final = 29.3783 0.749036
|
||||
Final line search alpha, max atom move = 0.0013373 0.00100168
|
||||
Iterations, force evaluations = 42 71
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 36.918 | 36.918 | 36.918 | 0.0 | 99.94
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.0033035 | 0.0033035 | 0.0033035 | 0.0 | 0.01
|
||||
Output | 0.0011785 | 0.0011785 | 0.0011785 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.01603 | | | 0.04
|
||||
|
||||
Nlocal: 1680 ave 1680 max 1680 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 7518 ave 7518 max 7518 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 638400 ave 638400 max 638400 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 638400
|
||||
Ave neighs/atom = 380
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
unfix 1
|
||||
thermo 1
|
||||
fix 3 all nve
|
||||
run 10
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 20 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 11.6714
|
||||
ghost atom cutoff = 11.6714
|
||||
binsize = 5.8357 -> bins = 5 6 5
|
||||
Memory usage per processor = 4.52298 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng Lx Ly Lz Volume
|
||||
52 298.32468 2443.1247 -5600.8722 64.744743 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
53 298.28341 2444.4342 -5600.8632 64.735788 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
54 298.20852 2447.019 -5600.847 64.719534 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
55 298.1 2450.8786 -5600.8234 64.695982 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
56 297.95788 2456.0119 -5600.7926 64.665139 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
57 297.7822 2462.4173 -5600.7545 64.62701 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
58 297.57298 2470.0928 -5600.709 64.581604 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
59 297.33028 2479.0363 -5600.6564 64.528932 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
60 297.05416 2489.245 -5600.5964 64.469006 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
61 296.74469 2500.7159 -5600.5293 64.401842 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
62 296.40194 2513.4457 -5600.4549 64.327455 -5536.1274 28.617616 34.696737 28.039439 27841.421
|
||||
Loop time of 5.13028 on 1 procs for 10 steps with 1680 atoms
|
||||
|
||||
Performance: 0.034 ns/day, 712.539 hours/ns, 1.949 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 5.1292 | 5.1292 | 5.1292 | 0.0 | 99.98
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00045729 | 0.00045729 | 0.00045729 | 0.0 | 0.01
|
||||
Output | 0.00024509 | 0.00024509 | 0.00024509 | 0.0 | 0.00
|
||||
Modify | 0.00026488 | 0.00026488 | 0.00026488 | 0.0 | 0.01
|
||||
Other | | 0.0001016 | | | 0.00
|
||||
|
||||
Nlocal: 1680 ave 1680 max 1680 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 7518 ave 7518 max 7518 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 638400 ave 638400 max 638400 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 638400
|
||||
Ave neighs/atom = 380
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
Total wall time: 0:00:49
|
||||
210
examples/USER/smtbq/log.smtbq.Al2O3
Normal file
@ -0,0 +1,210 @@
|
||||
LAMMPS (23 Oct 2015)
|
||||
# Al2O3 crystal, qeq on, minimizes, then calculates elastic constants
|
||||
|
||||
variable T_depart equal 300
|
||||
|
||||
variable dt equal 0.0002
|
||||
|
||||
# =======================================================================
|
||||
|
||||
units metal
|
||||
atom_style charge
|
||||
dimension 3
|
||||
boundary p p p
|
||||
|
||||
read_data data.Alpha
|
||||
triclinic box = (0 0 0) to (23.769 24.7015 25.9564) with tilt (0 0 0)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
1800 atoms
|
||||
# ^ Orthorombic box of corundum strcture
|
||||
|
||||
mass 1 16.00
|
||||
group Oxy type 1
|
||||
1080 atoms in group Oxy
|
||||
compute chargeOxy Oxy property/atom q
|
||||
compute q_Oxy Oxy reduce ave c_chargeOxy
|
||||
|
||||
mass 2 26.98
|
||||
group Al type 2
|
||||
720 atoms in group Al
|
||||
compute chargeAl Al property/atom q
|
||||
compute q_Al Al reduce ave c_chargeAl
|
||||
|
||||
velocity all create ${T_depart} 277387
|
||||
velocity all create 300 277387
|
||||
|
||||
pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.Al2O3 O Al
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 20 delay 0 check yes
|
||||
|
||||
timestep ${dt}
|
||||
timestep 0.0002
|
||||
|
||||
thermo_style custom step temp press pe ke etotal c_q_Al c_q_Oxy lx ly lz vol
|
||||
thermo_modify flush yes
|
||||
thermo 1
|
||||
|
||||
|
||||
#dump 5 all custom 500 boxAlpha_alumina.lammpstrj id type q x y z
|
||||
|
||||
fix 3 all nve
|
||||
run 10
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 20 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 11.6714
|
||||
ghost atom cutoff = 11.6714
|
||||
binsize = 5.8357 -> bins = 5 5 5
|
||||
Memory usage per processor = 4.12573 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng q_Al q_Oxy Lx Ly Lz Volume
|
||||
0 300 91921.482 -11494.543 69.7617 -11424.781 2.6095997 -1.7397331 23.769 24.7015 25.9564 15239.78
|
||||
1 299.96467 91922.303 -11494.535 69.753485 -11424.781 2.6095996 -1.739733 23.769 24.7015 25.9564 15239.78
|
||||
2 299.75126 91933.246 -11494.485 69.703859 -11424.781 2.6095978 -1.7397318 23.769 24.7015 25.9564 15239.78
|
||||
3 299.36045 91954.835 -11494.394 69.61298 -11424.781 2.6095941 -1.7397294 23.769 24.7015 25.9564 15239.78
|
||||
4 298.79335 91986.343 -11494.262 69.481107 -11424.781 2.6095886 -1.7397257 23.769 24.7015 25.9564 15239.78
|
||||
5 298.05151 92027.62 -11494.09 69.3086 -11424.781 2.6095812 -1.7397208 23.769 24.7015 25.9564 15239.78
|
||||
6 297.13689 92078.615 -11493.877 69.095915 -11424.781 2.6095721 -1.7397147 23.769 24.7015 25.9564 15239.78
|
||||
7 296.05187 92139.141 -11493.625 68.843606 -11424.781 2.6095613 -1.7397075 23.769 24.7015 25.9564 15239.78
|
||||
8 294.79923 92209.15 -11493.334 68.552319 -11424.781 2.6095488 -1.7396992 23.769 24.7015 25.9564 15239.78
|
||||
9 293.38215 92288.12 -11493.004 68.222793 -11424.781 2.6095347 -1.7396898 23.769 24.7015 25.9564 15239.78
|
||||
10 291.80421 92376.81 -11492.637 67.855859 -11424.781 2.6095191 -1.7396794 23.769 24.7015 25.9564 15239.78
|
||||
Loop time of 169.694 on 1 procs for 10 steps with 1800 atoms
|
||||
|
||||
Performance: 0.001 ns/day, 23568.600 hours/ns, 0.059 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 169.69 | 169.69 | 169.69 | 0.0 |100.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00075507 | 0.00075507 | 0.00075507 | 0.0 | 0.00
|
||||
Output | 0.00078607 | 0.00078607 | 0.00078607 | 0.0 | 0.00
|
||||
Modify | 0.00034666 | 0.00034666 | 0.00034666 | 0.0 | 0.00
|
||||
Other | | 0.0001752 | | | 0.00
|
||||
|
||||
Nlocal: 1800 ave 1800 max 1800 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11490 ave 11490 max 11490 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 1.4472e+06 ave 1.4472e+06 max 1.4472e+06 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1447200
|
||||
Ave neighs/atom = 804
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
unfix 3
|
||||
thermo 1
|
||||
fix 1 all box/relax tri 0.0 vmax 0.001
|
||||
minimize 1.0e-3 1.0e-5 1000 10000
|
||||
WARNING: Resetting reneighboring criteria during minimization (../min.cpp:168)
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 11.6714
|
||||
ghost atom cutoff = 11.6714
|
||||
binsize = 5.8357 -> bins = 5 5 5
|
||||
Memory usage per processor = 5.50073 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng q_Al q_Oxy Lx Ly Lz Volume
|
||||
10 291.80421 92376.81 -11492.637 67.855859 -11424.781 2.6095191 -1.7396794 23.769 24.7015 25.9564 15239.78
|
||||
11 291.80421 84416.246 -11494.722 67.855859 -11426.866 2.6087748 -1.7391832 23.787835 24.721015 25.982356 15279.17
|
||||
Loop time of 25.4145 on 1 procs for 1 steps with 1800 atoms
|
||||
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
-11492.6369832 -11492.6369832 -11494.7221261
|
||||
Force two-norm initial, final = 1453.27 1325.26
|
||||
Force max component initial, final = 968.201 892.249
|
||||
Final line search alpha, max atom move = 1.03284e-06 0.000921553
|
||||
Iterations, force evaluations = 1 1
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 25.414 | 25.414 | 25.414 | -nan |100.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00013995 | 0.00013995 | 0.00013995 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.0005064 | | | 0.00
|
||||
|
||||
Nlocal: 1800 ave 1800 max 1800 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11408 ave 11408 max 11408 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 1.44456e+06 ave 1.44456e+06 max 1.44456e+06 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1444562
|
||||
Ave neighs/atom = 802.534
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
unfix 1
|
||||
thermo 1
|
||||
fix 3 all nve
|
||||
run 10
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 20 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 11.6714
|
||||
ghost atom cutoff = 11.6714
|
||||
binsize = 5.8357 -> bins = 5 5 5
|
||||
Memory usage per processor = 4.37573 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng q_Al q_Oxy Lx Ly Lz Volume
|
||||
11 291.80421 84416.246 -11494.722 67.855859 -11426.866 2.6087748 -1.7391832 23.787835 24.721015 25.982356 15279.17
|
||||
12 290.08293 84514.767 -11494.322 67.455594 -11426.866 2.6087578 -1.7391718 23.787835 24.721015 25.982356 15279.17
|
||||
13 288.21041 84622.406 -11493.886 67.020161 -11426.866 2.6087394 -1.7391596 23.787835 24.721015 25.982356 15279.17
|
||||
14 286.19128 84738.689 -11493.417 66.550634 -11426.866 2.6087199 -1.7391466 23.787835 24.721015 25.982356 15279.17
|
||||
15 284.03049 84864.242 -11492.914 66.048166 -11426.866 2.6086993 -1.7391329 23.787835 24.721015 25.982356 15279.17
|
||||
16 281.73331 84998.125 -11492.38 65.513983 -11426.866 2.6086776 -1.7391184 23.787835 24.721015 25.982356 15279.17
|
||||
17 279.30534 85140.233 -11491.815 64.949384 -11426.866 2.6086551 -1.7391034 23.787835 24.721015 25.982356 15279.17
|
||||
18 276.75244 85290.405 -11491.221 64.355737 -11426.866 2.6086319 -1.7390879 23.787835 24.721015 25.982356 15279.17
|
||||
19 274.08079 85448.449 -11490.6 63.734472 -11426.866 2.608608 -1.739072 23.787835 24.721015 25.982356 15279.17
|
||||
20 271.29678 85614.064 -11489.953 63.087082 -11426.866 2.6085837 -1.7390558 23.787835 24.721015 25.982356 15279.17
|
||||
21 268.40708 85786.72 -11489.281 62.415114 -11426.865 2.608559 -1.7390393 23.787835 24.721015 25.982356 15279.17
|
||||
Loop time of 170.699 on 1 procs for 10 steps with 1800 atoms
|
||||
|
||||
Performance: 0.001 ns/day, 23708.143 hours/ns, 0.059 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 170.7 | 170.7 | 170.7 | 0.0 |100.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00068879 | 0.00068879 | 0.00068879 | 0.0 | 0.00
|
||||
Output | 0.0008359 | 0.0008359 | 0.0008359 | 0.0 | 0.00
|
||||
Modify | 0.00031424 | 0.00031424 | 0.00031424 | 0.0 | 0.00
|
||||
Other | | 0.0001593 | | | 0.00
|
||||
|
||||
Nlocal: 1800 ave 1800 max 1800 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11222 ave 11222 max 11222 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 1.44126e+06 ave 1.44126e+06 max 1.44126e+06 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1441262
|
||||
Ave neighs/atom = 800.701
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
Total wall time: 0:06:42
|
||||
255
examples/USER/smtbq/log.smtbq.TiO2
Normal file
@ -0,0 +1,255 @@
|
||||
LAMMPS (23 Oct 2015)
|
||||
# Al2O3 crystal, qeq on, minimizes, then calculates elastic constants
|
||||
|
||||
variable T_depart equal 300
|
||||
|
||||
variable dt equal 0.0002
|
||||
|
||||
variable a equal 4.5937
|
||||
variable c equal 2.9587
|
||||
variable ca equal ${c}/${a}
|
||||
variable ca equal 2.9587/${a}
|
||||
variable ca equal 2.9587/4.5937
|
||||
|
||||
variable nx equal 6
|
||||
variable ny equal 6
|
||||
variable nz equal 11
|
||||
|
||||
variable bx equal ${a}*${nx}
|
||||
variable bx equal 4.5937*${nx}
|
||||
variable bx equal 4.5937*6
|
||||
variable by equal ${a}*${ny}
|
||||
variable by equal 4.5937*${ny}
|
||||
variable by equal 4.5937*6
|
||||
variable bz equal ${c}*${nz}
|
||||
variable bz equal 2.9587*${nz}
|
||||
variable bz equal 2.9587*11
|
||||
# =======================================================================
|
||||
|
||||
units metal
|
||||
atom_style charge
|
||||
dimension 3
|
||||
boundary p p p
|
||||
|
||||
|
||||
lattice sc 1.0
|
||||
Lattice spacing in x,y,z = 1 1 1
|
||||
region box_vide prism 0 ${bx} 0 ${by} 0 ${bz} 0.0 0.0 0.0
|
||||
region box_vide prism 0 27.5622 0 ${by} 0 ${bz} 0.0 0.0 0.0
|
||||
region box_vide prism 0 27.5622 0 27.5622 0 ${bz} 0.0 0.0 0.0
|
||||
region box_vide prism 0 27.5622 0 27.5622 0 32.5457 0.0 0.0 0.0
|
||||
create_box 2 box_vide
|
||||
Created triclinic box = (0 0 0) to (27.5622 27.5622 32.5457) with tilt (0 0 0)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
|
||||
#lattice sc 1.0
|
||||
#region box_TiO2 block 0 ${bx} 0 ${by} 0 ${bz}
|
||||
|
||||
# titanium atoms
|
||||
lattice custom ${a} origin 0.0 0.0 0.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 ${ca} basis 0.0 0.0 0.0 basis 0.5 0.5 0.5
|
||||
lattice custom 4.5937 origin 0.0 0.0 0.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 ${ca} basis 0.0 0.0 0.0 basis 0.5 0.5 0.5
|
||||
lattice custom 4.5937 origin 0.0 0.0 0.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 0.644077758669482 basis 0.0 0.0 0.0 basis 0.5 0.5 0.5
|
||||
Lattice spacing in x,y,z = 4.5937 4.5937 2.9587
|
||||
|
||||
create_atoms 2 region box_vide
|
||||
Created 792 atoms
|
||||
|
||||
# Oxygen atoms
|
||||
lattice custom ${a} origin 0.0 0.0 0.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 ${ca} basis 0.30478 0.30478 0.0 basis 0.69522 0.69522 0.0 basis 0.19522 0.80478 0.5 basis 0.80478 0.19522 0.5
|
||||
lattice custom 4.5937 origin 0.0 0.0 0.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 ${ca} basis 0.30478 0.30478 0.0 basis 0.69522 0.69522 0.0 basis 0.19522 0.80478 0.5 basis 0.80478 0.19522 0.5
|
||||
lattice custom 4.5937 origin 0.0 0.0 0.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 0.644077758669482 basis 0.30478 0.30478 0.0 basis 0.69522 0.69522 0.0 basis 0.19522 0.80478 0.5 basis 0.80478 0.19522 0.5
|
||||
Lattice spacing in x,y,z = 4.5937 4.5937 2.9587
|
||||
|
||||
create_atoms 1 region box_vide
|
||||
Created 1584 atoms
|
||||
|
||||
|
||||
mass 1 16.00
|
||||
group Oxy type 1
|
||||
1584 atoms in group Oxy
|
||||
compute chargeOxy Oxy property/atom q
|
||||
compute q_Oxy Oxy reduce ave c_chargeOxy
|
||||
|
||||
mass 2 47.867
|
||||
group Ti type 2
|
||||
792 atoms in group Ti
|
||||
compute chargeTi Ti property/atom q
|
||||
compute q_Ti Ti reduce ave c_chargeTi
|
||||
|
||||
velocity all create ${T_depart} 277387
|
||||
velocity all create 300 277387
|
||||
|
||||
pair_style smtbq
|
||||
pair_coeff * * ffield.smtbq.TiO2 O Ti
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 20 delay 0 check yes
|
||||
|
||||
timestep ${dt}
|
||||
timestep 0.0002
|
||||
|
||||
thermo_style custom step temp press pe ke etotal c_q_Ti c_q_Oxy lx ly lz vol
|
||||
thermo_modify flush yes
|
||||
thermo 1
|
||||
|
||||
|
||||
#dump 5 all custom 500 boxAlpha_alumina.lammpstrj id type q x y z
|
||||
|
||||
fix 3 all nve
|
||||
run 10
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 20 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12.6744
|
||||
ghost atom cutoff = 12.6744
|
||||
binsize = 6.3372 -> bins = 5 5 6
|
||||
Memory usage per processor = 4.77264 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng q_Ti q_Oxy Lx Ly Lz Volume
|
||||
0 300 44365.066 -15815.239 92.097853 -15723.142 2.5521775 -1.2760888 27.5622 27.5622 32.5457 24724.15
|
||||
1 299.90455 44375.373 -15815.21 92.06855 -15723.142 2.552178 -1.276089 27.5622 27.5622 32.5457 24724.15
|
||||
2 299.63739 44392.241 -15815.128 91.986534 -15723.142 2.5521725 -1.2760863 27.5622 27.5622 32.5457 24724.15
|
||||
3 299.19899 44415.606 -15814.994 91.85195 -15723.142 2.5521616 -1.2760808 27.5622 27.5622 32.5457 24724.15
|
||||
4 298.59012 44445.345 -15814.808 91.665031 -15723.143 2.5521454 -1.2760727 27.5622 27.5622 32.5457 24724.15
|
||||
5 297.81185 44481.382 -15814.57 91.426105 -15723.144 2.5521238 -1.2760619 27.5622 27.5622 32.5457 24724.15
|
||||
6 296.86552 44523.683 -15814.28 91.135592 -15723.144 2.5520969 -1.2760484 27.5622 27.5622 32.5457 24724.15
|
||||
7 295.75281 44572.175 -15813.939 90.793996 -15723.145 2.5520648 -1.2760324 27.5622 27.5622 32.5457 24724.15
|
||||
8 294.47564 44626.778 -15813.548 90.401913 -15723.147 2.5520274 -1.2760137 27.5622 27.5622 32.5457 24724.15
|
||||
9 293.03623 44687.401 -15813.108 89.960027 -15723.148 2.5519849 -1.2759925 27.5622 27.5622 32.5457 24724.15
|
||||
10 291.43711 44753.932 -15812.618 89.469107 -15723.149 2.5519374 -1.2759687 27.5622 27.5622 32.5457 24724.15
|
||||
Loop time of 570.52 on 1 procs for 10 steps with 2376 atoms
|
||||
|
||||
Performance: 0.000 ns/day, 79238.948 hours/ns, 0.018 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 570.52 | 570.52 | 570.52 | 0.0 |100.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00087428 | 0.00087428 | 0.00087428 | 0.0 | 0.00
|
||||
Output | 0.00091386 | 0.00091386 | 0.00091386 | 0.0 | 0.00
|
||||
Modify | 0.00045085 | 0.00045085 | 0.00045085 | 0.0 | 0.00
|
||||
Other | | 0.0001979 | | | 0.00
|
||||
|
||||
Nlocal: 2376 ave 2376 max 2376 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 13138 ave 13138 max 13138 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 1.9705e+06 ave 1.9705e+06 max 1.9705e+06 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1970496
|
||||
Ave neighs/atom = 829.333
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
unfix 3
|
||||
#thermo 15
|
||||
fix 1 all box/relax tri 0.0 vmax 0.001
|
||||
minimize 1.0e-3 1.0e-5 1000 10000
|
||||
WARNING: Resetting reneighboring criteria during minimization (../min.cpp:168)
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12.6744
|
||||
ghost atom cutoff = 12.6744
|
||||
binsize = 6.3372 -> bins = 5 5 6
|
||||
Memory usage per processor = 6.14764 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng q_Ti q_Oxy Lx Ly Lz Volume
|
||||
10 291.43711 44753.932 -15812.618 89.469107 -15723.149 2.5519374 -1.2759687 27.5622 27.5622 32.5457 24724.15
|
||||
11 291.43711 39000.467 -15814.109 89.469107 -15724.639 2.5514249 -1.2757124 27.582771 27.582775 32.578246 24785.834
|
||||
Loop time of 80.5411 on 1 procs for 1 steps with 2376 atoms
|
||||
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
-15812.6183471 -15812.6183471 -15814.1085593
|
||||
Force two-norm initial, final = 1104.2 951.386
|
||||
Force max component initial, final = 759.352 657.815
|
||||
Final line search alpha, max atom move = 1.31691e-06 0.000866285
|
||||
Iterations, force evaluations = 1 1
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 80.54 | 80.54 | 80.54 | 0.0 |100.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00016761 | 0.00016761 | 0.00016761 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.0006053 | | | 0.00
|
||||
|
||||
Nlocal: 2376 ave 2376 max 2376 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 13138 ave 13138 max 13138 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 1.96864e+06 ave 1.96864e+06 max 1.96864e+06 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1968636
|
||||
Ave neighs/atom = 828.551
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
unfix 1
|
||||
thermo 1
|
||||
fix 3 all nve
|
||||
run 10
|
||||
Neighbor list info ...
|
||||
1 neighbor list requests
|
||||
update every 20 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12.6744
|
||||
ghost atom cutoff = 12.6744
|
||||
binsize = 6.3372 -> bins = 5 5 6
|
||||
Memory usage per processor = 5.02264 Mbytes
|
||||
Step Temp Press PotEng KinEng TotEng q_Ti q_Oxy Lx Ly Lz Volume
|
||||
11 291.43711 39000.467 -15814.109 89.469107 -15724.639 2.5514249 -1.2757124 27.582771 27.582775 32.578246 24785.834
|
||||
12 289.69465 39072.309 -15813.575 88.934185 -15724.641 2.551372 -1.275686 27.582771 27.582775 32.578246 24785.834
|
||||
13 287.79928 39149.855 -15812.994 88.352321 -15724.642 2.5513146 -1.2756573 27.582771 27.582775 32.578246 24785.834
|
||||
14 285.75427 39232.968 -15812.368 87.724515 -15724.644 2.5512525 -1.2756262 27.582771 27.582775 32.578246 24785.834
|
||||
15 283.56312 39321.472 -15811.697 87.05185 -15724.645 2.5511856 -1.2755928 27.582771 27.582775 32.578246 24785.834
|
||||
16 281.22962 39415.185 -15810.983 86.335481 -15724.647 2.5511143 -1.2755571 27.582771 27.582775 32.578246 24785.834
|
||||
17 278.75777 39513.921 -15810.226 85.57664 -15724.649 2.5510384 -1.2755192 27.582771 27.582775 32.578246 24785.834
|
||||
18 276.15182 39617.471 -15809.428 84.776632 -15724.651 2.5509583 -1.2754791 27.582771 27.582775 32.578246 24785.834
|
||||
19 273.41625 39725.622 -15808.591 83.936831 -15724.654 2.5508739 -1.275437 27.582771 27.582775 32.578246 24785.834
|
||||
20 270.55575 39838.144 -15807.715 83.058679 -15724.656 2.5507855 -1.2753928 27.582771 27.582775 32.578246 24785.834
|
||||
21 267.57523 39954.804 -15806.802 82.14368 -15724.659 2.5506932 -1.2753466 27.582771 27.582775 32.578246 24785.834
|
||||
Loop time of 606.774 on 1 procs for 10 steps with 2376 atoms
|
||||
|
||||
Performance: 0.000 ns/day, 84274.222 hours/ns, 0.016 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 606.77 | 606.77 | 606.77 | 0.0 |100.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.00085855 | 0.00085855 | 0.00085855 | 0.0 | 0.00
|
||||
Output | 0.00087833 | 0.00087833 | 0.00087833 | 0.0 | 0.00
|
||||
Modify | 0.00041723 | 0.00041723 | 0.00041723 | 0.0 | 0.00
|
||||
Other | | 0.0001888 | | | 0.00
|
||||
|
||||
Nlocal: 2376 ave 2376 max 2376 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 13138 ave 13138 max 13138 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 1.96049e+06 ave 1.96049e+06 max 1.96049e+06 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1960492
|
||||
Ave neighs/atom = 825.123
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
|
||||
Total wall time: 0:23:48
|
||||
@ -89,9 +89,11 @@ lcbop LCBOP long-range bond-order potential
|
||||
meam modified EAM (MEAM) library and individual elements/alloys
|
||||
meam.spline modified EAM (MEAM) spline potential
|
||||
meam.sw.spline modified EAM (MEAM) Stillinger-Weber spline potential
|
||||
mgpt model generalized pseudopotential theory (MGPT) potential
|
||||
nb3b.harmonic nonbonded 3-body harmonic potential
|
||||
poly polymorphic 3-body potential
|
||||
reax ReaxFF potential (see README.reax for more info)
|
||||
smtbq second moment tight binding QEq (SMTBQ) potential
|
||||
snap SNAP potential
|
||||
snapcoeff SNAP potential
|
||||
snapparam SNAP potential
|
||||
|
||||
34
potentials/ffield.smtbq.Al
Executable file
@ -0,0 +1,34 @@
|
||||
# DATE: 2015-10-22 CONTRIBUTOR: Nicolas Salles, nsalles@laas.fr CITATION: N. Salles, O. Politano, E. Amzallag and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
# SMTBQ parameter for Al-Al interaction.
|
||||
# Edited by N. Salles Univ. Bourgogne and E. Maras from Aalto Univ.
|
||||
# year: 2014
|
||||
# =========================================================================
|
||||
' Nombre.de.type.d.atome..........:' 1
|
||||
' ====== atomic parameters ======= '
|
||||
' Cation.de.l.oxyde..Stoechio.....:' 'Al' 1
|
||||
' Qform.....masse.................:' 3.0 26.98
|
||||
' Param.QEq.(ne,.Chi,.J,.R_eff)...:' 3 1.19258 11.05345 0.57701
|
||||
' Nbre.d.etats.partage.par.cation.:' 3
|
||||
' ===== potential Parameter ======'
|
||||
' Atom1..atom2..potential..mode....' 'Al' 'Al' 'second_moment' 'metal'
|
||||
' Potentiel.Cat-Ox.(A,.p,.Ksi,.q).:' 0.1221 8.612 1.316 2.516
|
||||
' Pot..Cat-Ox.(rc1,.rc2,.r0).Iota.:' 5.6 7.0 2.863 2.0
|
||||
' ======== Parametre tab ========= '
|
||||
' Rcoul...........................:' 11.1714
|
||||
' rmin...dr.......................:' 1.18845 0.001
|
||||
' ======== IFQM Parameter ======== '
|
||||
' Frenquency.Q.resolution..........' 0
|
||||
' loopmax.-.precision..............' 5000 0.0002
|
||||
' ==== Coordination parameters ===='
|
||||
' .r1n................r2n..........' 2.5 3.2
|
||||
' ========== QInitMode ========= '
|
||||
' QInitMode....QInit(if.needed)....' 'false' 0.0
|
||||
' ======== Mode for QEq ======== '
|
||||
' mode(see.end.of.this.file.)......' 'QEqAllParallel'
|
||||
' parameters.for.mode..............'
|
||||
' ========== Verbose ============ '
|
||||
' Verbose(true.or.false)...........' 'false'
|
||||
' Print.Energy.components..........' 'false' 300.0
|
||||
' Print.electroneg...components....' 'false' 300.0
|
||||
# =========================== END's parameters =========================
|
||||
|
||||
56
potentials/ffield.smtbq.Al2O3
Executable file
@ -0,0 +1,56 @@
|
||||
# DATE: 2015-10-22 CONTRIBUTOR: Nicolas Salles, nsalles@laas.fr CITATION: N. Salles, O. Politano, E. Amzallag and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
# SMTBQ parameter for AlO interaction with a limit length 'rc2sm=dc2**2'.
|
||||
# Edited by N. Salles from Univ Bourgogne and E. Maras from Aalto Univ.
|
||||
#
|
||||
# Presentation atom : nature
|
||||
# q, qmin, qmax, masse
|
||||
# parameter QEq : Chi, J, R_eff
|
||||
# Parameter SM : A, p, Ksi, q
|
||||
# CutOff SM : dc1, dc2, r0
|
||||
# =========================================================================
|
||||
# -------------------------- Begin's parameters ---------------------------
|
||||
' Number.of.atoms.type............:' 2
|
||||
' ====== atomic parameters ======= '
|
||||
' 1st.element.(Oxygen).Stoechio...:' 'O' 3
|
||||
' Qform.....mass..................:' -2.0 16.00
|
||||
' Param.QEq.(ne,.Chi0,.JiO).......:' 2 6.57 10.22
|
||||
' coordBB.coordB.coordS.rBB.rB.rS.:' 6. 4. 3.00 0.529 0.529 0.529
|
||||
' Number.of.shared.state.by.ions..:' 3
|
||||
' -------------------------------- '
|
||||
' 2nd.element.(metal).Stoechio....:' 'Al' 2
|
||||
' Qform.....mass..................:' 3.0 26.98
|
||||
' Param.QEq.(ne,.Chi0,.Ji0,.R_eff):' 3 1.19009 11.1903 0.56619
|
||||
' Number.of.shared.state.by.ions..:' 4
|
||||
' ===== potential Parameter ======'
|
||||
' Atom1..atom2..potential..mode....' 'Al' 'O' 'second_moment' 'oxide'
|
||||
' Pot.CatOx.(A,.p,.Ksi(ref=O),.q).:' 0.18176 8.80041 0.26044 1.58851
|
||||
' Pot..Cat-Ox.(rc1,.rc2,.r0)......:' 4. 5.6 1.91
|
||||
' -------------------------------- '
|
||||
' atom1..atom2..potential..........' 'O' 'O' 'buck'
|
||||
' Potentiel.O-O...(C,.Rho)........:' 580.440 0.3540
|
||||
' ======== Parametre tab ========= '
|
||||
' Rcoul=a*rc(SMASH)...............:' 11.1714
|
||||
' rmin...dr.......................:' 1.18845 0.001
|
||||
' ======== IFQM Parameter ======== '
|
||||
' Nevery.charge.calculation........' 1
|
||||
' loopmax....precision.............' 7000 0.000001
|
||||
' ==== Coordination parameters ===='
|
||||
' .r1n................r2n..........' 2.5 3.2
|
||||
' ========== QInitMode ========= '
|
||||
' QInitMode....QInit(if.needed)....' 'false' -1.8
|
||||
' ======== Mode for QEq ======== '
|
||||
' mode(see.end.of.this.file.)......' 'QEqAll'
|
||||
' parameters.for.mode..............'
|
||||
' ========== Verbose ============ '
|
||||
' Verbose(true.or.false)...........' 'false'
|
||||
' Print.Energy.components..........' 'false' 300.0
|
||||
' Print.electroneg...components....' 'false' 300.0
|
||||
# =========================== FIN des parametres =========================
|
||||
|
||||
#Possible QInit modes
|
||||
# true (then initialize all the oxygen charges to QOxInit and set the cation charge in order to keep the charge balance (neutrality of the box)
|
||||
#any other name would lead to either 0 charges or charge read from the lammps atomic position file
|
||||
#Possible QEq modes | parameters
|
||||
# QEqAll | no parameters
|
||||
# QEqAllParallel | no parameters
|
||||
# Surface | zlim (QEq only for z>zlim)
|
||||
53
potentials/ffield.smtbq.TiO2
Executable file
@ -0,0 +1,53 @@
|
||||
# DATE: 2015-10-22 CONTRIBUTOR: Nicolas Salles, nsalles@laas.fr CITATION: N. Salles, O. Politano, E. Amzallag and R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189
|
||||
# ========================================================================
|
||||
# SMTBQ parameter for Ti-O interaction with a limit length 'rc2sm=dc2**2'.
|
||||
# Edited by N. Salles from Univ Bourgogne and E. Maras from Aalto Univ
|
||||
# september 2014
|
||||
# ========================================================================
|
||||
' Number.of.atoms.type............:' 2
|
||||
' ====== atomic parameters ======= '
|
||||
' 1st.element.(Oxygen).Stoechio...:' 'O' 2
|
||||
' Qform.....mass..................:' -2.0 16.00
|
||||
' Param.QEq.(ne,.Chi0,.JiO).......:' 2 6.57 10.22
|
||||
' coordBB.coordB.coordS.rBB.rB.rS.:' 6. 3. 2.00 0.52 0.54348 0.58
|
||||
' Number.of.shared.state.by.ions..:' 3
|
||||
' -------------------------------- '
|
||||
' 2nd.element.(metal).Stoechio....:' 'Ti' 1
|
||||
' Qform.....mass..................:' 4.0 26.98
|
||||
' Param.QEq.(nq,.Chi0,.Ji0,.R_eff):' 3 0.00 10.572 0.734
|
||||
' Number.of.shared.state.by.ions..:' 5
|
||||
' ===== potential Parameter ======'
|
||||
' Atom1..atom2..potential..mode....' 'Ti' 'O' 'second_moment' 'oxide'
|
||||
' Pot.CatOx.(A,.p,.Ksi(ref=O),.q).:' 0.134 12.609 0.5434 2.0965
|
||||
' Pot..Cat-Ox.(rc1,.rc2,.r0)......:' 3.6 6.0 1.95
|
||||
' -------------------------------- '
|
||||
' atom1..atom2..potential..........' 'O' 'O' 'buckPlusAttr'
|
||||
' Potential.O-O...(C,.Rho)........:' 580.440 0.3540
|
||||
' Potential.O-O...(D.B.r1OO.r2OO).:' -20.86 -0.916 1.4 1.8
|
||||
' ======== Tab Parameter ========= '
|
||||
' Rcoul=a*rc(SMASH)...............:' 12.1744
|
||||
' rmin...dr.......................:' 1.0675 0.001
|
||||
' ======== IFQM Parameter ======== '
|
||||
' Nevery.charge.calculation........' 1
|
||||
' loopmax....precision.............' 7000 0.000001
|
||||
' ==== Coordination parameters ===='
|
||||
' .r1n................r2n..........' 2.0 3.5
|
||||
' ========== QInitMode ========= '
|
||||
' QInitMode....QInit(if.needed)....' 'false' -1.0
|
||||
' ======== Mode for QEq ======== '
|
||||
' mode(see.end.of.this.file.)......' 'QEqAll'
|
||||
' parameters.for.mode..............'
|
||||
' ========== Verbose ============ '
|
||||
' Verbose(true.or.false)...........' 'false'
|
||||
' Print.Energy.components..........' 'false' 300.0
|
||||
' Print.electroneg...components....' 'false' 300.0
|
||||
# =========================== END's parameters =========================
|
||||
|
||||
#Possible QInit modes
|
||||
# true (then initialize all the oxygen charges to QOxInit and set the cation charge in order to keep the charge balance (neutrality of the box)
|
||||
#any other name would lead to either 0 charges or charge read from the lammps atomic position file
|
||||
#Possible QEq modes | parameters
|
||||
# QEqAll | no parameters
|
||||
# QEqAllParallel | no parameters
|
||||
# Surface | zlim (QEq only for z>zlim)
|
||||
# BulkFromSlab | zlim1 zlim2 (QEq only for zlim1<z<zlim2)
|
||||
@ -48,9 +48,9 @@ PACKAGE = asphere body class2 colloid compress coreshell dipole fld gpu \
|
||||
|
||||
PACKUSER = user-atc user-awpmd user-cg-cmm user-colvars user-cuda \
|
||||
user-diffraction user-drude user-eff user-fep user-h5md \
|
||||
user-intel user-lb user-misc user-molfile user-omp user-phonon \
|
||||
user-qmmm user-qtb user-quip user-reaxc user-smd user-sph \
|
||||
user-tally
|
||||
user-intel user-lb user-mgpt \
|
||||
user-misc user-molfile user-omp user-phonon user-qmmm user-qtb \
|
||||
user-quip user-reaxc user-smd user-smtbq user-sph user-tally
|
||||
|
||||
PACKLIB = compress gpu kim kokkos meam mpiio poems python voronoi \
|
||||
user-atc user-awpmd user-colvars user-cuda user-h5md user-intel \
|
||||
|
||||
33
src/USER-MGPT/README
Normal file
@ -0,0 +1,33 @@
|
||||
This package contains a fast implementation for LAMMPS of quantum-based
|
||||
MGPT multi-ion potentials. The MGPT or model GPT method derives from
|
||||
first-principles DFT-based generalized pseudopotential theory (GPT)
|
||||
through a series of systematic approximations valid for mid-period
|
||||
transition metals with nearly half-filled d bands. The MGPT method
|
||||
was originally developed by John Moriarty at Lawrence Livermore
|
||||
National Lab (LLNL).
|
||||
|
||||
In the general matrix representation of MGPT, which can also be applied
|
||||
to f-band actinide metals, the multi-ion potentials are evaluated on the
|
||||
fly during a simulation through d- or f-state matrix multiplication, and
|
||||
the forces that move the ions are determined analytically. The mgpt
|
||||
pair style in this package calculates forces and energies using an
|
||||
optimized matrix-MGPT algorithm due to Tomas Oppelstrup at LLNL.
|
||||
|
||||
See the doc page for the pair_style mgpt command for full details on
|
||||
using this package in LAMMPS. In particular, the user should note that
|
||||
the MGPT potentials are explicitly volume dependent, requiring special
|
||||
attention in their application. Useful example scripts are given in
|
||||
the "examples/USER/mgpt" directory. These scripts show the necessary
|
||||
steps to perform constant-volume calculations and simulations. It is
|
||||
strongly recommended that the user work through and understand these
|
||||
examples before proceeding to more complex simulations.
|
||||
|
||||
Specific MGPT potential data for the transition metals tantalum
|
||||
(Ta4 and Ta6.8x potentials), molybdenum (Mo5.2 potentials), and
|
||||
vanadium (V6.1 potentials) are contained in the LAMMPS "potentials"
|
||||
directory. It is expected that MGPT potentials for additional
|
||||
materials will be added over time.
|
||||
|
||||
The persons who created the USER-MGPT package are Tomas Oppelstrup
|
||||
(oppelstrup2@llnl.gov) and John Moriarty (moriarty2@llnl.gov)
|
||||
Contact them directly if you have any questions.
|
||||
181
src/USER-MGPT/mgpt_bgmul_7.c.h
Normal file
@ -0,0 +1,181 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
//#define TESTING
|
||||
|
||||
#ifdef TESTING
|
||||
|
||||
typedef struct {
|
||||
double x,y;
|
||||
} pair;
|
||||
|
||||
|
||||
#define CPLX pair
|
||||
|
||||
#define __creal my_creal
|
||||
#define __cimag my_cimag
|
||||
#define __lfpd my_lfpd
|
||||
#define __stfpd my_stfpd
|
||||
#define __fxsmul my_fxsmul
|
||||
#define __fxcpmadd my_fxcpmadd
|
||||
|
||||
#else
|
||||
|
||||
#define CPLX double _Complex
|
||||
|
||||
#endif
|
||||
|
||||
static double my_creal(CPLX x) {
|
||||
return ((double *) &x)[0];
|
||||
}
|
||||
static double my_cimag(CPLX x) {
|
||||
return ((double *) &x)[1];
|
||||
}
|
||||
static CPLX my_lfpd(const double *p) {
|
||||
return ((CPLX *) p)[0];
|
||||
}
|
||||
static void my_stfpd(double *p,CPLX x) {
|
||||
((CPLX *) p)[0] = x;
|
||||
}
|
||||
static CPLX my_fxsmul(CPLX x,double a) {
|
||||
double y[2];
|
||||
y[0] = a * my_creal(x);
|
||||
y[1] = a * my_cimag(x);
|
||||
return ((CPLX *) y)[0];
|
||||
}
|
||||
static CPLX my_fxcpmadd(CPLX t,CPLX x,double a) {
|
||||
double y[2];
|
||||
y[0] = my_creal(t) + a * my_creal(x);
|
||||
y[1] = my_cimag(t) + a * my_cimag(x);
|
||||
return ((CPLX *) y)[0];
|
||||
}
|
||||
|
||||
void bgmul_7(double (* restrict Ain)[8],double (* restrict Bin)[8],double (* restrict Cin)[8]) {
|
||||
|
||||
CPLX C1,C2,C3,C4,C5,C6,C7;
|
||||
CPLX A1_01,A1_23,A1_45,A1_67;
|
||||
CPLX A2_23,A2_45,A2_67;
|
||||
CPLX A3_23,A3_45,A3_67;
|
||||
CPLX A4_45,A4_67;
|
||||
CPLX A5_45,A5_67;
|
||||
CPLX A6_67;
|
||||
CPLX A7_67;
|
||||
CPLX Bkj;
|
||||
|
||||
double (* restrict A)[8] = &Ain[-1];
|
||||
double (* restrict B)[8] = &Bin[-1];
|
||||
double (* restrict C)[8] = &Cin[-1];
|
||||
|
||||
|
||||
int j;
|
||||
A1_01 = __lfpd(&A[1][0]); A1_23 = __lfpd(&A[1][2]); A1_45 = __lfpd(&A[1][4]); A1_67 = __lfpd(&A[1][6]);
|
||||
A2_23 = __lfpd(&A[2][2]); A2_45 = __lfpd(&A[2][4]); A2_67 = __lfpd(&A[2][6]);
|
||||
A3_23 = __lfpd(&A[3][2]); A3_45 = __lfpd(&A[3][4]); A3_67 = __lfpd(&A[3][6]);
|
||||
A4_45 = __lfpd(&A[4][4]); A4_67 = __lfpd(&A[4][6]);
|
||||
A5_45 = __lfpd(&A[5][4]); A5_67 = __lfpd(&A[5][6]);
|
||||
A6_67 = __lfpd(&A[6][6]);
|
||||
A7_67 = __lfpd(&A[7][6]);
|
||||
|
||||
for(j = 0; j<7; j+=2) {
|
||||
/* k = 1 */
|
||||
Bkj = __lfpd(&B[1][j]);
|
||||
|
||||
C1 = __fxsmul(Bkj,__cimag(A1_01));
|
||||
C2 = __fxsmul(Bkj,__creal(A1_23));
|
||||
C3 = __fxsmul(Bkj,__cimag(A1_23));
|
||||
C4 = __fxsmul(Bkj,__creal(A1_45));
|
||||
C5 = __fxsmul(Bkj,__cimag(A1_45));
|
||||
C6 = __fxsmul(Bkj,__creal(A1_67));
|
||||
C7 = __fxsmul(Bkj,__cimag(A1_67));
|
||||
|
||||
/* k = 2 */
|
||||
Bkj = __lfpd(&B[2][j]);
|
||||
|
||||
C1 = __fxcpmadd(C1,Bkj,__creal(A1_23));
|
||||
C2 = __fxcpmadd(C2,Bkj,__creal(A2_23));
|
||||
C3 = __fxcpmadd(C3,Bkj,__cimag(A2_23));
|
||||
C4 = __fxcpmadd(C4,Bkj,__creal(A2_45));
|
||||
C5 = __fxcpmadd(C5,Bkj,__cimag(A2_45));
|
||||
C6 = __fxcpmadd(C6,Bkj,__creal(A2_67));
|
||||
C7 = __fxcpmadd(C7,Bkj,__cimag(A2_67));
|
||||
|
||||
/* k = 3 */
|
||||
Bkj = __lfpd(&B[3][j]);
|
||||
|
||||
C1 = __fxcpmadd(C1,Bkj,__cimag(A1_23));
|
||||
C2 = __fxcpmadd(C2,Bkj,__cimag(A2_23));
|
||||
C3 = __fxcpmadd(C3,Bkj,__cimag(A3_23));
|
||||
C4 = __fxcpmadd(C4,Bkj,__creal(A3_45));
|
||||
C5 = __fxcpmadd(C5,Bkj,__cimag(A3_45));
|
||||
C6 = __fxcpmadd(C6,Bkj,__creal(A3_67));
|
||||
C7 = __fxcpmadd(C7,Bkj,__cimag(A3_67));
|
||||
|
||||
/* k = 4 */
|
||||
Bkj = __lfpd(&B[4][j]);
|
||||
|
||||
C1 = __fxcpmadd(C1,Bkj,__creal(A1_45));
|
||||
C2 = __fxcpmadd(C2,Bkj,__creal(A2_45));
|
||||
C3 = __fxcpmadd(C3,Bkj,__creal(A3_45));
|
||||
C4 = __fxcpmadd(C4,Bkj,__creal(A4_45));
|
||||
C5 = __fxcpmadd(C5,Bkj,__cimag(A4_45));
|
||||
C6 = __fxcpmadd(C6,Bkj,__creal(A4_67));
|
||||
C7 = __fxcpmadd(C7,Bkj,__cimag(A4_67));
|
||||
|
||||
/* k = 5 */
|
||||
Bkj = __lfpd(&B[5][j]);
|
||||
|
||||
C1 = __fxcpmadd(C1,Bkj,__cimag(A1_45));
|
||||
C2 = __fxcpmadd(C2,Bkj,__cimag(A2_45));
|
||||
C3 = __fxcpmadd(C3,Bkj,__cimag(A3_45));
|
||||
C4 = __fxcpmadd(C4,Bkj,__cimag(A4_45));
|
||||
C5 = __fxcpmadd(C5,Bkj,__cimag(A5_45));
|
||||
C6 = __fxcpmadd(C6,Bkj,__creal(A5_67));
|
||||
C7 = __fxcpmadd(C7,Bkj,__cimag(A5_67));
|
||||
|
||||
/* k = 6 */
|
||||
Bkj = __lfpd(&B[6][j]);
|
||||
|
||||
C1 = __fxcpmadd(C1,Bkj,__creal(A1_67));
|
||||
C2 = __fxcpmadd(C2,Bkj,__creal(A2_67));
|
||||
C3 = __fxcpmadd(C3,Bkj,__creal(A3_67));
|
||||
C4 = __fxcpmadd(C4,Bkj,__creal(A4_67));
|
||||
C5 = __fxcpmadd(C5,Bkj,__creal(A5_67));
|
||||
C6 = __fxcpmadd(C6,Bkj,__creal(A6_67));
|
||||
C7 = __fxcpmadd(C7,Bkj,__cimag(A6_67));
|
||||
|
||||
/* k = 7 */
|
||||
Bkj = __lfpd(&B[7][j]);
|
||||
|
||||
C1 = __fxcpmadd(C1,Bkj,__cimag(A1_67));
|
||||
C2 = __fxcpmadd(C2,Bkj,__cimag(A2_67));
|
||||
C3 = __fxcpmadd(C3,Bkj,__cimag(A3_67));
|
||||
C4 = __fxcpmadd(C4,Bkj,__cimag(A4_67));
|
||||
C5 = __fxcpmadd(C5,Bkj,__cimag(A5_67));
|
||||
C6 = __fxcpmadd(C6,Bkj,__cimag(A6_67));
|
||||
C7 = __fxcpmadd(C7,Bkj,__cimag(A7_67));
|
||||
|
||||
__stfpd(&C[1][j],C1);
|
||||
__stfpd(&C[2][j],C2);
|
||||
__stfpd(&C[3][j],C3);
|
||||
__stfpd(&C[4][j],C4);
|
||||
__stfpd(&C[5][j],C5);
|
||||
__stfpd(&C[6][j],C6);
|
||||
__stfpd(&C[7][j],C7);
|
||||
}
|
||||
}
|
||||
203
src/USER-MGPT/mgpt_linalg.cpp
Normal file
@ -0,0 +1,203 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "mgpt_linalg.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
#include <cassert>
|
||||
|
||||
#define restrict __restrict__
|
||||
|
||||
#ifdef IBM_BG_SIMD
|
||||
#include <builtins.h>
|
||||
|
||||
/* Double precision 440d (double hummer) matrix multiplication */
|
||||
#define const
|
||||
#include "mgpt_mmul_bg_552.c.h"
|
||||
#include "mgpt_mmul_bg_722.c.h"
|
||||
#include "mgpt_bgmul_7.c.h"
|
||||
|
||||
/* Double precision 440d (double hummer) product trace */
|
||||
#define real double
|
||||
#include "mgpt_ttr_5123.c.h"
|
||||
#include "mgpt_ttr_7123.c.h"
|
||||
#undef real
|
||||
#undef const
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef IBM_BGQ_SIMD
|
||||
/* Double precision QPX matrix multiplication */
|
||||
#include "mgpt_mmul_bgq_n5_lda8_2x8.c.h"
|
||||
#include "mgpt_mmul_bgq_n7_lda8_4x8.c.h"
|
||||
|
||||
/* Double precision QPX product trace */
|
||||
#include "mgpt_ttr_5141.c.h"
|
||||
#include "mgpt_ttr_7141.c.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef x86_SIMD
|
||||
/* Double precision SSE2 matrix multiplication */
|
||||
#include "mgpt_mmul3d_526.c.h"
|
||||
#include "mgpt_mmul3d_744.c.h"
|
||||
|
||||
/* Single precision SSE2 matrix multiplication */
|
||||
#include "mgpt_mmul3_538.c.h"
|
||||
#include "mgpt_mmul3_748.c.h"
|
||||
|
||||
/* Double precision SSE3 product trace */
|
||||
#define real double
|
||||
#include "mgpt_ttr_5022.c.h"
|
||||
#include "mgpt_ttr_7022.c.h"
|
||||
#undef real
|
||||
|
||||
/* Single precision SSE3 product trace */
|
||||
#define real float
|
||||
#include "mgpt_ttr_5042.c.h"
|
||||
#include "mgpt_ttr_7042.c.h"
|
||||
#undef real
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(IBM_BG_SIMD) || defined(IBM_BGQ_SIMD)
|
||||
#define const
|
||||
#endif
|
||||
static void transprod_generic(const double * restrict A,
|
||||
const double * restrict B,
|
||||
double * restrict C) {
|
||||
const int lda = 8,n = mgpt_linalg::matrix_size;
|
||||
int i,j,k;
|
||||
double s;
|
||||
for(i = 0; i<n; i++)
|
||||
for(j = 0; j<n; j++) {
|
||||
s = 0.0;
|
||||
for(k = 1; k<=n; k++)
|
||||
s = s + A[i*lda+k]*B[j*lda+k];
|
||||
C[i*lda+(j+1)] = s;
|
||||
}
|
||||
}
|
||||
|
||||
static void transtrace3_generic(const double * restrict A,
|
||||
const double * restrict B0,double * restrict tout0,
|
||||
const double * restrict B1,double * restrict tout1,
|
||||
const double * restrict B2,double * restrict tout2) {
|
||||
const int lda = 8,n = mgpt_linalg::matrix_size;
|
||||
double t0 = 0.0,t1 = 0.0,t2 = 0.0;
|
||||
int i,j;
|
||||
|
||||
for(i = 0; i<n; i++)
|
||||
for(j = 1; j<=n; j++) {
|
||||
int idx = i*lda + j;
|
||||
double atmp = A[idx];
|
||||
t0 = t0 + atmp*B0[idx];
|
||||
t1 = t1 + atmp*B1[idx];
|
||||
t2 = t2 + atmp*B2[idx];
|
||||
}
|
||||
*tout0 = t0;
|
||||
*tout1 = t1;
|
||||
*tout2 = t2;
|
||||
}
|
||||
|
||||
static void transprod_error(const double * restrict A,
|
||||
const double * restrict B,
|
||||
double * restrict C) {
|
||||
printf("Linear algebra subroutines not initialized (transprod).\n");
|
||||
exit(1);
|
||||
}
|
||||
static void transtrace3_error(const double * restrict A,
|
||||
const double * restrict B0,double * restrict tout0,
|
||||
const double * restrict B1,double * restrict tout1,
|
||||
const double * restrict B2,double * restrict tout2) {
|
||||
printf("Linear algebra subroutines not initialized (transtrace3).\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
#if defined(IBM_BG_SIMD) || defined(IBM_BGQ_SIMD)
|
||||
#undef const
|
||||
#endif
|
||||
|
||||
#undef restrict
|
||||
|
||||
int mgpt_linalg::matrix_size;
|
||||
|
||||
mgpt_linalg::mgpt_linalg() {
|
||||
mgpt_linalg::matrix_size = 0;
|
||||
|
||||
tr_mul = transprod_error;
|
||||
tr_trace = transtrace3_error;
|
||||
single = 0;
|
||||
}
|
||||
|
||||
mgpt_linalg::mgpt_linalg(int n,int single_precision) {
|
||||
|
||||
mgpt_linalg::matrix_size = n;
|
||||
|
||||
tr_mul = transprod_generic;
|
||||
tr_trace = transtrace3_generic;
|
||||
single = 0;
|
||||
msg = "@@@ Choosing generic (unoptimized) linear algebra routines.\n";
|
||||
|
||||
#ifdef IBM_BG_SIMD
|
||||
msg = "@@@ Choosing BG/L optimized linear algebra routines.\n";
|
||||
if(n == 5) {
|
||||
tr_mul = mmul_bg_5_8_5x2v2;
|
||||
tr_trace = ttr_bg_5_8_3_v2r3;
|
||||
} else if(n == 7) {
|
||||
//tr_mul = mmul_bg_7_8_2x2v2;
|
||||
tr_mul = (trmul_fun) bgmul_7;
|
||||
tr_trace = ttr_bg_7_8_3_v2r3;
|
||||
}
|
||||
#elif defined(IBM_BGQ_SIMD)
|
||||
msg = "@@@ Choosing BG/Q optimized linear algebra routines.\n";
|
||||
if(1) {
|
||||
if(n == 5) {
|
||||
tr_mul = mmul_bgq_n5_lda8_2x8;
|
||||
tr_trace = ttr_bg_5_8_3_v4r1;
|
||||
} else if(n == 7) {
|
||||
tr_mul = mmul_bgq_n7_lda8_4x8;
|
||||
tr_trace = ttr_bg_7_8_3_v4r1;
|
||||
}
|
||||
}
|
||||
#elif defined(x86_SIMD)
|
||||
if(single_precision) {
|
||||
msg = "@@@ Choosing Intel/AMD single precision linear algebra routines.\n";
|
||||
if(n == 5) {
|
||||
tr_mul = (trmul_fun) mmul3_5_8_3x8v4;
|
||||
tr_trace = (trtrace3_fun) ttr_5_8_3_v4r2;
|
||||
single = 1;
|
||||
} else if(n == 7) {
|
||||
tr_mul = (trmul_fun) mmul3_7_8_4x8v4;
|
||||
tr_trace = (trtrace3_fun) ttr_7_8_3_v4r2;
|
||||
single = 1;
|
||||
}
|
||||
} else {
|
||||
msg = "@@@ Choosing Intel/AMD double precision linear algebra routines.\n";
|
||||
if(n == 5) {
|
||||
tr_mul = mmul3_5_8_2x6v2;
|
||||
tr_trace = ttr_5_8_3_v2r2;
|
||||
} else if(n == 7) {
|
||||
tr_mul = mmul3_7_8_4x4v2;
|
||||
tr_trace = ttr_7_8_3_v2r2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
69
src/USER-MGPT/mgpt_linalg.h
Normal file
@ -0,0 +1,69 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef MGPT_LINALG__
|
||||
#define MGPT_LINALG__
|
||||
|
||||
|
||||
#ifdef __bg__
|
||||
|
||||
#ifdef __bgq__
|
||||
#ifdef __VECTOR4DOUBLE__
|
||||
#define IBM_BGQ_SIMD
|
||||
#endif
|
||||
#else
|
||||
#define IBM_BG_SIMD
|
||||
#endif
|
||||
|
||||
#elif defined(__SSE3__)
|
||||
#define x86_SIMD
|
||||
#endif
|
||||
|
||||
#define restrict __restrict__
|
||||
|
||||
#if defined(IBM_BG_SIMD) || defined(IBM_BGQ_SIMD)
|
||||
#define const
|
||||
#endif
|
||||
typedef void (*trmul_fun) (const double * restrict A,
|
||||
const double * restrict B,
|
||||
double * restrict C);
|
||||
|
||||
typedef void (*trtrace3_fun) (const double * restrict A,
|
||||
const double * restrict B1,double * restrict t1,
|
||||
const double * restrict B2,double * restrict t2,
|
||||
const double * restrict B3,double * restrict t3);
|
||||
#if defined(IBM_BG_SIMD) || defined(IBM_BGQ_SIMD)
|
||||
#undef const
|
||||
#endif
|
||||
|
||||
class mgpt_linalg {
|
||||
public:
|
||||
static int matrix_size;
|
||||
|
||||
trmul_fun tr_mul;
|
||||
trtrace3_fun tr_trace;
|
||||
int single;
|
||||
const char *msg;
|
||||
|
||||
mgpt_linalg();
|
||||
mgpt_linalg(int n,int single_precision);
|
||||
};
|
||||
|
||||
#undef restrict
|
||||
|
||||
#endif
|
||||
295
src/USER-MGPT/mgpt_mmul3_538.c.h
Normal file
@ -0,0 +1,295 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <xmmintrin.h>
|
||||
|
||||
void mmul3_5_8_3x8v4(const float * restrict A,
|
||||
const float * restrict B,
|
||||
float * restrict C) {
|
||||
__m128
|
||||
Creg00,Creg04,
|
||||
Creg10,Creg14,
|
||||
Creg20,Creg24;
|
||||
__m128 Areg0,Areg1,Areg2;
|
||||
__m128 Breg0,Breg4;
|
||||
__m128 Atmp,Btmp;
|
||||
|
||||
|
||||
/* Computing C(0:2,0:5) */
|
||||
|
||||
Areg0 = _mm_load_ps(&A[0]) ;
|
||||
Areg1 = _mm_load_ps(&A[8]) ;
|
||||
Areg2 = _mm_load_ps(&A[16]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[0]) ;
|
||||
Breg4 = _mm_load_ps(&B[4]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg00 = Breg0 ;
|
||||
Creg00 = _mm_mul_ps(Creg00,Atmp) ;
|
||||
Creg04 = Breg4 ;
|
||||
Creg04 = _mm_mul_ps(Creg04,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg10 = Breg0 ;
|
||||
Creg10 = _mm_mul_ps(Creg10,Atmp) ;
|
||||
Creg14 = Breg4 ;
|
||||
Creg14 = _mm_mul_ps(Creg14,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg20 = Breg0 ;
|
||||
Creg20 = _mm_mul_ps(Creg20,Atmp) ;
|
||||
Creg24 = Breg4 ;
|
||||
Creg24 = _mm_mul_ps(Creg24,Atmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[8]) ;
|
||||
Breg4 = _mm_load_ps(&B[12]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[16]) ;
|
||||
Breg4 = _mm_load_ps(&B[20]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_ps(&A[4]) ;
|
||||
Areg1 = _mm_load_ps(&A[12]) ;
|
||||
Areg2 = _mm_load_ps(&A[20]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[24]) ;
|
||||
Breg4 = _mm_load_ps(&B[28]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[32]) ;
|
||||
Breg4 = _mm_load_ps(&B[36]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
_mm_store_ps(&C[0],Creg00) ;
|
||||
_mm_store_ps(&C[4],Creg04) ;
|
||||
_mm_store_ps(&C[8],Creg10) ;
|
||||
_mm_store_ps(&C[12],Creg14) ;
|
||||
_mm_store_ps(&C[16],Creg20) ;
|
||||
_mm_store_ps(&C[20],Creg24) ;
|
||||
|
||||
|
||||
/* Computing C(3:4,0:5) */
|
||||
|
||||
Areg0 = _mm_load_ps(&A[24]) ;
|
||||
Areg1 = _mm_load_ps(&A[32]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[0]) ;
|
||||
Breg4 = _mm_load_ps(&B[4]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg00 = Breg0 ;
|
||||
Creg00 = _mm_mul_ps(Creg00,Atmp) ;
|
||||
Creg04 = Breg4 ;
|
||||
Creg04 = _mm_mul_ps(Creg04,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg10 = Breg0 ;
|
||||
Creg10 = _mm_mul_ps(Creg10,Atmp) ;
|
||||
Creg14 = Breg4 ;
|
||||
Creg14 = _mm_mul_ps(Creg14,Atmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[8]) ;
|
||||
Breg4 = _mm_load_ps(&B[12]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[16]) ;
|
||||
Breg4 = _mm_load_ps(&B[20]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_ps(&A[28]) ;
|
||||
Areg1 = _mm_load_ps(&A[36]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[24]) ;
|
||||
Breg4 = _mm_load_ps(&B[28]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[32]) ;
|
||||
Breg4 = _mm_load_ps(&B[36]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
|
||||
_mm_store_ps(&C[24],Creg00) ;
|
||||
_mm_store_ps(&C[28],Creg04) ;
|
||||
_mm_store_ps(&C[32],Creg10) ;
|
||||
_mm_store_ps(&C[36],Creg14) ;
|
||||
|
||||
|
||||
}
|
||||
508
src/USER-MGPT/mgpt_mmul3_748.c.h
Normal file
@ -0,0 +1,508 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <xmmintrin.h>
|
||||
|
||||
void mmul3_7_8_4x8v4(const float * restrict A,
|
||||
const float * restrict B,
|
||||
float * restrict C) {
|
||||
__m128
|
||||
Creg00,Creg04,
|
||||
Creg10,Creg14,
|
||||
Creg20,Creg24,
|
||||
Creg30,Creg34;
|
||||
__m128 Areg0,Areg1,Areg2,Areg3;
|
||||
__m128 Breg0,Breg4;
|
||||
__m128 Atmp,Btmp;
|
||||
|
||||
|
||||
/* Computing C(0:3,0:7) */
|
||||
|
||||
Areg0 = _mm_load_ps(&A[0]) ;
|
||||
Areg1 = _mm_load_ps(&A[8]) ;
|
||||
Areg2 = _mm_load_ps(&A[16]) ;
|
||||
Areg3 = _mm_load_ps(&A[24]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[0]) ;
|
||||
Breg4 = _mm_load_ps(&B[4]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg00 = Breg0 ;
|
||||
Creg00 = _mm_mul_ps(Creg00,Atmp) ;
|
||||
Creg04 = Breg4 ;
|
||||
Creg04 = _mm_mul_ps(Creg04,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg10 = Breg0 ;
|
||||
Creg10 = _mm_mul_ps(Creg10,Atmp) ;
|
||||
Creg14 = Breg4 ;
|
||||
Creg14 = _mm_mul_ps(Creg14,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg20 = Breg0 ;
|
||||
Creg20 = _mm_mul_ps(Creg20,Atmp) ;
|
||||
Creg24 = Breg4 ;
|
||||
Creg24 = _mm_mul_ps(Creg24,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg3,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg30 = Breg0 ;
|
||||
Creg30 = _mm_mul_ps(Creg30,Atmp) ;
|
||||
Creg34 = Breg4 ;
|
||||
Creg34 = _mm_mul_ps(Creg34,Atmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[8]) ;
|
||||
Breg4 = _mm_load_ps(&B[12]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg3,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg30 = _mm_add_ps(Creg30,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg34 = _mm_add_ps(Creg34,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[16]) ;
|
||||
Breg4 = _mm_load_ps(&B[20]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg3,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg30 = _mm_add_ps(Creg30,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg34 = _mm_add_ps(Creg34,Btmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_ps(&A[4]) ;
|
||||
Areg1 = _mm_load_ps(&A[12]) ;
|
||||
Areg2 = _mm_load_ps(&A[20]) ;
|
||||
Areg3 = _mm_load_ps(&A[28]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[24]) ;
|
||||
Breg4 = _mm_load_ps(&B[28]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg3,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg30 = _mm_add_ps(Creg30,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg34 = _mm_add_ps(Creg34,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[32]) ;
|
||||
Breg4 = _mm_load_ps(&B[36]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg3,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg30 = _mm_add_ps(Creg30,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg34 = _mm_add_ps(Creg34,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[40]) ;
|
||||
Breg4 = _mm_load_ps(&B[44]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg3,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg30 = _mm_add_ps(Creg30,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg34 = _mm_add_ps(Creg34,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[48]) ;
|
||||
Breg4 = _mm_load_ps(&B[52]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg3,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg30 = _mm_add_ps(Creg30,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg34 = _mm_add_ps(Creg34,Btmp) ;
|
||||
|
||||
|
||||
_mm_store_ps(&C[0],Creg00) ;
|
||||
_mm_store_ps(&C[4],Creg04) ;
|
||||
_mm_store_ps(&C[8],Creg10) ;
|
||||
_mm_store_ps(&C[12],Creg14) ;
|
||||
_mm_store_ps(&C[16],Creg20) ;
|
||||
_mm_store_ps(&C[20],Creg24) ;
|
||||
_mm_store_ps(&C[24],Creg30) ;
|
||||
_mm_store_ps(&C[28],Creg34) ;
|
||||
|
||||
|
||||
/* Computing C(4:6,0:7) */
|
||||
|
||||
Areg0 = _mm_load_ps(&A[32]) ;
|
||||
Areg1 = _mm_load_ps(&A[40]) ;
|
||||
Areg2 = _mm_load_ps(&A[48]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[0]) ;
|
||||
Breg4 = _mm_load_ps(&B[4]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg00 = Breg0 ;
|
||||
Creg00 = _mm_mul_ps(Creg00,Atmp) ;
|
||||
Creg04 = Breg4 ;
|
||||
Creg04 = _mm_mul_ps(Creg04,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg10 = Breg0 ;
|
||||
Creg10 = _mm_mul_ps(Creg10,Atmp) ;
|
||||
Creg14 = Breg4 ;
|
||||
Creg14 = _mm_mul_ps(Creg14,Atmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Creg20 = Breg0 ;
|
||||
Creg20 = _mm_mul_ps(Creg20,Atmp) ;
|
||||
Creg24 = Breg4 ;
|
||||
Creg24 = _mm_mul_ps(Creg24,Atmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[8]) ;
|
||||
Breg4 = _mm_load_ps(&B[12]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[16]) ;
|
||||
Breg4 = _mm_load_ps(&B[20]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_ps(&A[36]) ;
|
||||
Areg1 = _mm_load_ps(&A[44]) ;
|
||||
Areg2 = _mm_load_ps(&A[52]) ;
|
||||
|
||||
Breg0 = _mm_load_ps(&B[24]) ;
|
||||
Breg4 = _mm_load_ps(&B[28]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(0,0,0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[32]) ;
|
||||
Breg4 = _mm_load_ps(&B[36]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(1,1,1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[40]) ;
|
||||
Breg4 = _mm_load_ps(&B[44]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(2,2,2,2)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_ps(&B[48]) ;
|
||||
Breg4 = _mm_load_ps(&B[52]) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg0,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_ps(Creg00,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_ps(Creg04,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg1,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_ps(Creg10,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_ps(Creg14,Btmp) ;
|
||||
|
||||
Atmp = (__m128) _mm_shuffle_epi32((__m128i) Areg2,_MM_SHUFFLE(3,3,3,3)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg20 = _mm_add_ps(Creg20,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_ps(Btmp,Atmp) ;
|
||||
Creg24 = _mm_add_ps(Creg24,Btmp) ;
|
||||
|
||||
|
||||
_mm_store_ps(&C[32],Creg00) ;
|
||||
_mm_store_ps(&C[36],Creg04) ;
|
||||
_mm_store_ps(&C[40],Creg10) ;
|
||||
_mm_store_ps(&C[44],Creg14) ;
|
||||
_mm_store_ps(&C[48],Creg20) ;
|
||||
_mm_store_ps(&C[52],Creg24) ;
|
||||
|
||||
|
||||
}
|
||||
443
src/USER-MGPT/mgpt_mmul3d_526.c.h
Normal file
@ -0,0 +1,443 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <xmmintrin.h>
|
||||
|
||||
void mmul3_5_8_2x6v2(const double * restrict A,
|
||||
const double * restrict B,
|
||||
double * restrict C) {
|
||||
__m128d
|
||||
Creg00,Creg02,Creg04,
|
||||
Creg10,Creg12,Creg14;
|
||||
__m128d Areg0,Areg1;
|
||||
__m128d Breg0,Breg2,Breg4;
|
||||
__m128d Atmp,Btmp;
|
||||
|
||||
|
||||
/* Computing C(0:1,0:5) */
|
||||
|
||||
Areg0 = _mm_load_pd(&A[0]) ;
|
||||
Areg1 = _mm_load_pd(&A[8]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[0]) ;
|
||||
Breg2 = _mm_load_pd(&B[2]) ;
|
||||
Breg4 = _mm_load_pd(&B[4]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Creg00 = Breg0 ;
|
||||
Creg00 = _mm_mul_pd(Creg00,Atmp) ;
|
||||
Creg02 = Breg2 ;
|
||||
Creg02 = _mm_mul_pd(Creg02,Atmp) ;
|
||||
Creg04 = Breg4 ;
|
||||
Creg04 = _mm_mul_pd(Creg04,Atmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(1,1)) ;
|
||||
Creg10 = Breg0 ;
|
||||
Creg10 = _mm_mul_pd(Creg10,Atmp) ;
|
||||
Creg12 = Breg2 ;
|
||||
Creg12 = _mm_mul_pd(Creg12,Atmp) ;
|
||||
Creg14 = Breg4 ;
|
||||
Creg14 = _mm_mul_pd(Creg14,Atmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_pd(&A[2]) ;
|
||||
Areg1 = _mm_load_pd(&A[10]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[8]) ;
|
||||
Breg2 = _mm_load_pd(&B[10]) ;
|
||||
Breg4 = _mm_load_pd(&B[12]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_pd(&B[16]) ;
|
||||
Breg2 = _mm_load_pd(&B[18]) ;
|
||||
Breg4 = _mm_load_pd(&B[20]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_pd(&A[4]) ;
|
||||
Areg1 = _mm_load_pd(&A[12]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[24]) ;
|
||||
Breg2 = _mm_load_pd(&B[26]) ;
|
||||
Breg4 = _mm_load_pd(&B[28]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_pd(&B[32]) ;
|
||||
Breg2 = _mm_load_pd(&B[34]) ;
|
||||
Breg4 = _mm_load_pd(&B[36]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
_mm_store_pd(&C[0],Creg00) ;
|
||||
_mm_store_pd(&C[2],Creg02) ;
|
||||
_mm_store_pd(&C[4],Creg04) ;
|
||||
_mm_store_pd(&C[8],Creg10) ;
|
||||
_mm_store_pd(&C[10],Creg12) ;
|
||||
_mm_store_pd(&C[12],Creg14) ;
|
||||
|
||||
|
||||
/* Computing C(2:3,0:5) */
|
||||
|
||||
Areg0 = _mm_load_pd(&A[16]) ;
|
||||
Areg1 = _mm_load_pd(&A[24]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[0]) ;
|
||||
Breg2 = _mm_load_pd(&B[2]) ;
|
||||
Breg4 = _mm_load_pd(&B[4]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Creg00 = Breg0 ;
|
||||
Creg00 = _mm_mul_pd(Creg00,Atmp) ;
|
||||
Creg02 = Breg2 ;
|
||||
Creg02 = _mm_mul_pd(Creg02,Atmp) ;
|
||||
Creg04 = Breg4 ;
|
||||
Creg04 = _mm_mul_pd(Creg04,Atmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(1,1)) ;
|
||||
Creg10 = Breg0 ;
|
||||
Creg10 = _mm_mul_pd(Creg10,Atmp) ;
|
||||
Creg12 = Breg2 ;
|
||||
Creg12 = _mm_mul_pd(Creg12,Atmp) ;
|
||||
Creg14 = Breg4 ;
|
||||
Creg14 = _mm_mul_pd(Creg14,Atmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_pd(&A[18]) ;
|
||||
Areg1 = _mm_load_pd(&A[26]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[8]) ;
|
||||
Breg2 = _mm_load_pd(&B[10]) ;
|
||||
Breg4 = _mm_load_pd(&B[12]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_pd(&B[16]) ;
|
||||
Breg2 = _mm_load_pd(&B[18]) ;
|
||||
Breg4 = _mm_load_pd(&B[20]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_pd(&A[20]) ;
|
||||
Areg1 = _mm_load_pd(&A[28]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[24]) ;
|
||||
Breg2 = _mm_load_pd(&B[26]) ;
|
||||
Breg4 = _mm_load_pd(&B[28]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_pd(&B[32]) ;
|
||||
Breg2 = _mm_load_pd(&B[34]) ;
|
||||
Breg4 = _mm_load_pd(&B[36]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
Atmp = Areg1 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg1,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg10 = _mm_add_pd(Creg10,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg12 = _mm_add_pd(Creg12,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg14 = _mm_add_pd(Creg14,Btmp) ;
|
||||
|
||||
|
||||
_mm_store_pd(&C[16],Creg00) ;
|
||||
_mm_store_pd(&C[18],Creg02) ;
|
||||
_mm_store_pd(&C[20],Creg04) ;
|
||||
_mm_store_pd(&C[24],Creg10) ;
|
||||
_mm_store_pd(&C[26],Creg12) ;
|
||||
_mm_store_pd(&C[28],Creg14) ;
|
||||
|
||||
|
||||
/* Computing C(4:4,0:5) */
|
||||
|
||||
Areg0 = _mm_load_pd(&A[32]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[0]) ;
|
||||
Breg2 = _mm_load_pd(&B[2]) ;
|
||||
Breg4 = _mm_load_pd(&B[4]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Creg00 = Breg0 ;
|
||||
Creg00 = _mm_mul_pd(Creg00,Atmp) ;
|
||||
Creg02 = Breg2 ;
|
||||
Creg02 = _mm_mul_pd(Creg02,Atmp) ;
|
||||
Creg04 = Breg4 ;
|
||||
Creg04 = _mm_mul_pd(Creg04,Atmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_pd(&A[34]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[8]) ;
|
||||
Breg2 = _mm_load_pd(&B[10]) ;
|
||||
Breg4 = _mm_load_pd(&B[12]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_pd(&B[16]) ;
|
||||
Breg2 = _mm_load_pd(&B[18]) ;
|
||||
Breg4 = _mm_load_pd(&B[20]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
|
||||
Areg0 = _mm_load_pd(&A[36]) ;
|
||||
|
||||
Breg0 = _mm_load_pd(&B[24]) ;
|
||||
Breg2 = _mm_load_pd(&B[26]) ;
|
||||
Breg4 = _mm_load_pd(&B[28]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(0,0)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
|
||||
Breg0 = _mm_load_pd(&B[32]) ;
|
||||
Breg2 = _mm_load_pd(&B[34]) ;
|
||||
Breg4 = _mm_load_pd(&B[36]) ;
|
||||
|
||||
Atmp = Areg0 ;
|
||||
Atmp = _mm_shuffle_pd(Atmp,Areg0,_MM_SHUFFLE2(1,1)) ;
|
||||
Btmp = Breg0 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg00 = _mm_add_pd(Creg00,Btmp) ;
|
||||
Btmp = Breg2 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg02 = _mm_add_pd(Creg02,Btmp) ;
|
||||
Btmp = Breg4 ;
|
||||
Btmp = _mm_mul_pd(Btmp,Atmp) ;
|
||||
Creg04 = _mm_add_pd(Creg04,Btmp) ;
|
||||
|
||||
|
||||
_mm_store_pd(&C[32],Creg00) ;
|
||||
_mm_store_pd(&C[34],Creg02) ;
|
||||
_mm_store_pd(&C[36],Creg04) ;
|
||||
|
||||
|
||||
}
|
||||
1116
src/USER-MGPT/mgpt_mmul3d_744.c.h
Normal file
358
src/USER-MGPT/mgpt_mmul_bg_552.c.h
Normal file
@ -0,0 +1,358 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
/* #define TESTING */
|
||||
|
||||
#ifdef TESTING
|
||||
|
||||
typedef struct {
|
||||
double x,y;
|
||||
} pair;
|
||||
|
||||
|
||||
#define CPLX pair
|
||||
|
||||
static double my_creal(CPLX x) {
|
||||
return ((double *) &x)[0];
|
||||
}
|
||||
static double my_cimag(CPLX x) {
|
||||
return ((double *) &x)[1];
|
||||
}
|
||||
static CPLX my_lfpd(const double *p) {
|
||||
return ((CPLX *) p)[0];
|
||||
}
|
||||
static void my_stfpd(double *p,CPLX x) {
|
||||
((CPLX *) p)[0] = x;
|
||||
}
|
||||
static CPLX my_fxsmul(CPLX x,double a) {
|
||||
double y[2];
|
||||
y[0] = a * my_creal(x);
|
||||
y[1] = a * my_cimag(x);
|
||||
return ((CPLX *) y)[0];
|
||||
}
|
||||
static CPLX my_fxcpmadd(CPLX t,CPLX x,double a) {
|
||||
double y[2];
|
||||
y[0] = my_creal(t) + a * my_creal(x);
|
||||
y[1] = my_cimag(t) + a * my_cimag(x);
|
||||
return ((CPLX *) y)[0];
|
||||
}
|
||||
|
||||
#define __creal my_creal
|
||||
#define __cimag my_cimag
|
||||
#define __lfpd my_lfpd
|
||||
#define __stfpd my_stfpd
|
||||
#define __fxsmul my_fxsmul
|
||||
#define __fxcpmadd my_fxcpmadd
|
||||
|
||||
#else
|
||||
|
||||
#define CPLX double _Complex
|
||||
|
||||
#endif
|
||||
|
||||
void mmul_bg_5_8_5x2v2(const double * restrict A,
|
||||
const double * restrict B,
|
||||
double * restrict C) {
|
||||
CPLX
|
||||
Creg00,
|
||||
Creg10,
|
||||
Creg20,
|
||||
Creg30,
|
||||
Creg40;
|
||||
CPLX Areg0,Areg1,Areg2,Areg3,Areg4;
|
||||
CPLX Breg0;
|
||||
|
||||
|
||||
/* Computing C(0:4,0:1) */
|
||||
|
||||
Areg0 = __lfpd(&A[0]) ;
|
||||
Areg1 = __lfpd(&A[8]) ;
|
||||
Areg2 = __lfpd(&A[16]) ;
|
||||
Areg3 = __lfpd(&A[24]) ;
|
||||
Areg4 = __lfpd(&A[32]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[0]) ;
|
||||
|
||||
Creg00 = __fxsmul(Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxsmul(Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxsmul(Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxsmul(Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxsmul(Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
Areg0 = __lfpd(&A[2]) ;
|
||||
Areg1 = __lfpd(&A[10]) ;
|
||||
Areg2 = __lfpd(&A[18]) ;
|
||||
Areg3 = __lfpd(&A[26]) ;
|
||||
Areg4 = __lfpd(&A[34]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[8]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__creal(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__creal(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__creal(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__creal(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__creal(Areg4)) ;
|
||||
|
||||
|
||||
Breg0 = __lfpd(&B[16]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
Areg0 = __lfpd(&A[4]) ;
|
||||
Areg1 = __lfpd(&A[12]) ;
|
||||
Areg2 = __lfpd(&A[20]) ;
|
||||
Areg3 = __lfpd(&A[28]) ;
|
||||
Areg4 = __lfpd(&A[36]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[24]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__creal(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__creal(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__creal(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__creal(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__creal(Areg4)) ;
|
||||
|
||||
|
||||
Breg0 = __lfpd(&B[32]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
__stfpd(&C[0],Creg00) ;
|
||||
__stfpd(&C[8],Creg10) ;
|
||||
__stfpd(&C[16],Creg20) ;
|
||||
__stfpd(&C[24],Creg30) ;
|
||||
__stfpd(&C[32],Creg40) ;
|
||||
|
||||
|
||||
/* Computing C(0:4,2:3) */
|
||||
|
||||
Areg0 = __lfpd(&A[0]) ;
|
||||
Areg1 = __lfpd(&A[8]) ;
|
||||
Areg2 = __lfpd(&A[16]) ;
|
||||
Areg3 = __lfpd(&A[24]) ;
|
||||
Areg4 = __lfpd(&A[32]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[2]) ;
|
||||
|
||||
Creg00 = __fxsmul(Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxsmul(Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxsmul(Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxsmul(Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxsmul(Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
Areg0 = __lfpd(&A[2]) ;
|
||||
Areg1 = __lfpd(&A[10]) ;
|
||||
Areg2 = __lfpd(&A[18]) ;
|
||||
Areg3 = __lfpd(&A[26]) ;
|
||||
Areg4 = __lfpd(&A[34]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[10]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__creal(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__creal(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__creal(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__creal(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__creal(Areg4)) ;
|
||||
|
||||
|
||||
Breg0 = __lfpd(&B[18]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
Areg0 = __lfpd(&A[4]) ;
|
||||
Areg1 = __lfpd(&A[12]) ;
|
||||
Areg2 = __lfpd(&A[20]) ;
|
||||
Areg3 = __lfpd(&A[28]) ;
|
||||
Areg4 = __lfpd(&A[36]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[26]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__creal(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__creal(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__creal(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__creal(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__creal(Areg4)) ;
|
||||
|
||||
|
||||
Breg0 = __lfpd(&B[34]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
__stfpd(&C[2],Creg00) ;
|
||||
__stfpd(&C[10],Creg10) ;
|
||||
__stfpd(&C[18],Creg20) ;
|
||||
__stfpd(&C[26],Creg30) ;
|
||||
__stfpd(&C[34],Creg40) ;
|
||||
|
||||
|
||||
/* Computing C(0:4,4:5) */
|
||||
|
||||
Areg0 = __lfpd(&A[0]) ;
|
||||
Areg1 = __lfpd(&A[8]) ;
|
||||
Areg2 = __lfpd(&A[16]) ;
|
||||
Areg3 = __lfpd(&A[24]) ;
|
||||
Areg4 = __lfpd(&A[32]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[4]) ;
|
||||
|
||||
Creg00 = __fxsmul(Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxsmul(Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxsmul(Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxsmul(Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxsmul(Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
Areg0 = __lfpd(&A[2]) ;
|
||||
Areg1 = __lfpd(&A[10]) ;
|
||||
Areg2 = __lfpd(&A[18]) ;
|
||||
Areg3 = __lfpd(&A[26]) ;
|
||||
Areg4 = __lfpd(&A[34]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[12]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__creal(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__creal(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__creal(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__creal(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__creal(Areg4)) ;
|
||||
|
||||
|
||||
Breg0 = __lfpd(&B[20]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
Areg0 = __lfpd(&A[4]) ;
|
||||
Areg1 = __lfpd(&A[12]) ;
|
||||
Areg2 = __lfpd(&A[20]) ;
|
||||
Areg3 = __lfpd(&A[28]) ;
|
||||
Areg4 = __lfpd(&A[36]) ;
|
||||
|
||||
Breg0 = __lfpd(&B[28]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__creal(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__creal(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__creal(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__creal(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__creal(Areg4)) ;
|
||||
|
||||
|
||||
Breg0 = __lfpd(&B[36]) ;
|
||||
|
||||
Creg00 = __fxcpmadd(Creg00,Breg0,__cimag(Areg0)) ;
|
||||
|
||||
Creg10 = __fxcpmadd(Creg10,Breg0,__cimag(Areg1)) ;
|
||||
|
||||
Creg20 = __fxcpmadd(Creg20,Breg0,__cimag(Areg2)) ;
|
||||
|
||||
Creg30 = __fxcpmadd(Creg30,Breg0,__cimag(Areg3)) ;
|
||||
|
||||
Creg40 = __fxcpmadd(Creg40,Breg0,__cimag(Areg4)) ;
|
||||
|
||||
|
||||
__stfpd(&C[4],Creg00) ;
|
||||
__stfpd(&C[12],Creg10) ;
|
||||
__stfpd(&C[20],Creg20) ;
|
||||
__stfpd(&C[28],Creg30) ;
|
||||
__stfpd(&C[36],Creg40) ;
|
||||
|
||||
|
||||
}
|
||||
1075
src/USER-MGPT/mgpt_mmul_bg_722.c.h
Normal file
236
src/USER-MGPT/mgpt_mmul_bgq_n5_lda8_2x8.c.h
Normal file
@ -0,0 +1,236 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#define vector vector4double
|
||||
#define const
|
||||
#define vec_fma vec_madd
|
||||
|
||||
void mmul_bgq_n5_lda8_2x8(const double * restrict A,
|
||||
const double * restrict B,
|
||||
double * restrict C) {
|
||||
vector
|
||||
Creg00,Creg04,
|
||||
Creg10,Creg14;
|
||||
vector Areg0,Areg1;
|
||||
vector Breg0,Breg4;
|
||||
vector Atmp;
|
||||
|
||||
|
||||
/* Computing C(0:1,0:5) */
|
||||
|
||||
Areg0 = vec_ld(8*0,A) ;
|
||||
Areg1 = vec_ld(8*8,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*0,B) ;
|
||||
Breg4 = vec_ld(8*4,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_mul(Atmp,Breg0) ;
|
||||
Creg04 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_mul(Atmp,Breg0) ;
|
||||
Creg14 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*8,B) ;
|
||||
Breg4 = vec_ld(8*12,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,2) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,2) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*16,B) ;
|
||||
Breg4 = vec_ld(8*20,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,3) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,3) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
Areg0 = vec_ld(8*4,A) ;
|
||||
Areg1 = vec_ld(8*12,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*24,B) ;
|
||||
Breg4 = vec_ld(8*28,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,0) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,0) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*32,B) ;
|
||||
Breg4 = vec_ld(8*36,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
vec_st(Creg00,8*0,C) ;
|
||||
vec_st(Creg04,8*4,C) ;
|
||||
vec_st(Creg10,8*8,C) ;
|
||||
vec_st(Creg14,8*12,C) ;
|
||||
|
||||
|
||||
/* Computing C(2:3,0:5) */
|
||||
|
||||
Areg0 = vec_ld(8*16,A) ;
|
||||
Areg1 = vec_ld(8*24,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*0,B) ;
|
||||
Breg4 = vec_ld(8*4,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_mul(Atmp,Breg0) ;
|
||||
Creg04 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_mul(Atmp,Breg0) ;
|
||||
Creg14 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*8,B) ;
|
||||
Breg4 = vec_ld(8*12,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,2) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,2) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*16,B) ;
|
||||
Breg4 = vec_ld(8*20,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,3) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,3) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
Areg0 = vec_ld(8*20,A) ;
|
||||
Areg1 = vec_ld(8*28,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*24,B) ;
|
||||
Breg4 = vec_ld(8*28,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,0) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,0) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*32,B) ;
|
||||
Breg4 = vec_ld(8*36,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
|
||||
vec_st(Creg00,8*16,C) ;
|
||||
vec_st(Creg04,8*20,C) ;
|
||||
vec_st(Creg10,8*24,C) ;
|
||||
vec_st(Creg14,8*28,C) ;
|
||||
|
||||
|
||||
/* Computing C(4:4,0:5) */
|
||||
|
||||
Areg0 = vec_ld(8*32,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*0,B) ;
|
||||
Breg4 = vec_ld(8*4,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_mul(Atmp,Breg0) ;
|
||||
Creg04 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*8,B) ;
|
||||
Breg4 = vec_ld(8*12,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,2) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*16,B) ;
|
||||
Breg4 = vec_ld(8*20,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,3) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
|
||||
Areg0 = vec_ld(8*36,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*24,B) ;
|
||||
Breg4 = vec_ld(8*28,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,0) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*32,B) ;
|
||||
Breg4 = vec_ld(8*36,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
|
||||
vec_st(Creg00,8*32,C) ;
|
||||
vec_st(Creg04,8*36,C) ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
#undef vector
|
||||
#undef const
|
||||
#undef vec_fma
|
||||
332
src/USER-MGPT/mgpt_mmul_bgq_n7_lda8_4x8.c.h
Normal file
@ -0,0 +1,332 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#define vector vector4double
|
||||
#define const
|
||||
#define vec_fma vec_madd
|
||||
|
||||
void mmul_bgq_n7_lda8_4x8(const double * restrict A,
|
||||
const double * restrict B,
|
||||
double * restrict C) {
|
||||
vector
|
||||
Creg00,Creg04,
|
||||
Creg10,Creg14,
|
||||
Creg20,Creg24,
|
||||
Creg30,Creg34;
|
||||
vector Areg0,Areg1,Areg2,Areg3;
|
||||
vector Breg0,Breg4;
|
||||
vector Atmp;
|
||||
|
||||
|
||||
/* Computing C(0:3,0:7) */
|
||||
|
||||
Areg0 = vec_ld(8*0,A) ;
|
||||
Areg1 = vec_ld(8*8,A) ;
|
||||
Areg2 = vec_ld(8*16,A) ;
|
||||
Areg3 = vec_ld(8*24,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*0,B) ;
|
||||
Breg4 = vec_ld(8*4,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_mul(Atmp,Breg0) ;
|
||||
Creg04 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_mul(Atmp,Breg0) ;
|
||||
Creg14 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,1) ;
|
||||
Creg20 = vec_mul(Atmp,Breg0) ;
|
||||
Creg24 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
Atmp = vec_splat(Areg3,1) ;
|
||||
Creg30 = vec_mul(Atmp,Breg0) ;
|
||||
Creg34 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*8,B) ;
|
||||
Breg4 = vec_ld(8*12,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,2) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,2) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,2) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
Atmp = vec_splat(Areg3,2) ;
|
||||
Creg30 = vec_fma(Atmp,Breg0,Creg30) ;
|
||||
Creg34 = vec_fma(Atmp,Breg4,Creg34) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*16,B) ;
|
||||
Breg4 = vec_ld(8*20,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,3) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,3) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,3) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
Atmp = vec_splat(Areg3,3) ;
|
||||
Creg30 = vec_fma(Atmp,Breg0,Creg30) ;
|
||||
Creg34 = vec_fma(Atmp,Breg4,Creg34) ;
|
||||
|
||||
|
||||
Areg0 = vec_ld(8*4,A) ;
|
||||
Areg1 = vec_ld(8*12,A) ;
|
||||
Areg2 = vec_ld(8*20,A) ;
|
||||
Areg3 = vec_ld(8*28,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*24,B) ;
|
||||
Breg4 = vec_ld(8*28,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,0) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,0) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,0) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
Atmp = vec_splat(Areg3,0) ;
|
||||
Creg30 = vec_fma(Atmp,Breg0,Creg30) ;
|
||||
Creg34 = vec_fma(Atmp,Breg4,Creg34) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*32,B) ;
|
||||
Breg4 = vec_ld(8*36,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,1) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
Atmp = vec_splat(Areg3,1) ;
|
||||
Creg30 = vec_fma(Atmp,Breg0,Creg30) ;
|
||||
Creg34 = vec_fma(Atmp,Breg4,Creg34) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*40,B) ;
|
||||
Breg4 = vec_ld(8*44,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,2) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,2) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,2) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
Atmp = vec_splat(Areg3,2) ;
|
||||
Creg30 = vec_fma(Atmp,Breg0,Creg30) ;
|
||||
Creg34 = vec_fma(Atmp,Breg4,Creg34) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*48,B) ;
|
||||
Breg4 = vec_ld(8*52,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,3) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,3) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,3) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
Atmp = vec_splat(Areg3,3) ;
|
||||
Creg30 = vec_fma(Atmp,Breg0,Creg30) ;
|
||||
Creg34 = vec_fma(Atmp,Breg4,Creg34) ;
|
||||
|
||||
|
||||
vec_st(Creg00,8*0,C) ;
|
||||
vec_st(Creg04,8*4,C) ;
|
||||
vec_st(Creg10,8*8,C) ;
|
||||
vec_st(Creg14,8*12,C) ;
|
||||
vec_st(Creg20,8*16,C) ;
|
||||
vec_st(Creg24,8*20,C) ;
|
||||
vec_st(Creg30,8*24,C) ;
|
||||
vec_st(Creg34,8*28,C) ;
|
||||
|
||||
|
||||
/* Computing C(4:6,0:7) */
|
||||
|
||||
Areg0 = vec_ld(8*32,A) ;
|
||||
Areg1 = vec_ld(8*40,A) ;
|
||||
Areg2 = vec_ld(8*48,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*0,B) ;
|
||||
Breg4 = vec_ld(8*4,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_mul(Atmp,Breg0) ;
|
||||
Creg04 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_mul(Atmp,Breg0) ;
|
||||
Creg14 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,1) ;
|
||||
Creg20 = vec_mul(Atmp,Breg0) ;
|
||||
Creg24 = vec_mul(Atmp,Breg4) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*8,B) ;
|
||||
Breg4 = vec_ld(8*12,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,2) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,2) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,2) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*16,B) ;
|
||||
Breg4 = vec_ld(8*20,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,3) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,3) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,3) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
|
||||
Areg0 = vec_ld(8*36,A) ;
|
||||
Areg1 = vec_ld(8*44,A) ;
|
||||
Areg2 = vec_ld(8*52,A) ;
|
||||
|
||||
Breg0 = vec_ld(8*24,B) ;
|
||||
Breg4 = vec_ld(8*28,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,0) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,0) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,0) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*32,B) ;
|
||||
Breg4 = vec_ld(8*36,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,1) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,1) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,1) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*40,B) ;
|
||||
Breg4 = vec_ld(8*44,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,2) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,2) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,2) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
|
||||
Breg0 = vec_ld(8*48,B) ;
|
||||
Breg4 = vec_ld(8*52,B) ;
|
||||
|
||||
Atmp = vec_splat(Areg0,3) ;
|
||||
Creg00 = vec_fma(Atmp,Breg0,Creg00) ;
|
||||
Creg04 = vec_fma(Atmp,Breg4,Creg04) ;
|
||||
|
||||
Atmp = vec_splat(Areg1,3) ;
|
||||
Creg10 = vec_fma(Atmp,Breg0,Creg10) ;
|
||||
Creg14 = vec_fma(Atmp,Breg4,Creg14) ;
|
||||
|
||||
Atmp = vec_splat(Areg2,3) ;
|
||||
Creg20 = vec_fma(Atmp,Breg0,Creg20) ;
|
||||
Creg24 = vec_fma(Atmp,Breg4,Creg24) ;
|
||||
|
||||
|
||||
vec_st(Creg00,8*32,C) ;
|
||||
vec_st(Creg04,8*36,C) ;
|
||||
vec_st(Creg10,8*40,C) ;
|
||||
vec_st(Creg14,8*44,C) ;
|
||||
vec_st(Creg20,8*48,C) ;
|
||||
vec_st(Creg24,8*52,C) ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
#undef vector
|
||||
#undef const
|
||||
#undef vec_fma
|
||||
566
src/USER-MGPT/mgpt_readpot.cpp
Normal file
@ -0,0 +1,566 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
#include "mgpt_splinetab.h"
|
||||
|
||||
#include "mgpt_readpot.h"
|
||||
|
||||
static double fgauss(double x,double al) {
|
||||
return exp(-al * pow(x-1.0, 2));
|
||||
}
|
||||
static double hgauss(double x,double al) {
|
||||
return (1.0 + al * pow(x-1.0, 2)) * exp(-al * pow(x-1.0, 2));
|
||||
}
|
||||
static double fl(double r,int mode,double rp,double p1,double al,double r0,double pn)
|
||||
{
|
||||
double term;
|
||||
//double pn=1.0;
|
||||
if (mode <= 4)
|
||||
term = pow(rp/r, p1);
|
||||
else
|
||||
term = exp(-p1*(pow(r/rp, pn) - 1.0)/pn);
|
||||
|
||||
if (r <= r0) return term;
|
||||
double quan = al*(r/r0 - 1.0)*(r/r0 - 1.0);
|
||||
if(mode <= 2)
|
||||
return term*exp(-quan);
|
||||
else
|
||||
return term*(1.0 + quan)*exp(-quan);
|
||||
}
|
||||
|
||||
static int cmp_double(const void *ap,const void *bp) {
|
||||
double a = *((const double *) ap);
|
||||
double b = *((const double *) bp);
|
||||
if(a < b)
|
||||
return -1;
|
||||
else if(a > b)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
static void getparmindata(const char *potin_file,int nvol[1],double vol0[1],double x0[1],double x1[1]) {
|
||||
int n,vsize;
|
||||
double *volarr;
|
||||
char metal[80],metalx[80];
|
||||
int ipot,ipotx,mode,modex;
|
||||
FILE *in = fopen(potin_file,"r");
|
||||
char line[1024];
|
||||
|
||||
if(in == NULL) {
|
||||
fprintf(stderr,"@%s:%d: Error reading potin file. Can not open file \'%s\'.\n",
|
||||
__FILE__,__LINE__,potin_file);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
vsize = 10;
|
||||
volarr = (double *) malloc(sizeof(double) * vsize);
|
||||
n = 0;
|
||||
while(fgets(line,sizeof(line),in) != NULL) {
|
||||
double zval,ivol,rws,mass;
|
||||
double r0x,r1x,drx;
|
||||
int nrx,i;
|
||||
|
||||
if(line[strspn(line," \t")] == '#') continue;
|
||||
|
||||
if(n == 0) {
|
||||
metal[0] = 0;
|
||||
if(sscanf(line,"%s %d %d",metal,&ipot,&mode) != 3) {
|
||||
fprintf(stderr,"@%s:%d: Error on potin file. line = %s\n",
|
||||
__FILE__,__LINE__,line);
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
metalx[0] = 0;
|
||||
if(sscanf(line,"%s %d %d",metalx,&ipotx,&modex) != 3) {
|
||||
fprintf(stderr,"@%s:%d: Error on potin file. line = %s\n",
|
||||
__FILE__,__LINE__,line);
|
||||
exit(1);
|
||||
} else if(strcmp(metal,metalx) != 0 || ipot != ipotx || mode != modex) {
|
||||
fprintf(stderr,"@%s:%d: Error on potin file, parameter mismatch:\n"
|
||||
" metal = \'%s\' ipot = %d mode = %d\n"
|
||||
" metalx = \'%s\' ipotx = %d modex = %d\n",
|
||||
__FILE__,__LINE__,
|
||||
metal,ipot,mode,
|
||||
metalx,ipotx,modex);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf %lf",&zval,&ivol,&rws,&mass);
|
||||
if(n >= vsize) {
|
||||
vsize = 2*vsize;
|
||||
volarr = (double *) realloc(volarr,sizeof(double) * vsize);
|
||||
}
|
||||
volarr[n] = ivol;
|
||||
n = n + 1;
|
||||
|
||||
for(i = 0; i<5; i++)
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf",&r0x,&r1x,&drx);
|
||||
nrx = (int) ((r1x-r0x)/drx + 1.1); /* Really: 1+round((r1-r0)/dr) */
|
||||
for(i = 0; i<nrx; i++)
|
||||
fgets(line,sizeof(line),in);
|
||||
}
|
||||
fclose(in);
|
||||
|
||||
if(n == 0) {
|
||||
fprintf(stderr,"@%s:%d: Invalid potin file \'%s\', no volume records.\n",
|
||||
__FILE__,__LINE__,potin_file);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(0) {
|
||||
printf("Before sort:\n");
|
||||
for(int i = 0; i<n; i++)
|
||||
printf("%3d :: %.3f%s",i,volarr[i], (i%5==4) ? "\n" : " ");
|
||||
printf("\n\n");
|
||||
}
|
||||
qsort(volarr,n,sizeof(double),cmp_double);
|
||||
|
||||
if(0) {
|
||||
printf("After sort:\n");
|
||||
for(int i = 0; i<n; i++)
|
||||
printf("%3d :: %.3f%s",i,volarr[i], (i%5==4) ? "\n" : " ");
|
||||
printf("\n\n");
|
||||
}
|
||||
|
||||
nvol[0] = n;
|
||||
vol0[0] = volarr[n/2];
|
||||
x0[0] = pow(volarr[0]/vol0[0],1.0/3.0);
|
||||
x1[0] = pow(volarr[n-1]/vol0[0],1.0/3.0);
|
||||
|
||||
free(volarr);
|
||||
}
|
||||
|
||||
void potdata::readpot(const char *parmin_file,const char *potin_file,const double vol) {
|
||||
FILE *in;
|
||||
double x0,x1,dx,dr;
|
||||
int nx;
|
||||
|
||||
double r0x,r1x,drx;
|
||||
int nrx;
|
||||
|
||||
char metalx[80];
|
||||
int ipotx,modex; double pnx;
|
||||
double vol0;
|
||||
|
||||
double *vatab,*vbtab,*vctab,*vdtab,*vetab,*p1tab,*altab,*vpairtab = 0;
|
||||
double *r0rwstab,*evol0tab;
|
||||
double (*C)[4];
|
||||
double *y,*dy;
|
||||
double x,dxdv;
|
||||
double unused;
|
||||
|
||||
double zval,rws,ivol,r0rws,rcrws,rmrws;//,mass
|
||||
|
||||
int i,j;
|
||||
int L;
|
||||
|
||||
char line[1024];
|
||||
|
||||
input_vol = vol;
|
||||
|
||||
/* Read potential data */
|
||||
in = fopen(parmin_file,"r");
|
||||
do {
|
||||
fgets(line,sizeof(line),in);
|
||||
} while(line[strspn(line," \t")] == '#');
|
||||
|
||||
/* Test to see whether this is a one-line or two-line version of parmin */
|
||||
if(sscanf(line,"%lf %lf %lf %lf %d",&ddl[1],&ddl[2],&ddl[3],&ddl[4],&L) == 5) {
|
||||
/* One-line version, call getparmindata to figure out volume table spacing. */
|
||||
int nvol;
|
||||
getparmindata(potin_file,&nvol,&vol0,&x0,&x1);
|
||||
dx = (x1-x0)/(nvol-1);
|
||||
if(0) {
|
||||
printf("getparmindata() ==> nvol = %d, vol0 = %.6f, x0= %.6f, x1 = %.6f, dx = %.6f\n",
|
||||
nvol,vol0,x0,x1,dx);
|
||||
}
|
||||
} else {
|
||||
/* Two-line version, reparse this line, and read second line */
|
||||
sscanf(line,"%lf %lf %lf %lf",&x0,&x1,&dx,&vol0);
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf %lf %d",&ddl[1],&ddl[2],&ddl[3],&ddl[4],&L);
|
||||
|
||||
}
|
||||
double rws_scale = pow(3.0*vol0/(16.0*atan(1.0)),1.0/3.0);
|
||||
fclose(in);
|
||||
|
||||
lang = L+1;
|
||||
lmax = 2*L+1;
|
||||
double s = ddl[1],p = ddl[2],d = ddl[3],f = ddl[4];
|
||||
double ss = s*s, pp = p*p, dd = d*d, ff = f*f;
|
||||
anorm3 = s*ss + 2.0*( p*pp + d*dd + f*ff);
|
||||
anorm4 = ss*ss + 2.0*(pp*pp + dd*dd + ff*ff);
|
||||
/*
|
||||
for(i = 1; i<=lmax; i++) {
|
||||
for(j = 1; j<=lmax; j++)
|
||||
del0.m[i][j] = 0.0;
|
||||
del0[i][i] = 1.0;
|
||||
}
|
||||
Matrix::sz = lmax;
|
||||
*/
|
||||
nx = (int) ((x1-x0)/dx + 1.1); /* Really: 1+round((x1-x0)/dx) */
|
||||
vatab = new double[nx];
|
||||
vbtab = new double[nx];
|
||||
vctab = new double[nx];
|
||||
vdtab = new double[nx];
|
||||
vetab = new double[nx];
|
||||
|
||||
p1tab = new double[nx];
|
||||
altab = new double[nx];
|
||||
|
||||
r0rwstab = new double[nx];
|
||||
evol0tab = new double[nx];
|
||||
|
||||
in = fopen(potin_file,"r");
|
||||
|
||||
int *tag = new int[nx];
|
||||
for(i = 0; i<nx; i++) tag[i] = 0;
|
||||
|
||||
int ii;
|
||||
for(ii = 0; ii<nx; ii++) {
|
||||
|
||||
do {
|
||||
fgets(line,sizeof(line),in);
|
||||
} while(line[strspn(line," \t")] == '#');
|
||||
|
||||
metalx[0] = 0;
|
||||
|
||||
/* Read element type, mode, and pn parameter */ {
|
||||
int nf = sscanf(line,"%s %d %d %lf",metalx,&ipotx,&modex,&pnx);
|
||||
if(nf < 3) {
|
||||
printf("Error in %s() @ %s:%d: Inconsistency in potential input file (%s) "
|
||||
"at record %d:\n"
|
||||
" Expected at least three fields. Number of fields = %d\n",
|
||||
__func__,__FILE__,__LINE__,potin_file,ii,
|
||||
nf);
|
||||
exit(1);
|
||||
}
|
||||
if(modex <= 4) {
|
||||
pnx = 1.0;
|
||||
} else if(modex <= 6) {
|
||||
if(nf != 4) {
|
||||
printf("Error in %s() @ %s:%d: Inconsistency in potential input file (%s) "
|
||||
"at record %d:\n"
|
||||
" mode = %d, number of fields = %d\n",
|
||||
__func__,__FILE__,__LINE__,potin_file,ii,
|
||||
modex,nf);
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
printf("Error in %s() @ %s:%d: Inconsistency in potential input file (%s): "
|
||||
"at record %d\n"
|
||||
" Invalid mode. mode = %d\n",
|
||||
__func__,__FILE__,__LINE__,potin_file,ii,
|
||||
modex);
|
||||
}
|
||||
}
|
||||
|
||||
if(ii == 0) {
|
||||
sscanf(line,"%s %d %d %lf",metal,&ipot,&mode,&pn);
|
||||
if(modex <= 4) pn = pnx;
|
||||
} else {
|
||||
/* Check that {metal,ipot,mode}x == {metal,ipot,mode} */
|
||||
if(strcmp(metal,metalx) != 0 ||
|
||||
ipotx != ipot ||
|
||||
modex != mode ||
|
||||
pnx != pn) {
|
||||
printf("Error in %s() @ %s:%d: Inconsistency in potential input file (%s) "
|
||||
"at record %d:\n"
|
||||
"metalx != metal (%s != %s) or\n"
|
||||
"ipotx != ipot (%d != %d) or\n"
|
||||
"modex != mode (%d != %d) or\n"
|
||||
"pnx != pn (%.3f != %.3f).\n",
|
||||
__func__,__FILE__,__LINE__,potin_file,ii,
|
||||
metalx,metal,
|
||||
ipotx,ipot,
|
||||
modex,mode,
|
||||
pnx,pn);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
//printf("LINE: %s\n",line);
|
||||
//printf("metal = \'%s\' ipot = %d mode = %d\n",metalx,ipotx,modex);
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf %lf",&zval,&ivol,&rws,&mass);
|
||||
/*{
|
||||
double xi = x0 + i/((double) (nx-1)) * (x1-x0);
|
||||
double volguess = vol0 * xi*xi*xi;
|
||||
if(fabs(volguess/ivol - 1.0) > 1e-3)
|
||||
printf("Wrong volume guess, i=%d volgues=%15.5e ivol=%15.5e\n",
|
||||
i,volguess,ivol);
|
||||
}*/
|
||||
|
||||
double ifrac = (pow(ivol/vol0,1.0/3.0) - x0)/((x1-x0)/(nx-1));
|
||||
i = (int) (ifrac + 0.1);
|
||||
if(fabs(i - ifrac) > 0.01) {
|
||||
printf("Volume point not in table... ii=%d i=%d ifrac=%15.5e vol=%15.5e\n",
|
||||
ii,i,ifrac,ivol);
|
||||
printf("vol0 = %15.5e zval = %15.5e mass = %15.5e\n",vol0,zval,mass);
|
||||
exit(1);
|
||||
} else if(tag[i] == 1) {
|
||||
printf("Duplicate volume point in table.... ii=%d i=%d ifrac=%15.5e vol=%15.5e\n",
|
||||
ii,i,ifrac,ivol);
|
||||
exit(1);
|
||||
} else tag[i] = 1;
|
||||
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf %lf",&r0rwstab[i],&altab[i],&rcrws,&rmrws);
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf",&p1tab[i],&unused,&evol0tab[i]);
|
||||
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf %lf %lf",
|
||||
&vatab[i],&vbtab[i],&vctab[i],&vdtab[i],&vetab[i]);
|
||||
if(ipot == 1) {
|
||||
vatab[i] *= vdtab[i];
|
||||
vctab[i] *= vctab[i];
|
||||
vetab[i] *= vetab[i];
|
||||
}
|
||||
|
||||
fgets(line,sizeof(line),in);
|
||||
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf",&r0x,&r1x,&drx);
|
||||
nrx = (int) ((r1x-r0x)/drx + 1.1); /* Really: 1+round((r1-r0)/dr) */
|
||||
|
||||
if(ii == 0) {
|
||||
r0 = r0x; r1 = r1x; dr = drx; nr = nrx;
|
||||
vpairtab = new double[nx*nr];
|
||||
} else {
|
||||
/* Check that {r0,r1,dr,nr}x == {r0,r1,dr,nr} */
|
||||
}
|
||||
|
||||
for(j = 0; j<nr; j++) {
|
||||
double rj,ktan,dvdvol;
|
||||
fgets(line,sizeof(line),in);
|
||||
sscanf(line,"%lf %lf %lf %lf",
|
||||
&rj,&vpairtab[i*nr+j],&ktan,&dvdvol);
|
||||
|
||||
{ /* Add screening and fl() part to pair energy table */
|
||||
|
||||
double al = altab[i];
|
||||
double p1 = p1tab[i];
|
||||
|
||||
int bscreen = (al > 0.0);
|
||||
|
||||
double xi = x0 + i/((double) (nx-1)) * (x1-x0);
|
||||
double rws = rws_scale * xi;
|
||||
|
||||
double r0rws = r0rwstab[i];
|
||||
double r00 = r0rws*rws,rp = 1.8*rws;
|
||||
if(bscreen == 0) r0rws = 10.0;
|
||||
double alp = al,alm = al;
|
||||
if(mode == 2 || mode == 4 || mode == 6) alm = 125.0;
|
||||
al = alp;
|
||||
|
||||
double r = r0 + j*(r1-r0)/(nr-1);
|
||||
|
||||
double rrws = r/rws;
|
||||
//double rsqr = r*r;
|
||||
// double fl(double r,int mode,double rp,double p1,double al,double r0)
|
||||
double flr = fl(r,mode,rp,p1,al,r00,pn);
|
||||
double fl2 = flr*flr;
|
||||
double v2a = vatab[i]*fl2*fl2;
|
||||
double v2b = vbtab[i]*fl2;
|
||||
double fscr = 1.0;
|
||||
|
||||
if(bscreen == 1 && rrws >= r0rws) {
|
||||
double arg = rrws/r0rwstab[i];
|
||||
double arg1 = arg - 1.0;
|
||||
double arg12 = arg1*arg1;
|
||||
double f,dp;
|
||||
if(mode <= 2) {
|
||||
f = fgauss(arg,al);
|
||||
dp=2.*al*arg*arg1;
|
||||
}
|
||||
else {
|
||||
f = hgauss(arg,al);
|
||||
double arg13 = arg1*arg12;
|
||||
dp=2.0*al*al*arg*arg13/(1.+al*arg12);
|
||||
}
|
||||
fscr = f*f;
|
||||
}
|
||||
|
||||
double vpair_tmp = vpairtab[i*nr+j];
|
||||
vpairtab[i*nr+j] = vpairtab[i*nr+j]*fscr + v2a - v2b;
|
||||
|
||||
if(0) if(fabs(vol-ivol) < 0.01) {
|
||||
static FILE *xfile = NULL;
|
||||
if(j == 0) {
|
||||
xfile = fopen("mgpt5-pot.dat","w");
|
||||
fprintf(xfile,"%%%% vol = %15.5e ivol = %15.5e i = %d ii = %d\n",
|
||||
vol,ivol,i,ii);
|
||||
}
|
||||
fprintf(xfile,"%15.5e %15.5e %15.5e %15.5e %15.5e %20.10e\n",
|
||||
r,vpair_tmp,fscr,v2a,v2b,flr);
|
||||
if(j == nr-1) fclose(xfile);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
fclose(in);
|
||||
|
||||
for(i = 0; i<nx; i++)
|
||||
if(tag[i] == 0) {
|
||||
printf("Volume point missing in table. i = %d\n",i);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Make table */
|
||||
x = pow(vol/vol0,1.0/3.0);
|
||||
dxdv = 1.0/(3.0*vol0*x*x);
|
||||
|
||||
C = new double[(nr > nx) ? nr : nx][4];
|
||||
makespline(nx,1,vatab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&va,&dva,&unused);
|
||||
dva *= dxdv;
|
||||
|
||||
makespline(nx,1,vbtab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&vb,&dvb,&unused);
|
||||
dvb *= dxdv;
|
||||
|
||||
makespline(nx,1,vctab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&vc,&dvc,&unused);
|
||||
dvc *= dxdv;
|
||||
|
||||
makespline(nx,1,vdtab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&vd,&dvd,&unused);
|
||||
dvd *= dxdv;
|
||||
|
||||
makespline(nx,1,vetab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&ve,&dve,&unused);
|
||||
dve *= dxdv;
|
||||
|
||||
makespline(nx,1,p1tab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&p1,&dp1,&unused);
|
||||
dp1 *= dxdv;
|
||||
|
||||
makespline(nx,1,altab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&al,&dal,&unused);
|
||||
dal *= dxdv;
|
||||
if(mode == 2 || mode == 4 || mode == 6) {
|
||||
al = 125.0;
|
||||
dal = 0.0;
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
double dr0rws;
|
||||
makespline(nx,1,r0rwstab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&r0rws,&dr0rws,&unused);
|
||||
dr0rws *= dxdv;
|
||||
rws = rws_scale*x;
|
||||
r00 = r0rws * rws;
|
||||
dr00 = dr0rws*rws + r0rws*rws_scale*dxdv;
|
||||
rp = 1.8 * rws;
|
||||
drp = 1.8 * rws_scale*dxdv;
|
||||
}
|
||||
|
||||
makespline(nx,1,evol0tab,C);
|
||||
evalspline(nx-1,x0,x1,C,x,&evol0,&devol0,&unused);
|
||||
devol0 *= dxdv;
|
||||
|
||||
if(1) {
|
||||
printf("%% READPOT PARAMETERS:\n");
|
||||
|
||||
printf("%% ddl = %15.5e %15.5e %15.5e %15.5e\n",ddl[1],ddl[2],ddl[3],ddl[4]);
|
||||
printf("%% anorm3 = %15.5e anorm4 = %15.5e\n",anorm3,anorm4);
|
||||
|
||||
printf("%% x = %15.5e pn = %15.5e\n",x,pn);
|
||||
printf("%% va = %15.5e dva = %15.5e\n",va,dva);
|
||||
printf("%% vb = %15.5e dvb = %15.5e\n",vb,dvb);
|
||||
printf("%% vc = %15.5e dvc = %15.5e\n",vc,dvc);
|
||||
printf("%% vd = %15.5e dvd = %15.5e\n",vd,dvd);
|
||||
printf("%% ve = %15.5e dve = %15.5e\n",ve,dve);
|
||||
printf("%% p1 = %15.5e dp1 = %15.5e\n",p1,dp1);
|
||||
printf("%% al = %15.5e dal = %15.5e\n",al,dal);
|
||||
printf("%% rp = %15.5e drp = %15.5e\n",rp,drp);
|
||||
printf("%% r00= %15.5e dr00= %15.5e\n",r00,dr00);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
y = new double[nr];
|
||||
dy = new double[nr];
|
||||
|
||||
for(j = 0; j<nr; j++) {
|
||||
double d2y;
|
||||
makespline(nx,nr,&vpairtab[j],C);
|
||||
evalspline(nx-1,x0,x1,C,x,&y[j],&dy[j],&d2y);
|
||||
dy[j] *= dxdv;
|
||||
}
|
||||
vpair_spline = new double[nr-1][4];
|
||||
dvpair_spline = new double[nr-1][4];
|
||||
makespline(nr,1,y,vpair_spline);
|
||||
makespline(nr,1,dy,dvpair_spline);
|
||||
|
||||
|
||||
rcrit = rcrws * rws;
|
||||
rmax = rmrws * rws;
|
||||
|
||||
delete[] dy;
|
||||
delete[] y;
|
||||
delete[] C;
|
||||
delete[] evol0tab;
|
||||
delete[] r0rwstab;
|
||||
delete[] altab;
|
||||
delete[] p1tab;
|
||||
delete[] vetab;
|
||||
delete[] vdtab;
|
||||
delete[] vctab;
|
||||
delete[] vbtab;
|
||||
delete[] vatab;
|
||||
}
|
||||
|
||||
/*
|
||||
int main(int argc,char *argv[]) {
|
||||
double vol = atof(argv[3]);
|
||||
int n = 25,i;
|
||||
|
||||
printf("%% parmin = %s\n%% potin = %s\n%% vol = %15.5e\n",
|
||||
argv[1],argv[2],vol);
|
||||
|
||||
readpot(argv[1],argv[2],vol);
|
||||
|
||||
for(i = 0; i<n; i++) {
|
||||
double x,u,f,vir,dy,d2y;
|
||||
|
||||
x = r0 + i*(r1-r0)/(n-1);
|
||||
evalspline(nr-1,r0,r1,vpair_spline,x,&u,&f,&d2y);
|
||||
evalspline(nr-1,r0,r1,dvpair_spline,x,&vir,&dy,&d2y);
|
||||
printf(" %15.5e %15.5e %15.5e %15.5e\n",
|
||||
x,u,f,vir);
|
||||
}
|
||||
|
||||
|
||||
delete[] dvpair_spline;
|
||||
delete[] vpair_spline;
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
418
src/USER-MGPT/mgpt_readpot.h
Normal file
@ -0,0 +1,418 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef READPOT__
|
||||
#define READPOT__
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include "mgpt_splinetab.h"
|
||||
|
||||
struct potdata {
|
||||
double va,vb,vc,vd,ve,p1,al,rp,r00,pn;
|
||||
double dva,dvb,dvc,dvd,dve,dp1,dal,drp,dr00;
|
||||
double evol0,devol0;
|
||||
double (*vpair_spline)[4],(*dvpair_spline)[4];
|
||||
double r0,r1;
|
||||
int nr;
|
||||
|
||||
double mass,rcrit,rmax;
|
||||
|
||||
int lang,lmax;
|
||||
double anorm3,anorm4;
|
||||
double ddl[5];
|
||||
|
||||
int ipot,mode;
|
||||
char metal[80];
|
||||
|
||||
double input_vol;
|
||||
|
||||
void readpot(const char *parmin_file,const char *potin_file,double vol);
|
||||
|
||||
void eval_pot(double r,double *e_p,double *f_p) {
|
||||
double d2y;
|
||||
evalspline(nr-1,r0,r1,vpair_spline,r,e_p,f_p,&d2y);
|
||||
}
|
||||
|
||||
void eval_vir(double r,double *v_p) {
|
||||
double dy,d2y;
|
||||
evalspline(nr-1,r0,r1,dvpair_spline,r,v_p,&dy,&d2y);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
struct potdata2 {
|
||||
typedef double (*spline)[4];
|
||||
spline va,vb,vc,vd,ve,p1,al,rp,r00;
|
||||
spline dva,dvb,dvc,dvd,dve,dp1,dal,drp,dr00;
|
||||
spline evol0,devol0;
|
||||
double (*vpair)[4][4],(*dvpair)[4][4];
|
||||
double r0,r1,T0,T1;
|
||||
int nr,nt;
|
||||
|
||||
potdata *potlist;
|
||||
|
||||
double mass,rcrit,rmax;
|
||||
|
||||
int lang,lmax;
|
||||
spline ddl[5];
|
||||
|
||||
int ipot,mode;
|
||||
char metal[80];
|
||||
|
||||
double input_vol;
|
||||
|
||||
/* Functions to retrieve temperature dependent parameters */
|
||||
|
||||
double eval_tdep(spline y,double T) {
|
||||
double f,df,d2f;
|
||||
|
||||
if(0) if(T != 3000.0)
|
||||
printf("%s:%d: Error, T = %.3f\n",__FILE__,__LINE__,T);
|
||||
evalspline(nt-1,T0,T1,y,T,&f,&df,&d2f);
|
||||
return f;
|
||||
}
|
||||
double eval_tdepderiv(spline y,double T) {
|
||||
double f,df,d2f;
|
||||
|
||||
if(0) if(T != 3000.0)
|
||||
printf("%s:%d: Error, T = %.3f\n",__FILE__,__LINE__,T);
|
||||
evalspline(nt-1,T0,T1,y,T,&f,&df,&d2f);
|
||||
return df;
|
||||
}
|
||||
|
||||
|
||||
#define make_get(param) \
|
||||
double get_##param(double T) { return eval_tdep(param,T); } \
|
||||
double get_d##param(double T) { return eval_tdep(d##param,T); } \
|
||||
double get_##param##_Tderiv(double T) { return eval_tdepderiv(param,T); }
|
||||
|
||||
/*
|
||||
#define make_get(param) \
|
||||
double get_##param(double T) { if(T != 3000.0) printf("%s:%d: Error, T = %.3f\n",__FILE__,__LINE__,T); return potlist[3].param; } \
|
||||
double get_d##param(double T) { if(T != 3000.0) printf("%s:%d: Error, T = %.3f\n",__FILE__,__LINE__,T); return potlist[3].d##param; } \
|
||||
double get_##param##_Tderiv(double T) { if(T != 3000.0) printf("%s:%d: Error, T = %.3f\n",__FILE__,__LINE__,T); return 0.0; }
|
||||
*/
|
||||
|
||||
make_get(va) make_get(vb) make_get(vc) make_get(vd) make_get(ve)
|
||||
make_get(p1) make_get(al) make_get(rp) make_get(r00) make_get(evol0)
|
||||
#undef make_get
|
||||
|
||||
void get_anorm34(double T,double anorm3_p[1],double anorm4_p[1]) {
|
||||
double
|
||||
s = eval_tdep(ddl[1],T),
|
||||
p = eval_tdep(ddl[2],T),
|
||||
d = eval_tdep(ddl[3],T),
|
||||
f = eval_tdep(ddl[4],T);
|
||||
double ss = s*s, pp = p*p, dd = d*d, ff = f*f;
|
||||
anorm3_p[0] = s*ss + 2.0*( p*pp + d*dd + f*ff);
|
||||
anorm4_p[0] = ss*ss + 2.0*(pp*pp + dd*dd + ff*ff);
|
||||
}
|
||||
double get_anorm3(double T) {
|
||||
double a3,a4;
|
||||
get_anorm34(T,&a3,&a4);
|
||||
return a3;
|
||||
}
|
||||
double get_anorm4(double T) {
|
||||
double a3,a4;
|
||||
get_anorm34(T,&a3,&a4);
|
||||
return a4;
|
||||
}
|
||||
void get_anorm34_Tderiv(double T,double danorm3_p[1],double danorm4_p[1]) {
|
||||
double
|
||||
s = eval_tdep(ddl[1],T), ds = eval_tdepderiv(ddl[1],T),
|
||||
p = eval_tdep(ddl[2],T), dp = eval_tdepderiv(ddl[2],T),
|
||||
d = eval_tdep(ddl[3],T), d_d = eval_tdepderiv(ddl[3],T),
|
||||
f = eval_tdep(ddl[4],T), df = eval_tdepderiv(ddl[4],T);
|
||||
double ss = s*s, pp = p*p, dd = d*d, ff = f*f;
|
||||
danorm3_p[0] = 3.0*ds*ss + 6.0*( dp*pp + d_d*dd + df*ff);
|
||||
danorm4_p[0] = 4.0*ds*s*ss + 8.0*(dp*p*pp + d_d*d*dd + df*f*ff);
|
||||
}
|
||||
double get_anorm3_Tderiv(double T) {
|
||||
double da3,da4;
|
||||
get_anorm34_Tderiv(T,&da3,&da4);
|
||||
return da3;
|
||||
}
|
||||
double get_anorm4_Tderiv(double T) {
|
||||
double da3,da4;
|
||||
get_anorm34_Tderiv(T,&da3,&da4);
|
||||
return da4;
|
||||
}
|
||||
|
||||
/* ... */
|
||||
|
||||
|
||||
|
||||
char * parsefname(const char *nametemplate,int *i0,int *i1,int *stride) {
|
||||
char *s,*p;
|
||||
|
||||
if(0) {
|
||||
s = new char[strlen(nametemplate)+1];
|
||||
} else {
|
||||
int len = 0;
|
||||
while(nametemplate[len] != '\0') len = len + 1;
|
||||
s = new char[len+1];
|
||||
}
|
||||
strcpy(s,nametemplate);
|
||||
|
||||
p = strchr(s,'{');
|
||||
if(p != NULL) {
|
||||
if(sscanf(p+1,"%d:%d:%d",i0,stride,i1) != 3) {
|
||||
fprintf(stderr,"Error in template (\'%s\'), can not parse range.\n",nametemplate);
|
||||
exit(1);
|
||||
}
|
||||
*p = '\0';
|
||||
} else {
|
||||
*i0 = -1;
|
||||
*i1 = -1;
|
||||
*stride = 1;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
spline maketempspline(int n,potdata data[],double *ptr) {
|
||||
int stride = &(data[1].va) - &(data[0].va);
|
||||
spline s = new double[n-1][4];
|
||||
|
||||
makespline(n,stride,ptr,s);
|
||||
return s;
|
||||
}
|
||||
|
||||
void readpot2(const char *parmin_template,const char *potin_template,double vol) {
|
||||
int i0,i1,stride,i0x,i1x,stridex;
|
||||
char *parmin_file = parsefname(parmin_template,&i0 ,&i1 ,&stride );
|
||||
char *potin_file = parsefname( potin_template,&i0x,&i1x,&stridex);
|
||||
int ntemp;
|
||||
|
||||
potdata2 &tdeppot = *this;
|
||||
|
||||
if(i0x != i0 || i1x != i1 || stridex != stride) {
|
||||
fprintf(stderr,"Inconsistent templates. parmin_template=\'%s\', potin_template=\'%s\'\n",
|
||||
parmin_template,potin_template);
|
||||
exit(1);
|
||||
}
|
||||
if(i0 < 0 || i1 < i0 || stride <= 0 || (i1-i0)/stride+1 < 4) {
|
||||
fprintf(stderr,"Improper temperature range. Need at least 4 temperature samples. "
|
||||
"i0=%d,i1=%d,stride=%d,basename=\'%s\'\n",
|
||||
i0,i1,stride,parmin_file);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
const char *parmin_suffix = strchr(parmin_template,'}')+1;
|
||||
const char * potin_suffix = strchr( potin_template,'}')+1;
|
||||
|
||||
if(parmin_suffix-1 == NULL) {
|
||||
fprintf(stderr,"No closing }. parmin_template=\'%s\'\n",
|
||||
parmin_template);
|
||||
exit(1);
|
||||
}
|
||||
if(potin_suffix-1 == NULL) {
|
||||
fprintf(stderr,"No closing }. potin_template=\'%s\'\n",
|
||||
potin_template);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("parmin_template = %s\n"
|
||||
"parmin_file = %s\n"
|
||||
"parmin_suffix = %s\n"
|
||||
"T0=%d , T1=%d , stride=%d\n",
|
||||
parmin_template,parmin_file,parmin_suffix,i0,i1,stride);
|
||||
|
||||
ntemp = (i1-i0)/stride + 1;
|
||||
/*potdata **/potlist = new potdata[ntemp];
|
||||
char *parend = parmin_file+strlen(parmin_file);
|
||||
char *potend = potin_file +strlen( potin_file);
|
||||
for(int k=0; k<ntemp; k++) {
|
||||
sprintf(parend,"%d%s",i0+k*stride,parmin_suffix);
|
||||
sprintf(potend,"%d%s",i0+k*stride,potin_suffix);
|
||||
|
||||
|
||||
printf("Calling readpot(%s,%s,%.3f)\n",
|
||||
parmin_file,potin_file,vol);
|
||||
potlist[k].readpot(parmin_file,potin_file,vol);
|
||||
|
||||
if(k > 0) {
|
||||
if(potlist[k].nr != potlist[k-1].nr) {
|
||||
fprintf(stderr,"nr differs between file %d and %d. Exiting.\n",
|
||||
k,k-1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(potlist[k].r0 != potlist[k-1].r0) {
|
||||
fprintf(stderr,"r0 differs between file %d and %d. Exiting.\n",
|
||||
k,k-1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(potlist[k].r1 != potlist[k-1].r1) {
|
||||
fprintf(stderr,"r1 differs between file %d and %d. Exiting.\n",
|
||||
k,k-1);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
tdeppot.r0 = potlist[0].r0;
|
||||
tdeppot.r1 = potlist[0].r1;
|
||||
tdeppot.nr = potlist[0].nr;
|
||||
tdeppot.T0 = i0;
|
||||
tdeppot.T1 = i1;
|
||||
tdeppot.nt = ntemp;
|
||||
|
||||
tdeppot.mass = potlist[0].mass;
|
||||
tdeppot.rcrit = potlist[0].rcrit;
|
||||
tdeppot.rmax = potlist[0].rmax;
|
||||
|
||||
tdeppot.lang = potlist[0].lang;
|
||||
tdeppot.lmax = potlist[0].lmax;
|
||||
tdeppot.ipot = potlist[0].ipot;
|
||||
tdeppot.mode = potlist[0].mode;
|
||||
tdeppot.input_vol = potlist[0].input_vol;
|
||||
|
||||
strncpy(tdeppot.metal,potlist[0].metal,sizeof(tdeppot.metal)/sizeof(char));
|
||||
tdeppot.metal[sizeof(tdeppot.metal)/sizeof(char) - 1] = '\0';
|
||||
|
||||
delete[] parmin_file;
|
||||
delete[] potin_file;
|
||||
|
||||
// Base parameters
|
||||
tdeppot.va = maketempspline(ntemp,potlist,&(potlist[0].va));
|
||||
tdeppot.vb = maketempspline(ntemp,potlist,&(potlist[0].vb));
|
||||
tdeppot.vc = maketempspline(ntemp,potlist,&(potlist[0].vc));
|
||||
tdeppot.vd = maketempspline(ntemp,potlist,&(potlist[0].vd));
|
||||
tdeppot.ve = maketempspline(ntemp,potlist,&(potlist[0].ve));
|
||||
|
||||
tdeppot.p1 = maketempspline(ntemp,potlist,&(potlist[0].p1));
|
||||
tdeppot.al = maketempspline(ntemp,potlist,&(potlist[0].al));
|
||||
tdeppot.rp = maketempspline(ntemp,potlist,&(potlist[0].rp));
|
||||
tdeppot.r00 = maketempspline(ntemp,potlist,&(potlist[0].r00));
|
||||
|
||||
tdeppot.evol0 = maketempspline(ntemp,potlist,&(potlist[0].evol0));
|
||||
|
||||
// Volume derivatives of base parameters
|
||||
tdeppot.dva = maketempspline(ntemp,potlist,&(potlist[0].dva));
|
||||
tdeppot.dvb = maketempspline(ntemp,potlist,&(potlist[0].dvb));
|
||||
tdeppot.dvc = maketempspline(ntemp,potlist,&(potlist[0].dvc));
|
||||
tdeppot.dvd = maketempspline(ntemp,potlist,&(potlist[0].dvd));
|
||||
tdeppot.dve = maketempspline(ntemp,potlist,&(potlist[0].dve));
|
||||
|
||||
tdeppot.dp1 = maketempspline(ntemp,potlist,&(potlist[0].dp1));
|
||||
tdeppot.dal = maketempspline(ntemp,potlist,&(potlist[0].dal));
|
||||
tdeppot.drp = maketempspline(ntemp,potlist,&(potlist[0].drp));
|
||||
tdeppot.dr00 = maketempspline(ntemp,potlist,&(potlist[0].dr00));
|
||||
|
||||
tdeppot.devol0 = maketempspline(ntemp,potlist,&(potlist[0].devol0));
|
||||
|
||||
|
||||
tdeppot.ddl[0] = 0;
|
||||
for(int k = 1; k<=4; k++)
|
||||
tdeppot.ddl[k] = maketempspline(ntemp,potlist,&(potlist[0].ddl[k]));
|
||||
|
||||
{
|
||||
double *v = new double[ntemp];
|
||||
double (*C)[4] = new double[ntemp-1][4];
|
||||
|
||||
int sz = (nr-1)*(ntemp-1);
|
||||
//printf("Allocation:: nr=%d ntemp=%d size=%d\n",nr,ntemp,sz);
|
||||
tdeppot.vpair = new double[sz][4][4];
|
||||
tdeppot.dvpair = new double[sz][4][4];
|
||||
/*
|
||||
printf("vpair = %llx , dvpair = %llx",
|
||||
(unsigned long long int) tdeppot.vpair,
|
||||
(unsigned long long int) tdeppot.dvpair);
|
||||
printf(" @@@@@@@@@@@@@@ nr = %d\n",nr);
|
||||
*/
|
||||
for(int i = 0; i<nr-1; i++)
|
||||
for(int j = 0; j<4; j++) {
|
||||
/*
|
||||
if(j == 5)
|
||||
printf(" ############### i=%d\n",i);
|
||||
*/
|
||||
|
||||
/* Make pair interaction interpolation functions */
|
||||
for(int k = 0; k<ntemp; k++) {
|
||||
if(0) if(i >= potlist[k].nr-1)
|
||||
printf("Index error, local_nr=%d, k=%d, i=%d, nr=%d\n",nr,k,i,potlist[k].nr);
|
||||
v[k] = potlist[k].vpair_spline[i][j];
|
||||
}
|
||||
makespline(ntemp,1,v,C);
|
||||
|
||||
for(int k = 0; k<ntemp-1; k++)
|
||||
for(int m = 0; m<4; m++)
|
||||
tdeppot.vpair[k*(nr-1) + i][j][m] = C[k][m];
|
||||
|
||||
/* Make pair virial interpolation functions */
|
||||
for(int k = 0; k<ntemp; k++)
|
||||
v[k] = potlist[k].dvpair_spline[i][j];
|
||||
makespline(ntemp,1,v,C);
|
||||
|
||||
for(int k = 0; k<ntemp-1; k++)
|
||||
for(int m = 0; m<4; m++)
|
||||
tdeppot.dvpair[k*(nr-1) + i][j][m] = C[k][m];
|
||||
|
||||
}
|
||||
|
||||
delete[] C;
|
||||
delete[] v;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void eval2Dspline(double fun[][4][4],double r,double T,double *e_p,double *f_p,double *dedT_p) {
|
||||
double C[4],dC[4],dd;
|
||||
double Tfrac = (T-T0)/(T1-T0) * (nt-1);
|
||||
double rfrac = (r-r0)/(r1-r0) * (nr-1);
|
||||
int k = (int) Tfrac;
|
||||
int i = (int) rfrac;
|
||||
int j;
|
||||
|
||||
if(k < 0) k = 0;
|
||||
else if(k > nt-2) k = nt-2;
|
||||
|
||||
if(i < 0) i = 0;
|
||||
else if(i > nr-2) i = nr-2;
|
||||
|
||||
/*
|
||||
printf("eval_pot nr=%d nt=%d\n",nr,nt);
|
||||
printf("eval_pot r=%.3f T=%.3f k=%d i=%d\n",
|
||||
r,T,k,i);
|
||||
printf("Tfrac=%.3f Tfrac-k=%.3f\n",Tfrac,Tfrac-k);
|
||||
printf("rfrac=%.3f rfrac-i=%.3f\n",rfrac,rfrac-i);
|
||||
*/
|
||||
for(j = 0; j<4; j++) {
|
||||
evalcubic(fun[k*(nr-1) + i][j],Tfrac-k,&C[j],&dC[j],&dd);
|
||||
dC[j] = dC[j] * ((nt-1) / (T1-T0));
|
||||
}
|
||||
/*
|
||||
printf("C coeff: %.3e %.3e %.3e %.3e\n",
|
||||
C[0],C[1],C[2],C[3]);
|
||||
*/
|
||||
evalcubic(C,rfrac-i,e_p,f_p,&dd);
|
||||
evalcubic(dC,rfrac-i,dedT_p,&dd,&dd);
|
||||
*f_p *= (nr-1) / (r1-r0);
|
||||
}
|
||||
void eval_pot(double r,double T,double *e_p,double *f_p,double *dedT_p) {
|
||||
eval2Dspline(vpair,r,T,e_p,f_p,dedT_p);
|
||||
}
|
||||
void eval_vir(double r,double T,double *v_p) {
|
||||
double vf,dvdT;
|
||||
eval2Dspline(dvpair,r,T,v_p,&vf,&dvdT);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
125
src/USER-MGPT/mgpt_splinetab.cpp
Normal file
@ -0,0 +1,125 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "mgpt_splinetab.h"
|
||||
|
||||
static void trisolve(int n,double A[][3],double y[]) {
|
||||
/* Backward elimination */
|
||||
for(int i = n-1; i>0; i--) {
|
||||
double q = A[i-1][2] / A[i][1];
|
||||
A[i-1][1] = A[i-1][1] - q*A[i][0];
|
||||
y[i-1] = y[i-1] - q*y[i];
|
||||
}
|
||||
|
||||
/* Forward substitution */
|
||||
y[0] = y[0] / A[0][1];
|
||||
for(int i = 1; i<n; i++)
|
||||
y[i] = (y[i] - A[i][0]*y[i-1]) / A[i][1];
|
||||
}
|
||||
|
||||
void makespline(int ntab,int stride,double tab[],double C[][4]) {
|
||||
int n = 3*(ntab-1);
|
||||
|
||||
double (*A)[3] = new double[n][3];
|
||||
double *y = new double[n];
|
||||
|
||||
double h_left,h_right,d;
|
||||
int i,j;
|
||||
|
||||
/* Second order second derivative approximation
|
||||
at end points. */
|
||||
h_left =
|
||||
2.0*tab[stride*0] - 5.0*tab[stride*1] +
|
||||
4.0*tab[stride*2] - 1.0*tab[stride*3];
|
||||
h_right =
|
||||
2.0*tab[stride*(ntab-1)] - 5.0*tab[stride*(ntab-2)] +
|
||||
4.0*tab[stride*(ntab-3)] - 1.0*tab[stride*(ntab-4)];
|
||||
|
||||
A[0][0] = 0.0; A[0][1] = 0.0; A[0][2] = 2.0; y[0] = h_left;
|
||||
for(i = 1; i<ntab-1; i++) {
|
||||
j = 3*(i-1);
|
||||
d = tab[stride*i] - tab[stride*(i-1)];
|
||||
A[j+1][0] = 1.0; A[j+1][1] = 1.0; A[j+1][2] = 1.0; y[j+1] = d;
|
||||
A[j+2][0] = 1.0; A[j+2][1] = 2.0; A[j+2][2] = -1.0; y[j+2] = -d;
|
||||
A[j+3][0] = 2.0; A[j+3][1] = 2.0; A[j+3][2] = -2.0; y[j+3] = 2.0*d;
|
||||
}
|
||||
|
||||
j = 3*(ntab-2);
|
||||
d = tab[stride*(ntab-1)] - tab[stride*(ntab-2)];
|
||||
A[j+1][0] = 1.0; A[j+1][1] = 1.0; A[j+1][2] = 1.0; y[j+1] = d;
|
||||
A[j+2][0] = 2.0; A[j+2][1] = 6.0; A[j+2][2] = 0.0; y[j+2] = h_right;
|
||||
|
||||
trisolve(n,A,y);
|
||||
|
||||
for(i = 0; i<ntab-1; i++) {
|
||||
C[i][0] = tab[stride*i];
|
||||
C[i][1] = y[3*i+0];
|
||||
C[i][2] = y[3*i+1];
|
||||
C[i][3] = y[3*i+2];
|
||||
}
|
||||
|
||||
delete[] y;
|
||||
delete[] A;
|
||||
}
|
||||
|
||||
void evalcubic(double p[4],double x,double *y,double *dy,double *d2y) {
|
||||
double t1,t2,t3;
|
||||
|
||||
t1 = p[2] + x*p[3];
|
||||
t2 = p[1] + x*t1;
|
||||
|
||||
t3 = t1 + x*p[3];
|
||||
|
||||
*y = p[0] + x*t2;
|
||||
*dy = (t2 + x*t3);
|
||||
*d2y = 2.0*(t3 + x*p[3]);
|
||||
}
|
||||
|
||||
void evalspline(int n,double x0,double x1,double C[][4],
|
||||
double x,double *y,double *dy,double *d2y) {
|
||||
double xhat,t1,t2,t3;
|
||||
double *p;
|
||||
int idx;
|
||||
double dxinv = n/(x1-x0);
|
||||
xhat = (x-x0)/(x1-x0) * n;
|
||||
|
||||
idx = (int) xhat;
|
||||
if(idx < 0) idx = 0;
|
||||
if(idx > n-1) idx = n-1;
|
||||
xhat = xhat - idx;
|
||||
p = C[idx];
|
||||
|
||||
if(0) {
|
||||
*y = p[0] + xhat*(p[1] + xhat*(p[2] + xhat*p[3]));
|
||||
|
||||
*dy = p[1] + xhat*(2*p[2] + xhat*3*p[3]);
|
||||
*d2y = 2*p[2] + xhat*6*p[3];
|
||||
|
||||
*dy *= dxinv;
|
||||
*d2y *= dxinv*dxinv;
|
||||
} else {
|
||||
t1 = p[2] + xhat*p[3];
|
||||
t2 = p[1] + xhat*t1;
|
||||
|
||||
t3 = t1 + xhat*p[3];
|
||||
|
||||
*y = p[0] + xhat*t2;
|
||||
*dy = (t2 + xhat*t3)*dxinv;
|
||||
*d2y = 2.0*(t3 + xhat*p[3])*(dxinv*dxinv);
|
||||
}
|
||||
}
|
||||
62
src/USER-MGPT/mgpt_splinetab.h
Normal file
@ -0,0 +1,62 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef SPLINETAB__
|
||||
#define SPLINETAB__
|
||||
|
||||
|
||||
/*
|
||||
Given a table of ntab data points tab, assumed to be sampled
|
||||
on an equidistant grid, compute coefficients of interpolating
|
||||
cubic polynimials, one per interval (i.e. ntab-1 polynomials).
|
||||
|
||||
Input point i is located at tab[i*stride].
|
||||
|
||||
Coefficients of output polynomial j are at C[j][0..3];
|
||||
|
||||
The piecewise polynimials form a C^2 function which
|
||||
approximates the input function to fourth order.
|
||||
|
||||
The computational cost of this routine is O(ntab).
|
||||
*/
|
||||
void makespline(int ntab,int stride,double tab[],double C[][4]);
|
||||
|
||||
|
||||
/*
|
||||
Evaluate the spline function with coefficients in C (as returned
|
||||
by makespline()) in point x.
|
||||
x0 and x1 are the end points of the x points corresponding to
|
||||
original input interval tab of makespline(). n is ntab-1.
|
||||
|
||||
The output is the value (y) of the interpolating spline, and the
|
||||
first (dy) and second (d2y) dervatives.
|
||||
|
||||
The computational cost of this routine is O(1).
|
||||
*/
|
||||
void evalspline(int n,double x0,double x1,double C[][4],
|
||||
double x,double *y,double *dy,double *d2y);
|
||||
|
||||
|
||||
/* Evaluate cubic polynomial represented by p in point x.
|
||||
The first and second derivatives are also returned.
|
||||
This can be used to evaluate one of the sub-polynomials
|
||||
in a spline. */
|
||||
void evalcubic(double p[4],double x,double *y,double *dy,double *d2y);
|
||||
|
||||
#endif
|
||||
|
||||
202
src/USER-MGPT/mgpt_ttr_5022.c.h
Normal file
@ -0,0 +1,202 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <xmmintrin.h>
|
||||
|
||||
#include <pmmintrin.h>
|
||||
|
||||
void ttr_5_8_3_v2r2(const double * restrict A,
|
||||
const double * restrict B0,double * restrict tout0,
|
||||
const double * restrict B1,double * restrict tout1,
|
||||
const double * restrict B2,double * restrict tout2) {
|
||||
__m128d Areg1,Areg2;
|
||||
__m128d B0reg1,B0reg2,B1reg1,B1reg2,B2reg1,B2reg2;
|
||||
__m128d T0reg1,T0reg2,T1reg1,T1reg2,T2reg1,T2reg2;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[0]) ;
|
||||
T0reg1 = _mm_load_pd(&B0[0]) ;
|
||||
T1reg1 = _mm_load_pd(&B1[0]) ;
|
||||
T2reg1 = _mm_load_pd(&B2[0]) ;
|
||||
T0reg1 = _mm_mul_pd(T0reg1,Areg1) ;
|
||||
T1reg1 = _mm_mul_pd(T1reg1,Areg1) ;
|
||||
T2reg1 = _mm_mul_pd(T2reg1,Areg1) ;
|
||||
|
||||
Areg2 = _mm_load_pd(&A[2]) ;
|
||||
T0reg2 = _mm_load_pd(&B0[2]) ;
|
||||
T1reg2 = _mm_load_pd(&B1[2]) ;
|
||||
T2reg2 = _mm_load_pd(&B2[2]) ;
|
||||
T0reg2 = _mm_mul_pd(T0reg2,Areg2) ;
|
||||
T1reg2 = _mm_mul_pd(T1reg2,Areg2) ;
|
||||
T2reg2 = _mm_mul_pd(T2reg2,Areg2) ;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[4]) ;
|
||||
B0reg1 = _mm_load_pd(&B0[4]) ;
|
||||
B1reg1 = _mm_load_pd(&B1[4]) ;
|
||||
B2reg1 = _mm_load_pd(&B2[4]) ;
|
||||
B0reg1 = _mm_mul_pd(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_pd(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_pd(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_pd(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_pd(&A[8]) ;
|
||||
B0reg2 = _mm_load_pd(&B0[8]) ;
|
||||
B1reg2 = _mm_load_pd(&B1[8]) ;
|
||||
B2reg2 = _mm_load_pd(&B2[8]) ;
|
||||
B0reg2 = _mm_mul_pd(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_pd(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_pd(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_pd(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_pd(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_pd(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[10]) ;
|
||||
B0reg1 = _mm_load_pd(&B0[10]) ;
|
||||
B1reg1 = _mm_load_pd(&B1[10]) ;
|
||||
B2reg1 = _mm_load_pd(&B2[10]) ;
|
||||
B0reg1 = _mm_mul_pd(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_pd(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_pd(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_pd(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_pd(&A[12]) ;
|
||||
B0reg2 = _mm_load_pd(&B0[12]) ;
|
||||
B1reg2 = _mm_load_pd(&B1[12]) ;
|
||||
B2reg2 = _mm_load_pd(&B2[12]) ;
|
||||
B0reg2 = _mm_mul_pd(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_pd(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_pd(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_pd(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_pd(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_pd(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[16]) ;
|
||||
B0reg1 = _mm_load_pd(&B0[16]) ;
|
||||
B1reg1 = _mm_load_pd(&B1[16]) ;
|
||||
B2reg1 = _mm_load_pd(&B2[16]) ;
|
||||
B0reg1 = _mm_mul_pd(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_pd(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_pd(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_pd(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_pd(&A[18]) ;
|
||||
B0reg2 = _mm_load_pd(&B0[18]) ;
|
||||
B1reg2 = _mm_load_pd(&B1[18]) ;
|
||||
B2reg2 = _mm_load_pd(&B2[18]) ;
|
||||
B0reg2 = _mm_mul_pd(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_pd(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_pd(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_pd(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_pd(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_pd(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[20]) ;
|
||||
B0reg1 = _mm_load_pd(&B0[20]) ;
|
||||
B1reg1 = _mm_load_pd(&B1[20]) ;
|
||||
B2reg1 = _mm_load_pd(&B2[20]) ;
|
||||
B0reg1 = _mm_mul_pd(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_pd(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_pd(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_pd(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_pd(&A[24]) ;
|
||||
B0reg2 = _mm_load_pd(&B0[24]) ;
|
||||
B1reg2 = _mm_load_pd(&B1[24]) ;
|
||||
B2reg2 = _mm_load_pd(&B2[24]) ;
|
||||
B0reg2 = _mm_mul_pd(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_pd(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_pd(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_pd(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_pd(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_pd(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[26]) ;
|
||||
B0reg1 = _mm_load_pd(&B0[26]) ;
|
||||
B1reg1 = _mm_load_pd(&B1[26]) ;
|
||||
B2reg1 = _mm_load_pd(&B2[26]) ;
|
||||
B0reg1 = _mm_mul_pd(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_pd(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_pd(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_pd(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_pd(&A[28]) ;
|
||||
B0reg2 = _mm_load_pd(&B0[28]) ;
|
||||
B1reg2 = _mm_load_pd(&B1[28]) ;
|
||||
B2reg2 = _mm_load_pd(&B2[28]) ;
|
||||
B0reg2 = _mm_mul_pd(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_pd(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_pd(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_pd(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_pd(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_pd(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[32]) ;
|
||||
B0reg1 = _mm_load_pd(&B0[32]) ;
|
||||
B1reg1 = _mm_load_pd(&B1[32]) ;
|
||||
B2reg1 = _mm_load_pd(&B2[32]) ;
|
||||
B0reg1 = _mm_mul_pd(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_pd(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_pd(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_pd(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_pd(&A[34]) ;
|
||||
B0reg2 = _mm_load_pd(&B0[34]) ;
|
||||
B1reg2 = _mm_load_pd(&B1[34]) ;
|
||||
B2reg2 = _mm_load_pd(&B2[34]) ;
|
||||
B0reg2 = _mm_mul_pd(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_pd(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_pd(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_pd(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_pd(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_pd(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_pd(&A[36]) ;
|
||||
B0reg1 = _mm_load_pd(&B0[36]) ;
|
||||
B1reg1 = _mm_load_pd(&B1[36]) ;
|
||||
B2reg1 = _mm_load_pd(&B2[36]) ;
|
||||
B0reg1 = _mm_mul_pd(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_pd(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_pd(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_pd(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,B2reg1) ;
|
||||
|
||||
|
||||
T0reg1 = _mm_add_pd(T0reg1,T0reg2) ;
|
||||
T1reg1 = _mm_add_pd(T1reg1,T1reg2) ;
|
||||
T2reg1 = _mm_add_pd(T2reg1,T2reg2) ;
|
||||
|
||||
T0reg1 = _mm_hadd_pd(T0reg1,T0reg1) ;
|
||||
_mm_store_sd(tout0,T0reg1) ;
|
||||
T1reg1 = _mm_hadd_pd(T1reg1,T1reg1) ;
|
||||
_mm_store_sd(tout1,T1reg1) ;
|
||||
T2reg1 = _mm_hadd_pd(T2reg1,T2reg1) ;
|
||||
_mm_store_sd(tout2,T2reg1) ;
|
||||
|
||||
}
|
||||
150
src/USER-MGPT/mgpt_ttr_5042.c.h
Normal file
@ -0,0 +1,150 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <xmmintrin.h>
|
||||
|
||||
#include <pmmintrin.h>
|
||||
|
||||
void ttr_5_8_3_v4r2(const float * restrict A,
|
||||
const float * restrict B0,float * restrict tout0,
|
||||
const float * restrict B1,float * restrict tout1,
|
||||
const float * restrict B2,float * restrict tout2) {
|
||||
__m128 Areg1,Areg2;
|
||||
__m128 B0reg1,B0reg2,B1reg1,B1reg2,B2reg1,B2reg2;
|
||||
__m128 T0reg1,T0reg2,T1reg1,T1reg2,T2reg1,T2reg2;
|
||||
|
||||
Areg1 = _mm_load_ps(&A[0]) ;
|
||||
T0reg1 = _mm_load_ps(&B0[0]) ;
|
||||
T1reg1 = _mm_load_ps(&B1[0]) ;
|
||||
T2reg1 = _mm_load_ps(&B2[0]) ;
|
||||
T0reg1 = _mm_mul_ps(T0reg1,Areg1) ;
|
||||
T1reg1 = _mm_mul_ps(T1reg1,Areg1) ;
|
||||
T2reg1 = _mm_mul_ps(T2reg1,Areg1) ;
|
||||
|
||||
Areg2 = _mm_load_ps(&A[4]) ;
|
||||
T0reg2 = _mm_load_ps(&B0[4]) ;
|
||||
T1reg2 = _mm_load_ps(&B1[4]) ;
|
||||
T2reg2 = _mm_load_ps(&B2[4]) ;
|
||||
T0reg2 = _mm_mul_ps(T0reg2,Areg2) ;
|
||||
T1reg2 = _mm_mul_ps(T1reg2,Areg2) ;
|
||||
T2reg2 = _mm_mul_ps(T2reg2,Areg2) ;
|
||||
|
||||
Areg1 = _mm_load_ps(&A[8]) ;
|
||||
B0reg1 = _mm_load_ps(&B0[8]) ;
|
||||
B1reg1 = _mm_load_ps(&B1[8]) ;
|
||||
B2reg1 = _mm_load_ps(&B2[8]) ;
|
||||
B0reg1 = _mm_mul_ps(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_ps(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_ps(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_ps(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_ps(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_ps(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_ps(&A[12]) ;
|
||||
B0reg2 = _mm_load_ps(&B0[12]) ;
|
||||
B1reg2 = _mm_load_ps(&B1[12]) ;
|
||||
B2reg2 = _mm_load_ps(&B2[12]) ;
|
||||
B0reg2 = _mm_mul_ps(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_ps(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_ps(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_ps(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_ps(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_ps(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_ps(&A[16]) ;
|
||||
B0reg1 = _mm_load_ps(&B0[16]) ;
|
||||
B1reg1 = _mm_load_ps(&B1[16]) ;
|
||||
B2reg1 = _mm_load_ps(&B2[16]) ;
|
||||
B0reg1 = _mm_mul_ps(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_ps(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_ps(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_ps(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_ps(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_ps(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_ps(&A[20]) ;
|
||||
B0reg2 = _mm_load_ps(&B0[20]) ;
|
||||
B1reg2 = _mm_load_ps(&B1[20]) ;
|
||||
B2reg2 = _mm_load_ps(&B2[20]) ;
|
||||
B0reg2 = _mm_mul_ps(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_ps(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_ps(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_ps(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_ps(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_ps(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_ps(&A[24]) ;
|
||||
B0reg1 = _mm_load_ps(&B0[24]) ;
|
||||
B1reg1 = _mm_load_ps(&B1[24]) ;
|
||||
B2reg1 = _mm_load_ps(&B2[24]) ;
|
||||
B0reg1 = _mm_mul_ps(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_ps(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_ps(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_ps(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_ps(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_ps(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_ps(&A[28]) ;
|
||||
B0reg2 = _mm_load_ps(&B0[28]) ;
|
||||
B1reg2 = _mm_load_ps(&B1[28]) ;
|
||||
B2reg2 = _mm_load_ps(&B2[28]) ;
|
||||
B0reg2 = _mm_mul_ps(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_ps(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_ps(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_ps(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_ps(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_ps(T2reg2,B2reg2) ;
|
||||
|
||||
Areg1 = _mm_load_ps(&A[32]) ;
|
||||
B0reg1 = _mm_load_ps(&B0[32]) ;
|
||||
B1reg1 = _mm_load_ps(&B1[32]) ;
|
||||
B2reg1 = _mm_load_ps(&B2[32]) ;
|
||||
B0reg1 = _mm_mul_ps(B0reg1,Areg1) ;
|
||||
T0reg1 = _mm_add_ps(T0reg1,B0reg1) ;
|
||||
B1reg1 = _mm_mul_ps(B1reg1,Areg1) ;
|
||||
T1reg1 = _mm_add_ps(T1reg1,B1reg1) ;
|
||||
B2reg1 = _mm_mul_ps(B2reg1,Areg1) ;
|
||||
T2reg1 = _mm_add_ps(T2reg1,B2reg1) ;
|
||||
|
||||
Areg2 = _mm_load_ps(&A[36]) ;
|
||||
B0reg2 = _mm_load_ps(&B0[36]) ;
|
||||
B1reg2 = _mm_load_ps(&B1[36]) ;
|
||||
B2reg2 = _mm_load_ps(&B2[36]) ;
|
||||
B0reg2 = _mm_mul_ps(B0reg2,Areg2) ;
|
||||
T0reg2 = _mm_add_ps(T0reg2,B0reg2) ;
|
||||
B1reg2 = _mm_mul_ps(B1reg2,Areg2) ;
|
||||
T1reg2 = _mm_add_ps(T1reg2,B1reg2) ;
|
||||
B2reg2 = _mm_mul_ps(B2reg2,Areg2) ;
|
||||
T2reg2 = _mm_add_ps(T2reg2,B2reg2) ;
|
||||
|
||||
|
||||
T0reg1 = _mm_add_ps(T0reg1,T0reg2) ;
|
||||
T1reg1 = _mm_add_ps(T1reg1,T1reg2) ;
|
||||
T2reg1 = _mm_add_ps(T2reg1,T2reg2) ;
|
||||
|
||||
T0reg1 = _mm_hadd_ps(T0reg1,T0reg1) ;
|
||||
T0reg1 = _mm_hadd_ps(T0reg1,T0reg1) ;
|
||||
_mm_store_ss(tout0,T0reg1) ;
|
||||
T1reg1 = _mm_hadd_ps(T1reg1,T1reg1) ;
|
||||
T1reg1 = _mm_hadd_ps(T1reg1,T1reg1) ;
|
||||
_mm_store_ss(tout1,T1reg1) ;
|
||||
T2reg1 = _mm_hadd_ps(T2reg1,T2reg1) ;
|
||||
T2reg1 = _mm_hadd_ps(T2reg1,T2reg1) ;
|
||||
_mm_store_ss(tout2,T2reg1) ;
|
||||
|
||||
}
|
||||
245
src/USER-MGPT/mgpt_ttr_5123.c.h
Normal file
@ -0,0 +1,245 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
//#define TESTING
|
||||
|
||||
#ifdef TESTING
|
||||
|
||||
typedef struct {
|
||||
double x,y;
|
||||
} pair;
|
||||
|
||||
|
||||
#define CPLX pair
|
||||
|
||||
static double my_creal(CPLX x) {
|
||||
return ((double *) &x)[0];
|
||||
}
|
||||
static double my_cimag(CPLX x) {
|
||||
return ((double *) &x)[1];
|
||||
}
|
||||
static CPLX my_lfpd(const double *p) {
|
||||
return ((CPLX *) p)[0];
|
||||
}
|
||||
|
||||
/*
|
||||
// Not needed for trace calculations.
|
||||
static void my_stfpd(double *p,CPLX x) {
|
||||
((CPLX *) p)[0] = x;
|
||||
}
|
||||
static CPLX my_fxsmul(CPLX x,double a) {
|
||||
double y[2];
|
||||
y[0] = a * my_creal(x);
|
||||
y[1] = a * my_cimag(x);
|
||||
return ((CPLX *) y)[0];
|
||||
}
|
||||
static CPLX my_fxcpmadd(CPLX t,CPLX x,double a) {
|
||||
double y[2];
|
||||
y[0] = my_creal(t) + a * my_creal(x);
|
||||
y[1] = my_cimag(t) + a * my_cimag(x);
|
||||
return ((CPLX *) y)[0];
|
||||
}
|
||||
*/
|
||||
|
||||
static CPLX my_fpmul(CPLX x,CPLX y) {
|
||||
union {
|
||||
double z[2];
|
||||
CPLX c;
|
||||
} U;
|
||||
U.z[0] = my_creal(y) * my_creal(x);
|
||||
U.z[1] = my_cimag(y) * my_cimag(x);
|
||||
return U.c;
|
||||
}
|
||||
static CPLX my_fpadd(CPLX x,CPLX y) {
|
||||
union {
|
||||
double z[2];
|
||||
CPLX c;
|
||||
} U;
|
||||
U.z[0] = my_creal(y) + my_creal(x);
|
||||
U.z[1] = my_cimag(y) + my_cimag(x);
|
||||
return U.c;
|
||||
}
|
||||
static CPLX my_fpmadd(CPLX t,CPLX x,CPLX y) {
|
||||
union {
|
||||
double z[2];
|
||||
CPLX c;
|
||||
} U;
|
||||
U.z[0] = my_creal(t) + my_creal(y) * my_creal(x);
|
||||
U.z[1] = my_cimag(t) + my_cimag(y) * my_cimag(x);
|
||||
return U.c;
|
||||
}
|
||||
|
||||
#define __creal my_creal
|
||||
#define __cimag my_cimag
|
||||
#define __lfpd my_lfpd
|
||||
#define __stfpd my_stfpd
|
||||
#define __fxsmul my_fxsmul
|
||||
#define __fxcpmadd my_fxcpmadd
|
||||
|
||||
#define __fpadd my_fpadd
|
||||
#define __fpmul my_fpmul
|
||||
#define __fpmadd my_fpmadd
|
||||
|
||||
#else
|
||||
|
||||
#define CPLX double _Complex
|
||||
|
||||
#endif
|
||||
|
||||
void ttr_bg_5_8_3_v2r3(const double * restrict A,
|
||||
const double * restrict B0,double * restrict tout0,
|
||||
const double * restrict B1,double * restrict tout1,
|
||||
const double * restrict B2,double * restrict tout2) {
|
||||
CPLX Areg1,Areg2,Areg3;
|
||||
CPLX B0reg1,B0reg2,B0reg3,B1reg1,B1reg2,B1reg3,B2reg1,B2reg2,B2reg3;
|
||||
CPLX T0reg1,T0reg2,T0reg3,T1reg1,T1reg2,T1reg3,T2reg1,T2reg2,T2reg3;
|
||||
|
||||
Areg1 = __lfpd(&A[0]) ;
|
||||
B0reg1 = __lfpd(&B0[0]) ;
|
||||
B1reg1 = __lfpd(&B1[0]) ;
|
||||
B2reg1 = __lfpd(&B2[0]) ;
|
||||
T0reg1 = __fpmul(Areg1,B0reg1) ;
|
||||
T1reg1 = __fpmul(Areg1,B1reg1) ;
|
||||
T2reg1 = __fpmul(Areg1,B2reg1) ;
|
||||
|
||||
Areg2 = __lfpd(&A[2]) ;
|
||||
B0reg2 = __lfpd(&B0[2]) ;
|
||||
B1reg2 = __lfpd(&B1[2]) ;
|
||||
B2reg2 = __lfpd(&B2[2]) ;
|
||||
T0reg2 = __fpmul(Areg2,B0reg2) ;
|
||||
T1reg2 = __fpmul(Areg2,B1reg2) ;
|
||||
T2reg2 = __fpmul(Areg2,B2reg2) ;
|
||||
|
||||
Areg3 = __lfpd(&A[4]) ;
|
||||
B0reg3 = __lfpd(&B0[4]) ;
|
||||
B1reg3 = __lfpd(&B1[4]) ;
|
||||
B2reg3 = __lfpd(&B2[4]) ;
|
||||
T0reg3 = __fpmul(Areg3,B0reg3) ;
|
||||
T1reg3 = __fpmul(Areg3,B1reg3) ;
|
||||
T2reg3 = __fpmul(Areg3,B2reg3) ;
|
||||
|
||||
Areg1 = __lfpd(&A[8]) ;
|
||||
B0reg1 = __lfpd(&B0[8]) ;
|
||||
B1reg1 = __lfpd(&B1[8]) ;
|
||||
B2reg1 = __lfpd(&B2[8]) ;
|
||||
T0reg1 = __fpmadd(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = __fpmadd(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = __fpmadd(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg2 = __lfpd(&A[10]) ;
|
||||
B0reg2 = __lfpd(&B0[10]) ;
|
||||
B1reg2 = __lfpd(&B1[10]) ;
|
||||
B2reg2 = __lfpd(&B2[10]) ;
|
||||
T0reg2 = __fpmadd(T0reg2,Areg2,B0reg2) ;
|
||||
T1reg2 = __fpmadd(T1reg2,Areg2,B1reg2) ;
|
||||
T2reg2 = __fpmadd(T2reg2,Areg2,B2reg2) ;
|
||||
|
||||
Areg3 = __lfpd(&A[12]) ;
|
||||
B0reg3 = __lfpd(&B0[12]) ;
|
||||
B1reg3 = __lfpd(&B1[12]) ;
|
||||
B2reg3 = __lfpd(&B2[12]) ;
|
||||
T0reg3 = __fpmadd(T0reg3,Areg3,B0reg3) ;
|
||||
T1reg3 = __fpmadd(T1reg3,Areg3,B1reg3) ;
|
||||
T2reg3 = __fpmadd(T2reg3,Areg3,B2reg3) ;
|
||||
|
||||
Areg1 = __lfpd(&A[16]) ;
|
||||
B0reg1 = __lfpd(&B0[16]) ;
|
||||
B1reg1 = __lfpd(&B1[16]) ;
|
||||
B2reg1 = __lfpd(&B2[16]) ;
|
||||
T0reg1 = __fpmadd(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = __fpmadd(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = __fpmadd(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg2 = __lfpd(&A[18]) ;
|
||||
B0reg2 = __lfpd(&B0[18]) ;
|
||||
B1reg2 = __lfpd(&B1[18]) ;
|
||||
B2reg2 = __lfpd(&B2[18]) ;
|
||||
T0reg2 = __fpmadd(T0reg2,Areg2,B0reg2) ;
|
||||
T1reg2 = __fpmadd(T1reg2,Areg2,B1reg2) ;
|
||||
T2reg2 = __fpmadd(T2reg2,Areg2,B2reg2) ;
|
||||
|
||||
Areg3 = __lfpd(&A[20]) ;
|
||||
B0reg3 = __lfpd(&B0[20]) ;
|
||||
B1reg3 = __lfpd(&B1[20]) ;
|
||||
B2reg3 = __lfpd(&B2[20]) ;
|
||||
T0reg3 = __fpmadd(T0reg3,Areg3,B0reg3) ;
|
||||
T1reg3 = __fpmadd(T1reg3,Areg3,B1reg3) ;
|
||||
T2reg3 = __fpmadd(T2reg3,Areg3,B2reg3) ;
|
||||
|
||||
Areg1 = __lfpd(&A[24]) ;
|
||||
B0reg1 = __lfpd(&B0[24]) ;
|
||||
B1reg1 = __lfpd(&B1[24]) ;
|
||||
B2reg1 = __lfpd(&B2[24]) ;
|
||||
T0reg1 = __fpmadd(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = __fpmadd(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = __fpmadd(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg2 = __lfpd(&A[26]) ;
|
||||
B0reg2 = __lfpd(&B0[26]) ;
|
||||
B1reg2 = __lfpd(&B1[26]) ;
|
||||
B2reg2 = __lfpd(&B2[26]) ;
|
||||
T0reg2 = __fpmadd(T0reg2,Areg2,B0reg2) ;
|
||||
T1reg2 = __fpmadd(T1reg2,Areg2,B1reg2) ;
|
||||
T2reg2 = __fpmadd(T2reg2,Areg2,B2reg2) ;
|
||||
|
||||
Areg3 = __lfpd(&A[28]) ;
|
||||
B0reg3 = __lfpd(&B0[28]) ;
|
||||
B1reg3 = __lfpd(&B1[28]) ;
|
||||
B2reg3 = __lfpd(&B2[28]) ;
|
||||
T0reg3 = __fpmadd(T0reg3,Areg3,B0reg3) ;
|
||||
T1reg3 = __fpmadd(T1reg3,Areg3,B1reg3) ;
|
||||
T2reg3 = __fpmadd(T2reg3,Areg3,B2reg3) ;
|
||||
|
||||
Areg1 = __lfpd(&A[32]) ;
|
||||
B0reg1 = __lfpd(&B0[32]) ;
|
||||
B1reg1 = __lfpd(&B1[32]) ;
|
||||
B2reg1 = __lfpd(&B2[32]) ;
|
||||
T0reg1 = __fpmadd(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = __fpmadd(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = __fpmadd(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg2 = __lfpd(&A[34]) ;
|
||||
B0reg2 = __lfpd(&B0[34]) ;
|
||||
B1reg2 = __lfpd(&B1[34]) ;
|
||||
B2reg2 = __lfpd(&B2[34]) ;
|
||||
T0reg2 = __fpmadd(T0reg2,Areg2,B0reg2) ;
|
||||
T1reg2 = __fpmadd(T1reg2,Areg2,B1reg2) ;
|
||||
T2reg2 = __fpmadd(T2reg2,Areg2,B2reg2) ;
|
||||
|
||||
Areg3 = __lfpd(&A[36]) ;
|
||||
B0reg3 = __lfpd(&B0[36]) ;
|
||||
B1reg3 = __lfpd(&B1[36]) ;
|
||||
B2reg3 = __lfpd(&B2[36]) ;
|
||||
T0reg3 = __fpmadd(T0reg3,Areg3,B0reg3) ;
|
||||
T1reg3 = __fpmadd(T1reg3,Areg3,B1reg3) ;
|
||||
T2reg3 = __fpmadd(T2reg3,Areg3,B2reg3) ;
|
||||
|
||||
|
||||
T0reg1 = __fpadd(T0reg1,T0reg2) ;
|
||||
T1reg1 = __fpadd(T1reg1,T1reg2) ;
|
||||
T2reg1 = __fpadd(T2reg1,T2reg2) ;
|
||||
T0reg1 = __fpadd(T0reg1,T0reg3) ;
|
||||
T1reg1 = __fpadd(T1reg1,T1reg3) ;
|
||||
T2reg1 = __fpadd(T2reg1,T2reg3) ;
|
||||
|
||||
*tout0 = __creal(T0reg1) + __cimag(T0reg1) ;
|
||||
*tout1 = __creal(T1reg1) + __cimag(T1reg1) ;
|
||||
*tout2 = __creal(T2reg1) + __cimag(T2reg1) ;
|
||||
|
||||
}
|
||||
142
src/USER-MGPT/mgpt_ttr_5141.c.h
Normal file
@ -0,0 +1,142 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
This file is part of the MGPT implementation. See further comments
|
||||
in pair_mgpt.cpp and pair_mgpt.h.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#define vector vector4double
|
||||
#define my_vec_add(a,b) vec_add(a,b)
|
||||
#define my_vec_mul(a,b) vec_mul(a,b)
|
||||
#define my_vec_fma(a,b,c) vec_madd(b,c,a)
|
||||
#define my_vec_ld(ptr) vec_lda(0,ptr)
|
||||
#define my_vec_sldw(x,y,n) vec_sldw(x,y,n)
|
||||
#define my_vec_sts(x,ptr) vec_sts(x,0,ptr)
|
||||
|
||||
#define const
|
||||
#define real double
|
||||
|
||||
void ttr_bg_5_8_3_v4r1(const real * restrict A,
|
||||
const real * restrict B0,real * restrict tout0,
|
||||
const real * restrict B1,real * restrict tout1,
|
||||
const real * restrict B2,real * restrict tout2) {
|
||||
vector Areg1;
|
||||
vector B0reg1,B1reg1,B2reg1;
|
||||
vector T0reg1,T1reg1,T2reg1;
|
||||
|
||||
Areg1 = my_vec_ld(&A[0]) ;
|
||||
B0reg1 = my_vec_ld(&B0[0]) ;
|
||||
B1reg1 = my_vec_ld(&B1[0]) ;
|
||||
B2reg1 = my_vec_ld(&B2[0]) ;
|
||||
T0reg1 = my_vec_mul(Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_mul(Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_mul(Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[4]) ;
|
||||
B0reg1 = my_vec_ld(&B0[4]) ;
|
||||
B1reg1 = my_vec_ld(&B1[4]) ;
|
||||
B2reg1 = my_vec_ld(&B2[4]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[8]) ;
|
||||
B0reg1 = my_vec_ld(&B0[8]) ;
|
||||
B1reg1 = my_vec_ld(&B1[8]) ;
|
||||
B2reg1 = my_vec_ld(&B2[8]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[12]) ;
|
||||
B0reg1 = my_vec_ld(&B0[12]) ;
|
||||
B1reg1 = my_vec_ld(&B1[12]) ;
|
||||
B2reg1 = my_vec_ld(&B2[12]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[16]) ;
|
||||
B0reg1 = my_vec_ld(&B0[16]) ;
|
||||
B1reg1 = my_vec_ld(&B1[16]) ;
|
||||
B2reg1 = my_vec_ld(&B2[16]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[20]) ;
|
||||
B0reg1 = my_vec_ld(&B0[20]) ;
|
||||
B1reg1 = my_vec_ld(&B1[20]) ;
|
||||
B2reg1 = my_vec_ld(&B2[20]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[24]) ;
|
||||
B0reg1 = my_vec_ld(&B0[24]) ;
|
||||
B1reg1 = my_vec_ld(&B1[24]) ;
|
||||
B2reg1 = my_vec_ld(&B2[24]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[28]) ;
|
||||
B0reg1 = my_vec_ld(&B0[28]) ;
|
||||
B1reg1 = my_vec_ld(&B1[28]) ;
|
||||
B2reg1 = my_vec_ld(&B2[28]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[32]) ;
|
||||
B0reg1 = my_vec_ld(&B0[32]) ;
|
||||
B1reg1 = my_vec_ld(&B1[32]) ;
|
||||
B2reg1 = my_vec_ld(&B2[32]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
Areg1 = my_vec_ld(&A[36]) ;
|
||||
B0reg1 = my_vec_ld(&B0[36]) ;
|
||||
B1reg1 = my_vec_ld(&B1[36]) ;
|
||||
B2reg1 = my_vec_ld(&B2[36]) ;
|
||||
T0reg1 = my_vec_fma(T0reg1,Areg1,B0reg1) ;
|
||||
T1reg1 = my_vec_fma(T1reg1,Areg1,B1reg1) ;
|
||||
T2reg1 = my_vec_fma(T2reg1,Areg1,B2reg1) ;
|
||||
|
||||
|
||||
|
||||
T0reg1 = my_vec_add(T0reg1,my_vec_sldw(T0reg1,T0reg1,2));
|
||||
T0reg1 = my_vec_add(T0reg1,my_vec_sldw(T0reg1,T0reg1,1));
|
||||
my_vec_sts(T0reg1,tout0);
|
||||
T1reg1 = my_vec_add(T1reg1,my_vec_sldw(T1reg1,T1reg1,2));
|
||||
T1reg1 = my_vec_add(T1reg1,my_vec_sldw(T1reg1,T1reg1,1));
|
||||
my_vec_sts(T1reg1,tout1);
|
||||
T2reg1 = my_vec_add(T2reg1,my_vec_sldw(T2reg1,T2reg1,2));
|
||||
T2reg1 = my_vec_add(T2reg1,my_vec_sldw(T2reg1,T2reg1,1));
|
||||
my_vec_sts(T2reg1,tout2);
|
||||
|
||||
}
|
||||
|
||||
|
||||
#undef vector
|
||||
#undef my_vec_add
|
||||
#undef my_vec_mul
|
||||
#undef my_vec_fma
|
||||
#undef my_vec_ld
|
||||
#undef my_vec_sldw
|
||||
#undef my_vec_sts
|
||||
|
||||
#undef const
|
||||
#undef real
|
||||