Merge branch 'develop' into small-patches
This commit is contained in:
@ -2,9 +2,10 @@
|
||||
|
||||
APP_NAME=lammps-gui
|
||||
DESTDIR=${PWD}/../LAMMPS_GUI
|
||||
VERSION="$1"
|
||||
|
||||
echo "Delete old files, if they exist"
|
||||
rm -rf ${DESTDIR} ../LAMMPS_GUI-Linux-amd64.tar.gz
|
||||
rm -rf ${DESTDIR} ../LAMMPS_GUI-Linux-amd64*.tar.gz
|
||||
|
||||
echo "Create staging area for deployment and populate"
|
||||
DESTDIR=${DESTDIR} cmake --install . --prefix "/"
|
||||
@ -71,7 +72,7 @@ do \
|
||||
done
|
||||
|
||||
pushd ..
|
||||
tar -czvvf LAMMPS_GUI-Linux-amd64.tar.gz LAMMPS_GUI
|
||||
tar -czvvf LAMMPS_GUI-Linux-amd64-${VERSION}.tar.gz LAMMPS_GUI
|
||||
popd
|
||||
|
||||
echo "Cleanup dir"
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
APP_NAME=lammps-gui
|
||||
VERSION="$1"
|
||||
|
||||
echo "Delete old files, if they exist"
|
||||
rm -f ${APP_NAME}.dmg ${APP_NAME}-rw.dmg LAMMPS_GUI-macOS-multiarch.dmg
|
||||
rm -f ${APP_NAME}.dmg ${APP_NAME}-rw.dmg LAMMPS_GUI-macOS-multiarch*.dmg
|
||||
|
||||
echo "Create initial dmg file with macdeployqt"
|
||||
macdeployqt lammps-gui.app -dmg
|
||||
@ -96,12 +97,12 @@ sync
|
||||
|
||||
echo "Unmount modified disk image and convert to compressed read-only image"
|
||||
hdiutil detach "${DEVICE}"
|
||||
hdiutil convert "${APP_NAME}-rw.dmg" -format UDZO -o "LAMMPS_GUI-macOS-multiarch.dmg"
|
||||
hdiutil convert "${APP_NAME}-rw.dmg" -format UDZO -o "LAMMPS_GUI-macOS-multiarch-${VERSION}.dmg"
|
||||
|
||||
echo "Attach icon to .dmg file"
|
||||
echo "read 'icns' (-16455) \"lammps-gui.app/Contents/Resources/lammps.icns\";" > icon.rsrc
|
||||
Rez -a icon.rsrc -o LAMMPS_GUI-macOS-multiarch.dmg
|
||||
SetFile -a C LAMMPS_GUI-macOS-multiarch.dmg
|
||||
Rez -a icon.rsrc -o LAMMPS_GUI-macOS-multiarch-${VERSION}.dmg
|
||||
SetFile -a C LAMMPS_GUI-macOS-multiarch-${VERSION}.dmg
|
||||
rm icon.rsrc
|
||||
|
||||
echo "Delete temporary disk images"
|
||||
|
||||
@ -3,9 +3,10 @@
|
||||
APP_NAME=lammps-gui
|
||||
DESTDIR=${PWD}/LAMMPS_GUI
|
||||
SYSROOT="$1"
|
||||
VERSION="$2"
|
||||
|
||||
echo "Delete old files, if they exist"
|
||||
rm -rvf ${DESTDIR}/LAMMPS_GUI ${DESTDIR}/LAMMPS-Win10-amd64.zip
|
||||
rm -rvf ${DESTDIR}/LAMMPS_GUI ${DESTDIR}/LAMMPS-Win10-amd64*.zip
|
||||
|
||||
echo "Create staging area for deployment and populate"
|
||||
DESTDIR=${DESTDIR} cmake --install . --prefix "/"
|
||||
@ -60,5 +61,5 @@ cat > ${DESTDIR}/bin/qt.conf <<EOF
|
||||
[Paths]
|
||||
Plugins = ../qt5plugins
|
||||
EOF
|
||||
zip -9rvD LAMMPS-Win10-amd64.zip LAMMPS_GUI
|
||||
zip -9rvD LAMMPS-Win10-amd64-${VERSION}.zip LAMMPS_GUI
|
||||
|
||||
|
||||
14
doc/lammps.1
14
doc/lammps.1
@ -226,6 +226,20 @@ arguments of the "dump" command. See the
|
||||
.B LAMMPS
|
||||
manual for details on either of the two commands.
|
||||
.TP
|
||||
\fB\-r2info <restart file> <keyword> ...\fR or
|
||||
\fB\-restart2info <restart file> <keyword> ...\fR
|
||||
Write information about the <restart file> previously written by
|
||||
.B LAMMPS
|
||||
to the screen and immediately exit. Following <restart file>
|
||||
argument, additional keywords for the
|
||||
.B LAMMPS
|
||||
"info" command may be added to increase the amount of information
|
||||
written. By default "system" "group" "fix" "compute" are already
|
||||
set. See the
|
||||
.B LAMMPS
|
||||
manual for details on the "info" command.
|
||||
.TP
|
||||
.TP
|
||||
\fB\-sc <file name>\fR or \fB\-screen <file name>\fR
|
||||
Specify a file for
|
||||
.B LAMMPS
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
Bibliography
|
||||
************
|
||||
|
||||
**(Abascal1)**
|
||||
Abascal, Sanz, Fernandez, Vega, J Chem Phys, 122, 234511 (2005)
|
||||
|
||||
**(Abascal2)**
|
||||
Abascal, J Chem Phys, 123, 234505 (2005)
|
||||
|
||||
**(Ackland)**
|
||||
Ackland, Jones, Phys Rev B, 73, 054104 (2006).
|
||||
|
||||
@ -22,21 +28,24 @@ Bibliography
|
||||
**(Agnolin and Roux 2007)**
|
||||
Agnolin, I. & Roux, J-N. (2007). Internal states of model isotropic granular packings. I. Assembling process, geometry, and contact networks. Phys. Rev. E, 76, 061302.
|
||||
|
||||
**(Ahrens-Iwers2022)**
|
||||
Ahrens-Iwers *et al.*, J. Chem. Phys. 157, 084801 (2022).
|
||||
|
||||
**(Ahrens-Iwers)**
|
||||
Ahrens-Iwers and Meissner, J. Chem. Phys. 155, 104104 (2021).
|
||||
|
||||
**(Aktulga)**
|
||||
Aktulga, Fogarty, Pandit, Grama, Parallel Computing, 38, 245-259 (2012).
|
||||
|
||||
**(Albe)**
|
||||
J.\ Nord, K. Albe, P. Erhart, and K. Nordlund, J. Phys.: Condens. Matter, 15, 5649(2003).
|
||||
|
||||
**(Albe)**
|
||||
**(Albe1)**
|
||||
K.\ Albe, K. Nordlund, J. Nord, and A. Kuronen, Phys. Rev. B, 66, 035205 (2002).
|
||||
|
||||
**(Allen)**
|
||||
Allen and Germano, Mol Phys 104, 3225-3235 (2006).
|
||||
|
||||
**(Allen)**
|
||||
Allen and Tildesley, Computer Simulation of Liquids, Clarendon Press, Oxford, 1987.
|
||||
|
||||
**(AllenTildesley)**
|
||||
Allen and Tildesley, Computer Simulation of Liquids, Oxford University Press (1987)
|
||||
|
||||
@ -49,6 +58,9 @@ Bibliography
|
||||
**(Anderson)**
|
||||
Anderson, Mukherjee, Critchley, Ziegler, and Lipton "POEMS: Parallelizable Open-source Efficient Multibody Software ", Engineering With Computers (2006).
|
||||
|
||||
**(Appshaw)**
|
||||
Appshaw, Seddon, Hanna, Soft. Matter,18, 1747(2022).
|
||||
|
||||
**(Avendano)**
|
||||
C.\ Avendano, T. Lafitte, A. Galindo, C. S. Adjiman, G. Jackson, E. Muller, J Phys Chem B, 115, 11154 (2011).
|
||||
|
||||
@ -58,7 +70,7 @@ Bibliography
|
||||
**(Babadi)**
|
||||
Babadi, Ejtehadi, Everaers, J Comp Phys, 219, 770-779 (2006).
|
||||
|
||||
**(Babadi)**
|
||||
**(Babadi2)**
|
||||
Babadi and Ejtehadi, EPL, 77 (2007) 23002.
|
||||
|
||||
**(Baczewski)**
|
||||
@ -73,23 +85,23 @@ Bibliography
|
||||
**(Ballenegger)**
|
||||
Ballenegger, Arnold, Cerda, J Chem Phys, 131, 094107 (2009).
|
||||
|
||||
**(Banna)**
|
||||
Volkov, Banna, Comp. Mater. Sci. 176, 109410 (2020).
|
||||
|
||||
**(Barrat)**
|
||||
Barrat and Rodney, J. Stat. Phys, 144, 679 (2011).
|
||||
|
||||
**(Barrett)**
|
||||
Barrett, Tschopp, El Kadiri, Scripta Mat. 66, p.666 (2012).
|
||||
|
||||
**(Barros)**
|
||||
Barros, Sinkovits, Luijten, J. Chem. Phys, 140, 064903 (2014)
|
||||
|
||||
**(Bartok)**
|
||||
Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010).
|
||||
|
||||
**(Bartok2010)**
|
||||
Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010).
|
||||
|
||||
**(Bartok_2010)**
|
||||
AP Bartok, MC Payne, R Kondor, and G Csanyi, Physical Review Letters 104, 136403 (2010).
|
||||
**(Bartok2013)**
|
||||
Bartok, Kondor, Csanyi, Phys Rev B, 87, 184115 (2013).
|
||||
|
||||
**(Bartok_PhD)**
|
||||
A Bartok-Partay, PhD Thesis, University of Cambridge, (2010).
|
||||
@ -97,36 +109,51 @@ Bibliography
|
||||
**(Baskes)**
|
||||
Baskes, Phys Rev B, 46, 2727-2742 (1992).
|
||||
|
||||
**(Baskes2)**
|
||||
Baskes, Phys Rev B, 75, 094113 (2007).
|
||||
|
||||
**(Beck)**
|
||||
Beck, Molecular Physics, 14, 311 (1968).
|
||||
|
||||
**(Becton)**
|
||||
Becton, Averett, Wang, Biomech. Model. Mechanobiology, 18, 425-433(2019).
|
||||
|
||||
**(Behler and Parrinello 2007)**
|
||||
Behler, J.; Parrinello, M. Phys. Rev. Lett. 2007, 98 (14), 146401.
|
||||
|
||||
**(Bennet)**
|
||||
Bennet, J Comput Phys, 22, 245 (1976)
|
||||
|
||||
**(Berardi)**
|
||||
Berardi, Fava, Zannoni, Chem Phys Lett, 297, 8-14 (1998). Berardi, Muccioli, Zannoni, J Chem Phys, 128, 024905 (2008).
|
||||
|
||||
**(Berendsen)**
|
||||
Berendsen, Grigera, Straatsma, J Phys Chem, 91, 6269-6271 (1987).
|
||||
|
||||
**(Berendsen)**
|
||||
Berendsen, Postma, van Gunsteren, DiNola, Haak, J Chem Phys, 81, 3684 (1984).
|
||||
|
||||
**(Berendsen2)**
|
||||
Berendsen, Grigera, Straatsma, J Phys Chem, 91, 6269-6271 (1987).
|
||||
|
||||
**(Bessarab)**
|
||||
Bessarab, Uzdin, Jonsson, Comp Phys Comm, 196, 335-347 (2015).
|
||||
|
||||
**(Beutler)**
|
||||
Beutler, Mark, van Schaik, Gerber, van Gunsteren, Chem Phys Lett, 222, 529 (1994).
|
||||
|
||||
**(Bialke)**
|
||||
J.\ Bialke, T. Speck, and H Loewen, Phys. Rev. Lett. 108, 168301, 2012.
|
||||
|
||||
**(Bird)**
|
||||
G.\ A. Bird, "Molecular Gas Dynamics and the Direct Simulation of Gas Flows" (1994).
|
||||
|
||||
**(Bitzek)**
|
||||
Bitzek, Koskinen, Gahler, Moseler, Gumbsch, Phys Rev Lett, 97, 170201 (2006).
|
||||
|
||||
**(Bolintineanu1)**
|
||||
Bolintineanu, Lechman, Plimpton, Grest, Phys Rev E, 86, 066703 (2012).
|
||||
|
||||
**(Bolintineanu2)**
|
||||
Bolintineanu, Grest, Lechman, Pierce, Plimpton, Schunk, Comp Particle Mechanics, 1, 321-356 (2014).
|
||||
|
||||
**(Bomont)**
|
||||
Bomont, Bretonnet, J. Chem. Phys. 124, 054504 (2006).
|
||||
|
||||
**(Bond)**
|
||||
Bond and Leimkuhler, SIAM J Sci Comput, 30, p 134 (2007).
|
||||
|
||||
@ -134,7 +161,7 @@ Bibliography
|
||||
Boone, Babaei, Wilmer, J Chem Theory Comput, 15, 5579--5587 (2019).
|
||||
|
||||
**(BoreschKarplus)**
|
||||
Boresch and Karplus, J Phys Chem A, 103, 103 (1999)
|
||||
Boresch and Karplus, J Phys Chem A, 103, 103 (1999).
|
||||
|
||||
**(Botu1)**
|
||||
V.\ Botu and R. Ramprasad, Int. J. Quant. Chem., 115(16), 1074 (2015).
|
||||
@ -169,8 +196,11 @@ Bibliography
|
||||
**(Buck)**
|
||||
Buck, Bouguet-Bonnet, Pastor, MacKerell Jr., Biophys J, 90, L36 (2006).
|
||||
|
||||
**(Bulacu)**
|
||||
Bulacu, Goga, Zhao, Rossi, Monticelli, Periole, Tieleman, Marrink, J Chem Theory Comput, 9, 3282-3292
|
||||
|
||||
**(Bussi)**
|
||||
G.\ Bussi, M. Parrinello, Phs. Rev. E 75, 056707 (2007)
|
||||
G. Bussi, T. Zykova-Timan, M. Parrinello, J Chem Phys, 130, 074101 (2009).
|
||||
|
||||
**(Bussi1)**
|
||||
Bussi, Donadio and Parrinello, J. Chem. Phys. 126, 014101(2007)
|
||||
@ -178,20 +208,20 @@ Bibliography
|
||||
**(Bussi2)**
|
||||
Bussi and Parrinello, Phys. Rev. E 75, 056707 (2007)
|
||||
|
||||
**(COMB)**
|
||||
**(COMB_1)**
|
||||
J.\ Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007),
|
||||
|
||||
**(COMB_2)**
|
||||
T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, and S. R. Phillpot, Phys. Rev. B 81, 125328 (2010)
|
||||
|
||||
**(COMB3)**
|
||||
T.\ Liang, T.-R. Shan, Y.-T. Cheng, B. D. Devine, M. Noordhoek, Y. Li, Z. Lu, S. R. Phillpot, and S. B. Sinnott, Mat. Sci. & Eng: R 74, 255-279 (2013).
|
||||
|
||||
**(COMB_1)**
|
||||
J.\ Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007),
|
||||
|
||||
**(Calhoun)**
|
||||
A.\ Calhoun, M. Pavese, G. Voth, Chem Phys Letters, 262, 415 (1996).
|
||||
|
||||
**(Campana)**
|
||||
C.\ Campana and M. H. Muser, *Practical Green's function approach to the simulation of elastic semi-infinite solids*, `Phys. Rev. B [74], 075420 (2006) <https://doi.org/10.1103/PhysRevB.74.075420>`_
|
||||
C.\ Campana and M. H. Muser, Phys. Rev. B [74], 075420 (2006).
|
||||
|
||||
**(Cao1)**
|
||||
J.\ Cao and B. Berne, J Chem Phys, 99, 2902 (1993).
|
||||
@ -215,6 +245,9 @@ Bibliography
|
||||
Cerda, Ballenegger, Lenz, Holm, J Chem Phys 129, 234104 (2008)
|
||||
|
||||
**(Ceriotti)**
|
||||
M. Ceriotti, M. Parrinello, T. Markland, D. Manolopoulos, J. Chem. Phys. 133, 124104 (2010).
|
||||
|
||||
**(Ceriotti1)**
|
||||
Ceriotti, Bussi and Parrinello, J Chem Theory Comput 6, 1170-80 (2010)
|
||||
|
||||
**(Ceriotti2)**
|
||||
@ -232,6 +265,18 @@ Bibliography
|
||||
**(Clarke)**
|
||||
Clarke and Smith, J Chem Phys, 84, 2290 (1986).
|
||||
|
||||
**(Clavier)**
|
||||
G. Clavier, N. Desbiens, E. Bourasseau, V. Lachet, N. Brusselle-Dupend and B. Rousseau, Mol Sim, 43, 1413 (2017).
|
||||
|
||||
**(Clemmer)**
|
||||
Clemmer and Robbins, Phys. Rev. Lett. (2022).
|
||||
|
||||
**(Clemmer1)**
|
||||
Clemmer, Monti, Lechman, Soft Matter, 20, 1702 (2024).
|
||||
|
||||
**(Clemmer2)**
|
||||
Clemmer, Pierce, O'Connor, Nevins, Jones, Lechman, Tencer, Appl. Math. Model., 130, 310-326 (2024).
|
||||
|
||||
**(Coleman)**
|
||||
Coleman, Spearot, Capolungo, MSMSE, 21, 055020 (2013).
|
||||
|
||||
@ -244,8 +289,17 @@ Bibliography
|
||||
**(Cornell)**
|
||||
Cornell, Cieplak, Bayly, Gould, Merz, Ferguson, Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
|
||||
|
||||
**(Cundall, 1987)**
|
||||
Cundall, P. A. Distinct Element Models of Rock and Soil
|
||||
|
||||
**(Curk1)**
|
||||
T. Curk, J. Yuan, and E. Luijten, JCP 156 (2022).
|
||||
|
||||
**(Curk2)**
|
||||
T. Curk and E. Luijten, PRL 126 (2021)
|
||||
|
||||
**(Cusentino)**
|
||||
Cusentino, Wood, and Thompson, J Phys Chem A, xxx, xxxxx, (2020)
|
||||
Cusentino, Wood, Thompson, J Phys Chem A, 124, 5456, (2020)
|
||||
|
||||
**(Daivis and Todd)**
|
||||
Daivis and Todd, J Chem Phys, 124, 194103 (2006).
|
||||
@ -268,6 +322,15 @@ Bibliography
|
||||
**(Daw2)**
|
||||
M.\ S. Daw, and M. I. Baskes, Phys. Rev. B, 29, 6443 (1984).
|
||||
|
||||
**(de Buyl)**
|
||||
de Buyl, Colberg and Hofling, Comp. Phys. Comm. 185(6), 1546-1553 (2014) -
|
||||
|
||||
**(Deissenbeck)**
|
||||
Deissenbeck *et al.*, Phys. Rev. Letters 126, 136803 (2021).
|
||||
|
||||
**(de Koning)**
|
||||
de Koning and Antonelli, Phys Rev E, 53, 465 (1996).
|
||||
|
||||
**(DeVane)**
|
||||
Shinoda, DeVane, Klein, Soft Matter, 4, 2453-2462 (2008).
|
||||
|
||||
@ -277,12 +340,24 @@ Bibliography
|
||||
**(Destree)**
|
||||
M.\ Destree, F. Laupretre, A. Lyulin, and J.-P. Ryckaert, J Chem Phys, 112, 9632 (2000).
|
||||
|
||||
**(Dickel)**
|
||||
Dickel, Francis, and Barrett, Computational Materials Science 171 (2020): 109157.
|
||||
|
||||
**(Dietz)**
|
||||
Dietz and Hoy, J. Chem Phys, 156, 014103 (2022).
|
||||
|
||||
**(Dobson)**
|
||||
Dobson, J Chem Phys, 141, 184103 (2014).
|
||||
|
||||
**(Drautz)**
|
||||
Drautz, Phys Rev B, 99, 014104 (2019).
|
||||
|
||||
**(Duffy)**
|
||||
D M Duffy and A M Rutherford, J. Phys.: Condens. Matter, 19, 016207-016218 (2007).
|
||||
|
||||
**(Dufils)**
|
||||
Dufils *et al.*, Phys. Rev. Letters 123, 195501 (2019).
|
||||
|
||||
**(Dullweber)**
|
||||
Dullweber, Leimkuhler and McLachlan, J Chem Phys, 107, 5840 (1997).
|
||||
|
||||
@ -295,6 +370,9 @@ Bibliography
|
||||
**(Dunweg)**
|
||||
Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).
|
||||
|
||||
**(EcheverriRestrepo)**
|
||||
Echeverri Restrepo, Andric, Comput Mater Sci, 218, 111978 (2023).
|
||||
|
||||
**(EDIP)**
|
||||
J F Justo et al, Phys Rev B 58, 2539 (1998).
|
||||
|
||||
@ -304,12 +382,21 @@ Bibliography
|
||||
**(Elliott)**
|
||||
Elliott, Tadmor and Bernstein, `https://openkim.org/kim-api <https://openkim.org/kim-api>`_ (2011) doi: `https://doi.org/10.25950/FF8F563A <https://doi.org/10.25950/FF8F563A>`_
|
||||
|
||||
**(Ellis)**
|
||||
Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021)
|
||||
|
||||
**(Emmrich)**
|
||||
Emmrich, Weckner, Commun. Math. Sci., 5, 851-864 (2007),
|
||||
|
||||
**(Elstner)**
|
||||
M.\ Elstner, D. Poresag, G. Jungnickel, J. Elsner, M. Haugk, T. Frauenheim, S. Suhai, and G. Seifert, Phys. Rev. B, 58, 7260 (1998).
|
||||
|
||||
**(Erdmann)**
|
||||
U.\ Erdmann , W. Ebeling, L. Schimansky-Geier, and F. Schweitzer, Eur. Phys. J. B 15, 105-113, 2000.
|
||||
|
||||
**(Eshelby)**
|
||||
J.D. Eshelby, Philos. Trans. Royal Soc. London A, Math. Phys. Sci., Vol. 244, No. 877 (1951) pp. 87-112; J. Elasticity, Vol. 5, Nos. 3-4 (1975) pp. 321-335]
|
||||
|
||||
**(Espanol and Revenga)**
|
||||
Espanol, Revenga, Physical Review E, 67, 026705 (2003).
|
||||
|
||||
@ -328,9 +415,18 @@ Bibliography
|
||||
**(Faken)**
|
||||
Faken, Jonsson, Comput Mater Sci, 2, 279 (1994).
|
||||
|
||||
**(Falk)**
|
||||
Falk and Langer PRE, 57, 7192 (1998).
|
||||
|
||||
**(Fath)**
|
||||
Fath, Hochbruck, Singh, J Comp Phys, 333, 180-198 (2017).
|
||||
|
||||
**(Feng1)**
|
||||
Z. Feng, ..., and W. Ouyang, J. Phys. Chem. C. 127(18), 8704-8713 (2023).
|
||||
|
||||
**(Feng2)**
|
||||
Z. Feng, ..., and W. Ouyang, Langmuir 39(50), 18198-18207 (2023).
|
||||
|
||||
**(Fennell)**
|
||||
C.\ J. Fennell, J. D. Gezelter, J Chem Phys, 124, 234104 (2006).
|
||||
|
||||
@ -367,18 +463,36 @@ Bibliography
|
||||
**(Frenkel)**
|
||||
Frenkel and Smit, Understanding Molecular Simulation, Academic Press, London, 2002.
|
||||
|
||||
**(GLE4MD)**
|
||||
`https://gle4md.org/ <https://gle4md.org/>`_
|
||||
**(Fu)**
|
||||
Fu, Peng, Yuan, Kfoury, Young, Comput. Phys. Commun, 210, 193-203(2017).
|
||||
|
||||
**(Gao)**
|
||||
Gao and Weber, Nuclear Instruments and Methods in Physics Research B 191 (2012) 504.
|
||||
|
||||
**(Gingrich)**
|
||||
Gingrich, `MSc thesis` <https://gingrich.chem.northwestern.edu/papers/ThesiswCorrections.pdf>` (2010).
|
||||
|
||||
**(Gissinger2017)**
|
||||
Gissinger, Jensen and Wise, Polymer, 128, 211-217 (2017).
|
||||
|
||||
**(Gissinger2020)**
|
||||
Gissinger, Jensen and Wise, Macromolecules, 53, 22, 9953-9961 (2020).
|
||||
|
||||
**(Gissinger)**
|
||||
Gissinger, Jensen and Wise, Polymer, 128, 211 (2017).
|
||||
Jacob R. Gissinger, Scott R. Zavada, Joseph G. Smith, Josh Kemppainen, Ivan Gallegos, Gregory M. Odegard, Emilie J. Siochi, and Kristopher E. Wise, Carbon, 202, 336-347 (2023).
|
||||
|
||||
**(Gissinger2024)**
|
||||
J. R. Gissinger, I. Nikiforov, Y. Afshar, B. Waters, M. Choi, D. S. Karls, A. Stukowski, W. Im, H. Heinz, A. Kohlmeyer, and E. B. Tadmor, J Phys Chem B, 128, 3282-3297 (2024).
|
||||
|
||||
**(Gloor)**
|
||||
Gloor, J Chem Phys, 123, 134703 (2005)
|
||||
|
||||
**(Glosli)**
|
||||
Glosli, unpublished, 2005. Streitz, Glosli, Patel, Chan, Yates, de Supinski, Sexton and Gunnels, Journal of Physics: Conference Series, 46, 254 (2006).
|
||||
|
||||
**(Goff)**
|
||||
Goff, Zhang, Negre, Rohskopf, Niklasson, Journal of Chemical Theory and Computation 19, no. 13 (2023).
|
||||
|
||||
**(Goldman1)**
|
||||
Goldman, Reed and Fried, J. Chem. Phys. 131, 204103 (2009)
|
||||
|
||||
@ -412,6 +526,9 @@ Bibliography
|
||||
**(Guo)**
|
||||
Guo and Thirumalai, Journal of Molecular Biology, 263, 323-43 (1996).
|
||||
|
||||
**(Gupta)**
|
||||
Gupta ,Phys Rev. B, 23, 6265-6270 (1981).
|
||||
|
||||
**(Hardy)**
|
||||
David Hardy thesis: Multilevel Summation for the Fast Evaluation of Forces for the Simulation of Biomolecules, University of Illinois at Urbana-Champaign, (2006).
|
||||
|
||||
@ -433,6 +550,9 @@ Bibliography
|
||||
**(Henrich)**
|
||||
O.\ Henrich, Y. A. Gutierrez-Fosado, T. Curk, T. E. Ouldridge, Eur. Phys. J. E 41, 57 (2018).
|
||||
|
||||
**(Herman)**
|
||||
M. F. Herman, E. J. Bruskin, B. J. Berne, J Chem Phys, 76, 5150 (1982).
|
||||
|
||||
**(Hess)**
|
||||
Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209-217.
|
||||
|
||||
@ -454,24 +574,42 @@ Bibliography
|
||||
**(Hoover)**
|
||||
Hoover, Phys Rev A, 31, 1695 (1985).
|
||||
|
||||
**(Huang)**
|
||||
Huang, Zhang, Yuan, Gao, Zhang, Nano Lett. 13, 4546(2013).
|
||||
|
||||
**(Huang2014)**
|
||||
X. Huang, "Exploring critical-state behavior using DEM", Doctoral dissertation, Imperial College. (2014). https://doi.org/10.25560/25316
|
||||
|
||||
**(Hu)**
|
||||
Hu, and Adams J. Comp. Physics, 213, 844-861 (2006).
|
||||
|
||||
**(Hu)**
|
||||
Hu, J. Chem. Theory Comput. 10, 5254 (2014).
|
||||
|
||||
**(Hummer)**
|
||||
Hummer, Gronbech-Jensen, Neumann, J Chem Phys, 109, 2791 (1998)
|
||||
|
||||
**(Hunt)**
|
||||
Hunt, Mol Simul, 42, 347 (2016).
|
||||
|
||||
**(Ikeshoji)**
|
||||
Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994).
|
||||
|
||||
**(Ikeshoji2)**
|
||||
Ikeshoji, Hafskjold, Furuholt, Mol Sim, 29, 101-109, (2003).
|
||||
|
||||
**(Ilie)**
|
||||
Ilie, Briels, den Otter, Journal of Chemical Physics, 142, 114103 (2015).
|
||||
|
||||
**(In 't Veld)**
|
||||
In 't Veld, Ismail, Grest, J Chem Phys (accepted) (2007).
|
||||
|
||||
**(IPI)**
|
||||
`https://ipi-code.org/ <https://ipi-code.org/>`
|
||||
|
||||
**(IPI-CPC)**
|
||||
Ceriotti, More and Manolopoulos, Comp Phys Comm, 185, 1019-1026 (2014).
|
||||
|
||||
**(Ikeshoji)**
|
||||
Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994).
|
||||
|
||||
**(In 't Veld)**
|
||||
In 't Veld, Ismail, Grest, J Chem Phys (accepted) (2007).
|
||||
|
||||
**(Isele-Holder)**
|
||||
Isele-Holder, Mitchell, Ismail, J Chem Phys, 137, 174107 (2012).
|
||||
|
||||
@ -490,6 +628,9 @@ Bibliography
|
||||
**(Izvekov)**
|
||||
Izvekov, Voth, J Chem Phys 123, 134105 (2005).
|
||||
|
||||
**(Jadhao)**
|
||||
Jadhao, Solis, Olvera de la Cruz, J Chem Phys, 138, 054119 (2013)
|
||||
|
||||
**(Janssens)**
|
||||
Janssens, Olmsted, Holm, Foiles, Plimpton, Derlet, Nature Materials, 5, 124-127 (2006).
|
||||
|
||||
@ -502,6 +643,15 @@ Bibliography
|
||||
**(Jiang)**
|
||||
Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux, J Phys Chem Lett, 2, 87-92 (2011).
|
||||
|
||||
**(Jiang1)**
|
||||
Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux, J Phys Chem Lett, 2, 87-92 (2011).
|
||||
|
||||
**(Jiang2)**
|
||||
J.-W. Jiang, Nanotechnology 26, 315706 (2015).
|
||||
|
||||
**(Jiang3)**
|
||||
J.-W. Jiang, Acta Mech. Solida. Sin 32, 17 (2019).
|
||||
|
||||
**(Johnson et al, 1971)**
|
||||
Johnson, K. L., Kendall, K., & Roberts, A. D. (1971). Surface energy and the contact of elastic solids. Proc. R. Soc. Lond. A, 324(1558), 301-313.
|
||||
|
||||
@ -571,21 +721,24 @@ Bibliography
|
||||
**(Lamoureux)**
|
||||
Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003).
|
||||
|
||||
**(Larentzos)**
|
||||
J.P. Larentzos, J.K. Brennan, J.D. Moore, and W.D. Mattson, "LAMMPS Implementation of Constant Energy Dissipative Particle Dynamics (DPD-E)", ARL-TR-6863, U.S. Army Research
|
||||
**(Landsgesell)**
|
||||
J. Landsgesell, P. Hebbeker, O. Rud, R. Lunkad, P. Kosovan, and C. Holm, Macromolecules 53, 3007-3020 (2020).
|
||||
|
||||
**(Larentzos1)**
|
||||
J.P. Larentzos, J.K. Brennan, J.D. Moore, M. Lisal and W.D. Mattson, "Parallel Implementation of Isothermal and Isoenergetic Dissipative Particle Dynamics Using Shardlow-Like Splitting
|
||||
J.P. Larentzos, J.K. Brennan, J.D. Moore, M. Lisal and W.D. Mattson, Comput. Phys. Commun., 185, 1987-1998 (2014).
|
||||
|
||||
**(Larentzos2)**
|
||||
J.P. Larentzos, J.K. Brennan, J.D. Moore, and W.D. Mattson, "LAMMPS Implementation of Constant Energy Dissipative Particle Dynamics (DPD-E)", ARL-TR-6863, U.S. Army Research
|
||||
J.P. Larentzos, J.K. Brennan, J.D. Moore, and W.D. Mattson, ARL-TR-6863, U.S. Army Research Laboratory, Aberdeen Proving Ground, MD (2014).
|
||||
|
||||
**(Larsen)**
|
||||
Larsen, Schmidt, Schiotz, Modelling Simul Mater Sci Eng, 24, 055007 (2016).
|
||||
|
||||
**(Lebedeva et al.)**
|
||||
**(Lebedeva1)**
|
||||
I.\ V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Phys. Rev. B, 84, 245437 (2011)
|
||||
|
||||
**(Lebedeva2)**
|
||||
I. V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Physica E: 44, 949-954 (2012)
|
||||
|
||||
**(Lechman)**
|
||||
Lechman, et al, in preparation (2010).
|
||||
|
||||
@ -595,6 +748,9 @@ Bibliography
|
||||
**(Lee2)**
|
||||
Lee, Baskes, Kim, Cho. Phys. Rev. B, 64, 184102 (2001).
|
||||
|
||||
**(Lee2020)**
|
||||
C.W. Lee, et al. (2020) Physical Review B, 102(2), 024107.
|
||||
|
||||
**(Lenart)**
|
||||
Lenart , Jusufi, and Panagiotopoulos, J Chem Phys, 126, 044509 (2007).
|
||||
|
||||
@ -619,8 +775,11 @@ Bibliography
|
||||
**(Li2015_JCP)**
|
||||
Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: 014101 (2015). DOI:10.1063/1.4923254.
|
||||
|
||||
**(Liang)**
|
||||
Liang, Phillpot, Sinnott Phys. Rev. B79 245110, (2009), Erratum: Phys. Rev. B85 199903(E), (2012)
|
||||
|
||||
**(Lisal)**
|
||||
M.\ Lisal, J.K. Brennan, J. Bonet Avalos, "Dissipative particle dynamics at isothermal, isobaric, isoenergetic, and isoenthalpic conditions using Shardlow-like splitting algorithms.",
|
||||
M.\ Lisal, J.K. Brennan, J. Bonet Avalos, J. Chem. Phys., 135, 204105 (2011).
|
||||
|
||||
**(Liu1)**
|
||||
L.\ Liu, Y. Liu, S. V. Zybin, H. Sun and W. A. Goddard, Journal of Physical Chemistry A, 115, 11016-11022 (2011).
|
||||
@ -637,6 +796,15 @@ Bibliography
|
||||
**(Luding, 2008)**
|
||||
Luding, S. (2008). Cohesive, frictional powders: contact models for tension. Granular matter, 10(4), 235.
|
||||
|
||||
**(Lysogorskiy)**
|
||||
Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021).
|
||||
|
||||
**(Lysogorskiy21)**
|
||||
Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021).
|
||||
|
||||
**(Lysogorskiy23)**
|
||||
Lysogorskiy, Bochkarev, Mrovec, Drautz, Phys Rev Mater, 7, 043801 (2023) / arXiv:2212.08716 (2022).
|
||||
|
||||
**(Maaravi)**
|
||||
T.\ Maaravi et al, J. Phys. Chem. C 121, 22826-22835 (2017).
|
||||
|
||||
@ -655,12 +823,18 @@ Bibliography
|
||||
**(Maginn)**
|
||||
Kelkar, Rafferty, Maginn, Siepmann, Fluid Phase Equilibria, 260, 218-231 (2007).
|
||||
|
||||
**(Mahoney)**
|
||||
Mahoney, Jorgensen, J Chem Phys 112, 8910 (2000)
|
||||
|
||||
**(Malolepsza)**
|
||||
Malolepsza, Secor, Keyes, J Phys Chem B 119 (42), 13379-13384 (2015).
|
||||
|
||||
**(Mandadapu)**
|
||||
Mandadapu, KK; Templeton, JA; Lee, JW, "Polarization as a field variable from molecular dynamics simulations." Journal of Chemical Physics (2013), 139:054115. Please refer to the standard finite element (FE) texts, e.g. T.J.R Hughes " The finite element method ", Dover 2003, for the basics of FE simulation.
|
||||
|
||||
**(Mandelli_1)**
|
||||
D. Mandelli, W. Ouyang, M. Urbakh, and O. Hod, ACS Nano 13(7), 7603-7609 (2019).
|
||||
|
||||
**(Maras)**
|
||||
Maras, Trushin, Stukowski, Ala-Nissila, Jonsson, Comp Phys Comm, 205, 13-21 (2016).
|
||||
|
||||
@ -676,6 +850,9 @@ Bibliography
|
||||
**(Martyna1994)**
|
||||
Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994).
|
||||
|
||||
**(Martyna2)**
|
||||
G. Martyna, A. Hughes, M. Tuckerman, J. Chem. Phys. 110, 3275 (1999).
|
||||
|
||||
**(Mason)**
|
||||
J.\ K. Mason, Acta Cryst A65, 259 (2009).
|
||||
|
||||
@ -715,6 +892,9 @@ Bibliography
|
||||
**(Mie)**
|
||||
G.\ Mie, Ann Phys, 316, 657 (1903).
|
||||
|
||||
**(Milano)**
|
||||
G. Milano, S. Goudeau, F. Mueller-Plathe, J. Polym. Sci. B Polym. Phys. 43, 871 (2005).
|
||||
|
||||
**(Miller1)**
|
||||
T.\ F. Miller III, M. Eleftheriou, P. Pattnaik, A. Ndirango, G. J. Martyna, J. Chem. Phys., 116, 8649-8659 (2002).
|
||||
|
||||
@ -745,12 +925,18 @@ Bibliography
|
||||
**(Mitchell2011a)**
|
||||
Mitchell. A Nonlocal, Ordinary, State-Based Plasticity Model for Peridynamics. Sandia National Lab Report, 3166:1-34 (2011).
|
||||
|
||||
**(Miyazaki)**
|
||||
Miyazaki, Okazaki, Shinoda, J Chem Theory Comput, 16, 782-793 (2020).
|
||||
|
||||
**(Mniszewski)**
|
||||
S.\ M. Mniszewski, M. J. Cawkwell, M. E. Wall, J. Mohd-Yusof, N. Bock, T. C. Germann, and A. M. N. Niklasson, J. Chem. Theory Comput., 11, 4644 (2015).
|
||||
|
||||
**(Monaghan)**
|
||||
Monaghan and Gingold, Journal of Computational Physics, 52, 374-389 (1983).
|
||||
|
||||
**(Monti)**
|
||||
Monti, Clemmer, Srivastava, Silbert, Grest, and Lechman, Phys. Rev. E, (2022).
|
||||
|
||||
**(Moore)**
|
||||
Moore, J Chem Phys, 144, 104501 (2016).
|
||||
|
||||
@ -770,7 +956,7 @@ Bibliography
|
||||
Morris, Fox, Zhu, J Comp Physics, 136, 214-226 (1997).
|
||||
|
||||
**(Moustafa)**
|
||||
Sabry G. Moustafa, Andrew J. Schultz, and David A. Kofke, *Very fast averaging of thermal properties of crystals by molecular simulation*, `Phys. Rev. E [92], 043303 (2015) <https://link.aps.org/doi/10.1103/PhysRevE.92.043303>`_
|
||||
Sabry G. Moustafa, Andrew J. Schultz, and David A. Kofke, `Phys. Rev. E [92], 043303 (2015) <https://link.aps.org/doi/10.1103/PhysRevE.92.043303>`_
|
||||
|
||||
**(Muller-Plathe1)**
|
||||
Muller-Plathe, J Chem Phys, 106, 6082 (1997).
|
||||
@ -790,9 +976,6 @@ Bibliography
|
||||
**(Neelov)**
|
||||
Neelov, Holm, J Chem Phys 132, 234103 (2010)
|
||||
|
||||
**(Negre2016)**
|
||||
C.\ F. A. Negre, S. M. Mniszewski, M. J. Cawkwell, N. Bock, M. E. Wall, and A. M. N. Niklasson, J. Chem. Theory Comp., 12, 3063 (2016).
|
||||
|
||||
**(Nelson)**
|
||||
Nelson, Halperin, Phys Rev B, 19, 2457 (1979).
|
||||
|
||||
@ -802,12 +985,24 @@ Bibliography
|
||||
**(Neyts)**
|
||||
E.\ C. Neyts and A. Bogaerts, Theor. Chem. Acc. 132, 1320 (2013).
|
||||
|
||||
**(Nguyen2023)**
|
||||
Nguyen, Physical Review B, 107(14), 144103, (2023).
|
||||
|
||||
**(Nguyen2024)**
|
||||
Nguyen, Journal of Computational Physics, 113102, (2024).
|
||||
|
||||
**(Nguyen and Rohskopf)**
|
||||
Nguyen and Rohskopf, Journal of Computational Physics, 480, 112030, (2023).
|
||||
|
||||
**(Nguyen and Sema)**
|
||||
Nguyen and Sema, https://arxiv.org/abs/2405.00306, (2024).
|
||||
|
||||
**(NguyenTD)**
|
||||
Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019)
|
||||
|
||||
**(Nicholson and Rutledge)**
|
||||
Nicholson and Rutledge, J Chem Phys, 145, 244903 (2016).
|
||||
|
||||
**(Nicklas)**
|
||||
The spline-based MEAM+SW format was first devised and used to develop potentials for bcc transition metals by Jeremy Nicklas, Michael Fellinger,
|
||||
|
||||
**(Niklasson2002)**
|
||||
A.\ M. N. Niklasson, Phys. Rev. B, 66, 155115 (2002).
|
||||
|
||||
@ -820,6 +1015,9 @@ Bibliography
|
||||
**(Niklasson2017)**
|
||||
A.\ M. N. Niklasson, J. Chem. Phys., 147, 054103 (2017).
|
||||
|
||||
**(Nitol)**
|
||||
Nitol, Dickel, and Barrett, Computational Materials Science 188 (2021): 110207.
|
||||
|
||||
**(Noid)**
|
||||
Noid, Chu, Ayton, Krishna, Izvekov, Voth, Das, Andersen, J Chem Phys 128, 134105 (2008).
|
||||
|
||||
@ -841,6 +1039,9 @@ Bibliography
|
||||
**(O'Connor)**
|
||||
O'Connor et al., J. Chem. Phys. 142, 024903 (2015).
|
||||
|
||||
**(O'Hearn)**
|
||||
O'Hearn, Alperen, Aktulga, SIAM J. Sci. Comput., 42(1), C1--C22 (2020).
|
||||
|
||||
**(Okabe)**
|
||||
T.\ Okabe, M. Kawata, Y. Okamoto, M. Masuhiro, Chem. Phys. Lett., 335, 435-439 (2001).
|
||||
|
||||
@ -850,6 +1051,8 @@ Bibliography
|
||||
**(Omelyan)**
|
||||
Omelyan, Mryglod, and Folk. Phys. Rev. Lett. 86(5), 898. (2001).
|
||||
|
||||
**(OPLS-AA96)** Jorgensen, Maxwell, Tirado-Rives, J Am Chem Soc, 118(45), 11225-11236 (1996).
|
||||
|
||||
**(Oppelstrup)**
|
||||
Oppelstrup, unpublished, 2015. Oppelstrup and Moriarty, to be published.
|
||||
|
||||
@ -871,14 +1074,17 @@ Bibliography
|
||||
**(Ouyang2)**
|
||||
W.\ Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020).
|
||||
|
||||
**(PASS)**
|
||||
PASS webpage: https://www.sdu.dk/en/DPASS
|
||||
**(Ouyang_1)**
|
||||
W. Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020).
|
||||
|
||||
**(PLUMED)**
|
||||
G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014)
|
||||
**(Ouyang6)**
|
||||
W. Ouyang, O. Hod, and R. Guerra, J. Chem. Theory Comput. 17, 7215 (2021).
|
||||
|
||||
**(Pavlov)**
|
||||
D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Journal of High Performance Computing Applications, 38, 34-49 (2024).
|
||||
**(Ouyang7)**
|
||||
W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021).
|
||||
|
||||
**(Palkar)**
|
||||
Palkar V, Kuksenok O, J. Phys. Chem. B, 126 (1), 336-346, 2022
|
||||
|
||||
**(Paquay)**
|
||||
Paquay and Kusters, Biophys. J., 110, 6, (2016). preprint available at `arXiv:1411.3019 <https://arxiv.org/abs/1411.3019/>`_.
|
||||
@ -889,21 +1095,33 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Parks)**
|
||||
Parks, Lehoucq, Plimpton, Silling, Comp Phys Comm, 179(11), 777-783 (2008).
|
||||
|
||||
**(Parrinello1981)**
|
||||
**(Parrinello)**
|
||||
Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
|
||||
|
||||
**(PASS)**
|
||||
PASS webpage: https://www.sdu.dk/en/DPASS
|
||||
|
||||
**(Paula Leite2016)**
|
||||
Paula Leite , Freitas, Azevedo, and de Koning, J Chem Phys, 126, 044509 (2016).
|
||||
|
||||
**(Paula Leite2017)**
|
||||
Paula Leite, Santos-Florez, and de Koning, Phys Rev E, 96, 32115 (2017).
|
||||
|
||||
**(Pavlov1)**
|
||||
D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Journal of High Performance Computing Applications, 38, 34-49 (2024).
|
||||
|
||||
**(Pavlov2)**
|
||||
Pavlov, Galigerov, Kolotinskii, Nikolskiy, Stegailov, "GPU-based Molecular Dynamics of Fluid Flows: Reaching for Turbulence", Int. J. High Perf. Comp. Appl., (2024)
|
||||
|
||||
**(Pearlman)**
|
||||
Pearlman, J Chem Phys, 98, 1487 (1994)
|
||||
|
||||
**(Pedersen)**
|
||||
Pedersen, J. Chem. Phys., 139, 104102 (2013).
|
||||
|
||||
**(Pedone)**
|
||||
A. Pedone, G. Malavasi, M. C. Menziani, A. N. Cormack, and U. Segre, J. Phys. Chem. B, 110, 11780 (2006)
|
||||
|
||||
**(Peng)**
|
||||
Peng, Ren, Dudarev, Whelan, Acta Crystallogr. A, 52, 257-76 (1996).
|
||||
|
||||
@ -925,6 +1143,9 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Pettifor_3)**
|
||||
D.G. Pettifor and I.I. Oleinik, Phys. Rev. B, 65, 172103 (2002).
|
||||
|
||||
**(PFC)**
|
||||
PFC Particle Flow Code 6.0 Documentation. Itasca Consulting Group.
|
||||
|
||||
**(Phillips)**
|
||||
C.\ L. Phillips, J. A. Anderson, S. C. Glotzer, Comput Phys Comm, 230, 7191-7201 (2011).
|
||||
|
||||
@ -934,9 +1155,21 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Pisarev)**
|
||||
V V Pisarev and S V Starikov, J. Phys.: Condens. Matter, 26, 475401 (2014).
|
||||
|
||||
**(Plimpton)**
|
||||
Plimpton and Knight, JPDC, 147, 184-195 (2021).
|
||||
|
||||
**(PLUMED)**
|
||||
G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014)
|
||||
|
||||
**(Pollock)**
|
||||
Pollock and Glosli, Comp Phys Comm, 95, 93 (1996).
|
||||
|
||||
**(Ponder)**
|
||||
Ponder, Wu, Ren, Pande, Chodera, Schnieders, Haque, Mobley, Lambrecht, DiStasio Jr, M. Head-Gordon, Clark, Johnson, T. Head-Gordon, J Phys Chem B, 114, 2549-2564 (2010).
|
||||
|
||||
**(Popov1)**
|
||||
A.M. Popov, I. V. Lebedeva, A. A. Knizhnik, Y. E. Lozovik and B. V. Potapkin, Chem. Phys. Lett. 536, 82-86 (2012).
|
||||
|
||||
**(Price1)**
|
||||
Price and Brooks, J Chem Phys, 121, 10096 (2004).
|
||||
|
||||
@ -976,6 +1209,12 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Rick)**
|
||||
S.\ W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 16141 (1994).
|
||||
|
||||
**(Rick2)**
|
||||
S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141
|
||||
|
||||
**(Roberts)**
|
||||
R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. `<http://extremelearning.com.au/evenly-distributing-points-in-a-triangle/>`_
|
||||
|
||||
**(Rohart)**
|
||||
Rohart and Thiaville, Physical Review B, 88(18), 184422. (2013).
|
||||
|
||||
@ -1012,9 +1251,18 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Sadigh)**
|
||||
B Sadigh, P Erhart, A Stukowski, A Caro, E Martinez, and L Zepeda-Ruiz, Phys. Rev. B, 85, 184203 (2012).
|
||||
|
||||
**(Sadigh1)**
|
||||
B. Sadigh, P. Erhart, A. Stukowski, A. Caro, E. Martinez, and L. Zepeda-Ruiz, Phys. Rev. B **85**, 184203 (2012)
|
||||
|
||||
**(Sadigh2)**
|
||||
B. Sadigh and P. Erhart, Phys. Rev. B **86**, 134204 (2012)
|
||||
|
||||
**(Safran)**
|
||||
Safran, Statistical Thermodynamics of Surfaces, Interfaces, And Membranes, Westview Press, ISBN: 978-0813340791 (2003).
|
||||
|
||||
**(Salanne)**
|
||||
Salanne, Rotenberg, Jahn, Vuilleumier, Simon, Christian and Madden, Theor Chem Acc, 131, 1143 (2012).
|
||||
|
||||
**(Salerno)**
|
||||
Salerno, Bernstein, J Chem Theory Comput, --, ---- (2018).
|
||||
|
||||
@ -1024,9 +1272,18 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Sanyal2)**
|
||||
Sanyal and Shell, Journal of Physical Chemistry B, 122 (21), 5678-5693.
|
||||
|
||||
**(Scalfi)**
|
||||
Scalfi *et al.*, J. Chem. Phys., 153, 174704 (2020).
|
||||
|
||||
**(Schelling)**
|
||||
Patrick K. Schelling, Comp. Mat. Science, 44, 274 (2008).
|
||||
|
||||
**(Scherer1)**
|
||||
C. Scherer and D. Andrienko, Phys. Chem. Chem. Phys. 20, 22387-22394 (2018).
|
||||
|
||||
**(Scherer2)**
|
||||
C. Scherer, R. Scheid, D. Andrienko, and T. Bereau, J. Chem. Theor. Comp. 16, 3194-3204 (2020).
|
||||
|
||||
**(Schlitter1)**
|
||||
Schlitter, Swegat, Mulders, "Distance-type reaction coordinates for modelling activated processes", J Molecular Modeling, 7, 171-177 (2001).
|
||||
|
||||
@ -1045,21 +1302,36 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Schroeder)**
|
||||
Schroeder and Steinhauser, J Chem Phys, 133, 154511 (2010).
|
||||
|
||||
**(Seleson 2010)**
|
||||
Seleson, Parks, Int J Mult Comp Eng 9(6), pp. 689-706, 2011.
|
||||
|
||||
**(Semaev)**
|
||||
Semaev, Cryptography and Lattices, 181 (2001).
|
||||
|
||||
**(Seo)**
|
||||
Seo, Shinoda, J Chem Theory Comput, 15, 762-774 (2019).
|
||||
|
||||
**(Sheppard)**
|
||||
Sheppard, Terrell, Henkelman, J Chem Phys, 128, 134106 (2008). See ref 1 in this paper for original reference to Qmin in Jonsson, Mills, Jacobsen.
|
||||
|
||||
**(Shi)**
|
||||
Shi, Xia, Zhang, Best, Wu, Ponder, Ren, J Chem Theory Comp, 9, 4046, 2013.
|
||||
|
||||
**(Shinoda)**
|
||||
Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007).
|
||||
|
||||
**(Shinoda)**
|
||||
Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
|
||||
|
||||
**(Shire)**
|
||||
Shire, Hanley and Stratford, Comp. Part. Mech., (2020).
|
||||
|
||||
**(Sides)**
|
||||
Sides, Grest, Stevens, Plimpton, J Polymer Science B, 42, 199-208 (2004).
|
||||
|
||||
**(Siepmann)**
|
||||
Siepmann and Sprik, J. Chem. Phys. 102, 511 (1995).
|
||||
|
||||
**(Silbert)**
|
||||
Silbert, Ertas, Grest, Halsey, Levine, Plimpton, Phys Rev E, 64, p 051302 (2001).
|
||||
|
||||
@ -1069,12 +1341,21 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Silling 2000)**
|
||||
Silling, J Mech Phys Solids, 48, 175-209 (2000).
|
||||
|
||||
**(Silling 2005)**
|
||||
Silling Askari, Computer and Structures, 83, 1526-1535 (2005).
|
||||
|
||||
**(Silling 2007)**
|
||||
Silling, Epton, Weckner, Xu, Askari, J Elasticity, 88, 151-184 (2007).
|
||||
|
||||
**(Singh)**
|
||||
Singh and Warner, Acta Mater, 58, 5797-5805 (2010),
|
||||
|
||||
**(Singraber, Behler and Dellago 2019)**
|
||||
Singraber, A.; Behler, J.; Dellago, C. J., Chem. Theory Comput. 2019, 15 (3), 1827-1840
|
||||
|
||||
**(Singraber et al 2019)**
|
||||
Singraber, A.; Morawietz, T.; Behler, J.; Dellago, C., J. Chem. Theory Comput. 2019, 15 (5), 3075-3092.
|
||||
|
||||
**(Sirk1)**
|
||||
Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012.
|
||||
|
||||
@ -1087,6 +1368,9 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Snodin)**
|
||||
B.E. Snodin, F. Randisi, M. Mosayebi, et al., J. Chem. Phys. 142, 234901 (2015).
|
||||
|
||||
**(Son)**
|
||||
Son, McDaniel, Cui and Yethiraj, J Phys Chem Lett, 10, 7523 (2019).
|
||||
|
||||
**(Srivastava)**
|
||||
Zhigilei, Wei, Srivastava, Phys. Rev. B 71, 165417 (2005).
|
||||
|
||||
@ -1096,6 +1380,12 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Steinhardt)**
|
||||
P.\ Steinhardt, D. Nelson, and M. Ronchetti, Phys. Rev. B 28, 784 (1983).
|
||||
|
||||
**(Steward)**
|
||||
Stewart, Spearot, Modelling Simul. Mater. Sci. Eng. 21, 045003, (2013).
|
||||
|
||||
**(Stewart2018)**
|
||||
J.A. Stewart, et al. (2018) Journal of Applied Physics, 123(16), 165902.
|
||||
|
||||
**(Stiles)**
|
||||
Stiles , Hubbard, and Kayser, J Chem Phys, 77, 6189 (1982).
|
||||
|
||||
@ -1153,12 +1443,21 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Tainter 2015)**
|
||||
Tainter, Shi, and Skinner, 11, 2268 (2015)
|
||||
|
||||
**(Tang and Toennies)**
|
||||
J Chem Phys, 80, 3726 (1984).
|
||||
|
||||
**(Tee)**
|
||||
Tee and Searles, J. Chem. Phys. 156, 184101 (2022).
|
||||
|
||||
**(Templeton2010)**
|
||||
Templeton, JA; Jones, RE; Wagner, GJ, "Application of a field-based method to spatially varying thermal transport problems in molecular dynamics." Modelling and Simulation in Materials Science and Engineering (2010), 18:085007.
|
||||
|
||||
**(Templeton2011)**
|
||||
Templeton, JA; Jones, RE; Lee, JW; Zimmerman, JA; Wong, BM, "A long-range electric field solver for molecular dynamics based on atomistic-to-continuum modeling." Journal of Chemical Theory and Computation (2011), 7:1736.
|
||||
|
||||
**(tenWolde)**
|
||||
P.\ R. ten Wolde, M. J. Ruiz-Montero, D. Frenkel, J. Chem. Phys. 104, 9932 (1996).
|
||||
|
||||
**(Tersoff_1)**
|
||||
J.\ Tersoff, Phys Rev B, 37, 6991 (1988).
|
||||
|
||||
@ -1201,6 +1500,9 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Tranchida)**
|
||||
Tranchida, Plimpton, Thibaudeau and Thompson, Journal of Computational Physics, 372, 406-425, (2018).
|
||||
|
||||
**(Tribello)**
|
||||
G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014)
|
||||
|
||||
**(Tsuji et al, 1992)**
|
||||
Tsuji, Y., Tanaka, T., & Ishida, T. (1992). Lagrangian numerical simulation of plug flow of cohesionless particles in a horizontal pipe. Powder technology, 71(3),
|
||||
|
||||
@ -1219,6 +1521,9 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Tuckerman4)**
|
||||
Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys, 106, 5615 (1997).
|
||||
|
||||
**(Tyagi)**
|
||||
Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J Chem Phys, 132, 154112 (2010)
|
||||
|
||||
**(Ulomek)**
|
||||
Ulomek, Brien, Foiles, Mohles, Modelling Simul. Mater. Sci. Eng. 23 (2015) 025007
|
||||
|
||||
@ -1228,6 +1533,15 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Valone)**
|
||||
Valone, Baskes, Martin, Phys. Rev. B, 73, 214209 (2006).
|
||||
|
||||
**(vanWijk)**
|
||||
M. M. van Wijk, A. Schuring, M. I. Katsnelson, and A. Fasolino, Physical Review Letters, 113, 135504 (2014)
|
||||
|
||||
**(Van Workum)**
|
||||
K. Van Workum et al., J. Chem. Phys. 125 144506 (2006)
|
||||
|
||||
**(Vargas and McCarthy 2001)**
|
||||
Vargas, W.L. and McCarthy, J.J. (2001).
|
||||
|
||||
**(Varshalovich)**
|
||||
Varshalovich, Moskalev, Khersonskii, Quantum Theory of Angular Momentum, World Scientific, Singapore (1987).
|
||||
|
||||
@ -1240,6 +1554,9 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Veld)**
|
||||
In 't Veld, Ismail, Grest, J Chem Phys, 127, 144711 (2007).
|
||||
|
||||
**(Verstraelen)**
|
||||
Verstraelen, Ayers, Speybroeck, Waroquier, J. Chem. Phys. 138, 074108 (2013).
|
||||
|
||||
**(Volkov1)**
|
||||
Volkov and Zhigilei, J Phys Chem C, 114, 5513 (2010).
|
||||
|
||||
@ -1264,6 +1581,9 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Wang et al, 2015)**
|
||||
Wang, Y., Alonso-Marroquin, F., & Guo, W. W. (2015). Rolling and sliding in 3-D discrete element models. Particuology, 23, 49-55.
|
||||
|
||||
**(Wang2020)**
|
||||
X. Wang, S. Ramirez-Hinestrosa, J. Dobnikar, and D. Frenkel, Phys. Chem. Chem. Phys. 22, 10624 (2020).
|
||||
|
||||
**(Wang1)**
|
||||
J.\ Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011).
|
||||
|
||||
@ -1303,6 +1623,9 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Wicaksono2)**
|
||||
Wicaksono, figshare, https://doi.org/10.6084/m9.figshare.1488628.v1 (2015).
|
||||
|
||||
**(Winkler)**
|
||||
Winkler, Wysocki, and Gompper, Soft Matter, 11, 6680 (2015).
|
||||
|
||||
**(Wirnsberger)**
|
||||
Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143, 124104 (2015).
|
||||
|
||||
@ -1315,9 +1638,27 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Wood)**
|
||||
Wood and Thompson, J Chem Phys, 148, 241721, (2018)
|
||||
|
||||
**(Xie23)**
|
||||
Xie, S.R., Rupp, M. & Hennig, R.G. Ultra-fast interpretable machine-learning potentials. npj Comput Mater 9, 162 (2023). https://doi.org/10.1038/s41524-023-01092-7
|
||||
|
||||
**(Yade-DEM)**
|
||||
V. Smilauer et al. (2021), Yade Documentation 3rd ed.
|
||||
|
||||
**(Yanxon2020)**
|
||||
Yanxon, Zagaceta, Tang, Matteson, Zhu, Mach. Learn.: Sci. Technol. 2, 027001 (2020).
|
||||
|
||||
**(Yeh)**
|
||||
Yeh and Berkowitz, J Chem Phys, 111, 3155 (1999).
|
||||
|
||||
**(Yuan2010a)**
|
||||
Yuan, Huang, Li, Lykotrafitis, Zhang, Phys. Rev. E, 82, 011905(2010).
|
||||
|
||||
**(Yuan2010b)**
|
||||
Yuan, Huang, Zhang, Soft. Matter, 6, 4571(2010).
|
||||
|
||||
**(Zagaceta2020)**
|
||||
Zagaceta, Yanxon, Zhu, J Appl Phys, 128, 045113 (2020).
|
||||
|
||||
**(ZBL)**
|
||||
J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges of Ions in Matter' Vol 1, 1985, Pergamon Press.
|
||||
|
||||
@ -1387,17 +1728,6 @@ D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Jo
|
||||
**(Zimmerman2010)**
|
||||
Zimmerman, JA; Jones, RE; Templeton, JA, "A material frame approach for evaluating continuum variables in atomistic simulations." Journal of Computational Physics (2010), 229:2364.
|
||||
|
||||
**(de Buyl)**
|
||||
de Buyl, Colberg and Hofling, H5MD: A structured, efficient, and portable file format for molecular data, Comp. Phys. Comm. 185(6), 1546-1553 (2014) -
|
||||
|
||||
**(de Koning)**
|
||||
de Koning and Antonelli, Phys Rev E, 53, 465 (1996).
|
||||
|
||||
**(electronic stopping)**
|
||||
Wikipedia - Electronic Stopping Power: https://en.wikipedia.org/wiki/Stopping_power_%28particle_radiation%29
|
||||
|
||||
**(tenWolde)**
|
||||
P.\ R. ten Wolde, M. J. Ruiz-Montero, D. Frenkel, J. Chem. Phys. 104, 9932 (1996).
|
||||
|
||||
**(vanWijk)**
|
||||
M.\ M. van Wijk, A. Schuring, M. I. Katsnelson, and A. Fasolino, Physical Review Letters, 113, 135504 (2014)
|
||||
|
||||
@ -37,8 +37,9 @@ standard. A more detailed discussion of that is below.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D BUILD_MPI=value # yes or no, default is yes if CMake finds MPI, else no
|
||||
-D BUILD_OMP=value # yes or no, default is yes if a compatible compiler is detected
|
||||
-D BUILD_MPI=value # yes or no, default is yes if CMake finds MPI
|
||||
-D BUILD_OMP=value # yes or no, default is yes if a compatible
|
||||
# compiler is detected
|
||||
-D LAMMPS_MACHINE=name # name = mpi, serial, mybox, titan, laptop, etc
|
||||
# no default value
|
||||
|
||||
@ -54,9 +55,9 @@ standard. A more detailed discussion of that is below.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make mpi # parallel build, produces lmp_mpi using Makefile.mpi
|
||||
make serial # serial build, produces lmp_serial using Makefile/serial
|
||||
make mybox # uses Makefile.mybox to produce lmp_mybox
|
||||
make mpi # parallel build, produces lmp_mpi using Makefile.mpi
|
||||
make serial # serial build, produces lmp_serial using Makefile/serial
|
||||
make mybox # uses Makefile.mybox to produce lmp_mybox
|
||||
|
||||
Any ``make machine`` command will look up the make settings from a
|
||||
file ``Makefile.machine`` in the folder ``src/MAKE`` or one of its
|
||||
@ -74,15 +75,15 @@ standard. A more detailed discussion of that is below.
|
||||
this is ``-fopenmp``\ , which can be added to the ``CC`` and
|
||||
``LINK`` makefile variables.
|
||||
|
||||
For the serial build the following make variables are set (see src/MAKE/Makefile.serial):
|
||||
For the serial build the following make variables are set (see ``src/MAKE/Makefile.serial``):
|
||||
|
||||
.. code-block:: make
|
||||
|
||||
CC = g++
|
||||
LINK = g++
|
||||
MPI_INC = -I../STUBS
|
||||
MPI_PATH = -L../STUBS
|
||||
MPI_LIB = -lmpi_stubs
|
||||
CC = g++
|
||||
LINK = g++
|
||||
MPI_INC = -I../STUBS
|
||||
MPI_PATH = -L../STUBS
|
||||
MPI_LIB = -lmpi_stubs
|
||||
|
||||
You also need to build the STUBS library for your platform before
|
||||
making LAMMPS itself. A ``make serial`` build does this for you
|
||||
@ -231,24 +232,32 @@ LAMMPS.
|
||||
.. code-block:: bash
|
||||
|
||||
# Building with GNU Compilers:
|
||||
cmake ../cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_Fortran_COMPILER=gfortran
|
||||
# Building with Intel Compilers:
|
||||
cmake ../cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort
|
||||
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ \
|
||||
-DCMAKE_Fortran_COMPILER=gfortran ../cmake
|
||||
# Building with Intel Classic Compilers:
|
||||
cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc \
|
||||
-DCMAKE_Fortran_COMPILER=ifort ../cmake
|
||||
# Building with Intel oneAPI Compilers:
|
||||
cmake ../cmake -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DCMAKE_Fortran_COMPILER=ifx
|
||||
cmake -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx \
|
||||
-DCMAKE_Fortran_COMPILER=ifx ../cmake
|
||||
# Building with LLVM/Clang Compilers:
|
||||
cmake ../cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang
|
||||
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
|
||||
-DCMAKE_Fortran_COMPILER=flang ../cmake
|
||||
# Building with PGI/Nvidia Compilers:
|
||||
cmake ../cmake -DCMAKE_C_COMPILER=pgcc -DCMAKE_CXX_COMPILER=pgc++ -DCMAKE_Fortran_COMPILER=pgfortran
|
||||
cmake -DCMAKE_C_COMPILER=pgcc -DCMAKE_CXX_COMPILER=pgc++ \
|
||||
-DCMAKE_Fortran_COMPILER=pgfortran ../cmake
|
||||
# Building with the NVHPC Compilers:
|
||||
cmake -DCMAKE_C_COMPILER=nvc -DCMAKE_CXX_COMPILER=nvc++ \
|
||||
-DCMAKE_Fortran_COMPILER=nvfortran ../cmake
|
||||
|
||||
For compiling with the Clang/LLVM compilers a CMake preset is
|
||||
provided that can be loaded with
|
||||
`-C ../cmake/presets/clang.cmake`. Similarly,
|
||||
`-C ../cmake/presets/intel.cmake` should switch the compiler
|
||||
toolchain to the legacy Intel compilers, `-C ../cmake/presets/oneapi.cmake`
|
||||
``-C ../cmake/presets/clang.cmake``. Similarly,
|
||||
``-C ../cmake/presets/intel.cmake`` should switch the compiler
|
||||
toolchain to the legacy Intel compilers, ``-C ../cmake/presets/oneapi.cmake``
|
||||
will switch to the LLVM based oneAPI Intel compilers,
|
||||
and `-C ../cmake/presets/pgi.cmake`
|
||||
will switch the compiler to the PGI compilers.
|
||||
``-C ../cmake/presets/pgi.cmake`` will switch the compiler to the PGI compilers,
|
||||
and ``-C ../cmake/presets/nvhpc.cmake`` will switch to the NVHPC compilers.
|
||||
|
||||
Furthermore, you can set ``CMAKE_TUNE_FLAGS`` to specifically add
|
||||
compiler flags to tune for optimal performance on given hosts.
|
||||
@ -259,7 +268,7 @@ LAMMPS.
|
||||
When the cmake command completes, it prints a summary to the
|
||||
screen which compilers it is using and what flags and settings
|
||||
will be used for the compilation. Note that if the top-level
|
||||
compiler is mpicxx, it is simply a wrapper on a real compiler.
|
||||
compiler is ``mpicxx``, it is simply a wrapper on a real compiler.
|
||||
The underlying compiler info is what CMake will try to
|
||||
determine and report. You should check to confirm you are
|
||||
using the compiler and optimization flags you want.
|
||||
@ -278,19 +287,19 @@ LAMMPS.
|
||||
|
||||
.. code-block:: make
|
||||
|
||||
CC = mpicxx
|
||||
CCFLAGS = -g -O3
|
||||
LINK = mpicxx
|
||||
LINKFLAGS = -g -O
|
||||
CC = mpicxx
|
||||
CCFLAGS = -g -O3
|
||||
LINK = mpicxx
|
||||
LINKFLAGS = -g -O
|
||||
|
||||
Serial build with GNU gcc (see ``src/MAKE/Makefile.serial``):
|
||||
|
||||
.. code-block:: make
|
||||
|
||||
CC = g++
|
||||
CCFLAGS = -g -O3
|
||||
LINK = g++
|
||||
LINKFLAGS = -g -O
|
||||
CC = g++
|
||||
CCFLAGS = -g -O3
|
||||
LINK = g++
|
||||
LINKFLAGS = -g -O
|
||||
|
||||
.. note::
|
||||
|
||||
@ -316,10 +325,10 @@ LAMMPS.
|
||||
there may be specific compiler or linker flags that are either
|
||||
required or recommended to enable required features and to
|
||||
achieve optimal performance. You need to include these in the
|
||||
CCFLAGS and LINKFLAGS settings above. For details, see the
|
||||
``CCFLAGS`` and ``LINKFLAGS`` settings above. For details, see the
|
||||
documentation for the individual packages listed on the
|
||||
:doc:`Speed_packages` page. Or examine these files in the
|
||||
src/MAKE/OPTIONS directory. They correspond to each of the 5
|
||||
``src/MAKE/OPTIONS`` directory. They correspond to each of the 5
|
||||
accelerator packages and their hardware variants:
|
||||
|
||||
.. code-block:: bash
|
||||
@ -388,7 +397,8 @@ running LAMMPS from Python via its library interface.
|
||||
|
||||
make machine # build LAMMPS executable lmp_machine
|
||||
make mode=static machine # same as "make machine"
|
||||
make mode=shared machine # build LAMMPS shared lib liblammps_machine.so instead
|
||||
make mode=shared machine # build LAMMPS shared lib liblammps_machine.so
|
||||
# instead
|
||||
|
||||
The "static" build will generate a static library called
|
||||
``liblammps_machine.a`` and an executable named ``lmp_machine``\ ,
|
||||
@ -450,7 +460,7 @@ installation.
|
||||
Including or removing debug support
|
||||
-----------------------------------
|
||||
|
||||
By default the compilation settings will include the *-g* flag which
|
||||
By default the compilation settings will include the ``-g`` flag which
|
||||
instructs the compiler to include debug information (e.g. which line of
|
||||
source code a particular instruction correspond to). This can be
|
||||
extremely useful in case LAMMPS crashes and can help to provide crucial
|
||||
@ -463,7 +473,7 @@ If this is a concern, you can change the compilation settings or remove
|
||||
the debug information from the LAMMPS executable:
|
||||
|
||||
- **Traditional make**: edit your ``Makefile.<machine>`` to remove the
|
||||
*-g* flag from the ``CCFLAGS`` and ``LINKFLAGS`` definitions
|
||||
``-g`` flag from the ``CCFLAGS`` and ``LINKFLAGS`` definitions
|
||||
- **CMake**: use ``-D CMAKE_BUILD_TYPE=Release`` or explicitly reset
|
||||
the applicable compiler flags (best done using the text mode or
|
||||
graphical user interface).
|
||||
@ -488,7 +498,9 @@ using CMake or Make.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D BUILD_TOOLS=value # yes or no (default). Build binary2txt, chain.x, micelle2d.x, msi2lmp, phana, stl_bin2txt
|
||||
-D BUILD_TOOLS=value # yes or no (default). Build binary2txt,
|
||||
# chain.x, micelle2d.x, msi2lmp, phana,
|
||||
# stl_bin2txt
|
||||
-D BUILD_LAMMPS_GUI=value # yes or no (default). Build LAMMPS-GUI
|
||||
|
||||
The generated binaries will also become part of the LAMMPS installation
|
||||
|
||||
@ -131,20 +131,20 @@ file called ``CMakeLists.txt`` (for LAMMPS it is located in the
|
||||
configuration step. The cache file contains all current CMake settings.
|
||||
|
||||
To modify settings, enable or disable features, you need to set
|
||||
*variables* with either the *-D* command line flag (``-D
|
||||
*variables* with either the ``-D`` command line flag (``-D
|
||||
VARIABLE1_NAME=value``) or change them in the text mode of the graphical
|
||||
user interface. The *-D* flag can be used several times in one command.
|
||||
user interface. The ``-D`` flag can be used several times in one command.
|
||||
|
||||
For your convenience, we provide :ref:`CMake presets <cmake_presets>`
|
||||
that combine multiple settings to enable optional LAMMPS packages or use
|
||||
a different compiler tool chain. Those are loaded with the *-C* flag
|
||||
a different compiler tool chain. Those are loaded with the ``-C`` flag
|
||||
(``-C ../cmake/presets/basic.cmake``). This step would only be needed
|
||||
once, as the settings from the preset files are stored in the
|
||||
``CMakeCache.txt`` file. It is also possible to customize the build
|
||||
by adding one or more *-D* flags to the CMake command line.
|
||||
by adding one or more ``-D`` flags to the CMake command line.
|
||||
|
||||
Generating files for alternate build tools (e.g. Ninja) and project files
|
||||
for IDEs like Eclipse, CodeBlocks, or Kate can be selected using the *-G*
|
||||
for IDEs like Eclipse, CodeBlocks, or Kate can be selected using the ``-G``
|
||||
command line flag. A list of available generator settings for your
|
||||
specific CMake version is given when running ``cmake --help``.
|
||||
|
||||
@ -171,7 +171,7 @@ files. E.g. with:
|
||||
In that case the resulting binaries are not in the build folder directly
|
||||
but in subdirectories corresponding to the build type (i.e. Release in
|
||||
the example from above). Similarly, for running unit tests the
|
||||
configuration is selected with the *-C* flag:
|
||||
configuration is selected with the ``-C`` flag:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
||||
@ -181,24 +181,24 @@ The output of this command will be looking something like this:
|
||||
$ ctest
|
||||
Test project /home/akohlmey/compile/lammps/build-testing
|
||||
Start 1: RunLammps
|
||||
1/563 Test #1: RunLammps .......................................... Passed 0.28 sec
|
||||
1/563 Test #1: RunLammps .................................. Passed 0.28 sec
|
||||
Start 2: HelpMessage
|
||||
2/563 Test #2: HelpMessage ........................................ Passed 0.06 sec
|
||||
2/563 Test #2: HelpMessage ................................ Passed 0.06 sec
|
||||
Start 3: InvalidFlag
|
||||
3/563 Test #3: InvalidFlag ........................................ Passed 0.06 sec
|
||||
3/563 Test #3: InvalidFlag ................................ Passed 0.06 sec
|
||||
Start 4: Tokenizer
|
||||
4/563 Test #4: Tokenizer .......................................... Passed 0.05 sec
|
||||
4/563 Test #4: Tokenizer .................................. Passed 0.05 sec
|
||||
Start 5: MemPool
|
||||
5/563 Test #5: MemPool ............................................ Passed 0.05 sec
|
||||
5/563 Test #5: MemPool .................................... Passed 0.05 sec
|
||||
Start 6: ArgUtils
|
||||
6/563 Test #6: ArgUtils ........................................... Passed 0.05 sec
|
||||
6/563 Test #6: ArgUtils ................................... Passed 0.05 sec
|
||||
[...]
|
||||
Start 561: ImproperStyle:zero
|
||||
561/563 Test #561: ImproperStyle:zero ................................. Passed 0.07 sec
|
||||
561/563 Test #561: ImproperStyle:zero ......................... Passed 0.07 sec
|
||||
Start 562: TestMliapPyUnified
|
||||
562/563 Test #562: TestMliapPyUnified ................................. Passed 0.16 sec
|
||||
562/563 Test #562: TestMliapPyUnified ......................... Passed 0.16 sec
|
||||
Start 563: TestPairList
|
||||
563/563 Test #563: TestPairList ....................................... Passed 0.06 sec
|
||||
563/563 Test #563: TestPairList ............................... Passed 0.06 sec
|
||||
|
||||
100% tests passed, 0 tests failed out of 563
|
||||
|
||||
@ -213,24 +213,25 @@ The output of this command will be looking something like this:
|
||||
The ``ctest`` command has many options, the most important ones are:
|
||||
|
||||
.. list-table::
|
||||
:widths: 20 80
|
||||
|
||||
* - Option
|
||||
- Function
|
||||
* - -V
|
||||
* - ``-V``
|
||||
- verbose output: display output of individual test runs
|
||||
* - -j <num>
|
||||
* - ``-j <num>``
|
||||
- parallel run: run <num> tests in parallel
|
||||
* - -R <regex>
|
||||
* - ``-R <regex>``
|
||||
- run subset of tests matching the regular expression <regex>
|
||||
* - -E <regex>
|
||||
* - ``-E <regex>``
|
||||
- exclude subset of tests matching the regular expression <regex>
|
||||
* - -L <regex>
|
||||
* - ``-L <regex>``
|
||||
- run subset of tests with a label matching the regular expression <regex>
|
||||
* - -LE <regex>
|
||||
* - ``-LE <regex>``
|
||||
- exclude subset of tests with a label matching the regular expression <regex>
|
||||
* - -N
|
||||
* - ``-N``
|
||||
- dry-run: display list of tests without running them
|
||||
* - -T memcheck
|
||||
* - ``-T memcheck``
|
||||
- run tests with valgrind memory checker (if available)
|
||||
|
||||
In its full implementation, the unit test framework will consist of multiple
|
||||
@ -336,16 +337,17 @@ paths in the individual source files.
|
||||
The force style test programs have a common set of options:
|
||||
|
||||
.. list-table::
|
||||
:widths: 25 75
|
||||
|
||||
* - Option
|
||||
- Function
|
||||
* - -g <newfile>
|
||||
* - ``-g <newfile>``
|
||||
- regenerate reference data in new YAML file
|
||||
* - -u
|
||||
* - ``-u``
|
||||
- update reference data in the original YAML file
|
||||
* - -s
|
||||
* - ``-s``
|
||||
- print error statistics for each group of comparisons
|
||||
* - -v
|
||||
* - ``-v``
|
||||
- verbose output: also print the executed LAMMPS commands
|
||||
|
||||
The ``ctest`` tool has no mechanism to directly pass flags to the individual
|
||||
@ -359,10 +361,10 @@ set in an environment variable ``TEST_ARGS``. Example:
|
||||
To add a test for a style that is not yet covered, it is usually best
|
||||
to copy a YAML file for a similar style to a new file, edit the details
|
||||
of the style (how to call it, how to set its coefficients) and then
|
||||
run test command with either the *-g* and the replace the initial
|
||||
test file with the regenerated one or the *-u* option. The *-u* option
|
||||
run test command with either the ``-g`` and the replace the initial
|
||||
test file with the regenerated one or the ``-u`` option. The ``-u`` option
|
||||
will destroy the original file, if the generation run does not complete,
|
||||
so using *-g* is recommended unless the YAML file is fully tested
|
||||
so using ``-g`` is recommended unless the YAML file is fully tested
|
||||
and working.
|
||||
|
||||
Some of the force style tests are rather slow to run and some are very
|
||||
@ -512,27 +514,51 @@ After post-processing with ``gen_coverage_html`` the results are in
|
||||
a folder ``coverage_html`` and can be viewed with a web browser.
|
||||
The images below illustrate how the data is presented.
|
||||
|
||||
.. list-table::
|
||||
.. only:: not latex
|
||||
|
||||
* - .. figure:: JPG/coverage-overview-top.png
|
||||
:scale: 25%
|
||||
.. list-table::
|
||||
|
||||
Top of the overview page
|
||||
* - .. figure:: JPG/coverage-overview-top.png
|
||||
:scale: 25%
|
||||
|
||||
- .. figure:: JPG/coverage-overview-manybody.png
|
||||
:scale: 25%
|
||||
Top of the overview page
|
||||
|
||||
Styles with good coverage
|
||||
- .. figure:: JPG/coverage-overview-manybody.png
|
||||
:scale: 25%
|
||||
|
||||
- .. figure:: JPG/coverage-file-top.png
|
||||
:scale: 25%
|
||||
Styles with good coverage
|
||||
|
||||
Top of individual source page
|
||||
- .. figure:: JPG/coverage-file-top.png
|
||||
:scale: 25%
|
||||
|
||||
- .. figure:: JPG/coverage-file-branches.png
|
||||
:scale: 25%
|
||||
Top of individual source page
|
||||
|
||||
Source page with branches
|
||||
- .. figure:: JPG/coverage-file-branches.png
|
||||
:scale: 25%
|
||||
|
||||
Source page with branches
|
||||
|
||||
.. only:: latex
|
||||
|
||||
.. figure:: JPG/coverage-overview-top.png
|
||||
:width: 60%
|
||||
|
||||
Top of the overview page
|
||||
|
||||
.. figure:: JPG/coverage-overview-manybody.png
|
||||
:width: 60%
|
||||
|
||||
Styles with good coverage
|
||||
|
||||
.. figure:: JPG/coverage-file-top.png
|
||||
:width: 60%
|
||||
|
||||
Top of individual source page
|
||||
|
||||
.. figure:: JPG/coverage-file-branches.png
|
||||
:width: 60%
|
||||
|
||||
Source page with branches
|
||||
|
||||
Coding style utilities
|
||||
----------------------
|
||||
|
||||
@ -14,7 +14,7 @@ in addition to
|
||||
|
||||
cmake -D PKG_NAME=yes
|
||||
|
||||
- .. code-block:: console
|
||||
- .. code-block:: bash
|
||||
|
||||
make yes-name
|
||||
|
||||
@ -73,7 +73,7 @@ COMPRESS package
|
||||
|
||||
To build with this package you must have the `zlib compression library
|
||||
<https://zlib.net>`_ available on your system to build dump styles with
|
||||
a '/gz' suffix. There are also styles using the
|
||||
a ``/gz`` suffix. There are also styles using the
|
||||
`Zstandard <https://facebook.github.io/zstd/>`_ library which have a
|
||||
'/zstd' suffix. The zstd library version must be at least 1.4. Older
|
||||
versions use an incompatible API and thus LAMMPS will fail to compile.
|
||||
@ -95,7 +95,7 @@ versions use an incompatible API and thus LAMMPS will fail to compile.
|
||||
<https://www.freedesktop.org/wiki/Software/pkg-config/>`_ tool to
|
||||
identify the necessary flags to compile with this library, so the
|
||||
corresponding ``libzstandard.pc`` file must be in a folder where
|
||||
pkg-config can find it, which may require adding it to the
|
||||
``pkg-config`` can find it, which may require adding it to the
|
||||
``PKG_CONFIG_PATH`` environment variable.
|
||||
|
||||
.. tab:: Traditional make
|
||||
@ -127,46 +127,53 @@ CMake build
|
||||
# value = double or mixed (default) or single
|
||||
-D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda
|
||||
# value = sm_XX (see below, default is sm_50)
|
||||
-D GPU_DEBUG=value # enable debug code in the GPU package library, mostly useful for developers
|
||||
-D GPU_DEBUG=value # enable debug code in the GPU package library,
|
||||
# mostly useful for developers
|
||||
# value = yes or no (default)
|
||||
-D HIP_PATH=value # value = path to HIP installation. Must be set if GPU_API=HIP
|
||||
-D HIP_PATH=value # value = path to HIP installation. Must be set if
|
||||
# GPU_API=HIP
|
||||
-D HIP_ARCH=value # primary GPU hardware choice for GPU_API=hip
|
||||
# value depends on selected HIP_PLATFORM
|
||||
# default is 'gfx906' for HIP_PLATFORM=amd and 'sm_50' for HIP_PLATFORM=nvcc
|
||||
# default is 'gfx906' for HIP_PLATFORM=amd and 'sm_50' for
|
||||
# HIP_PLATFORM=nvcc
|
||||
-D HIP_USE_DEVICE_SORT=value # enables GPU sorting
|
||||
# value = yes (default) or no
|
||||
-D CUDPP_OPT=value # use GPU binning on with CUDA (should be off for modern GPUs)
|
||||
# enables CUDA Performance Primitives, must be "no" for CUDA_MPS_SUPPORT=yes
|
||||
-D CUDPP_OPT=value # use GPU binning with CUDA (should be off for modern GPUs)
|
||||
# enables CUDA Performance Primitives, must be "no" for
|
||||
# CUDA_MPS_SUPPORT=yes
|
||||
# value = yes or no (default)
|
||||
-D CUDA_MPS_SUPPORT=value # enables some tweaks required to run with active nvidia-cuda-mps daemon
|
||||
-D CUDA_MPS_SUPPORT=value # enables some tweaks required to run with active
|
||||
# nvidia-cuda-mps daemon
|
||||
# value = yes or no (default)
|
||||
-D CUDA_BUILD_MULTIARCH=value # enables building CUDA kernels for all supported GPU architectures
|
||||
-D CUDA_BUILD_MULTIARCH=value # enables building CUDA kernels for all supported GPU
|
||||
# architectures
|
||||
# value = yes (default) or no
|
||||
-D USE_STATIC_OPENCL_LOADER=value # downloads/includes OpenCL ICD loader library, no local OpenCL headers/libs needed
|
||||
-D USE_STATIC_OPENCL_LOADER=value # downloads/includes OpenCL ICD loader library,
|
||||
# no local OpenCL headers/libs needed
|
||||
# value = yes (default) or no
|
||||
|
||||
:code:`GPU_ARCH` settings for different GPU hardware is as follows:
|
||||
``GPU_ARCH`` settings for different GPU hardware is as follows:
|
||||
|
||||
* sm_30 for Kepler (supported since CUDA 5 and until CUDA 10.x)
|
||||
* sm_35 or sm_37 for Kepler (supported since CUDA 5 and until CUDA 11.x)
|
||||
* sm_50 or sm_52 for Maxwell (supported since CUDA 6)
|
||||
* sm_60 or sm_61 for Pascal (supported since CUDA 8)
|
||||
* sm_70 for Volta (supported since CUDA 9)
|
||||
* sm_75 for Turing (supported since CUDA 10)
|
||||
* sm_80 or sm_86 for Ampere (supported since CUDA 11, sm_86 since CUDA 11.1)
|
||||
* sm_89 for Lovelace (supported since CUDA 11.8)
|
||||
* sm_90 for Hopper (supported since CUDA 12.0)
|
||||
* ``sm_30`` for Kepler (supported since CUDA 5 and until CUDA 10.x)
|
||||
* ``sm_35`` or ``sm_37`` for Kepler (supported since CUDA 5 and until CUDA 11.x)
|
||||
* ``sm_50`` or ``sm_52`` for Maxwell (supported since CUDA 6)
|
||||
* ``sm_60`` or ``sm_61`` for Pascal (supported since CUDA 8)
|
||||
* ``sm_70`` for Volta (supported since CUDA 9)
|
||||
* ``sm_75`` for Turing (supported since CUDA 10)
|
||||
* ``sm_80`` or sm_86 for Ampere (supported since CUDA 11, sm_86 since CUDA 11.1)
|
||||
* ``sm_89`` for Lovelace (supported since CUDA 11.8)
|
||||
* ``sm_90`` for Hopper (supported since CUDA 12.0)
|
||||
|
||||
A more detailed list can be found, for example,
|
||||
at `Wikipedia's CUDA article <https://en.wikipedia.org/wiki/CUDA#GPUs_supported>`_
|
||||
|
||||
CMake can detect which version of the CUDA toolkit is used and thus will
|
||||
try to include support for **all** major GPU architectures supported by
|
||||
this toolkit. Thus the GPU_ARCH setting is merely an optimization, to
|
||||
this toolkit. Thus the ``GPU_ARCH`` setting is merely an optimization, to
|
||||
have code for the preferred GPU architecture directly included rather
|
||||
than having to wait for the JIT compiler of the CUDA driver to translate
|
||||
it. This behavior can be turned off (e.g. to speed up compilation) by
|
||||
setting :code:`CUDA_ENABLE_MULTIARCH` to :code:`no`.
|
||||
setting ``CUDA_ENABLE_MULTIARCH`` to ``no``.
|
||||
|
||||
When compiling for CUDA or HIP with CUDA, version 8.0 or later of the
|
||||
CUDA toolkit is required and a GPU architecture of Kepler or later,
|
||||
@ -185,21 +192,21 @@ build, and link with a static OpenCL ICD loader library and standard
|
||||
OpenCL headers. This way no local OpenCL development headers or library
|
||||
needs to be present and only OpenCL compatible drivers need to be
|
||||
installed to use OpenCL. If this is not desired, you can set
|
||||
:code:`USE_STATIC_OPENCL_LOADER` to :code:`no`.
|
||||
``USE_STATIC_OPENCL_LOADER`` to ``no``.
|
||||
|
||||
The GPU library has some multi-thread support using OpenMP. If LAMMPS
|
||||
is built with ``-D BUILD_OMP=on`` this will also be enabled.
|
||||
|
||||
If you are compiling with HIP, note that before running CMake you will
|
||||
have to set appropriate environment variables. Some variables such as
|
||||
:code:`HCC_AMDGPU_TARGET` (for ROCm <= 4.0) or :code:`CUDA_PATH` are
|
||||
necessary for :code:`hipcc` and the linker to work correctly.
|
||||
``HCC_AMDGPU_TARGET`` (for ROCm <= 4.0) or ``CUDA_PATH`` are
|
||||
necessary for ``hipcc`` and the linker to work correctly.
|
||||
|
||||
.. versionadded:: 3Aug2022
|
||||
|
||||
Using the CHIP-SPV implementation of HIP is supported. It allows one to
|
||||
run HIP code on Intel GPUs via the OpenCL or Level Zero backends. To use
|
||||
CHIP-SPV, you must set :code:`-DHIP_USE_DEVICE_SORT=OFF` in your CMake
|
||||
CHIP-SPV, you must set ``-DHIP_USE_DEVICE_SORT=OFF`` in your CMake
|
||||
command line as CHIP-SPV does not yet support hipCUB. As of Summer 2022,
|
||||
the use of HIP for Intel GPUs is experimental. You should only use this
|
||||
option in preparations to run on Aurora system at Argonne.
|
||||
@ -257,28 +264,35 @@ script with the specified args:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-gpu # print help message
|
||||
make lib-gpu args="-b" # build GPU library with default Makefile.linux
|
||||
make lib-gpu args="-m xk7 -p single -o xk7.single" # create new Makefile.xk7.single, altered for single-precision
|
||||
make lib-gpu args="-m mpi -a sm_60 -p mixed -b" # build GPU library with mixed precision and P100 using other settings in Makefile.mpi
|
||||
# print help message
|
||||
make lib-gpu
|
||||
|
||||
# build GPU library with default Makefile.linux
|
||||
make lib-gpu args="-b"
|
||||
|
||||
# create new Makefile.xk7.single, altered for single-precision
|
||||
make lib-gpu args="-m xk7 -p single -o xk7.single"
|
||||
|
||||
# build GPU library with mixed precision and P100 using other settings in Makefile.mpi
|
||||
make lib-gpu args="-m mpi -a sm_60 -p mixed -b"
|
||||
|
||||
Note that this procedure starts with a Makefile.machine in lib/gpu, as
|
||||
specified by the "-m" switch. For your convenience, machine makefiles
|
||||
specified by the ``-m`` switch. For your convenience, machine makefiles
|
||||
for "mpi" and "serial" are provided, which have the same settings as
|
||||
the corresponding machine makefiles in the main LAMMPS source
|
||||
folder. In addition you can alter 4 important settings in the
|
||||
Makefile.machine you start from via the corresponding -c, -a, -p, -e
|
||||
Makefile.machine you start from via the corresponding ``-c``, ``-a``, ``-p``, ``-e``
|
||||
switches (as in the examples above), and also save a copy of the new
|
||||
Makefile if desired:
|
||||
|
||||
* ``CUDA_HOME`` = where NVIDIA CUDA software is installed on your system
|
||||
* ``CUDA_ARCH`` = sm_XX, what GPU hardware you have, same as CMake GPU_ARCH above
|
||||
* ``CUDA_ARCH`` = ``sm_XX``, what GPU hardware you have, same as CMake ``GPU_ARCH`` above
|
||||
* ``CUDA_PRECISION`` = precision (double, mixed, single)
|
||||
* ``EXTRAMAKE`` = which Makefile.lammps.\* file to copy to Makefile.lammps
|
||||
* ``EXTRAMAKE`` = which ``Makefile.lammps.*`` file to copy to Makefile.lammps
|
||||
|
||||
The file Makefile.cuda is set up to include support for multiple
|
||||
The file ``Makefile.cuda`` is set up to include support for multiple
|
||||
GPU architectures as supported by the CUDA toolkit in use. This is done
|
||||
through using the "--gencode " flag, which can be used multiple times and
|
||||
through using the ``--gencode`` flag, which can be used multiple times and
|
||||
thus support all GPU architectures supported by your CUDA compiler.
|
||||
|
||||
To enable GPU binning via CUDA performance primitives set the Makefile variable
|
||||
@ -349,12 +363,16 @@ minutes to hours) to build. Of course you only need to do that once.)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_KIM=value # download OpenKIM API v2 for build, value = no (default) or yes
|
||||
-D LMP_DEBUG_CURL=value # set libcurl verbose mode on/off, value = off (default) or on
|
||||
-D LMP_NO_SSL_CHECK=value # tell libcurl to not verify the peer, value = no (default) or yes
|
||||
-D KIM_EXTRA_UNITTESTS=value # enables extra unit tests, value = no (default) or yes
|
||||
-D DOWNLOAD_KIM=value # download OpenKIM API v2 for build
|
||||
# value = no (default) or yes
|
||||
-D LMP_DEBUG_CURL=value # set libcurl verbose mode on/off
|
||||
# value = off (default) or on
|
||||
-D LMP_NO_SSL_CHECK=value # tell libcurl to not verify the peer
|
||||
# value = no (default) or yes
|
||||
-D KIM_EXTRA_UNITTESTS=value # enables extra unit tests
|
||||
# value = no (default) or yes
|
||||
|
||||
If ``DOWNLOAD_KIM`` is set to *yes* (or *on*), the KIM API library
|
||||
If ``DOWNLOAD_KIM`` is set to ``yes`` (or ``on``), the KIM API library
|
||||
will be downloaded and built inside the CMake build directory. If
|
||||
the KIM library is already installed on your system (in a location
|
||||
where CMake cannot find it), you may need to set the
|
||||
@ -362,7 +380,7 @@ minutes to hours) to build. Of course you only need to do that once.)
|
||||
found, or run the command ``source kim-api-activate``.
|
||||
|
||||
Extra unit tests can only be available if they are explicitly requested
|
||||
(``KIM_EXTRA_UNITTESTS`` is set to *yes* (or *on*)) and the prerequisites
|
||||
(``KIM_EXTRA_UNITTESTS`` is set to ``yes`` (or ``on``)) and the prerequisites
|
||||
are met. See :ref:`KIM Extra unit tests <kim_extra_unittests>` for
|
||||
more details on this.
|
||||
|
||||
@ -376,15 +394,28 @@ minutes to hours) to build. Of course you only need to do that once.)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-kim # print help message
|
||||
make lib-kim args="-b " # (re-)install KIM API lib with only example models
|
||||
make lib-kim args="-b -a Glue_Ercolessi_Adams_Al__MO_324507536345_001" # ditto plus one model
|
||||
make lib-kim args="-b -a everything" # install KIM API lib with all models
|
||||
make lib-kim args="-n -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # add one model or model driver
|
||||
make lib-kim args="-p /usr/local" # use an existing KIM API installation at the provided location
|
||||
make lib-kim args="-p /usr/local -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver
|
||||
# print help message
|
||||
make lib-kim
|
||||
|
||||
When using the "-b " option, the KIM library is built using its native
|
||||
# (re-)install KIM API lib with only example models
|
||||
make lib-kim args="-b"
|
||||
|
||||
# ditto plus one model
|
||||
make lib-kim args="-b -a Glue_Ercolessi_Adams_Al__MO_324507536345_001"
|
||||
|
||||
# install KIM API lib with all models
|
||||
make lib-kim args="-b -a everything"
|
||||
|
||||
# add one model or model driver
|
||||
make lib-kim args="-n -a EAM_Dynamo_Ackland_W__MO_141627196590_002"
|
||||
|
||||
# use an existing KIM API installation at the provided location
|
||||
make lib-kim args="-p <prefix>"
|
||||
|
||||
# ditto but add one model or driver
|
||||
make lib-kim args="-p <prefix> -a EAM_Dynamo_Ackland_W__MO_141627196590_002"
|
||||
|
||||
When using the ``-b`` option, the KIM library is built using its native
|
||||
cmake build system. The ``lib/kim/Install.py`` script supports a
|
||||
``CMAKE`` environment variable if the cmake executable is named other
|
||||
than ``cmake`` on your system. Additional environment variables may be
|
||||
@ -394,7 +425,9 @@ minutes to hours) to build. Of course you only need to do that once.)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
CMAKE=cmake3 CXX=g++-11 CC=gcc-11 FC=gfortran-11 make lib-kim args="-b " # (re-)install KIM API lib using cmake3 and gnu v11 compilers with only example models
|
||||
# (re-)install KIM API lib using cmake3 and gnu v11 compilers
|
||||
# with only example models
|
||||
CMAKE=cmake3 CXX=g++-11 CC=gcc-11 FC=gfortran-11 make lib-kim args="-b"
|
||||
|
||||
Settings for debugging OpenKIM web queries discussed below need to
|
||||
be applied by adding them to the ``LMP_INC`` variable through
|
||||
@ -434,7 +467,7 @@ KIM Extra unit tests (CMake only)
|
||||
During development, testing, or debugging, if
|
||||
:doc:`unit testing <Build_development>` is enabled in LAMMPS, one can also
|
||||
enable extra tests on :doc:`KIM commands <kim_commands>` by setting the
|
||||
``KIM_EXTRA_UNITTESTS`` to *yes* (or *on*).
|
||||
``KIM_EXTRA_UNITTESTS`` to ``yes`` (or ``on``).
|
||||
|
||||
Enabling the extra unit tests have some requirements,
|
||||
|
||||
@ -449,10 +482,12 @@ Enabling the extra unit tests have some requirements,
|
||||
*conda-forge* channel as ``conda install kim-property`` if LAMMPS is built in
|
||||
Conda. More detailed information is available at:
|
||||
`kim-property installation <https://github.com/openkim/kim-property#installing-kim-property>`_.
|
||||
* It is also necessary to install
|
||||
``EAM_Dynamo_MendelevAckland_2007v3_Zr__MO_004835508849_000``,
|
||||
``EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005``, and
|
||||
``LennardJones612_UniversalShifted__MO_959249795837_003`` KIM models.
|
||||
* It is also necessary to install the following KIM models:
|
||||
|
||||
* ``EAM_Dynamo_MendelevAckland_2007v3_Zr__MO_004835508849_000``
|
||||
* ``EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005``
|
||||
* ``LennardJones612_UniversalShifted__MO_959249795837_003``
|
||||
|
||||
See `Obtaining KIM Models <https://openkim.org/doc/usage/obtaining-models>`_
|
||||
to learn how to install a pre-built binary of the OpenKIM Repository of
|
||||
Models or see
|
||||
@ -729,7 +764,8 @@ This list was last updated for version 4.3.0 of the Kokkos library.
|
||||
|
||||
mkdir build-kokkos-cuda
|
||||
cd build-kokkos-cuda
|
||||
cmake -C ../cmake/presets/basic.cmake -C ../cmake/presets/kokkos-cuda.cmake ../cmake
|
||||
cmake -C ../cmake/presets/basic.cmake \
|
||||
-C ../cmake/presets/kokkos-cuda.cmake ../cmake
|
||||
cmake --build .
|
||||
|
||||
.. tab:: Basic traditional make settings:
|
||||
@ -757,9 +793,10 @@ This list was last updated for version 4.3.0 of the Kokkos library.
|
||||
.. code-block:: make
|
||||
|
||||
KOKKOS_DEVICES = Cuda
|
||||
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU
|
||||
KOKKOS_CUDA_OPTIONS = "enable_lambda"
|
||||
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is
|
||||
# hosting the GPU
|
||||
# GPUARCH = GPU from list above
|
||||
KOKKOS_CUDA_OPTIONS = "enable_lambda"
|
||||
FFT_INC = -DFFT_CUFFT # enable use of cuFFT (optional)
|
||||
FFT_LIB = -lcufft # link to cuFFT library
|
||||
|
||||
@ -787,10 +824,11 @@ This list was last updated for version 4.3.0 of the Kokkos library.
|
||||
.. code-block:: make
|
||||
|
||||
KOKKOS_DEVICES = HIP
|
||||
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU
|
||||
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is
|
||||
# hosting the GPU
|
||||
# GPUARCH = GPU from list above
|
||||
FFT_INC = -DFFT_HIPFFT # enable use of hipFFT (optional)
|
||||
FFT_LIB = -lhipfft # link to hipFFT library
|
||||
FFT_INC = -DFFT_HIPFFT # enable use of hipFFT (optional)
|
||||
FFT_LIB = -lhipfft # link to hipFFT library
|
||||
|
||||
Advanced KOKKOS compilation settings
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -874,11 +912,16 @@ included in the LAMMPS source distribution in the ``lib/lepton`` folder.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-lepton # print help message
|
||||
make lib-lepton args="-m serial" # build with GNU g++ compiler (settings as with "make serial")
|
||||
make lib-lepton args="-m mpi" # build with default MPI compiler (settings as with "make mpi")
|
||||
# print help message
|
||||
make lib-lepton
|
||||
|
||||
The "machine" argument of the "-m" flag is used to find a
|
||||
# build with GNU g++ compiler (settings as with "make serial")
|
||||
make lib-lepton args="-m serial"
|
||||
|
||||
# build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-lepton args="-m mpi"
|
||||
|
||||
The "machine" argument of the ``-m`` flag is used to find a
|
||||
Makefile.machine to use as build recipe.
|
||||
|
||||
The build should produce a ``build`` folder and the library ``lib/lepton/liblmplepton.a``
|
||||
@ -900,7 +943,8 @@ Eigen3 is a template library, so you do not need to build it.
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_EIGEN3 # download Eigen3, value = no (default) or yes
|
||||
-D EIGEN3_INCLUDE_DIR=path # path to Eigen library (only needed if a custom location)
|
||||
-D EIGEN3_INCLUDE_DIR=path # path to Eigen library (only needed if a
|
||||
# custom location)
|
||||
|
||||
If ``DOWNLOAD_EIGEN3`` is set, the Eigen3 library will be
|
||||
downloaded and inside the CMake build directory. If the Eigen3
|
||||
@ -918,9 +962,14 @@ Eigen3 is a template library, so you do not need to build it.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-machdyn # print help message
|
||||
make lib-machdyn args="-b" # download to lib/machdyn/eigen3
|
||||
make lib-machdyn args="-p /usr/include/eigen3" # use existing Eigen installation in /usr/include/eigen3
|
||||
# print help message
|
||||
make lib-machdyn
|
||||
|
||||
# download to lib/machdyn/eigen3
|
||||
make lib-machdyn args="-b"
|
||||
|
||||
# use existing Eigen installation in /usr/include/eigen3
|
||||
make lib-machdyn args="-p /usr/include/eigen3"
|
||||
|
||||
Note that a symbolic (soft) link named ``includelink`` is created
|
||||
in ``lib/machdyn`` to point to the Eigen dir. When LAMMPS builds it
|
||||
@ -994,7 +1043,7 @@ OPT package
|
||||
|
||||
The compiler flag ``-restrict`` must be used to build LAMMPS with
|
||||
the OPT package when using Intel compilers. It should be added to
|
||||
the :code:`CCFLAGS` line of your ``Makefile.machine``. See
|
||||
the ``CCFLAGS`` line of your ``Makefile.machine``. See
|
||||
``src/MAKE/OPTIONS/Makefile.opt`` for an example.
|
||||
|
||||
----------
|
||||
@ -1021,10 +1070,17 @@ POEMS package
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-poems # print help message
|
||||
make lib-poems args="-m serial" # build with GNU g++ compiler (settings as with "make serial")
|
||||
make lib-poems args="-m mpi" # build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-poems args="-m icc" # build with Intel icc compiler
|
||||
# print help message
|
||||
make lib-poems
|
||||
|
||||
# build with GNU g++ compiler (settings as with "make serial")
|
||||
make lib-poems args="-m serial"
|
||||
|
||||
# build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-poems args="-m mpi"
|
||||
|
||||
# build with Intel Classic compiler
|
||||
make lib-poems args="-m icc"
|
||||
|
||||
The build should produce two files: ``lib/poems/libpoems.a`` and
|
||||
``lib/poems/Makefile.lammps``. The latter is copied from an
|
||||
@ -1088,9 +1144,12 @@ binary package provided by your operating system.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_VORO=value # download Voro++ for build, value = no (default) or yes
|
||||
-D VORO_LIBRARY=path # Voro++ library file (only needed if at custom location)
|
||||
-D VORO_INCLUDE_DIR=path # Voro++ include directory (only needed if at custom location)
|
||||
-D DOWNLOAD_VORO=value # download Voro++ for build
|
||||
# value = no (default) or yes
|
||||
-D VORO_LIBRARY=path # Voro++ library file
|
||||
# (only needed if at custom location)
|
||||
-D VORO_INCLUDE_DIR=path # Voro++ include directory
|
||||
# (only needed if at custom location)
|
||||
|
||||
If ``DOWNLOAD_VORO`` is set, the Voro++ library will be downloaded
|
||||
and built inside the CMake build directory. If the Voro++ library
|
||||
@ -1110,12 +1169,19 @@ binary package provided by your operating system.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-voronoi # print help message
|
||||
make lib-voronoi args="-b" # download and build the default version in lib/voronoi/voro++-<version>
|
||||
make lib-voronoi args="-p $HOME/voro++" # use existing Voro++ installation in $HOME/voro++
|
||||
make lib-voronoi args="-b -v voro++0.4.6" # download and build the 0.4.6 version in lib/voronoi/voro++-0.4.6
|
||||
# print help message
|
||||
make lib-voronoi
|
||||
|
||||
Note that 2 symbolic (soft) links, ``includelink`` and
|
||||
# download and build the default version in lib/voronoi/voro++-<version>
|
||||
make lib-voronoi args="-b"
|
||||
|
||||
# use existing Voro++ installation in $HOME/voro++
|
||||
make lib-voronoi args="-p $HOME/voro++"
|
||||
|
||||
# download and build the 0.4.6 version in lib/voronoi/voro++-0.4.6
|
||||
make lib-voronoi args="-b -v voro++0.4.6"
|
||||
|
||||
Note that two symbolic (soft) links, ``includelink`` and
|
||||
``liblink``, are created in lib/voronoi to point to the Voro++
|
||||
source dir. When LAMMPS builds in ``src`` it will use these
|
||||
links. You should not need to edit the
|
||||
@ -1189,10 +1255,17 @@ The ATC package requires the MANYBODY package also be installed.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-atc # print help message
|
||||
make lib-atc args="-m serial" # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-atc args="-m mpi" # build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-atc args="-m icc" # build with Intel icc compiler
|
||||
# print help message
|
||||
make lib-atc
|
||||
|
||||
# build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-atc args="-m serial"
|
||||
|
||||
# build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-atc args="-m mpi"
|
||||
|
||||
# build with Intel Classic compiler
|
||||
make lib-atc args="-m icc"
|
||||
|
||||
The build should produce two files: ``lib/atc/libatc.a`` and
|
||||
``lib/atc/Makefile.lammps``. The latter is copied from an
|
||||
@ -1211,10 +1284,17 @@ The ATC package requires the MANYBODY package also be installed.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-linalg # print help message
|
||||
make lib-linalg args="-m serial" # build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m mpi" # build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m g++" # build with GNU Fortran compiler
|
||||
# print help message
|
||||
make lib-linalg
|
||||
|
||||
# build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m serial"
|
||||
|
||||
# build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m mpi"
|
||||
|
||||
# build with GNU Fortran compiler
|
||||
make lib-linalg args="-m g++"
|
||||
|
||||
----------
|
||||
|
||||
@ -1240,10 +1320,17 @@ AWPMD package
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-awpmd # print help message
|
||||
make lib-awpmd args="-m serial" # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-awpmd args="-m mpi" # build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-awpmd args="-m icc" # build with Intel icc compiler
|
||||
# print help message
|
||||
make lib-awpmd
|
||||
|
||||
# build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-awpmd args="-m serial"
|
||||
|
||||
# build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-awpmd args="-m mpi"
|
||||
|
||||
# build with Intel Classic compiler
|
||||
make lib-awpmd args="-m icc"
|
||||
|
||||
The build should produce two files: ``lib/awpmd/libawpmd.a`` and
|
||||
``lib/awpmd/Makefile.lammps``. The latter is copied from an
|
||||
@ -1262,10 +1349,17 @@ AWPMD package
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-linalg # print help message
|
||||
make lib-linalg args="-m serial" # build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m mpi" # build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m g++" # build with GNU C++ compiler
|
||||
# print help message
|
||||
make lib-linalg
|
||||
|
||||
# build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m serial"
|
||||
|
||||
# build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m mpi"
|
||||
|
||||
# build with GNU C++ compiler
|
||||
make lib-linalg args="-m g++"
|
||||
|
||||
----------
|
||||
|
||||
@ -1298,10 +1392,17 @@ module included in the LAMMPS source distribution.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-colvars # print help message
|
||||
make lib-colvars args="-m serial" # build with GNU g++ compiler (settings as with "make serial")
|
||||
make lib-colvars args="-m mpi" # build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-colvars args="-m g++-debug" # build with GNU g++ compiler and colvars debugging enabled
|
||||
# print help message
|
||||
make lib-colvars
|
||||
|
||||
# build with GNU g++ compiler (settings as with "make serial")
|
||||
make lib-colvars args="-m serial"
|
||||
|
||||
# build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-colvars args="-m mpi"
|
||||
|
||||
# build with GNU g++ compiler and colvars debugging enabled
|
||||
make lib-colvars args="-m g++-debug"
|
||||
|
||||
The "machine" argument of the "-m" flag is used to find a
|
||||
``Makefile.machine`` file to use as build recipe. If such recipe does
|
||||
@ -1320,8 +1421,11 @@ module included in the LAMMPS source distribution.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
COLVARS_DEBUG=yes make lib-colvars args="-m machine" # Build with debug code (much slower)
|
||||
COLVARS_LEPTON=no make lib-colvars args="-m machine" # Build without Lepton (included otherwise)
|
||||
# Build with debug code (much slower)
|
||||
COLVARS_DEBUG=yes make lib-colvars args="-m machine"
|
||||
|
||||
# Build without Lepton (included otherwise)
|
||||
COLVARS_LEPTON=no make lib-colvars args="-m machine"
|
||||
|
||||
The build should produce two files: the library
|
||||
``lib/colvars/libcolvars.a`` and the specification file
|
||||
@ -1368,9 +1472,14 @@ This package depends on the KSPACE package.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-electrode # print help message
|
||||
make lib-electrode args="-m serial" # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-electrode args="-m mpi" # build with default MPI compiler (settings as with "make mpi")
|
||||
# print help message
|
||||
make lib-electrode
|
||||
|
||||
# build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-electrode args="-m serial"
|
||||
|
||||
# build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-electrode args="-m mpi"
|
||||
|
||||
|
||||
Note that the ``Makefile.lammps`` file has settings for the BLAS
|
||||
@ -1381,10 +1490,17 @@ This package depends on the KSPACE package.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-linalg # print help message
|
||||
make lib-linalg args="-m serial" # build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m mpi" # build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m g++" # build with GNU C++ compiler
|
||||
# print help message
|
||||
make lib-linalg
|
||||
|
||||
# build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m serial"
|
||||
|
||||
# build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m mpi"
|
||||
|
||||
# build with GNU C++ compiler
|
||||
make lib-linalg args="-m g++"
|
||||
|
||||
The package itself is activated with ``make yes-KSPACE`` and
|
||||
``make yes-ELECTRODE``
|
||||
@ -1424,8 +1540,11 @@ at: `https://github.com/ICAMS/lammps-user-pace/ <https://github.com/ICAMS/lammps
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-pace # print help message
|
||||
make lib-pace args="-b" # download and build the default version in lib/pace
|
||||
# print help message
|
||||
make lib-pace
|
||||
|
||||
# download and build the default version in lib/pace
|
||||
make lib-pace args="-b"
|
||||
|
||||
You should not need to edit the ``lib/pace/Makefile.lammps`` file.
|
||||
|
||||
@ -1452,10 +1571,17 @@ ML-POD package
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-mlpod # print help message
|
||||
make lib-mlpod args="-m serial" # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-mlpod args="-m mpi" # build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-mlpod args="-m mpi -e linalg" # same as above but use the bundled linalg lib
|
||||
# print help message
|
||||
make lib-mlpod
|
||||
|
||||
# build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||
make lib-mlpod args="-m serial"
|
||||
|
||||
# build with default MPI compiler (settings as with "make mpi")
|
||||
make lib-mlpod args="-m mpi"
|
||||
|
||||
# same as above but use the bundled linalg lib
|
||||
make lib-mlpod args="-m mpi -e linalg"
|
||||
|
||||
Note that the ``Makefile.lammps`` file has settings to use the BLAS
|
||||
and LAPACK linear algebra libraries. These can either exist on
|
||||
@ -1465,10 +1591,17 @@ ML-POD package
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-linalg # print help message
|
||||
make lib-linalg args="-m serial" # build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m mpi" # build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m g++" # build with GNU C++ compiler
|
||||
# print help message
|
||||
make lib-linalg
|
||||
|
||||
# build with GNU C++ compiler (settings as with "make serial")
|
||||
make lib-linalg args="-m serial"
|
||||
|
||||
# build with default MPI C++ compiler (settings as with "make mpi")
|
||||
make lib-linalg args="-m mpi"
|
||||
|
||||
# build with GNU C++ compiler
|
||||
make lib-linalg args="-m g++"
|
||||
|
||||
The package itself is activated with ``make yes-ML-POD``.
|
||||
|
||||
@ -1491,10 +1624,13 @@ within CMake will download the non-commercial use version.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_QUIP=value # download QUIP library for build, value = no (default) or yes
|
||||
-D QUIP_LIBRARY=path # path to libquip.a (only needed if a custom location)
|
||||
-D USE_INTERNAL_LINALG=value # Use the internal linear algebra library instead of LAPACK
|
||||
# value = no (default) or yes
|
||||
-D DOWNLOAD_QUIP=value # download QUIP library for build
|
||||
# value = no (default) or yes
|
||||
-D QUIP_LIBRARY=path # path to libquip.a
|
||||
# (only needed if a custom location)
|
||||
-D USE_INTERNAL_LINALG=value # Use the internal linear algebra library
|
||||
# instead of LAPACK
|
||||
# value = no (default) or yes
|
||||
|
||||
CMake will try to download and build the QUIP library from GitHub,
|
||||
if it is not found on the local machine. This requires to have git
|
||||
@ -1578,17 +1714,20 @@ LAMMPS build.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_PLUMED=value # download PLUMED for build, value = no (default) or yes
|
||||
-D PLUMED_MODE=value # Linkage mode for PLUMED, value = static (default), shared, or runtime
|
||||
-D DOWNLOAD_PLUMED=value # download PLUMED for build
|
||||
# value = no (default) or yes
|
||||
-D PLUMED_MODE=value # Linkage mode for PLUMED
|
||||
# value = static (default), shared,
|
||||
# or runtime
|
||||
|
||||
If DOWNLOAD_PLUMED is set to "yes", the PLUMED library will be
|
||||
If ``DOWNLOAD_PLUMED`` is set to ``yes``, the PLUMED library will be
|
||||
downloaded (the version of PLUMED that will be downloaded is
|
||||
hard-coded to a vetted version of PLUMED, usually a recent stable
|
||||
release version) and built inside the CMake build directory. If
|
||||
``DOWNLOAD_PLUMED`` is set to "no" (the default), CMake will try
|
||||
to detect and link to an installed version of PLUMED. For this to
|
||||
work, the PLUMED library has to be installed into a location where
|
||||
the ``pkg-config`` tool can find it or the PKG_CONFIG_PATH
|
||||
the ``pkg-config`` tool can find it or the ``PKG_CONFIG_PATH``
|
||||
environment variable has to be set up accordingly. PLUMED should
|
||||
be installed in such a location if you compile it using the
|
||||
default make; make install commands.
|
||||
@ -1617,14 +1756,21 @@ LAMMPS build.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-plumed # print help message
|
||||
make lib-plumed args="-b" # download and build PLUMED in lib/plumed/plumed2
|
||||
make lib-plumed args="-p $HOME/.local" # use existing PLUMED installation in $HOME/.local
|
||||
make lib-plumed args="-p /usr/local -m shared" # use existing PLUMED installation in
|
||||
# /usr/local and use shared linkage mode
|
||||
# print help message
|
||||
make lib-plumed
|
||||
|
||||
Note that 2 symbolic (soft) links, ``includelink`` and ``liblink``
|
||||
are created in lib/plumed that point to the location of the PLUMED
|
||||
# download and build PLUMED in lib/plumed/plumed2
|
||||
make lib-plumed args="-b"
|
||||
|
||||
# use existing PLUMED installation in $HOME/.local
|
||||
make lib-plumed args="-p $HOME/.local"
|
||||
|
||||
# use existing PLUMED installation in /usr/local and
|
||||
# use shared linkage mode
|
||||
make lib-plumed args="-p /usr/local -m shared"
|
||||
|
||||
Note that two symbolic (soft) links, ``includelink`` and ``liblink``
|
||||
are created in ``lib/plumed`` that point to the location of the PLUMED
|
||||
build to use. A new file ``lib/plumed/Makefile.lammps`` is also
|
||||
created with settings suitable for LAMMPS to compile and link
|
||||
PLUMED using the desired linkage mode. After this step is
|
||||
@ -1639,17 +1785,17 @@ LAMMPS build.
|
||||
Once this compilation completes you should be able to run LAMMPS
|
||||
in the usual way. For shared linkage mode, libplumed.so must be
|
||||
found by the LAMMPS executable, which on many operating systems
|
||||
means, you have to set the LD_LIBRARY_PATH environment variable
|
||||
means, you have to set the ``LD_LIBRARY_PATH`` environment variable
|
||||
accordingly.
|
||||
|
||||
Support for the different linkage modes in LAMMPS varies for
|
||||
different operating systems, using the static linkage is expected
|
||||
to be the most portable, and thus set to be the default.
|
||||
|
||||
If you want to change the linkage mode, you have to re-run "make
|
||||
lib-plumed" with the desired settings **and** do a re-install if
|
||||
the PLUMED package with "make yes-plumed" to update the
|
||||
required makefile settings with the changes in the lib/plumed
|
||||
If you want to change the linkage mode, you have to re-run ``make
|
||||
lib-plumed`` with the desired settings **and** do a re-install if
|
||||
the PLUMED package with ``make yes-plumed`` to update the
|
||||
required makefile settings with the changes in the ``lib/plumed``
|
||||
folder.
|
||||
|
||||
----------
|
||||
@ -1723,8 +1869,10 @@ details please see ``lib/hdnnp/README`` and the `n2p2 build documentation
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_N2P2=value # download n2p2 for build, value = no (default) or yes
|
||||
-D N2P2_DIR=path # n2p2 base directory (only needed if a custom location)
|
||||
-D DOWNLOAD_N2P2=value # download n2p2 for build
|
||||
# value = no (default) or yes
|
||||
-D N2P2_DIR=path # n2p2 base directory
|
||||
# (only needed if a custom location)
|
||||
|
||||
If ``DOWNLOAD_N2P2`` is set, the *n2p2* library will be downloaded and
|
||||
built inside the CMake build directory. If the *n2p2* library is already
|
||||
@ -1741,12 +1889,19 @@ details please see ``lib/hdnnp/README`` and the `n2p2 build documentation
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-hdnnp # print help message
|
||||
make lib-hdnnp args="-b" # download and build in lib/hdnnp/n2p2-...
|
||||
make lib-hdnnp args="-b -v 2.1.4" # download and build specific version
|
||||
make lib-hdnnp args="-p /usr/local/n2p2" # use the existing n2p2 installation in /usr/local/n2p2
|
||||
# print help message
|
||||
make lib-hdnnp
|
||||
|
||||
Note that 3 symbolic (soft) links, ``includelink``, ``liblink`` and
|
||||
# download and build in lib/hdnnp/n2p2-...
|
||||
make lib-hdnnp args="-b"
|
||||
|
||||
# download and build specific version
|
||||
make lib-hdnnp args="-b -v 2.1.4"
|
||||
|
||||
# use the existing n2p2 installation in /usr/local/n2p2
|
||||
make lib-hdnnp args="-p /usr/local/n2p2"
|
||||
|
||||
Note that three symbolic (soft) links, ``includelink``, ``liblink`` and
|
||||
``Makefile.lammps``, will be created in ``lib/hdnnp`` to point to
|
||||
``n2p2/include``, ``n2p2/lib`` and ``n2p2/lib/Makefile.lammps-extra``,
|
||||
respectively. When LAMMPS is built in ``src`` it will use these links.
|
||||
@ -1793,19 +1948,19 @@ code when using features from the INTEL package.
|
||||
|
||||
.. code-block:: make
|
||||
|
||||
OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high
|
||||
CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)
|
||||
LINKFLAGS = -g -qopenmp $(OPTFLAGS)
|
||||
LIB = -ltbbmalloc
|
||||
OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high
|
||||
CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)
|
||||
LINKFLAGS = -g -qopenmp $(OPTFLAGS)
|
||||
LIB = -ltbbmalloc
|
||||
|
||||
For KNLs:
|
||||
|
||||
.. code-block:: make
|
||||
|
||||
OPTFLAGS = -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
|
||||
CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)
|
||||
LINKFLAGS = -g -qopenmp $(OPTFLAGS)
|
||||
LIB = -ltbbmalloc
|
||||
OPTFLAGS = -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
|
||||
CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)
|
||||
LINKFLAGS = -g -qopenmp $(OPTFLAGS)
|
||||
LIB = -ltbbmalloc
|
||||
|
||||
In Long-range thread mode (LRT) a modified verlet style is used, that
|
||||
operates the Kspace calculation in a separate thread concurrently to
|
||||
@ -1834,7 +1989,8 @@ MDI package
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_MDI=value # download MDI Library for build, value = no (default) or yes
|
||||
-D DOWNLOAD_MDI=value # download MDI Library for build
|
||||
# value = no (default) or yes
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
@ -1863,7 +2019,8 @@ MOLFILE package
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D MOLFILE_INCLUDE_DIR=path # (optional) path where VMD molfile plugin headers are installed
|
||||
-D MOLFILE_INCLUDE_DIR=path # (optional) path where VMD molfile
|
||||
# plugin headers are installed
|
||||
-D PKG_MOLFILE=yes
|
||||
|
||||
Using ``-D PKG_MOLFILE=yes`` enables the package, and setting
|
||||
@ -2022,10 +2179,17 @@ verified to work in February 2020 with Quantum Espresso versions 6.3 to
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-qmmm # print help message
|
||||
make lib-qmmm args="-m serial" # build with GNU Fortran compiler (settings as in "make serial")
|
||||
make lib-qmmm args="-m mpi" # build with default MPI compiler (settings as in "make mpi")
|
||||
make lib-qmmm args="-m gfortran" # build with GNU Fortran compiler
|
||||
# print help message
|
||||
make lib-qmmm
|
||||
|
||||
# build with GNU Fortran compiler (settings as in "make serial")
|
||||
make lib-qmmm args="-m serial"
|
||||
|
||||
# build with default MPI compiler (settings as in "make mpi")
|
||||
make lib-qmmm args="-m mpi"
|
||||
|
||||
# build with GNU Fortran compiler
|
||||
make lib-qmmm args="-m gfortran"
|
||||
|
||||
The build should produce two files: ``lib/qmmm/libqmmm.a`` and
|
||||
``lib/qmmm/Makefile.lammps``. The latter is copied from an
|
||||
@ -2038,10 +2202,10 @@ verified to work in February 2020 with Quantum Espresso versions 6.3 to
|
||||
|
||||
You can then install QMMM package and build LAMMPS in the usual
|
||||
manner. After completing the LAMMPS build and compiling Quantum
|
||||
ESPRESSO with external library support (via "make couple"), go
|
||||
ESPRESSO with external library support (via ``make couple``), go
|
||||
back to the ``lib/qmmm`` folder and follow the instructions in the
|
||||
README file to build the combined LAMMPS/QE QM/MM executable
|
||||
(pwqmmm.x) in the lib/qmmm folder.
|
||||
(``pwqmmm.x``) in the ``lib/qmmm`` folder.
|
||||
|
||||
----------
|
||||
|
||||
@ -2111,11 +2275,16 @@ To build with this package, you must download and build the
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make lib-scafacos # print help message
|
||||
make lib-scafacos args="-b" # download and build in lib/scafacos/scafacos-<version>
|
||||
make lib-scafacos args="-p $HOME/scafacos # use existing ScaFaCoS installation in $HOME/scafacos
|
||||
# print help message
|
||||
make lib-scafacos
|
||||
|
||||
Note that 2 symbolic (soft) links, ``includelink`` and ``liblink``, are
|
||||
# download and build in lib/scafacos/scafacos-<version>
|
||||
make lib-scafacos args="-b"
|
||||
|
||||
# use existing ScaFaCoS installation in $HOME/scafacos
|
||||
make lib-scafacos args="-p $HOME/scafacos
|
||||
|
||||
Note that two symbolic (soft) links, ``includelink`` and ``liblink``, are
|
||||
created in ``lib/scafacos`` to point to the ScaFaCoS src dir. When LAMMPS
|
||||
builds in src it will use these links. You should not need to edit
|
||||
the ``lib/scafacos/Makefile.lammps`` file.
|
||||
|
||||
@ -37,7 +37,7 @@ executable code from the library is copied into the calling executable.
|
||||
.. tab:: CMake build
|
||||
|
||||
This assumes that LAMMPS has been configured without setting a
|
||||
``LAMMPS_MACHINE`` name, installed with "make install", and the
|
||||
``LAMMPS_MACHINE`` name, installed with ``make install``, and the
|
||||
``PKG_CONFIG_PATH`` environment variable has been updated to
|
||||
include the ``liblammps.pc`` file installed into the configured
|
||||
destination folder. The commands to compile and link a coupled
|
||||
@ -59,10 +59,10 @@ executable code from the library is copied into the calling executable.
|
||||
mpicc -c -O -I${HOME}/lammps/src caller.c
|
||||
mpicxx -o caller caller.o -L${HOME}/lammps/src -llammps_mpi
|
||||
|
||||
The *-I* argument is the path to the location of the ``library.h``
|
||||
The ``-I`` argument is the path to the location of the ``library.h``
|
||||
header file containing the interface to the LAMMPS C-style library
|
||||
interface. The *-L* argument is the path to where the
|
||||
``liblammps_mpi.a`` file is located. The *-llammps_mpi* argument
|
||||
interface. The ``-L`` argument is the path to where the
|
||||
``liblammps_mpi.a`` file is located. The ``-llammps_mpi`` argument
|
||||
is shorthand for telling the compiler to link the file
|
||||
``liblammps_mpi.a``. If LAMMPS has been built as a shared
|
||||
library, then the linker will use ``liblammps_mpi.so`` instead.
|
||||
@ -142,7 +142,7 @@ When linking to LAMMPS built as a shared library, the situation becomes
|
||||
much simpler, as all dependent libraries and objects are either included
|
||||
in the shared library or registered as a dependent library in the shared
|
||||
library file. Thus, those libraries need not be specified when linking
|
||||
the calling executable. Only the *-I* flags are needed. So the example
|
||||
the calling executable. Only the ``-I`` flags are needed. So the example
|
||||
case from above of the serial version static LAMMPS library with the
|
||||
POEMS package installed becomes:
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ additional tools to be available and functioning.
|
||||
require adding flags like ``-std=c++11`` to enable the C++11 mode.
|
||||
* A Bourne shell compatible "Unix" shell program (frequently this is ``bash``)
|
||||
* A few shell utilities: ``ls``, ``mv``, ``ln``, ``rm``, ``grep``, ``sed``, ``tr``, ``cat``, ``touch``, ``diff``, ``dirname``
|
||||
* Python (optional, required for ``make lib-<pkg>`` in the src
|
||||
* Python (optional, required for ``make lib-<pkg>`` in the ``src``
|
||||
folder). Python scripts are currently tested with python 2.7 and
|
||||
3.6 to 3.11. The procedure for :doc:`building the documentation
|
||||
<Build_manual>` *requires* Python 3.5 or later.
|
||||
|
||||
@ -100,10 +100,10 @@ versus make.
|
||||
.. code-block:: bash
|
||||
|
||||
cd lammps/src
|
||||
make ps # check which packages are currently installed
|
||||
make yes-name # install a package with name
|
||||
make no-name # uninstall a package with name
|
||||
make mpi # build LAMMPS with whatever packages are now installed
|
||||
make ps # check which packages are currently installed
|
||||
make yes-name # install a package with name
|
||||
make no-name # uninstall a package with name
|
||||
make mpi # build LAMMPS with whatever packages are now installed
|
||||
|
||||
Examples:
|
||||
|
||||
@ -172,18 +172,41 @@ make a copy of one of them and modify it to suit your needs.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cmake -C ../cmake/presets/basic.cmake [OPTIONS] ../cmake # enable just a few core packages
|
||||
cmake -C ../cmake/presets/most.cmake [OPTIONS] ../cmake # enable most packages
|
||||
cmake -C ../cmake/presets/download.cmake [OPTIONS] ../cmake # enable packages which download sources or potential files
|
||||
cmake -C ../cmake/presets/nolib.cmake [OPTIONS] ../cmake # disable packages that do require extra libraries or tools
|
||||
cmake -C ../cmake/presets/clang.cmake [OPTIONS] ../cmake # change settings to use the Clang compilers by default
|
||||
cmake -C ../cmake/presets/gcc.cmake [OPTIONS] ../cmake # change settings to use the GNU compilers by default
|
||||
cmake -C ../cmake/presets/intel.cmake [OPTIONS] ../cmake # change settings to use the Intel compilers by default
|
||||
cmake -C ../cmake/presets/pgi.cmake [OPTIONS] ../cmake # change settings to use the PGI compilers by default
|
||||
cmake -C ../cmake/presets/all_on.cmake [OPTIONS] ../cmake # enable all packages
|
||||
cmake -C ../cmake/presets/all_off.cmake [OPTIONS] ../cmake # disable all packages
|
||||
mingw64-cmake -C ../cmake/presets/mingw-cross.cmake [OPTIONS] ../cmake # compile with MinGW cross-compilers
|
||||
cmake -C ../cmake/presets/macos-multiarch.cmake [OPTIONS] ../cmake # compile serial multi-arch binaries on macOS
|
||||
# enable just a few core packages
|
||||
cmake -C ../cmake/presets/basic.cmake [OPTIONS] ../cmake
|
||||
|
||||
# enable most packages
|
||||
cmake -C ../cmake/presets/most.cmake [OPTIONS] ../cmake
|
||||
|
||||
# enable packages which download sources or potential files
|
||||
cmake -C ../cmake/presets/download.cmake [OPTIONS] ../cmake
|
||||
|
||||
# disable packages that do require extra libraries or tools
|
||||
cmake -C ../cmake/presets/nolib.cmake [OPTIONS] ../cmake
|
||||
|
||||
# change settings to use the Clang compilers by default
|
||||
cmake -C ../cmake/presets/clang.cmake [OPTIONS] ../cmake
|
||||
|
||||
# change settings to use the GNU compilers by default
|
||||
cmake -C ../cmake/presets/gcc.cmake [OPTIONS] ../cmake
|
||||
|
||||
# change settings to use the Intel compilers by default
|
||||
cmake -C ../cmake/presets/intel.cmake [OPTIONS] ../cmake
|
||||
|
||||
# change settings to use the PGI compilers by default
|
||||
cmake -C ../cmake/presets/pgi.cmake [OPTIONS] ../cmake
|
||||
|
||||
# enable all packages
|
||||
cmake -C ../cmake/presets/all_on.cmake [OPTIONS] ../cmake
|
||||
|
||||
# disable all packages
|
||||
cmake -C ../cmake/presets/all_off.cmake [OPTIONS] ../cmake
|
||||
|
||||
# compile with MinGW cross-compilers
|
||||
mingw64-cmake -C ../cmake/presets/mingw-cross.cmake [OPTIONS] ../cmake
|
||||
|
||||
# compile serial multi-arch binaries on macOS
|
||||
cmake -C ../cmake/presets/macos-multiarch.cmake [OPTIONS] ../cmake
|
||||
|
||||
Presets that have names starting with "windows" are specifically for
|
||||
compiling LAMMPS :doc:`natively on Windows <Build_windows>` and
|
||||
@ -209,7 +232,8 @@ Example
|
||||
# GPU package and configure it for using CUDA. You can run.
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -C ../cmake/presets/most.cmake -C ../cmake/presets/nolib.cmake -D PKG_GPU=on -D GPU_API=cuda ../cmake
|
||||
cmake -C ../cmake/presets/most.cmake -C ../cmake/presets/nolib.cmake \
|
||||
-D PKG_GPU=on -D GPU_API=cuda ../cmake
|
||||
|
||||
# to add another package, say BODY to the previous configuration you can run:
|
||||
cmake -D PKG_BODY=on .
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
.. raw:: latex
|
||||
|
||||
\clearpage
|
||||
|
||||
Optional build settings
|
||||
=======================
|
||||
|
||||
@ -63,8 +67,10 @@ libraries and better pipelining for packing and communication.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, else KISS
|
||||
-D FFT_KOKKOS=value # FFTW3 or MKL or KISS or CUFFT or HIPFFT, default is KISS
|
||||
-D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found,
|
||||
# else KISS
|
||||
-D FFT_KOKKOS=value # FFTW3 or MKL or KISS or CUFFT or HIPFFT,
|
||||
# default is KISS
|
||||
-D FFT_SINGLE=value # yes or no (default), no = double precision
|
||||
-D FFT_PACK=value # array (default) or pointer or memcpy
|
||||
-D FFT_USE_HEFFTE=value # yes or no (default), yes links to heFFTe
|
||||
@ -72,11 +78,11 @@ libraries and better pipelining for packing and communication.
|
||||
.. note::
|
||||
|
||||
When the Kokkos variant of a package is compiled and selected at run time,
|
||||
the FFT library selected by the FFT_KOKKOS variable applies. Otherwise,
|
||||
the FFT library selected by the ``FFT_KOKKOS`` variable applies. Otherwise,
|
||||
the FFT library selected by the FFT variable applies.
|
||||
The same FFT settings apply to both. FFT_KOKKOS must be compatible with the
|
||||
The same FFT settings apply to both. ``FFT_KOKKOS`` must be compatible with the
|
||||
Kokkos back end - for example, when using the CUDA back end of Kokkos,
|
||||
you must use either CUFFT or KISS.
|
||||
you must use either ``CUFFT`` or ``KISS``.
|
||||
|
||||
Usually these settings are all that is needed. If FFTW3 is
|
||||
selected, then CMake will try to detect, if threaded FFTW
|
||||
@ -94,7 +100,8 @@ libraries and better pipelining for packing and communication.
|
||||
-D MKL_INCLUDE_DIR=path # ditto for Intel MKL library
|
||||
-D FFT_MKL_THREADS=on # enable using threaded FFTs with MKL libraries
|
||||
-D MKL_LIBRARY=path # path to MKL libraries
|
||||
-D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock heFFTe back end
|
||||
-D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock
|
||||
# heFFTe back end
|
||||
-D Heffte_ROOT=path # path to an existing heFFTe installation
|
||||
|
||||
.. note::
|
||||
@ -113,30 +120,50 @@ libraries and better pipelining for packing and communication.
|
||||
|
||||
.. code-block:: make
|
||||
|
||||
FFT_INC = -DFFT_FFTW3 # -DFFT_FFTW3, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISS
|
||||
# default is KISS if not specified
|
||||
FFT_INC = -DFFT_KOKKOS_CUFFT # -DFFT_KOKKOS_{FFTW,FFTW3,MKL,CUFFT,HIPFFT,KISS}
|
||||
# default is KISS if not specified
|
||||
FFT_INC = -DFFT_SINGLE # do not specify for double precision
|
||||
FFT_INC = -DFFT_FFTW_THREADS # enable using threaded FFTW3 libraries
|
||||
FFT_INC = -DFFT_MKL_THREADS # enable using threaded FFTs with MKL libraries
|
||||
FFT_INC = -DFFT_PACK_ARRAY # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY
|
||||
# default is FFT_PACK_ARRAY if not specified
|
||||
FFT_INC = -DFFT_<NAME> # where <NAME> is KISS (default), FFTW3,
|
||||
# FFTW (same as FFTW3), or MKL
|
||||
FFT_INC = -DFFT_KOKKOS_<NAME> # where <NAME> is KISS (default), FFTW3,
|
||||
# FFTW (same as FFTW3), MKL, CUFFT, or HIPFFT
|
||||
FFT_INC = -DFFT_SINGLE # do not specify for double precision
|
||||
FFT_INC = -DFFT_FFTW_THREADS # enable using threaded FFTW3 libraries
|
||||
FFT_INC = -DFFT_MKL_THREADS # enable using threaded FFTs with MKL libraries
|
||||
FFT_INC = -DFFT_PACK_ARRAY # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY
|
||||
# default is FFT_PACK_ARRAY if not specified
|
||||
|
||||
.. code-block:: make
|
||||
|
||||
FFT_INC = -I/usr/local/include
|
||||
FFT_PATH = -L/usr/local/lib
|
||||
FFT_LIB = -lhipfft # hipFFT either precision
|
||||
FFT_LIB = -lcufft # cuFFT either precision
|
||||
FFT_LIB = -lfftw3 # FFTW3 double precision
|
||||
FFT_LIB = -lfftw3 -lfftw3_omp # FFTW3 double precision with threads (needs -DFFT_FFTW_THREADS)
|
||||
FFT_LIB = -lfftw3 -lfftw3f # FFTW3 single precision
|
||||
FFT_LIB = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core # MKL with Intel compiler, serial interface
|
||||
FFT_LIB = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core # MKL with GNU compiler, serial interface
|
||||
FFT_LIB = -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core # MKL with Intel compiler, threaded interface
|
||||
FFT_LIB = -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core # MKL with GNU compiler, threaded interface
|
||||
FFT_LIB = -lmkl_rt # MKL with automatic runtime selection of interface libs
|
||||
FFT_INC = -I/usr/local/include
|
||||
FFT_PATH = -L/usr/local/lib
|
||||
|
||||
# hipFFT either precision
|
||||
FFT_LIB = -lhipfft
|
||||
|
||||
# cuFFT either precision
|
||||
FFT_LIB = -lcufft
|
||||
|
||||
# FFTW3 double precision
|
||||
FFT_LIB = -lfftw3
|
||||
|
||||
# FFTW3 double precision with threads (needs -DFFT_FFTW_THREADS)
|
||||
FFT_LIB = -lfftw3 -lfftw3_omp
|
||||
|
||||
# FFTW3 single precision
|
||||
FFT_LIB = -lfftw3 -lfftw3f
|
||||
|
||||
# serial MKL with Intel compiler
|
||||
FFT_LIB = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
|
||||
|
||||
# serial MKL with GNU compiler
|
||||
FFT_LIB = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core
|
||||
|
||||
# threaded MKL with Intel compiler
|
||||
FFT_LIB = -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
|
||||
|
||||
# threaded MKL with GNU compiler
|
||||
FFT_LIB = -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core
|
||||
|
||||
# MKL with automatic runtime selection of interface libs
|
||||
FFT_LIB = -lmkl_rt
|
||||
|
||||
As with CMake, you do not need to set paths in ``FFT_INC`` or
|
||||
``FFT_PATH``, if the compiler can find the FFT header and library
|
||||
@ -152,11 +179,11 @@ libraries and better pipelining for packing and communication.
|
||||
FFT_PATH =
|
||||
FFT_LIB = $(heffte_link) $(heffte_libs)
|
||||
|
||||
The heFFTe install path will contain `HeffteMakefile.in`.
|
||||
which will define the `heffte_` include variables needed to link to heFFTe from
|
||||
The heFFTe install path will contain ``HeffteMakefile.in``.
|
||||
which will define the ``heffte_`` include variables needed to link to heFFTe from
|
||||
an external project using traditional make.
|
||||
The `-DFFT_HEFFTE` is required to switch to using heFFTe, while the optional `-DFFT_HEFFTE_FFTW`
|
||||
selects the desired heFFTe back end, e.g., `-DFFT_HEFFTE_FFTW` or `-DFFT_HEFFTE_MKL`,
|
||||
The ``-DFFT_HEFFTE`` is required to switch to using heFFTe, while the optional ``-DFFT_HEFFTE_FFTW``
|
||||
selects the desired heFFTe back end, e.g., ``-DFFT_HEFFTE_FFTW`` or ``-DFFT_HEFFTE_MKL``,
|
||||
omitting the variable will default to the `stock` back end.
|
||||
The heFFTe `stock` back end is intended to be used for testing and debugging,
|
||||
but is not performance optimized for large scale production runs.
|
||||
@ -184,7 +211,7 @@ it from `www.fftw.org <https://www.fftw.org>`_. LAMMPS requires version
|
||||
Building FFTW for your box should be as simple as ``./configure; make;
|
||||
make install``. The install command typically requires root privileges
|
||||
(e.g. invoke it via sudo), unless you specify a local directory with
|
||||
the "--prefix" option of configure. Type ``./configure --help`` to see
|
||||
the ``--prefix`` option of configure. Type ``./configure --help`` to see
|
||||
various options.
|
||||
|
||||
The Intel MKL math library is part of the Intel compiler suite. It
|
||||
@ -220,7 +247,7 @@ produce the additional libraries ``libfftw3f.a`` and/or ``libfftw3f.so``\ .
|
||||
|
||||
Performing 3d FFTs requires communication to transpose the 3d FFT
|
||||
grid. The data packing/unpacking for this can be done in one of 3
|
||||
modes (ARRAY, POINTER, MEMCPY) as set by the FFT_PACK syntax above.
|
||||
modes (ARRAY, POINTER, MEMCPY) as set by the ``FFT_PACK`` syntax above.
|
||||
Depending on the machine, the size of the FFT grid, the number of
|
||||
processors used, one option may be slightly faster. The default is
|
||||
ARRAY mode.
|
||||
@ -237,6 +264,10 @@ and those variables will be passed into the heFFTe build.
|
||||
|
||||
----------
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\clearpage
|
||||
|
||||
.. _size:
|
||||
|
||||
Size of LAMMPS integer types and size limits
|
||||
@ -277,7 +308,7 @@ LAMMPS system size restrictions
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 18 27 28 27
|
||||
:align: center
|
||||
|
||||
* -
|
||||
@ -360,12 +391,13 @@ requires the following settings:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D WITH_JPEG=value # yes or no
|
||||
# default = yes if CMake finds JPEG development files, else no
|
||||
-D WITH_PNG=value # yes or no
|
||||
# default = yes if CMake finds PNG and ZLIB development files, else no
|
||||
-D WITH_FFMPEG=value # yes or no
|
||||
# default = yes if CMake can find ffmpeg, else no
|
||||
-D WITH_JPEG=value # yes or no
|
||||
# default = yes if CMake finds JPEG development files, else no
|
||||
-D WITH_PNG=value # yes or no
|
||||
# default = yes if CMake finds PNG and ZLIB development files,
|
||||
# else no
|
||||
-D WITH_FFMPEG=value # yes or no
|
||||
# default = yes if CMake can find ffmpeg, else no
|
||||
|
||||
Usually these settings are all that is needed. If CMake cannot
|
||||
find the graphics header, library, executable files, you can set
|
||||
@ -387,8 +419,10 @@ requires the following settings:
|
||||
|
||||
LMP_INC = -DLAMMPS_JPEG -DLAMMPS_PNG -DLAMMPS_FFMPEG <other LMP_INC settings>
|
||||
|
||||
JPG_INC = -I/usr/local/include # path to jpeglib.h, png.h, zlib.h header files if make cannot find them
|
||||
JPG_PATH = -L/usr/lib # paths to libjpeg.a, libpng.a, libz.a (.so) files if make cannot find them
|
||||
JPG_INC = -I/usr/local/include # path to jpeglib.h, png.h, zlib.h headers
|
||||
# if make cannot find them
|
||||
JPG_PATH = -L/usr/lib # paths to libjpeg.a, libpng.a, libz.a (.so)
|
||||
# files if make cannot find them
|
||||
JPG_LIB = -ljpeg -lpng -lz # library names
|
||||
|
||||
As with CMake, you do not need to set ``JPG_INC`` or ``JPG_PATH``,
|
||||
@ -428,8 +462,8 @@ including :doc:`read_data <read_data>`, :doc:`rerun <rerun>`, and
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D WITH_GZIP=value # yes or no
|
||||
# default is yes if CMake can find the gzip program, else no
|
||||
-D WITH_GZIP=value # yes or no
|
||||
# default is yes if CMake can find the gzip program
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
@ -504,11 +538,11 @@ LAMMPS is compiled accordingly which needs the following settings:
|
||||
Memory allocation alignment
|
||||
---------------------------
|
||||
|
||||
This setting enables the use of the "posix_memalign()" call instead of
|
||||
"malloc()" when LAMMPS allocates large chunks of memory. Vector
|
||||
This setting enables the use of the ``posix_memalign()`` call instead of
|
||||
``malloc()`` when LAMMPS allocates large chunks of memory. Vector
|
||||
instructions on CPUs may become more efficient, if dynamically allocated
|
||||
memory is aligned on larger-than-default byte boundaries. On most
|
||||
current operating systems, the "malloc()" implementation returns
|
||||
current operating systems, the ``malloc()`` implementation returns
|
||||
pointers that are aligned to 16-byte boundaries. Using SSE vector
|
||||
instructions efficiently, however, requires memory blocks being aligned
|
||||
on 64-byte boundaries.
|
||||
@ -522,9 +556,9 @@ on 64-byte boundaries.
|
||||
-D LAMMPS_MEMALIGN=value # 0, 8, 16, 32, 64 (default)
|
||||
|
||||
Use a ``LAMMPS_MEMALIGN`` value of 0 to disable using
|
||||
"posix_memalign()" and revert to using the "malloc()" C-library
|
||||
``posix_memalign()`` and revert to using the ``malloc()`` C-library
|
||||
function instead. When compiling LAMMPS for Windows systems,
|
||||
"malloc()" will always be used and this setting is ignored.
|
||||
``malloc()`` will always be used and this setting is ignored.
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
@ -533,7 +567,7 @@ on 64-byte boundaries.
|
||||
LMP_INC = -DLAMMPS_MEMALIGN=value # 8, 16, 32, 64
|
||||
|
||||
Do not set ``-DLAMMPS_MEMALIGN``, if you want to have memory
|
||||
allocated with the "malloc()" function call
|
||||
allocated with the ``malloc()`` function call
|
||||
instead. ``-DLAMMPS_MEMALIGN`` **cannot** be used on Windows, as
|
||||
Windows different function calls with different semantics for
|
||||
allocating aligned memory, that are not compatible with how LAMMPS
|
||||
|
||||
@ -1,26 +1,30 @@
|
||||
.. table_from_list::
|
||||
:columns: 3
|
||||
.. only:: html
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
.. table_from_list::
|
||||
:columns: 5
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\clearpage
|
||||
|
||||
General commands
|
||||
================
|
||||
|
||||
An alphabetic list of general LAMMPS commands. Note that style
|
||||
commands with many variants, can be more easily accessed via the small
|
||||
table above.
|
||||
An alphabetic list of general LAMMPS commands.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 5
|
||||
:columns: 6
|
||||
|
||||
* :doc:`angle_coeff <angle_coeff>`
|
||||
* :doc:`angle_style <angle_style>`
|
||||
@ -122,7 +126,7 @@ commands have accelerated versions. This is indicated by an
|
||||
additional letter in parenthesis: k = KOKKOS.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 5
|
||||
:columns: 6
|
||||
|
||||
* :doc:`dynamical_matrix (k) <dynamical_matrix>`
|
||||
* :doc:`group2ndx <group2ndx>`
|
||||
|
||||
@ -1,21 +1,7 @@
|
||||
.. table_from_list::
|
||||
:columns: 3
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
|
||||
.. _bond:
|
||||
|
||||
Bond_style potentials
|
||||
=====================
|
||||
Bond styles
|
||||
===========
|
||||
|
||||
All LAMMPS :doc:`bond_style <bond_style>` commands. Some styles have
|
||||
accelerated versions. This is indicated by additional letters in
|
||||
@ -23,7 +9,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t =
|
||||
OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
:columns: 5
|
||||
|
||||
* :doc:`none <bond_none>`
|
||||
* :doc:`zero <bond_zero>`
|
||||
@ -33,6 +19,8 @@ OPT.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* :doc:`bpm/rotational <bond_bpm_rotational>`
|
||||
* :doc:`bpm/spring <bond_bpm_spring>`
|
||||
* :doc:`class2 (ko) <bond_class2>`
|
||||
@ -60,8 +48,8 @@ OPT.
|
||||
|
||||
.. _angle:
|
||||
|
||||
Angle_style potentials
|
||||
======================
|
||||
Angle styles
|
||||
============
|
||||
|
||||
All LAMMPS :doc:`angle_style <angle_style>` commands. Some styles have
|
||||
accelerated versions. This is indicated by additional letters in
|
||||
@ -69,7 +57,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t =
|
||||
OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
:columns: 5
|
||||
|
||||
* :doc:`none <angle_none>`
|
||||
* :doc:`zero <angle_zero>`
|
||||
@ -79,6 +67,8 @@ OPT.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* :doc:`amoeba <angle_amoeba>`
|
||||
* :doc:`charmm (iko) <angle_charmm>`
|
||||
* :doc:`class2 (ko) <angle_class2>`
|
||||
@ -106,8 +96,8 @@ OPT.
|
||||
|
||||
.. _dihedral:
|
||||
|
||||
Dihedral_style potentials
|
||||
=========================
|
||||
Dihedral styles
|
||||
===============
|
||||
|
||||
All LAMMPS :doc:`dihedral_style <dihedral_style>` commands. Some styles
|
||||
have accelerated versions. This is indicated by additional letters in
|
||||
@ -115,7 +105,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t =
|
||||
OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
:columns: 5
|
||||
|
||||
* :doc:`none <dihedral_none>`
|
||||
* :doc:`zero <dihedral_zero>`
|
||||
@ -125,6 +115,8 @@ OPT.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* :doc:`charmm (iko) <dihedral_charmm>`
|
||||
* :doc:`charmmfsw (k) <dihedral_charmm>`
|
||||
* :doc:`class2 (ko) <dihedral_class2>`
|
||||
@ -144,8 +136,8 @@ OPT.
|
||||
|
||||
.. _improper:
|
||||
|
||||
Improper_style potentials
|
||||
=========================
|
||||
Improper styles
|
||||
===============
|
||||
|
||||
All LAMMPS :doc:`improper_style <improper_style>` commands. Some styles
|
||||
have accelerated versions. This is indicated by additional letters in
|
||||
@ -153,7 +145,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t =
|
||||
OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
:columns: 5
|
||||
|
||||
* :doc:`none <improper_none>`
|
||||
* :doc:`zero <improper_zero>`
|
||||
@ -163,6 +155,8 @@ OPT.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* :doc:`amoeba <improper_amoeba>`
|
||||
* :doc:`class2 (ko) <improper_class2>`
|
||||
* :doc:`cossq (o) <improper_cossq>`
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
.. raw:: latex
|
||||
|
||||
\clearpage
|
||||
|
||||
Commands by category
|
||||
====================
|
||||
|
||||
@ -6,8 +10,8 @@ This page lists most of the LAMMPS commands, grouped by category. The
|
||||
alphabetically. Style options for entries like fix, compute, pair etc.
|
||||
have their own pages where they are listed alphabetically.
|
||||
|
||||
Initialization:
|
||||
------------------------------
|
||||
Initialization
|
||||
--------------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 5
|
||||
@ -18,8 +22,8 @@ Initialization:
|
||||
* :doc:`suffix <suffix>`
|
||||
* :doc:`units <units>`
|
||||
|
||||
Setup simulation box:
|
||||
------------------------------
|
||||
Setup simulation box
|
||||
--------------------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
@ -31,8 +35,8 @@ Setup simulation box:
|
||||
* :doc:`lattice <lattice>`
|
||||
* :doc:`region <region>`
|
||||
|
||||
Setup atoms:
|
||||
------------------------------
|
||||
Setup atoms
|
||||
-----------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
@ -55,8 +59,8 @@ Setup atoms:
|
||||
* :doc:`set <set>`
|
||||
* :doc:`velocity <velocity>`
|
||||
|
||||
Force fields:
|
||||
------------------------------
|
||||
Force fields
|
||||
------------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
@ -79,8 +83,8 @@ Force fields:
|
||||
* :doc:`pair_write <pair_write>`
|
||||
* :doc:`special_bonds <special_bonds>`
|
||||
|
||||
Settings:
|
||||
------------------------------
|
||||
Settings
|
||||
--------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
@ -98,8 +102,8 @@ Settings:
|
||||
* :doc:`timer <timer>`
|
||||
* :doc:`timestep <timestep>`
|
||||
|
||||
Operations within timestepping (fixes) and diagnostics (computes):
|
||||
------------------------------------------------------------------------------------------
|
||||
Operations within timestepping (fixes) and diagnostics (computes)
|
||||
-----------------------------------------------------------------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
@ -111,8 +115,8 @@ Operations within timestepping (fixes) and diagnostics (computes):
|
||||
* :doc:`uncompute <uncompute>`
|
||||
* :doc:`unfix <unfix>`
|
||||
|
||||
Output:
|
||||
------------------------------
|
||||
Output
|
||||
------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
@ -131,8 +135,8 @@ Output:
|
||||
* :doc:`write_dump <write_dump>`
|
||||
* :doc:`write_restart <write_restart>`
|
||||
|
||||
Actions:
|
||||
------------------------------
|
||||
Actions
|
||||
-------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 6
|
||||
@ -146,8 +150,8 @@ Actions:
|
||||
* :doc:`tad <tad>`
|
||||
* :doc:`temper <temper>`
|
||||
|
||||
Input script control:
|
||||
------------------------------
|
||||
Input script control
|
||||
--------------------
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 7
|
||||
|
||||
@ -1,19 +1,5 @@
|
||||
.. table_from_list::
|
||||
:columns: 3
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
|
||||
Compute commands
|
||||
================
|
||||
Compute styles
|
||||
==============
|
||||
|
||||
An alphabetic list of all LAMMPS :doc:`compute <compute>` commands.
|
||||
Some styles have accelerated versions. This is indicated by
|
||||
@ -21,7 +7,7 @@ additional letters in parenthesis: g = GPU, i = INTEL, k =
|
||||
KOKKOS, o = OPENMP, t = OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 5
|
||||
:columns: 4
|
||||
|
||||
* :doc:`ackland/atom <compute_ackland_atom>`
|
||||
* :doc:`adf <compute_adf>`
|
||||
|
||||
@ -1,24 +1,10 @@
|
||||
.. table_from_list::
|
||||
:columns: 3
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
|
||||
Dump commands
|
||||
=============
|
||||
Dump styles
|
||||
===========
|
||||
|
||||
An alphabetic list of all LAMMPS :doc:`dump <dump>` commands.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 5
|
||||
:columns: 6
|
||||
|
||||
* :doc:`atom <dump>`
|
||||
* :doc:`atom/adios <dump_adios>`
|
||||
|
||||
@ -1,19 +1,5 @@
|
||||
.. table_from_list::
|
||||
:columns: 3
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
|
||||
Fix commands
|
||||
============
|
||||
Fix styles
|
||||
==========
|
||||
|
||||
An alphabetic list of all LAMMPS :doc:`fix <fix>` commands. Some styles
|
||||
have accelerated versions. This is indicated by additional letters in
|
||||
@ -21,7 +7,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t =
|
||||
OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 5
|
||||
:columns: 4
|
||||
|
||||
* :doc:`accelerate/cos <fix_accelerate_cos>`
|
||||
* :doc:`acks2/reaxff (k) <fix_acks2_reaxff>`
|
||||
|
||||
@ -10,14 +10,14 @@ for any commands that may be processed later. Commands may set an
|
||||
internal variable, read in a file, or run a simulation. These actions
|
||||
can be grouped into three categories:
|
||||
|
||||
a) commands that change a global setting (examples: timestep, newton,
|
||||
echo, log, thermo, restart),
|
||||
a) commands that change a global setting (examples: :doc:`timestep <timestep>`, :doc:`newton <newton>`,
|
||||
:doc:`echo <echo>`, :doc:`log <log>`, :doc:`thermo <thermo>`, :doc:`restart <restart>`),
|
||||
b) commands that add, modify, remove, or replace "styles" that are
|
||||
executed during a "run" (examples: pair_style, fix, compute, dump,
|
||||
thermo_style, pair_modify), and
|
||||
executed during a "run" (examples: :doc:`pair_style <pair_style>`, :doc:`fix <fix>`, :doc:`compute <compute>`, :doc:`dump <dump>`,
|
||||
:doc:`thermo_style <thermo_style>`, :doc:`pair_modify <pair_modify>`), and
|
||||
c) commands that execute a "run" or perform some other computation or
|
||||
operation (examples: print, run, minimize, temper, write_dump, rerun,
|
||||
read_data, read_restart)
|
||||
operation (examples: :doc:`print <print>`, :doc:`run <run>`, :doc:`minimize <minimize>`, :doc:`temper <temper>`, :doc:`write_dump <write_dump>`, :doc:`rerun <rerun>`,
|
||||
:doc:`read_data <read_data>`, :doc:`read_restart <read_restart>`)
|
||||
|
||||
Commands in category a) have default settings, which means you only
|
||||
need to use the command if you wish to change the defaults.
|
||||
@ -61,7 +61,7 @@ between commands in the c) category. The following rules apply:
|
||||
<read_data>` command initializes the system by setting up the
|
||||
simulation box and assigning atoms to processors. If default values
|
||||
are not desired, the :doc:`processors <processors>` and
|
||||
:doc:`boundary <boundary>` commands need to be used before read_data
|
||||
:doc:`boundary <boundary>` commands need to be used before ``read_data``
|
||||
to tell LAMMPS how to map processors to the simulation box.
|
||||
|
||||
Many input script errors are detected by LAMMPS and an ERROR or
|
||||
@ -70,6 +70,6 @@ more information on what errors mean. The documentation for each
|
||||
command lists restrictions on how the command can be used.
|
||||
|
||||
You can use the :ref:`-skiprun <skiprun>` command line flag
|
||||
to have LAMMPS skip the execution of any "run", "minimize", or similar
|
||||
to have LAMMPS skip the execution of any ``run``, ``minimize``, or similar
|
||||
commands to check the entire input for correct syntax to avoid crashes
|
||||
on typos or syntax errors in long runs.
|
||||
|
||||
@ -1,19 +1,5 @@
|
||||
.. table_from_list::
|
||||
:columns: 3
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
|
||||
KSpace solvers
|
||||
==============
|
||||
KSpace styles
|
||||
=============
|
||||
|
||||
All LAMMPS :doc:`kspace_style <kspace_style>` solvers. Some styles have
|
||||
accelerated versions. This is indicated by additional letters in
|
||||
@ -21,7 +7,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t =
|
||||
OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
:columns: 5
|
||||
|
||||
* :doc:`ewald (o) <kspace_style>`
|
||||
* :doc:`ewald/disp <kspace_style>`
|
||||
|
||||
@ -1,19 +1,5 @@
|
||||
.. table_from_list::
|
||||
:columns: 3
|
||||
|
||||
* :doc:`General commands <Commands_all>`
|
||||
* :doc:`Fix styles <Commands_fix>`
|
||||
* :doc:`Compute styles <Commands_compute>`
|
||||
* :doc:`Pair styles <Commands_pair>`
|
||||
* :ref:`Bond styles <bond>`
|
||||
* :ref:`Angle styles <angle>`
|
||||
* :ref:`Dihedral styles <dihedral>`
|
||||
* :ref:`Improper styles <improper>`
|
||||
* :doc:`KSpace styles <Commands_kspace>`
|
||||
* :doc:`Dump styles <Commands_dump>`
|
||||
|
||||
Pair_style potentials
|
||||
======================
|
||||
Pair styles
|
||||
===========
|
||||
|
||||
All LAMMPS :doc:`pair_style <pair_style>` commands. Some styles have
|
||||
accelerated versions. This is indicated by additional letters in
|
||||
@ -21,7 +7,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t =
|
||||
OPT.
|
||||
|
||||
.. table_from_list::
|
||||
:columns: 4
|
||||
:columns: 3
|
||||
|
||||
* :doc:`none <pair_none>`
|
||||
* :doc:`zero <pair_zero>`
|
||||
@ -35,10 +21,6 @@ OPT.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* :doc:`adp (ko) <pair_adp>`
|
||||
* :doc:`agni (o) <pair_agni>`
|
||||
* :doc:`aip/water/2dm (t) <pair_aip_water_2dm>`
|
||||
|
||||
@ -42,8 +42,8 @@ LAMMPS:
|
||||
If the $ is followed by text in curly brackets '{}', then the
|
||||
variable name is the text inside the curly brackets. If no curly
|
||||
brackets follow the $, then the variable name is the single character
|
||||
immediately following the $. Thus ${myTemp} and $x refer to variables
|
||||
named "myTemp" and "x", while "$xx" will be interpreted as a variable
|
||||
immediately following the $. Thus ``${myTemp}`` and ``$x`` refer to variables
|
||||
named "myTemp" and "x", while ``$xx`` will be interpreted as a variable
|
||||
named "x" followed by an "x" character.
|
||||
|
||||
How the variable is converted to a text string depends on what style
|
||||
@ -79,10 +79,10 @@ LAMMPS:
|
||||
|
||||
Additionally, the entire "immediate" variable expression may be
|
||||
followed by a colon, followed by a C-style format string,
|
||||
e.g. ":%f" or ":%.10g". The format string must be appropriate for
|
||||
e.g. ``:%f`` or ``:%.10g``. The format string must be appropriate for
|
||||
a double-precision floating-point value. The format string is used
|
||||
to output the result of the variable expression evaluation. If a
|
||||
format string is not specified, a high-precision "%.20g" is used as
|
||||
format string is not specified, a high-precision ``%.20g`` is used as
|
||||
the default format.
|
||||
|
||||
This can be useful for formatting print output to a desired precision:
|
||||
@ -101,8 +101,8 @@ LAMMPS:
|
||||
variable b2 equal 4
|
||||
print "B2 = ${b$a}"
|
||||
|
||||
Nor can you specify an expression like "$($x-1.0)" for an immediate
|
||||
variable, but you could use $(v_x-1.0), since the latter is valid
|
||||
Nor can you specify an expression like ``$($x-1.0)`` for an immediate
|
||||
variable, but you could use ``$(v_x-1.0)``, since the latter is valid
|
||||
syntax for an :doc:`equal-style variable <variable>`.
|
||||
|
||||
See the :doc:`variable <variable>` command for more details of how
|
||||
|
||||
@ -8,10 +8,10 @@ page.
|
||||
|
||||
A LAMMPS input script typically has 4 parts:
|
||||
|
||||
1. :ref:`Initialization <init>`
|
||||
2. :ref:`System definition <system>`
|
||||
3. :ref:`Simulation settings <settings>`
|
||||
4. :ref:`Run a simulation <run>`
|
||||
#. :ref:`Initialization <init>`
|
||||
#. :ref:`System definition <system>`
|
||||
#. :ref:`Simulation settings <settings>`
|
||||
#. :ref:`Run a simulation <run>`
|
||||
|
||||
The last 2 parts can be repeated as many times as desired. I.e. run a
|
||||
simulation, change some settings, run some more, etc. Each of the 4
|
||||
|
||||
@ -2,7 +2,7 @@ Accessing per-atom data
|
||||
-----------------------
|
||||
|
||||
This page discusses how per-atom data is managed in LAMMPS, how it can
|
||||
be accessed, what communication patters apply, and some of the utility
|
||||
be accessed, what communication patterns apply, and some of the utility
|
||||
functions that exist for a variety of purposes.
|
||||
|
||||
|
||||
@ -14,11 +14,11 @@ As described on the :doc:`parallel partitioning algorithms
|
||||
simulation domain, either in a *brick* or *tiled* manner. Each MPI
|
||||
process *owns* exactly one subdomain and the atoms within it. To compute
|
||||
forces for tuples of atoms that are spread across sub-domain boundaries,
|
||||
also a "halo" of *ghost* atoms are maintained within a the communication
|
||||
also a "halo" of *ghost* atoms are maintained within the communication
|
||||
cutoff distance of its subdomain.
|
||||
|
||||
The total number of atoms is stored in `Atom::natoms` (within any
|
||||
typical class this can be referred to at `atom->natoms`. The number of
|
||||
typical class this can be referred to at `atom->natoms`). The number of
|
||||
*owned* (or "local" atoms) are stored in `Atom::nlocal`; the number of
|
||||
*ghost* atoms is stored in `Atom::nghost`. The sum of `Atom::nlocal`
|
||||
over all MPI processes should be `Atom::natoms`. This is by default
|
||||
@ -27,8 +27,8 @@ LAMMPS stops with a "lost atoms" error. For convenience also the
|
||||
property `Atom::nmax` is available, this is the maximum of
|
||||
`Atom::nlocal + Atom::nghost` across all MPI processes.
|
||||
|
||||
Per-atom properties are either managed by the atom style, or individual
|
||||
classes. or as custom arrays by the individual classes. If only access
|
||||
Per-atom properties are either managed by the atom style, individual
|
||||
classes, or as custom arrays by the individual classes. If only access
|
||||
to *owned* atoms is needed, they are usually allocated to be of size
|
||||
`Atom::nlocal`, otherwise of size `Atom::nmax`. Please note that not all
|
||||
per-atom properties are available or updated on *ghost* atoms. For
|
||||
@ -61,7 +61,7 @@ can be found via the `Atom::sametag` array. It points to the next atom
|
||||
index with the same tag or -1 if there are no more atoms with the same
|
||||
tag. The list will be exhaustive when starting with an index of an
|
||||
*owned* atom, since the atom IDs are unique, so there can only be one
|
||||
such atom. Example code to count atoms with same atom ID in subdomain:
|
||||
such atom. Example code to count atoms with same atom ID in a subdomain:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ The basic LAMMPS class hierarchy which is created by the LAMMPS class
|
||||
constructor is shown in :ref:`class-topology`. When input commands
|
||||
are processed, additional class instances are created, or deleted, or
|
||||
replaced. Likewise, specific member functions of specific classes are
|
||||
called to trigger actions such creating atoms, computing forces,
|
||||
called to trigger actions such as creating atoms, computing forces,
|
||||
computing properties, time-propagating the system, or writing output.
|
||||
|
||||
Compositing and Inheritance
|
||||
@ -110,9 +110,10 @@ As mentioned above, there can be multiple instances of classes derived
|
||||
from the ``Fix`` or ``Compute`` base classes. They represent a
|
||||
different facet of LAMMPS' flexibility, as they provide methods which
|
||||
can be called at different points within a timestep, as explained in
|
||||
`Developer_flow`. This allows the input script to tailor how a specific
|
||||
simulation is run, what diagnostic computations are performed, and how
|
||||
the output of those computations is further processed or output.
|
||||
the :doc:`How a timestep works <Developer_flow>` doc page. This allows
|
||||
the input script to tailor how a specific simulation is run, what
|
||||
diagnostic computations are performed, and how the output of those
|
||||
computations is further processed or output.
|
||||
|
||||
Additional code sharing is possible by creating derived classes from the
|
||||
derived classes (e.g., to implement an accelerated version of a pair
|
||||
|
||||
@ -128,7 +128,7 @@ reflect particles off box boundaries in the :doc:`FixWallReflect class
|
||||
The ``decide()`` method in the Neighbor class determines whether
|
||||
neighbor lists need to be rebuilt on the current timestep (conditions
|
||||
can be changed using the :doc:`neigh_modify every/delay/check
|
||||
<neigh_modify>` command. If not, coordinates of ghost atoms are
|
||||
<neigh_modify>` command). If not, coordinates of ghost atoms are
|
||||
acquired by each processor via the ``forward_comm()`` method of the Comm
|
||||
class. If neighbor lists need to be built, several operations within
|
||||
the inner if clause of the pseudocode are first invoked. The
|
||||
|
||||
@ -433,7 +433,7 @@ from owned to ghost cells, or ghost to owned cells, respectively, as
|
||||
described above. The *caller* argument should be one of these values
|
||||
-- Grid3d::COMPUTE, Grid3d::FIX, Grid3d::KSPACE, Grid3d::PAIR --
|
||||
depending on the style of the caller class. The *ptr* argument is the
|
||||
"this" pointer to the caller class. These 2 arguments are used to
|
||||
"this" pointer to the caller class. These two arguments are used to
|
||||
call back to pack()/unpack() functions in the caller class, as
|
||||
explained below.
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Available topics are:
|
||||
Reading and parsing of text and text files
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
It is frequently required for a class in LAMMPS to read in additional
|
||||
Classes in LAMMPS frequently need to read in additional
|
||||
data from a file, e.g. potential parameters from a potential file for
|
||||
manybody potentials. LAMMPS provides several custom classes and
|
||||
convenience functions to simplify the process. They offer the
|
||||
@ -128,9 +128,8 @@ that determines the kind of neighbor list requested. The default value
|
||||
used here asks for a perpetual "half" neighbor list.
|
||||
|
||||
Non-default values of the second argument need to be used to adjust a
|
||||
neighbor list request to the specific needs of a style an additional
|
||||
request flag is needed. The :doc:`tersoff <pair_tersoff>` pair style,
|
||||
for example, needs a "full" neighbor list:
|
||||
neighbor list request to the specific needs of a style. The :doc:`tersoff
|
||||
<pair_tersoff>` pair style, for example, needs a "full" neighbor list:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
@ -141,8 +140,8 @@ for example, needs a "full" neighbor list:
|
||||
}
|
||||
|
||||
When a pair style supports r-RESPA time integration with different cutoff regions,
|
||||
the request flag may depend on the corresponding r-RESPA settings. Here an example
|
||||
from pair style lj/cut:
|
||||
the request flag may depend on the corresponding r-RESPA settings. Here is an
|
||||
example from pair style lj/cut:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
@ -160,7 +159,7 @@ from pair style lj/cut:
|
||||
}
|
||||
|
||||
Granular pair styles need neighbor lists based on particle sizes and not cutoff
|
||||
and also may require to have the list of previous neighbors available ("history").
|
||||
and also may need to store data across timesteps ("history").
|
||||
For example with:
|
||||
|
||||
.. code-block:: c++
|
||||
@ -169,7 +168,7 @@ For example with:
|
||||
else neighbor->add_request(this, NeighConst::REQ_SIZE);
|
||||
|
||||
In case a class would need to make multiple neighbor list requests with different
|
||||
settings each request can set an id which is then used in the corresponding
|
||||
settings, each request can set an id which is then used in the corresponding
|
||||
``init_list()`` function to assign it to the suitable pointer variable. This is
|
||||
done for example by the :doc:`pair style meam <pair_meam>`:
|
||||
|
||||
@ -279,8 +278,8 @@ And here is how the code operates:
|
||||
* The :doc:`thermo_style custom <thermo_style>` command defines
|
||||
*ecouple* and *econserve* keywords.
|
||||
* These keywords sum the energy contributions from all the
|
||||
*ecouple_flag* = 1 fixes by invoking the energy_couple() method in
|
||||
the Modify class, which calls the compute_scalar() method of each
|
||||
*ecouple_flag* = 1 fixes by invoking the *energy_couple()* method in
|
||||
the Modify class, which calls the *compute_scalar()* method of each
|
||||
fix in the list.
|
||||
|
||||
------------------
|
||||
@ -320,19 +319,19 @@ The fix must also do the following:
|
||||
|
||||
The ev_init() and ev_tally() methods also account for global and
|
||||
peratom virial contributions. Thus you do not need to invoke the
|
||||
v_init() and v_tally() methods, if the fix also calculates peratom
|
||||
v_init() and v_tally() methods if the fix also calculates peratom
|
||||
energies.
|
||||
|
||||
The fix must also specify whether (by default) to include or exclude
|
||||
these contributions to the global/peratom energy/virial of the system.
|
||||
For the fix to include the contributions, set either of both of these
|
||||
For the fix to include the contributions, set either or both of these
|
||||
variables in the constructor:
|
||||
|
||||
* *thermo_energy* = 1, for global and peratom energy
|
||||
* *thermo_virial* = 1, for global and peratom virial
|
||||
|
||||
Note that these variables are zeroed in fix.cpp. Thus if you don't
|
||||
set the variables, the contributions will be excluded (by default)
|
||||
set the variables, the contributions will be excluded (by default).
|
||||
|
||||
However, the user has ultimate control over whether to include or
|
||||
exclude the contributions of the fix via the :doc:`fix modify
|
||||
@ -406,9 +405,11 @@ processor owns, within the global grid:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in = 3d decomposition brick
|
||||
nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft = FFT decomposition brick
|
||||
nxlo_out,nxhi_out,nylo_out,nyhi_out,nzlo_out,nzhi_out = 3d decomposition brick + ghost cells
|
||||
nFOO_in = 3d decomposition brick
|
||||
nFOO_fft = FFT decomposition brick
|
||||
nFOO_out = 3d decomposition brick + ghost cells
|
||||
|
||||
where ``FOO`` corresponds to ``xlo, xhi, ylo, yhi, zlo,`` or ``zhi``.
|
||||
|
||||
The ``in`` and ``fft`` indices are from 0 to N-1 inclusive in each
|
||||
dimension, where N is the grid size.
|
||||
|
||||
@ -4,8 +4,7 @@ Communication
|
||||
Following the selected partitioning scheme, all per-atom data is
|
||||
distributed across the MPI processes, which allows LAMMPS to handle very
|
||||
large systems provided it uses a correspondingly large number of MPI
|
||||
processes. Since The per-atom data (atom IDs, positions, velocities,
|
||||
types, etc.) To be able to compute the short-range interactions, MPI
|
||||
processes. To be able to compute the short-range interactions, MPI
|
||||
processes need not only access to the data of atoms they "own" but also
|
||||
information about atoms from neighboring subdomains, in LAMMPS referred
|
||||
to as "ghost" atoms. These are copies of atoms storing required
|
||||
@ -37,7 +36,7 @@ be larger than half the simulation domain.
|
||||
|
||||
Efficient communication patterns are needed to update the "ghost" atom
|
||||
data, since that needs to be done at every MD time step or minimization
|
||||
step. The diagrams of the `ghost-atom-comm` figure illustrate how ghost
|
||||
step. The diagrams of the :ref:`ghost-atom-comm` figure illustrate how ghost
|
||||
atom communication is performed in two stages for a 2d simulation (three
|
||||
in 3d) for both a regular and irregular partitioning of the simulation
|
||||
box. For the regular case (left) atoms are exchanged first in the
|
||||
|
||||
@ -93,7 +93,7 @@ processors, since each tile in the initial tiling overlaps with a
|
||||
handful of tiles in the final tiling.
|
||||
|
||||
The transformations could also be done using collective communication
|
||||
across all $P$ processors with a single call to ``MPI_Alltoall()``, but
|
||||
across all :math:`P` processors with a single call to ``MPI_Alltoall()``, but
|
||||
this is typically much slower. However, for the specialized brick and
|
||||
pencil tiling illustrated in :ref:`fft-parallel` figure, collective
|
||||
communication across the entire MPI communicator is not required. In
|
||||
@ -138,7 +138,7 @@ grid/particle operations that LAMMPS supports:
|
||||
:math:`O(P^{\frac{1}{2}})`.
|
||||
|
||||
- For efficiency in performing 1d FFTs, the grid transpose
|
||||
operations illustrated in Figure \ref{fig:fft} also involve
|
||||
operations illustrated in Figure :ref:`fft-parallel` also involve
|
||||
reordering the 3d data so that a different dimension is contiguous
|
||||
in memory. This reordering can be done during the packing or
|
||||
unpacking of buffers for MPI communication.
|
||||
|
||||
@ -149,7 +149,7 @@ supports:
|
||||
|
||||
- Dependent on the "pair" setting of the :doc:`newton <newton>` command,
|
||||
the "half" neighbor lists may contain **all** pairs of atoms where
|
||||
atom *j* is a ghost atom (i.e. when the newton pair setting is *off*)
|
||||
atom *j* is a ghost atom (i.e. when the newton pair setting is *off*).
|
||||
For the newton pair *on* setting the atom *j* is only added to the
|
||||
list if its *z* coordinate is larger, or if equal the *y* coordinate
|
||||
is larger, and that is equal, too, the *x* coordinate is larger. For
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
OpenMP Parallelism
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The styles in the INTEL, KOKKOS, and OPENMP package offer to use OpenMP
|
||||
The styles in the INTEL, KOKKOS, and OPENMP packages offer to use OpenMP
|
||||
thread parallelism to predominantly distribute loops over local data
|
||||
and thus follow an orthogonal parallelization strategy to the
|
||||
decomposition into spatial domains used by the :doc:`MPI partitioning
|
||||
<Developer_par_part>`. For clarity, this section discusses only the
|
||||
implementation in the OPENMP package, as it is the simplest. The INTEL
|
||||
and KOKKOS package offer additional options and are more complex since
|
||||
and KOKKOS packages offer additional options and are more complex since
|
||||
they support more features and different hardware like co-processors
|
||||
or GPUs.
|
||||
|
||||
@ -16,7 +16,7 @@ keep the changes to the source code small, so that it would be easier to
|
||||
maintain the code and keep it in sync with the non-threaded standard
|
||||
implementation. This is achieved by a) making the OPENMP version a
|
||||
derived class from the regular version (e.g. ``PairLJCutOMP`` from
|
||||
``PairLJCut``) and overriding only methods that are multi-threaded or
|
||||
``PairLJCut``) and only overriding methods that are multi-threaded or
|
||||
need to be modified to support multi-threading (similar to what was done
|
||||
in the OPT package), b) keeping the structure in the modified code very
|
||||
similar so that side-by-side comparisons are still useful, and c)
|
||||
|
||||
@ -53,7 +53,7 @@ Members of ``lammpsplugin_t``
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 15 85
|
||||
|
||||
* - Member
|
||||
- Description
|
||||
@ -135,7 +135,7 @@ unique inside the entire LAMMPS executable.
|
||||
Fix style example
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
If the factory function would be for a fix or compute, which take three
|
||||
If the factory function is for a fix or compute, which take three
|
||||
arguments (a pointer to the LAMMPS class, the number of arguments and the
|
||||
list of argument strings), then the pointer type is ``lammpsplugin_factory2``
|
||||
and it must be assigned to the *creator.v2* member of the plugin struct.
|
||||
@ -271,7 +271,7 @@ Plugins need to be compiled with the same compilers and libraries
|
||||
as the LAMMPS executable and library. Otherwise the plugin will likely
|
||||
not load due to mismatches in the function signatures (LAMMPS is C++ so
|
||||
scope, type, and number of arguments are encoded into the symbol names
|
||||
and thus differences in them will lead to failed plugin load commands.
|
||||
and thus differences in them will lead to failed plugin load commands).
|
||||
Compilation of the plugin can be managed via both, CMake or traditional
|
||||
GNU makefiles. Some examples that can be used as a template are in the
|
||||
``examples/plugins`` folder. The CMake script code has some small
|
||||
|
||||
@ -44,7 +44,7 @@ available:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 32 18 50
|
||||
:align: left
|
||||
|
||||
* - File name:
|
||||
@ -227,12 +227,12 @@ Tests for the C-style library interface
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Tests for validating the LAMMPS C-style library interface are in the
|
||||
``unittest/c-library`` folder. They are implemented in either way used
|
||||
for utility functions and for LAMMPS commands, but use the functions
|
||||
``unittest/c-library`` folder. They are implemented either to be used
|
||||
for utility functions or for LAMMPS commands, but use the functions
|
||||
implemented in the ``src/library.cpp`` file as much as possible. There
|
||||
may be some overlap with other tests, but only in as much as is required
|
||||
to test the C-style library API. The tests are distributed over
|
||||
multiple test programs which tries to match the grouping of the
|
||||
multiple test programs which try to match the grouping of the
|
||||
functions in the source code and :ref:`in the manual <lammps_c_api>`.
|
||||
|
||||
This group of tests also includes tests invoking LAMMPS in parallel
|
||||
@ -258,7 +258,7 @@ Tests for the Python module and package
|
||||
|
||||
The ``unittest/python`` folder contains primarily tests for classes and
|
||||
functions in the LAMMPS python module but also for commands in the
|
||||
PYTHON package. These tests are only enabled, if the necessary
|
||||
PYTHON package. These tests are only enabled if the necessary
|
||||
prerequisites are detected or enabled during configuration and
|
||||
compilation of LAMMPS (shared library build enabled, Python interpreter
|
||||
found, Python development files found).
|
||||
@ -272,7 +272,7 @@ Tests for the Fortran interface
|
||||
|
||||
Tests for using the Fortran module are in the ``unittest/fortran``
|
||||
folder. Since they are also using the GoogleTest library, they require
|
||||
to also implement test wrappers in C++ that will call fortran functions
|
||||
implementing test wrappers in C++ that will call fortran functions
|
||||
which provide a C function interface through ISO_C_BINDINGS that will in
|
||||
turn call the functions in the LAMMPS Fortran module.
|
||||
|
||||
@ -293,7 +293,7 @@ The ``unittest/formats`` folder contains test programs for reading and
|
||||
writing files like data files, restart files, potential files or dump files.
|
||||
This covers simple things like the file i/o convenience functions in the
|
||||
``utils::`` namespace to complex tests of atom styles where creating and
|
||||
deleting of atoms with different properties is tested in different ways
|
||||
deleting atoms with different properties is tested in different ways
|
||||
and through script commands or reading and writing of data or restart files.
|
||||
|
||||
Tests for styles computing or modifying forces
|
||||
@ -411,7 +411,7 @@ With this scheme a large fraction of the code of any tested pair style
|
||||
will be executed and consistent results are required for different
|
||||
settings and between different accelerated pair style variants and the
|
||||
base class, as well as for computing individual pairs through the
|
||||
``Pair::single()`` where supported.
|
||||
``Pair::single()`` method where supported.
|
||||
|
||||
The ``test_pair_style`` tester is used with 4 categories of test inputs:
|
||||
|
||||
@ -443,7 +443,7 @@ file for a style that is similar to one to be tested. The file name should
|
||||
follow the naming conventions described above and after copying the file,
|
||||
the first step is to replace the style names where needed. The coefficient
|
||||
values do not have to be meaningful, just in a reasonable range for the
|
||||
given system. It does not matter if some forces are large, for as long as
|
||||
given system. It does not matter if some forces are large, as long as
|
||||
they do not diverge.
|
||||
|
||||
The template input files define a large number of index variables at the top
|
||||
@ -535,7 +535,7 @@ The are by default no unit tests for newly added features (e.g. pair, fix,
|
||||
or compute styles) unless your pull request also includes tests for the
|
||||
added features. If you are modifying some features, you may see failures
|
||||
for existing tests, if your modifications have some unexpected side effects
|
||||
or your changes render the existing text invalid. If you are adding an
|
||||
or your changes render the existing test invalid. If you are adding an
|
||||
accelerated version of an existing style, then only tests for INTEL,
|
||||
KOKKOS (with OpenMP only), OPENMP, and OPT will be run automatically.
|
||||
Tests for the GPU package are time consuming and thus are only run
|
||||
@ -543,7 +543,7 @@ Tests for the GPU package are time consuming and thus are only run
|
||||
to the pull request. After the test has started, it is often best to
|
||||
remove the label since every PR activity will re-trigger the test (that
|
||||
is a limitation of triggering a test with a label). Support for unit
|
||||
tests with using KOKKOS with GPU acceleration is currently not supported.
|
||||
tests when using KOKKOS with GPU acceleration is currently not supported.
|
||||
|
||||
When you see a failed build on GitHub, click on ``Details`` to be taken
|
||||
to the corresponding LAMMPS Jenkins CI web page. Click on the "Exit"
|
||||
@ -589,11 +589,10 @@ While the epsilon (relative precision) for a single, `IEEE 754 compliant
|
||||
point operation is at about 2.2e-16, the achievable precision for the
|
||||
tests is lower due to most numbers being sums over intermediate results
|
||||
and the non-associativity of floating point math leading to larger
|
||||
errors. In some cases specific properties of the tested style. As a
|
||||
rule of thumb, the test epsilon can often be in the range 5.0e-14 to
|
||||
1.0e-13. But for "noisy" force kernels, e.g. those a larger amount of
|
||||
arithmetic operations involving `exp()`, `log()` or `sin()` functions,
|
||||
and also due to the effect of compiler optimization or differences
|
||||
errors. As a rule of thumb, the test epsilon can often be in the range
|
||||
5.0e-14 to 1.0e-13. But for "noisy" force kernels, e.g. those a larger
|
||||
amount of arithmetic operations involving `exp()`, `log()` or `sin()`
|
||||
functions, and also due to the effect of compiler optimization or differences
|
||||
between compilers or platforms, epsilon may need to be further relaxed,
|
||||
sometimes epsilon can be relaxed to 1.0e-12. If interpolation or lookup
|
||||
tables are used, epsilon may need to be set to 1.0e-10 or even higher.
|
||||
|
||||
@ -52,10 +52,9 @@ Rename of pack/unpack_comm() to pack/unpack_forward_comm()
|
||||
|
||||
.. versionchanged:: 8Aug2014
|
||||
|
||||
In this change set the functions to pack data into communication buffers
|
||||
and to unpack data from communication buffers for :doc:`forward
|
||||
communications <Developer_comm_ops>` were renamed from ``pack_comm()``
|
||||
and ``unpack_comm()`` to ``pack_forward_comm()`` and
|
||||
In this change set, the functions to pack/unpack data into communication buffers
|
||||
for :doc:`forward communications <Developer_comm_ops>` were renamed from
|
||||
``pack_comm()`` and ``unpack_comm()`` to ``pack_forward_comm()`` and
|
||||
``unpack_forward_comm()``, respectively. Also the meaning of the return
|
||||
value of these functions was changed: rather than returning the number
|
||||
of items per atom stored in the buffer, now the total number of items
|
||||
@ -109,7 +108,7 @@ Use ev_init() to initialize variables derived from eflag and vflag
|
||||
There are several variables that need to be initialized based on
|
||||
the values of the "eflag" and "vflag" variables and since sometimes
|
||||
there are new bits added and new variables need to be set to 1 or 0.
|
||||
To make this consistent, across all styles, there is now an inline
|
||||
To make this consistent across all styles, there is now an inline
|
||||
function ``ev_init(eflag, vflag)`` that makes those settings
|
||||
consistently and calls either ``ev_setup()`` or ``ev_unset()``.
|
||||
Example from a pair style:
|
||||
@ -211,14 +210,14 @@ The :cpp:func:`utils::open_potential()
|
||||
calls to ``force->open_potential()`` and should be used to replace
|
||||
``fopen()`` for opening potential files for reading. The custom
|
||||
function does three additional steps compared to ``fopen()``: 1) it will
|
||||
try to parse the ``UNITS:`` and ``DATE:`` metadata will stop with an
|
||||
try to parse the ``UNITS:`` and ``DATE:`` metadata and will stop with an
|
||||
error on a units mismatch and will print the date info, if present, in
|
||||
the log file; 2) for pair styles that support it, it will set up
|
||||
possible automatic unit conversions based on the embedded unit
|
||||
information and LAMMPS' current units setting; 3) it will not only try
|
||||
to open a potential file at the given path, but will also search in the
|
||||
folders listed in the ``LAMMPS_POTENTIALS`` environment variable. This
|
||||
allows to keep potential files in a common location instead of having to
|
||||
allows potential files to reside in a common location instead of having to
|
||||
copy them around for simulations.
|
||||
|
||||
Old:
|
||||
@ -246,36 +245,38 @@ to use scoped enumerators instead.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 23 10 23 10 23 10
|
||||
|
||||
* - Symbolic Constant
|
||||
- Value
|
||||
- Symbolic Constant
|
||||
- Value
|
||||
- Symbolic Constant
|
||||
- Value
|
||||
* - Atom::GROW
|
||||
- 0
|
||||
- Atom::ATOMIC
|
||||
- 0
|
||||
- Atom::MAP_NONE
|
||||
- 0
|
||||
* - Atom::RESTART
|
||||
- 1
|
||||
- Atom::MOLECULAR
|
||||
- 1
|
||||
- Atom::MAP_ARRAY
|
||||
- 1
|
||||
* - Atom::BORDER
|
||||
- 2
|
||||
- Atom::TEMPLATE
|
||||
- 2
|
||||
- Atom::MAP_HASH
|
||||
- 2
|
||||
* - Atom::ATOMIC
|
||||
* - AtomVec::PER_ATOM
|
||||
- 0
|
||||
- Atom::MAP_YES
|
||||
- 3
|
||||
* - Atom::MOLECULAR
|
||||
- 1
|
||||
- AtomVec::PER_ATOM
|
||||
- 0
|
||||
* - Atom::TEMPLATE
|
||||
- 2
|
||||
- AtomVec::PER_TYPE
|
||||
- 1
|
||||
- Atom::MAP_YES
|
||||
- 3
|
||||
|
||||
Old:
|
||||
|
||||
@ -306,7 +307,7 @@ Simplify customized error messages
|
||||
|
||||
Aided by features of the bundled {fmt} library, error messages now
|
||||
can have a variable number of arguments and the string will be interpreted
|
||||
as a {fmt} style format string so that custom error messages can be
|
||||
as a {fmt} style format string so that error messages can be
|
||||
easily customized without having to use temporary buffers and ``sprintf()``.
|
||||
Example:
|
||||
|
||||
@ -332,7 +333,7 @@ Use of "override" instead of "virtual"
|
||||
|
||||
.. versionchanged:: 17Feb2022
|
||||
|
||||
Since LAMMPS requires C++11 we switched to use the "override" keyword
|
||||
Since LAMMPS requires C++11, we switched to use the "override" keyword
|
||||
instead of "virtual" to indicate polymorphism in derived classes. This
|
||||
allows the C++ compiler to better detect inconsistencies when an
|
||||
override is intended or not. Please note that "override" has to be
|
||||
@ -370,7 +371,7 @@ Simplified function names for forward and reverse communication
|
||||
|
||||
.. versionchanged:: 24Mar2022
|
||||
|
||||
Rather then using the function name to distinguish between the different
|
||||
Rather than using the function name to distinguish between the different
|
||||
forward and reverse communication functions for styles, LAMMPS now uses
|
||||
the type of the "this" pointer argument.
|
||||
|
||||
|
||||
@ -622,7 +622,7 @@ classes:
|
||||
of a dense, symmetric, real matrix.
|
||||
|
||||
#. The "PEigenDense" class only calculates the principal eigenvalue
|
||||
(ie. the largest or smallest eigenvalue), and its corresponding
|
||||
(i.e. the largest or smallest eigenvalue), and its corresponding
|
||||
eigenvector. However it is much more efficient than "Jacobi" when
|
||||
applied to large matrices (larger than 13x13). PEigenDense also can
|
||||
understand complex-valued Hermitian matrices.
|
||||
|
||||
@ -74,8 +74,7 @@ The next method we need to implement is ``setmask()``:
|
||||
|
||||
Here the we specify which methods of the fix should be called during
|
||||
:doc:`execution of a timestep <Developer_flow>`. The constant
|
||||
``END_OF_STEP`` corresponds to the ``end_of_step()`` method. The most
|
||||
important available methods that are called during a timestep.
|
||||
``END_OF_STEP`` corresponds to the ``end_of_step()`` method.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
@ -127,7 +126,7 @@ there is no need to inherit from it directly.
|
||||
The code above computes average velocity for all particles in the
|
||||
simulation. Yet you have one unused parameter in fix call from the
|
||||
script: ``group_name``. This parameter specifies the group of atoms
|
||||
used in the fix. So we should compute average for all particles in the
|
||||
used in the fix. So we should compute the average for all particles in the
|
||||
simulation only if ``group_name == "all"``, but it can be any group.
|
||||
The group membership information of an atom is contained in the *mask*
|
||||
property of an atom and the bit corresponding to a given group is
|
||||
@ -142,7 +141,7 @@ stored in the groupbit variable which is defined in Fix base class:
|
||||
}
|
||||
|
||||
Class Atom encapsulates atoms positions, velocities, forces, etc. Users
|
||||
can access them using particle index. Note, that particle indexes are
|
||||
can access them using the particle index. Note, that particle indexes are
|
||||
usually changed every few timesteps because of neighbor list rebuilds
|
||||
and spatial sorting (to improve cache efficiency).
|
||||
|
||||
@ -154,8 +153,8 @@ this situation there are several methods which should be implemented:
|
||||
- ``double memory_usage()``: return how much memory the fix uses (optional)
|
||||
- ``void grow_arrays(int)``: do reallocation of the per-particle arrays in your fix
|
||||
- ``void copy_arrays(int i, int j, int delflag)``: copy i-th per-particle
|
||||
information to j-th. Used when atom sorting is performed. if delflag is set
|
||||
and atom j owns a body, move the body information to atom i.
|
||||
information to j-th particle position. Used when atom sorting is performed.
|
||||
if delflag is set and atom j owns a body, move the body information to atom i.
|
||||
- ``void set_arrays(int i)``: sets i-th particle related information to zero
|
||||
|
||||
Note, that if your class implements these methods, it must add calls of
|
||||
@ -230,11 +229,11 @@ is just a bunch of template functions for allocating 1D and 2D
|
||||
arrays. So you need to add include ``memory.h`` to have access to them.
|
||||
|
||||
Finally, if you need to write/read some global information used in
|
||||
your fix to the restart file, you might do it by setting flag
|
||||
``restart_global = 1`` in the constructor and implementing methods void
|
||||
``write_restart(FILE *fp)`` and ``void restart(char *buf)``.
|
||||
your fix to the restart file, you might do it by setting the flag
|
||||
``restart_global = 1`` in the constructor and implementing methods
|
||||
``void write_restart(FILE *fp)`` and ``void restart(char *buf)``.
|
||||
If, in addition, you want to write the per-atom property to restart
|
||||
files additional settings and functions are needed:
|
||||
files then these additional settings and functions are needed:
|
||||
|
||||
- a fix flag indicating this needs to be set ``restart_peratom = 1;``
|
||||
- ``atom->add_callback()`` and ``atom->delete_callback()`` must be called
|
||||
|
||||
@ -371,9 +371,9 @@ but moving this to a separate function allows users to change global
|
||||
settings like the default cutoff without having to reissue all
|
||||
pair_coeff commands or re-read the ``Pair Coeffs`` sections from the
|
||||
data file. In the ``settings()`` function, also the arrays for storing
|
||||
parameters, to define cutoffs, track with pairs of parameters have been
|
||||
explicitly set are allocated and, if needed, initialized. In this case,
|
||||
the memory allocation and initialization is moved to a function
|
||||
parameters, to define cutoffs, track which pairs of parameters have been
|
||||
explicitly set and allocated and, if needed, initialized. In this case,
|
||||
the memory allocation and initialization are moved to a function
|
||||
``allocate()``.
|
||||
|
||||
.. code-block:: c++
|
||||
@ -588,17 +588,20 @@ loop atoms are also initialized.
|
||||
jnum = numneigh[i];
|
||||
|
||||
The inner loop (index *j*) processes the neighbor lists. The neighbor
|
||||
list code encodes in the upper 2 bits whether a pair is a regular pair
|
||||
of neighbor (= 0) or a pair of 1-2 (= 1), 1-3 (= 2), or 1-4 (= 3)
|
||||
:doc:`"special" neighbor <special_bonds>`. The ``sbmask()`` inline
|
||||
function extracts those bits and converts them into a number. This
|
||||
number is used to look up the corresponding scaling factor for the
|
||||
non-bonded interaction from the ``force->special_lj`` array and stores
|
||||
it in the `factor_lj` variable. Due to the additional bits, the value
|
||||
of *j* would be out of range when accessing data from per-atom arrays,
|
||||
so we apply the NEIGHMASK constant with a bit-wise and operation to mask
|
||||
them out. This step *must* be done, even if a pair style does not use
|
||||
special bond scaling of forces and energies to avoid segmentation faults.
|
||||
list code encodes extra information using the upper 3 bits. The 2
|
||||
highest bits encode whether a pair is a regular pair of neighbor (= 0)
|
||||
or a pair of 1-2 (= 1), 1-3 (= 2), or 1-4 (= 3) :doc:`"special" neighbor
|
||||
<special_bonds>`. The next highest bit encodes whether the pair stores
|
||||
data in a ``fix neigh/history`` instance (an undocumented internal fix
|
||||
style). The ``sbmask()`` inline function extracts those bits and
|
||||
converts them into a number. This number is used to look up the
|
||||
corresponding scaling factor for the non-bonded interaction from the
|
||||
``force->special_lj`` array and stores it in the `factor_lj` variable.
|
||||
Due to the additional bits, the value of *j* would be out of range when
|
||||
accessing data from per-atom arrays, so we apply the NEIGHMASK constant
|
||||
with a bit-wise and operation to mask them out. This step *must* be
|
||||
done, even if a pair style does not use special bond scaling of forces
|
||||
and energies to avoid segmentation faults.
|
||||
|
||||
With the corrected *j* index, it is now possible to compute the distance
|
||||
of the pair. For efficiency reasons, the square root is only taken
|
||||
@ -891,7 +894,7 @@ through *multiple* :doc:`pair_coeff commands <pair_coeff>`. Pair styles
|
||||
that require a single "pair_coeff \* \*" command line are not compatible
|
||||
with reading their parameters from data files. For pair styles like
|
||||
*born/gauss* that do support writing to data files, the potential
|
||||
parameters will be read from the data file, if present and
|
||||
parameters will be read from the data file, if present, and
|
||||
:doc:`pair_coeff commands <pair_coeff>` may not be needed.
|
||||
|
||||
The member variable ``writedata`` should be set to 1 in the constructor,
|
||||
|
||||
@ -39,7 +39,8 @@ figure out your physics or numerical mistakes, like choosing too big a
|
||||
timestep, specifying erroneous force field coefficients, or putting 2
|
||||
atoms on top of each other! If you run into errors that LAMMPS
|
||||
does not catch that you think it should flag, please send an email to
|
||||
the `developers <https://www.lammps.org/authors.html>`_.
|
||||
the `developers <https://www.lammps.org/authors.html>`_ or create an new
|
||||
topic on the dedicated `MatSci forum section <https://matsci.org/lammps/>`_.
|
||||
|
||||
If you get an error message about an invalid command in your input
|
||||
script, you can determine what command is causing the problem by
|
||||
|
||||
@ -96,13 +96,13 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
|
||||
are too far apart to make a valid angle.
|
||||
|
||||
*Angle atoms %d %d %d missing on proc %d at step %ld*
|
||||
One or more of 3 atoms needed to compute a particular angle are
|
||||
One or more of three atoms needed to compute a particular angle are
|
||||
missing on this processor. Typically this is because the pairwise
|
||||
cutoff is set too short or the angle has blown apart and an atom is
|
||||
too far away.
|
||||
|
||||
*Angle atoms missing on proc %d at step %ld*
|
||||
One or more of 3 atoms needed to compute a particular angle are
|
||||
One or more of three atoms needed to compute a particular angle are
|
||||
missing on this processor. Typically this is because the pairwise
|
||||
cutoff is set too short or the angle has blown apart and an atom is
|
||||
too far away.
|
||||
@ -1932,7 +1932,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
|
||||
Self-explanatory.
|
||||
|
||||
*Compute chunk/atom fix array is accessed out-of-range*
|
||||
the index for the array is out of bounds.
|
||||
The index for the array is out of bounds.
|
||||
|
||||
*Compute chunk/atom fix does not calculate a per-atom array*
|
||||
Self-explanatory.
|
||||
@ -6073,9 +6073,9 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
|
||||
*New atom IDs exceed maximum allowed ID*
|
||||
See the setting for tagint in the src/lmptype.h file.
|
||||
|
||||
*New bond exceeded bonds per atom in create_bonds*
|
||||
See the read_data command for info on using the "extra/bond/per/atom"
|
||||
keyword to allow for additional bonds to be formed
|
||||
*New bond exceeded bonds per atom in create\_bonds*
|
||||
See the read_data command for info on using the "extra/bond/per/atom"
|
||||
keyword to allow for additional bonds to be formed
|
||||
|
||||
*New bond exceeded bonds per atom in fix bond/create*
|
||||
See the read_data command for info on using the "extra/bond/per/atom"
|
||||
@ -7310,12 +7310,12 @@ keyword to allow for additional bonds to be formed
|
||||
atom has moved too far.
|
||||
|
||||
*Restrain atoms %d %d %d missing on proc %d at step %ld*
|
||||
The 3 atoms in a restrain angle specified by the fix restrain
|
||||
The three atoms in a restrain angle specified by the fix restrain
|
||||
command are not all accessible to a processor. This probably means an
|
||||
atom has moved too far.
|
||||
|
||||
*Restrain atoms %d %d missing on proc %d at step %ld*
|
||||
The 2 atoms in a restrain bond specified by the fix restrain
|
||||
The two atoms in a restrain bond specified by the fix restrain
|
||||
command are not all accessible to a processor. This probably means an
|
||||
atom has moved too far.
|
||||
|
||||
@ -7406,7 +7406,7 @@ keyword to allow for additional bonds to be formed
|
||||
*Shake angles have different bond types*
|
||||
All 3-atom angle-constrained SHAKE clusters specified by the fix shake
|
||||
command that are the same angle type, must also have the same bond
|
||||
types for the 2 bonds in the angle.
|
||||
types for the two bonds in the angle.
|
||||
|
||||
*Shake atoms %d %d %d %d missing on proc %d at step %ld*
|
||||
The 4 atoms in a single shake cluster specified by the fix shake
|
||||
@ -7414,12 +7414,12 @@ keyword to allow for additional bonds to be formed
|
||||
an atom has moved too far.
|
||||
|
||||
*Shake atoms %d %d %d missing on proc %d at step %ld*
|
||||
The 3 atoms in a single shake cluster specified by the fix shake
|
||||
The three atoms in a single shake cluster specified by the fix shake
|
||||
command are not all accessible to a processor. This probably means
|
||||
an atom has moved too far.
|
||||
|
||||
*Shake atoms %d %d missing on proc %d at step %ld*
|
||||
The 2 atoms in a single shake cluster specified by the fix shake
|
||||
The two atoms in a single shake cluster specified by the fix shake
|
||||
command are not all accessible to a processor. This probably means
|
||||
an atom has moved too far.
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
||||
adjusted to match the user-specified accuracy.
|
||||
|
||||
*Angle atoms missing at step %ld*
|
||||
One or more of 3 atoms needed to compute a particular angle are
|
||||
One or more of three atoms needed to compute a particular angle are
|
||||
missing on this processor. Typically this is because the pairwise
|
||||
cutoff is set too short or the angle has blown apart and an atom is
|
||||
too far away.
|
||||
@ -233,7 +233,7 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
||||
style.
|
||||
|
||||
*Fix langevin gjf using random gaussians is not implemented with kokkos*
|
||||
This will most likely cause errors in kinetic fluctuations.
|
||||
This will most likely cause errors in kinetic fluctuations.
|
||||
|
||||
*Fix property/atom mol or charge w/out ghost communication*
|
||||
A model typically needs these properties defined for ghost atoms.
|
||||
@ -324,7 +324,7 @@ This will most likely cause errors in kinetic fluctuations.
|
||||
Specifically they are further apart than half a periodic box length.
|
||||
Or they are more than a box length apart in a non-periodic dimension.
|
||||
This is usually due to the initial data file not having correct image
|
||||
flags for the 2 atoms in a bond that straddles a periodic boundary.
|
||||
flags for the two atoms in a bond that straddles a periodic boundary.
|
||||
They should be different by 1 in that case. This is a warning because
|
||||
inconsistent image flags will not cause problems for dynamics or most
|
||||
LAMMPS simulations. However they can cause problems when such atoms
|
||||
|
||||
@ -1077,7 +1077,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 21 20 40 19
|
||||
|
||||
* - Style
|
||||
- Type
|
||||
@ -1167,7 +1167,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 20 19 11 11 21 18
|
||||
|
||||
* - Style
|
||||
- Type
|
||||
|
||||
@ -43,7 +43,7 @@ have potential energy function of the form
|
||||
}} \!\!\!\!\!\!\!\!+ \!\!\sum_{special}\! E_s + \!\!\!\!\sum_{residues} \!\!\!{\scriptstyle\mathrm{CMAP}(\phi,\psi)}
|
||||
|
||||
|
||||
The terms are computed by bond styles (relationship between 2 atoms),
|
||||
The terms are computed by bond styles (relationship between two atoms),
|
||||
angle styles (between 3 atoms) , dihedral/improper styles (between 4
|
||||
atoms), pair styles (non-covalently bonded pair interactions) and
|
||||
special bonds. The CMAP term (see :doc:`fix cmap <fix_cmap>` command for
|
||||
@ -73,7 +73,7 @@ with additional switching or shifting functions that ramp the energy
|
||||
and/or force smoothly to zero between an inner :math:`(a)` and outer
|
||||
:math:`(b)` cutoff. The older styles with *charmm* (not *charmmfsw* or
|
||||
*charmmfsh*\ ) in their name compute the LJ and Coulombic interactions
|
||||
with an energy switching function (esw) S(r) which ramps the energy
|
||||
with an energy switching function (esw) :math:`S(r)` which ramps the energy
|
||||
smoothly to zero between the inner and outer cutoff. This can cause
|
||||
irregularities in pairwise forces (due to the discontinuous second
|
||||
derivative of energy at the boundaries of the switching region), which
|
||||
|
||||
@ -178,7 +178,7 @@ the pairs. This can be done by using the *bias* keyword of the
|
||||
To maintain the correct polarizability of the core/shell pairs, the
|
||||
kinetic energy of the internal motion shall remain nearly constant.
|
||||
Therefore the choice of spring force and mass ratio need to ensure
|
||||
much faster relative motion of the 2 atoms within the core/shell pair
|
||||
much faster relative motion of the two atoms within the core/shell pair
|
||||
than their center-of-mass velocity. This allows the shells to
|
||||
effectively react instantaneously to the electrostatic environment and
|
||||
limits energy transfer to or from the core/shell oscillators.
|
||||
|
||||
@ -36,7 +36,7 @@ the context of your application.
|
||||
steps, invoke the command, etc.
|
||||
|
||||
In this scenario, the other code can be called as a library, as in
|
||||
1., or it could be a stand-alone code, invoked by a system() call
|
||||
1., or it could be a stand-alone code, invoked by a ``system()`` call
|
||||
made by the command (assuming your parallel machine allows one or
|
||||
more processors to start up another program). In the latter case the
|
||||
stand-alone code could communicate with LAMMPS through files that the
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
Calculate diffusion coefficients
|
||||
================================
|
||||
|
||||
The diffusion coefficient D of a material can be measured in at least
|
||||
2 ways using various options in LAMMPS. See the examples/DIFFUSE
|
||||
The diffusion coefficient :math:`D` of a material can be measured in at least
|
||||
2 ways using various options in LAMMPS. See the ``examples/DIFFUSE``
|
||||
directory for scripts that implement the 2 methods discussed here for
|
||||
a simple Lennard-Jones fluid model.
|
||||
|
||||
@ -12,7 +12,7 @@ of the MSD versus time is proportional to the diffusion coefficient.
|
||||
The instantaneous MSD values can be accumulated in a vector via the
|
||||
:doc:`fix vector <fix_vector>` command, and a line fit to the vector to
|
||||
compute its slope via the :doc:`variable slope <variable>` function, and
|
||||
thus extract D.
|
||||
thus extract :math:`D`.
|
||||
|
||||
The second method is to measure the velocity auto-correlation function
|
||||
(VACF) of the system, via the :doc:`compute vacf <compute_vacf>`
|
||||
@ -20,4 +20,4 @@ command. The time-integral of the VACF is proportional to the
|
||||
diffusion coefficient. The instantaneous VACF values can be
|
||||
accumulated in a vector via the :doc:`fix vector <fix_vector>` command,
|
||||
and time integrated via the :doc:`variable trap <variable>` function,
|
||||
and thus extract D.
|
||||
and thus extract :math:`D`.
|
||||
|
||||
@ -4,21 +4,27 @@ Calculate elastic constants
|
||||
Elastic constants characterize the stiffness of a material. The formal
|
||||
definition is provided by the linear relation that holds between the
|
||||
stress and strain tensors in the limit of infinitesimal deformation.
|
||||
In tensor notation, this is expressed as s_ij = C_ijkl \* e_kl, where
|
||||
the repeated indices imply summation. s_ij are the elements of the
|
||||
symmetric stress tensor. e_kl are the elements of the symmetric strain
|
||||
tensor. C_ijkl are the elements of the fourth rank tensor of elastic
|
||||
constants. In three dimensions, this tensor has 3\^4=81 elements. Using
|
||||
Voigt notation, the tensor can be written as a 6x6 matrix, where C_ij
|
||||
is now the derivative of s_i w.r.t. e_j. Because s_i is itself a
|
||||
derivative w.r.t. e_i, it follows that C_ij is also symmetric, with at
|
||||
most 7\*6/2 = 21 distinct elements.
|
||||
In tensor notation, this is expressed as
|
||||
|
||||
.. math::
|
||||
|
||||
s_{ij} = C_{ijkl} e_{kl}
|
||||
|
||||
where
|
||||
the repeated indices imply summation. :math:`s_{ij}` are the elements of the
|
||||
symmetric stress tensor. :math:`e_{kl}` are the elements of the symmetric strain
|
||||
tensor. :math:`C_{ijkl}` are the elements of the fourth rank tensor of elastic
|
||||
constants. In three dimensions, this tensor has :math:`3^4=81` elements. Using
|
||||
Voigt notation, the tensor can be written as a 6x6 matrix, where :math:`C_{ij}`
|
||||
is now the derivative of :math:`s_i` w.r.t. :math:`e_j`. Because :math:`s_i` is itself a
|
||||
derivative w.r.t. :math:`e_i`, it follows that :math:`C_{ij}` is also symmetric, with at
|
||||
most :math:`\frac{7 \times 6}{2}` = 21 distinct elements.
|
||||
|
||||
At zero temperature, it is easy to estimate these derivatives by
|
||||
deforming the simulation box in one of the six directions using the
|
||||
:doc:`change_box <change_box>` command and measuring the change in the
|
||||
stress tensor. A general-purpose script that does this is given in the
|
||||
examples/ELASTIC directory described on the :doc:`Examples <Examples>`
|
||||
``examples/ELASTIC`` directory described on the :doc:`Examples <Examples>`
|
||||
doc page.
|
||||
|
||||
Calculating elastic constants at finite temperature is more
|
||||
@ -33,7 +39,7 @@ the :doc:`compute born/matrix <compute_born_matrix>` command,
|
||||
which works for any bonded or non-bonded potential in LAMMPS.
|
||||
The most expensive part of the calculation is the sampling of
|
||||
the stress fluctuations. Several examples of this method are
|
||||
provided in the examples/ELASTIC_T/BORN_MATRIX directory
|
||||
provided in the ``examples/ELASTIC_T/BORN_MATRIX`` directory
|
||||
described on the :doc:`Examples <Examples>` doc page.
|
||||
|
||||
A second way is to measure
|
||||
@ -43,7 +49,7 @@ the systematic and statistical errors in this method, the magnitude of
|
||||
the deformation must be chosen judiciously, and care must be taken to
|
||||
fully equilibrate the deformed cell before sampling the stress
|
||||
tensor. An example of this method is provided in the
|
||||
examples/ELASTIC_T/DEFORMATION directory
|
||||
``examples/ELASTIC_T/DEFORMATION`` directory
|
||||
described on the :doc:`Examples <Examples>` doc page.
|
||||
|
||||
Another approach is to sample the triclinic cell fluctuations
|
||||
|
||||
@ -1,20 +1,22 @@
|
||||
Calculate thermal conductivity
|
||||
==============================
|
||||
|
||||
The thermal conductivity kappa of a material can be measured in at
|
||||
least 4 ways using various options in LAMMPS. See the examples/KAPPA
|
||||
The thermal conductivity :math:`\kappa` of a material can be measured in at
|
||||
least 4 ways using various options in LAMMPS. See the ``examples/KAPPA``
|
||||
directory for scripts that implement the 4 methods discussed here for
|
||||
a simple Lennard-Jones fluid model. Also, see the :doc:`Howto viscosity <Howto_viscosity>` page for an analogous discussion
|
||||
for viscosity.
|
||||
|
||||
The thermal conductivity tensor kappa is a measure of the propensity
|
||||
The thermal conductivity tensor :math:`\mathbf{\kappa}` is a measure of the propensity
|
||||
of a material to transmit heat energy in a diffusive manner as given
|
||||
by Fourier's law
|
||||
|
||||
J = -kappa grad(T)
|
||||
.. math::
|
||||
|
||||
where J is the heat flux in units of energy per area per time and
|
||||
grad(T) is the spatial gradient of temperature. The thermal
|
||||
J = -\kappa \cdot \text{grad}(T)
|
||||
|
||||
where :math:`J` is the heat flux in units of energy per area per time and
|
||||
:math:`\text{grad}(T)` is the spatial gradient of temperature. The thermal
|
||||
conductivity thus has units of energy per distance per time per degree
|
||||
K and is often approximated as an isotropic quantity, i.e. as a
|
||||
scalar.
|
||||
@ -49,7 +51,7 @@ details.
|
||||
|
||||
The fourth method is based on the Green-Kubo (GK) formula which
|
||||
relates the ensemble average of the auto-correlation of the heat flux
|
||||
to kappa. The heat flux can be calculated from the fluctuations of
|
||||
to :math:`\kappa`. The heat flux can be calculated from the fluctuations of
|
||||
per-atom potential and kinetic energies and per-atom stress tensor in
|
||||
a steady-state equilibrated simulation. This is in contrast to the
|
||||
two preceding non-equilibrium methods, where energy flows continuously
|
||||
|
||||
@ -387,6 +387,8 @@ record a separate log for each run attempt by using the command
|
||||
at the beginning of an input file. That would record logs to files
|
||||
``logfile-1.txt``, ``logfile-2.txt``, and so on for successive runs.
|
||||
|
||||
.. _snapshot_viewer:
|
||||
|
||||
Snapshot Image Viewer
|
||||
---------------------
|
||||
|
||||
@ -533,13 +535,40 @@ keyboard, the first of those entries is chosen.
|
||||
|
||||
If the word under the cursor is a file, then additionally the context
|
||||
menu has an entry to open the file in a read-only text viewer window.
|
||||
This is a convenient way to view the contents of files that are
|
||||
referenced in the input. The file viewer also supports on-the-fly
|
||||
If the file is a LAMMPS restart file, instead the menu entry offers to
|
||||
:ref:`inspect the restart <inspect_restart>`.
|
||||
|
||||
The text viewer is a convenient way to view the contents of files that
|
||||
are referenced in the input. The file viewer also supports on-the-fly
|
||||
decompression based on the file name suffix in a :ref:`similar fashion
|
||||
as available with LAMMPS <gzip>`. If the necessary decompression
|
||||
program is missing or the file cannot be decompressed, the viewer window
|
||||
will contain a corresponding message.
|
||||
|
||||
.. _inspect_restart:
|
||||
|
||||
Inspecting a Restart file
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 1.6
|
||||
|
||||
When LAMMPS-GUI is asked to "Inspect a Restart", it will read the
|
||||
restart file into a LAMMPS instance and then open three different
|
||||
windows. The first window is a text viewer with the output of an
|
||||
:doc:`info command <info>` with system information stored in the
|
||||
restart. The second window is text viewer containing a data file
|
||||
generated with a :doc:`write_data command <write_data>`. The third
|
||||
window is a :ref:`Snapshot Image Viewer <snapshot_viewer>` containing a
|
||||
visualization of the system in the restart.
|
||||
|
||||
If the restart file is larger than 250 MBytes, a dialog will ask
|
||||
for confirmation before continuing, since large restart files
|
||||
may require large amounts of RAM since the entire system must
|
||||
be read into RAM. Thus restart file for large simulations that
|
||||
have been run on an HPC cluster may overload a laptop or local
|
||||
workstation. The ``Show Details...`` button will display a rough
|
||||
estimate of the additional memory required.
|
||||
|
||||
Menu
|
||||
----
|
||||
|
||||
@ -559,6 +588,7 @@ The ``File`` menu offers the usual options:
|
||||
- ``New`` clears the current buffer and resets the file name to ``*unknown*``
|
||||
- ``Open`` opens a dialog to select a new file for editing in the *Editor*
|
||||
- ``View`` opens a dialog to select a file for viewing in a *separate* window (read-only) with support for on-the-fly decompression as explained above.
|
||||
- ``Inspect restart`` opens a dialog to select a file. If that file is a :doc:`LAMMPS restart <write_restart>` three windows with :ref:`information about the file are opened <inspect_restart>`.
|
||||
- ``Save`` saves the current file; if the file name is ``*unknown*``
|
||||
a dialog will open to select a new file name
|
||||
- ``Save As`` opens a dialog to select and new file name (and folder, if
|
||||
|
||||
@ -367,5 +367,4 @@ And execute the simulation with the following:
|
||||
|
||||
.. _OPLSAA96:
|
||||
|
||||
**(OPLS-AA)** Jorgensen, Maxwell, Tirado-Rives, J Am Chem Soc,
|
||||
118(45), 11225-11236 (1996).
|
||||
**(OPLS-AA)** Jorgensen, Maxwell, Tirado-Rives, J Am Chem Soc, 118(45), 11225-11236 (1996).
|
||||
|
||||
@ -44,7 +44,7 @@ For large numbers of independent simulations, you can use
|
||||
:doc:`variables <variable>` and the :doc:`next <next>` and
|
||||
:doc:`jump <jump>` commands to loop over the same input script
|
||||
multiple times with different settings. For example, this
|
||||
script, named in.polymer
|
||||
script, named ``in.polymer``
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
@ -57,7 +57,7 @@ script, named in.polymer
|
||||
next d
|
||||
jump in.polymer
|
||||
|
||||
would run 8 simulations in different directories, using a data.polymer
|
||||
would run 8 simulations in different directories, using a ``data.polymer``
|
||||
file in each directory. The same concept could be used to run the
|
||||
same system at 8 different temperatures, using a temperature variable
|
||||
and storing the output in different log and dump files, for example
|
||||
@ -83,10 +83,10 @@ partition of processors. LAMMPS can be run on multiple partitions via
|
||||
the :doc:`-partition command-line switch <Run_options>`.
|
||||
|
||||
In the last 2 examples, if LAMMPS were run on 3 partitions, the same
|
||||
scripts could be used if the "index" and "loop" variables were
|
||||
scripts could be used if the ``index`` and ``loop`` variables were
|
||||
replaced with *universe*\ -style variables, as described in the
|
||||
:doc:`variable <variable>` command. Also, the "next t" and "next a"
|
||||
commands would need to be replaced with a single "next a t" command.
|
||||
:doc:`variable <variable>` command. Also, the :lammps:`next t` and :lammps:`next a`
|
||||
commands would need to be replaced with a single :lammps:`next a t` command.
|
||||
With these modifications, the 8 simulations of each script would run
|
||||
on the 3 partitions one after the other until all were finished.
|
||||
Initially, 3 simulations would be started simultaneously, one on each
|
||||
|
||||
@ -26,8 +26,8 @@ scripts are based on. If that script had the line
|
||||
|
||||
restart 50 tmp.restart
|
||||
|
||||
added to it, it would produce 2 binary restart files (tmp.restart.50
|
||||
and tmp.restart.100) as it ran.
|
||||
added to it, it would produce two binary restart files (``tmp.restart.50``
|
||||
and ``tmp.restart.100``) as it ran.
|
||||
|
||||
This script could be used to read the first restart file and re-run the
|
||||
last 50 timesteps:
|
||||
@ -47,21 +47,21 @@ last 50 timesteps:
|
||||
run 50
|
||||
|
||||
Note that the following commands do not need to be repeated because
|
||||
their settings are included in the restart file: *units, atom_style,
|
||||
special_bonds, pair_style, bond_style*. However, these commands do
|
||||
their settings are included in the restart file: :lammps:`units`, :lammps:`atom_style`,
|
||||
:lammps:`special_bonds`, :lammps:`pair_style`, :lammps:`bond_style`. However, these commands do
|
||||
need to be used, since their settings are not in the restart file:
|
||||
*neighbor, fix, timestep*\ .
|
||||
:lammps:`neighbor`, :lammps:`fix`, :lammps:`timestep`.
|
||||
|
||||
If you actually use this script to perform a restarted run, you will
|
||||
notice that the thermodynamic data match at step 50 (if you also put a
|
||||
"thermo 50" command in the original script), but do not match at step
|
||||
:lammps:`thermo 50` command in the original script), but do not match at step
|
||||
100. This is because the :doc:`fix langevin <fix_langevin>` command
|
||||
uses random numbers in a way that does not allow for perfect restarts.
|
||||
|
||||
As an alternate approach, the restart file could be converted to a data
|
||||
file as follows:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
.. code-block:: bash
|
||||
|
||||
lmp_g++ -r tmp.restart.50 tmp.restart.data
|
||||
|
||||
@ -89,8 +89,8 @@ Then, this script could be used to re-run the last 50 steps:
|
||||
reset_timestep 50
|
||||
run 50
|
||||
|
||||
Note that nearly all the settings specified in the original *in.chain*
|
||||
script must be repeated, except the *pair_coeff* and *bond_coeff*
|
||||
Note that nearly all the settings specified in the original ``in.chain``
|
||||
script must be repeated, except the :lammps:`pair_coeff` and :lammps:`bond_coeff`
|
||||
commands, since the new data file lists the force field coefficients.
|
||||
Also, the :doc:`reset_timestep <reset_timestep>` command is used to tell
|
||||
LAMMPS the current timestep. This value is stored in restart files, but
|
||||
|
||||
@ -15,7 +15,6 @@ details of the system, or develop new capabilities. For instance, the numerics
|
||||
associated with calculating gradients, reproducing kernels, etc. are separated
|
||||
into distinct classes to simplify the development of new integration schemes
|
||||
which can call these calculations. Additional numerical details can be found in
|
||||
:ref:`(Palermo) <howto_rheo_palermo>` and
|
||||
:ref:`(Clemmer) <howto_rheo_clemmer>`. Example movies illustrating some of these
|
||||
capabilities are found at https://www.lammps.org/movies.html#rheopackage.
|
||||
|
||||
@ -108,10 +107,6 @@ criteria for creating/deleting a bond or altering force calculations).
|
||||
|
||||
----------
|
||||
|
||||
.. _howto_rheo_palermo:
|
||||
|
||||
**(Palermo)** Palermo, Wolf, Clemmer, O'Connor, in preparation.
|
||||
|
||||
.. _howto_rheo_clemmer:
|
||||
|
||||
**(Clemmer)** Clemmer, Pierce, O'Connor, Nevins, Jones, Lechman, Tencer, Appl. Math. Model., 130, 310-326 (2024).
|
||||
|
||||
@ -2,7 +2,7 @@ SPC water model
|
||||
===============
|
||||
|
||||
The SPC water model specifies a 3-site rigid water molecule with
|
||||
charges and Lennard-Jones parameters assigned to each of the 3 atoms.
|
||||
charges and Lennard-Jones parameters assigned to each of the three atoms.
|
||||
In LAMMPS the :doc:`fix shake <fix_shake>` command can be used to hold
|
||||
the two O-H bonds and the H-O-H angle rigid. A bond style of
|
||||
*harmonic* and an angle style of *harmonic* or *charmm* should also be
|
||||
@ -33,7 +33,7 @@ the partial charge assignments change:
|
||||
| O charge = -0.8476
|
||||
| H charge = 0.4238
|
||||
|
||||
See the :ref:`(Berendsen) <howto-Berendsen>` reference for more details on both
|
||||
See the :ref:`(Berendsen2) <howto-Berendsen>` reference for more details on both
|
||||
the SPC and SPC/E models.
|
||||
|
||||
Below is the code for a LAMMPS input file and a molecule file
|
||||
@ -149,4 +149,4 @@ Wikipedia also has a nice article on `water models <https://en.wikipedia.org/wik
|
||||
|
||||
.. _howto-Berendsen:
|
||||
|
||||
**(Berendsen)** Berendsen, Grigera, Straatsma, J Phys Chem, 91, 6269-6271 (1987).
|
||||
**(Berendsen2)** Berendsen, Grigera, Straatsma, J Phys Chem, 91, 6269-6271 (1987).
|
||||
|
||||
@ -341,7 +341,12 @@ data files and obtain a list of dictionaries.
|
||||
|
||||
.. code-block::
|
||||
|
||||
[{'timestep': 0, 'pe': -6.773368053259247, 'ke': 4.498875000000003}, {'timestep': 50, 'pe': -4.80824944183232, 'ke': 2.5257981827119798}, {'timestep': 100, 'pe': -4.787560887558151, 'ke': 2.5062598821985103}, {'timestep': 150, 'pe': -4.747103368600548, 'ke': 2.46609592554545}, {'timestep': 200, 'pe': -4.750905285854413, 'ke': 2.4701136792591694}, {'timestep': 250, 'pe': -4.777432735632181, 'ke': 2.4962152903997175}]
|
||||
[{'timestep': 0, 'pe': -6.773368053259247, 'ke': 4.498875000000003},
|
||||
{'timestep': 50, 'pe': -4.80824944183232, 'ke': 2.5257981827119798},
|
||||
{'timestep': 100, 'pe': -4.787560887558151, 'ke': 2.5062598821985103},
|
||||
{'timestep': 150, 'pe': -4.747103368600548, 'ke': 2.46609592554545},
|
||||
{'timestep': 200, 'pe': -4.750905285854413, 'ke': 2.4701136792591694},
|
||||
{'timestep': 250, 'pe': -4.777432735632181, 'ke': 2.4962152903997175}]
|
||||
|
||||
Line Delimited JSON (LD-JSON)
|
||||
-----------------------------
|
||||
@ -352,7 +357,8 @@ Each line represents one JSON object.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix extra all print 50 """{"timestep": $(step), "pe": $(pe), "ke": $(ke)}""" title "" file output.json screen no
|
||||
fix extra all print 50 """{"timestep": $(step), "pe": $(pe), "ke": $(ke)}""" &
|
||||
title "" file output.json screen no
|
||||
|
||||
.. code-block:: json
|
||||
:caption: output.json
|
||||
|
||||
@ -3,7 +3,7 @@ TIP3P water model
|
||||
|
||||
The TIP3P water model as implemented in CHARMM :ref:`(MacKerell)
|
||||
<howto-tip3p>` specifies a 3-site rigid water molecule with charges and
|
||||
Lennard-Jones parameters assigned to each of the 3 atoms.
|
||||
Lennard-Jones parameters assigned to each of the three atoms.
|
||||
|
||||
A suitable pair style with cutoff Coulomb would be:
|
||||
|
||||
@ -32,9 +32,9 @@ optimized for a long-range Coulomb solver (e.g. Ewald or PPPM in LAMMPS)
|
||||
model (without fix shake) is desired, for rigid bonds/angles they are
|
||||
ignored.
|
||||
|
||||
.. list-table::
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 38 22 20 20
|
||||
|
||||
* - Parameter
|
||||
- TIP3P-CHARMM
|
||||
|
||||
@ -25,7 +25,7 @@ There are two ways to implement TIP4P water in LAMMPS:
|
||||
|
||||
This can be done with the following pair styles for Coulomb with a cutoff:
|
||||
|
||||
* :doc:`pair_style tip4p/cut <pair_lj_cut_tip4p>`
|
||||
* :doc:`pair_style tip4p/cut <pair_coul>`
|
||||
* :doc:`pair_style lj/cut/tip4p/cut <pair_lj_cut_tip4p>`
|
||||
|
||||
or these commands for a long-range Coulomb treatment:
|
||||
@ -70,9 +70,9 @@ parameters adjusted for use with a long-range Coulombic solver
|
||||
OM distance is specified in the :doc:`pair_style <pair_style>` command,
|
||||
not as part of the pair coefficients.
|
||||
|
||||
.. list-table::
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 36 19 13 15 17
|
||||
|
||||
* - Parameter
|
||||
- TIP4P (original)
|
||||
|
||||
@ -32,9 +32,9 @@ The table below lists the force field parameters (in real :doc:`units
|
||||
<Mahoney>` and the TIP5P-E model :ref:`(Rick) <Rick>` for use with a
|
||||
long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS).
|
||||
|
||||
.. list-table::
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 50 25 25
|
||||
|
||||
* - Parameter
|
||||
- TIP5P
|
||||
|
||||
@ -1,22 +1,24 @@
|
||||
Calculate viscosity
|
||||
===================
|
||||
|
||||
The shear viscosity eta of a fluid can be measured in at least 6 ways
|
||||
using various options in LAMMPS. See the examples/VISCOSITY directory
|
||||
The shear viscosity :math:`\eta` of a fluid can be measured in at least 6 ways
|
||||
using various options in LAMMPS. See the ``examples/VISCOSITY`` directory
|
||||
for scripts that implement the 5 methods discussed here for a simple
|
||||
Lennard-Jones fluid model and 1 method for SPC/E water model.
|
||||
Also, see the :doc:`page on calculating thermal conductivity <Howto_kappa>`
|
||||
for an analogous discussion for thermal conductivity.
|
||||
|
||||
Eta is a measure of the propensity of a fluid to transmit momentum in
|
||||
:math:`\eta` is a measure of the propensity of a fluid to transmit momentum in
|
||||
a direction perpendicular to the direction of velocity or momentum
|
||||
flow. Alternatively it is the resistance the fluid has to being
|
||||
sheared. It is given by
|
||||
|
||||
J = -eta grad(Vstream)
|
||||
.. math::
|
||||
|
||||
where J is the momentum flux in units of momentum per area per time.
|
||||
and grad(Vstream) is the spatial gradient of the velocity of the fluid
|
||||
J = -\eta \cdot \text{grad}(V_{\text{stream}})
|
||||
|
||||
where :math:`J` is the momentum flux in units of momentum per area per time.
|
||||
and :math:`\text{grad}(V_{\text{stream}})` is the spatial gradient of the velocity of the fluid
|
||||
moving in another direction, normal to the area through which the
|
||||
momentum flows. Viscosity thus has units of pressure-time.
|
||||
|
||||
@ -38,11 +40,11 @@ velocity to prevent the fluid from heating up.
|
||||
|
||||
In both cases, the velocity profile setup in the fluid by this
|
||||
procedure can be monitored by the :doc:`fix ave/chunk <fix_ave_chunk>`
|
||||
command, which determines grad(Vstream) in the equation above.
|
||||
E.g. the derivative in the y-direction of the Vx component of fluid
|
||||
motion or grad(Vstream) = dVx/dy. The Pxy off-diagonal component of
|
||||
command, which determines :math:`\text{grad}(V_{\text{stream}})` in the equation above.
|
||||
E.g. the derivative in the y-direction of the :math:`V_x` component of fluid
|
||||
motion or :math:`\text{grad}(V_{\text{stream}}) = \frac{\text{d} V_x}{\text{d} y}`. The :math:`P_{xy}` off-diagonal component of
|
||||
the pressure or stress tensor, as calculated by the :doc:`compute pressure <compute_pressure>` command, can also be monitored, which
|
||||
is the J term in the equation above. See the :doc:`Howto nemd <Howto_nemd>` page for details on NEMD simulations.
|
||||
is the :math:`J` term in the equation above. See the :doc:`Howto nemd <Howto_nemd>` page for details on NEMD simulations.
|
||||
|
||||
The third method is to perform a reverse non-equilibrium MD simulation
|
||||
using the :doc:`fix viscosity <fix_viscosity>` command which implements
|
||||
@ -55,7 +57,7 @@ See the :doc:`fix viscosity <fix_viscosity>` command for details.
|
||||
|
||||
The fourth method is based on the Green-Kubo (GK) formula which
|
||||
relates the ensemble average of the auto-correlation of the
|
||||
stress/pressure tensor to eta. This can be done in a fully
|
||||
stress/pressure tensor to :math:`\eta`. This can be done in a fully
|
||||
equilibrated simulation which is in contrast to the two preceding
|
||||
non-equilibrium methods, where momentum flows continuously through the
|
||||
simulation box.
|
||||
|
||||
@ -6,7 +6,7 @@ analyzed in a variety of ways.
|
||||
|
||||
LAMMPS snapshots are created by the :doc:`dump <dump>` command, which
|
||||
can create files in several formats. The native LAMMPS dump format is a
|
||||
text file (see "dump atom" or "dump custom") which can be visualized by
|
||||
text file (see :lammps:`dump atom` or :lammps:`dump custom`) which can be visualized by
|
||||
`several visualization tools <https://www.lammps.org/viz.html>`_ for MD
|
||||
simulation trajectories. `OVITO <https://www.ovito.org>`_ and `VMD
|
||||
<https://www.ks.uiuc.edu/Research/vmd>`_ seem to be the most popular
|
||||
@ -14,7 +14,13 @@ choices among them.
|
||||
|
||||
The :doc:`dump image <dump_image>` and :doc:`dump movie <dump_image>`
|
||||
styles can output internally rendered images or convert them to a movie
|
||||
during the MD run.
|
||||
during the MD run. It is also possible to create visualizations from
|
||||
LAMMPS inputs or restart file with the :doc:`LAMMPS-GUI
|
||||
<Howto_lammps_gui>`, which uses the :doc:`dump image <dump_image>`
|
||||
command internally. The ``Snapshot Image Viewer`` can be used to
|
||||
adjust the visualization of the system interactively and then export
|
||||
the corresponding LAMMPS commands to the clipboard to be inserted
|
||||
into input files.
|
||||
|
||||
Programs included with LAMMPS as auxiliary tools can convert
|
||||
between LAMMPS format files and other formats. See the :doc:`Tools
|
||||
|
||||
@ -35,35 +35,35 @@ you **must** build LAMMPS from the source code.
|
||||
|
||||
These are the files and subdirectories in the LAMMPS distribution:
|
||||
|
||||
+------------+---------------------------------------------+
|
||||
| README | Short description of the LAMMPS package |
|
||||
+------------+---------------------------------------------+
|
||||
| LICENSE | GNU General Public License (GPL) |
|
||||
+------------+---------------------------------------------+
|
||||
| SECURITY.md| Security policy for the LAMMPS package |
|
||||
+------------+---------------------------------------------+
|
||||
| bench | benchmark inputs |
|
||||
+------------+---------------------------------------------+
|
||||
| cmake | CMake build files |
|
||||
+------------+---------------------------------------------+
|
||||
| doc | documentation and tools to build the manual |
|
||||
+------------+---------------------------------------------+
|
||||
| examples | example input files |
|
||||
+------------+---------------------------------------------+
|
||||
| fortran | Fortran module for LAMMPS library interface |
|
||||
+------------+---------------------------------------------+
|
||||
| lib | additional provided or external libraries |
|
||||
+------------+---------------------------------------------+
|
||||
| potentials | selected interatomic potential files |
|
||||
+------------+---------------------------------------------+
|
||||
| python | Python module for LAMMPS library interface |
|
||||
+------------+---------------------------------------------+
|
||||
| src | LAMMPS source files |
|
||||
+------------+---------------------------------------------+
|
||||
| tools | pre- and post-processing tools |
|
||||
+------------+---------------------------------------------+
|
||||
| unittest | source code and inputs for testing LAMMPS |
|
||||
+------------+---------------------------------------------+
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``README`` | Short description of the LAMMPS package |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``LICENSE`` | GNU General Public License (GPL) |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``SECURITY.md`` | Security policy for the LAMMPS package |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``bench`` | benchmark inputs |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``cmake`` | CMake build files |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``doc`` | documentation and tools to build the manual |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``examples`` | example input files |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``fortran`` | Fortran module for LAMMPS library interface |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``lib`` | additional provided or external libraries |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``potentials`` | selected interatomic potential files |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``python`` | Python module for LAMMPS library interface |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``src`` | LAMMPS source files |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``tools`` | pre- and post-processing tools |
|
||||
+-----------------+---------------------------------------------+
|
||||
| ``unittest`` | source code and inputs for testing LAMMPS |
|
||||
+-----------------+---------------------------------------------+
|
||||
|
||||
You will have all of these if you downloaded the LAMMPS source code.
|
||||
You will have only some of them if you downloaded executables, as
|
||||
|
||||
@ -60,7 +60,7 @@ between them at any time using "git checkout <branch name>".)
|
||||
files (mostly by accident). If you do not need access to the entire
|
||||
commit history (most people don't), you can speed up the "cloning"
|
||||
process and reduce local disk space requirements by using the
|
||||
*--depth* git command line flag. That will create a "shallow clone"
|
||||
``--depth`` git command line flag. That will create a "shallow clone"
|
||||
of the repository, which contains only a subset of the git history.
|
||||
Using a depth of 1000 is usually sufficient to include the head
|
||||
commits of the *develop*, the *release*, and the *maintenance*
|
||||
@ -122,7 +122,7 @@ changed. How to do this depends on the build system you are using.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cmake . --build
|
||||
cmake --build .
|
||||
|
||||
CMake should auto-detect whether it needs to re-run the CMake
|
||||
configuration step and otherwise redo the build for all files
|
||||
|
||||
@ -31,7 +31,7 @@ command:
|
||||
tar -xzvf lammps*.tar.gz
|
||||
|
||||
This will create a LAMMPS directory with the version date in its name,
|
||||
e.g. lammps-28Mar23.
|
||||
e.g. ``lammps-28Mar23``.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ When you download the installer package, you run it on your Windows
|
||||
machine. It will then prompt you with a dialog, where you can choose
|
||||
the installation directory, unpack and copy several executables,
|
||||
potential files, documentation PDFs, selected example files, etc. It
|
||||
will then update a few system settings (e.g. PATH, LAMMPS_POTENTIALS)
|
||||
will then update a few system settings (e.g. ``PATH``, ``LAMMPS_POTENTIALS``)
|
||||
and add an entry into the Start Menu (with references to the
|
||||
documentation, LAMMPS homepage and more). From that menu, there is
|
||||
also a link to an uninstaller that removes the files and undoes the
|
||||
|
||||
@ -25,9 +25,13 @@ Here are suggestions on how to perform these tasks:
|
||||
wraps the library interface is provided. Thus, GUI interfaces can be
|
||||
written in Python or C/C++ that run LAMMPS and visualize or plot its
|
||||
output. Examples of this are provided in the python directory and
|
||||
described on the :doc:`Python <Python_head>` doc page. As of version
|
||||
2 August 2023 :ref:`a GUI tool <lammps_gui>` is included in LAMMPS.
|
||||
Also, there are several external wrappers or GUI front ends.
|
||||
described on the :doc:`Python <Python_head>` doc page.
|
||||
|
||||
Since version 2 August 2023 :ref:`a LAMMPS-GUI tool <lammps_gui>` is
|
||||
included in LAMMPS. Also, there are several external wrappers or GUI
|
||||
front ends that are mentioned on the `Pre-/post-processing tools page
|
||||
<https://www.lammps.org/prepost.html>`_ of the LAMMPS homepage.
|
||||
|
||||
* **Builder:** Several pre-processing tools are packaged with LAMMPS.
|
||||
Some of them convert input files in formats produced by other MD codes
|
||||
such as CHARMM, AMBER, or Insight into LAMMPS input formats. Some of
|
||||
@ -35,12 +39,13 @@ Here are suggestions on how to perform these tasks:
|
||||
such as linear bead-spring polymer chains. The moltemplate program is
|
||||
a true molecular builder that will generate complex molecular models.
|
||||
See the :doc:`Tools <Tools>` page for details on tools packaged with
|
||||
LAMMPS. The `Pre-/post-processing page
|
||||
LAMMPS. The `Pre-/post-processing tools page
|
||||
<https://www.lammps.org/prepost.html>`_ of the LAMMPS homepage
|
||||
describes a variety of third party tools for this task. Furthermore,
|
||||
some internal LAMMPS commands allow reconstructing, or selectively adding
|
||||
topology information, as well as provide the option to insert molecule
|
||||
templates instead of atoms for building bulk molecular systems.
|
||||
|
||||
* **Force-field assignment:** The conversion tools described in the previous
|
||||
bullet for CHARMM, AMBER, and Insight will also assign force field
|
||||
coefficients in the LAMMPS format, assuming you provide CHARMM, AMBER,
|
||||
@ -49,6 +54,7 @@ Here are suggestions on how to perform these tasks:
|
||||
`InterMol <https://github.com/shirtsgroup/InterMol>`_ are particularly
|
||||
powerful and flexible in converting force field and topology data
|
||||
between various MD simulation programs.
|
||||
|
||||
* **Simulation analysis:** If you want to perform analysis on-the-fly as
|
||||
your simulation runs, see the :doc:`compute <compute>` and :doc:`fix
|
||||
<fix>` doc pages, which list commands that can be used in a LAMMPS
|
||||
@ -66,19 +72,38 @@ Here are suggestions on how to perform these tasks:
|
||||
extract and massage data in dump files to make it easier to import
|
||||
into other programs. See the :doc:`Tools <Tools>` page for details on
|
||||
these various options.
|
||||
|
||||
The `Pre-/post-processing page <https://www.lammps.org/prepost.html>`_
|
||||
on the LAMMPS homepage lists some external packages for analysis of MD
|
||||
simulation data, including data produced by LAMMPS.
|
||||
|
||||
* **Visualization:** LAMMPS can produce NETPBM, JPG, or PNG format
|
||||
snapshot images on-the-fly via its :doc:`dump image <dump_image>`
|
||||
command and pass them to an external program, `FFmpeg <https://ffmpeg.org/>`_,
|
||||
to generate movies from them. For high-quality, interactive visualization,
|
||||
there are many excellent and free tools available. See the `Visualization Tools
|
||||
command and pass them to an external program, `FFmpeg
|
||||
<https://ffmpeg.org/>`_, to generate movies from them. The
|
||||
:ref:`LAMMPS-GUI tool <lammps_gui>` has an *Snapshot Image Viewer*
|
||||
which uses :doc:`dump image <dump_image>` and allows to modify the
|
||||
visualization settings interactively. It also has a *Slide Show*
|
||||
feature where images created by :doc:`dump image <dump_image>` are
|
||||
collected during a simulation and can be animated interactively or
|
||||
exported to a movie with FFmpeg.
|
||||
|
||||
For high-quality, interactive visualization, there are many excellent
|
||||
and free tools available. See the `Visualization Tools
|
||||
<https://www.lammps.org/viz.html>`_ page of the LAMMPS website for
|
||||
visualization packages that can process LAMMPS output data.
|
||||
|
||||
* **Plotting:** See the next bullet about Pizza.py as well as the
|
||||
:doc:`Python <Python_head>` page for examples of plotting LAMMPS
|
||||
output. Scripts provided with the *python* tool in the ``tools``
|
||||
directory will extract and process data in log and dump files to make
|
||||
it easier to analyze and plot. See the :doc:`Tools <Tools>` doc page
|
||||
for more discussion of the various tools.
|
||||
|
||||
The :ref:`LAMMPS-GUI tool <lammps_gui>` has an *Chart Viewer* where
|
||||
:doc:`thermodynamic data <thermo_style>` computed by LAMMPS is
|
||||
collected during the simulation and plotted immediately.
|
||||
|
||||
* **Pizza.py:** Our group has also written a separate toolkit called
|
||||
`Pizza.py <https://lammps.github.io/pizza>`_ which can do certain kinds of
|
||||
setup, analysis, plotting, and visualization (via OpenGL) for LAMMPS
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
LAMMPS Documentation (|version| version)
|
||||
########################################
|
||||
|
||||
**About LAMMPS and this manual**
|
||||
|
||||
LAMMPS stands for **L**\ arge-scale **A**\ tomic/**M**\ olecular
|
||||
**M**\ assively **P**\ arallel **S**\ imulator.
|
||||
|
||||
@ -39,9 +41,12 @@ doc directory.
|
||||
|
||||
If needed, you can build a copy on your local machine of the manual
|
||||
(HTML pages or PDF file) for the version of LAMMPS you have
|
||||
downloaded. Follow the steps on the :doc:`Build_manual` page. If you
|
||||
have difficulties viewing the pages, please :ref:`see this note
|
||||
<webbrowser>`.
|
||||
downloaded. Follow the steps on the :doc:`Build_manual` page.
|
||||
|
||||
.. only:: html
|
||||
|
||||
If you have difficulties viewing the HTML pages, please :ref:`see this note
|
||||
<webbrowser>` about compatibility with web browsers.
|
||||
|
||||
-----------
|
||||
|
||||
@ -144,26 +149,28 @@ Indices and tables
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
|
||||
.. _webbrowser:
|
||||
.. admonition:: Web Browser Compatibility
|
||||
:class: note
|
||||
.. only:: html
|
||||
|
||||
The HTML version of the manual makes use of advanced features present
|
||||
in "modern" web browsers. This leads to incompatibilities with older
|
||||
web browsers and specific vendor browsers (e.g. Internet Explorer on Windows)
|
||||
where parts of the pages are not rendered as expected (e.g. the layout is
|
||||
broken or mathematical expressions not typeset). In that case we
|
||||
recommend to install/use a different/newer web browser or use
|
||||
the `PDF version of the manual <https://docs.lammps.org/Manual.pdf>`_.
|
||||
.. _webbrowser:
|
||||
.. admonition:: Web Browser Compatibility
|
||||
:class: note
|
||||
|
||||
The following web browser versions have been verified to work as
|
||||
expected on Linux, macOS, and Windows where available:
|
||||
The HTML version of the manual makes use of advanced features present
|
||||
in "modern" web browsers. This leads to incompatibilities with older
|
||||
web browsers and specific vendor browsers (e.g. Internet Explorer on Windows)
|
||||
where parts of the pages are not rendered as expected (e.g. the layout is
|
||||
broken or mathematical expressions not typeset). In that case we
|
||||
recommend to install/use a different/newer web browser or use
|
||||
the `PDF version of the manual <https://docs.lammps.org/Manual.pdf>`_.
|
||||
|
||||
- Safari version 11.1 and later
|
||||
- Firefox version 54 and later
|
||||
- Chrome version 54 and later
|
||||
- Opera version 41 and later
|
||||
- Edge version 80 and later
|
||||
The following web browser versions have been verified to work as
|
||||
expected on Linux, macOS, and Windows where available:
|
||||
|
||||
Also Android version 7.1 and later and iOS version 11 and later have
|
||||
been verified to render this website as expected.
|
||||
- Safari version 11.1 and later
|
||||
- Firefox version 54 and later
|
||||
- Chrome version 54 and later
|
||||
- Opera version 41 and later
|
||||
- Edge version 80 and later
|
||||
|
||||
Also Android version 7.1 and later and iOS version 11 and later have
|
||||
been verified to render this website as expected.
|
||||
|
||||
@ -96,7 +96,7 @@ methods that a new variable name or flag needs to be added to.
|
||||
In ``Atom::peratom_create()`` when using the ``Atom::add_peratom()``
|
||||
method, a cols argument of 0 is for per-atom vectors, a length >
|
||||
1 is for per-atom arrays. Note the use of the extra per-thread flag and
|
||||
the add_peratom_vary() method when last dimension of the array is
|
||||
the add_peratom_vary() method when the last dimension of the array is
|
||||
variable-length.
|
||||
|
||||
Adding the variable name to Atom::extract() enables the per-atom data
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
Submitting new features for inclusion in LAMMPS
|
||||
===============================================
|
||||
|
||||
We encourage LAMMPS users to submit new features they wrote for LAMMPS
|
||||
We encourage LAMMPS users to submit new features they write for LAMMPS
|
||||
to be included in the LAMMPS distribution and thus become easily
|
||||
accessible to all LAMMPS users. The LAMMPS source code is managed
|
||||
with git and public development is hosted on `GitHub
|
||||
|
||||
@ -37,6 +37,7 @@ includes several public variables that describe the geometry/dynamics of the
|
||||
contact such as
|
||||
|
||||
.. list-table::
|
||||
:widths: 25 75
|
||||
|
||||
* - ``xi`` and ``xj``
|
||||
- Positions of the two contacting bodies
|
||||
@ -64,38 +65,31 @@ GranSubMod classes. All GranSubMod classes share several general methods which m
|
||||
need to be defined
|
||||
|
||||
.. list-table::
|
||||
:widths: 25 75
|
||||
|
||||
* - ``GranSubMod->mix_coeff()``
|
||||
* - ``mix_coeff()``
|
||||
- Optional method to define how coefficients are mixed for different atom types. By default, coefficients are mixed using a geometric mean.
|
||||
* - ``GranSubMod->coeffs_to_local()``
|
||||
* - ``coeffs_to_local()``
|
||||
- Parses coefficients to define local variables. Run once at model construction.
|
||||
* - ``GranSubMod->init()``
|
||||
* - ``init()``
|
||||
- Optional method to define local variables after other GranSubMod types were created. For instance, this method may be used by a tangential model that derives parameters from the normal model.
|
||||
|
||||
There are also several type-specific methods
|
||||
The Normal, Damping, Tangential, Twisting, and Rolling sub-models also have a
|
||||
``calculate_forces()`` method which calculate the respective forces/torques.
|
||||
Correspondingly, the Heat sub-model has a ``calculate_heat()`` method. Lastly,
|
||||
the Normal sub-model has a few extra optional methods:
|
||||
|
||||
.. list-table::
|
||||
:widths: 25 75
|
||||
|
||||
* - ``GranSubModNormal->touch()``
|
||||
- Optional method to test when particles are in contact. By default, this is when particles overlap.
|
||||
* - ``GranSubModNormal->pulloff_distance()``
|
||||
- Optional method to return the distance at which particles stop interacting. By default, this is when particles no longer overlap.
|
||||
* - ``GranSubModNormal->calculate_radius()``
|
||||
- Optional method to return the radius of the contact. By default, this returns the radius of the geometric cross section.
|
||||
* - ``GranSubModNormal->set_fncrit()``
|
||||
- Optional method that defines the critical force to break the contact used by some tangential, rolling, and twisting sub-models. By default, this is the current total normal force including damping.
|
||||
* - ``GranSubModNormal->calculate_forces()``
|
||||
- Required method that returns the normal contact force
|
||||
* - ``GranSubModDamping->calculate_forces()``
|
||||
- Required method that returns the normal damping force
|
||||
* - ``GranSubModTangential->calculate_forces()``
|
||||
- Required method that calculates tangential forces/torques
|
||||
* - ``GranSubModTwisting->calculate_forces()``
|
||||
- Required method that calculates twisting friction forces/torques
|
||||
* - ``GranSubModRolling->calculate_forces()``
|
||||
- Required method that calculates rolling friction forces/torques
|
||||
* - ``GranSubModHeat->calculate_heat()``
|
||||
- Required method that returns the rate of heat flow
|
||||
* - ``touch()``
|
||||
- Tests whether particles are in contact. By default, when particles overlap.
|
||||
* - ``pulloff_distance()``
|
||||
- Returns the distance at which particles stop interacting. By default, when particles no longer overlap.
|
||||
* - ``calculate_radius()``
|
||||
- Returns the radius of the contact. By default, the radius of the geometric cross section.
|
||||
* - ``set_fncrit()``
|
||||
- Defines the critical force to break the contact used by some tangential, rolling, and twisting sub-models. By default, the current total normal force including damping.
|
||||
|
||||
As an example, say one wanted to create a new normal force option that consisted
|
||||
of a Hookean force with a piecewise stiffness. This could be done by adding a new
|
||||
@ -125,7 +119,6 @@ set of files ``gran_sub_mod_custom.h``:
|
||||
protected:
|
||||
double k1, k2, delta_switch;
|
||||
};
|
||||
|
||||
} // namespace Granular_NS
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
|
||||
@ -12,8 +12,8 @@ programming style choices in LAMMPS is :doc:`given elsewhere
|
||||
<Developer_code_design>`.
|
||||
|
||||
Most of the new features described on the :doc:`Modify <Modify>` doc
|
||||
page require you to write a new C++ derived class (except for
|
||||
exceptions described below, where you can make small edits to existing
|
||||
page require you to write a new C++ derived class (excluding exceptions
|
||||
described below, this can often be done by making small edits to existing
|
||||
files). Creating a new class requires 2 files, a source code file
|
||||
(\*.cpp) and a header file (\*.h). The derived class must provide
|
||||
certain methods to work as a new option. Depending on how different
|
||||
@ -46,7 +46,7 @@ then your ``pair_foo.h`` file should be structured as follows:
|
||||
// clang-format off
|
||||
PairStyle(foo,PairFoo);
|
||||
#else
|
||||
// clanf-format on
|
||||
// clang-format on
|
||||
...
|
||||
(class definition for PairFoo)
|
||||
...
|
||||
|
||||
@ -33,47 +33,47 @@ Here is a brief list of some the class methods in the Pair class that
|
||||
| coeff | set coefficients for one i,j type pair, called from pair_coeff |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| Optional | methods that have a default or dummy implementation |
|
||||
+=================================+======================================================================+
|
||||
| init_one | perform initialization for one i,j type pair |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| init_style | style initialization: request neighbor list(s), error checks |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| init_list | Neighbor class callback function to pass neighbor list to pair style |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| single | force/r and energy of a single pairwise interaction between 2 atoms |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| compute_inner/middle/outer | versions of compute used by rRESPA |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| memory_usage | return estimated amount of memory used by the pair style |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| modify_params | process arguments to pair_modify command |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| extract | provide access to internal scalar or per-type data like cutoffs |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| extract_peratom | provide access to internal per-atom data |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| setup | initialization at the beginning of a run |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| finish | called at the end of a run, e.g. to print |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write & read_restart | write/read i,j pair coeffs to restart files |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write & read_restart_settings | write/read global settings to restart files |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write_data | write Pair Coeffs section to data file |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write_data_all | write PairIJ Coeffs section to data file |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| pack & unpack_forward_comm | copy data to and from buffer if style uses forward communication |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| pack & unpack_reverse_comm | copy data to and from buffer if style uses reverse communication |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| reinit | reset all type-based parameters, called by fix adapt for example |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| reset_dt | called when the time step is changed by timestep or fix reset/dt |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| Optional | methods that have a default or dummy implementation |
|
||||
+=================================+========================================================================+
|
||||
| init_one | perform initialization for one i,j type pair |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| init_style | style initialization: request neighbor list(s), error checks |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| init_list | Neighbor class callback function to pass neighbor list to pair style |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| single | force/r and energy of a single pairwise interaction between two atoms |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| compute_inner/middle/outer | versions of compute used by rRESPA |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| memory_usage | return estimated amount of memory used by the pair style |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| modify_params | process arguments to pair_modify command |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| extract | provide access to internal scalar or per-type data like cutoffs |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| extract_peratom | provide access to internal per-atom data |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| setup | initialization at the beginning of a run |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| finish | called at the end of a run, e.g. to print |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| write & read_restart | write/read i,j pair coeffs to restart files |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| write & read_restart_settings | write/read global settings to restart files |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| write_data | write Pair Coeffs section to data file |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| write_data_all | write PairIJ Coeffs section to data file |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| pack & unpack_forward_comm | copy data to and from buffer if style uses forward communication |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| pack & unpack_reverse_comm | copy data to and from buffer if style uses reverse communication |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| reinit | reset all type-based parameters, called by fix adapt for example |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
| reset_dt | called when the time step is changed by timestep or fix reset/dt |
|
||||
+---------------------------------+------------------------------------------------------------------------+
|
||||
|
||||
Here is a list of flags or settings that should be set in the
|
||||
constructor of the derived pair class when they differ from the default
|
||||
|
||||
@ -184,7 +184,7 @@ package so that it is optional.
|
||||
Included Fortran code has to be compatible with the Fortran 2003
|
||||
standard. Since not all platforms supported by LAMMPS provide good
|
||||
support for compiling Fortran files, it should be considered to rewrite
|
||||
these parts as C++ code, if possible and thus allow for a wider adoption
|
||||
these parts as C++ code, if possible, and thus allow for a wider adoption
|
||||
of the contribution. As of January 2023, all previously included
|
||||
Fortran code for the LAMMPS executable has been replaced by equivalent
|
||||
C++ code.
|
||||
|
||||
@ -14,7 +14,7 @@ style, but can be adapted using :doc:`thermo_modify line <thermo_modify>`.
|
||||
|
||||
The thermo styles (one, multi, etc) are defined by lists of keywords
|
||||
with associated formats for integer and floating point numbers and
|
||||
identified but an enumerator constant. Adding a new style thus mostly
|
||||
identified by an enumerator constant. Adding a new style thus mostly
|
||||
requires defining a new list of keywords and the associated formats and
|
||||
then inserting the required output processing where the enumerators are
|
||||
identified. Search for the word "CUSTOMIZATION" with references to
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -10,8 +10,8 @@ the rest of LAMMPS.
|
||||
|
||||
The "Examples" column is a subdirectory in the examples directory of the
|
||||
distribution which has one or more input scripts that use the package.
|
||||
E.g. "peptide" refers to the examples/peptide directory; PACKAGES/atc refers
|
||||
to the examples/PACKAGES/atc directory. The "Lib" column indicates
|
||||
E.g. ``peptide`` refers to the ``examples/peptide`` directory; ``PACKAGES/atc`` refers
|
||||
to the ``examples/PACKAGES/atc`` directory. The "Lib" column indicates``
|
||||
whether an extra library is needed to build and use the package:
|
||||
|
||||
* no = no library
|
||||
@ -21,7 +21,7 @@ whether an extra library is needed to build and use the package:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 20 20 30 25 5
|
||||
|
||||
* - Package
|
||||
- Description
|
||||
@ -31,7 +31,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`ADIOS <PKG-ADIOS>`
|
||||
- dump output via ADIOS
|
||||
- :doc:`dump adios <dump_adios>`
|
||||
- PACKAGES/adios
|
||||
- ``PACKAGES/adios``
|
||||
- ext
|
||||
* - :ref:`AMOEBA <PKG-AMOEBA>`
|
||||
- AMOEBA and HIPPO force fields
|
||||
@ -46,17 +46,17 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`ATC <PKG-ATC>`
|
||||
- Atom-to-Continuum coupling
|
||||
- :doc:`fix atc <fix_atc>`
|
||||
- PACKAGES/atc
|
||||
- ``PACKAGES/atc``
|
||||
- int
|
||||
* - :ref:`AWPMD <PKG-AWPMD>`
|
||||
- wave packet MD
|
||||
- :doc:`pair_style awpmd/cut <pair_awpmd>`
|
||||
- PACKAGES/awpmd
|
||||
- ``PACKAGES/awpmd``
|
||||
- int
|
||||
* - :ref:`BOCS <PKG-BOCS>`
|
||||
- BOCS bottom up coarse graining
|
||||
- :doc:`fix bocs <fix_bocs>`
|
||||
- PACKAGES/bocs
|
||||
- ``PACKAGES/bocs``
|
||||
- no
|
||||
* - :ref:`BODY <PKG-BODY>`
|
||||
- body-style particles
|
||||
@ -71,17 +71,17 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`BROWNIAN <PKG-BROWNIAN>`
|
||||
- Brownian dynamics, self-propelled particles
|
||||
- :doc:`fix brownian <fix_brownian>`, :doc:`fix propel/self <fix_propel_self>`
|
||||
- PACKAGES/brownian
|
||||
- ``PACKAGES/brownian``
|
||||
- no
|
||||
* - :ref:`CG-DNA <PKG-CG-DNA>`
|
||||
- coarse-grained DNA force fields
|
||||
- src/CG-DNA/README
|
||||
- PACKAGES/cgdna
|
||||
- ``src/CG-DNA/README``
|
||||
- ``PACKAGES/cgdna``
|
||||
- no
|
||||
* - :ref:`CG-SPICA <PKG-CG-SPICA>`
|
||||
- SPICA (SDK) coarse-graining model
|
||||
- :doc:`pair_style lj/spica <pair_spica>`
|
||||
- PACKAGES/cgspica
|
||||
- ``PACKAGES/cgspica``
|
||||
- no
|
||||
* - :ref:`CLASS2 <PKG-CLASS2>`
|
||||
- class 2 force fields
|
||||
@ -96,7 +96,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`COLVARS <PKG-COLVARS>`
|
||||
- `Colvars collective variables library <https://colvars.github.io/>`_
|
||||
- :doc:`fix colvars <fix_colvars>`
|
||||
- PACKAGES/colvars
|
||||
- ``PACKAGES/colvars``
|
||||
- int
|
||||
* - :ref:`COMPRESS <PKG-COMPRESS>`
|
||||
- I/O compression
|
||||
@ -111,12 +111,12 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`DIELECTRIC <PKG-DIELECTRIC>`
|
||||
- dielectric boundary solvers and force styles
|
||||
- :doc:`compute efield/atom <compute_efield_atom>`
|
||||
- PACKAGES/dielectric
|
||||
- ``PACKAGES/dielectric``
|
||||
- no
|
||||
* - :ref:`DIFFRACTION <PKG-DIFFRACTION>`
|
||||
- virtual x-ray and electron diffraction
|
||||
- :doc:`compute xrd <compute_xrd>`
|
||||
- PACKAGES/diffraction
|
||||
- ``PACKAGES/diffraction``
|
||||
- no
|
||||
* - :ref:`DIPOLE <PKG-DIPOLE>`
|
||||
- point dipole particles
|
||||
@ -126,37 +126,37 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`DPD-BASIC <PKG-DPD-BASIC>`
|
||||
- basic DPD models
|
||||
- :doc:`pair_styles dpd <pair_dpd>` :doc:`dpd/ext <pair_dpd_ext>`
|
||||
- PACKAGES/dpd-basic
|
||||
- ``PACKAGES/dpd-basic``
|
||||
- no
|
||||
* - :ref:`DPD-MESO <PKG-DPD-MESO>`
|
||||
- mesoscale DPD models
|
||||
- :doc:`pair_style edpd <pair_mesodpd>`
|
||||
- PACKAGES/dpd-meso
|
||||
- ``PACKAGES/dpd-meso``
|
||||
- no
|
||||
* - :ref:`DPD-REACT <PKG-DPD-REACT>`
|
||||
- reactive dissipative particle dynamics
|
||||
- src/DPD-REACT/README
|
||||
- PACKAGES/dpd-react
|
||||
- ``src/DPD-REACT/README``
|
||||
- ``PACKAGES/dpd-react``
|
||||
- no
|
||||
* - :ref:`DPD-SMOOTH <PKG-DPD-SMOOTH>`
|
||||
- smoothed dissipative particle dynamics
|
||||
- src/DPD-SMOOTH/README
|
||||
- PACKAGES/dpd-smooth
|
||||
- ``src/DPD-SMOOTH/README``
|
||||
- ``PACKAGES/dpd-smooth``
|
||||
- no
|
||||
* - :ref:`DRUDE <PKG-DRUDE>`
|
||||
- Drude oscillators
|
||||
- :doc:`Howto drude <Howto_drude>`
|
||||
- PACKAGES/drude
|
||||
- ``PACKAGES/drude``
|
||||
- no
|
||||
* - :ref:`EFF <PKG-EFF>`
|
||||
- electron force field
|
||||
- :doc:`pair_style eff/cut <pair_eff>`
|
||||
- PACKAGES/eff
|
||||
- ``PACKAGES/eff``
|
||||
- no
|
||||
* - :ref:`ELECTRODE <PKG-ELECTRODE>`
|
||||
- electrode charges to match potential
|
||||
- :doc:`fix electrode/conp <fix_electrode>`
|
||||
- PACKAGES/electrode
|
||||
- ``PACKAGES/electrode``
|
||||
- no
|
||||
* - :ref:`EXTRA-COMMAND <PKG-EXTRA-COMMAND>`
|
||||
- additional command styles
|
||||
@ -191,7 +191,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`FEP <PKG-FEP>`
|
||||
- free energy perturbation
|
||||
- :doc:`compute fep <compute_fep>`
|
||||
- PACKAGES/fep
|
||||
- ``PACKAGES/fep``
|
||||
- no
|
||||
* - :ref:`GPU <PKG-GPU>`
|
||||
- GPU-enabled styles
|
||||
@ -216,7 +216,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`INTERLAYER <PKG-INTERLAYER>`
|
||||
- Inter-layer pair potentials
|
||||
- :doc:`several pair styles <Commands_pair>`
|
||||
- PACKAGES/interlayer
|
||||
- ``PACKAGES/interlayer``
|
||||
- no
|
||||
* - :ref:`KIM <PKG-KIM>`
|
||||
- OpenKIM wrapper
|
||||
@ -236,22 +236,22 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`LATBOLTZ <PKG-LATBOLTZ>`
|
||||
- Lattice Boltzmann fluid
|
||||
- :doc:`fix lb/fluid <fix_lb_fluid>`
|
||||
- PACKAGES/latboltz
|
||||
- ``PACKAGES/latboltz``
|
||||
- no
|
||||
* - :ref:`LEPTON <PKG-LEPTON>`
|
||||
- evaluate strings as potential function
|
||||
- :doc:`pair_style lepton <pair_lepton>`
|
||||
- PACKAGES/lepton
|
||||
- ``PACKAGES/lepton``
|
||||
- int
|
||||
* - :ref:`MACHDYN <PKG-MACHDYN>`
|
||||
- smoothed Mach dynamics
|
||||
- `SMD User Guide <PDF/MACHDYN_LAMMPS_userguide.pdf>`_
|
||||
- PACKAGES/machdyn
|
||||
- ``PACKAGES/machdyn``
|
||||
- ext
|
||||
* - :ref:`MANIFOLD <PKG-MANIFOLD>`
|
||||
- motion on 2d surfaces
|
||||
- :doc:`fix manifoldforce <fix_manifoldforce>`
|
||||
- PACKAGES/manifold
|
||||
- ``PACKAGES/manifold``
|
||||
- no
|
||||
* - :ref:`MANYBODY <PKG-MANYBODY>`
|
||||
- many-body potentials
|
||||
@ -266,7 +266,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`MDI <PKG-MDI>`
|
||||
- client-server code coupling
|
||||
- :doc:`MDI Howto <Howto_mdi>`
|
||||
- PACKAGES/mdi
|
||||
- ``PACKAGES/mdi``
|
||||
- ext
|
||||
* - :ref:`MEAM <PKG-MEAM>`
|
||||
- modified EAM potential (C++)
|
||||
@ -276,12 +276,12 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`MESONT <PKG-MESONT>`
|
||||
- mesoscopic tubular potential model
|
||||
- pair styles :doc:`mesocnt <pair_mesocnt>`
|
||||
- PACKAGES/mesont
|
||||
- ``PACKAGES/mesont``
|
||||
- no
|
||||
* - :ref:`MGPT <PKG-MGPT>`
|
||||
- fast MGPT multi-ion potentials
|
||||
- :doc:`pair_style mgpt <pair_mgpt>`
|
||||
- PACKAGES/mgpt
|
||||
- ``PACKAGES/mgpt``
|
||||
- no
|
||||
* - :ref:`MISC <PKG-MISC>`
|
||||
- miscellaneous single-file commands
|
||||
@ -291,7 +291,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`ML-HDNNP <PKG-ML-HDNNP>`
|
||||
- High-dimensional neural network potentials
|
||||
- :doc:`pair_style hdnnp <pair_hdnnp>`
|
||||
- PACKAGES/hdnnp
|
||||
- ``PACKAGES/hdnnp``
|
||||
- ext
|
||||
* - :ref:`ML-IAP <PKG-ML-IAP>`
|
||||
- multiple machine learning potentials
|
||||
@ -301,7 +301,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`ML-PACE <PKG-ML-PACE>`
|
||||
- Atomic Cluster Expansion potential
|
||||
- :doc:`pair pace <pair_pace>`
|
||||
- PACKAGES/pace
|
||||
- ``PACKAGES/pace``
|
||||
- ext
|
||||
* - :ref:`ML-POD <PKG-ML-POD>`
|
||||
- Proper orthogonal decomposition potentials
|
||||
@ -311,12 +311,12 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`ML-QUIP <PKG-ML-QUIP>`
|
||||
- QUIP/libatoms interface
|
||||
- :doc:`pair_style quip <pair_quip>`
|
||||
- PACKAGES/quip
|
||||
- ``PACKAGES/quip``
|
||||
- ext
|
||||
* - :ref:`ML-RANN <PKG-ML-RANN>`
|
||||
- Pair style for RANN potentials
|
||||
- :doc:`pair rann <pair_rann>`
|
||||
- PACKAGES/rann
|
||||
- ``PACKAGES/rann``
|
||||
- no
|
||||
* - :ref:`ML-SNAP <PKG-ML-SNAP>`
|
||||
- quantum-fitted potential
|
||||
@ -326,12 +326,12 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`ML-UF3 <PKG-ML-UF3>`
|
||||
- quantum-fitted ultra fast potentials
|
||||
- :doc:`pair_style uf3 <pair_uf3>`
|
||||
- PACKAGES/uf3
|
||||
- ``PACKAGES/uf3``
|
||||
- no
|
||||
* - :ref:`MOFFF <PKG-MOFFF>`
|
||||
- styles for `MOF-FF <MOFplus_>`_ force field
|
||||
- :doc:`pair_style buck6d/coul/gauss <pair_buck6d_coul_gauss>`
|
||||
- PACKAGES/mofff
|
||||
- ``PACKAGES/mofff``
|
||||
- no
|
||||
* - :ref:`MOLECULE <PKG-MOLECULE>`
|
||||
- molecular system force fields
|
||||
@ -361,7 +361,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`ORIENT <PKG-ORIENT>`
|
||||
- fixes for orientation depended forces
|
||||
- :doc:`fix orient/* <fix_orient>`
|
||||
- PACKAGES/orient_eco
|
||||
- ``PACKAGES/orient_eco``
|
||||
- no
|
||||
* - :ref:`PERI <PKG-PERI>`
|
||||
- Peridynamics models
|
||||
@ -371,7 +371,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`PHONON <PKG-PHONON>`
|
||||
- phonon dynamical matrix
|
||||
- :doc:`fix phonon <fix_phonon>`
|
||||
- PACKAGES/phonon
|
||||
- ``PACKAGES/phonon``
|
||||
- no
|
||||
* - :ref:`PLUGIN <PKG-PLUGIN>`
|
||||
- Plugin loader command
|
||||
@ -381,7 +381,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`PLUMED <PKG-PLUMED>`
|
||||
- `PLUMED free energy library <https://www.plumed.org>`_
|
||||
- :doc:`fix plumed <fix_plumed>`
|
||||
- PACKAGES/plumed
|
||||
- ``PACKAGES/plumed``
|
||||
- ext
|
||||
* - :ref:`POEMS <PKG-POEMS>`
|
||||
- coupled rigid body motion
|
||||
@ -406,7 +406,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`QMMM <PKG-QMMM>`
|
||||
- QM/MM coupling
|
||||
- :doc:`fix qmmm <fix_qmmm>`
|
||||
- PACKAGES/qmmm
|
||||
- ``PACKAGES/qmmm``
|
||||
- ext
|
||||
* - :ref:`QTB <PKG-QTB>`
|
||||
- quantum nuclear effects
|
||||
@ -421,7 +421,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`REACTION <PKG-REACTION>`
|
||||
- chemical reactions in classical MD
|
||||
- :doc:`fix bond/react <fix_bond_react>`
|
||||
- PACKAGES/reaction
|
||||
- ``PACKAGES/reaction``
|
||||
- no
|
||||
* - :ref:`REAXFF <PKG-REAXFF>`
|
||||
- ReaxFF potential (C/C++)
|
||||
@ -441,7 +441,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`SCAFACOS <PKG-SCAFACOS>`
|
||||
- wrapper for ScaFaCoS Kspace solver
|
||||
- :doc:`kspace_style scafacos <kspace_style>`
|
||||
- PACKAGES/scafacos
|
||||
- ``PACKAGES/scafacos``
|
||||
- ext
|
||||
* - :ref:`SHOCK <PKG-SHOCK>`
|
||||
- shock loading methods
|
||||
@ -451,12 +451,12 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`SMTBQ <PKG-SMTBQ>`
|
||||
- second moment tight binding potentials
|
||||
- pair styles :doc:`smtbq <pair_smtbq>`, :doc:`smatb <pair_smatb>`
|
||||
- PACKAGES/smtbq
|
||||
- ``PACKAGES/smtbq``
|
||||
- no
|
||||
* - :ref:`SPH <PKG-SPH>`
|
||||
- smoothed particle hydrodynamics
|
||||
- `SPH User Guide <PDF/SPH_LAMMPS_userguide.pdf>`_
|
||||
- PACKAGES/sph
|
||||
- ``PACKAGES/sph``
|
||||
- no
|
||||
* - :ref:`SPIN <PKG-SPIN>`
|
||||
- magnetic atomic spin dynamics
|
||||
@ -471,12 +471,12 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`TALLY <PKG-TALLY>`
|
||||
- pairwise tally computes
|
||||
- :doc:`compute XXX/tally <compute_tally>`
|
||||
- PACKAGES/tally
|
||||
- ``PACKAGES/tally``
|
||||
- no
|
||||
* - :ref:`UEF <PKG-UEF>`
|
||||
- extensional flow
|
||||
- :doc:`fix nvt/uef <fix_nh_uef>`
|
||||
- PACKAGES/uef
|
||||
- ``PACKAGES/uef``
|
||||
- no
|
||||
* - :ref:`VORONOI <PKG-VORONOI>`
|
||||
- Voronoi tesselation
|
||||
@ -491,7 +491,7 @@ whether an extra library is needed to build and use the package:
|
||||
* - :ref:`YAFF <PKG-YAFF>`
|
||||
- additional styles implemented in YAFF
|
||||
- :doc:`angle_style cross <angle_cross>`
|
||||
- PACKAGES/yaff
|
||||
- ``PACKAGES/yaff``
|
||||
- no
|
||||
|
||||
.. _MOFplus: https://www.mofplus.org/content/show/MOF-FF
|
||||
|
||||
@ -16,7 +16,7 @@ can be handled through the Python exception handling mechanism.
|
||||
try:
|
||||
# LAMMPS will normally terminate itself and the running process if an error
|
||||
# occurs. This would kill the Python interpreter. The library wrapper will
|
||||
# detect that an error has occured and throw a Python exception
|
||||
# detect that an error has occurred and throw a Python exception
|
||||
|
||||
lmp.command('unknown')
|
||||
except MPIAbortException as ae:
|
||||
|
||||
@ -2,7 +2,7 @@ Neighbor list access
|
||||
====================
|
||||
|
||||
Access to neighbor lists is handled through a couple of wrapper classes
|
||||
that allows to treat it like either a python list or a NumPy array. The
|
||||
that allows one to treat it like either a python list or a NumPy array. The
|
||||
access procedure is similar to that of the C-library interface: use one
|
||||
of the "find" functions to look up the index of the neighbor list in the
|
||||
global table of neighbor lists and then get access to the neighbor list
|
||||
@ -79,11 +79,11 @@ potential is shown below.
|
||||
* :py:meth:`lammps.get_neighlist_element_neighbors()`: Get element in neighbor list and its neighbors
|
||||
|
||||
* :py:meth:`lammps.find_pair_neighlist() <lammps.lammps.find_pair_neighlist()>`: Find neighbor list of pair style
|
||||
* :py:meth:`lammps.find_fix_neighlist() <lammps.lammps.find_pair_neighlist()>`: Find neighbor list of pair style
|
||||
* :py:meth:`lammps.find_compute_neighlist() <lammps.lammps.find_pair_neighlist()>`: Find neighbor list of pair style
|
||||
* :py:meth:`lammps.find_fix_neighlist() <lammps.lammps.find_pair_neighlist()>`: Find neighbor list of fix style
|
||||
* :py:meth:`lammps.find_compute_neighlist() <lammps.lammps.find_pair_neighlist()>`: Find neighbor list of compute style
|
||||
|
||||
|
||||
**NumPy Methods:**
|
||||
|
||||
* :py:meth:`lammps.numpy.get_neighlist() <lammps.numpy_wrapper.numpy_wrapper.get_neighlist()>`: Get neighbor list for given index, which uses NumPy arrays for its element neighbor arrays
|
||||
* :py:meth:`lammps.numpy.get_neighlist_element_neighbors() <lammps.numpy_wrapper.numpy_wrapper.get_neighlist_element_neighbors()>`: Get element in neighbor list and its neighbors (as numpy array)
|
||||
* :py:meth:`lammps.numpy.get_neighlist_element_neighbors() <lammps.numpy_wrapper.numpy_wrapper.get_neighlist_element_neighbors()>`: Get element in neighbor list and its neighbors (as a numpy array)
|
||||
|
||||
@ -23,20 +23,22 @@ passed by all calling processors, to individual atoms, which may be
|
||||
owned by different processors.
|
||||
|
||||
Note that the data returned by the gather methods,
|
||||
e.g. gather_atoms("x"), is different from the data structure returned
|
||||
by extract_atom("x") in four ways. (1) Gather_atoms() returns a
|
||||
vector which you index as x[i]; extract_atom() returns an array
|
||||
which you index as x[i][j]. (2) Gather_atoms() orders the atoms
|
||||
by atom ID while extract_atom() does not. (3) Gather_atoms() returns
|
||||
a list of all atoms in the simulation; extract_atoms() returns just
|
||||
the atoms local to each processor. (4) Finally, the gather_atoms()
|
||||
e.g. :py:meth:`gather_atoms("x") <lammps.lammps.gather_atoms()>`, is
|
||||
different from the data structure returned by
|
||||
:py:meth:`extract_atom("x") <lammps.lammps.extract_atom()>` in four ways.
|
||||
(1) :code:`gather_atoms()` returns a vector which you index as x[i];
|
||||
:code:`extract_atom()` returns an array which you index as x[i][j].
|
||||
(2) :code:`gather_atoms()` orders the atoms by atom ID while
|
||||
:code:`extract_atom()` does not. (3) :code:`gather_atoms()` returns
|
||||
a list of all atoms in the simulation; :code:`extract_atoms()` returns just
|
||||
the atoms local to each processor. (4) Finally, the :code:`gather_atoms()`
|
||||
data structure is a copy of the atom coords stored internally in
|
||||
LAMMPS, whereas extract_atom() returns an array that effectively
|
||||
LAMMPS, whereas :code:`extract_atom()` returns an array that effectively
|
||||
points directly to the internal data. This means you can change
|
||||
values inside LAMMPS from Python by assigning a new values to the
|
||||
extract_atom() array. To do this with the gather_atoms() vector, you
|
||||
need to change values in the vector, then invoke the scatter_atoms()
|
||||
method.
|
||||
:code:`extract_atom()` array. To do this with the :code:`gather_atoms()` vector, you
|
||||
need to change values in the vector, then invoke the
|
||||
:py:meth:`scatter_atoms("x") <lammps.lammps.scatter_atoms()>` method.
|
||||
|
||||
For the scatter methods, the array of coordinates passed to must be a
|
||||
ctypes vector of ints or doubles, allocated and initialized something
|
||||
|
||||
@ -2,8 +2,8 @@ Basics of running LAMMPS
|
||||
========================
|
||||
|
||||
LAMMPS is run from the command line, reading commands from a file via
|
||||
the -in command line flag, or from standard input. Using the "-in
|
||||
in.file" variant is recommended (see note below). The name of the
|
||||
the ``-in`` command line flag, or from standard input. Using the ``-in
|
||||
in.file`` variant is recommended (see note below). The name of the
|
||||
LAMMPS executable is either ``lmp`` or ``lmp_<machine>`` with
|
||||
`<machine>` being the machine string used when compiling LAMMPS. This
|
||||
is required when compiling LAMMPS with the traditional build system
|
||||
@ -35,7 +35,7 @@ executable itself can be placed elsewhere.
|
||||
form is required.
|
||||
|
||||
As LAMMPS runs it prints info to the screen and a logfile named
|
||||
*log.lammps*\ . More info about output is given on the :doc:`screen and
|
||||
``log.lammps``. More info about output is given on the :doc:`screen and
|
||||
logfile output <Run_output>` page.
|
||||
|
||||
If LAMMPS encounters errors in the input script or while running a
|
||||
@ -69,12 +69,12 @@ defaults are often adequate.
|
||||
For example, it is often important to bind MPI tasks (processes) to
|
||||
physical cores (processor affinity), so that the operating system does
|
||||
not migrate them during a simulation. If this is not the default
|
||||
behavior on your machine, the mpirun option "--bind-to core" (OpenMPI)
|
||||
or "-bind-to core" (MPICH) can be used.
|
||||
behavior on your machine, the mpirun option ``--bind-to core`` (OpenMPI)
|
||||
or ``-bind-to core`` (MPICH) can be used.
|
||||
|
||||
If the LAMMPS command(s) you are using support multi-threading, you
|
||||
can set the number of threads per MPI task via the environment
|
||||
variable OMP_NUM_THREADS, before you launch LAMMPS:
|
||||
variable ``OMP_NUM_THREADS``, before you launch LAMMPS:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
@ -91,7 +91,7 @@ packages and which commands support multi-threading.
|
||||
|
||||
You can experiment with running LAMMPS using any of the input scripts
|
||||
provided in the examples or bench directory. Input scripts are named
|
||||
in.\* and sample outputs are named log.\*.P where P is the number of
|
||||
``in.*`` and sample outputs are named ``log.*.P`` where P is the number of
|
||||
processors it was run on.
|
||||
|
||||
Some of the examples or benchmarks require LAMMPS to be built with
|
||||
|
||||
@ -22,6 +22,7 @@ letter abbreviation can be used:
|
||||
* :ref:`-ro or -reorder <reorder>`
|
||||
* :ref:`-r2data or -restart2data <restart2data>`
|
||||
* :ref:`-r2dump or -restart2dump <restart2dump>`
|
||||
* :ref:`-r2info or -restart2info <restart2info>`
|
||||
* :ref:`-sc or -screen <screen>`
|
||||
* :ref:`-sr or skiprun <skiprun>`
|
||||
* :ref:`-sf or -suffix <suffix>`
|
||||
@ -274,13 +275,13 @@ impact can be significant, especially for large parallel runs.
|
||||
|
||||
Invoke the :doc:`package <package>` command with style and args. The
|
||||
syntax is the same as if the command appeared at the top of the input
|
||||
script. For example "-package gpu 2" or "-pk gpu 2" is the same as
|
||||
script. For example ``-package gpu 2`` or ``-pk gpu 2`` is the same as
|
||||
:doc:`package gpu 2 <package>` in the input script. The possible styles
|
||||
and args are documented on the :doc:`package <package>` doc page. This
|
||||
switch can be used multiple times, e.g. to set options for the
|
||||
INTEL and OPENMP packages which can be used together.
|
||||
|
||||
Along with the "-suffix" command-line switch, this is a convenient
|
||||
Along with the ``-suffix`` command-line switch, this is a convenient
|
||||
mechanism for invoking accelerator packages and their options without
|
||||
having to edit an input script.
|
||||
|
||||
@ -299,7 +300,7 @@ specify the number of processors in each partition. Arguments of the
|
||||
form MxN mean M partitions, each with N processors. Arguments of the
|
||||
form N mean a single partition with N processors. The sum of
|
||||
processors in all partitions must equal P. Thus the command
|
||||
"-partition 8x2 4 5" has 10 partitions and runs on a total of 25
|
||||
``-partition 8x2 4 5`` has 10 partitions and runs on a total of 25
|
||||
processors.
|
||||
|
||||
Running with multiple partitions can be useful for running
|
||||
@ -377,8 +378,8 @@ processors will be in the first partition, the second set in the second
|
||||
partition. The -reorder command-line switch can alter this so that
|
||||
the first N procs in the first partition and one proc in the second partition
|
||||
will be ordered consecutively, e.g. as the cores on one physical node.
|
||||
This can boost performance. For example, if you use "-reorder nth 4"
|
||||
and "-partition 9 3" and you are running on 12 processors, the
|
||||
This can boost performance. For example, if you use ``-reorder nth 4``
|
||||
and ``-partition 9 3`` and you are running on 12 processors, the
|
||||
processors will be reordered from
|
||||
|
||||
.. parsed-literal::
|
||||
@ -503,6 +504,37 @@ e.g. the *nfile* and *fileper* keywords. See the
|
||||
|
||||
----------
|
||||
|
||||
.. _restart2info:
|
||||
|
||||
**-restart2info restartfile keyword ...**
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
Write out some info about the restart file and and immediately exit.
|
||||
This is the same operation as if the following 2-line input script were
|
||||
run:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
read_restart restartfile
|
||||
info system group computes fixes
|
||||
|
||||
The specified restartfile name may contain the wild-card character "\*".
|
||||
The restartfile name may also contain the wild-card character "%". The
|
||||
meaning of these characters is explained on the :doc:`read_restart
|
||||
<read_restart>` documentation. The use of "%" means that a parallel
|
||||
restart file can be read. Note that a filename such as file.\* may need
|
||||
to be enclosed in quotes or the "\*" character prefixed with a backslash
|
||||
("\") to avoid shell expansion of the "\*" character.
|
||||
|
||||
Optional keywords may follow the restartfile argument. These must be
|
||||
valid keywords for the :doc:`info command <info>`. The most useful
|
||||
ones - *system*, *group*, *computes*, and *fixes* - are already applied.
|
||||
Appending keywords like *coeffs* or *communication* may provide
|
||||
additional useful information stored in the restart file.
|
||||
|
||||
----------
|
||||
|
||||
.. _screen:
|
||||
|
||||
**-screen file**
|
||||
@ -552,11 +584,11 @@ style that accepts arguments. It allows for two packages to be
|
||||
specified. The first package specified is the default and will be used
|
||||
if it is available. If no style is available for the first package,
|
||||
the style for the second package will be used if available. For
|
||||
example, "-suffix hybrid intel omp" will use styles from the
|
||||
example, ``-suffix hybrid intel omp`` will use styles from the
|
||||
INTEL package if they are installed and available, but styles for
|
||||
the OPENMP package otherwise.
|
||||
|
||||
Along with the "-package" command-line switch, this is a convenient
|
||||
Along with the ``-package`` command-line switch, this is a convenient
|
||||
mechanism for invoking accelerator packages and their options without
|
||||
having to edit an input script.
|
||||
|
||||
@ -573,30 +605,30 @@ variant version does not exist, the standard version is created.
|
||||
For the GPU package, using this command-line switch also invokes the
|
||||
default GPU settings, as if the command "package gpu 1" were used at
|
||||
the top of your input script. These settings can be changed by using
|
||||
the "-package gpu" command-line switch or the :doc:`package gpu <package>` command in your script.
|
||||
the ``-package gpu`` command-line switch or the :doc:`package gpu <package>` command in your script.
|
||||
|
||||
For the INTEL package, using this command-line switch also
|
||||
invokes the default INTEL settings, as if the command "package
|
||||
intel 1" were used at the top of your input script. These settings
|
||||
can be changed by using the "-package intel" command-line switch or
|
||||
can be changed by using the ``-package intel`` command-line switch or
|
||||
the :doc:`package intel <package>` command in your script. If the
|
||||
OPENMP package is also installed, the hybrid style with "intel omp"
|
||||
arguments can be used to make the omp suffix a second choice, if a
|
||||
requested style is not available in the INTEL package. It will
|
||||
also invoke the default OPENMP settings, as if the command "package
|
||||
omp 0" were used at the top of your input script. These settings can
|
||||
be changed by using the "-package omp" command-line switch or the
|
||||
be changed by using the ``-package omp`` command-line switch or the
|
||||
:doc:`package omp <package>` command in your script.
|
||||
|
||||
For the KOKKOS package, using this command-line switch also invokes
|
||||
the default KOKKOS settings, as if the command "package kokkos" were
|
||||
used at the top of your input script. These settings can be changed
|
||||
by using the "-package kokkos" command-line switch or the :doc:`package kokkos <package>` command in your script.
|
||||
by using the ``-package kokkos`` command-line switch or the :doc:`package kokkos <package>` command in your script.
|
||||
|
||||
For the OMP package, using this command-line switch also invokes the
|
||||
default OMP settings, as if the command "package omp 0" were used at
|
||||
the top of your input script. These settings can be changed by using
|
||||
the "-package omp" command-line switch or the :doc:`package omp <package>` command in your script.
|
||||
the ``-package omp`` command-line switch or the :doc:`package omp <package>` command in your script.
|
||||
|
||||
The :doc:`suffix <suffix>` command can also be used within an input
|
||||
script to set a suffix, or to turn off or back on any suffix setting
|
||||
|
||||
@ -15,7 +15,7 @@ The 5 standard problems are as follow:
|
||||
#. LJ = atomic fluid, Lennard-Jones potential with 2.5 sigma cutoff (55
|
||||
neighbors per atom), NVE integration
|
||||
#. Chain = bead-spring polymer melt of 100-mer chains, FENE bonds and LJ
|
||||
pairwise interactions with a 2\^(1/6) sigma cutoff (5 neighbors per
|
||||
pairwise interactions with a :math:`2^{\frac{1}{6}}` sigma cutoff (5 neighbors per
|
||||
atom), NVE integration
|
||||
#. EAM = metallic solid, Cu EAM potential with 4.95 Angstrom cutoff (45
|
||||
neighbors per atom), NVE integration
|
||||
@ -29,19 +29,19 @@ The 5 standard problems are as follow:
|
||||
Input files for these 5 problems are provided in the bench directory
|
||||
of the LAMMPS distribution. Each has 32,000 atoms and runs for 100
|
||||
timesteps. The size of the problem (number of atoms) can be varied
|
||||
using command-line switches as described in the bench/README file.
|
||||
using command-line switches as described in the ``bench/README`` file.
|
||||
This is an easy way to test performance and either strong or weak
|
||||
scalability on your machine.
|
||||
|
||||
The bench directory includes a few log.\* files that show performance
|
||||
of these 5 problems on 1 or 4 cores of Linux desktop. The bench/FERMI
|
||||
and bench/KEPLER directories have input files and scripts and instructions
|
||||
The bench directory includes a few ``log.*`` files that show performance
|
||||
of these 5 problems on 1 or 4 cores of Linux desktop. The ``bench/FERMI``
|
||||
and ``bench/KEPLER`` directories have input files and scripts and instructions
|
||||
for running the same (or similar) problems using OpenMP or GPU or Xeon
|
||||
Phi acceleration options. See the README files in those directories and the
|
||||
Phi acceleration options. See the ``README`` files in those directories and the
|
||||
:doc:`Accelerator packages <Speed_packages>` pages for instructions on how
|
||||
to build LAMMPS and run on that kind of hardware.
|
||||
|
||||
The bench/POTENTIALS directory has input files which correspond to the
|
||||
The ``bench/POTENTIALS`` directory has input files which correspond to the
|
||||
table of results on the
|
||||
`Potentials <https://www.lammps.org/bench.html#potentials>`_ section of
|
||||
the Benchmarks web page. So you can also run those test problems on
|
||||
@ -50,7 +50,7 @@ your machine.
|
||||
The `billion-atom <https://www.lammps.org/bench.html#billion>`_ section
|
||||
of the Benchmarks web page has performance data for very large
|
||||
benchmark runs of simple Lennard-Jones (LJ) models, which use the
|
||||
bench/in.lj input script.
|
||||
``bench/in.lj`` input script.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -38,10 +38,10 @@ to have an NVIDIA GPU and install the corresponding NVIDIA CUDA
|
||||
toolkit software on your system (this is only tested on Linux
|
||||
and unsupported on Windows):
|
||||
|
||||
* Check if you have an NVIDIA GPU: cat /proc/driver/nvidia/gpus/\*/information
|
||||
* Check if you have an NVIDIA GPU: ``cat /proc/driver/nvidia/gpus/\*/information``
|
||||
* Go to https://developer.nvidia.com/cuda-downloads
|
||||
* Install a driver and toolkit appropriate for your system (SDK is not necessary)
|
||||
* Run lammps/lib/gpu/nvc_get_devices (after building the GPU library, see below) to
|
||||
* Run ``lammps/lib/gpu/nvc_get_devices`` (after building the GPU library, see below) to
|
||||
list supported devices and properties
|
||||
|
||||
To compile and use this package in OpenCL mode, you currently need
|
||||
@ -51,7 +51,7 @@ installed. There can be multiple of them for the same or different hardware
|
||||
(GPUs, CPUs, Accelerators) installed at the same time. OpenCL refers to those
|
||||
as 'platforms'. The GPU library will try to auto-select the best suitable platform,
|
||||
but this can be overridden using the platform option of the :doc:`package <package>`
|
||||
command. run lammps/lib/gpu/ocl_get_devices to get a list of available
|
||||
command. run ``lammps/lib/gpu/ocl_get_devices`` to get a list of available
|
||||
platforms and devices with a suitable ICD available.
|
||||
|
||||
To compile and use this package for Intel GPUs, OpenCL or the Intel oneAPI
|
||||
@ -63,7 +63,7 @@ provides optimized C++, MPI, and many other libraries and tools. See:
|
||||
If you do not have a discrete GPU card installed, this package can still provide
|
||||
significant speedups on some CPUs that include integrated GPUs. Additionally, for
|
||||
many macs, OpenCL is already included with the OS and Makefiles are available
|
||||
in the lib/gpu directory.
|
||||
in the ``lib/gpu`` directory.
|
||||
|
||||
To compile and use this package in HIP mode, you have to have the AMD ROCm
|
||||
software installed. Versions of ROCm older than 3.5 are currently deprecated
|
||||
@ -94,31 +94,36 @@ shared by 4 MPI tasks.
|
||||
The GPU package also has limited support for OpenMP for both
|
||||
multi-threading and vectorization of routines that are run on the CPUs.
|
||||
This requires that the GPU library and LAMMPS are built with flags to
|
||||
enable OpenMP support (e.g. -fopenmp). Some styles for time integration
|
||||
enable OpenMP support (e.g. ``-fopenmp``). Some styles for time integration
|
||||
are also available in the GPU package. These run completely on the CPUs
|
||||
in full double precision, but exploit multi-threading and vectorization
|
||||
for faster performance.
|
||||
|
||||
Use the "-sf gpu" :doc:`command-line switch <Run_options>`, which will
|
||||
automatically append "gpu" to styles that support it. Use the "-pk
|
||||
gpu Ng" :doc:`command-line switch <Run_options>` to set Ng = # of
|
||||
GPUs/node to use. If Ng is 0, the number is selected automatically as
|
||||
Use the ``-sf gpu`` :doc:`command-line switch <Run_options>`, which will
|
||||
automatically append "gpu" to styles that support it. Use the ``-pk
|
||||
gpu Ng`` :doc:`command-line switch <Run_options>` to set ``Ng`` = # of
|
||||
GPUs/node to use. If ``Ng`` is 0, the number is selected automatically as
|
||||
the number of matching GPUs that have the highest number of compute
|
||||
cores.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
lmp_machine -sf gpu -pk gpu 1 -in in.script # 1 MPI task uses 1 GPU
|
||||
mpirun -np 12 lmp_machine -sf gpu -pk gpu 2 -in in.script # 12 MPI tasks share 2 GPUs on a single 16-core (or whatever) node
|
||||
mpirun -np 48 -ppn 12 lmp_machine -sf gpu -pk gpu 2 -in in.script # ditto on 4 16-core nodes
|
||||
# 1 MPI task uses 1 GPU
|
||||
lmp_machine -sf gpu -pk gpu 1 -in in.script
|
||||
|
||||
Note that if the "-sf gpu" switch is used, it also issues a default
|
||||
# 12 MPI tasks share 2 GPUs on a single 16-core (or whatever) node
|
||||
mpirun -np 12 lmp_machine -sf gpu -pk gpu 2 -in in.script
|
||||
|
||||
# ditto on 4 16-core nodes
|
||||
mpirun -np 48 -ppn 12 lmp_machine -sf gpu -pk gpu 2 -in in.script
|
||||
|
||||
Note that if the ``-sf gpu`` switch is used, it also issues a default
|
||||
:doc:`package gpu 0 <package>` command, which will result in
|
||||
automatic selection of the number of GPUs to use.
|
||||
|
||||
Using the "-pk" switch explicitly allows for setting of the number of
|
||||
Using the ``-pk`` switch explicitly allows for setting of the number of
|
||||
GPUs/node to use and additional options. Its syntax is the same as
|
||||
the "package gpu" command. See the :doc:`package <package>`
|
||||
the ``package gpu`` command. See the :doc:`package <package>`
|
||||
command page for details, including the default values used for
|
||||
all its options if it is not specified.
|
||||
|
||||
@ -141,7 +146,7 @@ Use the :doc:`suffix gpu <suffix>` command, or you can explicitly add an
|
||||
pair_style lj/cut/gpu 2.5
|
||||
|
||||
You must also use the :doc:`package gpu <package>` command to enable the
|
||||
GPU package, unless the "-sf gpu" or "-pk gpu" :doc:`command-line switches <Run_options>` were used. It specifies the number of
|
||||
GPU package, unless the ``-sf gpu`` or ``-pk gpu`` :doc:`command-line switches <Run_options>` were used. It specifies the number of
|
||||
GPUs/node to use, as well as other options.
|
||||
|
||||
**Speed-ups to expect:**
|
||||
|
||||
@ -41,7 +41,7 @@ precision mode. Performance improvements are shown compared to
|
||||
LAMMPS *without using other acceleration packages* as these are
|
||||
under active development (and subject to performance changes). The
|
||||
measurements were performed using the input files available in
|
||||
the src/INTEL/TEST directory with the provided run script.
|
||||
the ``src/INTEL/TEST`` directory with the provided run script.
|
||||
These are scalable in size; the results given are with 512K
|
||||
particles (524K for Liquid Crystal). Most of the simulations are
|
||||
standard LAMMPS benchmarks (indicated by the filename extension in
|
||||
@ -56,7 +56,7 @@ Results are speedups obtained on Intel Xeon E5-2697v4 processors
|
||||
Knights Landing), and Intel Xeon Gold 6148 processors (code-named
|
||||
Skylake) with "June 2017" LAMMPS built with Intel Parallel Studio
|
||||
2017 update 2. Results are with 1 MPI task per physical core. See
|
||||
*src/INTEL/TEST/README* for the raw simulation rates and
|
||||
``src/INTEL/TEST/README`` for the raw simulation rates and
|
||||
instructions to reproduce.
|
||||
|
||||
----------
|
||||
@ -82,9 +82,9 @@ order of operations compared to LAMMPS without acceleration:
|
||||
* The *newton* setting applies to all atoms, not just atoms shared
|
||||
between MPI tasks
|
||||
* Vectorization can change the order for adding pairwise forces
|
||||
* When using the -DLMP_USE_MKL_RNG define (all included intel optimized
|
||||
* When using the ``-DLMP_USE_MKL_RNG`` define (all included intel optimized
|
||||
makefiles do) at build time, the random number generator for
|
||||
dissipative particle dynamics (pair style dpd/intel) uses the Mersenne
|
||||
dissipative particle dynamics (``pair style dpd/intel``) uses the Mersenne
|
||||
Twister generator included in the Intel MKL library (that should be
|
||||
more robust than the default Masaglia random number generator)
|
||||
|
||||
@ -106,36 +106,36 @@ LAMMPS should be built with the INTEL package installed.
|
||||
Simulations should be run with 1 MPI task per physical *core*,
|
||||
not *hardware thread*\ .
|
||||
|
||||
* Edit src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi as necessary.
|
||||
* Set the environment variable KMP_BLOCKTIME=0
|
||||
* "-pk intel 0 omp $t -sf intel" added to LAMMPS command-line
|
||||
* $t should be 2 for Intel Xeon CPUs and 2 or 4 for Intel Xeon Phi
|
||||
* Edit ``src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi`` as necessary.
|
||||
* Set the environment variable ``KMP_BLOCKTIME=0``
|
||||
* ``-pk intel 0 omp $t -sf intel`` added to LAMMPS command-line
|
||||
* ``$t`` should be 2 for Intel Xeon CPUs and 2 or 4 for Intel Xeon Phi
|
||||
* For some of the simple 2-body potentials without long-range
|
||||
electrostatics, performance and scalability can be better with
|
||||
the "newton off" setting added to the input script
|
||||
* For simulations on higher node counts, add "processors \* \* \* grid
|
||||
numa" to the beginning of the input script for better scalability
|
||||
* If using *kspace_style pppm* in the input script, add
|
||||
"kspace_modify diff ad" for better performance
|
||||
the ``newton off`` setting added to the input script
|
||||
* For simulations on higher node counts, add ``processors * * * grid
|
||||
numa`` to the beginning of the input script for better scalability
|
||||
* If using ``kspace_style pppm`` in the input script, add
|
||||
``kspace_modify diff ad`` for better performance
|
||||
|
||||
For Intel Xeon Phi CPUs:
|
||||
|
||||
* Runs should be performed using MCDRAM.
|
||||
|
||||
For simulations using *kspace_style pppm* on Intel CPUs supporting
|
||||
For simulations using ``kspace_style pppm`` on Intel CPUs supporting
|
||||
AVX-512:
|
||||
|
||||
* Add "kspace_modify diff ad" to the input script
|
||||
* Add ``kspace_modify diff ad`` to the input script
|
||||
* The command-line option should be changed to
|
||||
"-pk intel 0 omp $r lrt yes -sf intel" where $r is the number of
|
||||
``-pk intel 0 omp $r lrt yes -sf intel`` where ``$r`` is the number of
|
||||
threads minus 1.
|
||||
* Do not use thread affinity (set KMP_AFFINITY=none)
|
||||
* The "newton off" setting may provide better scalability
|
||||
* Do not use thread affinity (set ``KMP_AFFINITY=none``)
|
||||
* The ``newton off`` setting may provide better scalability
|
||||
|
||||
For Intel Xeon Phi co-processors (Offload):
|
||||
|
||||
* Edit src/MAKE/OPTIONS/Makefile.intel_co-processor as necessary
|
||||
* "-pk intel N omp 1" added to command-line where N is the number of
|
||||
* Edit ``src/MAKE/OPTIONS/Makefile.intel_co-processor`` as necessary
|
||||
* ``-pk intel N omp 1`` added to command-line where ``N`` is the number of
|
||||
co-processors per node.
|
||||
|
||||
----------
|
||||
@ -209,7 +209,7 @@ See the :ref:`Build extras <intel>` page for
|
||||
instructions. Some additional details are covered here.
|
||||
|
||||
For building with make, several example Makefiles for building with
|
||||
the Intel compiler are included with LAMMPS in the src/MAKE/OPTIONS/
|
||||
the Intel compiler are included with LAMMPS in the ``src/MAKE/OPTIONS/``
|
||||
directory:
|
||||
|
||||
.. code-block:: bash
|
||||
@ -239,35 +239,35 @@ However, if you do not have co-processors on your system, building
|
||||
without offload support will produce a smaller binary.
|
||||
|
||||
The general requirements for Makefiles with the INTEL package
|
||||
are as follows. When using Intel compilers, "-restrict" is required
|
||||
and "-qopenmp" is highly recommended for CCFLAGS and LINKFLAGS.
|
||||
CCFLAGS should include "-DLMP_INTEL_USELRT" (unless POSIX Threads
|
||||
are not supported in the build environment) and "-DLMP_USE_MKL_RNG"
|
||||
are as follows. When using Intel compilers, ``-restrict`` is required
|
||||
and ``-qopenmp`` is highly recommended for ``CCFLAGS`` and ``LINKFLAGS``.
|
||||
``CCFLAGS`` should include ``-DLMP_INTEL_USELRT`` (unless POSIX Threads
|
||||
are not supported in the build environment) and ``-DLMP_USE_MKL_RNG``
|
||||
(unless Intel Math Kernel Library (MKL) is not available in the build
|
||||
environment). For Intel compilers, LIB should include "-ltbbmalloc"
|
||||
or if the library is not available, "-DLMP_INTEL_NO_TBB" can be added
|
||||
to CCFLAGS. For builds supporting offload, "-DLMP_INTEL_OFFLOAD" is
|
||||
required for CCFLAGS and "-qoffload" is required for LINKFLAGS. Other
|
||||
recommended CCFLAG options for best performance are "-O2 -fno-alias
|
||||
-ansi-alias -qoverride-limits fp-model fast=2 -no-prec-div".
|
||||
environment). For Intel compilers, ``LIB`` should include ``-ltbbmalloc``
|
||||
or if the library is not available, ``-DLMP_INTEL_NO_TBB`` can be added
|
||||
to ``CCFLAGS``. For builds supporting offload, ``-DLMP_INTEL_OFFLOAD`` is
|
||||
required for ``CCFLAGS`` and ``-qoffload`` is required for ``LINKFLAGS``. Other
|
||||
recommended ``CCFLAG`` options for best performance are ``-O2 -fno-alias
|
||||
-ansi-alias -qoverride-limits fp-model fast=2 -no-prec-div``.
|
||||
|
||||
.. note::
|
||||
|
||||
See the src/INTEL/README file for additional flags that
|
||||
See the ``src/INTEL/README`` file for additional flags that
|
||||
might be needed for best performance on Intel server processors
|
||||
code-named "Skylake".
|
||||
|
||||
.. note::
|
||||
|
||||
The vectorization and math capabilities can differ depending on
|
||||
the CPU. For Intel compilers, the "-x" flag specifies the type of
|
||||
processor for which to optimize. "-xHost" specifies that the compiler
|
||||
the CPU. For Intel compilers, the ``-x`` flag specifies the type of
|
||||
processor for which to optimize. ``-xHost`` specifies that the compiler
|
||||
should build for the processor used for compiling. For Intel Xeon Phi
|
||||
x200 series processors, this option is "-xMIC-AVX512". For fourth
|
||||
generation Intel Xeon (v4/Broadwell) processors, "-xCORE-AVX2" should
|
||||
be used. For older Intel Xeon processors, "-xAVX" will perform best
|
||||
x200 series processors, this option is ``-xMIC-AVX512``. For fourth
|
||||
generation Intel Xeon (v4/Broadwell) processors, ``-xCORE-AVX2`` should
|
||||
be used. For older Intel Xeon processors, ``-xAVX`` will perform best
|
||||
in general for the different simulations in LAMMPS. The default
|
||||
in most of the example Makefiles is to use "-xHost", however this
|
||||
in most of the example Makefiles is to use ``-xHost``, however this
|
||||
should not be used when cross-compiling.
|
||||
|
||||
Running LAMMPS with the INTEL package
|
||||
@ -304,11 +304,11 @@ almost all cases.
|
||||
uniform. Unless disabled at build time, affinity for MPI tasks and
|
||||
OpenMP threads on the host (CPU) will be set by default on the host
|
||||
*when using offload to a co-processor*\ . In this case, it is unnecessary
|
||||
to use other methods to control affinity (e.g. taskset, numactl,
|
||||
I_MPI_PIN_DOMAIN, etc.). This can be disabled with the *no_affinity*
|
||||
to use other methods to control affinity (e.g. ``taskset``, ``numactl``,
|
||||
``I_MPI_PIN_DOMAIN``, etc.). This can be disabled with the *no_affinity*
|
||||
option to the :doc:`package intel <package>` command or by disabling the
|
||||
option at build time (by adding -DINTEL_OFFLOAD_NOAFFINITY to the
|
||||
CCFLAGS line of your Makefile). Disabling this option is not
|
||||
option at build time (by adding ``-DINTEL_OFFLOAD_NOAFFINITY`` to the
|
||||
``CCFLAGS`` line of your Makefile). Disabling this option is not
|
||||
recommended, especially when running on a machine with Intel
|
||||
Hyper-Threading technology disabled.
|
||||
|
||||
@ -316,7 +316,7 @@ Run with the INTEL package from the command line
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
To enable INTEL optimizations for all available styles used in
|
||||
the input script, the "-sf intel" :doc:`command-line switch <Run_options>` can be used without any requirement for
|
||||
the input script, the ``-sf intel`` :doc:`command-line switch <Run_options>` can be used without any requirement for
|
||||
editing the input script. This switch will automatically append
|
||||
"intel" to styles that support it. It also invokes a default command:
|
||||
:doc:`package intel 1 <package>`. This package command is used to set
|
||||
@ -329,15 +329,15 @@ will be used with automatic balancing of work between the CPU and the
|
||||
co-processor.
|
||||
|
||||
You can specify different options for the INTEL package by using
|
||||
the "-pk intel Nphi" :doc:`command-line switch <Run_options>` with
|
||||
keyword/value pairs as specified in the documentation. Here, Nphi = #
|
||||
the ``-pk intel Nphi`` :doc:`command-line switch <Run_options>` with
|
||||
keyword/value pairs as specified in the documentation. Here, ``Nphi`` = #
|
||||
of Xeon Phi co-processors/node (ignored without offload
|
||||
support). Common options to the INTEL package include *omp* to
|
||||
override any OMP_NUM_THREADS setting and specify the number of OpenMP
|
||||
override any ``OMP_NUM_THREADS`` setting and specify the number of OpenMP
|
||||
threads, *mode* to set the floating-point precision mode, and *lrt* to
|
||||
enable Long-Range Thread mode as described below. See the :doc:`package intel <package>` command for details, including the default values
|
||||
used for all its options if not specified, and how to set the number
|
||||
of OpenMP threads via the OMP_NUM_THREADS environment variable if
|
||||
of OpenMP threads via the ``OMP_NUM_THREADS`` environment variable if
|
||||
desired.
|
||||
|
||||
Examples (see documentation for your MPI/Machine for differences in
|
||||
@ -345,8 +345,13 @@ launching MPI applications):
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script # 2 nodes, 36 MPI tasks/node, $OMP_NUM_THREADS OpenMP Threads
|
||||
mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script -pk intel 0 omp 2 mode double # Don't use any co-processors that might be available, use 2 OpenMP threads for each task, use double precision
|
||||
# 2 nodes, 36 MPI tasks/node, $OMP_NUM_THREADS OpenMP Threads
|
||||
mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script
|
||||
|
||||
# Don't use any co-processors that might be available,
|
||||
# use 2 OpenMP threads for each task, use double precision
|
||||
mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script \
|
||||
-pk intel 0 omp 2 mode double
|
||||
|
||||
Or run with the INTEL package by editing an input script
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
@ -386,19 +391,19 @@ Long-Range Thread (LRT) mode is an option to the :doc:`package intel <package>`
|
||||
with SMT. It generates an extra pthread for each MPI task. The thread
|
||||
is dedicated to performing some of the PPPM calculations and MPI
|
||||
communications. This feature requires setting the pre-processor flag
|
||||
-DLMP_INTEL_USELRT in the makefile when compiling LAMMPS. It is unset
|
||||
in the default makefiles (\ *Makefile.mpi* and *Makefile.serial*\ ) but
|
||||
``-DLMP_INTEL_USELRT`` in the makefile when compiling LAMMPS. It is unset
|
||||
in the default makefiles (``Makefile.mpi`` and ``Makefile.serial``) but
|
||||
it is set in all makefiles tuned for the INTEL package. On Intel
|
||||
Xeon Phi x200 series CPUs, the LRT feature will likely improve
|
||||
performance, even on a single node. On Intel Xeon processors, using
|
||||
this mode might result in better performance when using multiple nodes,
|
||||
depending on the specific machine configuration. To enable LRT mode,
|
||||
specify that the number of OpenMP threads is one less than would
|
||||
normally be used for the run and add the "lrt yes" option to the "-pk"
|
||||
normally be used for the run and add the ``lrt yes`` option to the ``-pk``
|
||||
command-line suffix or "package intel" command. For example, if a run
|
||||
would normally perform best with "-pk intel 0 omp 4", instead use
|
||||
"-pk intel 0 omp 3 lrt yes". When using LRT, you should set the
|
||||
environment variable "KMP_AFFINITY=none". LRT mode is not supported
|
||||
``-pk intel 0 omp 3 lrt yes``. When using LRT, you should set the
|
||||
environment variable ``KMP_AFFINITY=none``. LRT mode is not supported
|
||||
when using offload.
|
||||
|
||||
.. note::
|
||||
@ -411,12 +416,12 @@ Not all styles are supported in the INTEL package. You can mix
|
||||
the INTEL package with styles from the :doc:`OPT <Speed_opt>`
|
||||
package or the :doc:`OPENMP package <Speed_omp>`. Of course, this
|
||||
requires that these packages were installed at build time. This can
|
||||
performed automatically by using "-sf hybrid intel opt" or "-sf hybrid
|
||||
intel omp" command-line options. Alternatively, the "opt" and "omp"
|
||||
performed automatically by using ``-sf hybrid intel opt`` or ``-sf hybrid
|
||||
intel omp`` command-line options. Alternatively, the "opt" and "omp"
|
||||
suffixes can be appended manually in the input script. For the latter,
|
||||
the :doc:`package omp <package>` command must be in the input script or
|
||||
the "-pk omp Nt" :doc:`command-line switch <Run_options>` must be used
|
||||
where Nt is the number of OpenMP threads. The number of OpenMP threads
|
||||
the ``-pk omp Nt`` :doc:`command-line switch <Run_options>` must be used
|
||||
where ``Nt`` is the number of OpenMP threads. The number of OpenMP threads
|
||||
should not be set differently for the different packages. Note that
|
||||
the :doc:`suffix hybrid intel omp <suffix>` command can also be used
|
||||
within the input script to automatically append the "omp" suffix to
|
||||
@ -436,7 +441,7 @@ alternative to LRT mode and the two cannot be used together.
|
||||
|
||||
Currently, when using Intel MPI with Intel Xeon Phi x200 series
|
||||
CPUs, better performance might be obtained by setting the
|
||||
environment variable "I_MPI_SHM_LMT=shm" for Linux kernels that do
|
||||
environment variable ``I_MPI_SHM_LMT=shm`` for Linux kernels that do
|
||||
not yet have full support for AVX-512. Runs on Intel Xeon Phi x200
|
||||
series processors will always perform better using MCDRAM. Please
|
||||
consult your system documentation for the best approach to specify
|
||||
@ -515,7 +520,7 @@ per MPI task. Additionally, an offload timing summary is printed at
|
||||
the end of each run. When offloading, the frequency for :doc:`atom sorting <atom_modify>` is changed to 1 so that the per-atom data is
|
||||
effectively sorted at every rebuild of the neighbor lists. All the
|
||||
available co-processor threads on each Phi will be divided among MPI
|
||||
tasks, unless the *tptask* option of the "-pk intel" :doc:`command-line switch <Run_options>` is used to limit the co-processor threads per
|
||||
tasks, unless the ``tptask`` option of the ``-pk intel`` :doc:`command-line switch <Run_options>` is used to limit the co-processor threads per
|
||||
MPI task.
|
||||
|
||||
Restrictions
|
||||
|
||||
@ -48,7 +48,7 @@ version 23 November 2023 and Kokkos version 4.2.
|
||||
|
||||
Kokkos requires using a compiler that supports the c++17 standard. For
|
||||
some compilers, it may be necessary to add a flag to enable c++17 support.
|
||||
For example, the GNU compiler uses the -std=c++17 flag. For a list of
|
||||
For example, the GNU compiler uses the ``-std=c++17`` flag. For a list of
|
||||
compilers that have been tested with the Kokkos library, see the
|
||||
`requirements document of the Kokkos Wiki
|
||||
<https://kokkos.github.io/kokkos-core-wiki/requirements.html>`_.
|
||||
@ -111,14 +111,21 @@ for CPU acceleration, assuming one or more 16-core nodes.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -in in.lj # 1 node, 16 MPI tasks/node, no multi-threading
|
||||
mpirun -np 2 -ppn 1 lmp_kokkos_omp -k on t 16 -sf kk -in in.lj # 2 nodes, 1 MPI task/node, 16 threads/task
|
||||
mpirun -np 2 lmp_kokkos_omp -k on t 8 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 8 threads/task
|
||||
mpirun -np 32 -ppn 4 lmp_kokkos_omp -k on t 4 -sf kk -in in.lj # 8 nodes, 4 MPI tasks/node, 4 threads/task
|
||||
# 1 node, 16 MPI tasks/node, no multi-threading
|
||||
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -in in.lj
|
||||
|
||||
To run using the KOKKOS package, use the "-k on", "-sf kk" and "-pk
|
||||
kokkos" :doc:`command-line switches <Run_options>` in your mpirun
|
||||
command. You must use the "-k on" :doc:`command-line switch <Run_options>` to enable the KOKKOS package. It takes
|
||||
# 2 nodes, 1 MPI task/node, 16 threads/task
|
||||
mpirun -np 2 -ppn 1 lmp_kokkos_omp -k on t 16 -sf kk -in in.lj
|
||||
|
||||
# 1 node, 2 MPI tasks/node, 8 threads/task
|
||||
mpirun -np 2 lmp_kokkos_omp -k on t 8 -sf kk -in in.lj
|
||||
|
||||
# 8 nodes, 4 MPI tasks/node, 4 threads/task
|
||||
mpirun -np 32 -ppn 4 lmp_kokkos_omp -k on t 4 -sf kk -in in.lj
|
||||
|
||||
To run using the KOKKOS package, use the ``-k on``, ``-sf kk`` and ``-pk
|
||||
kokkos`` :doc:`command-line switches <Run_options>` in your ``mpirun``
|
||||
command. You must use the ``-k on`` :doc:`command-line switch <Run_options>` to enable the KOKKOS package. It takes
|
||||
additional arguments for hardware settings appropriate to your system.
|
||||
For OpenMP use:
|
||||
|
||||
@ -126,18 +133,18 @@ For OpenMP use:
|
||||
|
||||
-k on t Nt
|
||||
|
||||
The "t Nt" option specifies how many OpenMP threads per MPI task to
|
||||
use with a node. The default is Nt = 1, which is MPI-only mode. Note
|
||||
The ``t Nt`` option specifies how many OpenMP threads per MPI task to
|
||||
use with a node. The default is ``Nt`` = 1, which is MPI-only mode. Note
|
||||
that the product of MPI tasks \* OpenMP threads/task should not exceed
|
||||
the physical number of cores (on a node), otherwise performance will
|
||||
suffer. If Hyper-Threading (HT) is enabled, then the product of MPI
|
||||
tasks \* OpenMP threads/task should not exceed the physical number of
|
||||
cores \* hardware threads. The "-k on" switch also issues a
|
||||
"package kokkos" command (with no additional arguments) which sets
|
||||
cores \* hardware threads. The ``-k on`` switch also issues a
|
||||
``package kokkos`` command (with no additional arguments) which sets
|
||||
various KOKKOS options to default values, as discussed on the
|
||||
:doc:`package <package>` command doc page.
|
||||
|
||||
The "-sf kk" :doc:`command-line switch <Run_options>` will automatically
|
||||
The ``-sf kk`` :doc:`command-line switch <Run_options>` will automatically
|
||||
append the "/kk" suffix to styles that support it. In this manner no
|
||||
modification to the input script is needed. Alternatively, one can run
|
||||
with the KOKKOS package by editing the input script as described
|
||||
@ -146,20 +153,22 @@ below.
|
||||
.. note::
|
||||
|
||||
When using a single OpenMP thread, the Kokkos Serial back end (i.e.
|
||||
Makefile.kokkos_mpi_only) will give better performance than the OpenMP
|
||||
back end (i.e. Makefile.kokkos_omp) because some of the overhead to make
|
||||
``Makefile.kokkos_mpi_only``) will give better performance than the OpenMP
|
||||
back end (i.e. ``Makefile.kokkos_omp``) because some of the overhead to make
|
||||
the code thread-safe is removed.
|
||||
|
||||
.. note::
|
||||
|
||||
Use the "-pk kokkos" :doc:`command-line switch <Run_options>` to
|
||||
Use the ``-pk kokkos`` :doc:`command-line switch <Run_options>` to
|
||||
change the default :doc:`package kokkos <package>` options. See its doc
|
||||
page for details and default settings. Experimenting with its options
|
||||
can provide a speed-up for specific calculations. For example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj # Newton on, Half neighbor list, non-threaded comm
|
||||
# Newton on, Half neighbor list, non-threaded comm
|
||||
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk \
|
||||
-pk kokkos newton on neigh half comm no -in in.lj
|
||||
|
||||
If the :doc:`newton <newton>` command is used in the input
|
||||
script, it can also override the Newton flag defaults.
|
||||
@ -172,7 +181,7 @@ small numbers of threads (i.e. 8 or less) but does increase memory
|
||||
footprint and is not scalable to large numbers of threads. An
|
||||
alternative to data duplication is to use thread-level atomic operations
|
||||
which do not require data duplication. The use of atomic operations can
|
||||
be enforced by compiling LAMMPS with the "-DLMP_KOKKOS_USE_ATOMICS"
|
||||
be enforced by compiling LAMMPS with the ``-DLMP_KOKKOS_USE_ATOMICS``
|
||||
pre-processor flag. Most but not all Kokkos-enabled pair_styles support
|
||||
data duplication. Alternatively, full neighbor lists avoid the need for
|
||||
duplication or atomic operations but require more compute operations per
|
||||
@ -190,10 +199,13 @@ they do not migrate during a simulation.
|
||||
If you are not certain MPI tasks are being bound (check the defaults
|
||||
for your MPI installation), binding can be forced with these flags:
|
||||
|
||||
.. parsed-literal::
|
||||
.. code-block:: bash
|
||||
|
||||
OpenMPI 1.8: mpirun -np 2 --bind-to socket --map-by socket ./lmp_openmpi ...
|
||||
Mvapich2 2.0: mpiexec -np 2 --bind-to socket --map-by socket ./lmp_mvapich ...
|
||||
# OpenMPI 1.8
|
||||
mpirun -np 2 --bind-to socket --map-by socket ./lmp_openmpi ...
|
||||
|
||||
# Mvapich2 2.0
|
||||
mpiexec -np 2 --bind-to socket --map-by socket ./lmp_mvapich ...
|
||||
|
||||
For binding threads with KOKKOS OpenMP, use thread affinity environment
|
||||
variables to force binding. With OpenMP 3.1 (gcc 4.7 or later, intel 12
|
||||
@ -222,15 +234,24 @@ Examples of mpirun commands that follow these rules are shown below.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# Running on an Intel KNL node with 68 cores (272 threads/node via 4x hardware threading):
|
||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -in in.lj # 1 node, 64 MPI tasks/node, 4 threads/task
|
||||
mpirun -np 66 lmp_kokkos_phi -k on t 4 -sf kk -in in.lj # 1 node, 66 MPI tasks/node, 4 threads/task
|
||||
mpirun -np 32 lmp_kokkos_phi -k on t 8 -sf kk -in in.lj # 1 node, 32 MPI tasks/node, 8 threads/task
|
||||
mpirun -np 512 -ppn 64 lmp_kokkos_phi -k on t 4 -sf kk -in in.lj # 8 nodes, 64 MPI tasks/node, 4 threads/task
|
||||
# Running on an Intel KNL node with 68 cores
|
||||
# (272 threads/node via 4x hardware threading):
|
||||
|
||||
The -np setting of the mpirun command sets the number of MPI
|
||||
tasks/node. The "-k on t Nt" command-line switch sets the number of
|
||||
threads/task as Nt. The product of these two values should be N, i.e.
|
||||
# 1 node, 64 MPI tasks/node, 4 threads/task
|
||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -in in.lj
|
||||
|
||||
# 1 node, 66 MPI tasks/node, 4 threads/task
|
||||
mpirun -np 66 lmp_kokkos_phi -k on t 4 -sf kk -in in.lj
|
||||
|
||||
# 1 node, 32 MPI tasks/node, 8 threads/task
|
||||
mpirun -np 32 lmp_kokkos_phi -k on t 8 -sf kk -in in.lj
|
||||
|
||||
# 8 nodes, 64 MPI tasks/node, 4 threads/task
|
||||
mpirun -np 512 -ppn 64 lmp_kokkos_phi -k on t 4 -sf kk -in in.lj
|
||||
|
||||
The ``-np`` setting of the mpirun command sets the number of MPI
|
||||
tasks/node. The ``-k on t Nt`` command-line switch sets the number of
|
||||
threads/task as ``Nt``. The product of these two values should be N, i.e.
|
||||
256 or 264.
|
||||
|
||||
.. note::
|
||||
@ -240,7 +261,7 @@ threads/task as Nt. The product of these two values should be N, i.e.
|
||||
flag to "on" for both pairwise and bonded interactions. This will
|
||||
typically be best for many-body potentials. For simpler pairwise
|
||||
potentials, it may be faster to use a "full" neighbor list with
|
||||
Newton flag to "off". Use the "-pk kokkos" :doc:`command-line switch
|
||||
Newton flag to "off". Use the ``-pk kokkos`` :doc:`command-line switch
|
||||
<Run_options>` to change the default :doc:`package kokkos <package>`
|
||||
options. See its documentation page for details and default
|
||||
settings. Experimenting with its options can provide a speed-up for
|
||||
@ -248,8 +269,12 @@ threads/task as Nt. The product of these two values should be N, i.e.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm host -in in.reax # Newton on, half neighbor list, threaded comm
|
||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton off neigh full comm no -in in.lj # Newton off, full neighbor list, non-threaded comm
|
||||
# Newton on, half neighbor list, threaded comm
|
||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm host -in in.reax
|
||||
|
||||
# Newton off, full neighbor list, non-threaded comm
|
||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk \
|
||||
-pk kokkos newton off neigh full comm no -in in.lj
|
||||
|
||||
.. note::
|
||||
|
||||
@ -266,8 +291,8 @@ threads/task as Nt. The product of these two values should be N, i.e.
|
||||
Running on GPUs
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
Use the "-k" :doc:`command-line switch <Run_options>` to specify the
|
||||
number of GPUs per node. Typically the -np setting of the mpirun command
|
||||
Use the ``-k`` :doc:`command-line switch <Run_options>` to specify the
|
||||
number of GPUs per node. Typically the ``-np`` setting of the ``mpirun`` command
|
||||
should set the number of MPI tasks/node to be equal to the number of
|
||||
physical GPUs on the node. You can assign multiple MPI tasks to the same
|
||||
GPU with the KOKKOS package, but this is usually only faster if some
|
||||
@ -290,8 +315,11 @@ one or more nodes, each with two GPUs:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 2 GPUs/node
|
||||
mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total)
|
||||
# 1 node, 2 MPI tasks/node, 2 GPUs/node
|
||||
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj
|
||||
|
||||
# 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total)
|
||||
mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj
|
||||
|
||||
.. note::
|
||||
|
||||
@ -303,7 +331,7 @@ one or more nodes, each with two GPUs:
|
||||
neighbor lists and setting the Newton flag to "on" may be faster. For
|
||||
many pair styles, setting the neighbor binsize equal to twice the CPU
|
||||
default value will give speedup, which is the default when running on
|
||||
GPUs. Use the "-pk kokkos" :doc:`command-line switch <Run_options>`
|
||||
GPUs. Use the ``-pk kokkos`` :doc:`command-line switch <Run_options>`
|
||||
to change the default :doc:`package kokkos <package>` options. See
|
||||
its documentation page for details and default
|
||||
settings. Experimenting with its options can provide a speed-up for
|
||||
@ -311,7 +339,9 @@ one or more nodes, each with two GPUs:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff
|
||||
# Newton on, half neighbor list, set binsize = neighbor ghost cutoff
|
||||
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk \
|
||||
-pk kokkos newton on neigh half binsize 2.8 -in in.lj
|
||||
|
||||
.. note::
|
||||
|
||||
@ -329,7 +359,7 @@ one or more nodes, each with two GPUs:
|
||||
more), the creation of the atom map (required for molecular systems)
|
||||
on the GPU can slow down significantly or run out of GPU memory and
|
||||
thus slow down the whole calculation or cause a crash. You can use
|
||||
the "-pk kokkos atom/map no" :doc:`command-line switch <Run_options>`
|
||||
the ``-pk kokkos atom/map no`` :doc:`command-line switch <Run_options>`
|
||||
of the :doc:`package kokkos atom/map no <package>` command to create
|
||||
the atom map on the CPU instead.
|
||||
|
||||
@ -346,20 +376,20 @@ one or more nodes, each with two GPUs:
|
||||
.. note::
|
||||
|
||||
To get an accurate timing breakdown between time spend in pair,
|
||||
kspace, etc., you must set the environment variable CUDA_LAUNCH_BLOCKING=1.
|
||||
kspace, etc., you must set the environment variable ``CUDA_LAUNCH_BLOCKING=1``.
|
||||
However, this will reduce performance and is not recommended for production runs.
|
||||
|
||||
Run with the KOKKOS package by editing an input script
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Alternatively the effect of the "-sf" or "-pk" switches can be
|
||||
Alternatively the effect of the ``-sf`` or ``-pk`` switches can be
|
||||
duplicated by adding the :doc:`package kokkos <package>` or :doc:`suffix kk <suffix>` commands to your input script.
|
||||
|
||||
The discussion above for building LAMMPS with the KOKKOS package, the
|
||||
``mpirun`` or ``mpiexec`` command, and setting appropriate thread
|
||||
properties are the same.
|
||||
|
||||
You must still use the "-k on" :doc:`command-line switch <Run_options>`
|
||||
You must still use the ``-k on`` :doc:`command-line switch <Run_options>`
|
||||
to enable the KOKKOS package, and specify its additional arguments for
|
||||
hardware options appropriate to your system, as documented above.
|
||||
|
||||
@ -378,7 +408,7 @@ wish to change any of its option defaults, as set by the "-k on"
|
||||
|
||||
With the KOKKOS package, both OpenMP multi-threading and GPUs can be
|
||||
compiled and used together in a few special cases. In the makefile for
|
||||
the conventional build, the KOKKOS_DEVICES variable must include both,
|
||||
the conventional build, the ``KOKKOS_DEVICES`` variable must include both,
|
||||
"Cuda" and "OpenMP", as is the case for ``/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi``.
|
||||
|
||||
.. code-block:: bash
|
||||
@ -390,14 +420,14 @@ in the ``kokkos-cuda.cmake`` CMake preset file.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cmake ../cmake -DKokkos_ENABLE_CUDA=yes -DKokkos_ENABLE_OPENMP=yes
|
||||
cmake -DKokkos_ENABLE_CUDA=yes -DKokkos_ENABLE_OPENMP=yes ../cmake
|
||||
|
||||
The suffix "/kk" is equivalent to "/kk/device", and for Kokkos CUDA,
|
||||
using the "-sf kk" in the command line gives the default CUDA version
|
||||
using the ``-sf kk`` in the command line gives the default CUDA version
|
||||
everywhere. However, if the "/kk/host" suffix is added to a specific
|
||||
style in the input script, the Kokkos OpenMP (CPU) version of that
|
||||
specific style will be used instead. Set the number of OpenMP threads
|
||||
as "t Nt" and the number of GPUs as "g Ng"
|
||||
as ``t Nt`` and the number of GPUs as ``g Ng``
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -409,7 +439,7 @@ For example, the command to run with 1 GPU and 8 OpenMP threads is then:
|
||||
|
||||
mpiexec -np 1 lmp_kokkos_cuda_openmpi -in in.lj -k on g 1 t 8 -sf kk
|
||||
|
||||
Conversely, if the "-sf kk/host" is used in the command line and then
|
||||
Conversely, if the ``-sf kk/host`` is used in the command line and then
|
||||
the "/kk" or "/kk/device" suffix is added to a specific style in your
|
||||
input script, then only that specific style will run on the GPU while
|
||||
everything else will run on the CPU in OpenMP mode. Note that the
|
||||
@ -418,11 +448,11 @@ special case:
|
||||
|
||||
A kspace style and/or molecular topology (bonds, angles, etc.) running
|
||||
on the host CPU can overlap with a pair style running on the
|
||||
GPU. First compile with "--default-stream per-thread" added to CCFLAGS
|
||||
GPU. First compile with ``--default-stream per-thread`` added to ``CCFLAGS``
|
||||
in the Kokkos CUDA Makefile. Then explicitly use the "/kk/host"
|
||||
suffix for kspace and bonds, angles, etc. in the input file and the
|
||||
"kk" suffix (equal to "kk/device") on the command line. Also make
|
||||
sure the environment variable CUDA_LAUNCH_BLOCKING is not set to "1"
|
||||
sure the environment variable ``CUDA_LAUNCH_BLOCKING`` is not set to "1"
|
||||
so CPU/GPU overlap can occur.
|
||||
|
||||
Performance to expect
|
||||
|
||||
@ -28,32 +28,39 @@ These examples assume one or more 16-core nodes.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
env OMP_NUM_THREADS=16 lmp_omp -sf omp -in in.script # 1 MPI task, 16 threads according to OMP_NUM_THREADS
|
||||
lmp_mpi -sf omp -in in.script # 1 MPI task, no threads, optimized kernels
|
||||
mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script # 4 MPI tasks, 4 threads/task
|
||||
mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task
|
||||
# 1 MPI task, 16 threads according to OMP_NUM_THREADS
|
||||
env OMP_NUM_THREADS=16 lmp_omp -sf omp -in in.script
|
||||
|
||||
# 1 MPI task, no threads, optimized kernels
|
||||
lmp_mpi -sf omp -in in.script
|
||||
|
||||
# 4 MPI tasks, 4 threads/task
|
||||
mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script
|
||||
|
||||
# 8 nodes, 4 MPI tasks/node, 4 threads/task
|
||||
mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script
|
||||
|
||||
The ``mpirun`` or ``mpiexec`` command sets the total number of MPI tasks
|
||||
used by LAMMPS (one or multiple per compute node) and the number of MPI
|
||||
tasks used per node. E.g. the mpirun command in MPICH does this via
|
||||
its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode.
|
||||
its ``-np`` and ``-ppn`` switches. Ditto for OpenMPI via ``-np`` and ``-npernode``.
|
||||
|
||||
You need to choose how many OpenMP threads per MPI task will be used
|
||||
by the OPENMP package. Note that the product of MPI tasks \*
|
||||
threads/task should not exceed the physical number of cores (on a
|
||||
node), otherwise performance will suffer.
|
||||
|
||||
As in the lines above, use the "-sf omp" :doc:`command-line switch <Run_options>`, which will automatically append "omp" to
|
||||
styles that support it. The "-sf omp" switch also issues a default
|
||||
As in the lines above, use the ``-sf omp`` :doc:`command-line switch <Run_options>`, which will automatically append "omp" to
|
||||
styles that support it. The ``-sf omp`` switch also issues a default
|
||||
:doc:`package omp 0 <package>` command, which will set the number of
|
||||
threads per MPI task via the OMP_NUM_THREADS environment variable.
|
||||
threads per MPI task via the ``OMP_NUM_THREADS`` environment variable.
|
||||
|
||||
You can also use the "-pk omp Nt" :doc:`command-line switch <Run_options>`, to explicitly set Nt = # of OpenMP threads
|
||||
You can also use the ``-pk omp Nt`` :doc:`command-line switch <Run_options>`, to explicitly set ``Nt`` = # of OpenMP threads
|
||||
per MPI task to use, as well as additional options. Its syntax is the
|
||||
same as the :doc:`package omp <package>` command whose page gives
|
||||
details, including the default values used if it is not specified. It
|
||||
also gives more details on how to set the number of threads via the
|
||||
OMP_NUM_THREADS environment variable.
|
||||
``OMP_NUM_THREADS`` environment variable.
|
||||
|
||||
Or run with the OPENMP package by editing an input script
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
@ -71,7 +78,7 @@ Use the :doc:`suffix omp <suffix>` command, or you can explicitly add an
|
||||
You must also use the :doc:`package omp <package>` command to enable the
|
||||
OPENMP package. When you do this you also specify how many threads
|
||||
per MPI task to use. The command page explains other options and
|
||||
how to set the number of threads via the OMP_NUM_THREADS environment
|
||||
how to set the number of threads via the ``OMP_NUM_THREADS`` environment
|
||||
variable.
|
||||
|
||||
Speed-up to expect
|
||||
|
||||
@ -80,23 +80,30 @@ it provides, follow these general steps. Details vary from package to
|
||||
package and are explained in the individual accelerator doc pages,
|
||||
listed above:
|
||||
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| build the accelerator library | only for GPU package |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| install the accelerator package | make yes-opt, make yes-intel, etc |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| add compile/link flags to Makefile.machine in src/MAKE | only for INTEL, KOKKOS, OPENMP, OPT packages |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| re-build LAMMPS | make machine |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| prepare and test a regular LAMMPS simulation | lmp_machine -in in.script; mpirun -np 32 lmp_machine -in in.script |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| enable specific accelerator support via '-k on' :doc:`command-line switch <Run_options>`, | only needed for KOKKOS package |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| set any needed options for the package via "-pk" :doc:`command-line switch <Run_options>` or :doc:`package <package>` command, | only if defaults need to be changed |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
| use accelerated styles in your input via "-sf" :doc:`command-line switch <Run_options>` or :doc:`suffix <suffix>` command | lmp_machine -in in.script -sf gpu |
|
||||
+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| build the accelerator library | only for GPU package |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| install the accelerator package | ``make yes-opt``, ``make yes-intel``, etc |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| add compile/link flags to ``Makefile.machine`` | only for INTEL, KOKKOS, OPENMP, |
|
||||
| in ``src/MAKE`` | OPT packages |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| re-build LAMMPS | ``make machine`` |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| prepare and test a regular LAMMPS simulation | ``lmp_machine -in in.script;`` |
|
||||
| | ``mpirun -np 32 lmp_machine -in in.script`` |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| enable specific accelerator support via ``-k on`` | only needed for KOKKOS package |
|
||||
| :doc:`command-line switch <Run_options>` | |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| set any needed options for the package via ``-pk`` | only if defaults need to be changed |
|
||||
| :doc:`command-line switch <Run_options>` or | |
|
||||
| :doc:`package <package>` command | |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
| use accelerated styles in your input via ``-sf`` | ``lmp_machine -in in.script -sf gpu`` |
|
||||
| :doc:`command-line switch <Run_options>` or | |
|
||||
| :doc:`suffix <suffix>` command | |
|
||||
+-----------------------------------------------------------+---------------------------------------------+
|
||||
|
||||
Note that the first 4 steps can be done as a single command with
|
||||
suitable make command invocations. This is discussed on the
|
||||
|
||||
@ -58,6 +58,7 @@ Pre-processing tools
|
||||
* :ref:`polybond <polybond>`
|
||||
* :ref:`stl_bin2txt <stlconvert>`
|
||||
* :ref:`tabulate <tabulate>`
|
||||
* :ref:`tinker <tinker>`
|
||||
|
||||
Post-processing tools
|
||||
=====================
|
||||
@ -97,6 +98,7 @@ Miscellaneous tools
|
||||
* :ref:`Offline build tool <offline>`
|
||||
* :ref:`singularity/apptainer <singularity_tool>`
|
||||
* :ref:`SWIG interface <swig>`
|
||||
* :ref:`valgrind <valgrind>`
|
||||
* :ref:`vim <vim>`
|
||||
|
||||
----------
|
||||
@ -109,7 +111,7 @@ Tool descriptions
|
||||
amber2lmp tool
|
||||
--------------------------
|
||||
|
||||
The amber2lmp subdirectory contains two Python scripts for converting
|
||||
The amber2lmp subdirectory contains three Python scripts for converting
|
||||
files back-and-forth between the AMBER MD code and LAMMPS. See the
|
||||
README file in amber2lmp for more information.
|
||||
|
||||
@ -302,7 +304,7 @@ The parameters for Cr were taken from:
|
||||
Lin Z B, Johnson R A and Zhigilei L V, Phys. Rev. B 77 214108 (2008).
|
||||
|
||||
The Python version of the tool was authored by Germain Clavier
|
||||
(TU Eindhoven) g.m.g.c.clavier at tue.nl or germain.clavier at gmail.com
|
||||
(Unicaen) germain.clavier at unicaen.fr
|
||||
|
||||
.. note::
|
||||
|
||||
@ -1210,6 +1212,33 @@ included. See the README file for more information.
|
||||
|
||||
----------
|
||||
|
||||
.. _tinker:
|
||||
|
||||
tinker tool
|
||||
--------------
|
||||
|
||||
The ``tinker`` folder contains Python scripts scripts to convert Tinker input
|
||||
files to LAMMPS.
|
||||
|
||||
See the README file for more information.
|
||||
|
||||
Those scripts were written by Steve Plimpton sjplimp at gmail.com
|
||||
|
||||
----------
|
||||
|
||||
.. _valgrind:
|
||||
|
||||
valgrind tool
|
||||
-------------
|
||||
|
||||
The ``valgrind`` folder contains additional suppressions fur LAMMPS when using
|
||||
valgrind's memcheck tool to search for memory access violation and memory
|
||||
leaks. These suppressions are automatically invoked when running tests through
|
||||
CMake "ctest -T memcheck". See the provided README file to add these
|
||||
suppressions when running LAMMPS.
|
||||
|
||||
----------
|
||||
|
||||
.. _vim:
|
||||
|
||||
vim tool
|
||||
|
||||
@ -49,7 +49,7 @@ angle.
|
||||
|
||||
The torque on the dipole can be obtained by differentiating the
|
||||
potential using the 'chain rule' as in appendix C.3 of
|
||||
:ref:`(Allen) <Allen1>`:
|
||||
:ref:`(AllenTildesley) <Allen1>`:
|
||||
|
||||
.. math::
|
||||
|
||||
@ -129,5 +129,5 @@ lipid membranes, PloS ONE 6(12): e28637, 2011.
|
||||
|
||||
.. _Allen1:
|
||||
|
||||
**(Allen)** Allen & Tildesley, Computer Simulation of Liquids,
|
||||
**(AllenTildesley)** Allen & Tildesley, Computer Simulation of Liquids,
|
||||
Clarendon Press, Oxford, 1987.
|
||||
|
||||
@ -52,7 +52,7 @@ file; angle coefficients need to be re-specified.
|
||||
exist between 3 bonded atoms.
|
||||
|
||||
In the formulas listed for each angle style, *theta* is the angle
|
||||
between the 3 atoms in the angle.
|
||||
between the three atoms in the angle.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -68,7 +68,7 @@ must be set before this command can be invoked.
|
||||
The table of the angle energy and force data data is created by using a
|
||||
separate, internally created, new LAMMPS instance with a dummy system of
|
||||
3 atoms for which the angle potential energy is computed after
|
||||
transferring the angle style and coefficients and arranging the 3 atoms
|
||||
transferring the angle style and coefficients and arranging the three atoms
|
||||
into the corresponding geometries. The angle force is then determined
|
||||
from the potential energies through numerical differentiation. As a
|
||||
consequence of this approach, not all angle styles are compatible. The
|
||||
|
||||
@ -34,7 +34,7 @@ Syntax
|
||||
- internal_energy : total internal energy (potential + thermal) per unit volume
|
||||
- energy : total energy (potential + kinetic) per unit volume
|
||||
- number_density : number of atoms per unit volume
|
||||
- eshelby_stress : configurational stress (energy-momentum) tensor defined by [Eshelby]_
|
||||
- eshelby_stress : configurational stress (energy-momentum) tensor defined by :ref:`(Eshelby) <Eshelby1>`
|
||||
- vacancy_concentration : volume fraction of vacancy content
|
||||
- type_concentration : volume fraction of a specific atom type
|
||||
|
||||
@ -83,4 +83,6 @@ By default, no fields are output.
|
||||
References
|
||||
""""""""""
|
||||
|
||||
.. [Eshelby] J.D. Eshelby, Philos. Trans. Royal Soc. London A, Math. Phys. Sci., Vol. 244, No. 877 (1951) pp. 87-112; J. Elasticity, Vol. 5, Nos. 3-4 (1975) pp. 321-335]
|
||||
.. _Eshelby1:
|
||||
|
||||
**(Eshelby)** J.D. Eshelby, Philos. Trans. Royal Soc. London A, Math. Phys. Sci., Vol. 244, No. 877 (1951) pp. 87-112; J. Elasticity, Vol. 5, Nos. 3-4 (1975) pp. 321-335]
|
||||
|
||||
@ -32,7 +32,7 @@ Syntax
|
||||
- internal_energy : total internal energy (potential + thermal) per unit volume
|
||||
- energy : total energy (potential + kinetic) per unit volume
|
||||
- number_density : number of atoms per unit volume
|
||||
- eshelby_stress : configurational stress (energy-momentum) tensor defined by [Eshelby]_
|
||||
- eshelby_stress : configurational stress (energy-momentum) tensor defined by :ref:`(Eshelby) <Eshelby3>`
|
||||
- vacancy_concentration : volume fraction of vacancy content
|
||||
- type_concentration : volume fraction of a specific atom type
|
||||
|
||||
@ -72,3 +72,10 @@ Default
|
||||
"""""""
|
||||
|
||||
None.
|
||||
|
||||
References
|
||||
""""""""""
|
||||
|
||||
.. _Eshelby3:
|
||||
|
||||
**(Eshelby)** J.D. Eshelby, Philos. Trans. Royal Soc. London A, Math. Phys. Sci., Vol. 244, No. 877 (1951) pp. 87-112; J. Elasticity, Vol. 5, Nos. 3-4 (1975) pp. 321-335]
|
||||
|
||||
@ -32,7 +32,7 @@ Syntax
|
||||
- internal_energy : total internal energy (potential + thermal) per unit volume
|
||||
- energy : total energy (potential + kinetic) per unit volume
|
||||
- number_density : number of atoms per unit volume
|
||||
- eshelby_stress : configurational stress (energy-momentum) tensor defined by [Eshelby]_
|
||||
- eshelby_stress : configurational stress (energy-momentum) tensor defined by :ref:`(Eshelby) <Eshelby2>`
|
||||
- vacancy_concentration : volume fraction of vacancy content
|
||||
- type_concentration : volume fraction of a specific atom type
|
||||
|
||||
@ -72,3 +72,10 @@ Default
|
||||
"""""""
|
||||
|
||||
None.
|
||||
|
||||
References
|
||||
""""""""""
|
||||
|
||||
.. _Eshelby2:
|
||||
|
||||
**(Eshelby)** J.D. Eshelby, Philos. Trans. Royal Soc. London A, Math. Phys. Sci., Vol. 244, No. 877 (1951) pp. 87-112; J. Elasticity, Vol. 5, Nos. 3-4 (1975) pp. 321-335]
|
||||
|
||||
@ -103,7 +103,7 @@ the Additional Information section below.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
:widths: 12 28 18 32
|
||||
|
||||
* - Atom style
|
||||
- Attributes
|
||||
@ -419,7 +419,7 @@ showing the use of the *template* atom style versus *molecular*.
|
||||
<molecule>` that contains multiple molecules, you should ensure the
|
||||
atom types, bond types, angle_types, etc in all the molecules are
|
||||
consistent. E.g. if one molecule represents H2O and another CO2,
|
||||
then you probably do not want each molecule file to define 2 atom
|
||||
then you probably do not want each molecule file to define two atom
|
||||
types and a single bond type, because they will conflict with each
|
||||
other when a mixture system of H2O and CO2 molecules is defined,
|
||||
e.g. by the :doc:`read_data <read_data>` command. Rather the H2O
|
||||
|
||||
@ -19,10 +19,10 @@ Syntax
|
||||
* N = prepare data for output every this many timesteps
|
||||
* attributes = zero or more of the below attributes may be appended
|
||||
|
||||
*id1, id2* = IDs of 2 atoms in the bond
|
||||
*id1, id2* = IDs of two atoms in the bond
|
||||
*time* = the timestep the bond broke
|
||||
*x, y, z* = the center of mass position of the 2 atoms when the bond broke (distance units)
|
||||
*x/ref, y/ref, z/ref* = the initial center of mass position of the 2 atoms (distance units)
|
||||
*x, y, z* = the center of mass position of the two atoms when the bond broke (distance units)
|
||||
*x/ref, y/ref, z/ref* = the initial center of mass position of the two atoms (distance units)
|
||||
|
||||
*overlay/pair* value = *yes* or *no*
|
||||
bonded particles will still interact with pair forces
|
||||
|
||||
@ -19,10 +19,10 @@ Syntax
|
||||
* N = prepare data for output every this many timesteps
|
||||
* attributes = zero or more of the below attributes may be appended
|
||||
|
||||
*id1, id2* = IDs of 2 atoms in the bond
|
||||
*id1, id2* = IDs of two atoms in the bond
|
||||
*time* = the timestep the bond broke
|
||||
*x, y, z* = the center of mass position of the 2 atoms when the bond broke (distance units)
|
||||
*x/ref, y/ref, z/ref* = the initial center of mass position of the 2 atoms (distance units)
|
||||
*x, y, z* = the center of mass position of the two atoms when the bond broke (distance units)
|
||||
*x/ref, y/ref, z/ref* = the initial center of mass position of the two atoms (distance units)
|
||||
|
||||
*overlay/pair* value = *yes* or *no*
|
||||
bonded particles will still interact with pair forces
|
||||
|
||||
@ -22,10 +22,10 @@ Syntax
|
||||
* N = prepare data for output every this many timesteps
|
||||
* attributes = zero or more of the below attributes may be appended
|
||||
|
||||
*id1, id2* = IDs of 2 atoms in the bond
|
||||
*id1, id2* = IDs of two atoms in the bond
|
||||
*time* = the timestep the bond broke
|
||||
*x, y, z* = the center of mass position of the 2 atoms when the bond broke (distance units)
|
||||
*x/ref, y/ref, z/ref* = the initial center of mass position of the 2 atoms (distance units)
|
||||
*x, y, z* = the center of mass position of the two atoms when the bond broke (distance units)
|
||||
*x/ref, y/ref, z/ref* = the initial center of mass position of the two atoms (distance units)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
@ -59,10 +59,10 @@ coefficients need to be re-specified.
|
||||
When both a bond and pair style is defined, the
|
||||
:doc:`special_bonds <special_bonds>` command often needs to be used to
|
||||
turn off (or weight) the pairwise interaction that would otherwise
|
||||
exist between 2 bonded atoms.
|
||||
exist between two bonded atoms.
|
||||
|
||||
In the formulas listed for each bond style, *r* is the distance
|
||||
between the 2 atoms in the bond.
|
||||
between the two atoms in the bond.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Syntax
|
||||
* inner,outer = inner and outer bond length (distance units)
|
||||
* file = name of file to write values to
|
||||
* keyword = section name in file for this set of tabulated values
|
||||
* itype,jtype = 2 atom types (optional)
|
||||
* itype,jtype = two atom types (optional)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -39,7 +39,7 @@ of the file to allow multiple tables of energy and force to be included
|
||||
in one file. The individual sections may be identified by the *keyword*.
|
||||
|
||||
The energy and force values are computed at distances from *inner* to
|
||||
*outer* for 2 interacting atoms forming a bond of type *btype*, using
|
||||
*outer* for two interacting atoms forming a bond of type *btype*, using
|
||||
the appropriate :doc:`bond_coeff <bond_coeff>` coefficients. N evenly
|
||||
spaced distances are used.
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user