diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt index 887652425c..aedc2fc64f 100644 --- a/doc/src/Section_howto.txt +++ b/doc/src/Section_howto.txt @@ -165,9 +165,16 @@ Many of the example input scripts included in the LAMMPS distribution are for 2d models. NOTE: Some models in LAMMPS treat particles as finite-size spheres, as -opposed to point particles. In 2d, the particles will still be -spheres, not disks, meaning their moment of inertia will be the same -as in 3d. +opposed to point particles. See the "atom_style +sphere"_atom_style.html and "fix nve/sphere"_fix_nve_sphere.html +commands for details. By default, for 2d simulations, such particles +will still be modeled as 3d spheres, not 2d discs (circles), meaning +their moment of inertia will be that of a sphere. If you wish to +model them as 2d discs, see the "set density/disc"_set.html command +and the {disc} option for the "fix nve/sphere"_fix_nve_sphere.html, +"fix nvt/sphere"_fix_nvt_sphere.html, "fix +nph/sphere"_fix_nph_sphere.html, "fix npt/sphere"_fix_npt_sphere.html +commands. :line @@ -434,6 +441,12 @@ computations between frozen atoms by using this command: "neigh_modify"_neigh_modify.html exclude :ul +NOTE: By default, for 2d systems, granular particles are still modeled +as 3d spheres, not 2d discs (circles), meaning their moment of inertia +will be the same as in 3d. If you wish to model granular particles in +2d as 2d discs, see the note on this topic in "Section +6.2"_Section_howto.html#howto_2, where 2d simulations are disussed. + :line 6.7 TIP3P water model :link(howto_7),h4 @@ -451,7 +464,7 @@ atoms and the water molecule to run a rigid TIP3P-CHARMM model with a cutoff. The K values can be used if a flexible TIP3P model (without fix shake) is desired. If the LJ epsilon and sigma for HH and OH are set to 0.0, it corresponds to the original 1983 TIP3P model -"(Jorgensen)"_#Jorgensen. +"(Jorgensen)"_#Jorgensen1. O mass = 15.9994 H mass = 1.008 @@ -469,7 +482,7 @@ K of HOH angle = 55 theta of HOH angle = 104.52 :all(b),p These are the parameters to use for TIP3P with a long-range Coulombic -solver (e.g. Ewald or PPPM in LAMMPS), see "(Price)"_#Price for +solver (e.g. Ewald or PPPM in LAMMPS), see "(Price)"_#Price1 for details: O mass = 15.9994 @@ -513,7 +526,7 @@ using the "fix shake"_fix_shake.html command. These are the additional parameters (in real units) to set for O and H atoms and the water molecule to run a rigid TIP4P model with a cutoff -"(Jorgensen)"_#Jorgensen. Note that the OM distance is specified in +"(Jorgensen)"_#Jorgensen1. Note that the OM distance is specified in the "pair_style"_pair_style.html command, not as part of the pair coefficients. @@ -1838,7 +1851,7 @@ the deformation must be chosen judiciously, and care must be taken to fully equilibrate the deformed cell before sampling the stress tensor. Another approach is to sample the triclinic cell fluctuations that occur in an NPT simulation. This method can also be slow to -converge and requires careful post-processing "(Shinoda)"_#Shinoda +converge and requires careful post-processing "(Shinoda)"_#Shinoda1 :line @@ -2903,14 +2916,14 @@ Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998). [(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909 (1990). -:link(Jorgensen) +:link(Jorgensen1) [(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem Phys, 79, 926 (1983). -:link(Price) +:link(Price1) [(Price)] Price and Brooks, J Chem Phys, 121, 10096 (2004). -:link(Shinoda) +:link(Shinoda1) [(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004). :link(MitchellFincham) diff --git a/doc/src/Section_tools.txt b/doc/src/Section_tools.txt index 695af3b18c..b34cac4dc0 100644 --- a/doc/src/Section_tools.txt +++ b/doc/src/Section_tools.txt @@ -39,15 +39,16 @@ authors. The source code for each of these codes is in the tools sub-directory of the LAMMPS distribution. There is a Makefile (which you may need to edit for your platform) which will build several of the tools which -reside in that directory. Some of them are larger packages in their -own sub-directories with their own Makefiles. +reside in that directory. Most of them are larger packages in their +own sub-directories with their own Makefiles and/or README files. "amber2lmp"_#amber "binary2txt"_#binary "ch2lmp"_#charmm "chain"_#chain "colvars"_#colvars -"createatoms"_#create +"createatoms"_#createtools +"drude"_#drude "eam database"_#eamdb "eam generate"_#eamgn "eff"_#eff @@ -63,11 +64,11 @@ own sub-directories with their own Makefiles. "moltemplate"_#moltemplate "msi2lmp"_#msi "phonon"_#phonon -"polymer bonding"_#polybond +"polybond"_#polybond "pymol_asphere"_#pymol "python"_#pythontools "reax"_#reax_tool -"restart2data"_#restart +"smd"_#smd "vim"_#vim "xmgrace"_#xmgrace @@ -171,6 +172,19 @@ The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov. :line +drude tool :h4,link(drude) + +The tools/drude directory contains a Python script called +polarizer.py which can add Drude oscillators to a LAMMPS +data file in the required format. + +See the header of the polarizer.py file for details. + +The tool is authored by Agilio Padua and Alain Dequidt: agilio.padua +at univ-bpclermont.fr, alain.dequidt at univ-bpclermont.fr + +:line + eam database tool :h4,link(eamdb) The tools/eam_database directory contains a Fortran program that will @@ -382,7 +396,7 @@ University. :line -polymer bonding tool :h4,link(polybond) +polybond tool :h4,link(polybond) The polybond sub-directory contains a Python-based tool useful for performing "programmable polymer bonding". The Python file @@ -441,29 +455,19 @@ These tools were written by Aidan Thompson at Sandia. :line -restart2data tool :h4,link(restart) +smd tool :h4,link(smd) -NOTE: This tool is now obsolete and is not included in the current -LAMMPS distribution. This is because there is now a -"write_data"_write_data.html command, which can create a data file -from within an input script. Running LAMMPS with the "-r" -"command-line switch"_Section_start.html#start_7 as follows: +The smd sub-directory contains a C++ file dump2vtk_tris.cpp and +Makefile which can be compiled and used to convert triangle output +files created by the Smooth-Mach Dynamics (USER-SMD) package into a +VTK-compatible unstructured grid file. It could then be read in and +visualized by VTK. -lmp_g++ -r restartfile datafile +See the header of dump2vtk.cpp for more details. -is the same as running a 2-line input script: - -read_restart restartfile -write_data datafile - -which will produce the same data file that the restart2data tool used -to create. - -IMPORTANT NOTE: LAMMPS' binary restart files are generally not portable -between platforms, compiler settings and LAMMPS versions. Changes in -the format itself are rare, but no effort is made to maintain backward -compatibility. Data files are mostly backward and forward portable, -if no features are used that exist in only one LAMMPS version. +This tool was written by the USER-SMD package author, Georg +Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics, +Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). :line diff --git a/doc/src/angle_dipole.txt b/doc/src/angle_dipole.txt index 9d105c269d..d91f260d51 100644 --- a/doc/src/angle_dipole.txt +++ b/doc/src/angle_dipole.txt @@ -41,7 +41,7 @@ angle. The torque on the dipole can be obtained by differentiating the potential using the 'chain rule' as in appendix C.3 of -"(Allen)"_#Allen: +"(Allen)"_#Allen1: :c,image(Eqs/angle_dipole_torque.jpg) @@ -121,6 +121,6 @@ This angle style should not be used with SHAKE. [(Orsi)] Orsi & Essex, The ELBA force field for coarse-grain modeling of lipid membranes, PloS ONE 6(12): e28637, 2011. -:link(Allen) +:link(Allen1) [(Allen)] Allen & Tildesley, Computer Simulation of Liquids, Clarendon Press, Oxford, 1987. diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt index 3d5c0a4f3d..077636dfd1 100644 --- a/doc/src/atom_style.txt +++ b/doc/src/atom_style.txt @@ -110,7 +110,12 @@ basis. For the {sphere} style, the particles are spheres and each stores a per-particle diameter and mass. If the diameter > 0.0, the particle is a finite-size sphere. If the diameter = 0.0, it is a point -particle. +particle. Note that by use of the {disc} keyword with the "fix +nve/sphere"_fix_nve_sphere.html, "fix nvt/sphere"_fix_nvt_sphere.html, +"fix nph/sphere"_fix_nph_sphere.html, "fix +npt/sphere"_fix_npt_sphere.html commands, spheres can be effectively +treated as 2d discs for a 2d simulation if desired. See also the "set +density/disc"_set.html command. For the {ellipsoid} style, the particles are ellipsoids and each stores a flag which indicates whether it is a finite-size ellipsoid or diff --git a/doc/src/compute_chunk_atom.txt b/doc/src/compute_chunk_atom.txt index b3b09ffa71..3a46f79d16 100644 --- a/doc/src/compute_chunk_atom.txt +++ b/doc/src/compute_chunk_atom.txt @@ -148,7 +148,9 @@ described further below where the keywords are discussed. The {binning} styles perform a spatial binning of atoms, and assign an atom the chunk ID corresponding to the bin number it is in. {Nchunk} is set to the number of bins, which can change if the simulation box -size changes. +size changes. This also depends on the setting of the {units} +keyword; e.g. for {reduced} units the number of chunks may not change +even if the box size does. The {bin/1d}, {bin/2d}, and {bin/3d} styles define bins as 1d layers (slabs), 2d pencils, or 3d boxes. The {dim}, {origin}, and {delta} diff --git a/doc/src/compute_coord_atom.txt b/doc/src/compute_coord_atom.txt index 854a5778ec..a88f7ec729 100644 --- a/doc/src/compute_coord_atom.txt +++ b/doc/src/compute_coord_atom.txt @@ -64,7 +64,7 @@ defined by the orientational order parameter calculated by the "compute orientorder/atom"_compute_orientorder_atom.html command. This {cstyle} thus allows one to apply the ten Wolde's criterion to identify crystal-like atoms in a system, as discussed in "ten -Wolde"_#tenWolde. +Wolde"_#tenWolde1. The ID of the previously specified "compute orientorder/atom"_compute_orientorder/atom command is specified as @@ -127,6 +127,6 @@ explained above. :line -:link(tenWolde) +:link(tenWolde1) [(tenWolde)] P. R. ten Wolde, M. J. Ruiz-Montero, D. Frenkel, J. Chem. Phys. 104, 9932 (1996). diff --git a/doc/src/compute_dpd.txt b/doc/src/compute_dpd.txt index 11602d3dd8..0e43feb9d2 100644 --- a/doc/src/compute_dpd.txt +++ b/doc/src/compute_dpd.txt @@ -64,7 +64,7 @@ command. :line -:link(Larentzos) +:link(Larentzos1) [(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 diff --git a/doc/src/compute_dpd_atom.txt b/doc/src/compute_dpd_atom.txt index 356b2490c7..0532fc60c6 100644 --- a/doc/src/compute_dpd_atom.txt +++ b/doc/src/compute_dpd_atom.txt @@ -59,7 +59,7 @@ command. :line -:link(Larentzos) +:link(Larentzos2) [(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 diff --git a/doc/src/compute_orientorder_atom.txt b/doc/src/compute_orientorder_atom.txt index 2aa76ab5ac..70c7ef68f7 100644 --- a/doc/src/compute_orientorder_atom.txt +++ b/doc/src/compute_orientorder_atom.txt @@ -78,7 +78,7 @@ normalized complex vector {Ybar_lm} of degree {ldegree}, which must be explicitly included in the keyword {degrees}. This option can be used in conjunction with "compute coord_atom"_compute_coord_atom.html to calculate the ten Wolde's criterion to identify crystal-like -particles, as discussed in "ten Wolde"_#tenWolde. +particles, as discussed in "ten Wolde"_#tenWolde2. The value of {Ql} is set to zero for atoms not in the specified compute group, as well as for atoms that have less than @@ -143,6 +143,6 @@ Phys. Rev. B 28, 784 (1983). [(Mickel)] W. Mickel, S. C. Kapfer, G. E. Schroeder-Turkand, K. Mecke, J. Chem. Phys. 138, 044501 (2013). -:link(tenWolde) +:link(tenWolde2) [(tenWolde)] P. R. ten Wolde, M. J. Ruiz-Montero, D. Frenkel, J. Chem. Phys. 104, 9932 (1996). diff --git a/doc/src/compute_pe_atom.txt b/doc/src/compute_pe_atom.txt index 6de3a79e5b..c312c886a6 100644 --- a/doc/src/compute_pe_atom.txt +++ b/doc/src/compute_pe_atom.txt @@ -49,7 +49,7 @@ pairwise interactions between 1-4 atoms. The energy contribution of these terms is included in the pair energy, not the dihedral energy. The KSpace contribution is calculated using the method in -"(Heyes)"_#Heyes for the Ewald method and a related method for PPPM, +"(Heyes)"_#Heyes1 for the Ewald method and a related method for PPPM, as specified by the "kspace_style pppm"_kspace_style.html command. For PPPM, the calculation requires 1 extra FFT each timestep that per-atom energy is calculated. This "document"_PDF/kspace.pdf @@ -97,5 +97,5 @@ stress/atom"_compute_stress_atom.html :line -:link(Heyes) +:link(Heyes1) [(Heyes)] Heyes, Phys Rev B 49, 755 (1994), diff --git a/doc/src/compute_pressure.txt b/doc/src/compute_pressure.txt index ae62859b17..292e779f72 100644 --- a/doc/src/compute_pressure.txt +++ b/doc/src/compute_pressure.txt @@ -70,7 +70,7 @@ means include all terms except the kinetic energy {ke}. Details of how LAMMPS computes the virial efficiently for the entire system, including for manybody potentials and accounting for the effects of periodic boundary conditions are discussed in -"(Thompson)"_#Thompson. +"(Thompson)"_#Thompson1. The temperature and kinetic energy tensor is not calculated by this compute, but rather by the temperature compute specified with the @@ -150,5 +150,5 @@ stress/atom"_compute_stress_atom.html, :line -:link(Thompson) +:link(Thompson1) [(Thompson)] Thompson, Plimpton, Mattson, J Chem Phys, 131, 154107 (2009). diff --git a/doc/src/compute_sna_atom.txt b/doc/src/compute_sna_atom.txt index 82c2ba93aa..0332ab9c1c 100644 --- a/doc/src/compute_sna_atom.txt +++ b/doc/src/compute_sna_atom.txt @@ -50,12 +50,12 @@ for each atom in a group. Bispectrum components of an atom are order parameters characterizing the radial and angular distribution of neighbor atoms. The detailed mathematical definition is given in the paper by Thompson et -al. "(Thompson)"_#Thompson2014 +al. "(Thompson)"_#Thompson20141 The position of a neighbor atom {i'} relative to a central atom {i} is a point within the 3D ball of radius {R_ii' = rcutfac*(R_i + R_i')} -Bartok et al. "(Bartok)"_#Bartok2010, proposed mapping this 3D ball +Bartok et al. "(Bartok)"_#Bartok20101, proposed mapping this 3D ball onto the 3-sphere, the surface of the unit ball in a four-dimensional space. The radial distance {r} within {R_ii'} is mapped on to a third polar angle {theta0} defined by, @@ -92,7 +92,7 @@ The expansion coefficients {u^j_m,m'} are complex-valued and they are not directly useful as descriptors, because they are not invariant under rotation of the polar coordinate frame. However, the following scalar triple products of expansion coefficients can be shown to be -real-valued and invariant under rotation "(Bartok)"_#Bartok2010. +real-valued and invariant under rotation "(Bartok)"_#Bartok20101. :c,image(Eqs/compute_sna_atom3.jpg) @@ -226,11 +226,11 @@ The optional keyword defaults are {diagonal} = 0, {rmin0} = 0, :line -:link(Thompson2014) +:link(Thompson20141) [(Thompson)] Thompson, Swiler, Trott, Foiles, Tucker, under review, preprint available at "arXiv:1409.3880"_http://arxiv.org/abs/1409.3880 -:link(Bartok2010) +:link(Bartok20101) [(Bartok)] Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010). :link(Meremianin2006) diff --git a/doc/src/compute_stress_atom.txt b/doc/src/compute_stress_atom.txt index d09c8069cc..83b1df68e3 100644 --- a/doc/src/compute_stress_atom.txt +++ b/doc/src/compute_stress_atom.txt @@ -74,7 +74,7 @@ other atoms in the simulation, not just with other atoms in the group. Details of how LAMMPS computes the virial for individual atoms for either pairwise or manybody potentials, and including the effects of -periodic boundary conditions is discussed in "(Thompson)"_#Thompson. +periodic boundary conditions is discussed in "(Thompson)"_#Thompson2. The basic idea for manybody potentials is to treat each component of the force computation between a small cluster of atoms in the same manner as in the formula above for bond, angle, dihedral, etc @@ -89,8 +89,8 @@ pairwise interactions between 1-4 atoms. The virial contribution of these terms is included in the pair virial, not the dihedral virial. The KSpace contribution is calculated using the method in -"(Heyes)"_#Heyes for the Ewald method and by the methodology described -in "(Sirk)"_#Sirk for PPPM. The choice of KSpace solver is specified +"(Heyes)"_#Heyes2 for the Ewald method and by the methodology described +in "(Sirk)"_#Sirk1 for PPPM. The choice of KSpace solver is specified by the "kspace_style pppm"_kspace_style.html command. Note that for PPPM, the calculation requires 6 extra FFTs each timestep that per-atom stress is calculated. Thus it can significantly increase the @@ -159,11 +159,11 @@ The per-atom array values will be in pressure*volume :line -:link(Heyes) +:link(Heyes2) [(Heyes)] Heyes, Phys Rev B 49, 755 (1994), -:link(Sirk) +:link(Sirk1) [(Sirk)] Sirk, Moore, Brown, J Chem Phys, 138, 064505 (2013). -:link(Thompson) +:link(Thompson2) [(Thompson)] Thompson, Plimpton, Mattson, J Chem Phys, 131, 154107 (2009). diff --git a/doc/src/compute_temp_cs.txt b/doc/src/compute_temp_cs.txt index 0c22267daa..561b787df6 100644 --- a/doc/src/compute_temp_cs.txt +++ b/doc/src/compute_temp_cs.txt @@ -27,7 +27,7 @@ compute core_shells all temp/cs cores shells :pre Define a computation that calculates the temperature of a system based on the center-of-mass velocity of atom pairs that are bonded to each other. This compute is designed to be used with the adiabatic -core/shell model of "(Mitchell and Finchham)"_#MitchellFinchham. See +core/shell model of "(Mitchell and Finchham)"_#MitchellFinchham1. See "Section 6.25"_Section_howto.html#howto_25 of the manual for an overview of the model as implemented in LAMMPS. Specifically, this compute enables correct temperature calculation and thermostatting of @@ -114,6 +114,6 @@ temp/chunk"_compute_temp_chunk.html :line -:link(MitchellFinchham) +:link(MitchellFinchham1) [(Mitchell and Finchham)] Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993). diff --git a/doc/src/compute_temp_profile.txt b/doc/src/compute_temp_profile.txt index 3b6f774d33..64a6abd283 100644 --- a/doc/src/compute_temp_profile.txt +++ b/doc/src/compute_temp_profile.txt @@ -43,7 +43,7 @@ atoms, after subtracting out a spatially-averaged center-of-mass velocity field, before computing the kinetic energy. This can be useful for thermostatting a collection of atoms undergoing a complex flow, e.g. via a profile-unbiased thermostat (PUT) as described in -"(Evans)"_#Evans. A compute of this style can be used by any command +"(Evans)"_#Evans1. A compute of this style can be used by any command that computes a temperature, e.g. "thermo_modify"_thermo_modify.html, "fix temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc. @@ -75,7 +75,7 @@ atoms (sum of 1/2 m v^2), dim = 2 or 3 = dimensionality of the simulation, N = number of atoms in the group, k = Boltzmann constant, and T = temperature. The dim*Nx*Ny*Nz term are degrees of freedom subtracted to adjust for the removal of the center-of-mass velocity in -each of Nx*Ny*Nz bins, as discussed in the "(Evans)"_#Evans paper. +each of Nx*Ny*Nz bins, as discussed in the "(Evans)"_#Evans1 paper. If the {out} keyword is used with a {tensor} value, which is the default, a kinetic energy tensor, stored as a 6-element vector, is @@ -126,7 +126,7 @@ See "this howto section"_Section_howto.html#howto_16 of the manual for a discussion of different ways to compute temperature and perform thermostatting. Using this compute in conjunction with a thermostatting fix, as explained there, will effectively implement a -profile-unbiased thermostat (PUT), as described in "(Evans)"_#Evans. +profile-unbiased thermostat (PUT), as described in "(Evans)"_#Evans1. [Output info:] @@ -178,5 +178,5 @@ The option default is out = tensor. :line -:link(Evans) +:link(Evans1) [(Evans)] Evans and Morriss, Phys Rev Lett, 56, 2172-2175 (1986). diff --git a/doc/src/fix_ave_chunk.txt b/doc/src/fix_ave_chunk.txt index 8943192176..a8691d3767 100644 --- a/doc/src/fix_ave_chunk.txt +++ b/doc/src/fix_ave_chunk.txt @@ -191,8 +191,15 @@ remain constant for the duration of the simulation. This fix forces the chunk/atom compute specified by chunkID to hold {Nchunk} constant for the appropriate time windows, by not allowing it to re-calculate {Nchunk}, which can also affect how it assigns chunk IDs to atoms. -More details are given on the "compute -chunk/atom"_compute_chunk_atom.html doc page. +This is particularly important to understand if the chunks defined by +the "compute chunk/atom"_compute_chunk_atom.html command are spatial +bins. If its {units} keyword is set to {box} or {lattice}, then the +number of bins {Nchunk} and size of each bin will be fixed over the +{Nfreq} time window, which can affect which atoms are discarded if the +simulation box size changes. If its {units} keyword is set to +{reduced}, then the number of bins {Nchunk} will still be fixed, but +the size of each bin can vary at each timestep if the simulation box +size changes, e.g. for an NPT simulation. :line @@ -290,24 +297,32 @@ It the {norm} setting is {all}, which is the default, a chunk value is summed over all atoms in all {Nrepeat} samples, as is the count of atoms in the chunk. The averaged output value for the chunk on the {Nfreq} timesteps is Total-sum / Total-count. In other words it is an -average over atoms across the entire {Nfreq} timescale. +average over atoms across the entire {Nfreq} timescale. For the +{density/number} and {density/mass} values, the volume (bin volume or +system volume) used in the final normalization will be the volume at +the final {Nfreq} timestep. -If the {norm} setting is {sample}, the chunk value is summed over atoms -for each sample, as is the count, and an "average sample value" is -computed for each sample, i.e. Sample-sum / Sample-count. The output -value for the chunk on the {Nfreq} timesteps is the average of the -{Nrepeat} "average sample values", i.e. the sum of {Nrepeat} "average -sample values" divided by {Nrepeat}. In other words it is an average -of an average. +If the {norm} setting is {sample}, the chunk value is summed over +atoms for each sample, as is the count, and an "average sample value" +is computed for each sample, i.e. Sample-sum / Sample-count. The +output value for the chunk on the {Nfreq} timesteps is the average of +the {Nrepeat} "average sample values", i.e. the sum of {Nrepeat} +"average sample values" divided by {Nrepeat}. In other words it is an +average of an average. For the {density/number} and {density/mass} +values, the volume (bin volume or system volume) used in the +per-sample normalization will be the current volume at each sampling +step. If the {norm} setting is {none}, a similar computation as for the -{sample} setting is done, except the individual "average sample values" -are "summed sample values". A summed sample value is simply the chunk -value summed over atoms in the sample, without dividing by the number -of atoms in the sample. The output value for the chunk on the -{Nfreq} timesteps is the average of the {Nrepeat} "summed sample +{sample} setting is done, except the individual "average sample +values" are "summed sample values". A summed sample value is simply +the chunk value summed over atoms in the sample, without dividing by +the number of atoms in the sample. The output value for the chunk on +the {Nfreq} timesteps is the average of the {Nrepeat} "summed sample values", i.e. the sum of {Nrepeat} "summed sample values" divided by -{Nrepeat}. +{Nrepeat}. For the {density/number} and {density/mass} values, the +volume (bin volume or system volume) used in the per-sample sum +normalization will be the current volume at each sampling step. The {ave} keyword determines how the per-chunk values produced every {Nfreq} steps are averaged with values produced on previous steps that diff --git a/doc/src/fix_dpd_energy.txt b/doc/src/fix_dpd_energy.txt index db1fb0c703..ed49e5a671 100644 --- a/doc/src/fix_dpd_energy.txt +++ b/doc/src/fix_dpd_energy.txt @@ -70,13 +70,13 @@ mesoparticle equation of state for each particle. :line -:link(Lisal) +:link(Lisal1) [(Lisal)] M. Lisal, J.K. Brennan, J. Bonet Avalos, "Dissipative particle dynamics at isothermal, isobaric, isoenergetic, and isoenthalpic conditions using Shardlow-like splitting algorithms.", J. Chem. Phys., 135, 204105 (2011). -:link(Larentzos) +:link(Larentzos3) [(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 diff --git a/doc/src/fix_drude_transform.txt b/doc/src/fix_drude_transform.txt index 6f82c81053..2e094d528c 100644 --- a/doc/src/fix_drude_transform.txt +++ b/doc/src/fix_drude_transform.txt @@ -32,7 +32,7 @@ fix 1 all drude/transform/inverse :pre Transform the coordinates of Drude oscillators from real to reduced and back for thermalizing the Drude oscillators as described in -"(Lamoureux)"_#Lamoureux using a Nose-Hoover thermostat. This fix is +"(Lamoureux)"_#Lamoureux1 using a Nose-Hoover thermostat. This fix is designed to be used with the "thermalized Drude oscillator model"_tutorial_drude.html. Polarizable models in LAMMPS are described in "this Section"_Section_howto.html#howto_25. @@ -160,5 +160,5 @@ files"_restart.html. :line -:link(Lamoureux) +:link(Lamoureux1) [(Lamoureux)] Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003). diff --git a/doc/src/fix_eos_cv.txt b/doc/src/fix_eos_cv.txt index 76b9f79227..4c97304335 100644 --- a/doc/src/fix_eos_cv.txt +++ b/doc/src/fix_eos_cv.txt @@ -53,7 +53,7 @@ command. :line -:link(Larentzos) +:link(Larentzos4) [(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 diff --git a/doc/src/fix_flow_gauss.txt b/doc/src/fix_flow_gauss.txt index fcdc4e5589..efa58ea65f 100644 --- a/doc/src/fix_flow_gauss.txt +++ b/doc/src/fix_flow_gauss.txt @@ -153,7 +153,7 @@ The option default for the {energy} keyword is energy = no. :link(Strong) [(Strong)] Strong and Eaves, J. Phys. Chem. B 121, 189 (2017). -:link(Evans) +:link(Evans2) [(Evans)] Evans and Morriss, Phys. Rev. Lett. 56, 2172 (1986). :link(Zhu) diff --git a/doc/src/fix_gcmc.txt b/doc/src/fix_gcmc.txt index 6113b4d809..4eab458a65 100644 --- a/doc/src/fix_gcmc.txt +++ b/doc/src/fix_gcmc.txt @@ -23,7 +23,7 @@ T = temperature of the ideal gas reservoir (temperature units) :l mu = chemical potential of the ideal gas reservoir (energy units) :l displace = maximum Monte Carlo translation distance (length units) :l zero or more keyword/value pairs may be appended to args :l -keyword = {mol}, {region}, {maxangle}, {pressure}, {fugacity_coeff}, {full_energy}, {charge}, {group}, {grouptype}, {intra_energy}, or {tfac_insert} +keyword = {mol}, {region}, {maxangle}, {pressure}, {fugacity_coeff}, {full_energy}, {charge}, {group}, {grouptype}, {intra_energy}, {tfac_insert}, or {overlap_cutoff} {mol} value = template-ID template-ID = ID of molecule template specified in a separate "molecule"_molecule.html command {shake} value = fix-ID @@ -41,7 +41,8 @@ keyword = {mol}, {region}, {maxangle}, {pressure}, {fugacity_coeff}, {full_energ type = atom type (int) group-ID = group-ID for inserted atoms (string) {intra_energy} value = intramolecular energy (energy units) - {tfac_insert} value = scale up/down temperature of inserted atoms (unitless) :pre + {tfac_insert} value = scale up/down temperature of inserted atoms (unitless) + {overlap_cutoff} value = maximum pair distance for overlap rejection (distance units) :pre :ule [Examples:] @@ -262,6 +263,17 @@ therefore, you will want to use the current number of atoms is used as a normalizing factor each time temperature is computed. Here is the necessary command: +With some pair_styles, such as "Buckingham"_pair_buck.html, +"Born-Mayer-Huggins"_pair_born.html and "ReaxFF"_pair_reax_c.html, +two atoms placed close to each other may have an arbitrary large, +negative potential energy due to the functional form of the potential. +While these unphysical configurations are inaccessible +to typical dynamical trajectories, +they can be generated by Monte Carlo moves. The {overlap_cutoff} +keyword suppresses these moves by effectively assigning an +infinite positive energy to all new configurations that place any +pair of atoms closer than the specified overlap cutoff distance. + compute_modify thermo_temp dynamic yes :pre If LJ units are used, note that a value of 0.18292026 is used by this @@ -344,7 +356,8 @@ with this fix is not allowed. [Default:] -The option defaults are mol = no, maxangle = 10, full_energy = no, +The option defaults are mol = no, maxangle = 10, overlap_cutoff = 0.0, +and full_energy = no, except for the situations where full_energy is required, as listed above. diff --git a/doc/src/fix_langevin.txt b/doc/src/fix_langevin.txt index a3d0fb7eaa..534d83f6a9 100644 --- a/doc/src/fix_langevin.txt +++ b/doc/src/fix_langevin.txt @@ -49,7 +49,7 @@ fix 1 all langevin 1.0 1.1 100.0 48279 angmom 3.333 :pre [Description:] -Apply a Langevin thermostat as described in "(Schneider)"_#Schneider +Apply a Langevin thermostat as described in "(Schneider)"_#Schneider1 to a group of atoms which models an interaction with a background implicit solvent. Used with "fix nve"_fix_nve.html, this command performs Brownian dynamics (BD), since the total force on each atom @@ -80,7 +80,7 @@ dt damp), where Kb is the Boltzmann constant, T is the desired temperature, m is the mass of the particle, dt is the timestep size, and damp is the damping factor. Random numbers are used to randomize the direction and magnitude of this force as described in -"(Dunweg)"_#Dunweg, where a uniform random number is used (instead of +"(Dunweg)"_#Dunweg1, where a uniform random number is used (instead of a Gaussian random number) for speed. Note that unless you use the {omega} or {angmom} keywords, the @@ -332,10 +332,10 @@ types, tally = no, zero = no, gjf = no. :line -:link(Dunweg) +:link(Dunweg1) [(Dunweg)] Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991). -:link(Schneider) +:link(Schneider1) [(Schneider)] Schneider and Stoll, Phys Rev B, 17, 1302 (1978). :link(Gronbech-Jensen) diff --git a/doc/src/fix_langevin_drude.txt b/doc/src/fix_langevin_drude.txt index aebf698689..04437e7f36 100644 --- a/doc/src/fix_langevin_drude.txt +++ b/doc/src/fix_langevin_drude.txt @@ -41,7 +41,7 @@ fix 1 all langevin/drude 298.15 100.0 19377 5.0 10.0 83451 zero yes :pre [Description:] -Apply two Langevin thermostats as described in "(Jiang)"_#Jiang for +Apply two Langevin thermostats as described in "(Jiang)"_#Jiang1 for thermalizing the reduced degrees of freedom of Drude oscillators. This link describes how to use the "thermalized Drude oscillator model"_tutorial_drude.html in LAMMPS and polarizable models in LAMMPS @@ -268,6 +268,6 @@ The option defaults are zero = no. :line -:link(Jiang) +:link(Jiang1) [(Jiang)] Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux, J Phys Chem Lett, 2, 87-92 (2011). diff --git a/doc/src/fix_langevin_eff.txt b/doc/src/fix_langevin_eff.txt index d3112d529d..4a50bfae54 100644 --- a/doc/src/fix_langevin_eff.txt +++ b/doc/src/fix_langevin_eff.txt @@ -37,7 +37,7 @@ fix 1 all langevin/eff 1.0 1.1 10.0 48279 scale 3 1.5 :pre [Description:] -Apply a Langevin thermostat as described in "(Schneider)"_#Schneider +Apply a Langevin thermostat as described in "(Schneider)"_#Schneider2 to a group of nuclei and electrons in the "electron force field"_pair_eff.html model. Used with "fix nve/eff"_fix_nve_eff.html, this command performs Brownian dynamics (BD), since the total force on @@ -106,8 +106,8 @@ The option defaults are scale = 1.0 for all types and tally = no. :line -:link(Dunweg) +:link(Dunweg2) [(Dunweg)] Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991). -:link(Schneider) +:link(Schneider2) [(Schneider)] Schneider and Stoll, Phys Rev B, 17, 1302 (1978). diff --git a/doc/src/fix_lb_pc.txt b/doc/src/fix_lb_pc.txt index 4fd90d7c93..d2b6aafaab 100644 --- a/doc/src/fix_lb_pc.txt +++ b/doc/src/fix_lb_pc.txt @@ -24,7 +24,7 @@ fix 1 all lb/pc :pre Update the positions and velocities of the individual particles described by {group-ID}, experiencing velocity-dependent hydrodynamic forces, using the integration algorithm described in "Mackay et -al."_#Mackay. This integration algorithm should only be used if a +al."_#Mackay1. This integration algorithm should only be used if a user-specified value for the force-coupling constant used in "fix lb/fluid"_fix_lb_fluid.html has been set; do not use this integration algorithm if the force coupling constant has been set by default. @@ -58,5 +58,5 @@ lb/rigid/pc/sphere"_fix_lb_rigid_pc_sphere.html :line -:link(Mackay) +:link(Mackay1) [(Mackay et al.)] Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031. diff --git a/doc/src/fix_lb_viscous.txt b/doc/src/fix_lb_viscous.txt index b88700a136..fcc69d2b43 100644 --- a/doc/src/fix_lb_viscous.txt +++ b/doc/src/fix_lb_viscous.txt @@ -44,7 +44,7 @@ hydrodynamic forces to the particles. :line For further details, as well as descriptions and results of several -test runs, see "Mackay et al."_#Mackay. Please include a citation to +test runs, see "Mackay et al."_#Mackay3. Please include a citation to this paper if this fix is used in work contributing to published research. @@ -90,5 +90,5 @@ lb/rigid/pc/sphere"_fix_lb_rigid_pc_sphere.html :line -:link(Mackay) +:link(Mackay3) [(Mackay et al.)] Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031. diff --git a/doc/src/fix_nh_eff.txt b/doc/src/fix_nh_eff.txt index d90ce52caa..1731f1f331 100644 --- a/doc/src/fix_nh_eff.txt +++ b/doc/src/fix_nh_eff.txt @@ -128,15 +128,15 @@ ploop = 1, nreset = 0, drag = 0.0, dilate = all, and couple = none. :line -:link(Martyna) +:link(Martyna1) [(Martyna)] Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994). :link(Parrinello) [(Parrinello)] Parrinello and Rahman, J Appl Phys, 52, 7182 (1981). -:link(Tuckerman) +:link(Tuckerman1) [(Tuckerman)] Tuckerman, Alejandre, Lopez-Rendon, Jochim, and Martyna, J Phys A: Math Gen, 39, 5629 (2006). -:link(Shinoda) +:link(Shinoda2) [(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004). diff --git a/doc/src/fix_nph_sphere.txt b/doc/src/fix_nph_sphere.txt index e2ce458539..9258f40c76 100644 --- a/doc/src/fix_nph_sphere.txt +++ b/doc/src/fix_nph_sphere.txt @@ -13,14 +13,17 @@ fix nph/sphere/omp command :h3 fix ID group-ID nph/sphere args keyword value ... :pre -ID, group-ID are documented in "fix"_fix.html command -nph/sphere = style name of this fix command -additional barostat related keyword/value pairs from the "fix nph"_fix_nh.html command can be appended :ul +ID, group-ID are documented in "fix"_fix.html command :ulb,l +nph/sphere = style name of this fix command :l +keyword = {disc} :l + {disc} value = none = treat particles as 2d discs, not spheres :pre +additional barostat related keyword/value pairs from the "fix nph"_fix_nh.html command can be appended :l,ule [Examples:] fix 1 all nph/sphere iso 0.0 0.0 1000.0 fix 2 all nph/sphere x 5.0 5.0 1000.0 +fix 2 all nph/sphere x 5.0 5.0 1000.0 disc fix 2 all nph/sphere x 5.0 5.0 1000.0 drag 0.2 fix 2 water nph/sphere aniso 0.0 0.0 1000.0 dilate partial :pre @@ -35,6 +38,12 @@ isenthalpic ensemble. This fix differs from the "fix nph"_fix_nh.html command, which assumes point particles and only updates their position and velocity. +If the {disc} keyword is used, then each particle is treated as a 2d +disc (circle) instead of as a sphere. This is only possible for 2d +simulations, as defined by the "dimension"_dimension.html keyword. +The only difference between discs and spheres in this context is their +moment of inertia, as used in the time integration. + Additional parameters affecting the barostat are specified by keywords and values documented with the "fix nph"_fix_nh.html command. See, for example, discussion of the {aniso}, and {dilate} keywords. @@ -139,6 +148,9 @@ command. All particles in the group must be finite-size spheres. They cannot be point particles. +Use of the {disc} keyword is only allowed for 2d simulations, as +defined by the "dimension"_dimension.html keyword. + [Related commands:] "fix nph"_fix_nh.html, "fix nve_sphere"_fix_nve_sphere.html, "fix diff --git a/doc/src/fix_nphug.txt b/doc/src/fix_nphug.txt index f72bf292ea..ef3ffc4955 100644 --- a/doc/src/fix_nphug.txt +++ b/doc/src/fix_nphug.txt @@ -49,7 +49,7 @@ fix myhug all nphug temp 1.0 1.0 10.0 iso 40.0 40.0 70.0 drag 200.0 tchain 1 pch This command is a variant of the Nose-Hoover "fix npt"_fix_nh.html fix style. It performs time integration of the Hugoniostat equations -of motion developed by Ravelo et al. "(Ravelo)"_#Ravelo. +of motion developed by Ravelo et al. "(Ravelo)"_#Ravelo1. These equations compress the system to a state with average axial stress or pressure equal to the specified target value and that satisfies the Rankine-Hugoniot (RH) @@ -225,5 +225,5 @@ The keyword defaults are the same as those for "fix npt"_fix_nh.html :line -:link(Ravelo) +:link(Ravelo1) [(Ravelo)] Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). diff --git a/doc/src/fix_npt_sphere.txt b/doc/src/fix_npt_sphere.txt index 767be24bca..24a8fede57 100644 --- a/doc/src/fix_npt_sphere.txt +++ b/doc/src/fix_npt_sphere.txt @@ -15,12 +15,17 @@ fix ID group-ID npt/sphere keyword value ... :pre ID, group-ID are documented in "fix"_fix.html command npt/sphere = style name of this fix command -additional thermostat and barostat related keyword/value pairs from the "fix npt"_fix_nh.html command can be appended :ul +zero or more keyword/value pairs may be appended :l +keyword = {disc} :l + {disc} value = none = treat particles as 2d discs, not spheres :pre +additional thermostat and barostat related keyword/value pairs from the "fix npt"_fix_nh.html command can be appended :l,ule + [Examples:] fix 1 all npt/sphere temp 300.0 300.0 100.0 iso 0.0 0.0 1000.0 fix 2 all npt/sphere temp 300.0 300.0 100.0 x 5.0 5.0 1000.0 +fix 2 all npt/sphere temp 300.0 300.0 100.0 x 5.0 5.0 1000.0 disc fix 2 all npt/sphere temp 300.0 300.0 100.0 x 5.0 5.0 1000.0 drag 0.2 fix 2 water npt/sphere temp 300.0 300.0 100.0 aniso 0.0 0.0 1000.0 dilate partial :pre @@ -42,6 +47,12 @@ degrees of freedom (see below). The translational degrees of freedom can also have a bias velocity removed from them before thermostatting takes place; see the description below. +If the {disc} keyword is used, then each particle is treated as a 2d +disc (circle) instead of as a sphere. This is only possible for 2d +simulations, as defined by the "dimension"_dimension.html keyword. +The only difference between discs and spheres in this context is their +moment of inertia, as used in the time integration. + Additional parameters affecting the thermostat and barostat are specified by keywords and values documented with the "fix npt"_fix_nh.html command. See, for example, discussion of the {temp}, @@ -163,6 +174,9 @@ command. All particles in the group must be finite-size spheres. They cannot be point particles. +Use of the {disc} keyword is only allowed for 2d simulations, as +defined by the "dimension"_dimension.html keyword. + [Related commands:] "fix npt"_fix_nh.html, "fix nve_sphere"_fix_nve_sphere.html, "fix diff --git a/doc/src/fix_nve_dot.txt b/doc/src/fix_nve_dot.txt index 4c80cc2dd4..b1c00cd25c 100644 --- a/doc/src/fix_nve_dot.txt +++ b/doc/src/fix_nve_dot.txt @@ -22,11 +22,11 @@ fix 1 all nve/dot :pre [Description:] -Apply a rigid-body integrator as described in "(Davidchack)"_#Davidchack +Apply a rigid-body integrator as described in "(Davidchack)"_#Davidchack1 to a group of atoms, but without Langevin dynamics. This command performs Molecular dynamics (MD) via a velocity-Verlet algorithm and an evolution operator that rotates -the quaternion degrees of freedom, similar to the scheme outlined in "(Miller)"_#Miller. +the quaternion degrees of freedom, similar to the scheme outlined in "(Miller)"_#Miller1. This command is the equivalent of the "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html without damping and noise and can be used to determine the stability range @@ -55,7 +55,7 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages. :line -:link(Davidchack) +:link(Davidchack1) [(Davidchack)] R.L Davidchack, T.E. Ouldridge, and M.V. Tretyakov. J. Chem. Phys. 142, 144114 (2015). -:link(Miller) +:link(Miller1) [(Miller)] T. F. Miller III, M. Eleftheriou, P. Pattnaik, A. Ndirango, G. J. Martyna, J. Chem. Phys., 116, 8649-8659 (2002). diff --git a/doc/src/fix_nve_dotc_langevin.txt b/doc/src/fix_nve_dotc_langevin.txt index e89151e3b0..19d5b233ce 100644 --- a/doc/src/fix_nve_dotc_langevin.txt +++ b/doc/src/fix_nve_dotc_langevin.txt @@ -29,14 +29,14 @@ fix 1 all nve/dotc/langevin 1.0 1.0 0.03 457145 angmom 10 :pre [Description:] Apply a rigid-body Langevin-type integrator of the kind "Langevin C" -as described in "(Davidchack)"_#Davidchack +as described in "(Davidchack)"_#Davidchack2 to a group of atoms, which models an interaction with an implicit background solvent. This command performs Brownian dynamics (BD) via a technique that splits the integration into a deterministic Hamiltonian part and the Ornstein-Uhlenbeck process for noise and damping. The quaternion degrees of freedom are updated though an evolution operator which performs a rotation in quaternion space, preserves -the quaternion norm and is akin to "(Miller)"_#Miller. +the quaternion norm and is akin to "(Miller)"_#Miller2. In terms of syntax this command has been closely modelled on the "fix langevin"_fix_langevin.html and its {angmom} option. But it combines @@ -72,7 +72,7 @@ dt damp), where Kb is the Boltzmann constant, T is the desired temperature, m is the mass of the particle, dt is the timestep size, and damp is the damping factor. Random numbers are used to randomize the direction and magnitude of this force as described in -"(Dunweg)"_#Dunweg, where a uniform random number is used (instead of +"(Dunweg)"_#Dunweg3, where a uniform random number is used (instead of a Gaussian random number) for speed. :line @@ -126,9 +126,9 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages. :line -:link(Davidchack) +:link(Davidchack2) [(Davidchack)] R.L Davidchack, T.E. Ouldridge, M.V. Tretyakov. J. Chem. Phys. 142, 144114 (2015). -:link(Miller) +:link(Miller2) [(Miller)] T. F. Miller III, M. Eleftheriou, P. Pattnaik, A. Ndirango, G. J. Martyna, J. Chem. Phys., 116, 8649-8659 (2002). -:link(Dunweg) +:link(Dunweg3) [(Dunweg)] B. Dunweg, W. Paul, Int. J. Mod. Phys. C, 2, 817-27 (1991). diff --git a/doc/src/fix_nve_manifold_rattle.txt b/doc/src/fix_nve_manifold_rattle.txt index 89a0266f11..e032a7e1cc 100644 --- a/doc/src/fix_nve_manifold_rattle.txt +++ b/doc/src/fix_nve_manifold_rattle.txt @@ -33,7 +33,7 @@ fix step all nve/manifold/rattle 1e-8 100 ellipsoid 2.5 2.5 5.0 every 25 :pre Perform constant NVE integration to update position and velocity for atoms constrained to a curved surface (manifold) in the group each -timestep. The constraint is handled by RATTLE "(Andersen)"_#Andersen +timestep. The constraint is handled by RATTLE "(Andersen)"_#Andersen1 written out for the special case of single-particle constraints as explained in "(Paquay)"_#Paquay2. V is volume; E is energy. This way, the dynamics of particles constrained to curved surfaces can be @@ -92,7 +92,7 @@ manifoldforce"_fix_manifoldforce.html :line -:link(Andersen) +:link(Andersen1) [(Andersen)] Andersen, J. Comp. Phys. 52, 24, (1983). :link(Paquay2) diff --git a/doc/src/fix_nve_sphere.txt b/doc/src/fix_nve_sphere.txt index f5a303ca03..f91a41f515 100644 --- a/doc/src/fix_nve_sphere.txt +++ b/doc/src/fix_nve_sphere.txt @@ -16,16 +16,18 @@ fix ID group-ID nve/sphere :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l nve/sphere = style name of this fix command :l zero or more keyword/value pairs may be appended :l -keyword = {update} +keyword = {update} or {disc} :l {update} value = {dipole} or {dipole/dlm} dipole = update orientation of dipole moment during integration - dipole/dlm = use DLM integrator to update dipole orientation :pre + dipole/dlm = use DLM integrator to update dipole orientation + {disc} value = none = treat particles as 2d discs, not spheres :pre :ule [Examples:] fix 1 all nve/sphere fix 1 all nve/sphere update dipole +fix 1 all nve/sphere disc fix 1 all nve/sphere update dipole/dlm :pre [Description:] @@ -52,6 +54,12 @@ Dullweber-Leimkuhler-McLachlan integration scheme giving better energy conservation and allows slightly longer timesteps at only a small additional computational cost. +If the {disc} keyword is used, then each particle is treated as a 2d +disc (circle) instead of as a sphere. This is only possible for 2d +simulations, as defined by the "dimension"_dimension.html keyword. +The only difference between discs and spheres in this context is their +moment of inertia, as used in the time integration. + :line Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are @@ -98,6 +106,9 @@ command. All particles in the group must be finite-size spheres. They cannot be point particles. +Use of the {disc} keyword is only allowed for 2d simulations, as +defined by the "dimension"_dimension.html keyword. + [Related commands:] "fix nve"_fix_nve.html, "fix nve/asphere"_fix_nve_asphere.html diff --git a/doc/src/fix_nvt_manifold_rattle.txt b/doc/src/fix_nvt_manifold_rattle.txt index a1a2a855de..a620648a46 100644 --- a/doc/src/fix_nvt_manifold_rattle.txt +++ b/doc/src/fix_nvt_manifold_rattle.txt @@ -37,7 +37,7 @@ fix 1 all nvt/manifold/rattle 1e-4 10 cylinder 3.0 temp 1.0 1.0 10.0 [Description:] -This fix combines the RATTLE-based "(Andersen)"_#Andersen time integrator of "fix nve/manifold/rattle"_fix_nve_manifold_rattle.html "(Paquay)"_#Paquay3 with a Nose-Hoover-chain thermostat to sample the +This fix combines the RATTLE-based "(Andersen)"_#Andersen2 time integrator of "fix nve/manifold/rattle"_fix_nve_manifold_rattle.html "(Paquay)"_#Paquay3 with a Nose-Hoover-chain thermostat to sample the canonical ensemble of particles constrained to a curved surface (manifold). This sampling does suffer from discretization bias of O(dt). For a list of currently supported manifolds and their parameters, see "manifolds"_manifolds.html @@ -72,7 +72,7 @@ section for more info. :line -:link(Andersen) +:link(Andersen2) [(Andersen)] Andersen, J. Comp. Phys. 52, 24, (1983). :link(Paquay3) diff --git a/doc/src/fix_nvt_sllod.txt b/doc/src/fix_nvt_sllod.txt index 116e57e53a..82631f22e3 100644 --- a/doc/src/fix_nvt_sllod.txt +++ b/doc/src/fix_nvt_sllod.txt @@ -54,9 +54,9 @@ by fix nvt/sllod. LAMMPS will give an error if this setting is not consistent. The SLLOD equations of motion, originally proposed by Hoover and Ladd -(see "(Evans and Morriss)"_#Evans), were proven to be equivalent to +(see "(Evans and Morriss)"_#Evans3), were proven to be equivalent to Newton's equations of motion for shear flow by "(Evans and -Morriss)"_#Evans. They were later shown to generate the desired +Morriss)"_#Evans3. They were later shown to generate the desired velocity gradient and the correct production of work by stresses for all forms of homogeneous flow by "(Daivis and Todd)"_#Daivis. As implemented in LAMMPS, they are coupled to a Nose/Hoover chain @@ -173,7 +173,7 @@ Same as "fix nvt"_fix_nh.html, except tchain = 1. :line -:link(Evans) +:link(Evans3) [(Evans and Morriss)] Evans and Morriss, Phys Rev A, 30, 1528 (1984). :link(Daivis) diff --git a/doc/src/fix_nvt_sllod_eff.txt b/doc/src/fix_nvt_sllod_eff.txt index e92d1640cd..408eb1da01 100644 --- a/doc/src/fix_nvt_sllod_eff.txt +++ b/doc/src/fix_nvt_sllod_eff.txt @@ -89,6 +89,6 @@ Same as "fix nvt/eff"_fix_nh_eff.html, except tchain = 1. :line -:link(Tuckerman) +:link(Tuckerman2) [(Tuckerman)] Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys, 106, 5615 (1997). diff --git a/doc/src/fix_nvt_sphere.txt b/doc/src/fix_nvt_sphere.txt index 60943137de..fa1c97bcce 100644 --- a/doc/src/fix_nvt_sphere.txt +++ b/doc/src/fix_nvt_sphere.txt @@ -13,13 +13,17 @@ fix nvt/sphere/omp command :h3 fix ID group-ID nvt/sphere keyword value ... :pre -ID, group-ID are documented in "fix"_fix.html command -nvt/sphere = style name of this fix command -additional thermostat related keyword/value pairs from the "fix nvt"_fix_nh.html command can be appended :ul +ID, group-ID are documented in "fix"_fix.html command :ulb,l +nvt/sphere = style name of this fix command :l +zero or more keyword/value pairs may be appended :l +keyword = {disc} :l + {disc} value = none = treat particles as 2d discs, not spheres :pre +additional thermostat related keyword/value pairs from the "fix nvt"_fix_nh.html command can be appended :l,ule [Examples:] fix 1 all nvt/sphere temp 300.0 300.0 100.0 +fix 1 all nvt/sphere temp 300.0 300.0 100.0 disc fix 1 all nvt/sphere temp 300.0 300.0 100.0 drag 0.2 :pre [Description:] @@ -40,6 +44,12 @@ degrees of freedom (see below). The translational degrees of freedom can also have a bias velocity removed from them before thermostatting takes place; see the description below. +If the {disc} keyword is used, then each particle is treated as a 2d +disc (circle) instead of as a sphere. This is only possible for 2d +simulations, as defined by the "dimension"_dimension.html keyword. +The only difference between discs and spheres in this context is their +moment of inertia, as used in the time integration. + Additional parameters affecting the thermostat are specified by keywords and values documented with the "fix nvt"_fix_nh.html command. See, for example, discussion of the {temp} and {drag} @@ -140,6 +150,9 @@ command. All particles in the group must be finite-size spheres. They cannot be point particles. +Use of the {disc} keyword is only allowed for 2d simulations, as +defined by the "dimension"_dimension.html keyword. + [Related commands:] "fix nvt"_fix_nh.html, "fix nve_sphere"_fix_nve_sphere.html, "fix diff --git a/doc/src/fix_press_berendsen.txt b/doc/src/fix_press_berendsen.txt index f0912fe0c8..9c9da8ec7b 100644 --- a/doc/src/fix_press_berendsen.txt +++ b/doc/src/fix_press_berendsen.txt @@ -35,7 +35,7 @@ fix 2 all press/berendsen aniso 0.0 0.0 1000.0 dilate partial :pre [Description:] Reset the pressure of the system by using a Berendsen barostat -"(Berendsen)"_#Berendsen, which rescales the system volume and +"(Berendsen)"_#Berendsen1, which rescales the system volume and (optionally) the atoms coordinates within the simulation box every timestep. @@ -221,7 +221,7 @@ pressure for whatever "units"_units.html are defined. :line -:link(Berendsen) +:link(Berendsen1) [(Berendsen)] Berendsen, Postma, van Gunsteren, DiNola, Haak, J Chem Phys, 81, 3684 (1984). diff --git a/doc/src/fix_qeq.txt b/doc/src/fix_qeq.txt index b1a1dd5c42..f9c8ecde63 100644 --- a/doc/src/fix_qeq.txt +++ b/doc/src/fix_qeq.txt @@ -43,8 +43,8 @@ fix 1 all qeq/fire 1 10 1.0e-3 100 my_qeq qdamp 0.2 qstep 0.1 :pre [Description:] Perform the charge equilibration (QEq) method as described in "(Rappe -and Goddard)"_#Rappe and formulated in "(Nakano)"_#Nakano (also known -as the matrix inversion method) and in "(Rick and Stuart)"_#Rick (also +and Goddard)"_#Rappe1 and formulated in "(Nakano)"_#Nakano1 (also known +as the matrix inversion method) and in "(Rick and Stuart)"_#Rick1 (also known as the extended Lagrangian method) based on the electronegativity equilization principle. @@ -97,8 +97,8 @@ below, thus the others can be set to 0.0 if desired. {chi} = electronegativity in energy units {eta} = self-Coulomb potential in energy units {gamma} = shielded Coulomb constant defined by "ReaxFF force field"_#vanDuin in distance units -{zeta} = Slater type orbital exponent defined by the "Streitz-Mintmire"_#Streitz potential in reverse distance units -{qcore} = charge of the nucleus defined by the "Streitz-Mintmire potential"_#Streitz potential in charge units :ul +{zeta} = Slater type orbital exponent defined by the "Streitz-Mintmire"_#Streitz1 potential in reverse distance units +{qcore} = charge of the nucleus defined by the "Streitz-Mintmire potential"_#Streitz1 potential in charge units :ul The {qeq/point} style describes partial charges on atoms as point charges. Interaction between a pair of charged particles is 1/r, @@ -126,7 +126,7 @@ charge densities centered around atoms via the Slater 1{s} orbital, so that the interaction between a pair of charged particles is the product of two Slater 1{s} orbitals. The expression for the Slater 1{s} orbital is given under equation (6) of the -"Streitz-Mintmire"_#Streitz paper. Only the {chi}, {eta}, {zeta}, and +"Streitz-Mintmire"_#Streitz1 paper. Only the {chi}, {eta}, {zeta}, and {qcore} parameters from the {qfile} file are used. This style solves partial charges on atoms via the matrix inversion method. A tolerance of 1.0e-6 is usually a good number. Keyword {alpha} can be used to @@ -194,18 +194,18 @@ LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(Rappe) +:link(Rappe1) [(Rappe and Goddard)] A. K. Rappe and W. A. Goddard III, J Physical Chemistry, 95, 3358-3363 (1991). -:link(Nakano) +:link(Nakano1) [(Nakano)] A. Nakano, Computer Physics Communications, 104, 59-69 (1997). -:link(Rick) +:link(Rick1) [(Rick and Stuart)] S. W. Rick, S. J. Stuart, B. J. Berne, J Chemical Physics 101, 16141 (1994). -:link(Streitz) +:link(Streitz1) [(Streitz-Mintmire)] F. H. Streitz, J. W. Mintmire, Physical Review B, 50, 16, 11996 (1994) diff --git a/doc/src/fix_qeq_reax.txt b/doc/src/fix_qeq_reax.txt index ed4fde60ca..76c95e1117 100644 --- a/doc/src/fix_qeq_reax.txt +++ b/doc/src/fix_qeq_reax.txt @@ -28,7 +28,7 @@ fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 param.qeq :pre [Description:] Perform the charge equilibration (QEq) method as described in "(Rappe -and Goddard)"_#Rappe and formulated in "(Nakano)"_#Nakano. It is +and Goddard)"_#Rappe2 and formulated in "(Nakano)"_#Nakano2. It is typically used in conjunction with the ReaxFF force field model as implemented in the "pair_style reax/c"_pair_reax_c.html command, but it can be used with any potential in LAMMPS, so long as it defines and @@ -112,11 +112,11 @@ be used for periodic cell dimensions less than 10 angstroms. :line -:link(Rappe) +:link(Rappe2) [(Rappe)] Rappe and Goddard III, Journal of Physical Chemistry, 95, 3358-3363 (1991). -:link(Nakano) +:link(Nakano2) [(Nakano)] Nakano, Computer Physics Communications, 104, 59-69 (1997). :link(qeq-Aktulga) diff --git a/doc/src/fix_rigid.txt b/doc/src/fix_rigid.txt index e086656f5d..03edf61ed8 100644 --- a/doc/src/fix_rigid.txt +++ b/doc/src/fix_rigid.txt @@ -93,7 +93,7 @@ Examples of large rigid bodies are a colloidal particle, or portions of a biomolecule such as a protein. Example of small rigid bodies are patchy nanoparticles, such as those -modeled in "this paper"_#Zhang by Sharon Glotzer's group, clumps of +modeled in "this paper"_#Zhang1 by Sharon Glotzer's group, clumps of granular particles, lipid molecules consiting of one or more point dipoles connected to other spheroids or ellipsoids, irregular particles built from line segments (2d) or triangles (3d), and @@ -299,12 +299,12 @@ perform constant NVE time integration. They are referred to below as the 4 NVE rigid styles. The only difference is that the {rigid} and {rigid/small} styles use an integration technique based on Richardson iterations. The {rigid/nve} and {rigid/small/nve} styles uses the -methods described in the paper by "Miller"_#Miller, which are thought +methods described in the paper by "Miller"_#Miller3, which are thought to provide better energy conservation than an iterative approach. The {rigid/nvt} and {rigid/nvt/small} styles performs constant NVT integration using a Nose/Hoover thermostat with chains as described -originally in "(Hoover)"_#Hoover and "(Martyna)"_#Martyna, which +originally in "(Hoover)"_#Hoover and "(Martyna)"_#Martyna2, which thermostats both the translational and rotational degrees of freedom of the rigid bodies. They are referred to below as the 2 NVT rigid styles. The rigid-body algorithm used by {rigid/nvt} is described in @@ -788,13 +788,13 @@ torque. Also Tchain = Pchain = 10, Titer = 1, Torder = 3. :link(Kamberaj) [(Kamberaj)] Kamberaj, Low, Neal, J Chem Phys, 122, 224114 (2005). -:link(Martyna) +:link(Martyna2) [(Martyna)] Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992); Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117. -:link(Miller) +:link(Miller3) [(Miller)] Miller, Eleftheriou, Pattnaik, Ndirango, and Newns, J Chem Phys, 116, 8649 (2002). -:link(Zhang) +:link(Zhang1) [(Zhang)] Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004). diff --git a/doc/src/fix_shake.txt b/doc/src/fix_shake.txt index a860aad128..8b26aaa874 100644 --- a/doc/src/fix_shake.txt +++ b/doc/src/fix_shake.txt @@ -53,7 +53,7 @@ velocities are approximated as finite differences to the trajectories integrated explicitly, as with velocity Verlet which is what LAMMPS uses as an integration method, a second set of constraining forces is required in order to eliminate velocity components along the bonds -("Andersen (1983)"_#Andersen). +("Andersen (1983)"_#Andersen3). In order to formulate individual constraints for SHAKE and RATTLE, focus on a single molecule whose bonds are constrained. Let Ri and Vi @@ -171,7 +171,7 @@ more instructions on how to use the accelerated styles effectively. The velocity constraints lead to a linear system of equations which can be solved analytically. The implementation of the algorithm in -LAMMPS closely follows ("Andersen (1983)"_#Andersen). +LAMMPS closely follows ("Andersen (1983)"_#Andersen3). NOTE: The fix rattle command modifies forces and velocities and thus should be defined after all other integration fixes in your input @@ -223,5 +223,5 @@ SHAKE or RATTLE should not be used to constrain an angle at 180 degrees [(Ryckaert)] J.-P. Ryckaert, G. Ciccotti and H. J. C. Berendsen, J of Comp Phys, 23, 327-341 (1977). -:link(Andersen) +:link(Andersen3) [(Andersen)] H. Andersen, J of Comp Phys, 52, 24-34 (1983). diff --git a/doc/src/fix_shardlow.txt b/doc/src/fix_shardlow.txt index 53bde746a0..8354b4c41c 100644 --- a/doc/src/fix_shardlow.txt +++ b/doc/src/fix_shardlow.txt @@ -30,7 +30,7 @@ nve"_fix_nve.html or "fix nph"_fix_nh.html). The stochastic integration of the dissipative and random forces is performed prior to the deterministic integration of the conservative force. Further details regarding the method are provided in "(Lisal)"_#Lisal and -"(Larentzos1)"_#Larentzos1. +"(Larentzos1)"_#Larentzos1sh. The fix {shardlow} must be used with the "pair_style dpd/fdt"_pair_style.html or "pair_style @@ -83,13 +83,13 @@ particle dynamics as isothermal, isobaric, isoenergetic, and isoenthalpic conditions using Shardlow-like splitting algorithms.", J. Chem. Phys., 135, 204105 (2011). -:link(Larentzos1) +:link(Larentzos1sh) [(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 Algorithms", Comput. Phys. Commun., 185, 1987-1998 (2014). -:link(Larentzos2) +:link(Larentzos2sh) [(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 diff --git a/doc/src/fix_srd.txt b/doc/src/fix_srd.txt index 31660fe77a..4e190234fd 100644 --- a/doc/src/fix_srd.txt +++ b/doc/src/fix_srd.txt @@ -72,7 +72,7 @@ viscosity"_fix_viscosity.html, and "fix nvt/sllod"_fix_nvt_sllod.html, can be used in conjunction with the SRD model. For more details on how the SRD model is implemented in LAMMPS, "this -paper"_#Petersen describes the implementation and usage of pure SRD +paper"_#Petersen1 describes the implementation and usage of pure SRD fluids. "This paper"_#Lechman, which is nearly complete, describes the implementation and usage of mixture systems (solute particles in an SRD fluid). See the examples/srd directory for sample input @@ -390,7 +390,7 @@ rescale = yes. :link(Hecht) [(Hecht)] Hecht, Harting, Ihle, Herrmann, Phys Rev E, 72, 011408 (2005). -:link(Petersen) +:link(Petersen1) [(Petersen)] Petersen, Lechman, Plimpton, Grest, in' t Veld, Schunk, J Chem Phys, 132, 174106 (2010). diff --git a/doc/src/fix_temp_berendsen.txt b/doc/src/fix_temp_berendsen.txt index 9c1dd538da..6944860e14 100644 --- a/doc/src/fix_temp_berendsen.txt +++ b/doc/src/fix_temp_berendsen.txt @@ -26,7 +26,7 @@ fix 1 all temp/berendsen 300.0 300.0 100.0 :pre [Description:] Reset the temperature of a group of atoms by using a Berendsen -thermostat "(Berendsen)"_#Berendsen, which rescales their velocities +thermostat "(Berendsen)"_#Berendsen2, which rescales their velocities every timestep. The thermostat is applied to only the translational degrees of freedom @@ -157,7 +157,7 @@ temp/rescale"_fix_temp_rescale.html, "fix langevin"_fix_langevin.html, :line -:link(Berendsen) +:link(Berendsen2) [(Berendsen)] Berendsen, Postma, van Gunsteren, DiNola, Haak, J Chem Phys, 81, 3684 (1984). diff --git a/doc/src/fix_thermal_conductivity.txt b/doc/src/fix_thermal_conductivity.txt index a807feaec7..0353c095b2 100644 --- a/doc/src/fix_thermal_conductivity.txt +++ b/doc/src/fix_thermal_conductivity.txt @@ -31,7 +31,7 @@ fix 1 all thermal/conductivity 50 z 20 swap 2 :pre [Description:] Use the Muller-Plathe algorithm described in "this -paper"_#Muller-Plathe to exchange kinetic energy between two particles +paper"_#Muller-Plathe1 to exchange kinetic energy between two particles in different regions of the simulation box every N steps. This induces a temperature gradient in the system. As described below this enables the thermal conductivity of a material to be calculated. This @@ -85,7 +85,7 @@ quantity by time and the cross-sectional area of the simulation box yields a heat flux. The ratio of heat flux to the slope of the temperature profile is proportional to the thermal conductivity of the fluid, in appropriate units. See the "Muller-Plathe -paper"_#Muller-Plathe for details. +paper"_#Muller-Plathe1 for details. NOTE: If your system is periodic in the direction of the heat flux, then the flux is going in 2 directions. This means the effective heat @@ -136,7 +136,7 @@ kinetic energy of atoms that are in constrained molecules, e.g. via "fix shake"_fix_shake.html or "fix rigid"_fix_rigid.html. This is because application of the constraints will alter the amount of transferred momentum. You should, however, be able to use flexible -molecules. See the "Zhang paper"_#Zhang for a discussion and results +molecules. See the "Zhang paper"_#Zhang2 for a discussion and results of this idea. When running a simulation with large, massive particles or molecules @@ -155,9 +155,9 @@ The option defaults are swap = 1. :line -:link(Muller-Plathe) +:link(Muller-Plathe1) [(Muller-Plathe)] Muller-Plathe, J Chem Phys, 106, 6082 (1997). -:link(Zhang) +:link(Zhang2) [(Zhang)] Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B, 109, 15060-15067 (2005). diff --git a/doc/src/fix_viscosity.txt b/doc/src/fix_viscosity.txt index 5fbbc67ca5..f6603be624 100644 --- a/doc/src/fix_viscosity.txt +++ b/doc/src/fix_viscosity.txt @@ -33,7 +33,7 @@ fix 1 all viscosity 50 x z 20 swap 2 vtarget 1.5 :pre [Description:] Use the Muller-Plathe algorithm described in "this -paper"_#Muller-Plathe to exchange momenta between two particles in +paper"_#Muller-Plathe2 to exchange momenta between two particles in different regions of the simulation box every N steps. This induces a shear velocity profile in the system. As described below this enables a viscosity of the fluid to be calculated. This algorithm is @@ -83,7 +83,7 @@ quantity by time and the cross-sectional area of the simulation box yields a momentum flux. The ratio of momentum flux to the slope of the shear velocity profile is proportional to the viscosity of the fluid, in appropriate units. See the "Muller-Plathe -paper"_#Muller-Plathe for details. +paper"_#Muller-Plathe2 for details. NOTE: If your system is periodic in the direction of the momentum flux, then the flux is going in 2 directions. This means the @@ -161,7 +161,7 @@ The option defaults are swap = 1 and vtarget = INF. :line -:link(Muller-Plathe) +:link(Muller-Plathe2) [(Muller-Plathe)] Muller-Plathe, Phys Rev E, 59, 4894-4898 (1999). :link(Maginn) diff --git a/doc/src/kspace_modify.txt b/doc/src/kspace_modify.txt index cb57863ad0..7a6c7191f0 100644 --- a/doc/src/kspace_modify.txt +++ b/doc/src/kspace_modify.txt @@ -206,7 +206,7 @@ beginning of the run to give the desired estimated error. Other cutoffs such as LJ will not be affected. If the grid is not set using the {mesh} command, this command will also attempt to use the optimal grid that minimizes cost using an estimate given by -"(Hardy)"_#Hardy. Note that this cost estimate is not exact, somewhat +"(Hardy)"_#Hardy1. Note that this cost estimate is not exact, somewhat experimental, and still may not yield the optimal parameters. The {pressure/scalar} keyword applies only to MSM. If this option is @@ -235,7 +235,7 @@ collective operations and adequate hardware. The {diff} keyword specifies the differentiation scheme used by the PPPM method to compute forces on particles given electrostatic potentials on the PPPM mesh. The {ik} approach is the default for -PPPM and is the original formulation used in "(Hockney)"_#Hockney. It +PPPM and is the original formulation used in "(Hockney)"_#Hockney1. It performs differentiation in Kspace, and uses 3 FFTs to transfer each component of the computed fields back to real space for total of 4 FFTs per timestep. @@ -271,7 +271,7 @@ speed-up the simulations but introduces some error in the force computations, as shown in "(Wennberg)"_#Wennberg. With {none}, it is assumed that no mixing rule is applicable. Splitting of the dispersion coefficients will be performed as described in -"(Isele-Holder)"_#Isele-Holder. This splitting can be influenced with +"(Isele-Holder)"_#Isele-Holder1. This splitting can be influenced with the {splittol} keywords. Only the eigenvalues that are larger than tol compared to the largest eigenvalues are included. Using this keywords the original matrix of dispersion coefficients is approximated. This @@ -280,7 +280,7 @@ computations of the dispersion part is decreased. The {force/disp/real} and {force/disp/kspace} keywords set the force accuracy for the real and space computations for the dispersion part -of pppm/disp. As shown in "(Isele-Holder)"_#Isele-Holder, optimal +of pppm/disp. As shown in "(Isele-Holder)"_#Isele-Holder1, optimal performance and accuracy in the results is obtained when these values are different. @@ -311,7 +311,7 @@ split = 0, tol = 1.0e-6, and disp/auto = no. :line -:link(Hockney) +:link(Hockney1) [(Hockney)] Hockney and Eastwood, Computer Simulation Using Particles, Adam Hilger, NY (1989). @@ -325,7 +325,7 @@ Adam Hilger, NY (1989). :link(Klapp) [(Klapp)] Klapp, Schoen, J Chem Phys, 117, 8050 (2002). -:link(Hardy) +:link(Hardy1) [(Hardy)] David Hardy thesis: Multilevel Summation for the Fast Evaluation of Forces for the Simulation of Biomolecules, University of Illinois at Urbana-Champaign, (2006). @@ -333,7 +333,7 @@ Illinois at Urbana-Champaign, (2006). :link(Hummer) [(Hummer)] Hummer, Gronbech-Jensen, Neumann, J Chem Phys, 109, 2791 (1998) -:link(Isele-Holder) +:link(Isele-Holder1) [(Isele-Holder)] Isele-Holder, Mitchell, Hammond, Kohlmeyer, Ismail, J Chem Theory Comput, 9, 5412 (2013). diff --git a/doc/src/kspace_style.txt b/doc/src/kspace_style.txt index e5c47e8230..5c4909f83a 100644 --- a/doc/src/kspace_style.txt +++ b/doc/src/kspace_style.txt @@ -152,7 +152,7 @@ such as when using a barostat. :line The {pppm/disp} and {pppm/disp/tip4p} styles add a mesh-based long-range -dispersion sum option for 1/r^6 potentials "(Isele-Holder)"_#Isele-Holder, +dispersion sum option for 1/r^6 potentials "(Isele-Holder)"_#Isele-Holder2012, similar to the {ewald/disp} style. The 1/r^6 capability means that Lennard-Jones or Buckingham potentials can be used without a cutoff, i.e. they become full long-range potentials. @@ -163,8 +163,8 @@ This can be done by either choosing the Ewald and grid parameters, or by specifying separate accuracies for the real and kspace calculations. When not making any settings, the simulation will stop with an error message. Further information on the influence of the parameters -and how to choose them is described in "(Isele-Holder)"_#Isele-Holder, -"(Isele-Holder2)"_#Isele-Holder2 and the +and how to choose them is described in "(Isele-Holder)"_#Isele-Holder2012, +"(Isele-Holder2)"_#Isele-Holder2013 and the "How-To"_Section_howto.html#howto_24 discussion. :line @@ -182,7 +182,7 @@ currently support the -DFFT_SINGLE compiler switch. :line The {msm} style invokes a multi-level summation method MSM solver, -"(Hardy)"_#Hardy or "(Hardy2)"_#Hardy2, which maps atom charge to a 3d +"(Hardy)"_#Hardy2006 or "(Hardy2)"_#Hardy2009, which maps atom charge to a 3d mesh, and uses a multi-level hierarchy of coarser and coarser meshes on which direct coulomb solves are done. This method does not use FFTs and scales as N. It may therefore be faster than the other @@ -247,7 +247,7 @@ equation 9 of "(Petersen)"_#Petersen. RMS force errors in K-space for which is similar to equation 32 of "(Kolafa)"_#Kolafa. RMS force errors in K-space for {pppm} are estimated using equation 38 of "(Deserno)"_#Deserno. RMS force errors for {msm} are estimated -using ideas from chapter 3 of "(Hardy)"_#Hardy, with equation 3.197 +using ideas from chapter 3 of "(Hardy)"_#Hardy2006, with equation 3.197 of particular note. When using {msm} with non-periodic boundary conditions, it is expected that the error estimation will be too pessimistic. RMS force errors for dipoles when using {ewald/disp} @@ -366,19 +366,19 @@ and Computation 5, 2322 (2009) [(Toukmaji)] Toukmaji, Sagui, Board, and Darden, J Chem Phys, 113, 10913 (2000). -:link(Isele-Holder) +:link(Isele-Holder2012) [(Isele-Holder)] Isele-Holder, Mitchell, Ismail, J Chem Phys, 137, 174107 (2012). -:link(Isele-Holder2) +:link(Isele-Holder2013) [(Isele-Holder2)] Isele-Holder, Mitchell, Hammond, Kohlmeyer, Ismail, J Chem Theory Comput 9, 5412 (2013). -:link(Hardy) +:link(Hardy2006) [(Hardy)] David Hardy thesis: Multilevel Summation for the Fast Evaluation of Forces for the Simulation of Biomolecules, University of Illinois at Urbana-Champaign, (2006). -:link(Hardy2) -[(Hardy)] Hardy, Stone, Schulten, Parallel Computing 35 (2009) +:link(Hardy2009) +[(Hardy2)] Hardy, Stone, Schulten, Parallel Computing 35 (2009) 164-177. diff --git a/doc/src/neb.txt b/doc/src/neb.txt index a5fa03552c..3a62a77a6e 100644 --- a/doc/src/neb.txt +++ b/doc/src/neb.txt @@ -44,7 +44,7 @@ of the energy barrier associated with a transition state, e.g. for an atom to perform a diffusive hop from one energy basin to another in a coordinated fashion with its neighbors. The implementation in LAMMPS follows the discussion in these 3 papers: "(HenkelmanA)"_#HenkelmanA, -"(HenkelmanB)"_#HenkelmanB, and "(Nakano)"_#Nakano. +"(HenkelmanB)"_#HenkelmanB, and "(Nakano)"_#Nakano3. Each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the -partition command-line @@ -412,5 +412,5 @@ langevin"_fix_langevin.html, "fix viscous"_fix_viscous.html [(HenkelmanB)] Henkelman, Uberuaga, Jonsson, J Chem Phys, 113, 9901-9904 (2000). -:link(Nakano) +:link(Nakano3) [(Nakano)] Nakano, Comp Phys Comm, 178, 280-289 (2008). diff --git a/doc/src/pair_bop.txt b/doc/src/pair_bop.txt index 9251fc4e70..2a611e4bd0 100644 --- a/doc/src/pair_bop.txt +++ b/doc/src/pair_bop.txt @@ -137,7 +137,7 @@ and beta_pi,ij)(r_ij). The parameters/coefficients format for the different kinds of BOP files are given below with variables matching the formulation of Ward -("Ward"_#Ward) and Zhou ("Zhou"_#Zhou). Each header line containing a +("Ward"_#Ward) and Zhou ("Zhou"_#Zhou1). Each header line containing a ":" is preceded by a blank line. @@ -258,7 +258,7 @@ Line 2: (A_ij)^(mu*nu) (for e1-e2 and repeats as above) :ul The parameters/coefficients format for the BOP potentials input file containing pre-tabulated functions of g is given below with variables matching the formulation of Ward ("Ward"_#Ward). This format also -assumes the angular functions have the formulation of ("Zhou"_#Zhou). +assumes the angular functions have the formulation of ("Zhou"_#Zhou1). Line 1: # elements N :ul @@ -314,7 +314,7 @@ The rest of the table has the same structure as the previous section The parameters/coefficients format for the BOP potentials input file containing pre-tabulated functions of g is given below with variables matching the formulation of Ward ("Ward"_#Ward). This format also -assumes the angular functions have the formulation of ("Zhou"_#Zhou). +assumes the angular functions have the formulation of ("Zhou"_#Zhou1). Line 1: # elements N :ul @@ -425,5 +425,5 @@ Drautz, and D.G. Pettifor, Phys. Rev. B, 73, 45206 (2006). [(Ward)] D.K. Ward, X.W. Zhou, B.M. Wong, F.P. Doty, and J.A. Zimmerman, Phys. Rev. B, 85,115206 (2012). -:link(Zhou) +:link(Zhou1) [(Zhou)] X.W. Zhou, D.K. Ward, M. Foster (TBP). diff --git a/doc/src/pair_colloid.txt b/doc/src/pair_colloid.txt index 4b78206f12..a0df1d464e 100644 --- a/doc/src/pair_colloid.txt +++ b/doc/src/pair_colloid.txt @@ -39,7 +39,7 @@ where A_cc is the Hamaker constant, a1 and a2 are the radii of the two colloidal particles, and Rc is the cutoff. This equation results from describing each colloidal particle as an integrated collection of Lennard-Jones particles of size sigma and is derived in -"(Everaers)"_#Everaers. +"(Everaers)"_#Everaers1. The colloid-solvent interaction energy is given by @@ -201,5 +201,5 @@ only per-type polydispersity is enabled via the pair_coeff parameters. :line -:link(Everaers) +:link(Everaers1) [(Everaers)] Everaers, Ejtehadi, Phys Rev E, 67, 041710 (2003). diff --git a/doc/src/pair_comb.txt b/doc/src/pair_comb.txt index 92e74bbba3..3a2f380bfa 100644 --- a/doc/src/pair_comb.txt +++ b/doc/src/pair_comb.txt @@ -50,7 +50,7 @@ atoms {i} and {j}, The COMB potentials (styles {comb} and {comb3}) are variable charge potentials. The equilibrium charge on each atom is calculated by the -electronegativity equalization (QEq) method. See "Rick"_#Rick for +electronegativity equalization (QEq) method. See "Rick"_#Rick2 for further details. This is implemented by the "fix qeq/comb"_fix_qeq_comb.html command, which should normally be specified in the input script when running a model with the COMB @@ -187,6 +187,6 @@ S. R. Phillpot, Phys. Rev. B 81, 125328 (2010) Y. Li, Z. Lu, S. R. Phillpot, and S. B. Sinnott, Mat. Sci. & Eng: R 74, 255-279 (2013). -:link(Rick) +:link(Rick2) [(Rick)] S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141 (1994). diff --git a/doc/src/pair_coul.txt b/doc/src/pair_coul.txt index 43bd13127a..4a601e90c0 100644 --- a/doc/src/pair_coul.txt +++ b/doc/src/pair_coul.txt @@ -109,7 +109,7 @@ mimic the screening effect of a polar solvent. :line Style {coul/dsf} computes Coulombic interactions via the damped -shifted force model described in "Fennell"_#Fennell, given by: +shifted force model described in "Fennell"_#Fennell1, given by: :c,image(Eqs/pair_coul_dsf.jpg) @@ -122,7 +122,7 @@ decay to zero. :line Style {coul/wolf} computes Coulombic interactions via the Wolf -summation method, described in "Wolf"_#Wolf, given by: +summation method, described in "Wolf"_#Wolf1, given by: :c,image(Eqs/pair_coul_wolf.jpg) @@ -143,7 +143,7 @@ interactions with a short-range potential. Style {coul/streitz} is the Coulomb pair interaction defined as part of the Streitz-Mintmire potential, as described in "this -paper"_#Streitz, in which charge distribution about an atom is modeled +paper"_#Streitz2, in which charge distribution about an atom is modeled as a Slater 1{s} orbital. More details can be found in the referenced paper. To fully reproduce the published Streitz-Mintmire potential, which is a variable charge potential, style {coul/streitz} must be @@ -205,7 +205,7 @@ added for the "core/shell model"_Section_howto.html#howto_25 to allow charges on core and shell particles to be separated by r = 0.0. Styles {tip4p/cut} and {tip4p/long} implement the coulomb part of -the TIP4P water model of "(Jorgensen)"_#Jorgensen, which introduces +the TIP4P water model of "(Jorgensen)"_#Jorgensen3, which introduces a massless site located a short distance away from the oxygen atom along the bisector of the HOH angle. The atomic types of the oxygen and hydrogen atoms, the bond and angle types for OH and HOH interactions, @@ -325,14 +325,18 @@ hybrid/overlay"_pair_hybrid.html, "kspace_style"_kspace_style.html :line -:link(Wolf) +:link(Wolf1) [(Wolf)] D. Wolf, P. Keblinski, S. R. Phillpot, J. Eggebrecht, J Chem Phys, 110, 8254 (1999). -:link(Fennell) +:link(Fennell1) [(Fennell)] C. J. Fennell, J. D. Gezelter, J Chem Phys, 124, 234104 (2006). -:link(Streitz) +:link(Streitz2) [(Streitz)] F. H. Streitz, J. W. Mintmire, Phys Rev B, 50, 11996-12003 (1994). + +:link(Jorgensen3) +[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem +Phys, 79, 926 (1983). diff --git a/doc/src/pair_coul_diel.txt b/doc/src/pair_coul_diel.txt index fc2042a901..f651cb4b5e 100644 --- a/doc/src/pair_coul_diel.txt +++ b/doc/src/pair_coul_diel.txt @@ -46,10 +46,10 @@ for water at 298K. Examples of the use of this type of Coulomb interaction include implicit solvent simulations of salt ions -"(Lenart)"_#Lenart and of ionic surfactants "(Jusufi)"_#Jusufi. +"(Lenart)"_#Lenart1 and of ionic surfactants "(Jusufi)"_#Jusufi1. Note that this potential is only reasonable for implicit solvent simulations and in combination with coul/cut or coul/long. It is also usually combined -with gauss/cut, see "(Lenart)"_#Lenart or "(Jusufi)"_#Jusufi. +with gauss/cut, see "(Lenart)"_#Lenart1 or "(Jusufi)"_#Jusufi1. The following coefficients must be defined for each pair of atom types via the "pair_coeff"_pair_coeff.html command as in the example @@ -103,10 +103,10 @@ LAMMPS"_Section_start.html#start_2_3 section for more info. [(Stiles)] Stiles , Hubbard, and Kayser, J Chem Phys, 77, 6189 (1982). -:link(Lenart) +:link(Lenart1) [(Lenart)] Lenart , Jusufi, and Panagiotopoulos, J Chem Phys, 126, 044509 (2007). -:link(Jusufi) +:link(Jusufi1) [(Jusufi)] Jusufi, Hynninen, and Panagiotopoulos, J Phys Chem B, 112, 13783 (2008). diff --git a/doc/src/pair_cs.txt b/doc/src/pair_cs.txt index 3e1390049a..64dfc20d47 100644 --- a/doc/src/pair_cs.txt +++ b/doc/src/pair_cs.txt @@ -44,7 +44,7 @@ pair_coeff 1 1 480.0 0.25 0.00 1.05 0.50 :pre [Description:] These pair styles are designed to be used with the adiabatic -core/shell model of "(Mitchell and Finchham)"_#MitchellFinchham. See +core/shell model of "(Mitchell and Finchham)"_#MitchellFinchham2. See "Section 6.25"_Section_howto.html#howto_25 of the manual for an overview of the model as implemented in LAMMPS. @@ -95,6 +95,6 @@ LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(MitchellFinchham) +:link(MitchellFinchham2) [(Mitchell and Finchham)] Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993). diff --git a/doc/src/pair_dipole.txt b/doc/src/pair_dipole.txt index bcf482cda5..a9622b32fd 100644 --- a/doc/src/pair_dipole.txt +++ b/doc/src/pair_dipole.txt @@ -69,7 +69,7 @@ distance, and the vector r = Ri - Rj is the separation vector between the two particles. Note that Eqq and Fqq are simply Coulombic energy and force, Fij = -Fji as symmetric forces, and Tij != -Tji since the torques do not act symmetrically. These formulas are discussed in -"(Allen)"_#Allen and in "(Toukmaji)"_#Toukmaji. +"(Allen)"_#Allen2 and in "(Toukmaji)"_#Toukmaji2. Style {lj/sf/dipole/sf} computes "shifted-force" interactions between pairs of particles that each have a charge and/or a point dipole @@ -77,7 +77,7 @@ moment. In general, a shifted-force potential is a (sligthly) modified potential containing extra terms that make both the energy and its derivative go to zero at the cutoff distance; this removes (cutoff-related) problems in energy conservation and any numerical -instability in the equations of motion "(Allen)"_#Allen. Shifted-force +instability in the equations of motion "(Allen)"_#Allen2. Shifted-force interactions for the Lennard-Jones (E_LJ), charge-charge (Eqq), charge-dipole (Eqp), dipole-charge (Epq) and dipole-dipole (Epp) potentials are computed by these formulas for the energy (E), force @@ -95,11 +95,11 @@ and force, Fij = -Fji as symmetric forces, and Tij != -Tji since the torques do not act symmetrically. The shifted-force formula for the Lennard-Jones potential is reported in "(Stoddard)"_#Stoddard. The original (unshifted) formulas for the electrostatic potentials, forces -and torques can be found in "(Price)"_#Price. The shifted-force +and torques can be found in "(Price)"_#Price2. The shifted-force electrostatic potentials have been obtained by applying equation 5.13 -of "(Allen)"_#Allen. The formulas for the corresponding forces and +of "(Allen)"_#Allen2. The formulas for the corresponding forces and torques have been obtained by applying the 'chain rule' as in appendix -C.3 of "(Allen)"_#Allen. +C.3 of "(Allen)"_#Allen2. If one cutoff is specified in the pair_style command, it is used for both the LJ and Coulombic (q,p) terms. If two cutoffs are specified, @@ -110,7 +110,7 @@ scaled according to this factor. This scale factor is also made available for use with fix adapt. Style {lj/cut/dipole/long} computes long-range point-dipole -interactions as discussed in "(Toukmaji)"_#Toukmaji. Dipole-dipole, +interactions as discussed in "(Toukmaji)"_#Toukmaji2. Dipole-dipole, dipole-charge, and charge-charge interactions are all supported, along with the standard 12/6 Lennard-Jones interactions, which are computed with a cutoff. A "kspace_style"_kspace_style.html must be defined to @@ -119,7 +119,7 @@ ewald/disp"_kspace_style.html support long-range point-dipole interactions. Style {lj/long/dipole/long} also computes point-dipole interactions as -discussed in "(Toukmaji)"_#Toukmaji. Long-range dipole-dipole, +discussed in "(Toukmaji)"_#Toukmaji2. Long-range dipole-dipole, dipole-charge, and charge-charge interactions are all supported, along with the standard 12/6 Lennard-Jones interactions. LJ interactions can be cutoff or long-ranged. @@ -252,16 +252,16 @@ currently supported. :line -:link(Allen) +:link(Allen2) [(Allen)] Allen and Tildesley, Computer Simulation of Liquids, Clarendon Press, Oxford, 1987. -:link(Toukmaji) +:link(Toukmaji2) [(Toukmaji)] Toukmaji, Sagui, Board, and Darden, J Chem Phys, 113, 10913 (2000). :link(Stoddard) [(Stoddard)] Stoddard and Ford, Phys Rev A, 8, 1504 (1973). -:link(Price) +:link(Price2) [(Price)] Price, Stone and Alderton, Mol Phys, 52, 987 (1984). diff --git a/doc/src/pair_dpd_fdt.txt b/doc/src/pair_dpd_fdt.txt index ffd138ddbd..b75e7c323c 100644 --- a/doc/src/pair_dpd_fdt.txt +++ b/doc/src/pair_dpd_fdt.txt @@ -37,7 +37,7 @@ Styles {dpd/fdt} and {dpd/fdt/energy} compute the force for dissipative particle dynamics (DPD) simulations. The {dpd/fdt} style is used to perform DPD simulations under isothermal and isobaric conditions, while the {dpd/fdt/energy} style is used to perform DPD simulations -under isoenergetic and isoenthalpic conditions (see "(Lisal)"_#Lisal). +under isoenergetic and isoenthalpic conditions (see "(Lisal)"_#Lisal3). For DPD simulations in general, the force on atom I due to atom J is given as a sum of 3 terms @@ -111,7 +111,7 @@ calculated using only the conservative term. The forces computed through the {dpd/fdt} and {dpd/fdt/energy} styles can be integrated with the velocity-Verlet integration scheme or the -Shardlow splitting integration scheme described by "(Lisal)"_#Lisal. +Shardlow splitting integration scheme described by "(Lisal)"_#Lisal3. In the cases when these pair styles are combined with the "fix shardlow"_fix_shardlow.html, these pair styles differ from the other dpd styles in that the dissipative and random forces are split @@ -147,7 +147,7 @@ energies and temperatures. :line -:link(Lisal) +:link(Lisal3) [(Lisal)] M. Lisal, J.K. Brennan, J. Bonet Avalos, "Dissipative particle dynamics at isothermal, isobaric, isoenergetic, and isoenthalpic conditions using Shardlow-like splitting algorithms.", diff --git a/doc/src/pair_eim.txt b/doc/src/pair_eim.txt index e74bb364d4..3f068d4040 100644 --- a/doc/src/pair_eim.txt +++ b/doc/src/pair_eim.txt @@ -25,7 +25,7 @@ pair_coeff * * Na Cl ../potentials/ffield.eim Cl NULL Na :pre [Description:] Style {eim} computes pairwise interactions for ionic compounds -using embedded-ion method (EIM) potentials "(Zhou)"_#Zhou. The +using embedded-ion method (EIM) potentials "(Zhou)"_#Zhou2. The energy of the system E is given by :c,image(Eqs/pair_eim1.jpg) @@ -169,6 +169,6 @@ LAMMPS was built with that package. :line -:link(Zhou) +:link(Zhou2) [(Zhou)] Zhou, submitted for publication (2010). Please contact Xiaowang Zhou (Sandia) for details via email at xzhou at sandia.gov. diff --git a/doc/src/pair_gauss.txt b/doc/src/pair_gauss.txt index 8f64122866..92d8b51d8b 100644 --- a/doc/src/pair_gauss.txt +++ b/doc/src/pair_gauss.txt @@ -59,8 +59,8 @@ between pairs of particles: where H determines together with the standard deviation sigma_h the peak height of the Gaussian function, and r_mh the peak position. Examples of the use of the Gaussian potentials include implicit -solvent simulations of salt ions "(Lenart)"_#Lenart and of surfactants -"(Jusufi)"_#Jusufi. In these instances the Gaussian potential mimics +solvent simulations of salt ions "(Lenart)"_#Lenart2 and of surfactants +"(Jusufi)"_#Jusufi2. In these instances the Gaussian potential mimics the hydration barrier between a pair of particles. The hydration barrier is located at r_mh and has a width of sigma_h. The prefactor determines the height of the potential barrier. @@ -178,11 +178,11 @@ LAMMPS"_Section_start.html#start_3 section for more info. [Default:] none -:link(Lenart) +:link(Lenart2) [(Lenart)] Lenart , Jusufi, and Panagiotopoulos, J Chem Phys, 126, 044509 (2007). -:link(Jusufi) +:link(Jusufi2) [(Jusufi)] Jusufi, Hynninen, and Panagiotopoulos, J Phys Chem B, 112, 13783 (2008). diff --git a/doc/src/pair_gayberne.txt b/doc/src/pair_gayberne.txt index b6171ef93e..8639f220a4 100644 --- a/doc/src/pair_gayberne.txt +++ b/doc/src/pair_gayberne.txt @@ -44,12 +44,12 @@ a particle as "spherical"). For large uniform molecules it has been shown that the energy parameters are approximately representable in terms of local contact -curvatures "(Everaers)"_#Everaers: +curvatures "(Everaers)"_#Everaers2: :c,image(Eqs/pair_gayberne2.jpg) The variable names utilized as potential parameters are for the most -part taken from "(Everaers)"_#Everaers in order to be consistent with +part taken from "(Everaers)"_#Everaers2 in order to be consistent with the "RE-squared pair potential"_pair_resquared.html. Details on the upsilon and mu parameters are given "here"_PDF/pair_resquared_extra.pdf. @@ -203,7 +203,7 @@ spherical particles, or point particles. Spherical particles have all all 3 of their shape parameters equal to 0.0. The Gay-Berne potential does not become isotropic as r increases -"(Everaers)"_#Everaers. The distance-of-closest-approach +"(Everaers)"_#Everaers2. The distance-of-closest-approach approximation used by LAMMPS becomes less accurate when high-aspect ratio ellipsoids are used. @@ -217,7 +217,7 @@ resquared"_pair_resquared.html :line -:link(Everaers) +:link(Everaers2) [(Everaers)] Everaers and Ejtehadi, Phys Rev E, 67, 041710 (2003). :link(Berardi) @@ -227,5 +227,5 @@ Berardi, Muccioli, Zannoni, J Chem Phys, 128, 024905 (2008). :link(Perram) [(Perram)] Perram and Rasmussen, Phys Rev E, 54, 6565-6572 (1996). -:link(Allen) +:link(Allen3) [(Allen)] Allen and Germano, Mol Phys 104, 3225-3235 (2006). diff --git a/doc/src/pair_gran.txt b/doc/src/pair_gran.txt index 373a82fa80..62a58b3504 100644 --- a/doc/src/pair_gran.txt +++ b/doc/src/pair_gran.txt @@ -45,7 +45,7 @@ pair_style gran/hooke 200000.0 70000.0 50.0 30.0 0.5 0 :pre The {gran} styles use the following formulas for the frictional force between two granular particles, as described in "(Brilliantov)"_#Brilliantov, "(Silbert)"_#Silbert, and -"(Zhang)"_#Zhang, when the distance r between two particles of radii +"(Zhang)"_#Zhang3, when the distance r between two particles of radii Ri and Rj is less than their contact distance d = Ri + Rj. There is no force between the particles when r > d. @@ -115,7 +115,7 @@ gamma_t is in units of (1/(time*distance)). Note that in the Hookean case, Kn can be thought of as a linear spring constant with units of force/distance. In the Hertzian case, Kn is like a non-linear spring constant with units of force/area or -pressure, and as shown in the "(Zhang)"_#Zhang paper, Kn = 4G / +pressure, and as shown in the "(Zhang)"_#Zhang3 paper, Kn = 4G / (3(1-nu)) where nu = the Poisson ratio, G = shear modulus = E / (2(1+nu)), and E = Young's modulus. Similarly, Kt = 4G / (2-nu). (NOTE: in an earlier version of the manual, we incorrectly stated that @@ -267,5 +267,5 @@ p 5382-5392 (1996). [(Silbert)] Silbert, Ertas, Grest, Halsey, Levine, Plimpton, Phys Rev E, 64, p 051302 (2001). -:link(Zhang) +:link(Zhang3) [(Zhang)] Zhang and Makse, Phys Rev E, 72, p 011301 (2005). diff --git a/doc/src/pair_lj.txt b/doc/src/pair_lj.txt index fdc0b133dd..5c8e31ac42 100644 --- a/doc/src/pair_lj.txt +++ b/doc/src/pair_lj.txt @@ -149,7 +149,7 @@ where kappa is the inverse of the Debye length. This potential is another way to mimic the screening effect of a polar solvent. Style {lj/cut/coul/dsf} computes the Coulombic term via the damped -shifted force model described in "Fennell"_#Fennell, given by: +shifted force model described in "Fennell"_#Fennell2, given by: :c,image(Eqs/pair_coul_dsf.jpg) @@ -180,7 +180,7 @@ model"_Section_howto.html#howto_25 to allow charges on core and shell particles to be separated by r = 0.0. Styles {lj/cut/tip4p/cut} and {lj/cut/tip4p/long} implement the TIP4P -water model of "(Jorgensen)"_#Jorgensen, which introduces a massless +water model of "(Jorgensen)"_#Jorgensen2, which introduces a massless site located a short distance away from the oxygen atom along the bisector of the HOH angle. The atomic types of the oxygen and hydrogen atoms, the bond and angle types for OH and HOH interactions, @@ -311,10 +311,10 @@ installed by default. :line -:link(Jorgensen) +:link(Jorgensen2) [(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem Phys, 79, 926 (1983). -:link(Fennell) +:link(Fennell2) [(Fennell)] C. J. Fennell, J. D. Gezelter, J Chem Phys, 124, 234104 (2006). diff --git a/doc/src/pair_lj_cubic.txt b/doc/src/pair_lj_cubic.txt index e768ac4fba..d33e3ec09b 100644 --- a/doc/src/pair_lj_cubic.txt +++ b/doc/src/pair_lj_cubic.txt @@ -42,7 +42,7 @@ A3*rmin^3/epsilon = 27.93... is given in the paper by Holian and Ravelo "(Holian)"_#Holian. This potential is commonly used to study the shock mechanics of FCC -solids, as in Ravelo et al. "(Ravelo)"_#Ravelo. +solids, as in Ravelo et al. "(Ravelo)"_#Ravelo2. The following coefficients must be defined for each pair of atom types via the "pair_coeff"_pair_coeff.html command as in the example above, @@ -125,5 +125,5 @@ support the {inner}, {middle}, {outer} keywords. :link(Holian) [(Holian)] Holian and Ravelo, Phys Rev B, 51, 11275 (1995). -:link(Ravelo) +:link(Ravelo2) [(Ravelo)] Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). diff --git a/doc/src/pair_lj_long.txt b/doc/src/pair_lj_long.txt index 517bb3d20b..d559871f9d 100644 --- a/doc/src/pair_lj_long.txt +++ b/doc/src/pair_lj_long.txt @@ -72,12 +72,12 @@ used as cutoffs for the LJ and Coulombic terms respectively. The purpose of this pair style is to capture long-range interactions resulting from both attractive 1/r^6 Lennard-Jones and Coulombic 1/r interactions. This is done by use of the {flag_lj} and {flag_coul} -settings. The "In 't Veld"_#Veld paper has more details on when it is +settings. The "In 't Veld"_#Veld2 paper has more details on when it is appropriate to include long-range 1/r^6 interactions, using this potential. Style {lj/long/tip4p/long} implements the TIP4P water model of -"(Jorgensen)"_#Jorgensen, which introduces a massless site located a +"(Jorgensen)"_#Jorgensen4, which introduces a massless site located a short distance away from the oxygen atom along the bisector of the HOH angle. The atomic types of the oxygen and hydrogen atoms, the bond and angle types for OH and HOH interactions, and the distance to the @@ -221,5 +221,9 @@ the KSPACE package is installed by default. :line -:link(Veld) +:link(Veld2) [(In 't Veld)] In 't Veld, Ismail, Grest, J Chem Phys (accepted) (2007). + +:link(Jorgensen4) +[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem +Phys, 79, 926 (1983). diff --git a/doc/src/pair_lubricate.txt b/doc/src/pair_lubricate.txt index daa2e37b68..501a043801 100644 --- a/doc/src/pair_lubricate.txt +++ b/doc/src/pair_lubricate.txt @@ -41,7 +41,7 @@ Styles {lubricate} and {lubricate/poly} compute hydrodynamic interactions between mono-disperse finite-size spherical particles in a pairwise fashion. The interactions have 2 components. The first is Ball-Melrose lubrication terms via the formulas in "(Ball and -Melrose)"_#Ball +Melrose)"_#Ball1 :c,image(Eqs/pair_lubricate.jpg) @@ -70,7 +70,7 @@ computed. Using a {cutoff} less than 3 radii is recommended if {flaglog} is set to 1. The other component is due to the Fast Lubrication Dynamics (FLD) -approximation, described in "(Kumar)"_#Kumar, which can be +approximation, described in "(Kumar)"_#Kumar1, which can be represented by the following equation :c,image(Eqs/fld.jpg) @@ -217,10 +217,10 @@ The default settings for the optional args are flagHI = 1 and flagVF = :line -:link(Ball) +:link(Ball1) [(Ball)] Ball and Melrose, Physica A, 247, 444-472 (1997). -:link(Kumar) +:link(Kumar1) [(Kumar)] Kumar and Higdon, Phys Rev E, 82, 051401 (2010). See also his thesis for more details: A. Kumar, "Microscale Dynamics in Suspensions of Non-spherical Particles", Thesis, University of diff --git a/doc/src/pair_lubricateU.txt b/doc/src/pair_lubricateU.txt index 52e63ac350..720a8539b8 100644 --- a/doc/src/pair_lubricateU.txt +++ b/doc/src/pair_lubricateU.txt @@ -37,7 +37,7 @@ other types of interactions. The interactions have 2 components. The first is Ball-Melrose lubrication terms via the formulas in "(Ball and -Melrose)"_#Ball +Melrose)"_#Ball2 :c,image(Eqs/pair_lubricate.jpg) @@ -67,7 +67,7 @@ computed. Using a {cutoff} less than 3 radii is recommended if {flaglog} is set to 1. The other component is due to the Fast Lubrication Dynamics (FLD) -approximation, described in "(Kumar)"_#Kumar. The equation being +approximation, described in "(Kumar)"_#Kumar2. The equation being solved to balance the forces and torques is :c,image(Eqs/fld2.jpg) @@ -211,8 +211,8 @@ The default settings for the optional args are flagHI = 1 and flagVF = :line -:link(Ball) +:link(Ball2) [(Ball)] Ball and Melrose, Physica A, 247, 444-472 (1997). -:link(Kumar) +:link(Kumar2) [(Kumar)] Kumar and Higdon, Phys Rev E, 82, 051401 (2010). diff --git a/doc/src/pair_meam.txt b/doc/src/pair_meam.txt index 318f22067f..4fcb7a2e6c 100644 --- a/doc/src/pair_meam.txt +++ b/doc/src/pair_meam.txt @@ -259,7 +259,7 @@ The augt1 parameter is related to modifications in the MEAM formulation of the partial electron density function. In recent literature, an extra term is included in the expression for the third-order density in order to make the densities orthogonal (see for -example "(Wang)"_#Wang, equation 3d); this term is included in the +example "(Wang)"_#Wang2, equation 3d); this term is included in the MEAM implementation in lammps. However, in earlier published work this term was not included when deriving parameters, including most of those provided in the library.meam file included with lammps, and to @@ -363,7 +363,7 @@ This report may be accessed on-line via "this link"_sandreport. :link(Valone) [(Valone)] Valone, Baskes, Martin, Phys. Rev. B, 73, 214209 (2006). -:link(Wang) +:link(Wang2) [(Wang)] Wang, Van Hove, Ross, Baskes, J. Chem. Phys., 121, 5410 (2004). :link(ZBL) diff --git a/doc/src/pair_meam_spline.txt b/doc/src/pair_meam_spline.txt index 08e53cb38c..a02125a6d9 100644 --- a/doc/src/pair_meam_spline.txt +++ b/doc/src/pair_meam_spline.txt @@ -23,7 +23,7 @@ pair_coeff * * Ti.meam.spline Ti Ti Ti :pre The {meam/spline} style computes pairwise interactions for metals using a variant of modified embedded-atom method (MEAM) potentials -"(Lenosky)"_#Lenosky. The total energy E is given by +"(Lenosky)"_#Lenosky1. The total energy E is given by :c,image(Eqs/pair_meam_spline.jpg) @@ -138,7 +138,7 @@ for more info. :line -:link(Lenosky) +:link(Lenosky1) [(Lenosky)] Lenosky, Sadigh, Alonso, Bulatov, de la Rubia, Kim, Voter, Kress, Modelling Simulation Materials Science Engineering, 8, 825 (2000). diff --git a/doc/src/pair_meam_sw_spline.txt b/doc/src/pair_meam_sw_spline.txt index fa80854ed8..fa731799dd 100644 --- a/doc/src/pair_meam_sw_spline.txt +++ b/doc/src/pair_meam_sw_spline.txt @@ -23,8 +23,8 @@ pair_coeff * * Ti.meam.sw.spline Ti Ti Ti :pre The {meam/sw/spline} style computes pairwise interactions for metals using a variant of modified embedded-atom method (MEAM) potentials -"(Lenosky)"_#Lenosky with an additional Stillinger-Weber (SW) term -"(Stillinger)"_#Stillinger in the energy. This form of the potential +"(Lenosky)"_#Lenosky2 with an additional Stillinger-Weber (SW) term +"(Stillinger)"_#Stillinger1 in the energy. This form of the potential was first proposed by Nicklas, Fellinger, and Park "(Nicklas)"_#Nicklas. We refer to it as MEAM+SW. The total energy E is given by @@ -123,11 +123,11 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(Lenosky) +:link(Lenosky2) [(Lenosky)] Lenosky, Sadigh, Alonso, Bulatov, de la Rubia, Kim, Voter, Kress, Modell. Simul. Mater. Sci. Eng. 8, 825 (2000). -:link(Stillinger) +:link(Stillinger1) [(Stillinger)] Stillinger, Weber, Phys. Rev. B 31, 5262 (1985). :link(Nicklas) diff --git a/doc/src/pair_modify.txt b/doc/src/pair_modify.txt index 8a4f291583..03fb80ae5e 100644 --- a/doc/src/pair_modify.txt +++ b/doc/src/pair_modify.txt @@ -112,7 +112,7 @@ see the doc page for individual styles to see which potentials support these options. If N is non-zero, a table of length 2^N is pre-computed for forces and energies, which can shrink their computational cost by up to a factor of 2. The table is indexed via a -bit-mapping technique "(Wolff)"_#Wolff and a linear interpolation is +bit-mapping technique "(Wolff)"_#Wolff1 and a linear interpolation is performed between adjacent table values. In our experiments with different table styles (lookup, linear, spline), this method typically gave the best performance in terms of speed and accuracy. @@ -253,7 +253,7 @@ mixing. See the doc pages for individual pair styles for details. :line -:link(Wolff) +:link(Wolff1) [(Wolff)] Wolff and Rudd, Comp Phys Comm, 120, 200-32 (1999). :link(Sun) diff --git a/doc/src/pair_multi_lucy.txt b/doc/src/pair_multi_lucy.txt index 4978ebfeca..38fd1ede4a 100644 --- a/doc/src/pair_multi_lucy.txt +++ b/doc/src/pair_multi_lucy.txt @@ -23,8 +23,8 @@ pair_coeff * * multibody.table ENTRY1 7.0 :pre [Description:] Style {multi/lucy} computes a density-dependent force following from -the many-body form described in "(Moore)"_#Moore and -"(Warren)"_#Warren as +the many-body form described in "(Moore)"_#Moore1 and +"(Warren)"_#Warren1 as :c,image(Eqs/pair_multi_lucy.jpg) @@ -38,8 +38,8 @@ The density-dependent energy for a given particle is given by: :c,image(Eqs/pair_multi_lucy_energy.jpg) -See the supporting information of "(Brennan)"_#Brennan or the -publication by "(Moore)"_#Moore for more details on the functional +See the supporting information of "(Brennan)"_#Brennan1 or the +publication by "(Moore)"_#Moore1 for more details on the functional form. An interpolation table is used to evaluate the density-dependent @@ -188,12 +188,12 @@ LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(Warren) +:link(Warren1) [(Warren)] Warren, Phys Rev E, 68, 066702 (2003). -:link(Brennan) +:link(Brennan1) [(Brennan)] Brennan, J Chem Phys Lett, 5, 2144-2149 (2014). -:link(Moore) +:link(Moore1) [(Moore)] Moore, J Chem Phys, 144, 104501 (2016). diff --git a/doc/src/pair_multi_lucy_rx.txt b/doc/src/pair_multi_lucy_rx.txt index 75547a71ce..bf5d5636fe 100644 --- a/doc/src/pair_multi_lucy_rx.txt +++ b/doc/src/pair_multi_lucy_rx.txt @@ -33,8 +33,8 @@ equations through the "fix rx"_fix_rx.html command. The species of one CG particle can interact with a species in a neighboring CG particle through a site-site interaction potential model. Style {multi/lucy/rx} computes the site-site density-dependent force -following from the many-body form described in "(Moore)"_#Moore and -"(Warren)"_#Warren as +following from the many-body form described in "(Moore)"_#Moore2 and +"(Warren)"_#Warren2 as :c,image(Eqs/pair_multi_lucy.jpg) @@ -48,8 +48,8 @@ The density-dependent energy for a given particle is given by: :c,image(Eqs/pair_multi_lucy_energy.jpg) -See the supporting information of "(Brennan)"_#Brennan or the -publication by "(Moore)"_#Moore for more details on the functional +See the supporting information of "(Brennan)"_#Brennan2 or the +publication by "(Moore)"_#Moore2 for more details on the functional form. An interpolation table is used to evaluate the density-dependent @@ -214,12 +214,12 @@ LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(Warren) +:link(Warren2) [(Warren)] Warren, Phys Rev E, 68, 066702 (2003). -:link(Brennan) +:link(Brennan2) [(Brennan)] Brennan, J Chem Phys Lett, 5, 2144-2149 (2014). -:link(Moore) +:link(Moore2) [(Moore)] Moore, J Chem Phys, 144, 104501 (2016). diff --git a/doc/src/pair_polymorphic.txt b/doc/src/pair_polymorphic.txt index 0820a00de3..c088e8bb22 100644 --- a/doc/src/pair_polymorphic.txt +++ b/doc/src/pair_polymorphic.txt @@ -25,7 +25,7 @@ pair_coeff * * GaN_sw.polymorphic GaN :pre [Description:] The {polymorphic} pair style computes a 3-body free-form potential -("Zhou"_#Zhou) for the energy E of a system of atoms as +("Zhou"_#Zhou3) for the energy E of a system of atoms as :c,image(Eqs/polymorphic1.jpg) :c,image(Eqs/polymorphic2.jpg) @@ -57,7 +57,7 @@ The potential reduces to Tersoff types of potential :c,image(Eqs/polymorphic5.jpg) :c,image(Eqs/polymorphic6.jpg) -The potential reduces to Rockett-Tersoff ("Wang"_#Wang) type if we set +The potential reduces to Rockett-Tersoff ("Wang"_#Wang3) type if we set :c,image(Eqs/polymorphic7.jpg) :c,image(Eqs/polymorphic6.jpg) @@ -208,7 +208,7 @@ files. :line -:link(Zhou) +:link(Zhou3) [(Zhou)] X. W. Zhou, M. E. Foster, R. E. Jones, P. Yang, H. Fan, and F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015). @@ -222,7 +222,7 @@ F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015). [(Albe)] K. Albe, K. Nordlund, J. Nord, and A. Kuronen, Phys. Rev. B, 66, 035205 (2002). -:link(Wang) +:link(Wang3) [(Wang)] J. Wang, and A. Rockett, Phys. Rev. B, 43, 12571 (1991). :link(poly-Daw) diff --git a/doc/src/pair_reax.txt b/doc/src/pair_reax.txt index d2dc09ac49..7215c12cee 100644 --- a/doc/src/pair_reax.txt +++ b/doc/src/pair_reax.txt @@ -32,7 +32,7 @@ represent the contributions of chemical bonding to the potential energy. There is more than one version of ReaxFF. The version implemented in LAMMPS uses the functional forms documented in the supplemental information of the following paper: -"(Chenoweth)"_#Chenoweth_2008. The version integrated into LAMMPS matches +"(Chenoweth)"_#Chenoweth_20081. The version integrated into LAMMPS matches the most up-to-date version of ReaxFF as of summer 2010. WARNING: pair style reax is now deprecated and will soon be retired. Users @@ -211,6 +211,6 @@ The keyword defaults are {hbcut} = 6, {hbnewflag} = 1, {tripflag} = 1, :line -:link(Chenoweth_2008) +:link(Chenoweth_20081) [(Chenoweth_2008)] Chenoweth, van Duin and Goddard, Journal of Physical Chemistry A, 112, 1040-1053 (2008). diff --git a/doc/src/pair_reax_c.txt b/doc/src/pair_reax_c.txt index bd8d7e44c9..c1d719d22e 100644 --- a/doc/src/pair_reax_c.txt +++ b/doc/src/pair_reax_c.txt @@ -38,7 +38,7 @@ represent the contributions of chemical bonding to the potential energy. There is more than one version of ReaxFF. The version implemented in LAMMPS uses the functional forms documented in the supplemental information of the following paper: "(Chenoweth et al., -2008)"_#Chenoweth_2008. The version integrated into LAMMPS matches +2008)"_#Chenoweth_20082. The version integrated into LAMMPS matches the most up-to-date version of ReaxFF as of summer 2010. For more technical details about the pair reax/c implementation of ReaxFF, see the "(Aktulga)"_#Aktulga paper. The {reax/c} style was initially @@ -336,7 +336,7 @@ mincap = 50. :line -:link(Chenoweth_2008) +:link(Chenoweth_20082) [(Chenoweth_2008)] Chenoweth, van Duin and Goddard, Journal of Physical Chemistry A, 112, 1040-1053 (2008). diff --git a/doc/src/pair_resquared.txt b/doc/src/pair_resquared.txt index 0242bab185..2e0034ed3b 100644 --- a/doc/src/pair_resquared.txt +++ b/doc/src/pair_resquared.txt @@ -24,7 +24,7 @@ pair_coeff * * 1.0 1.0 1.7 3.4 3.4 1.0 1.0 1.0 :pre [Description:] Style {resquared} computes the RE-squared anisotropic interaction -"(Everaers)"_#Everaers, "(Babadi)"_#Babadi between pairs of +"(Everaers)"_#Everaers3, "(Babadi)"_#Babadi between pairs of ellipsoidal and/or spherical Lennard-Jones particles. For ellipsoidal interactions, the potential considers the ellipsoid as being comprised of small spheres of size sigma. LJ particles are a single sphere of @@ -69,7 +69,7 @@ two interacting particles. For ellipsoid/ellipsoid interactions, the interaction is computed by the formulas in the supplementary document referenced above. A12 is -the Hamaker constant as described in "(Everaers)"_#Everaers. In LJ +the Hamaker constant as described in "(Everaers)"_#Everaers3. In LJ units: :c,image(Eqs/pair_resquared.jpg) @@ -131,7 +131,7 @@ that type in a "pair_coeff I J" command. For large uniform molecules it has been shown that the epsilon_*_* energy parameters are approximately representable in terms of local -contact curvatures "(Everaers)"_#Everaers: +contact curvatures "(Everaers)"_#Everaers3: :c,image(Eqs/pair_resquared4.jpg) @@ -228,7 +228,7 @@ gayberne"_pair_gayberne.html :line -:link(Everaers) +:link(Everaers3) [(Everaers)] Everaers and Ejtehadi, Phys Rev E, 67, 041710 (2003). :link(Babadi) diff --git a/doc/src/pair_sdk.txt b/doc/src/pair_sdk.txt index 7509a52168..212760e03d 100644 --- a/doc/src/pair_sdk.txt +++ b/doc/src/pair_sdk.txt @@ -43,7 +43,7 @@ given by :c,image(Eqs/pair_cmm.jpg) as required for the SDK Coarse-grained MD parametrization discussed in -"(Shinoda)"_#Shinoda and "(DeVane)"_#DeVane. Rc is the cutoff. +"(Shinoda)"_#Shinoda3 and "(DeVane)"_#DeVane. Rc is the cutoff. Style {lj/sdk/coul/long} computes the adds Coulombic interactions with an additional damping factor applied so it can be used in @@ -148,7 +148,7 @@ LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(Shinoda) +:link(Shinoda3) [(Shinoda)] Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007). :link(DeVane) diff --git a/doc/src/pair_smtbq.txt b/doc/src/pair_smtbq.txt index 714188de32..c8d6b21b3f 100644 --- a/doc/src/pair_smtbq.txt +++ b/doc/src/pair_smtbq.txt @@ -51,7 +51,7 @@ pair_coeff * * PathToLammps/potentials/ffield.smtbq.TiO2 O Ti :pre The electrostatic part of the energy consists of two components : self-energy of atom {i} in the form of a second order charge dependent polynomial and a long-range Coulombic electrostatic interaction. The -latter uses the wolf summation method described in "Wolf"_#Wolf, +latter uses the wolf summation method described in "Wolf"_#Wolf2, spherically truncated at a longer cutoff, {Rcoul}. The charge of each ion is modeled by an orbital Slater which depends on the principal quantum number ({n}) of the outer orbital shared by the @@ -117,7 +117,7 @@ neighbors. The SMTB-Q potential is a variable charge potential. The equilibrium charge on each atom is calculated by the electronegativity -equalization (QEq) method. See "Rick"_#Rick for further detail. One +equalization (QEq) method. See "Rick"_#Rick3 for further detail. One can adjust the frequency, the maximum number of iterative loop and the convergence of the equilibrium charge calculation. To obtain the energy conservation in NVE thermodynamic ensemble, we recommend to use @@ -252,10 +252,10 @@ H. Jonsson, J. Phys. Chem. C 2015, 119, 10391-10399 [(SMTB-Q_3)] R. Tetot, N. Salles, S. Landron, E. Amzallag, Surface Science 616, 19-8722 28 (2013) -:link(Wolf) +:link(Wolf2) [(Wolf)] D. Wolf, P. Keblinski, S. R. Phillpot, J. Eggebrecht, J Chem Phys, 110, 8254 (1999). -:link(Rick) +:link(Rick3) [(Rick)] S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141 (1994). diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt index cb2289259d..a24c6c3160 100644 --- a/doc/src/pair_snap.txt +++ b/doc/src/pair_snap.txt @@ -21,8 +21,8 @@ pair_coeff * * InP.snapcoeff In P InP.snapparam In In P P :pre Style {snap} computes interactions using the spectral neighbor analysis potential (SNAP) -"(Thompson)"_#Thompson2014. Like the GAP framework of Bartok et al. -"(Bartok2010)"_#Bartok2010, "(Bartok2013)"_#Bartok2013 +"(Thompson)"_#Thompson20142. Like the GAP framework of Bartok et al. +"(Bartok2010)"_#Bartok20102, "(Bartok2013)"_#Bartok2013 it uses bispectrum components to characterize the local neighborhood of each atom in a very general way. The mathematical definition of the @@ -182,10 +182,10 @@ LAMMPS"_Section_start.html#start_3 section for more info. :line -:link(Thompson2014) +:link(Thompson20142) [(Thompson)] Thompson, Swiler, Trott, Foiles, Tucker, J Comp Phys, 285, 316 (2015). -:link(Bartok2010) +:link(Bartok20102) [(Bartok2010)] Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010). :link(Bartok2013) diff --git a/doc/src/pair_srp.txt b/doc/src/pair_srp.txt index c1eff12cbf..3f54445ba8 100644 --- a/doc/src/pair_srp.txt +++ b/doc/src/pair_srp.txt @@ -65,7 +65,7 @@ according to the lever rule, where {L} is the normalized distance from the atom to the point of closest approach of bond {i} and {j}. The {mid} option takes {L} as -0.5 for each interaction as described in "(Sirk)"_#Sirk. +0.5 for each interaction as described in "(Sirk)"_#Sirk2. The following coefficients must be defined via the "pair_coeff"_pair_coeff.html command as in the examples above, or in @@ -161,6 +161,6 @@ The default keyword value is exclude = yes. :line -:link(Sirk) +:link(Sirk2) [(Sirk)] Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012. diff --git a/doc/src/pair_sw.txt b/doc/src/pair_sw.txt index ccb7c9c96b..6025b9b11b 100644 --- a/doc/src/pair_sw.txt +++ b/doc/src/pair_sw.txt @@ -24,7 +24,7 @@ pair_coeff * * GaN.sw Ga N Ga :pre [Description:] -The {sw} style computes a 3-body "Stillinger-Weber"_#Stillinger +The {sw} style computes a 3-body "Stillinger-Weber"_#Stillinger2 potential for the energy E of a system of atoms as :c,image(Eqs/pair_sw.jpg) @@ -212,5 +212,5 @@ appropriate units if your simulation doesn't use "metal" units. :line -:link(Stillinger) +:link(Stillinger2) [(Stillinger)] Stillinger and Weber, Phys Rev B, 31, 5262 (1985). diff --git a/doc/src/pair_table.txt b/doc/src/pair_table.txt index ba79aee40d..01c577cd98 100644 --- a/doc/src/pair_table.txt +++ b/doc/src/pair_table.txt @@ -64,7 +64,7 @@ computes the energy or force. For the {bitmap} style, the specified {N} is used to create interpolation tables that are 2^N in length. The distance {R} is used to index into the table via a fast bit-mapping technique due to -"(Wolff)"_#Wolff, and a linear interpolation is performed between +"(Wolff)"_#Wolff2, and a linear interpolation is performed between adjacent table values. The following coefficients must be defined for each pair of atoms @@ -268,5 +268,5 @@ This pair style can only be used via the {pair} keyword of the :line -:link(Wolff) +:link(Wolff2) [(Wolff)] Wolff and Rudd, Comp Phys Comm, 120, 200-32 (1999). diff --git a/doc/src/pair_tersoff.txt b/doc/src/pair_tersoff.txt index 52e056dfd8..eb4a8993cf 100644 --- a/doc/src/pair_tersoff.txt +++ b/doc/src/pair_tersoff.txt @@ -32,7 +32,7 @@ pair_coeff * * SiCGe.tersoff Si(D) :pre [Description:] The {tersoff} style computes a 3-body Tersoff potential -"(Tersoff_1)"_#Tersoff_1 for the energy E of a system of atoms as +"(Tersoff_1)"_#Tersoff_11 for the energy E of a system of atoms as :c,image(Eqs/pair_tersoff_1.jpg) @@ -136,7 +136,7 @@ be set to 0.0 if desired. Note that the twobody parameters in entries such as SiCC and CSiSi are often the same, due to the common use of symmetric mixing rules, but this is not always the case. For example, the beta and n parameters in -Tersoff_2 "(Tersoff_2)"_#Tersoff_2 are not symmetric. +Tersoff_2 "(Tersoff_2)"_#Tersoff_21 are not symmetric. We chose the above form so as to enable users to define all commonly used variants of the Tersoff potential. In particular, our form @@ -145,7 +145,7 @@ it reduces to the form of "Albe et al."_#Albe when beta = 1 and m = 1. Note that in the current Tersoff implementation in LAMMPS, m must be specified as either 3 or 1. Tersoff used a slightly different but equivalent form for alloys, which we will refer to as Tersoff_2 -potential "(Tersoff_2)"_#Tersoff_2. The {tersoff/table} style implements +potential "(Tersoff_2)"_#Tersoff_21. The {tersoff/table} style implements Tersoff_2 parameterization only. LAMMPS parameter values for Tersoff_2 can be obtained as follows: @@ -242,12 +242,12 @@ appropriate units if your simulation doesn't use "metal" units. :line -:link(Tersoff_1) +:link(Tersoff_11) [(Tersoff_1)] J. Tersoff, Phys Rev B, 37, 6991 (1988). :link(Albe) [(Albe)] J. Nord, K. Albe, P. Erhart, and K. Nordlund, J. Phys.: Condens. Matter, 15, 5649(2003). -:link(Tersoff_2) +:link(Tersoff_21) [(Tersoff_2)] J. Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248) diff --git a/doc/src/pair_tersoff_mod.txt b/doc/src/pair_tersoff_mod.txt index 5e1c4131df..ff703063b3 100644 --- a/doc/src/pair_tersoff_mod.txt +++ b/doc/src/pair_tersoff_mod.txt @@ -31,7 +31,7 @@ pair_coeff * * Si.tersoff.modc Si Si :pre The {tersoff/mod} and {tersoff/mod/c} styles computes a bond-order type interatomic potential "(Kumagai)"_#Kumagai based on a 3-body Tersoff -potential "(Tersoff_1)"_#Tersoff_1, "(Tersoff_2)"_#Tersoff_2 with +potential "(Tersoff_1)"_#Tersoff_12, "(Tersoff_2)"_#Tersoff_22 with modified cutoff function and angular-dependent term, giving the energy E of a system of atoms as @@ -194,10 +194,10 @@ appropriate units if your simulation doesn't use "metal" units. [(Kumagai)] T. Kumagai, S. Izumi, S. Hara, S. Sakai, Comp. Mat. Science, 39, 457 (2007). -:link(Tersoff_1) +:link(Tersoff_12) [(Tersoff_1)] J. Tersoff, Phys Rev B, 37, 6991 (1988). -:link(Tersoff_2) +:link(Tersoff_22) [(Tersoff_2)] J. Tersoff, Phys Rev B, 38, 9902 (1988). :link(Murty) diff --git a/doc/src/pair_thole.txt b/doc/src/pair_thole.txt index 923485eaa7..61ca0b5c35 100644 --- a/doc/src/pair_thole.txt +++ b/doc/src/pair_thole.txt @@ -71,8 +71,8 @@ short distances by a function \exp \left( - s_\{ij\} r_\{ij\} \right) \end\{equation\} This function results from an adaptation to point charges -"(Noskov)"_#Noskov of the dipole screening scheme originally proposed -by "Thole"_#Thole. The scaling coefficient \(s_\{ij\} \) is determined +"(Noskov)"_#Noskov1 of the dipole screening scheme originally proposed +by "Thole"_#Thole1. The scaling coefficient \(s_\{ij\} \) is determined by the polarizability of the atoms, \( \alpha_i \), and by a Thole damping parameter \( a \). This Thole damping parameter usually takes a value of 2.6, but in certain force fields the value can depend upon @@ -186,8 +186,8 @@ temp/drude"_compute_temp_drude.html :line -:link(Noskov) +:link(Noskov1) [(Noskov)] Noskov, Lamoureux and Roux, J Phys Chem B, 109, 6705 (2005). -:link(Thole) +:link(Thole1) [(Thole)] Chem Phys, 59, 341 (1981). diff --git a/doc/src/prd.txt b/doc/src/prd.txt index 607c367afd..247d422b1c 100644 --- a/doc/src/prd.txt +++ b/doc/src/prd.txt @@ -48,11 +48,11 @@ replicas of a system. One or more replicas can be used. The total number of steps {N} to run can be interpreted in one of two ways; see discussion of the {time} keyword below. -PRD is described in "this paper"_#Voter by Art Voter. It is a method +PRD is described in "this paper"_#Voter1998 by Art Voter. It is a method for performing accelerated dynamics that is suitable for infrequent-event systems that obey first-order kinetics. A good overview of accelerated dynamics methods for such systems in given in -"this review paper"_#Voter2 from the same group. To quote from the +"this review paper"_#Voter2002prd from the same group. To quote from the paper: "The dynamical evolution is characterized by vibrational excursions within a potential basin, punctuated by occasional transitions between basins." The transition probability is @@ -316,9 +316,9 @@ geom gaussian, and time = steps. :line -:link(Voter) -[(Voter)] Voter, Phys Rev B, 57, 13985 (1998). +:link(Voter1998) +[(Voter1998)] Voter, Phys Rev B, 57, 13985 (1998). -:link(Voter2) -[(Voter2)] Voter, Montalenti, Germann, Annual Review of Materials +:link(Voter2002prd) +[(Voter2002)] Voter, Montalenti, Germann, Annual Review of Materials Research 32, 321 (2002). diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt index 86c123527b..b9924989a6 100644 --- a/doc/src/read_data.txt +++ b/doc/src/read_data.txt @@ -633,6 +633,15 @@ style, in which case the mass of each particle (body or point particle) is specified explicitly. This is because the volume of the body is unknown. +Note that for 2d simulations of spheres, this command will treat them +as spheres when converting density to mass. However, they can also be +modeled as 2d discs (circles) if the "set density/disc"_set.html +command is used to reset their mass after the read_data command is +used. A {disc} keyword can also be used with time integration fixes, +such as "fix nve/sphere"_fix_nve_sphere.html and "fix +nvt/sphere"_fix_nve_sphere.html to time integrate their motion as 2d +discs (not 3d spheres), by changing their moment of inertia. + For atom_style hybrid, following the 5 initial values (ID,type,x,y,z), specific values for each sub-style must be listed. The order of the sub-styles is the same as they were listed in the diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt index b30a17686d..0e3c1a939f 100644 --- a/doc/src/run_style.txt +++ b/doc/src/run_style.txt @@ -130,7 +130,7 @@ options to support this, and strategies are discussed in :line The {respa} style implements the rRESPA multi-timescale integrator -"(Tuckerman)"_#Tuckerman with N hierarchical levels, where level 1 is +"(Tuckerman)"_#Tuckerman3 with N hierarchical levels, where level 1 is the innermost loop (shortest timestep) and level N is the outermost loop (largest timestep). The loop factor arguments specify what the looping factor is between levels. N1 specifies the number of @@ -289,6 +289,6 @@ run_style verlet :pre :line -:link(Tuckerman) +:link(Tuckerman3) [(Tuckerman)] Tuckerman, Berne and Martyna, J Chem Phys, 97, p 1990 (1992). diff --git a/doc/src/set.txt b/doc/src/set.txt index 659eecd30d..6b59bf1332 100644 --- a/doc/src/set.txt +++ b/doc/src/set.txt @@ -20,7 +20,7 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ {quat/random} or {diameter} or {shape} or \ {length} or {tri} or {theta} or {theta/random} or \ {angmom} or {omega} or \ - {mass} or {density} or {volume} or {image} or \ + {mass} or {density} or {density/disc} or {volume} or {image} or \ {bond} or {angle} or {dihedral} or {improper} or \ {meso/e} or {meso/cv} or {meso/rho} or \ {smd/contact/radius} or {smd/mass/density} or {dpd/theta} or \ @@ -72,7 +72,9 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ any of wx,wy,wz can be an atom-style variable (see below) {mass} value = per-atom mass (mass units) value can be an atom-style variable (see below) - {density} value = particle density for sphere or ellipsoid (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle) + {density} value = particle density for a sphere or ellipsoid (mass/distance^3 units), or for a triangle (mass/distance^2 units) or line (mass/distance units) particle + value can be an atom-style variable (see below) + {density/disc} value = particle density for a 2d disc or ellipse (mass/distance^2 units) value can be an atom-style variable (see below) {volume} value = particle volume for Peridynamic particle (distance^3 units) value can be an atom-style variable (see below) @@ -318,23 +320,36 @@ must have a per-atom mass attribute, as defined by the "atom_style"_atom_style.html command. See the "mass" command for how to set mass values on a per-type basis. -Keyword {density} also sets the mass of all selected particles, but in -a different way. The particles must have a per-atom mass attribute, -as defined by the "atom_style"_atom_style.html command. If the atom -has a radius attribute (see "atom_style sphere"_atom_style.html) and -its radius is non-zero, its mass is set from the density and particle -volume. If the atom has a shape attribute (see "atom_style +Keyword {density} or {density/disc} also sets the mass of all selected +particles, but in a different way. The particles must have a per-atom +mass attribute, as defined by the "atom_style"_atom_style.html +command. If the atom has a radius attribute (see "atom_style +sphere"_atom_style.html) and its radius is non-zero, its mass is set +from the density and particle volume for 3d systems (the input density +is assumed to be in mass/distance^3 units). For 2d, the default is +for LAMMPS to model particles with a radius attribute as spheres. +However, if the {density/disc} keyword is used, then they can be +modeled as 2d discs (circles). Their mass is set from the density and +particle area (the input density is assumed to be in mass/distance^2 +units). + +If the atom has a shape attribute (see "atom_style ellipsoid"_atom_style.html) and its 3 shape parameters are non-zero, -then its mass is set from the density and particle volume. If the -atom has a length attribute (see "atom_style line"_atom_style.html) -and its length is non-zero, then its mass is set from the density and -line segment length (the input density is assumed to be in -mass/distance units). If the atom has an area attribute (see -"atom_style tri"_atom_style.html) and its area is non-zero, then its -mass is set from the density and triangle area (the input density is -assumed to be in mass/distance^2 units). If none of these cases are -valid, then the mass is set to the density value directly (the input -density is assumed to be in mass units). +then its mass is set from the density and particle volume (the input +density is assumed to be in mass/distance^3 units). The +{density/disc} keyword has no effect; it does not (yet) treat 3d +ellipsoids as 2d ellipses. + +If the atom has a length attribute (see "atom_style +line"_atom_style.html) and its length is non-zero, then its mass is +set from the density and line segment length (the input density is +assumed to be in mass/distance units). If the atom has an area +attribute (see "atom_style tri"_atom_style.html) and its area is +non-zero, then its mass is set from the density and triangle area (the +input density is assumed to be in mass/distance^2 units). + +If none of these cases are valid, then the mass is set to the density +value directly (the input density is assumed to be in mass units). Keyword {volume} sets the volume of all selected particles. Currently, only the "atom_style peri"_atom_style.html command defines diff --git a/doc/src/tad.txt b/doc/src/tad.txt index 04c7d708f6..f5e7c6d653 100644 --- a/doc/src/tad.txt +++ b/doc/src/tad.txt @@ -56,11 +56,11 @@ Run a temperature accelerated dynamics (TAD) simulation. This method requires two or more partitions to perform NEB transition state searches. -TAD is described in "this paper"_#Voter by Art Voter. It is a method +TAD is described in "this paper"_#Voter2000 by Art Voter. It is a method that uses accelerated dynamics at an elevated temperature to generate results at a specified lower temperature. A good overview of accelerated dynamics methods for such systems is given in "this review -paper"_#Voter2 from the same group. In general, these methods assume +paper"_#Voter2002 from the same group. In general, these methods assume that the long-time dynamics is dominated by infrequent events i.e. the system is is confined to low energy basins for long periods, punctuated by brief, randomly-occurring transitions to adjacent @@ -304,9 +304,9 @@ the "timestep"_timestep.html command, and {neb_log} = "none". :line -:link(Voter) -[(Voter)] Sorensen and Voter, J Chem Phys, 112, 9599 (2000) +:link(Voter2000) +[(Voter2000)] Sorensen and Voter, J Chem Phys, 112, 9599 (2000) -:link(Voter2) -[(Voter2)] Voter, Montalenti, Germann, Annual Review of Materials +:link(Voter2002) +[(Voter2002)] Voter, Montalenti, Germann, Annual Review of Materials Research 32, 321 (2002). diff --git a/doc/src/tutorial_drude.txt b/doc/src/tutorial_drude.txt index 518b90854b..b9a167b804 100644 --- a/doc/src/tutorial_drude.txt +++ b/doc/src/tutorial_drude.txt @@ -54,7 +54,7 @@ charge, and force constant can be chosen following different strategies, as in the following examples of polarizable force fields: -"Lamoureux and Roux"_#Lamoureux suggest adopting a global half-stiffness, \ +"Lamoureux and Roux"_#Lamoureux2 suggest adopting a global half-stiffness, \ \(K_D\) = 500 kcal/(mol Ang \(\{\}^2\)) - which corresponds to a force \ constant \(k_D\) = 4184 kJ/(mol Ang \(\{\}^2\)) - for all types of \ core-Drude bond, a global mass \(m_D\) = 0.4 g/mol (or u) for all types \ @@ -83,7 +83,7 @@ from those of the normal atoms. Thermalizing the Drude dipoles at temperatures comparable to the rest of the simulation leads to several problems (kinetic energy transfer, very short timestep, etc.), which can be remediate by the "cold Drude" technique ("Lamoureux and -Roux"_#Lamoureux). +Roux"_#Lamoureux2). Two closely related models are used to represent polarization through "charges on a spring": the core-shell model and the Drude @@ -105,7 +105,7 @@ due to the short distances, so an atom may capture the Drude particle \ (shell) of a neighbor, or the induced dipoles within the same molecule \ may align too much. To avoid this, damping at short of the \ interactions between the point charges composing the induced dipole \ -can be done by "Thole"_#Thole functions. :l +can be done by "Thole"_#Thole2 functions. :l :ole @@ -284,7 +284,7 @@ pair_style hybrid/overlay lj/cut/coul/long 10.0 thole 2.6 10.0 :pre This tells LAMMPS that we are using two pair_styles. The first one is as above ({lj/cut/coul/long 10.0}). The second one is a {thole} -pair_style with default screening factor 2.6 ("Noskov"_#Noskov) and +pair_style with default screening factor 2.6 ("Noskov"_#Noskov2) and cutoff 10.0. Since {hybrid/overlay} does not support mixing rules, the interaction @@ -381,7 +381,7 @@ group DRUDES type 6 7 8 # DPs :pre Note that with the fixes {drude/transform}, it is not required to specify {comm_modify vel yes} because the fixes do it anyway (several times and for the forces also). To avoid the flying ice cube artifact -"(Lamoureux)"_#Lamoureux, where the atoms progressively freeze and the +"(Lamoureux)"_#Lamoureux2, where the atoms progressively freeze and the center of mass of the whole system drifts faster and faster, the {fix momentum} can be used. For instance: @@ -448,21 +448,21 @@ fix INVERSE all drude/transform/inverse :pre :line -:link(Lamoureux) +:link(Lamoureux2) [(Lamoureux)] Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003) :link(Schroeder) [(Schroeder)] Schroeder and Steinhauser, J Chem Phys, 133, 154511 (2010). -:link(Jiang) +:link(Jiang2) [(Jiang)] Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux, J Phys Chem Lett, 2, 87-92 (2011). -:link(Thole) +:link(Thole2) [(Thole)] Chem Phys, 59, 341 (1981). -:link(Noskov) +:link(Noskov2) [(Noskov)] Noskov, Lamoureux and Roux, J Phys Chem B, 109, 6705 (2005). :link(SWM4-NDP) diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp index 470896815a..e638cd8873 100644 --- a/src/MC/fix_gcmc.cpp +++ b/src/MC/fix_gcmc.cpp @@ -53,6 +53,17 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; +// large energy value used to signal overlap + +#define MAXENERGYSIGNAL 1.0e100 + +// this must be lower than MAXENERGYSIGNAL +// by a large amount, so that it is still +// less than total energy when negative +// energy changes are adddd to MAXENERGYSIGNAL + +#define MAXENERGYTEST 1.0e50 + enum{ATOM,MOLECULE}; /* ---------------------------------------------------------------------- */ @@ -245,6 +256,8 @@ void FixGCMC::options(int narg, char **arg) grouptypebits = NULL; energy_intra = 0.0; tfac_insert = 1.0; + overlap_cutoff = 0.0; + overlap_flag = 0; int iarg = 0; while (iarg < narg) { @@ -303,11 +316,11 @@ void FixGCMC::options(int narg, char **arg) } else if (strcmp(arg[iarg],"group") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix gcmc command"); if (ngroups >= ngroupsmax) { - ngroupsmax = ngroups+1; - groupstrings = (char **) - memory->srealloc(groupstrings, - ngroupsmax*sizeof(char *), - "fix_gcmc:groupstrings"); + ngroupsmax = ngroups+1; + groupstrings = (char **) + memory->srealloc(groupstrings, + ngroupsmax*sizeof(char *), + "fix_gcmc:groupstrings"); } int n = strlen(arg[iarg+1]) + 1; groupstrings[ngroups] = new char[n]; @@ -317,13 +330,13 @@ void FixGCMC::options(int narg, char **arg) } else if (strcmp(arg[iarg],"grouptype") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix gcmc command"); if (ngrouptypes >= ngrouptypesmax) { - ngrouptypesmax = ngrouptypes+1; - grouptypes = (int*) memory->srealloc(grouptypes,ngrouptypesmax*sizeof(int), - "fix_gcmc:grouptypes"); - grouptypestrings = (char**) - memory->srealloc(grouptypestrings, - ngrouptypesmax*sizeof(char *), - "fix_gcmc:grouptypestrings"); + ngrouptypesmax = ngrouptypes+1; + grouptypes = (int*) memory->srealloc(grouptypes,ngrouptypesmax*sizeof(int), + "fix_gcmc:grouptypes"); + grouptypestrings = (char**) + memory->srealloc(grouptypestrings, + ngrouptypesmax*sizeof(char *), + "fix_gcmc:grouptypestrings"); } grouptypes[ngrouptypes] = atoi(arg[iarg+1]); int n = strlen(arg[iarg+2]) + 1; @@ -339,6 +352,11 @@ void FixGCMC::options(int narg, char **arg) if (iarg+2 > narg) error->all(FLERR,"Illegal fix gcmc command"); tfac_insert = force->numeric(FLERR,arg[iarg+1]); iarg += 2; + } else if (strcmp(arg[iarg],"overlap_cutoff") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix gcmc command"); + overlap_cutoff = force->numeric(FLERR,arg[iarg+1]); + overlap_flag = 1; + iarg += 2; } else error->all(FLERR,"Illegal fix gcmc command"); } } @@ -402,10 +420,10 @@ void FixGCMC::init() (force->pair->single_enable == 0) || (force->pair_match("hybrid",0)) || (force->pair_match("eam",0)) - ) { + ) { full_flag = true; if (comm->me == 0) - error->warning(FLERR,"Fix gcmc using full_energy option"); + error->warning(FLERR,"Fix gcmc using full_energy option"); } } @@ -610,7 +628,7 @@ void FixGCMC::init() for (int igroup = 0; igroup < ngrouptypes; igroup++) { int jgroup = group->find(grouptypestrings[igroup]); if (jgroup == -1) - error->all(FLERR,"Could not find specified fix gcmc group ID"); + error->all(FLERR,"Could not find specified fix gcmc group ID"); grouptypebits[igroup] = group->bitmask[jgroup]; } } @@ -662,11 +680,11 @@ void FixGCMC::pre_exchange() int random_int_fraction = static_cast(random_equal->uniform()*ncycles) + 1; if (random_int_fraction <= nmcmoves) { - if (random_equal->uniform() < 0.5) attempt_molecule_translation_full(); - else attempt_molecule_rotation_full(); + if (random_equal->uniform() < 0.5) attempt_molecule_translation_full(); + else attempt_molecule_rotation_full(); } else { - if (random_equal->uniform() < 0.5) attempt_molecule_deletion_full(); - else attempt_molecule_insertion_full(); + if (random_equal->uniform() < 0.5) attempt_molecule_deletion_full(); + else attempt_molecule_insertion_full(); } } } else { @@ -676,8 +694,8 @@ void FixGCMC::pre_exchange() if (random_int_fraction <= nmcmoves) { attempt_atomic_translation_full(); } else { - if (random_equal->uniform() < 0.5) attempt_atomic_deletion_full(); - else attempt_atomic_insertion_full(); + if (random_equal->uniform() < 0.5) attempt_atomic_deletion_full(); + else attempt_atomic_insertion_full(); } } } @@ -699,7 +717,7 @@ void FixGCMC::pre_exchange() else attempt_molecule_rotation(); } else { if (random_equal->uniform() < 0.5) attempt_molecule_deletion(); - else attempt_molecule_insertion(); + else attempt_molecule_insertion(); } } } else { @@ -709,8 +727,8 @@ void FixGCMC::pre_exchange() if (random_int_fraction <= nmcmoves) { attempt_atomic_translation(); } else { - if (random_equal->uniform() < 0.5) attempt_atomic_deletion(); - else attempt_atomic_insertion(); + if (random_equal->uniform() < 0.5) attempt_atomic_deletion(); + else attempt_atomic_insertion(); } } } @@ -764,7 +782,9 @@ void FixGCMC::attempt_atomic_translation() error->one(FLERR,"Fix gcmc put atom outside box"); double energy_after = energy(i,ngcmc_type,-1,coord); - if (random_unequal->uniform() < + + if (energy_after < MAXENERGYTEST && + random_unequal->uniform() < exp(beta*(energy_before - energy_after))) { x[i][0] = coord[0]; x[i][1] = coord[1]; @@ -878,12 +898,12 @@ void FixGCMC::attempt_atomic_insertion() if (!domain->inside(coord)) error->one(FLERR,"Fix gcmc put atom outside box"); if (coord[0] >= sublo[0] && coord[0] < subhi[0] && - coord[1] >= sublo[1] && coord[1] < subhi[1] && - coord[2] >= sublo[2] && coord[2] < subhi[2]) proc_flag = 1; + coord[1] >= sublo[1] && coord[1] < subhi[1] && + coord[2] >= sublo[2] && coord[2] < subhi[2]) proc_flag = 1; } else { if (lamda[0] >= sublo[0] && lamda[0] < subhi[0] && - lamda[1] >= sublo[1] && lamda[1] < subhi[1] && - lamda[2] >= sublo[2] && lamda[2] < subhi[2]) proc_flag = 1; + lamda[1] >= sublo[1] && lamda[1] < subhi[1] && + lamda[2] >= sublo[2] && lamda[2] < subhi[2]) proc_flag = 1; } int success = 0; @@ -895,25 +915,27 @@ void FixGCMC::attempt_atomic_insertion() atom->q[ii] = charge; } double insertion_energy = energy(ii,ngcmc_type,-1,coord); - if (random_unequal->uniform() < + + if (insertion_energy < MAXENERGYTEST && + random_unequal->uniform() < zz*volume*exp(-beta*insertion_energy)/(ngas+1)) { atom->avec->create_atom(ngcmc_type,coord); int m = atom->nlocal - 1; - + // add to groups // optionally add to type-based groups - + atom->mask[m] = groupbitall; for (int igroup = 0; igroup < ngrouptypes; igroup++) { - if (ngcmc_type == grouptypes[igroup]) - atom->mask[m] |= grouptypebits[igroup]; + if (ngcmc_type == grouptypes[igroup]) + atom->mask[m] |= grouptypebits[igroup]; } - + atom->v[m][0] = random_unequal->gaussian()*sigma; atom->v[m][1] = random_unequal->gaussian()*sigma; atom->v[m][2] = random_unequal->gaussian()*sigma; modify->create_attribute(m); - + success = 1; } } @@ -1004,7 +1026,7 @@ void FixGCMC::attempt_molecule_translation() coord[1] = x[i][1] + com_displace[1]; coord[2] = x[i][2] + com_displace[2]; if (!domain->inside_nonperiodic(coord)) - error->one(FLERR,"Fix gcmc put atom outside box"); + error->one(FLERR,"Fix gcmc put atom outside box"); energy_after += energy(i,atom->type[i],translation_molecule,coord); } } @@ -1012,7 +1034,8 @@ void FixGCMC::attempt_molecule_translation() double energy_after_sum = 0.0; MPI_Allreduce(&energy_after,&energy_after_sum,1,MPI_DOUBLE,MPI_SUM,world); - if (random_equal->uniform() < + if (energy_after_sum < MAXENERGYTEST && + random_equal->uniform() < exp(beta*(energy_before_sum - energy_after_sum))) { for (int i = 0; i < nlocal; i++) { if (atom->molecule[i] == translation_molecule) { @@ -1097,7 +1120,7 @@ void FixGCMC::attempt_molecule_rotation() xtmp[2] = atom_coord[n][2]; domain->remap(xtmp); if (!domain->inside(xtmp)) - error->one(FLERR,"Fix gcmc put atom outside box"); + error->one(FLERR,"Fix gcmc put atom outside box"); energy_after += energy(i,atom->type[i],rotation_molecule,xtmp); n++; } @@ -1106,7 +1129,8 @@ void FixGCMC::attempt_molecule_rotation() double energy_after_sum = 0.0; MPI_Allreduce(&energy_after,&energy_after_sum,1,MPI_DOUBLE,MPI_SUM,world); - if (random_equal->uniform() < + if (energy_after_sum < MAXENERGYTEST && + random_equal->uniform() < exp(beta*(energy_before_sum - energy_after_sum))) { int n = 0; for (int i = 0; i < nlocal; i++) { @@ -1253,21 +1277,21 @@ void FixGCMC::attempt_molecule_insertion() procflag[i] = false; if (triclinic == 0) { if (xtmp[0] >= sublo[0] && xtmp[0] < subhi[0] && - xtmp[1] >= sublo[1] && xtmp[1] < subhi[1] && - xtmp[2] >= sublo[2] && xtmp[2] < subhi[2]) procflag[i] = true; + xtmp[1] >= sublo[1] && xtmp[1] < subhi[1] && + xtmp[2] >= sublo[2] && xtmp[2] < subhi[2]) procflag[i] = true; } else { domain->x2lamda(xtmp,lamda); if (lamda[0] >= sublo[0] && lamda[0] < subhi[0] && - lamda[1] >= sublo[1] && lamda[1] < subhi[1] && - lamda[2] >= sublo[2] && lamda[2] < subhi[2]) procflag[i] = true; + lamda[1] >= sublo[1] && lamda[1] < subhi[1] && + lamda[2] >= sublo[2] && lamda[2] < subhi[2]) procflag[i] = true; } if (procflag[i]) { int ii = -1; if (onemols[imol]->qflag == 1) { - ii = atom->nlocal + atom->nghost; - if (ii >= atom->nmax) atom->avec->grow(0); - atom->q[ii] = onemols[imol]->q[i]; + ii = atom->nlocal + atom->nghost; + if (ii >= atom->nmax) atom->avec->grow(0); + atom->q[ii] = onemols[imol]->q[i]; } insertion_energy += energy(ii,onemols[imol]->type[i],-1,xtmp); } @@ -1277,9 +1301,10 @@ void FixGCMC::attempt_molecule_insertion() MPI_Allreduce(&insertion_energy,&insertion_energy_sum,1, MPI_DOUBLE,MPI_SUM,world); - if (random_equal->uniform() < zz*volume*natoms_per_molecule* + if (insertion_energy_sum < MAXENERGYTEST && + random_equal->uniform() < zz*volume*natoms_per_molecule* exp(-beta*insertion_energy_sum)/(ngas + natoms_per_molecule)) { - + tagint maxmol = 0; for (int i = 0; i < atom->nlocal; i++) maxmol = MAX(maxmol,atom->molecule[i]); tagint maxmol_all; @@ -1287,33 +1312,33 @@ void FixGCMC::attempt_molecule_insertion() maxmol_all++; if (maxmol_all >= MAXTAGINT) error->all(FLERR,"Fix gcmc ran out of available molecule IDs"); - + tagint maxtag = 0; for (int i = 0; i < atom->nlocal; i++) maxtag = MAX(maxtag,atom->tag[i]); tagint maxtag_all; MPI_Allreduce(&maxtag,&maxtag_all,1,MPI_LMP_TAGINT,MPI_MAX,world); - + int nlocalprev = atom->nlocal; - + double vnew[3]; vnew[0] = random_equal->gaussian()*sigma; vnew[1] = random_equal->gaussian()*sigma; vnew[2] = random_equal->gaussian()*sigma; - + for (int i = 0; i < natoms_per_molecule; i++) { if (procflag[i]) { atom->avec->create_atom(onemols[imol]->type[i],atom_coord[i]); int m = atom->nlocal - 1; - - // add to groups - // optionally add to type-based groups - - atom->mask[m] = groupbitall; - for (int igroup = 0; igroup < ngrouptypes; igroup++) { - if (ngcmc_type == grouptypes[igroup]) - atom->mask[m] |= grouptypebits[igroup]; - } - + + // add to groups + // optionally add to type-based groups + + atom->mask[m] = groupbitall; + for (int igroup = 0; igroup < ngrouptypes; igroup++) { + if (ngcmc_type == grouptypes[igroup]) + atom->mask[m] |= grouptypebits[igroup]; + } + atom->image[m] = imagezero; domain->remap(atom->x[m],atom->image[m]); atom->molecule[m] = maxmol_all; @@ -1323,15 +1348,15 @@ void FixGCMC::attempt_molecule_insertion() atom->v[m][0] = vnew[0]; atom->v[m][1] = vnew[1]; atom->v[m][2] = vnew[2]; - + atom->add_molecule_atom(onemols[imol],i,m,maxtag_all); modify->create_attribute(m); } } - + if (shakeflag) fixshake->set_molecule(nlocalprev,maxtag_all,imol,com_coord,vnew,quat); - + atom->natoms += natoms_per_molecule; if (atom->natoms < 0) error->all(FLERR,"Too many total atoms"); @@ -1412,18 +1437,19 @@ void FixGCMC::attempt_atomic_translation_full() double energy_after = energy_full(); - if (random_equal->uniform() < + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < exp(beta*(energy_before - energy_after))) { energy_stored = energy_after; ntranslation_successes += 1.0; } else { - + tagint tmptag_all; MPI_Allreduce(&tmptag,&tmptag_all,1,MPI_LMP_TAGINT,MPI_MAX,world); - + double xtmp_all[3]; MPI_Allreduce(&xtmp,&xtmp_all,3,MPI_DOUBLE,MPI_SUM,world); - + for (int i = 0; i < atom->nlocal; i++) { if (tmptag_all == atom->tag[i]) { x[i][0] = xtmp_all[0]; @@ -1535,12 +1561,12 @@ void FixGCMC::attempt_atomic_insertion_full() if (!domain->inside(coord)) error->one(FLERR,"Fix gcmc put atom outside box"); if (coord[0] >= sublo[0] && coord[0] < subhi[0] && - coord[1] >= sublo[1] && coord[1] < subhi[1] && - coord[2] >= sublo[2] && coord[2] < subhi[2]) proc_flag = 1; + coord[1] >= sublo[1] && coord[1] < subhi[1] && + coord[2] >= sublo[2] && coord[2] < subhi[2]) proc_flag = 1; } else { if (lamda[0] >= sublo[0] && lamda[0] < subhi[0] && - lamda[1] >= sublo[1] && lamda[1] < subhi[1] && - lamda[2] >= sublo[2] && lamda[2] < subhi[2]) proc_flag = 1; + lamda[1] >= sublo[1] && lamda[1] < subhi[1] && + lamda[2] >= sublo[2] && lamda[2] < subhi[2]) proc_flag = 1; } if (proc_flag) { @@ -1553,7 +1579,7 @@ void FixGCMC::attempt_atomic_insertion_full() atom->mask[m] = groupbitall; for (int igroup = 0; igroup < ngrouptypes; igroup++) { if (ngcmc_type == grouptypes[igroup]) - atom->mask[m] |= grouptypebits[igroup]; + atom->mask[m] |= grouptypebits[igroup]; } atom->v[m][0] = random_unequal->gaussian()*sigma; @@ -1575,9 +1601,10 @@ void FixGCMC::attempt_atomic_insertion_full() if (force->kspace) force->kspace->qsum_qsq(); double energy_after = energy_full(); - if (random_equal->uniform() < + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < zz*volume*exp(beta*(energy_before - energy_after))/(ngas+1)) { - + ninsertion_successes += 1.0; energy_stored = energy_after; } else { @@ -1656,13 +1683,14 @@ void FixGCMC::attempt_molecule_translation_full() x[i][1] += com_displace[1]; x[i][2] += com_displace[2]; if (!domain->inside_nonperiodic(x[i])) - error->one(FLERR,"Fix gcmc put atom outside box"); + error->one(FLERR,"Fix gcmc put atom outside box"); } } double energy_after = energy_full(); - if (random_equal->uniform() < + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < exp(beta*(energy_before - energy_after))) { ntranslation_successes += 1.0; energy_stored = energy_after; @@ -1746,14 +1774,15 @@ void FixGCMC::attempt_molecule_rotation_full() image[i] = imagezero; domain->remap(x[i],image[i]); if (!domain->inside(x[i])) - error->one(FLERR,"Fix gcmc put atom outside box"); + error->one(FLERR,"Fix gcmc put atom outside box"); n++; } } double energy_after = energy_full(); - if (random_equal->uniform() < + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < exp(beta*(energy_before - energy_after))) { nrotation_successes += 1.0; energy_stored = energy_after; @@ -1946,13 +1975,13 @@ void FixGCMC::attempt_molecule_insertion_full() int proc_flag = 0; if (triclinic == 0) { if (xtmp[0] >= sublo[0] && xtmp[0] < subhi[0] && - xtmp[1] >= sublo[1] && xtmp[1] < subhi[1] && - xtmp[2] >= sublo[2] && xtmp[2] < subhi[2]) proc_flag = 1; + xtmp[1] >= sublo[1] && xtmp[1] < subhi[1] && + xtmp[2] >= sublo[2] && xtmp[2] < subhi[2]) proc_flag = 1; } else { domain->x2lamda(xtmp,lamda); if (lamda[0] >= sublo[0] && lamda[0] < subhi[0] && - lamda[1] >= sublo[1] && lamda[1] < subhi[1] && - lamda[2] >= sublo[2] && lamda[2] < subhi[2]) proc_flag = 1; + lamda[1] >= sublo[1] && lamda[1] < subhi[1] && + lamda[2] >= sublo[2] && lamda[2] < subhi[2]) proc_flag = 1; } if (proc_flag) { @@ -1964,8 +1993,8 @@ void FixGCMC::attempt_molecule_insertion_full() atom->mask[m] = groupbitall; for (int igroup = 0; igroup < ngrouptypes; igroup++) { - if (ngcmc_type == grouptypes[igroup]) - atom->mask[m] |= grouptypebits[igroup]; + if (ngcmc_type == grouptypes[igroup]) + atom->mask[m] |= grouptypebits[igroup]; } atom->image[m] = imagetmp; @@ -2005,7 +2034,8 @@ void FixGCMC::attempt_molecule_insertion_full() double deltaphi = zz*volume*natoms_per_molecule* exp(beta*(energy_before - (energy_after - energy_intra)))/(ngas + natoms_per_molecule); - if (random_equal->uniform() < deltaphi) { + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < deltaphi) { ninsertion_successes += 1.0; energy_stored = energy_after; @@ -2064,6 +2094,12 @@ double FixGCMC::energy(int i, int itype, tagint imolecule, double *coord) rsq = delx*delx + dely*dely + delz*delz; int jtype = type[j]; + // if overlap check requested, if overlap, + // return signal value = MAXENERGYSIGNAL + + if (overlap_flag && rsq < overlap_cutoff) + return MAXENERGYSIGNAL; + if (rsq < cutsq[itype][jtype]) total_energy += pair->single(i,j,itype,jtype,rsq,factor_coul,factor_lj,fpair); @@ -2108,6 +2144,31 @@ double FixGCMC::energy_full() int eflag = 1; int vflag = 0; + // if overlap check requested, if overlap, + // return signal value = MAXENERGYSIGNAL + + if (overlap_flag) { + double delx,dely,delz,rsq; + double **x = atom->x; + tagint *molecule = atom->molecule; + int nall = atom->nlocal + atom->nghost; + for (int i = 0; i < atom->nlocal; i++) { + int imolecule = molecule[i]; + for (int j = i+1; j < nall; j++) { + + if (mode == MOLECULE) + if (imolecule == molecule[j]) continue; + + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < overlap_cutoff) return MAXENERGYSIGNAL; + } + } + } + // clear forces so they don't accumulate over multiple // calls within fix gcmc timestep, e.g. for fix shake @@ -2247,10 +2308,10 @@ void FixGCMC::update_gas_atoms_list() com[0] = com[1] = com[2] = 0.0; group->xcm(molecule_group,gas_mass,com); - // remap unwrapped com into periodic box - - domain->remap(com); - comx[imolecule] = com[0]; + // remap unwrapped com into periodic box + + domain->remap(com); + comx[imolecule] = com[0]; comy[imolecule] = com[1]; comz[imolecule] = com[2]; } diff --git a/src/MC/fix_gcmc.h b/src/MC/fix_gcmc.h index 613bcdfc05..8261f6e38c 100644 --- a/src/MC/fix_gcmc.h +++ b/src/MC/fix_gcmc.h @@ -112,7 +112,9 @@ class FixGCMC : public Fix { double **cutsq; double **atom_coord; imageint imagezero; - + double overlap_cutoff; + int overlap_flag; + double energy_intra; class Pair *pair; diff --git a/src/atom.cpp b/src/atom.cpp index 4df2bc2194..6fa1cd8ef8 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -1950,7 +1950,7 @@ void Atom::add_callback(int flag) void Atom::delete_callback(const char *id, int flag) { - if(id==NULL) return; + if (id == NULL) return; int ifix; for (ifix = 0; ifix < modify->nfix; ifix++) diff --git a/src/fix_ave_chunk.cpp b/src/fix_ave_chunk.cpp index 0223636a77..1060acd7bb 100644 --- a/src/fix_ave_chunk.cpp +++ b/src/fix_ave_chunk.cpp @@ -31,6 +31,7 @@ using namespace LAMMPS_NS; using namespace FixConst; enum{V,F,DENSITY_NUMBER,DENSITY_MASS,MASS,TEMPERATURE,COMPUTE,FIX,VARIABLE}; +enum{SCALAR,VECTOR}; enum{SAMPLE,ALL}; enum{NOSCALE,ATOM}; enum{ONE,RUNNING,WINDOW}; @@ -79,6 +80,7 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : argindex = new int[nargnew]; ids = new char*[nargnew]; value2index = new int[nargnew]; + densityflag = 0; int iarg = 0; while (iarg < nargnew) { @@ -106,9 +108,11 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : argindex[nvalues++] = 2; } else if (strcmp(arg[iarg],"density/number") == 0) { + densityflag = 1; which[nvalues] = DENSITY_NUMBER; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"density/mass") == 0) { + densityflag = 1; which[nvalues] = DENSITY_MASS; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"mass") == 0) { @@ -604,6 +608,12 @@ void FixAveChunk::end_of_step() count_many[m] = count_sum[m] = 0.0; for (i = 0; i < nvalues; i++) values_many[m][i] = 0.0; } + + // if any DENSITY requested, invoke setup_chunks() on each sampling step + // nchunk will not change but bin volumes might, e.g. for NPT simulation + + } else if (densityflag) { + cchunk->setup_chunks(); } // zero out arrays for one sample @@ -782,11 +792,16 @@ void FixAveChunk::end_of_step() // if normflag = SAMPLE, one = value/count, accumulate one to many // count is MPI summed here, value is MPI summed below across samples // exception is TEMPERATURE: normalize by DOF - // exception is DENSITYs: no normalize by atom count - // exception is scaleflag = NOSCALE : no normalize by atom count + // exception is DENSITY_NUMBER: + // normalize by bin volume, not by atom count + // exception is DENSITY_MASS: + // scale by mv2d, normalize by bin volume, not by atom count + // exception is scaleflag = NOSCALE (norm = NONE): + // no normalize by atom count // check last so other options can take precedence double mvv2e = force->mvv2e; + double mv2d = force->mv2d; double boltz = force->boltz; if (normflag == ALL) { @@ -797,17 +812,34 @@ void FixAveChunk::end_of_step() } } else if (normflag == SAMPLE) { MPI_Allreduce(count_one,count_many,nchunk,MPI_DOUBLE,MPI_SUM,world); + + if (cchunk->chunk_volume_vec) { + volflag = VECTOR; + chunk_volume_vec = cchunk->chunk_volume_vec; + } else { + volflag = SCALAR; + chunk_volume_scalar = cchunk->chunk_volume_scalar; + } + for (m = 0; m < nchunk; m++) { if (count_many[m] > 0.0) for (j = 0; j < nvalues; j++) { - if (which[j] == TEMPERATURE) + if (which[j] == TEMPERATURE) { values_many[m][j] += mvv2e*values_one[m][j] / ((cdof + adof*count_many[m]) * boltz); - else if (which[j] == DENSITY_NUMBER || which[j] == DENSITY_MASS || - scaleflag == NOSCALE) + } else if (which[j] == DENSITY_NUMBER) { + if (volflag == SCALAR) values_one[m][j] /= chunk_volume_scalar; + else values_one[m][j] /= chunk_volume_vec[m]; values_many[m][j] += values_one[m][j]; - else + } else if (which[j] == DENSITY_MASS) { + if (volflag == SCALAR) values_one[m][j] /= chunk_volume_scalar; + else values_one[m][j] /= chunk_volume_vec[m]; + values_many[m][j] += mv2d*values_one[m][j]; + } else if (scaleflag == NOSCALE) { + values_many[m][j] += values_one[m][j]; + } else { values_many[m][j] += values_one[m][j]/count_many[m]; + } } count_sum[m] += count_many[m]; } @@ -835,28 +867,48 @@ void FixAveChunk::end_of_step() // time average across samples // if normflag = ALL, final is total value / total count // exception is TEMPERATURE: normalize by DOF for total count - // exception is DENSITYs: normalize by repeat, not total count - // exception is scaleflag == NOSCALE: normalize by repeat, not total count + // exception is DENSITY_NUMBER: + // normalize by final bin_volume and repeat, not by total count + // exception is DENSITY_MASS: + // scale by mv2d, normalize by bin volume and repeat, not by total count + // exception is scaleflag == NOSCALE: + // normalize by repeat, not by total count // check last so other options can take precedence // if normflag = SAMPLE, final is sum of ave / repeat double repeat = nrepeat; - double mv2d = force->mv2d; if (normflag == ALL) { MPI_Allreduce(count_many,count_sum,nchunk,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&values_many[0][0],&values_sum[0][0],nchunk*nvalues, MPI_DOUBLE,MPI_SUM,world); + + if (cchunk->chunk_volume_vec) { + volflag = VECTOR; + chunk_volume_vec = cchunk->chunk_volume_vec; + } else { + volflag = SCALAR; + chunk_volume_scalar = cchunk->chunk_volume_scalar; + } + for (m = 0; m < nchunk; m++) { if (count_sum[m] > 0.0) for (j = 0; j < nvalues; j++) { - if (which[j] == TEMPERATURE) + if (which[j] == TEMPERATURE) { values_sum[m][j] *= mvv2e / ((cdof + adof*count_sum[m]) * boltz); - else if (which[j] == DENSITY_MASS) - values_sum[m][j] *= mv2d/repeat; - else if (which[j] == DENSITY_NUMBER || scaleflag == NOSCALE) + } else if (which[j] == DENSITY_NUMBER) { + if (volflag == SCALAR) values_sum[m][j] /= chunk_volume_scalar; + else values_sum[m][j] /= chunk_volume_vec[m]; values_sum[m][j] /= repeat; - else values_sum[m][j] /= count_sum[m]; + } else if (which[j] == DENSITY_MASS) { + if (volflag == SCALAR) values_sum[m][j] /= chunk_volume_scalar; + else values_sum[m][j] /= chunk_volume_vec[m]; + values_sum[m][j] *= mv2d/repeat; + } else if (scaleflag == NOSCALE) { + values_sum[m][j] /= repeat; + } else { + values_sum[m][j] /= count_sum[m]; + } } count_sum[m] /= repeat; } @@ -869,23 +921,6 @@ void FixAveChunk::end_of_step() } } - // DENSITYs are additionally normalized by chunk volume - // use scalar or vector values for volume(s) - // if chunks are not spatial bins, chunk_volume_scalar = 1.0 - - for (j = 0; j < nvalues; j++) - if (which[j] == DENSITY_NUMBER || which[j] == DENSITY_MASS) { - if (cchunk->chunk_volume_vec) { - double *chunk_volume_vec = cchunk->chunk_volume_vec; - for (m = 0; m < nchunk; m++) - values_sum[m][j] /= chunk_volume_vec[m]; - } else { - double chunk_volume_scalar = cchunk->chunk_volume_scalar; - for (m = 0; m < nchunk; m++) - values_sum[m][j] /= chunk_volume_scalar; - } - } - // if ave = ONE, only single Nfreq timestep value is needed // if ave = RUNNING, combine with all previous Nfreq timestep values // if ave = WINDOW, comine with nwindow most recent Nfreq timestep values diff --git a/src/fix_ave_chunk.h b/src/fix_ave_chunk.h index eb51043e0f..a69b07f5d0 100644 --- a/src/fix_ave_chunk.h +++ b/src/fix_ave_chunk.h @@ -49,6 +49,11 @@ class FixAveChunk : public Fix { class Compute *tbias; // ptr to additional bias compute FILE *fp; + int densityflag; // 1 if density/number or density/mass requested + int volflag; // SCALAR/VECTOR for density normalization by volume + double chunk_volume_scalar; + double *chunk_volume_vec; + int ave,nwindow; int normcount,iwindow,window_limit; diff --git a/src/fix_external.cpp b/src/fix_external.cpp index c7c865cd57..40e538c6c6 100644 --- a/src/fix_external.cpp +++ b/src/fix_external.cpp @@ -36,6 +36,7 @@ FixExternal::FixExternal(LAMMPS *lmp, int narg, char **arg) : scalar_flag = 1; global_freq = 1; + virial_flag = 1; extscalar = 1; if (strcmp(arg[3],"pf/callback") == 0) { @@ -80,6 +81,7 @@ int FixExternal::setmask() { int mask = 0; if (mode == PF_CALLBACK || mode == PF_ARRAY) { + mask |= PRE_REVERSE; mask |= POST_FORCE; mask |= THERMO_ENERGY; mask |= MIN_POST_FORCE; @@ -102,6 +104,13 @@ void FixExternal::setup(int vflag) post_force(vflag); } +/* --------------------------------------------------------------------- */ + +void FixExternal::setup_pre_reverse(int eflag, int vflag) +{ + pre_reverse(eflag,vflag); +} + /* ---------------------------------------------------------------------- */ void FixExternal::min_setup(int vflag) @@ -109,12 +118,25 @@ void FixExternal::min_setup(int vflag) post_force(vflag); } +/* ---------------------------------------------------------------------- + store eflag, so can use it in post_force to tally per-atom energies +------------------------------------------------------------------------- */ + +void FixExternal::pre_reverse(int eflag, int vflag) +{ + eflag_caller = eflag; +} + /* ---------------------------------------------------------------------- */ void FixExternal::post_force(int vflag) { bigint ntimestep = update->ntimestep; + int eflag = eflag_caller; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = 0; + // invoke the callback in driver program // it will fill fexternal with forces @@ -145,11 +167,57 @@ void FixExternal::min_post_force(int vflag) post_force(vflag); } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + caller invokes this method to set its contribution to global energy + do not just return if eflag_global is not set + input script could access this quantity via compute_scalar() + even if eflag is not set on a particular timestep +------------------------------------------------------------------------- */ -void FixExternal::set_energy(double eng) +void FixExternal::set_energy_global(double caller_energy) { - user_energy = eng; + user_energy = caller_energy; +} + +/* ---------------------------------------------------------------------- + caller invokes this method to set its contribution to global virial +------------------------------------------------------------------------- */ + +void FixExternal::set_virial_global(double *caller_virial) +{ + if (!vflag_global) return; + + for (int i = 0; i < 6; i++) + virial[i] = caller_virial[i]; +} + +/* ---------------------------------------------------------------------- + caller invokes this method to set its contribution to peratom energy +------------------------------------------------------------------------- */ + +void FixExternal::set_energy_peratom(double *caller_energy) +{ + if (!eflag_atom) return; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) + eatom[i] = caller_energy[i]; +} + +/* ---------------------------------------------------------------------- + caller invokes this method to set its contribution to peratom virial +------------------------------------------------------------------------- */ + +void FixExternal::set_virial_peratom(double **caller_virial) +{ + int i,j; + + if (!vflag_atom) return; + + int nlocal = atom->nlocal; + for (i = 0; i < nlocal; i++) + for (j = 0; j < 6; j++) + vatom[i][j] = caller_virial[i][j]; } /* ---------------------------------------------------------------------- diff --git a/src/fix_external.h b/src/fix_external.h index 39faadefff..b5f6d7ae15 100644 --- a/src/fix_external.h +++ b/src/fix_external.h @@ -33,12 +33,17 @@ class FixExternal : public Fix { int setmask(); void init(); void setup(int); + void setup_pre_reverse(int, int); void min_setup(int); + void pre_reverse(int, int); void post_force(int); void min_post_force(int); double compute_scalar(); - void set_energy(double eng); + void set_energy_global(double); + void set_virial_global(double *); + void set_energy_peratom(double *); + void set_virial_peratom(double **); double memory_usage(); void grow_arrays(int); @@ -50,7 +55,7 @@ class FixExternal : public Fix { void set_callback(FnPtr, void *); private: - int mode,ncall,napply; + int mode,ncall,napply,eflag_caller; FnPtr callback; void *ptr_caller; double user_energy; diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp index 718e824e0f..f4a0a71a4a 100644 --- a/src/fix_nh.cpp +++ b/src/fix_nh.cpp @@ -50,11 +50,12 @@ enum{ISO,ANISO,TRICLINIC}; NVT,NPH,NPT integrators for improved Nose-Hoover equations of motion ---------------------------------------------------------------------- */ -FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), -rfix(NULL), id_dilate(NULL), irregular(NULL), id_temp(NULL), id_press(NULL), -eta(NULL), eta_dot(NULL), eta_dotdot(NULL), -eta_mass(NULL), etap(NULL), etap_dot(NULL), etap_dotdot(NULL), -etap_mass(NULL) +FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + rfix(NULL), id_dilate(NULL), irregular(NULL), id_temp(NULL), id_press(NULL), + eta(NULL), eta_dot(NULL), eta_dotdot(NULL), + eta_mass(NULL), etap(NULL), etap_dot(NULL), etap_dotdot(NULL), + etap_mass(NULL) { if (narg < 4) error->all(FLERR,"Illegal fix nvt/npt/nph command"); @@ -346,6 +347,12 @@ etap_mass(NULL) fixedpoint[1] = force->numeric(FLERR,arg[iarg+2]); fixedpoint[2] = force->numeric(FLERR,arg[iarg+3]); iarg += 4; + + // disc keyword is also parsed in fix/nh/sphere + + } else if (strcmp(arg[iarg],"disc") == 0) { + iarg++; + } else error->all(FLERR,"Illegal fix nvt/npt/nph command"); } diff --git a/src/fix_nh_sphere.cpp b/src/fix_nh_sphere.cpp index de5ca0b3aa..5307889f5e 100644 --- a/src/fix_nh_sphere.cpp +++ b/src/fix_nh_sphere.cpp @@ -22,6 +22,7 @@ #include "group.h" #include "error.h" #include "force.h" +#include "domain.h" #include "math_vector.h" #include "math_extra.h" @@ -29,8 +30,6 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathExtra; -#define INERTIA 0.4 // moment of inertia prefactor for sphere - /* ---------------------------------------------------------------------- */ FixNHSphere::FixNHSphere(LAMMPS *lmp, int narg, char **arg) : @@ -38,6 +37,21 @@ FixNHSphere::FixNHSphere(LAMMPS *lmp, int narg, char **arg) : { if (!atom->sphere_flag) error->all(FLERR,"Fix nvt/nph/npt sphere requires atom style sphere"); + + // inertia = moment of inertia prefactor for sphere or disc + + inertia = 0.4; + + int iarg = 3; + while (iarg < narg) { + if (strcmp(arg[iarg],"disc") == 0){ + inertia = 0.5; + if (domain->dimension != 2) + error->all(FLERR, + "Fix nvt/nph/npt sphere disc option requires 2d simulation"); + } + iarg++; + } } /* ---------------------------------------------------------------------- */ @@ -55,7 +69,7 @@ void FixNHSphere::init() if (mask[i] & groupbit) if (radius[i] == 0.0) error->one(FLERR,"Fix nvt/npt/nph/sphere require extended particles"); - + FixNH::init(); } @@ -79,7 +93,7 @@ void FixNHSphere::nve_v() // set timestep here since dt may have changed or come via rRESPA - double dtfrotate = dtf / INERTIA; + double dtfrotate = dtf / inertia; double dtirotate; // update omega for all particles diff --git a/src/fix_nh_sphere.h b/src/fix_nh_sphere.h index 0897f4a93b..33e80588da 100644 --- a/src/fix_nh_sphere.h +++ b/src/fix_nh_sphere.h @@ -25,6 +25,8 @@ class FixNHSphere : public FixNH { void init(); protected: + double inertia; + void nve_v(); void nve_x(); void nh_v_temp(); diff --git a/src/fix_nve_sphere.cpp b/src/fix_nve_sphere.cpp index 42cca31f6b..8c43800939 100644 --- a/src/fix_nve_sphere.cpp +++ b/src/fix_nve_sphere.cpp @@ -16,6 +16,7 @@ #include #include "fix_nve_sphere.h" #include "atom.h" +#include "domain.h" #include "atom_vec.h" #include "update.h" #include "respa.h" @@ -28,8 +29,6 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathExtra; -#define INERTIA 0.4 // moment of inertia prefactor for sphere - enum{NONE,DIPOLE}; enum{NODLM,DLM}; @@ -43,9 +42,11 @@ FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) : time_integrate = 1; // process extra keywords + // inertia = moment of inertia prefactor for sphere or disc extra = NONE; dlm = NODLM; + inertia = 0.4; int iarg = 3; while (iarg < narg) { @@ -57,7 +58,14 @@ FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) : dlm = DLM; } else error->all(FLERR,"Illegal fix nve/sphere command"); iarg += 2; - } else error->all(FLERR,"Illegal fix nve/sphere command"); + } + else if (strcmp(arg[iarg],"disc")==0) { + inertia = 0.5; + if (domain->dimension != 2) + error->all(FLERR,"Fix nve/sphere disc requires 2d simulation"); + iarg++; + } + else error->all(FLERR,"Illegal fix nve/sphere command"); } // error checks @@ -109,7 +117,7 @@ void FixNVESphere::initial_integrate(int vflag) // set timestep here since dt may have changed or come via rRESPA - double dtfrotate = dtf / INERTIA; + double dtfrotate = dtf / inertia; // update v,x,omega for all particles // d_omega/dt = torque / inertia @@ -284,7 +292,7 @@ void FixNVESphere::final_integrate() // set timestep here since dt may have changed or come via rRESPA - double dtfrotate = dtf / INERTIA; + double dtfrotate = dtf / inertia; // update v,omega for all particles // d_omega/dt = torque / inertia diff --git a/src/fix_nve_sphere.h b/src/fix_nve_sphere.h index 801518ff1d..1e739f4aae 100644 --- a/src/fix_nve_sphere.h +++ b/src/fix_nve_sphere.h @@ -33,6 +33,7 @@ class FixNVESphere : public FixNVE { virtual void final_integrate(); protected: + double inertia; int extra; int dlm; }; diff --git a/src/modify.cpp b/src/modify.cpp index 14e55ab414..e24a2120ef 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -954,7 +954,7 @@ void Modify::delete_fix(const char *id) int Modify::find_fix(const char *id) { - if(id==NULL) return -1; + if (id == NULL) return -1; int ifix; for (ifix = 0; ifix < nfix; ifix++) if (strcmp(id,fix[ifix]->id) == 0) break; @@ -962,6 +962,20 @@ int Modify::find_fix(const char *id) return ifix; } +/* ---------------------------------------------------------------------- + find a fix by style + return index of fix or -1 if not found +------------------------------------------------------------------------- */ + +int Modify::find_fix_by_style(const char *style) +{ + int ifix; + for (ifix = 0; ifix < nfix; ifix++) + if (strcmp(style,fix[ifix]->style) == 0) break; + if (ifix == nfix) return -1; + return ifix; +} + /* ---------------------------------------------------------------------- check for fix associated with package name in compiled list return 1 if found else 0 diff --git a/src/modify.h b/src/modify.h index d6793a754e..a1362241b6 100644 --- a/src/modify.h +++ b/src/modify.h @@ -96,6 +96,7 @@ class Modify : protected Pointers { void modify_fix(int, char **); void delete_fix(const char *); int find_fix(const char *); + int find_fix_by_style(const char *); int check_package(const char *); void add_compute(int, char **, int trysuffix=0); diff --git a/src/region_block.cpp b/src/region_block.cpp index 769edb1489..8e1659aa13 100644 --- a/src/region_block.cpp +++ b/src/region_block.cpp @@ -155,31 +155,31 @@ RegBlock::RegBlock(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) // face[2] - MathExtra::copy3(corners[2][0],corners[0][0]); - MathExtra::copy3(corners[2][1],corners[1][0]); - MathExtra::copy3(corners[2][2],corners[1][1]); - MathExtra::copy3(corners[2][3],corners[0][1]); + MathExtra::copy3(corners[0][0], corners[2][0]); + MathExtra::copy3(corners[1][0], corners[2][1]); + MathExtra::copy3(corners[1][1], corners[2][2]); + MathExtra::copy3(corners[0][1], corners[2][3]); // face[3] - MathExtra::copy3(corners[3][0],corners[0][3]); - MathExtra::copy3(corners[3][1],corners[0][2]); - MathExtra::copy3(corners[3][2],corners[1][2]); - MathExtra::copy3(corners[3][3],corners[1][3]); + MathExtra::copy3(corners[0][3], corners[3][0]); + MathExtra::copy3(corners[0][2], corners[3][1]); + MathExtra::copy3(corners[1][2], corners[3][2]); + MathExtra::copy3(corners[1][3], corners[3][3]); // face[4] - MathExtra::copy3(corners[4][0],corners[0][0]); - MathExtra::copy3(corners[4][1],corners[0][3]); - MathExtra::copy3(corners[4][2],corners[1][3]); - MathExtra::copy3(corners[4][3],corners[1][0]); + MathExtra::copy3(corners[0][0], corners[4][0]); + MathExtra::copy3(corners[0][3], corners[4][1]); + MathExtra::copy3(corners[1][3], corners[4][2]); + MathExtra::copy3(corners[1][0], corners[4][3]); // face[5] - MathExtra::copy3(corners[5][0],corners[0][1]); - MathExtra::copy3(corners[5][1],corners[1][1]); - MathExtra::copy3(corners[5][2],corners[1][2]); - MathExtra::copy3(corners[5][3],corners[0][2]); + MathExtra::copy3(corners[0][1], corners[5][0]); + MathExtra::copy3(corners[1][1], corners[5][1]); + MathExtra::copy3(corners[1][2], corners[5][2]); + MathExtra::copy3(corners[0][2], corners[5][3]); } /* ---------------------------------------------------------------------- */ diff --git a/src/set.cpp b/src/set.cpp index 82d0bce129..4ed07d423b 100644 --- a/src/set.cpp +++ b/src/set.cpp @@ -295,13 +295,20 @@ void Set::command(int narg, char **arg) set(DIAMETER); iarg += 2; - } else if (strcmp(arg[iarg],"density") == 0) { + } else if (strcmp(arg[iarg],"density") == 0 || + (strcmp(arg[iarg],"density/disc") == 0)) { if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); else dvalue = force->numeric(FLERR,arg[iarg+1]); if (!atom->rmass_flag) error->all(FLERR,"Cannot set this attribute for this atom style"); if (dvalue <= 0.0) error->all(FLERR,"Invalid density in set command"); + discflag = 0; + if (strcmp(arg[iarg],"density/disc") == 0) { + discflag = 1; + if (domain->dimension != 2) + error->all(FLERR,"Density/disc option requires 2d simulation"); + } set(DENSITY); iarg += 2; @@ -678,8 +685,8 @@ void Set::set(int keyword) } // set rmass via density - // if radius > 0.0, treat as sphere - // if shape > 0.0, treat as ellipsoid + // if radius > 0.0, treat as sphere or disc + // if shape > 0.0, treat as ellipsoid (or ellipse, when uncomment below) // if length > 0.0, treat as line // if area > 0.0, treat as tri // else set rmass to density directly @@ -687,10 +694,18 @@ void Set::set(int keyword) else if (keyword == DENSITY) { if (dvalue <= 0.0) error->one(FLERR,"Invalid density in set command"); if (atom->radius_flag && atom->radius[i] > 0.0) - atom->rmass[i] = 4.0*MY_PI/3.0 * - atom->radius[i]*atom->radius[i]*atom->radius[i] * dvalue; + if (discflag) + atom->rmass[i] = MY_PI*atom->radius[i]*atom->radius[i] * dvalue; + else + atom->rmass[i] = 4.0*MY_PI/3.0 * + atom->radius[i]*atom->radius[i]*atom->radius[i] * dvalue; else if (atom->ellipsoid_flag && atom->ellipsoid[i] >= 0) { double *shape = avec_ellipsoid->bonus[atom->ellipsoid[i]].shape; + // enable 2d ellipse (versus 3d ellipsoid) when time integration + // options (fix nve/asphere, fix nh/asphere) are also implemented + // if (discflag) + // atom->rmass[i] = MY_PI*shape[0]*shape[1] * dvalue; + // else atom->rmass[i] = 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2] * dvalue; } else if (atom->line_flag && atom->line[i] >= 0) { double length = avec_line->bonus[atom->line[i]].length; diff --git a/src/set.h b/src/set.h index 1be9faef1c..dfb06a2e12 100644 --- a/src/set.h +++ b/src/set.h @@ -40,6 +40,8 @@ class Set : protected Pointers { int ivar1,ivar2,ivar3,ivar4; double *vec1,*vec2,*vec3,*vec4; + int discflag; + void selection(int); void set(int); void setrandom(int); diff --git a/tools/README b/tools/README index b45c5554f9..e766e935b3 100644 --- a/tools/README +++ b/tools/README @@ -18,7 +18,6 @@ ch2lmp convert CHARMM files to LAMMPS input chain create a data file of bead-spring chains colvars post-process output of the fix colvars command createatoms generate lattices of atoms within a geometry -data2xmovie convert a data file to a snapshot that xmovie can viz drude create Drude core/electron atom pairs in a data file eam_database one tool to generate EAM alloy potential files eam_generate 2nd tool to generate EAM alloy potential files @@ -27,19 +26,20 @@ emacs add-ons to EMACS editor for editing LAMMPS input scripts fep scripts for free-energy perturbation with USER-FEP pkg i-pi Python wrapper for performing path-integral MD (PIMD) ipp input pre-processor Perl tool for creating input scripts +kate add-ons to Kate editor for editing LAMMPS input scripts lmp2arc convert LAMMPS output to Accelrys Insight format lmp2cfg convert LAMMPS output to CFG files for AtomEye viz -lmp2traj convert LAMMPS output to contour, density profiles -lmp2vmd tools for visualizing and analyzing LAMMPS data with VMD matlab MatLab scripts for post-processing LAMMPS output micelle2d create a data file of small lipid chains in solvent +moltemplate Moltemplate builder program msi2lmp use Accelrys Insight code to setup LAMMPS input phonon post-process output of the fix phonon command +polybond Python tool for programmable polymer bonding pymol_asphere convert LAMMPS output of ellipsoids to PyMol format python Python scripts for post-processing LAMMPS output reax Tools for analyzing output of ReaxFF simulations +smd convert Smooth Mach Dynamics triangles to VTK vim add-ons to VIM editor for editing LAMMPS input scripts -xmovie a quick/simple viz package (2d projections of 3d) xmgrace a collection of scripts to generate xmgrace plots For tools that are single C, C++, or Fortran files, a Makefile for diff --git a/tools/smd/dump2vtk_tris.cpp b/tools/smd/dump2vtk_tris.cpp index 2486f8c4e3..23e5a5a7b0 100644 --- a/tools/smd/dump2vtk_tris.cpp +++ b/tools/smd/dump2vtk_tris.cpp @@ -11,6 +11,10 @@ * LAMMPS dump file has the following entries per atom line: * id type mol x y z c_F[1] c_F[2] c_F[3] c_F[4] c_F[5] c_F[6] c_F[7] c_F[8] c_F[9] * + * Author: Georg Ganzenmuller at the + * Fraunhofer-Institute for High-Speed Dynamics, + * Ernst Mach Institute in Germany + * (georg.ganzenmueller at emi.fhg.de) */ #include