Merge pull request #3657 from akohlmey/custom-wall-fixes

Add fix wall/table and fix wall/lepton for customizable wall fixes
This commit is contained in:
Axel Kohlmeyer
2023-03-01 20:16:56 -05:00
committed by GitHub
42 changed files with 7215 additions and 258 deletions

View File

@ -214,7 +214,7 @@ style_check : $(VENV)
package_check : $(VENV)
@(\
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \\
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
python utils/check-packages.py -s ../src -d src ;\
deactivate ;\
)

View File

@ -264,6 +264,7 @@ OPT.
* :doc:`wall/lj1043 <fix_wall>`
* :doc:`wall/lj126 <fix_wall>`
* :doc:`wall/lj93 (k) <fix_wall>`
* :doc:`wall/lepton <fix_wall>`
* :doc:`wall/morse <fix_wall>`
* :doc:`wall/piston <fix_wall_piston>`
* :doc:`wall/reflect (k) <fix_wall_reflect>`
@ -271,4 +272,5 @@ OPT.
* :doc:`wall/region <fix_wall_region>`
* :doc:`wall/region/ees <fix_wall_ees>`
* :doc:`wall/srd <fix_wall_srd>`
* :doc:`wall/table <fix_wall>`
* :doc:`widom <fix_widom>`

View File

@ -320,7 +320,8 @@ eam generate tool
-----------------------------
The tools/eam_generate directory contains several one-file C programs
that convert an analytic formula into a tabulated :doc:`embedded atom method (EAM) <pair_eam>` setfl potential file. The potentials they
that convert an analytic formula into a tabulated :doc:`embedded atom
method (EAM) <pair_eam>` setfl potential file. The potentials they
produce are in the potentials directory, and can be used with the
:doc:`pair_style eam/alloy <pair_eam>` command.

View File

@ -416,6 +416,7 @@ accelerated styles exist.
* :doc:`wall/lj1043 <fix_wall>` - Lennard-Jones 10--4--3 wall
* :doc:`wall/lj126 <fix_wall>` - Lennard-Jones 12--6 wall
* :doc:`wall/lj93 <fix_wall>` - Lennard-Jones 9--3 wall
* :doc:`wall/lepton <fix_wall>` - Custom Lepton expression wall
* :doc:`wall/morse <fix_wall>` - Morse potential wall
* :doc:`wall/piston <fix_wall_piston>` - moving reflective piston wall
* :doc:`wall/reflect <fix_wall_reflect>` - reflecting wall(s)
@ -423,6 +424,7 @@ accelerated styles exist.
* :doc:`wall/region <fix_wall_region>` - use region surface as wall
* :doc:`wall/region/ees <fix_wall_ees>` - use region surface as wall for ellipsoidal particles
* :doc:`wall/srd <fix_wall_srd>` - slip/no-slip wall for SRD particles
* :doc:`wall/table <fix_wall>` - Tabulated potential wall wall
* :doc:`widom <fix_widom>` - Widom insertions of atoms or molecules
Restrictions

View File

@ -4,7 +4,9 @@
.. index:: fix wall/lj1043
.. index:: fix wall/colloid
.. index:: fix wall/harmonic
.. index:: fix wall/lepton
.. index:: fix wall/morse
.. index:: fix wall/table
fix wall/lj93 command
=====================
@ -23,20 +25,31 @@ fix wall/colloid command
fix wall/harmonic command
=========================
fix wall/lepton command
=========================
fix wall/morse command
======================
fix wall/table command
=========================
Syntax
""""""
.. parsed-literal::
fix ID group-ID style face args ... keyword value ...
fix ID group-ID style [tabstyle] [N] face args ... keyword value ...
* ID, group-ID are documented in :doc:`fix <fix>` command
* style = *wall/lj93* or *wall/lj126* or *wall/lj1043* or *wall/colloid* or *wall/harmonic* or *wall/morse*
* style = *wall/lj93* or *wall/lj126* or *wall/lj1043* or *wall/colloid* or *wall/harmonic* or *wall/lepton* or *wall/morse* or *wall/table*
* tabstyle = *linear* or *spline* = method of table interpolation (only applies to *wall/table*)
* N = use N values in *linear* or *spline* interpolation (only applies to *wall/table*)
* one or more face/arg pairs may be appended
* face = *xlo* or *xhi* or *ylo* or *yhi* or *zlo* or *zhi*
.. spacer
* args for styles *lj93* or *lj126* or *lj1043* or *colloid* or *harmonic*
.. parsed-literal::
@ -50,7 +63,19 @@ Syntax
epsilon can be a variable (see below)
sigma = size factor for wall-particle interaction (distance units)
sigma can be a variable (see below)
cutoff = distance from wall at which wall-particle interaction is cut off (distance units)
cutoff = distance from wall at which wall-particle interactions are cut off (distance units)
* args for style *lepton*
.. parsed-literal::
args = coord expression cutoff
coord = position of wall = EDGE or constant or variable
EDGE = current lo or hi edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = :doc:`equal-style variable <variable>` like v_x or v_wiggle
expression = Lepton expression for the potential (energy units)
cutoff = distance from wall at which wall-particle interactions are cut off (distance units)
* args for style *morse*
@ -67,7 +92,20 @@ Syntax
alpha can be a variable (see below)
r_0 = distance of the potential minimum from the face of region (distance units)
r_0 can be a variable (see below)
cutoff = distance from wall at which wall-particle interaction is cut off (distance units)
cutoff = distance from wall at which wall-particle interactions are cut off (distance units)
* args for style *table*
.. parsed-literal::
args = coord filename keyword cutoff
coord = position of wall = EDGE or constant or variable
EDGE = current lo or hi edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = :doc:`equal-style variable <variable>` like v_x or v_wiggle
filename = file containing tabulated energy and force values
keyword = section identifier to select a specific table in table file
cutoff = distance from wall at which wall-particle interactions are cut off (distance units)
* zero or more keyword/value pairs may be appended
* keyword = *units* or *fld* or *pbc*
@ -91,9 +129,13 @@ Examples
fix wallhi all wall/lj93 xlo -1.0 1.0 1.0 2.5 units box
fix wallhi all wall/lj93 xhi EDGE 1.0 1.0 2.5
fix wallhi all wall/harmonic xhi EDGE 100.0 0.0 4.0 units box
fix wallhi all wall/morse xhi EDGE 1.0 1.0 1.0 2.5 units box
fix wallhi all wall/lj126 v_wiggle 23.2 1.0 1.0 2.5
fix zwalls all wall/colloid zlo 0.0 1.0 1.0 0.858 zhi 40.0 1.0 1.0 0.858
fix xwall mobile wall/table spline 200 EDGE -5.0 walltab.dat HARMONIC 4.0
fix xwalls mobile wall/lepton xlo -5.0 "k*(r-rc)^2;k=100.0" 4.0 xhi 5.0 "k*(r-rc)^2;k=100.0" 4.0
Description
"""""""""""
@ -103,7 +145,7 @@ wall that interacts with the atoms in the group by generating a force
on the atom in a direction perpendicular to the wall. The energy of
wall-particle interactions depends on the style.
For style *wall/lj93*, the energy E is given by the 9/3 potential:
For style *wall/lj93*, the energy E is given by the 9-3 Lennard-Jones potential:
.. math::
@ -111,7 +153,7 @@ For style *wall/lj93*, the energy E is given by the 9/3 potential:
\left(\frac{\sigma}{r}\right)^3 \right]
\qquad r < r_c
For style *wall/lj126*, the energy E is given by the 12/6 potential:
For style *wall/lj126*, the energy E is given by the 12-6 Lennard-Jones potential:
.. math::
@ -119,7 +161,7 @@ For style *wall/lj126*, the energy E is given by the 12/6 potential:
\left(\frac{\sigma}{r}\right)^6 \right]
\qquad r < r_c
For style *wall/lj1043*, the energy E is given by the 10/4/3 potential:
For style *wall/lj1043*, the energy E is given by the 10-4-3 Lennard-Jones potential:
.. math::
@ -138,8 +180,8 @@ of the :doc:`pair_style colloid <pair_colloid>` potential:
& \left. - \frac{1}{6} \left(\frac{2R(D+R) + D(D+2R)
\left[ \ln D - \ln (D+2R) \right]}{D(D+2R)} \right) \right] \qquad r < r_c
For style *wall/harmonic*, the energy E is given by a harmonic spring
potential:
For style *wall/harmonic*, the energy E is given by a repulsive-only harmonic
spring potential:
.. math::
@ -152,6 +194,56 @@ For style *wall/morse*, the energy E is given by a Morse potential:
E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right]
\qquad r < r_c
For style *wall/lepton*, the energy E is provided as an Lepton
expression string using "r" as the distance variable. The `Lepton
library <https://simtk.org/projects/lepton>`_, that the *wall/lepton*
style interfaces with, evaluates this expression string at run time to
compute the wall-particle energy. It also creates an analytical
representation of the first derivative of this expression with respect
to "r" and then uses that to compute the force between the wall and
atoms in the fix group. The Lepton expression must be either enclosed
in quotes or must not contain any whitespace so that LAMMPS recognizes
it as a single keyword.
Optionally, the expression may use "rc" to refer to the cutoff distance
for the given wall. Further constants in the expression can be defined
in the same string as additional expressions separated by semi-colons.
The expression "k*(r-rc)^2;k=100.0" represents a repulsive-only harmonic
spring as in fix *wall/harmonic* with a force constant *K* (same as
:math:`\epsilon` above) of 100 energy units. More details on the Lepton
expression strings are given below.
For style *wall/table*, the energy E and forces are determined from
interpolation tables listed in one or more files as a function of
distance. The interpolation tables are used to evaluate energy and
forces between particles and the wall similar to how analytic formulas
are used for the other wall styles.
The interpolation tables are created as a pre-computation by fitting
cubic splines to the file values and interpolating energy and force
values at each of *N* distances. During a simulation, the tables are
used to interpolate energy and force values as needed for each wall and
particle separated by a distance *R*\ . The interpolation is done in
one of two styles: *linear* or *spline*\ .
For the *linear* style, the distance *R* is used to find the 2
surrounding table values from which an energy or force is computed by
linear interpolation.
For the *spline* style, cubic spline coefficients are computed and
stored for each of the *N* values in the table, one set of splines for
energy, another for force. Note that these splines are different than
the ones used to pre-compute the *N* values. Those splines were fit
to the *Nfile* values in the tabulated file, where often *Nfile* <
*N*\ . The distance *R* is used to find the appropriate set of spline
coefficients which are used to evaluate a cubic polynomial which
computes the energy or force.
For each wall a filename and a keyword must be provided as in the
examples above. The filename specifies a file containing tabulated
energy and force values. The keyword specifies a section of the file.
The format of this file is described below.
In all cases, *r* is the distance from the particle to the wall at
position *coord*, and :math:`r_c` is the *cutoff* distance at which the
particle and wall no longer interact. The energy of the wall
@ -180,11 +272,12 @@ box parameters and timestep and elapsed time. Thus it is easy to
specify a time-dependent wall position. See examples below.
For the *wall/lj93* and *wall/lj126* and *wall/lj1043* styles,
:math:`\epsilon` and :math:`\sigma` are the usual Lennard-Jones parameters, which
determine the strength and size of the particle as it interacts with
the wall. Epsilon has energy units. Note that this :math:`\epsilon` and
:math:`\sigma` may be different than any :math:`\epsilon` or :math:`\sigma` values defined
for a pair style that computes particle-particle interactions.
:math:`\epsilon` and :math:`\sigma` are the usual Lennard-Jones
parameters, which determine the strength and size of the particle as it
interacts with the wall. Epsilon has energy units. Note that this
:math:`\epsilon` and :math:`\sigma` may be different than any
:math:`\epsilon` or :math:`\sigma` values defined for a pair style that
computes particle-particle interactions.
The *wall/lj93* interaction is derived by integrating over a 3d
half-lattice of Lennard-Jones 12/6 particles. The *wall/lj126*
@ -207,11 +300,11 @@ are the number density of the constituent particles, in the wall and
colloid respectively, in units of 1/volume.
The *wall/colloid* interaction is derived by integrating over
constituent LJ particles of size :math:`\sigma` within the colloid particle
and a 3d half-lattice of Lennard-Jones 12/6 particles of size :math:`\sigma`
in the wall. As mentioned in the preceding paragraph, the density of
particles in the wall and colloid can be different, as specified by
the :math:`\epsilon` prefactor.
constituent LJ particles of size :math:`\sigma` within the colloid
particle and a 3d half-lattice of Lennard-Jones 12/6 particles of size
:math:`\sigma` in the wall. As mentioned in the preceding paragraph,
the density of particles in the wall and colloid can be different, as
specified by the :math:`\epsilon` prefactor.
For the *wall/harmonic* style, :math:`\epsilon` is effectively the spring
constant K, and has units (energy/distance\^2). The input parameter
@ -220,20 +313,21 @@ spring is at the *cutoff*\ . This is a repulsive-only spring since the
interaction is truncated at the *cutoff*
For the *wall/morse* style, the three parameters are in this order:
:math:`D_0` the depth of the potential, :math:`\alpha` the width parameter, and
:math:`r_0` the location of the minimum. :math:`D_0` has energy units, :math:`\alpha`
inverse distance units, and :math:`r_0` distance units.
:math:`D_0` the depth of the potential, :math:`\alpha` the width
parameter, and :math:`r_0` the location of the minimum. :math:`D_0` has
energy units, :math:`\alpha` inverse distance units, and :math:`r_0`
distance units.
For any wall, the :math:`\epsilon` and/or :math:`\sigma` and/or :math:`\alpha` parameter can
be specified
as an :doc:`equal-style variable <variable>`, in which case it should be
For any wall that supports them, the :math:`\epsilon` and/or
:math:`\sigma` and/or :math:`\alpha` parameter can be specified as an
:doc:`equal-style variable <variable>`, in which case it should be
specified as v_name, where name is the variable name. As with a
variable wall position, the variable is evaluated each timestep and
the result becomes the current epsilon or sigma of the wall.
Equal-style variables can specify formulas with various mathematical
functions, and include :doc:`thermo_style <thermo_style>` command
keywords for the simulation box parameters and timestep and elapsed
time. Thus it is easy to specify a time-dependent wall interaction.
variable wall position, the variable is evaluated each timestep and the
result becomes the current epsilon or sigma of the wall. Equal-style
variables can specify formulas with various mathematical functions, and
include :doc:`thermo_style <thermo_style>` command keywords for the
simulation box parameters and timestep and elapsed time. Thus it is
easy to specify a time-dependent wall interaction.
.. note::
@ -266,20 +360,19 @@ define the lattice spacings.
The *fld* keyword can be used with a *yes* setting to invoke the wall
constraint before pairwise interactions are computed. This allows an
implicit FLD model using :doc:`pair_style lubricateU <pair_lubricateU>`
to include the wall force in its calculations. If the setting is
*no*, wall forces are imposed after pairwise interactions, in the
usual manner.
to include the wall force in its calculations. If the setting is *no*,
wall forces are imposed after pairwise interactions, in the usual
manner.
The *pbc* keyword can be used with a *yes* setting to allow walls to
be specified in a periodic dimension. See the
:doc:`boundary <boundary>` command for options on simulation box
boundaries. The default for *pbc* is *no*, which means the system
must be non-periodic when using a wall. But you may wish to use a
periodic box. E.g. to allow some particles to interact with the wall
via the fix group-ID, and others to pass through it and wrap around a
periodic box. In this case you should ensure that the wall if
sufficiently far enough away from the box boundary. If you do not,
then particles may interact with both the wall and with periodic
The *pbc* keyword can be used with a *yes* setting to allow walls to be
specified in a periodic dimension. See the :doc:`boundary <boundary>`
command for options on simulation box boundaries. The default for *pbc*
is *no*, which means the system must be non-periodic when using a wall.
But you may wish to use a periodic box. E.g. to allow some particles to
interact with the wall via the fix group-ID, and others to pass through
it and wrap around a periodic box. In this case you should ensure that
the wall if sufficiently far enough away from the box boundary. If you
do not, then particles may interact with both the wall and with periodic
images on the other side of the box, which is probably not what you
want.
@ -328,6 +421,57 @@ perturbation on the particles:
----------
.. include:: lepton_expression.rst
----------
Table file format
"""""""""""""""""
Suitable tables for use with fix *wall/table* can be created by the
Python code in the ``tools/tabulate`` folder of the LAMMPS source code
distribution.
The format of a tabulated file is as follows (without the parenthesized
comments):
.. parsed-literal::
# Tabulated wall potential UNITS: real
HARMONIC (keyword is the first text on a line)
N 100 FP 200 200
(blank line)
1 0.04 1568.16 792.00 (index, distance to wall, energy, force)
2 0.08 1536.64 784.00
3 0.12 1505.44 776.00
...
99 3.96 0.16 8.00
100 4.00 0 0
A section begins with a non-blank line whose first character is not a
"#"; blank lines or lines starting with "#" can be used as comments
between sections. The first line begins with a keyword which identifies
the section. The line can contain additional text, but the initial text
must match the argument specified in the fix *wall/table* command. The
next line lists (in any order) one or more parameters for the table.
Each parameter is a keyword followed by one or more numeric values.
The parameter "N" is required and its value is the number of table
entries that follow. Note that this may be different than the *N*
specified in the fix *wall/table* command. Let Ntable = *N* in the fix
command, and Nfile = "N" in the tabulated file. What LAMMPS does is a
preliminary interpolation by creating splines using the Nfile tabulated
values as nodal points. It uses these to interpolate as needed to
generate energy and force values at Ntable different points. The
resulting tables of length Ntable are then used as described above, when
computing energy and force for wall-particle interactions. This means that
if you want the interpolation tables of length Ntable to match exactly
what is in the tabulated file (with effectively no preliminary
interpolation), you should set Ntable = Nfile.
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@ -354,16 +498,15 @@ fix. This allows to set at which level of the :doc:`r-RESPA
<run_style>` integrator the fix is adding its forces. Default is the
outermost level.
This fix computes a global scalar energy and a global vector of
forces, which can be accessed by various :doc:`output commands
<Howto_output>`. Note that the scalar energy is the sum of
interactions with all defined walls. If you want the energy on a
per-wall basis, you need to use multiple fix wall commands. The
length of the vector is equal to the number of walls defined by the
fix. Each vector value is the normal force on a specific wall. Note
that an outward force on a wall will be a negative value for *lo*
walls and a positive value for *hi* walls. The scalar and vector
values calculated by this fix are "extensive".
This fix computes a global scalar energy and a global vector of forces,
which can be accessed by various :doc:`output commands <Howto_output>`.
Note that the scalar energy is the sum of interactions with all defined
walls. If you want the energy on a per-wall basis, you need to use
multiple fix wall commands. The length of the vector is equal to the
number of walls defined by the fix. Each vector value is the normal
force on a specific wall. Note that an outward force on a wall will be
a negative value for *lo* walls and a positive value for *hi* walls.
The scalar and vector values calculated by this fix are "extensive".
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.
@ -386,7 +529,11 @@ invoked by the :doc:`minimize <minimize>` command.
Restrictions
""""""""""""
none
Fix *wall/lepton* is part of the LEPTON package and only enabled if
LAMMPS was built with this package. See the :doc:`Build package
<Build_package>` page for more info.
Related commands
""""""""""""""""

View File

@ -3487,6 +3487,7 @@ sz
Sz
Tabbernor
tabinner
tabstyle
Tadmor
Tafipolsky
tagID

View File

@ -0,0 +1,110 @@
units real
atom_style bond
boundary f p p
region box block -5.000000000000001 5.000000000000001 -5 5 -5 5
create_box 1 box bond/types 1 extra/bond/per/atom 1 extra/special/per/atom 1
pair_style zero 5.0
pair_coeff * *
mass * 1.0
bond_style zero
bond_coeff * 1.0
create_atoms 1 single -4.0 0.0 0.0
create_atoms 1 single 4.0 0.0 0.0
create_atoms 1 single -5.0 0.0 0.0
create_atoms 1 single 5.0 0.0 0.0
create_bonds single/bond 1 3 1
create_bonds single/bond 1 4 2
group move id 1:2
write_restart walltest.restart
variable name string wall-harmonic
include wall.inc
fix 1 move wall/harmonic xlo -5.0 100 0.0 4.0 xhi 5.0 100 1.0 4.0
fix_modify 1 energy yes
run 5 post no
variable name string lepton-harmonic
include wall.inc
fix 1 move wall/lepton xlo -5.0 "k*(r-rc)^2;k=100.0" 4.0 xhi 5.0 "k*(r-rc)^2;k=100.0" 4.0
fix_modify 1 energy yes
run 5 post no
variable name string bond-harmonic
include wall.inc
bond_style harmonic
bond_coeff 1 100 4.0
run 5 post no
variable name string pair-harmonic
include wall.inc
pair_style harmonic/cut
pair_coeff 1 1 100 4.0
run 5 post no
variable eps index 0.02
variable sig index 2.0
variable name string wall-lj126
include wall.inc
fix 1 move wall/lj126 xlo -5.0 ${eps} ${sig} 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix_modify 1 energy yes
run 5 post no
variable name string lepton-lj126
include wall.inc
fix 1 move wall/lepton xlo -5.0 "4.0*epsilon*((sigma/r)^12 - (sigma/r)^6);epsilon=v_eps;sigma=v_sig" 4.0 &
xhi 5.0 "4.0*epsilon*((sigma/r)^12 - (sigma/r)^6);epsilon=v_eps;sigma=v_sig" 4.0
fix_modify 1 energy yes
run 5 post no
variable name string pair-lj126
include wall.inc
pair_style lj/cut 4.0
pair_coeff 1 1 ${eps} ${sig}
pair_modify shift yes
run 5 post no
variable d0 index 20.0
variable al index 2.0
variable r0 index 1.2
variable name string wall-morse
include wall.inc
fix 1 move wall/morse xlo -5.0 ${d0} ${al} ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix_modify 1 energy yes
run 5 post no
variable name string lepton-morse
include wall.inc
fix 1 move wall/lepton xlo -5.0 "d0*(-1.0 + (1.0 - ralpha) * (1.0 - ralpha));ralpha=exp(-alpha*(r-r0));d0=v_d0;alpha=v_al;r0=v_r0" 4.0 &
xhi 5.0 "d0*(-1.0 + (1.0 - ralpha) * (1.0 - ralpha));ralpha=exp(-alpha*(r-r0));d0=v_d0;alpha=v_al;r0=v_r0" 4.0
fix_modify 1 energy yes
run 5 post no
variable name string bond-morse
include wall.inc
bond_style morse
bond_coeff 1 ${d0} ${al} ${r0}
run 5 post no
variable name string pair-morse
include wall.inc
pair_style morse 4.0
pair_coeff 1 1 ${d0} ${al} ${r0}
pair_modify shift yes
run 5 post no
shell rm -f walltest.restart

129
examples/wall/in.wall.table Normal file
View File

@ -0,0 +1,129 @@
units real
atom_style bond
boundary f p p
region box block -5.000000000000001 5.000000000000001 -5 5 -5 5
create_box 1 box bond/types 1 extra/bond/per/atom 1 extra/special/per/atom 1
pair_style zero 5.0
pair_coeff * *
mass * 1.0
bond_style zero
bond_coeff * 1.0
create_atoms 1 single -4.0 0.0 0.0
create_atoms 1 single 4.0 0.0 0.0
create_atoms 1 single -5.0 0.0 0.0
create_atoms 1 single 5.0 0.0 0.0
create_bonds single/bond 1 3 1
create_bonds single/bond 1 4 2
group move id 1:2
write_restart walltest.restart
variable name string wall-harmonic
include wall.inc
fix 1 move wall/harmonic xlo -5.0 100 0.0 4.0 xhi 5.0 100 1.0 4.0
fix_modify 1 energy yes
run 5 post no
variable name string table-harmonic
include wall.inc
fix 1 move wall/table linear 1000 xlo -5.0 walltab.dat HARMONIC 4.0 xhi 5.0 walltab.dat HARMONIC 4.0
fix_modify 1 energy yes
run 5 post no
variable name string spline-harmonic
include wall.inc
fix 1 move wall/table spline 200 xlo -5.0 walltab.dat HARMONIC 4.0 xhi 5.0 walltab.dat HARMONIC 4.0
fix_modify 1 energy yes
run 5 post no
variable name string bond-harmonic
include wall.inc
bond_style harmonic
bond_coeff 1 100 4.0
run 5 post no
variable name string pair-harmonic
include wall.inc
pair_style harmonic/cut
pair_coeff 1 1 100 4.0
run 5 post no
variable eps index 0.02
variable sig index 2.0
variable name string wall-lj126
include wall.inc
fix 1 move wall/lj126 xlo -5.0 ${eps} ${sig} 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix_modify 1 energy yes
run 5 post no
variable name string table-lj126
include wall.inc
fix 1 move wall/table linear 1000 xlo -5.0 walltab.dat LJ126 4.0 xhi 5.0 walltab.dat LJ126 4.0
fix_modify 1 energy yes
run 5 post no
variable name string spline-lj126
include wall.inc
fix 1 move wall/table spline 200 xlo -5.0 walltab.dat LJ126 4.0 xhi 5.0 walltab.dat LJ126 4.0
fix_modify 1 energy yes
run 5 post no
variable name string pair-lj126
include wall.inc
pair_style lj/cut 4.0
pair_coeff 1 1 ${eps} ${sig}
pair_modify shift yes
run 5 post no
variable d0 index 20.0
variable al index 2.0
variable r0 index 1.2
variable name string wall-morse
include wall.inc
fix 1 move wall/morse xlo -5.0 ${d0} ${al} ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix_modify 1 energy yes
run 5 post no
variable name string table-morse
include wall.inc
fix 1 move wall/table linear 1000 xlo -5.0 walltab.dat MORSE 4.0 xhi 5.0 walltab.dat MORSE 4.0
fix_modify 1 energy yes
run 5 post no
variable name string spline-morse
include wall.inc
fix 1 move wall/table spline 1000 xlo -5.0 walltab.dat MORSE 4.0 xhi 5.0 walltab.dat MORSE 4.0
fix_modify 1 energy yes
run 5 post no
variable name string bond-morse
include wall.inc
bond_style morse
bond_coeff 1 ${d0} ${al} ${r0}
run 5 post no
variable name string pair-morse
include wall.inc
pair_style morse 4.0
pair_coeff 1 1 ${d0} ${al} ${r0}
pair_modify shift yes
run 5 post no
shell rm -f walltest.restart

View File

@ -0,0 +1,882 @@
LAMMPS (8 Feb 2023)
using 1 OpenMP thread(s) per MPI task
units real
atom_style bond
boundary f p p
region box block -5.000000000000001 5.000000000000001 -5 5 -5 5
create_box 1 box bond/types 1 extra/bond/per/atom 1 extra/special/per/atom 1
Created orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
pair_style zero 5.0
pair_coeff * *
mass * 1.0
bond_style zero
bond_coeff * 1.0
create_atoms 1 single -4.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_atoms 1 single -5.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_atoms 1 single 5.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_bonds single/bond 1 3 1
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
create_bonds single/bond 1 4 2
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
group move id 1:2
2 atoms in group move
write_restart walltest.restart
System init for write_restart ...
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
variable name string wall-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/harmonic xlo -5.0 100 0.0 4.0 xhi 5.0 100 1.0 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 1800 1800 0
1 16146.37291 6600.295604 144.3878119 1652.527054 1796.914866 0
2 59294.04011 24238.149 530.232812 1258.437705 1788.670517 0
3 115302.7492 47133.32419 1031.086781 746.8819904 1777.968771 0
4 165817.4572 67782.66799 1482.811029 285.5057515 1768.31678 0
5 194283.6024 79419.02582 1737.367544 25.51012833 1762.877672 0
Loop time of 7.6828e-05 on 1 procs for 5 steps with 4 atoms
variable name string lepton-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lepton xlo -5.0 "k*(r-rc)^2;k=100.0" 4.0 xhi 5.0 "k*(r-rc)^2;k=100.0" 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 1800 1800 0
1 16146.37291 6600.295604 144.3878119 1652.527054 1796.914866 0
2 59294.04011 24238.149 530.232812 1258.437705 1788.670517 0
3 115302.7492 47133.32419 1031.086781 746.8819904 1777.968771 0
4 165817.4572 67782.66799 1482.811029 285.5057515 1768.31678 0
5 194283.6024 79419.02582 1737.367544 25.51012833 1762.877672 0
Loop time of 0.00134915 on 1 procs for 5 steps with 4 atoms
variable name string bond-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
bond_style harmonic
bond_coeff 1 100 4.0
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
WARNING: Communication cutoff 7 is shorter than a bond length based estimate of 8. This may lead to errors. (src/comm.cpp:723)
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 27427.366 0 1800 1800 900
1 16146.37291 36178.74173 144.3878119 1652.527054 1796.914866 826.263527
2 59294.04011 58444.6962 530.232812 1258.437705 1788.670517 629.2188524
3 115302.7492 83661.44348 1031.086781 746.8819904 1777.968771 373.4409952
4 165817.4572 98424.89283 1482.811029 285.5057515 1768.31678 142.7528758
5 194283.6024 91313.53086 1737.367544 25.51012833 1762.877672 12.75506417
Loop time of 4.6572e-05 on 1 procs for 5 steps with 4 atoms
variable name string pair-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
pair_style harmonic/cut
pair_coeff 1 1 100 4.0
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6
ghost atom cutoff = 6
binsize = 3, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair harmonic/cut, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.43 | 4.43 | 4.43 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 27427.366 0 1800 1800 900
1 16146.37291 36178.74173 144.3878119 1652.527054 1796.914866 826.263527
2 59294.04011 58444.6962 530.232812 1258.437705 1788.670517 629.2188524
3 115302.7492 83661.44348 1031.086781 746.8819904 1777.968771 373.4409952
4 165817.4572 98424.89283 1482.811029 285.5057515 1768.31678 142.7528758
5 170540.4005 97560.47089 1525.045619 190.8165235 1715.862142 178.0614593
Loop time of 8.4058e-05 on 1 procs for 5 steps with 4 atoms
variable eps index 0.02
variable sig index 2.0
variable name string wall-lj126
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lj126 xlo -5.0 ${eps} ${sig} 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 ${sig} 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 2.0 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 2.0 4.0 xhi 5.0 0.02 ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 2.0 4.0 xhi 5.0 0.02 2.0 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 645.1224609 645.1224609 0
1 178153.8707 72825.53278 1593.128544 0.2259591031 1593.354503 0
2 178262.3593 72869.88065 1594.098696 -0.02237405364 1594.076322 0
3 178259.9436 72868.89314 1594.077094 -0.003385746252 1594.073708 0
4 178259.4975 72868.71081 1594.073105 0 1594.073105 0
5 178259.4975 72868.71081 1594.073105 0 1594.073105 0
WARNING: Bond/angle/dihedral extent > half of periodic box length (src/domain.cpp:936)
Loop time of 4.3942e-05 on 1 procs for 5 steps with 4 atoms
variable name string lepton-lj126
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lepton xlo -5.0 "4.0*epsilon*((sigma/r)^12 - (sigma/r)^6);epsilon=v_eps;sigma=v_sig" 4.0 xhi 5.0 "4.0*epsilon*((sigma/r)^12 - (sigma/r)^6);epsilon=v_eps;sigma=v_sig" 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 645.1224609 645.1224609 0
1 178153.8707 72825.53278 1593.128544 0.2259591031 1593.354503 0
2 178262.3593 72869.88065 1594.098696 -0.02237405364 1594.076322 0
3 178259.9436 72868.89314 1594.077094 -0.003385746252 1594.073708 0
4 178259.4975 72868.71081 1594.073105 0 1594.073105 0
5 178259.4975 72868.71081 1594.073105 0 1594.073105 0
WARNING: Bond/angle/dihedral extent > half of periodic box length (src/domain.cpp:936)
Loop time of 0.00298781 on 1 procs for 5 steps with 4 atoms
variable name string pair-lj126
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
pair_style lj/cut 4.0
pair_coeff 1 1 ${eps} ${sig}
pair_coeff 1 1 0.02 ${sig}
pair_coeff 1 1 0.02 2.0
pair_modify shift yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6
ghost atom cutoff = 6
binsize = 3, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.43 | 4.43 | 4.43 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 178343.7047 0 645.1224609 645.1224609 322.5612305
1 178153.8707 72925.96146 1593.128544 0.2259591031 1593.354503 0.1129795516
2 178262.3593 72867.28485 1594.098696 -0.02237405364 1594.076322 -0.01118702682
3 178260.8147 72867.80305 1594.084884 -0.007499601847 1594.077384 -0.005806728722
4 176007.6835 72778.53677 1573.936415 2.772305717 1576.708721 2.772305717
5 1.132219912e+27 4.628275436e+26 1.012479748e+25 3.761972158e+12 1.012479748e+25 3.761972158e+12
WARNING: Bond/angle/dihedral extent > half of periodic box length (src/domain.cpp:936)
Loop time of 4.4455e-05 on 1 procs for 5 steps with 4 atoms
variable d0 index 20.0
variable al index 2.0
variable r0 index 1.2
variable name string wall-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/morse xlo -5.0 ${d0} ${al} ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 ${al} ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 20.0 ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 20.0 2.0 ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 20.0 2.0 1.2 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 -30.02905654 -30.02905654 0
1 146.0893547 59.71823711 1.30639385 -31.40065042 -30.09425657 0
2 485.8091411 198.5884977 4.34431431 -34.55987817 -30.21556386 0
3 822.0828974 336.0500941 7.351418888 -37.63613582 -30.28471693 0
4 1018.806679 416.4666136 9.110607565 -39.39265114 -30.28204357 0
5 1050.331347 429.3532307 9.392514704 -39.63687095 -30.24435625 0
Loop time of 7.6505e-05 on 1 procs for 5 steps with 4 atoms
variable name string lepton-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lepton xlo -5.0 "d0*(-1.0 + (1.0 - ralpha) * (1.0 - ralpha));ralpha=exp(-alpha*(r-r0));d0=v_d0;alpha=v_al;r0=v_r0" 4.0 xhi 5.0 "d0*(-1.0 + (1.0 - ralpha) * (1.0 - ralpha));ralpha=exp(-alpha*(r-r0));d0=v_d0;alpha=v_al;r0=v_r0" 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 -30.02905654 -30.02905654 0
1 146.0893547 59.71823711 1.30639385 -31.40065042 -30.09425657 0
2 485.8091411 198.5884977 4.34431431 -34.55987817 -30.21556386 0
3 822.0828974 336.0500941 7.351418888 -37.63613582 -30.28471693 0
4 1018.806679 416.4666136 9.110607565 -39.39265114 -30.28204357 0
5 1050.331347 429.3532307 9.392514704 -39.63687095 -30.24435625 0
Loop time of 0.00266357 on 1 procs for 5 steps with 4 atoms
variable name string bond-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
bond_style morse
bond_coeff 1 ${d0} ${al} ${r0}
bond_coeff 1 20.0 ${al} ${r0}
bond_coeff 1 20.0 2.0 ${r0}
bond_coeff 1 20.0 2.0 1.2
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.429 | 4.429 | 4.429 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 2683.187147 0 9.675661328 9.675661328 4.837830664
1 146.0893547 2514.939772 1.30639385 8.304067455 9.610461305 4.152033728
2 485.8091411 2063.804037 4.34431431 5.144839701 9.489154012 2.572419851
3 822.0828974 1456.368913 7.351418888 2.06858205 9.420000938 1.034291025
4 1018.806679 823.4383177 9.110607565 0.3120667313 9.422674297 0.1560333657
5 1050.331347 253.0262957 9.392514704 0.06784692056 9.460361624 0.03392346028
Loop time of 0.000120428 on 1 procs for 5 steps with 4 atoms
variable name string pair-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 1 by 1 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.000 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
pair_style morse 4.0
pair_coeff 1 1 ${d0} ${al} ${r0}
pair_coeff 1 1 20.0 ${al} ${r0}
pair_coeff 1 1 20.0 2.0 ${r0}
pair_coeff 1 1 20.0 2.0 1.2
pair_modify shift yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6
ghost atom cutoff = 6
binsize = 3, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair morse, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.43 | 4.43 | 4.43 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 2683.187147 0 -30.02905654 -30.02905654 -15.01452827
1 146.0893547 2514.939772 1.30639385 -31.40065042 -30.09425657 -15.70032521
2 485.8091411 2063.804037 4.34431431 -34.55987817 -30.21556386 -17.27993908
3 822.0828974 1456.368913 7.351418888 -37.63613582 -30.28471693 -18.81806791
4 1018.806679 823.4383177 9.110607565 -39.39265114 -30.28204357 -19.69632557
5 1050.331347 253.0262957 9.392514704 -39.63687095 -30.24435625 -19.81843547
Loop time of 3.6356e-05 on 1 procs for 5 steps with 4 atoms
shell rm -f walltest.restart
Total wall time: 0:00:00

View File

@ -0,0 +1,882 @@
LAMMPS (8 Feb 2023)
using 1 OpenMP thread(s) per MPI task
units real
atom_style bond
boundary f p p
region box block -5.000000000000001 5.000000000000001 -5 5 -5 5
create_box 1 box bond/types 1 extra/bond/per/atom 1 extra/special/per/atom 1
Created orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
pair_style zero 5.0
pair_coeff * *
mass * 1.0
bond_style zero
bond_coeff * 1.0
create_atoms 1 single -4.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_atoms 1 single 4.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_atoms 1 single -5.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_atoms 1 single 5.0 0.0 0.0
Created 1 atoms
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
create_atoms CPU = 0.000 seconds
create_bonds single/bond 1 3 1
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
create_bonds single/bond 1 4 2
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.001 seconds
group move id 1:2
2 atoms in group move
write_restart walltest.restart
System init for write_restart ...
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
variable name string wall-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/harmonic xlo -5.0 100 0.0 4.0 xhi 5.0 100 1.0 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 1800 1800 0
1 16146.37291 6600.295604 144.3878119 1652.527054 1796.914866 0
2 59294.04011 24238.149 530.232812 1258.437705 1788.670517 0
3 115302.7492 47133.32419 1031.086781 746.8819904 1777.968771 0
4 165817.4572 67782.66799 1482.811029 285.5057515 1768.31678 0
5 194283.6024 79419.02582 1737.367544 25.51012833 1762.877672 0
Loop time of 0.000266179 on 4 procs for 5 steps with 4 atoms
variable name string lepton-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lepton xlo -5.0 "k*(r-rc)^2;k=100.0" 4.0 xhi 5.0 "k*(r-rc)^2;k=100.0" 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 1800 1800 0
1 16146.37291 6600.295604 144.3878119 1652.527054 1796.914866 0
2 59294.04011 24238.149 530.232812 1258.437705 1788.670517 0
3 115302.7492 47133.32419 1031.086781 746.8819904 1777.968771 0
4 165817.4572 67782.66799 1482.811029 285.5057515 1768.31678 0
5 194283.6024 79419.02582 1737.367544 25.51012833 1762.877672 0
Loop time of 0.00230794 on 4 procs for 5 steps with 4 atoms
variable name string bond-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
bond_style harmonic
bond_coeff 1 100 4.0
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
WARNING: Communication cutoff 7 is shorter than a bond length based estimate of 8. This may lead to errors. (src/comm.cpp:723)
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 27427.366 0 1800 1800 900
1 16146.37291 36178.74173 144.3878119 1652.527054 1796.914866 826.263527
2 59294.04011 58444.6962 530.232812 1258.437705 1788.670517 629.2188524
3 115302.7492 83661.44348 1031.086781 746.8819904 1777.968771 373.4409952
4 165817.4572 98424.89283 1482.811029 285.5057515 1768.31678 142.7528758
5 194283.6024 91313.53086 1737.367544 25.51012833 1762.877672 12.75506417
Loop time of 0.000358068 on 4 procs for 5 steps with 4 atoms
variable name string pair-harmonic
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
pair_style harmonic/cut
pair_coeff 1 1 100 4.0
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6
ghost atom cutoff = 6
binsize = 3, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair harmonic/cut, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.38 | 4.56 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 27427.366 0 1800 1800 900
1 16146.37291 36178.74173 144.3878119 1652.527054 1796.914866 826.263527
2 59294.04011 58444.6962 530.232812 1258.437705 1788.670517 629.2188524
3 115302.7492 83661.44348 1031.086781 746.8819904 1777.968771 373.4409952
4 165817.4572 98424.89283 1482.811029 285.5057515 1768.31678 142.7528758
5 170540.4005 97560.47089 1525.045619 190.8165235 1715.862142 178.0614593
Loop time of 0.000341881 on 4 procs for 5 steps with 4 atoms
variable eps index 0.02
variable sig index 2.0
variable name string wall-lj126
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lj126 xlo -5.0 ${eps} ${sig} 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 ${sig} 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 2.0 4.0 xhi 5.0 ${eps} ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 2.0 4.0 xhi 5.0 0.02 ${sig} 4.0
fix 1 move wall/lj126 xlo -5.0 0.02 2.0 4.0 xhi 5.0 0.02 2.0 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 645.1224609 645.1224609 0
1 178153.8707 72825.53278 1593.128544 0.2259591031 1593.354503 0
2 178262.3593 72869.88065 1594.098696 -0.02237405364 1594.076322 0
3 178259.9436 72868.89314 1594.077094 -0.003385746252 1594.073708 0
4 178259.4975 72868.71081 1594.073105 0 1594.073105 0
5 178259.4975 72868.71081 1594.073105 0 1594.073105 0
WARNING: Bond/angle/dihedral extent > half of periodic box length (src/domain.cpp:936)
Loop time of 0.000345376 on 4 procs for 5 steps with 4 atoms
variable name string lepton-lj126
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lepton xlo -5.0 "4.0*epsilon*((sigma/r)^12 - (sigma/r)^6);epsilon=v_eps;sigma=v_sig" 4.0 xhi 5.0 "4.0*epsilon*((sigma/r)^12 - (sigma/r)^6);epsilon=v_eps;sigma=v_sig" 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 645.1224609 645.1224609 0
1 178153.8707 72825.53278 1593.128544 0.2259591031 1593.354503 0
2 178262.3593 72869.88065 1594.098696 -0.02237405364 1594.076322 0
3 178259.9436 72868.89314 1594.077094 -0.003385746252 1594.073708 0
4 178259.4975 72868.71081 1594.073105 0 1594.073105 0
5 178259.4975 72868.71081 1594.073105 0 1594.073105 0
WARNING: Bond/angle/dihedral extent > half of periodic box length (src/domain.cpp:936)
Loop time of 0.00332789 on 4 procs for 5 steps with 4 atoms
variable name string pair-lj126
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
pair_style lj/cut 4.0
pair_coeff 1 1 ${eps} ${sig}
pair_coeff 1 1 0.02 ${sig}
pair_coeff 1 1 0.02 2.0
pair_modify shift yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6
ghost atom cutoff = 6
binsize = 3, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.38 | 4.56 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 178343.7047 0 645.1224609 645.1224609 322.5612305
1 178153.8707 72925.96146 1593.128544 0.2259591031 1593.354503 0.1129795516
2 178262.3593 72867.28485 1594.098696 -0.02237405364 1594.076322 -0.01118702682
3 178260.8147 72867.80305 1594.084884 -0.007499601847 1594.077384 -0.005806728722
4 176007.6835 72778.53677 1573.936415 2.772305717 1576.708721 2.772305717
5 1.132219912e+27 4.628275436e+26 1.012479748e+25 3.761972158e+12 1.012479748e+25 3.761972158e+12
WARNING: Bond/angle/dihedral extent > half of periodic box length (src/domain.cpp:936)
Loop time of 0.000404238 on 4 procs for 5 steps with 4 atoms
variable d0 index 20.0
variable al index 2.0
variable r0 index 1.2
variable name string wall-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/morse xlo -5.0 ${d0} ${al} ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 ${al} ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 ${r0} 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 ${d0} ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 20.0 ${al} ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 20.0 2.0 ${r0} 4.0
fix 1 move wall/morse xlo -5.0 20.0 2.0 1.2 4.0 xhi 5.0 20.0 2.0 1.2 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 -30.02905654 -30.02905654 0
1 146.0893547 59.71823711 1.30639385 -31.40065042 -30.09425657 0
2 485.8091411 198.5884977 4.34431431 -34.55987817 -30.21556386 0
3 822.0828974 336.0500941 7.351418888 -37.63613582 -30.28471693 0
4 1018.806679 416.4666136 9.110607565 -39.39265114 -30.28204357 0
5 1050.331347 429.3532307 9.392514704 -39.63687095 -30.24435625 0
Loop time of 0.000748817 on 4 procs for 5 steps with 4 atoms
variable name string lepton-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
fix 1 move wall/lepton xlo -5.0 "d0*(-1.0 + (1.0 - ralpha) * (1.0 - ralpha));ralpha=exp(-alpha*(r-r0));d0=v_d0;alpha=v_al;r0=v_r0" 4.0 xhi 5.0 "d0*(-1.0 + (1.0 - ralpha) * (1.0 - ralpha));ralpha=exp(-alpha*(r-r0));d0=v_d0;alpha=v_al;r0=v_r0" 4.0
fix_modify 1 energy yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 0 0 -30.02905654 -30.02905654 0
1 146.0893547 59.71823711 1.30639385 -31.40065042 -30.09425657 0
2 485.8091411 198.5884977 4.34431431 -34.55987817 -30.21556386 0
3 822.0828974 336.0500941 7.351418888 -37.63613582 -30.28471693 0
4 1018.806679 416.4666136 9.110607565 -39.39265114 -30.28204357 0
5 1050.331347 429.3532307 9.392514704 -39.63687095 -30.24435625 0
Loop time of 0.00347272 on 4 procs for 5 steps with 4 atoms
variable name string bond-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
bond_style morse
bond_coeff 1 ${d0} ${al} ${r0}
bond_coeff 1 20.0 ${al} ${r0}
bond_coeff 1 20.0 2.0 ${r0}
bond_coeff 1 20.0 2.0 1.2
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7
ghost atom cutoff = 7
binsize = 3.5, bins = 3 3 3
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair zero, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.379 | 4.559 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 2683.187147 0 9.675661328 9.675661328 4.837830664
1 146.0893547 2514.939772 1.30639385 8.304067455 9.610461305 4.152033728
2 485.8091411 2063.804037 4.34431431 5.144839701 9.489154012 2.572419851
3 822.0828974 1456.368913 7.351418888 2.06858205 9.420000938 1.034291025
4 1018.806679 823.4383177 9.110607565 0.3120667313 9.422674297 0.1560333657
5 1050.331347 253.0262957 9.392514704 0.06784692056 9.460361624 0.03392346028
Loop time of 0.000859458 on 4 procs for 5 steps with 4 atoms
variable name string pair-morse
include wall.inc
clear
using 1 OpenMP thread(s) per MPI task
read_restart walltest.restart
Reading restart file ...
restart file = 8 Feb 2023, LAMMPS = 8 Feb 2023
restoring atom style bond from restart
orthogonal box = (-5 -5 -5) to (5 5 5)
1 by 2 by 2 MPI processor grid
restoring pair style zero from restart
restoring bond style zero from restart
4 atoms
2 bonds
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
1 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_restart CPU = 0.001 seconds
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 1 1 1
1 = max # of 1-2 neighbors
3 = max # of special neighbors
special bonds CPU = 0.000 seconds
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g
pair_style morse 4.0
pair_coeff 1 1 ${d0} ${al} ${r0}
pair_coeff 1 1 20.0 ${al} ${r0}
pair_coeff 1 1 20.0 2.0 ${r0}
pair_coeff 1 1 20.0 2.0 1.2
pair_modify shift yes
run 5 post no
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
Neighbor list info ...
update: every = 1 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6
ghost atom cutoff = 6
binsize = 3, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair morse, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.32 | 4.38 | 4.56 Mbytes
Step Temp Press KinEng PotEng TotEng c_pe
0 0 2683.187147 0 -30.02905654 -30.02905654 -15.01452827
1 146.0893547 2514.939772 1.30639385 -31.40065042 -30.09425657 -15.70032521
2 485.8091411 2063.804037 4.34431431 -34.55987817 -30.21556386 -17.27993908
3 822.0828974 1456.368913 7.351418888 -37.63613582 -30.28471693 -18.81806791
4 1018.806679 823.4383177 9.110607565 -39.39265114 -30.28204357 -19.69632557
5 1050.331347 253.0262957 9.392514704 -39.63687095 -30.24435625 -19.81843547
Loop time of 0.00029769 on 4 procs for 5 steps with 4 atoms
shell rm -f walltest.restart
Total wall time: 0:00:00

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

16
examples/wall/wall.inc Normal file
View File

@ -0,0 +1,16 @@
clear
read_restart walltest.restart
# log ${name}.log
compute ea move pe/atom
compute pe move reduce sum c_ea
special_bonds lj/coul 1.0 1.0 1.0
thermo_style custom step temp press ke pe etotal c_pe
thermo 1
thermo_modify format float %14.10g
fix 0 move nve
# dump 1 all custom 1 ${name}.dump id x fx
# dump_modify 1 format float %20.15g

1212
examples/wall/walltab.dat Normal file

File diff suppressed because it is too large Load Diff

2
src/.gitignore vendored
View File

@ -62,6 +62,8 @@
/angle_lepton.h
/dihedral_lepton.cpp
/dihedral_lepton.h
/fix_wall_lepton.cpp
/fix_wall_lepton.h
/lepton_utils.cpp
/lepton_utils.h

View File

@ -24,7 +24,6 @@
#include <cmath>
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */

View File

@ -26,7 +26,6 @@
#include <cmath>
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */

View File

@ -31,7 +31,6 @@
#include <cstring>
using namespace LAMMPS_NS;
using namespace FixConst;
enum{NONE,DIFFUSIVE,MAXWELL,CCL};

View File

@ -29,7 +29,6 @@
#include <cstring>
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */

View File

@ -19,7 +19,6 @@
#include "atom_masks.h"
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */

View File

@ -24,7 +24,6 @@
#include <cstring>
using namespace LAMMPS_NS;
using namespace FixConst;
enum{XLO=0,XHI=1,YLO=2,YHI=3,ZLO=4,ZHI=5};
enum{NONE=0,EDGE,CONSTANT,VARIABLE};

View File

@ -0,0 +1,138 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include "fix_wall_lepton.h"
#include "atom.h"
#include "error.h"
#include "Lepton.h"
#include "lepton_utils.h"
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
FixWallLepton::FixWallLepton(LAMMPS *lmp, int narg, char **arg) : FixWall(lmp, narg, arg)
{
dynamic_group_allow = 1;
}
/* ---------------------------------------------------------------------- */
void FixWallLepton::post_constructor()
{
// check validity of lepton expression
for (int m = 0; m < nwall; ++m) {
// remove whitespace and quotes from expression string and then
// check if the expression can be parsed and evaluated without error
std::string exp_one = LeptonUtils::condense(lstr[m]);
try {
auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp));
auto wallpot = parsed.createCompiledExpression();
auto wallforce = parsed.differentiate("r").createCompiledExpression();
wallpot.getVariableReference("r") = 0.0;
wallforce.getVariableReference("r") = 0.0;
wallpot.evaluate();
wallforce.evaluate();
} catch (std::exception &e) {
error->all(FLERR, e.what());
}
}
}
/* ----------------------------------------------------------------------
compute the potential energy offset so it can be shifted to zero at the cutoff
------------------------------------------------------------------------- */
void FixWallLepton::precompute(int m)
{
std::string exp_one = LeptonUtils::condense(lstr[m]);
auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp));
auto wallpot = parsed.createCompiledExpression();
try {
wallpot.getVariableReference("rc") = cutoff[m];
} catch (std::exception &) {
; // do nothing
}
wallpot.getVariableReference("r") = cutoff[m];
offset[m] = wallpot.evaluate();
}
/* ----------------------------------------------------------------------
interaction of all particles in group with a wall
m = index of wall coeffs
which = xlo,xhi,ylo,yhi,zlo,zhi
error if any particle is on or behind wall
------------------------------------------------------------------------- */
void FixWallLepton::wall_particle(int m, int which, double coord)
{
std::string exp_one = LeptonUtils::condense(lstr[m]);
auto parsed = Lepton::Parser::parse(LeptonUtils::substitute(exp_one, lmp));
auto wallpot = parsed.createCompiledExpression();
auto wallforce = parsed.differentiate("r").createCompiledExpression();
// set cutoff value, if used
try {
wallpot.getVariableReference("rc") = cutoff[m];
wallforce.getVariableReference("rc") = cutoff[m];
} catch (std::exception &) {
; // do nothing
}
double delta, fwall, vn;
double **x = atom->x;
double **f = atom->f;
int *mask = atom->mask;
int nlocal = atom->nlocal;
int dim = which / 2;
int side = which % 2;
if (side == 0) side = -1;
int onflag = 0;
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
if (side < 0)
delta = x[i][dim] - coord;
else
delta = coord - x[i][dim];
if (delta >= cutoff[m]) continue;
if (delta <= 0.0) {
onflag = 1;
continue;
}
wallpot.getVariableReference("r") = delta;
wallforce.getVariableReference("r") = delta;
fwall = side * wallforce.evaluate();
f[i][dim] += fwall;
ewall[0] += wallpot.evaluate() - offset[m];
ewall[m + 1] += fwall;
if (evflag) {
if (side < 0)
vn = -fwall * delta;
else
vn = fwall * delta;
v_tally(dim, i, vn);
}
}
}
if (onflag) error->one(FLERR, "Particle on or inside fix {} surface", style);
}

View File

@ -0,0 +1,41 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef FIX_CLASS
// clang-format off
FixStyle(wall/lepton,FixWallLepton);
// clang-format on
#else
#ifndef LMP_FIX_WALL_LEPTON_H
#define LMP_FIX_WALL_LEPTON_H
#include "fix_wall.h"
namespace LAMMPS_NS {
class FixWallLepton : public FixWall {
public:
FixWallLepton(class LAMMPS *, int, char **);
void post_constructor() override;
void precompute(int) override;
void wall_particle(int, int, double) override;
protected:
double offset[6];
};
} // namespace LAMMPS_NS
#endif
#endif

View File

@ -13,17 +13,19 @@
------------------------------------------------------------------------- */
#include "fix_wall_piston.h"
#include "atom.h"
#include "comm.h"
#include "domain.h"
#include "error.h"
#include "force.h"
#include "lattice.h"
#include "math_const.h"
#include "random_mars.h"
#include "update.h"
#include <cmath>
#include <cstring>
#include "atom.h"
#include "domain.h"
#include "lattice.h"
#include "update.h"
#include "error.h"
#include "random_mars.h"
#include "force.h"
#include "comm.h"
#include "math_const.h"
using namespace LAMMPS_NS;
using namespace FixConst;

View File

@ -27,7 +27,6 @@
#include <cstring>
using namespace LAMMPS_NS;
using namespace FixConst;
enum { XLO, XHI, YLO, YHI, ZLO, ZHI };
enum { NONE, EDGE, CONSTANT, VARIABLE };

View File

@ -1,4 +1,3 @@
// clang-format off
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
@ -28,14 +27,14 @@
using namespace LAMMPS_NS;
using namespace FixConst;
enum{XLO=0,XHI=1,YLO=2,YHI=3,ZLO=4,ZHI=5};
enum{NONE=0,EDGE,CONSTANT,VARIABLE};
enum { XLO = 0, XHI = 1, YLO = 2, YHI = 3, ZLO = 4, ZHI = 5 };
enum { NONE = 0, EDGE, CONSTANT, VARIABLE };
static const char *wallpos[] = {"xlo", "xhi", "ylo", "yhi", "zlo", "zhi"};
/* ---------------------------------------------------------------------- */
FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg),
nwall(0)
FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), nwall(0)
{
scalar_flag = 1;
vector_flag = 1;
@ -53,111 +52,145 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
fldflag = 0;
int pbcflag = 0;
for (int i = 0; i < 6; i++) xstr[i] = estr[i] = sstr[i] = nullptr;
for (int i = 0; i < 6; i++) xstr[i] = estr[i] = sstr[i] = lstr[i] = fstr[i] = kstr[i] = nullptr;
int iarg = 3;
if (utils::strmatch(style, "^wall/table")) iarg = 5;
while (iarg < narg) {
if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) ||
(strcmp(arg[iarg],"ylo") == 0) || (strcmp(arg[iarg],"yhi") == 0) ||
(strcmp(arg[iarg],"zlo") == 0) || (strcmp(arg[iarg],"zhi") == 0)) {
if (iarg+5 > narg) error->all(FLERR,"Illegal fix wall command");
int wantargs = 5;
if (utils::strmatch(style, "^wall/lepton")) wantargs = 4;
if (utils::strmatch(style, "^wall/morse")) wantargs = 6;
if ((strcmp(arg[iarg], "xlo") == 0) || (strcmp(arg[iarg], "xhi") == 0) ||
(strcmp(arg[iarg], "ylo") == 0) || (strcmp(arg[iarg], "yhi") == 0) ||
(strcmp(arg[iarg], "zlo") == 0) || (strcmp(arg[iarg], "zhi") == 0)) {
if (iarg + wantargs > narg) error->all(FLERR, "Missing argument for fix {} command", style);
int newwall;
if (strcmp(arg[iarg],"xlo") == 0) newwall = XLO;
else if (strcmp(arg[iarg],"xhi") == 0) newwall = XHI;
else if (strcmp(arg[iarg],"ylo") == 0) newwall = YLO;
else if (strcmp(arg[iarg],"yhi") == 0) newwall = YHI;
else if (strcmp(arg[iarg],"zlo") == 0) newwall = ZLO;
else if (strcmp(arg[iarg],"zhi") == 0) newwall = ZHI;
for (int m = 0; (m < nwall) && (m < 6); m++)
if (strcmp(arg[iarg], "xlo") == 0) {
newwall = XLO;
} else if (strcmp(arg[iarg], "xhi") == 0) {
newwall = XHI;
} else if (strcmp(arg[iarg], "ylo") == 0) {
newwall = YLO;
} else if (strcmp(arg[iarg], "yhi") == 0) {
newwall = YHI;
} else if (strcmp(arg[iarg], "zlo") == 0) {
newwall = ZLO;
} else if (strcmp(arg[iarg], "zhi") == 0) {
newwall = ZHI;
}
for (int m = 0; (m < nwall) && (m < 6); m++) {
if (newwall == wallwhich[m])
error->all(FLERR,"Wall defined twice in fix wall command");
error->all(FLERR, "{} wall defined twice in fix {} command", wallpos[newwall], style);
}
wallwhich[nwall] = newwall;
if (strcmp(arg[iarg+1],"EDGE") == 0) {
if (strcmp(arg[iarg + 1], "EDGE") == 0) {
xstyle[nwall] = EDGE;
int dim = wallwhich[nwall] / 2;
int side = wallwhich[nwall] % 2;
if (side == 0) coord0[nwall] = domain->boxlo[dim];
else coord0[nwall] = domain->boxhi[dim];
} else if (utils::strmatch(arg[iarg+1],"^v_")) {
if (side == 0) {
coord0[nwall] = domain->boxlo[dim];
} else {
coord0[nwall] = domain->boxhi[dim];
}
} else if (utils::strmatch(arg[iarg + 1], "^v_")) {
xstyle[nwall] = VARIABLE;
xstr[nwall] = utils::strdup(arg[iarg+1]+2);
xstr[nwall] = utils::strdup(arg[iarg + 1] + 2);
} else {
xstyle[nwall] = CONSTANT;
coord0[nwall] = utils::numeric(FLERR,arg[iarg+1],false,lmp);
coord0[nwall] = utils::numeric(FLERR, arg[iarg + 1], false, lmp);
}
if (utils::strmatch(arg[iarg+2],"^v_")) {
estr[nwall] = utils::strdup(arg[iarg+2]+2);
estyle[nwall] = VARIABLE;
if (utils::strmatch(style, "^wall/lepton")) {
estyle[nwall] = sstyle[nwall] = CONSTANT;
lstr[nwall] = utils::strdup(arg[iarg + 2]);
cutoff[nwall] = utils::numeric(FLERR, arg[iarg + 3], false, lmp);
} else if (utils::strmatch(style, "^wall/table")) {
estyle[nwall] = sstyle[nwall] = CONSTANT;
fstr[nwall] = utils::strdup(arg[iarg + 2]);
kstr[nwall] = utils::strdup(arg[iarg + 3]);
cutoff[nwall] = utils::numeric(FLERR, arg[iarg + 4], false, lmp);
} else {
epsilon[nwall] = utils::numeric(FLERR,arg[iarg+2],false,lmp);
estyle[nwall] = CONSTANT;
}
if (iarg + 5 > narg) error->all(FLERR, "Missing argument for fix {} command", style);
if (utils::strmatch(style,"^wall/morse")) {
if (utils::strmatch(arg[iarg+3],"^v_")) {
astr[nwall] = utils::strdup(arg[iarg+3]+2);
astyle[nwall] = VARIABLE;
if (utils::strmatch(arg[iarg + 2], "^v_")) {
estr[nwall] = utils::strdup(arg[iarg + 2] + 2);
estyle[nwall] = VARIABLE;
} else {
alpha[nwall] = utils::numeric(FLERR,arg[iarg+3],false,lmp);
astyle[nwall] = CONSTANT;
epsilon[nwall] = utils::numeric(FLERR, arg[iarg + 2], false, lmp);
estyle[nwall] = CONSTANT;
}
++iarg;
}
if (utils::strmatch(arg[iarg+3],"^v_")) {
sstr[nwall] = utils::strdup(arg[iarg+3]+2);
sstyle[nwall] = VARIABLE;
} else {
sigma[nwall] = utils::numeric(FLERR,arg[iarg+3],false,lmp);
sstyle[nwall] = CONSTANT;
}
if (utils::strmatch(style, "^wall/morse")) {
if (utils::strmatch(arg[iarg + 3], "^v_")) {
astr[nwall] = utils::strdup(arg[iarg + 3] + 2);
astyle[nwall] = VARIABLE;
} else {
alpha[nwall] = utils::numeric(FLERR, arg[iarg + 3], false, lmp);
astyle[nwall] = CONSTANT;
}
// adjust so we can share the regular code path
++iarg;
--wantargs;
}
cutoff[nwall] = utils::numeric(FLERR,arg[iarg+4],false,lmp);
if (utils::strmatch(arg[iarg + 3], "^v_")) {
sstr[nwall] = utils::strdup(arg[iarg + 3] + 2);
sstyle[nwall] = VARIABLE;
} else {
sigma[nwall] = utils::numeric(FLERR, arg[iarg + 3], false, lmp);
sstyle[nwall] = CONSTANT;
}
cutoff[nwall] = utils::numeric(FLERR, arg[iarg + 4], false, lmp);
}
nwall++;
iarg += 5;
} else if (strcmp(arg[iarg],"units") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall command");
if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0;
else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1;
else error->all(FLERR,"Illegal fix wall command");
iarg += wantargs;
} else if (strcmp(arg[iarg], "units") == 0) {
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix {} command", style);
if (strcmp(arg[iarg + 1], "box") == 0)
scaleflag = 0;
else if (strcmp(arg[iarg + 1], "lattice") == 0)
scaleflag = 1;
else
error->all(FLERR, "Illegal fix {} command", style);
iarg += 2;
} else if (strcmp(arg[iarg],"fld") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall command");
fldflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
} else if (strcmp(arg[iarg], "fld") == 0) {
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix {} command", style);
fldflag = utils::logical(FLERR, arg[iarg + 1], false, lmp);
iarg += 2;
} else if (strcmp(arg[iarg],"pbc") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix wall command");
pbcflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
} else if (strcmp(arg[iarg], "pbc") == 0) {
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix {} command", style);
pbcflag = utils::logical(FLERR, arg[iarg + 1], false, lmp);
iarg += 2;
} else error->all(FLERR,"Illegal fix wall command");
} else
error->all(FLERR, "Illegal fix {} command", style);
}
size_vector = nwall;
// error checks
if (nwall == 0) error->all(FLERR,"Illegal fix wall command");
for (int m = 0; m < nwall; m++)
if (nwall == 0) error->all(FLERR, "Illegal fix {} command: no walls defined", style);
for (int m = 0; m < nwall; m++) {
if (cutoff[m] <= 0.0)
error->all(FLERR,"Fix wall cutoff <= 0.0");
error->all(FLERR, "Fix {} cutoff <= 0.0 for {} wall", style, wallpos[wallwhich[m]]);
}
for (int m = 0; m < nwall; m++)
if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->dimension == 2)
error->all(FLERR,"Cannot use fix wall zlo/zhi for a 2d simulation");
error->all(FLERR, "Cannot use fix {} zlo/zhi for a 2d simulation", style);
if (!pbcflag) {
for (int m = 0; m < nwall; m++) {
if ((wallwhich[m] == XLO || wallwhich[m] == XHI) && domain->xperiodic)
error->all(FLERR,"Cannot use fix wall in periodic dimension");
error->all(FLERR, "Cannot use {} wall in periodic x dimension", wallpos[wallwhich[m]]);
if ((wallwhich[m] == YLO || wallwhich[m] == YHI) && domain->yperiodic)
error->all(FLERR,"Cannot use fix wall in periodic dimension");
error->all(FLERR, "Cannot use {} wall in periodic y dimension", wallpos[wallwhich[m]]);
if ((wallwhich[m] == ZLO || wallwhich[m] == ZHI) && domain->zperiodic)
error->all(FLERR,"Cannot use fix wall in periodic dimension");
error->all(FLERR, "Cannot use {} wall in periodic z dimension", wallpos[wallwhich[m]]);
}
}
@ -172,14 +205,17 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
xscale = domain->lattice->xlattice;
yscale = domain->lattice->ylattice;
zscale = domain->lattice->zlattice;
}
else xscale = yscale = zscale = 1.0;
} else
xscale = yscale = zscale = 1.0;
for (int m = 0; m < nwall; m++) {
if (xstyle[m] != CONSTANT) continue;
if (wallwhich[m] < YLO) coord0[m] *= xscale;
else if (wallwhich[m] < ZLO) coord0[m] *= yscale;
else coord0[m] *= zscale;
if (wallwhich[m] < YLO)
coord0[m] *= xscale;
else if (wallwhich[m] < ZLO)
coord0[m] *= yscale;
else
coord0[m] *= zscale;
}
}
@ -191,8 +227,10 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) :
for (int m = 0; m < nwall; m++) {
if (xstyle[m] == VARIABLE) xflag = 1;
if (xflag || estyle[m] == VARIABLE || sstyle[m] == VARIABLE) varflag = 1;
if (estyle[m] == VARIABLE || sstyle[m] == VARIABLE) wstyle[m] = VARIABLE;
else wstyle[m] = CONSTANT;
if (estyle[m] == VARIABLE || sstyle[m] == VARIABLE)
wstyle[m] = VARIABLE;
else
wstyle[m] = CONSTANT;
}
eflag = 0;
@ -206,9 +244,12 @@ FixWall::~FixWall()
if (copymode) return;
for (int m = 0; m < nwall; m++) {
delete [] xstr[m];
delete [] estr[m];
delete [] sstr[m];
delete[] xstr[m];
delete[] estr[m];
delete[] sstr[m];
delete[] lstr[m];
delete[] fstr[m];
delete[] kstr[m];
}
}
@ -220,8 +261,10 @@ int FixWall::setmask()
// FLD implicit needs to invoke wall forces before pair style
if (fldflag) mask |= PRE_FORCE;
else mask |= POST_FORCE;
if (fldflag)
mask |= PRE_FORCE;
else
mask |= POST_FORCE;
mask |= POST_FORCE_RESPA;
mask |= MIN_POST_FORCE;
@ -235,24 +278,21 @@ void FixWall::init()
for (int m = 0; m < nwall; m++) {
if (xstyle[m] == VARIABLE) {
xindex[m] = input->variable->find(xstr[m]);
if (xindex[m] < 0)
error->all(FLERR,"Variable name for fix wall does not exist");
if (xindex[m] < 0) error->all(FLERR, "Variable name for fix wall does not exist");
if (!input->variable->equalstyle(xindex[m]))
error->all(FLERR,"Variable for fix wall is invalid style");
error->all(FLERR, "Variable for fix wall is invalid style");
}
if (estyle[m] == VARIABLE) {
eindex[m] = input->variable->find(estr[m]);
if (eindex[m] < 0)
error->all(FLERR,"Variable name for fix wall does not exist");
if (eindex[m] < 0) error->all(FLERR, "Variable name for fix wall does not exist");
if (!input->variable->equalstyle(eindex[m]))
error->all(FLERR,"Variable for fix wall is invalid style");
error->all(FLERR, "Variable for fix wall is invalid style");
}
if (sstyle[m] == VARIABLE) {
sindex[m] = input->variable->find(sstr[m]);
if (sindex[m] < 0)
error->all(FLERR,"Variable name for fix wall does not exist");
if (sindex[m] < 0) error->all(FLERR, "Variable name for fix wall does not exist");
if (!input->variable->equalstyle(sindex[m]))
error->all(FLERR,"Variable for fix wall is invalid style");
error->all(FLERR, "Variable for fix wall is invalid style");
}
}
@ -260,9 +300,9 @@ void FixWall::init()
for (int m = 0; m < nwall; m++) precompute(m);
if (utils::strmatch(update->integrate_style,"^respa")) {
ilevel_respa = (dynamic_cast<Respa *>(update->integrate))->nlevels-1;
if (respa_level >= 0) ilevel_respa = MIN(respa_level,ilevel_respa);
if (utils::strmatch(update->integrate_style, "^respa")) {
ilevel_respa = (dynamic_cast<Respa *>(update->integrate))->nlevels - 1;
if (respa_level >= 0) ilevel_respa = MIN(respa_level, ilevel_respa);
}
}
@ -270,11 +310,11 @@ void FixWall::init()
void FixWall::setup(int vflag)
{
if (utils::strmatch(update->integrate_style,"^verlet")) {
if (utils::strmatch(update->integrate_style, "^verlet")) {
if (!fldflag) post_force(vflag);
} else {
(dynamic_cast<Respa *>(update->integrate))->copy_flevel_f(ilevel_respa);
post_force_respa(vflag,ilevel_respa,0);
post_force_respa(vflag, ilevel_respa, 0);
(dynamic_cast<Respa *>(update->integrate))->copy_f_flevel(ilevel_respa);
}
}
@ -319,25 +359,27 @@ void FixWall::post_force(int vflag)
for (int m = 0; m < nwall; m++) {
if (xstyle[m] == VARIABLE) {
coord = input->variable->compute_equal(xindex[m]);
if (wallwhich[m] < YLO) coord *= xscale;
else if (wallwhich[m] < ZLO) coord *= yscale;
else coord *= zscale;
} else coord = coord0[m];
if (wallwhich[m] < YLO)
coord *= xscale;
else if (wallwhich[m] < ZLO)
coord *= yscale;
else
coord *= zscale;
} else
coord = coord0[m];
if (wstyle[m] == VARIABLE) {
if (estyle[m] == VARIABLE) {
epsilon[m] = input->variable->compute_equal(eindex[m]);
if (epsilon[m] < 0.0)
error->all(FLERR,"Variable evaluation in fix wall gave bad value");
if (epsilon[m] < 0.0) error->all(FLERR, "Variable evaluation in fix wall gave bad value");
}
if (sstyle[m] == VARIABLE) {
sigma[m] = input->variable->compute_equal(sindex[m]);
if (sigma[m] < 0.0)
error->all(FLERR,"Variable evaluation in fix wall gave bad value");
if (sigma[m] < 0.0) error->all(FLERR, "Variable evaluation in fix wall gave bad value");
}
precompute(m);
}
wall_particle(m,wallwhich[m],coord);
wall_particle(m, wallwhich[m], coord);
}
if (varflag) modify->addstep_compute(update->ntimestep + 1);
@ -366,7 +408,7 @@ double FixWall::compute_scalar()
// only sum across procs one time
if (eflag == 0) {
MPI_Allreduce(ewall,ewall_all,nwall+1,MPI_DOUBLE,MPI_SUM,world);
MPI_Allreduce(ewall, ewall_all, nwall + 1, MPI_DOUBLE, MPI_SUM, world);
eflag = 1;
}
return ewall_all[0];
@ -381,8 +423,8 @@ double FixWall::compute_vector(int n)
// only sum across procs one time
if (eflag == 0) {
MPI_Allreduce(ewall,ewall_all,nwall+1,MPI_DOUBLE,MPI_SUM,world);
MPI_Allreduce(ewall, ewall_all, nwall + 1, MPI_DOUBLE, MPI_SUM, world);
eflag = 1;
}
return ewall_all[n+1];
return ewall_all[n + 1];
}

View File

@ -50,8 +50,8 @@ class FixWall : public Fix {
double xscale, yscale, zscale;
int estyle[6], sstyle[6], astyle[6], wstyle[6];
int eindex[6], sindex[6];
char *estr[6], *sstr[6], *astr[6];
int varflag; // 1 if any wall position,epsilon,sigma is a var
char *estr[6], *sstr[6], *astr[6], *lstr[6], *fstr[6], *kstr[6];
int varflag; // 1 if any wall position,epsilon,sigma is a variable
int eflag; // per-wall flag for energy summation
int ilevel_respa;
int fldflag;

View File

@ -16,7 +16,6 @@
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */

View File

@ -18,7 +18,6 @@
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */

View File

@ -18,7 +18,6 @@
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */

View File

@ -18,7 +18,6 @@
#include <cmath>
using namespace LAMMPS_NS;
using namespace FixConst;
/* ---------------------------------------------------------------------- */
@ -72,7 +71,7 @@ void FixWallMorse::wall_particle(int m, int which, double coord)
}
double dr = delta - sigma[m];
double dexp = exp(-alpha[m] * dr);
fwall = side * coeff1[m] * (dexp * dexp - dexp) / delta;
fwall = side * coeff1[m] * (dexp * dexp - dexp);
ewall[0] += epsilon[m] * (dexp * dexp - 2.0 * dexp) - offset[m];
f[i][dim] -= fwall;
ewall[m + 1] += fwall;

472
src/fix_wall_table.cpp Normal file
View File

@ -0,0 +1,472 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include "fix_wall_table.h"
#include "atom.h"
#include "comm.h"
#include "error.h"
#include "memory.h"
#include "table_file_reader.h"
#include "tokenizer.h"
#include <cstring>
using namespace LAMMPS_NS;
enum { NONE, LINEAR, SPLINE };
static constexpr double BIGNUM = 1.0e300;
/* ---------------------------------------------------------------------- */
FixWallTable::FixWallTable(LAMMPS *lmp, int narg, char **arg) :
FixWall(lmp, narg, arg), tables(nullptr)
{
dynamic_group_allow = 1;
tabstyle = NONE;
if (strcmp(arg[3], "linear") == 0)
tabstyle = LINEAR;
else if (strcmp(arg[3], "spline") == 0)
tabstyle = SPLINE;
else
error->all(FLERR, "Unknown table style {} in fix {}", arg[3], style);
tablength = utils::inumeric(FLERR, arg[4], false, lmp);
if (tablength < 2) error->all(FLERR, "Illegal number of fix {} table entries", style);
}
/* ---------------------------------------------------------------------- */
void FixWallTable::post_constructor()
{
memory->sfree(tables);
tables = (Table *) memory->smalloc(nwall * sizeof(Table), "wall:tables");
for (int m = 0; m < nwall; ++m) {
Table &tb = tables[m];
null_table(tb);
if (comm->me == 0) read_table(tb, fstr[m], kstr[m]);
bcast_table(tb);
// error check on table parameters
if (tb.ninput <= 1) error->all(FLERR, "Invalid fix {} table length: {}", style, tb.ninput);
tb.lo = tb.rfile[0];
tb.hi = tb.rfile[tb.ninput - 1];
if (tb.lo >= tb.hi) error->all(FLERR, "Fix {} table distance values do not increase", style);
if (cutoff[m] > tb.hi)
error->all(FLERR, "Fix {} wall cutoff {} is larger than table outer cutoff {}", style,
cutoff[m], tb.hi);
// spline read-in data and compute r,e,f arrays within table
spline_table(tb);
compute_table(tb);
}
}
/* ---------------------------------------------------------------------- */
FixWallTable::~FixWallTable()
{
for (int m = 0; m < nwall; m++) free_table(tables[m]);
memory->sfree(tables);
}
/* ----------------------------------------------------------------------
compute the potential energy offset so it can be shifted to zero at the cutoff
------------------------------------------------------------------------- */
void FixWallTable::precompute(int m)
{
double u, mdu;
// always use linear interpolation to determine the offset, since we may be at the
// outer table cutoff and spline interpolation would cause out-of-bounds array accesses
int savedtabstyle = tabstyle;
tabstyle = LINEAR;
uf_lookup(m, cutoff[m], u, mdu);
offset[m] = u;
tabstyle = savedtabstyle;
}
/* ----------------------------------------------------------------------
interaction of all particles in group with a wall
m = index of wall coeffs
which = xlo,xhi,ylo,yhi,zlo,zhi
error if any particle is on or behind wall
------------------------------------------------------------------------- */
void FixWallTable::wall_particle(int m, int which, double coord)
{
double delta, fwall, vn, u, mdu;
double **x = atom->x;
double **f = atom->f;
int *mask = atom->mask;
int nlocal = atom->nlocal;
int dim = which / 2;
int side = which % 2;
if (side == 0) side = -1;
int onflag = 0;
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
if (side < 0)
delta = x[i][dim] - coord;
else
delta = coord - x[i][dim];
if (delta >= cutoff[m]) continue;
if (delta <= 0.0) {
onflag = 1;
continue;
}
uf_lookup(m, delta, u, mdu);
fwall = side * mdu;
f[i][dim] -= fwall;
ewall[0] += u - offset[m];
ewall[m + 1] += fwall;
if (evflag) {
if (side < 0)
vn = -fwall * delta;
else
vn = fwall * delta;
v_tally(dim, i, vn);
}
}
if (onflag) error->one(FLERR, "Particle on or inside fix {} surface", style);
}
/* ---------------------------------------------------------------------- */
void FixWallTable::null_table(Table &tb)
{
tb.rfile = tb.efile = tb.ffile = nullptr;
tb.e2file = tb.f2file = nullptr;
tb.r = tb.e = tb.de = nullptr;
tb.f = tb.df = tb.e2 = tb.f2 = nullptr;
}
/* ---------------------------------------------------------------------- */
void FixWallTable::free_table(Table &tb)
{
memory->destroy(tb.rfile);
memory->destroy(tb.efile);
memory->destroy(tb.ffile);
memory->destroy(tb.e2file);
memory->destroy(tb.f2file);
memory->destroy(tb.r);
memory->destroy(tb.e);
memory->destroy(tb.de);
memory->destroy(tb.f);
memory->destroy(tb.df);
memory->destroy(tb.e2);
memory->destroy(tb.f2);
}
/* ---------------------------------------------------------------------- */
void FixWallTable::read_table(Table &tb, const std::string &tabfile, const std::string &keyword)
{
TableFileReader reader(lmp, tabfile, "fix wall/table");
char *line = reader.find_section_start(keyword);
if (!line) error->one(FLERR, "Did not find keyword {} in table file", keyword);
// read args on 2nd line of section
// allocate table arrays for file values
line = reader.next_line();
param_extract(tb, line);
memory->create(tb.rfile, tb.ninput, "wall:rfile");
memory->create(tb.efile, tb.ninput, "wall:efile");
memory->create(tb.ffile, tb.ninput, "wall:ffile");
// read r,e,f table values from file
reader.skip_line();
for (int i = 0; i < tb.ninput; i++) {
line = reader.next_line();
if (!line)
error->one(FLERR, "Data missing when parsing wall table '{}' line {} of {}.", keyword, i + 1,
tb.ninput);
try {
ValueTokenizer values(line);
values.next_int();
tb.rfile[i] = values.next_double();
tb.efile[i] = values.next_double();
tb.ffile[i] = values.next_double();
} catch (TokenizerException &e) {
error->one(FLERR, "Error parsing wall table '{}' line {} of {}. {}\nLine was: {}", keyword,
i + 1, tb.ninput, e.what(), line);
}
}
// warn if force != dE/dr at any point that is not an inflection point
// check via secant approximation to dE/dr
// skip two end points since do not have surrounding secants
// inflection point is where curvature changes sign
double r, e, f, rprev, rnext, eprev, enext, fleft, fright;
int ferror = 0;
for (int i = 1; i < tb.ninput - 1; i++) {
r = tb.rfile[i];
rprev = tb.rfile[i - 1];
rnext = tb.rfile[i + 1];
e = tb.efile[i];
eprev = tb.efile[i - 1];
enext = tb.efile[i + 1];
f = tb.ffile[i];
fleft = -(e - eprev) / (r - rprev);
fright = -(enext - e) / (rnext - r);
if (f < fleft && f < fright) ferror++;
if (f > fleft && f > fright) ferror++;
}
if (ferror)
error->warning(FLERR,
"{} of {} force values in table are inconsistent with -dE/dr.\n"
"WARNING: Should only be flagged at inflection points",
ferror, tb.ninput);
}
/* ----------------------------------------------------------------------
build spline representation of e,f over entire range of read-in table
this function sets these values in e2file,f2file
------------------------------------------------------------------------- */
void FixWallTable::spline_table(Table &tb)
{
memory->create(tb.e2file, tb.ninput, "wall:e2file");
memory->create(tb.f2file, tb.ninput, "wall:f2file");
double ep0 = -tb.ffile[0];
double epn = -tb.ffile[tb.ninput - 1];
spline(tb.rfile, tb.efile, tb.ninput, ep0, epn, tb.e2file);
if (tb.fpflag == 0) {
tb.fplo = (tb.ffile[1] - tb.ffile[0]) / (tb.rfile[1] - tb.rfile[0]);
tb.fphi = (tb.ffile[tb.ninput - 1] - tb.ffile[tb.ninput - 2]) /
(tb.rfile[tb.ninput - 1] - tb.rfile[tb.ninput - 2]);
}
double fp0 = tb.fplo;
double fpn = tb.fphi;
spline(tb.rfile, tb.ffile, tb.ninput, fp0, fpn, tb.f2file);
}
/* ----------------------------------------------------------------------
compute r,e,f vectors from splined values
------------------------------------------------------------------------- */
void FixWallTable::compute_table(Table &tb)
{
// delta = table spacing for N-1 bins
int tlm1 = tablength - 1;
tb.delta = (tb.hi - tb.lo) / tlm1;
tb.invdelta = 1.0 / tb.delta;
tb.deltasq6 = tb.delta * tb.delta / 6.0;
// N-1 evenly spaced bins in r from min to max
// r,e,f = value at lower edge of bin
// de,df values = delta values of e,f
// r,e,f are N in length so de,df arrays can compute difference
memory->create(tb.r, tablength, "wall:r");
memory->create(tb.e, tablength, "wall:e");
memory->create(tb.de, tablength, "wall:de");
memory->create(tb.f, tablength, "wall:f");
memory->create(tb.df, tablength, "wall:df");
memory->create(tb.e2, tablength, "wall:e2");
memory->create(tb.f2, tablength, "wall:f2");
double a;
for (int i = 0; i < tablength; i++) {
a = tb.lo + i * tb.delta;
tb.r[i] = a;
tb.e[i] = splint(tb.rfile, tb.efile, tb.e2file, tb.ninput, a);
tb.f[i] = splint(tb.rfile, tb.ffile, tb.f2file, tb.ninput, a);
}
for (int i = 0; i < tlm1; i++) {
tb.de[i] = tb.e[i + 1] - tb.e[i];
tb.df[i] = tb.f[i + 1] - tb.f[i];
}
// get final elements from linear extrapolation
tb.de[tlm1] = 2.0 * tb.de[tlm1 - 1] - tb.de[tlm1 - 2];
tb.df[tlm1] = 2.0 * tb.df[tlm1 - 1] - tb.df[tlm1 - 2];
double ep0 = -tb.f[0];
double epn = -tb.f[tlm1];
spline(tb.r, tb.e, tablength, ep0, epn, tb.e2);
spline(tb.r, tb.f, tablength, tb.fplo, tb.fphi, tb.f2);
}
/* ----------------------------------------------------------------------
extract attributes from parameter line in table section
format of line: N value FP fplo fphi
N is required, other params are optional
------------------------------------------------------------------------- */
void FixWallTable::param_extract(Table &tb, char *line)
{
tb.ninput = 0;
tb.fpflag = 0;
try {
ValueTokenizer values(line);
while (values.has_next()) {
std::string word = values.next_string();
if (word == "N") {
tb.ninput = values.next_int();
} else if (word == "FP") {
tb.fpflag = 1;
tb.fplo = values.next_double();
tb.fphi = values.next_double();
} else {
error->one(FLERR, "Invalid keyword {} in fix {} table parameters", word, style);
}
}
} catch (TokenizerException &e) {
error->one(FLERR, e.what());
}
if (tb.ninput == 0) error->one(FLERR, "Fix {} parameters did not set N", style);
}
/* ----------------------------------------------------------------------
broadcast read-in table info from proc 0 to other procs
this function communicates these values in Table:
ninput,rfile,efile,ffile,fpflag,fplo,fphi
------------------------------------------------------------------------- */
void FixWallTable::bcast_table(Table &tb)
{
MPI_Bcast(&tb.ninput, 1, MPI_INT, 0, world);
if (comm->me > 0) {
memory->create(tb.rfile, tb.ninput, "wall:rfile");
memory->create(tb.efile, tb.ninput, "wall:efile");
memory->create(tb.ffile, tb.ninput, "wall:ffile");
}
MPI_Bcast(tb.rfile, tb.ninput, MPI_DOUBLE, 0, world);
MPI_Bcast(tb.efile, tb.ninput, MPI_DOUBLE, 0, world);
MPI_Bcast(tb.ffile, tb.ninput, MPI_DOUBLE, 0, world);
MPI_Bcast(&tb.fpflag, 1, MPI_INT, 0, world);
if (tb.fpflag) {
MPI_Bcast(&tb.fplo, 1, MPI_DOUBLE, 0, world);
MPI_Bcast(&tb.fphi, 1, MPI_DOUBLE, 0, world);
}
}
/* ----------------------------------------------------------------------
spline and splint routines modified from Numerical Recipes
------------------------------------------------------------------------- */
void FixWallTable::spline(double *x, double *y, int n, double yp1, double ypn, double *y2)
{
int i, k;
double p, qn, sig, un;
auto u = new double[n];
if (yp1 > BIGNUM)
y2[0] = u[0] = 0.0;
else {
y2[0] = -0.5;
u[0] = (3.0 / (x[1] - x[0])) * ((y[1] - y[0]) / (x[1] - x[0]) - yp1);
}
for (i = 1; i < n - 1; i++) {
sig = (x[i] - x[i - 1]) / (x[i + 1] - x[i - 1]);
p = sig * y2[i - 1] + 2.0;
y2[i] = (sig - 1.0) / p;
u[i] = (y[i + 1] - y[i]) / (x[i + 1] - x[i]) - (y[i] - y[i - 1]) / (x[i] - x[i - 1]);
u[i] = (6.0 * u[i] / (x[i + 1] - x[i - 1]) - sig * u[i - 1]) / p;
}
if (ypn > BIGNUM)
qn = un = 0.0;
else {
qn = 0.5;
un = (3.0 / (x[n - 1] - x[n - 2])) * (ypn - (y[n - 1] - y[n - 2]) / (x[n - 1] - x[n - 2]));
}
y2[n - 1] = (un - qn * u[n - 2]) / (qn * y2[n - 2] + 1.0);
for (k = n - 2; k >= 0; k--) y2[k] = y2[k] * y2[k + 1] + u[k];
delete[] u;
}
/* ---------------------------------------------------------------------- */
double FixWallTable::splint(double *xa, double *ya, double *y2a, int n, double x)
{
int klo, khi, k;
double h, b, a, y;
klo = 0;
khi = n - 1;
while (khi - klo > 1) {
k = (khi + klo) >> 1;
if (xa[k] > x)
khi = k;
else
klo = k;
}
h = xa[khi] - xa[klo];
a = (xa[khi] - x) / h;
b = (x - xa[klo]) / h;
y = a * ya[klo] + b * ya[khi] +
((a * a * a - a) * y2a[klo] + (b * b * b - b) * y2a[khi]) * (h * h) / 6.0;
return y;
}
/* ----------------------------------------------------------------------
calculate potential u and force f at distance x
ensure x is between wall min/max, exit with error if not
------------------------------------------------------------------------- */
void FixWallTable::uf_lookup(int m, double x, double &u, double &f)
{
double fraction, a, b;
const Table &tb = tables[m];
const int itable = static_cast<int>((x - tb.lo) * tb.invdelta);
if (itable < 0)
error->one(FLERR, "Particle / wall distance < table inner cutoff: {:.8}", x);
else if (itable >= tablength)
error->one(FLERR, "Particle / wall distance > table outer cutoff: {:.8}", x);
if (tabstyle == LINEAR) {
fraction = (x - tb.r[itable]) * tb.invdelta;
u = tb.e[itable] + fraction * tb.de[itable];
f = tb.f[itable] + fraction * tb.df[itable];
} else if (tabstyle == SPLINE) {
fraction = (x - tb.r[itable]) * tb.invdelta;
b = (x - tb.r[itable]) * tb.invdelta;
a = 1.0 - b;
u = a * tb.e[itable] + b * tb.e[itable + 1] +
((a * a * a - a) * tb.e2[itable] + (b * b * b - b) * tb.e2[itable + 1]) * tb.deltasq6;
f = a * tb.f[itable] + b * tb.f[itable + 1] +
((a * a * a - a) * tb.f2[itable] + (b * b * b - b) * tb.f2[itable + 1]) * tb.deltasq6;
}
}

67
src/fix_wall_table.h Normal file
View File

@ -0,0 +1,67 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef FIX_CLASS
// clang-format off
FixStyle(wall/table,FixWallTable);
// clang-format on
#else
#ifndef LMP_FIX_WALL_TABLE_H
#define LMP_FIX_WALL_TABLE_H
#include "fix_wall.h"
namespace LAMMPS_NS {
class FixWallTable : public FixWall {
public:
FixWallTable(class LAMMPS *, int, char **);
~FixWallTable() override;
void post_constructor() override;
void precompute(int) override;
void wall_particle(int, int, double) override;
protected:
double offset[6];
int tabstyle, tablength;
struct Table {
int ninput, fpflag;
double fplo, fphi;
double lo, hi;
double *rfile, *efile, *ffile;
double *e2file, *f2file;
double delta, invdelta, deltasq6;
double *r, *e, *de, *f, *df, *e2, *f2;
};
Table *tables;
void null_table(Table &);
void free_table(Table &);
void read_table(Table &, const std::string &, const std::string &);
void bcast_table(Table &);
void spline_table(Table &);
void compute_table(Table &);
void param_extract(Table &, char *);
void spline(double *, double *, int, double, double, double *);
double splint(double *, double *, double *, int, double);
void uf_lookup(int, double, double &, double &);
};
} // namespace LAMMPS_NS
#endif
#endif

View File

@ -6,13 +6,14 @@ table, and angle style table
To create tables, you need to define your energy and - optionally -
force functions and then an instance of either the PairTabulate(),
BondTabulate(), AngleTabulate(), or DihedralTabulate() class from the
tabulate module and call its run() method to generate the table. Most
of the settings (number of points, minimum, maximum etc.) are provided
as command line flags. The run() method may be called multiple times to
generate multiple tables, for instance after changing parameters of the
energy/force functions. If the force function is not provided, the
force will be determined through numerical differentiation.
BondTabulate(), AngleTabulate(), DihedralTabulate(), or WallTabulate()
class from the tabulate module and call its run() method to generate the
table. Most of the settings (number of points, minimum, maximum etc.)
are provided as command line flags. The run() method may be called
multiple times to generate multiple tables, for instance after changing
parameters of the energy/force functions. If the force function is not
provided, the force will be determined from the energy function through
numerical differentiation.
Please see the individual tabulation scripts in this folder for examples:
@ -24,7 +25,8 @@ Please see the individual tabulation scripts in this folder for examples:
| angle_harmonic_tabulate.py | creates a table for a harmonic angle potential table |
| dihedral_harmonic_tabulate.py | creates a table for a harmonic dihedral potential table |
| pair_hybrid_tabulate.py | creates a Morse/Lennard-Jones hybrid potential table with smooth switching |
| pair_zbladd_tabulate.py | creates a table for hybrid/overlay to use ZBL repulsion with an EAM potential |
| wall_harmonic_tabulate.py | creates a table for fix wall/table with a simple repulsive harmonic potential |
| wall_multi_tabulate.py | creates a table for fix wall/table with multiple tables |
| ------------------------------|-------------------------------------------------------------------------------|
Common command line flags:

View File

@ -279,6 +279,53 @@ class DihedralTabulate(Tabulate):
if self.args.filename != '-':
self.fp.close()
################################################################################
# create tabulation for fix wall/table
class WallTabulate(Tabulate):
def __init__(self, efunc, ffunc=None, units=None, comment=None):
super(WallTabulate, self).__init__('wall', efunc, ffunc, units, comment)
self.parser.add_argument('--eshift', '-e', dest='eshift', default=False,
action='store_true',
help="Shift potential energy to be zero at outer cutoff")
idx = [a.dest for a in self.parser._actions].index('xmin')
self.parser._actions[idx].required=False
self.parser._actions[idx].default=0.0
try:
self.args = self.parser.parse_args()
except argparse.ArgumentError:
sys.exit()
def run(self, label):
# sanity checks
if self.args.num < 2:
self.helpexit('Expect 2 or more points in table for tabulation')
if self.args.xmin < 0.0:
self.helpexit('Inner cutoff must not be negative')
self.diff = self.args.diff
if not self.forcefunc:
self.diff = True
table, xzero = mktable(self.tstyle, label, self.args.num, self.args.xmin, self.args.xmax,
self.energyfunc, self.args.diff, self.forcefunc)
print("# Minimum energy of tabulated potential is at %g" % xzero)
offset = 0.0
if self.args.eshift:
offset=self.energyfunc(self.args.xmax)
self.openfile(label)
if self.forcefunc:
diffmin = -numdiff(self.args.xmin, self.forcefunc)
diffmax = -numdiff(self.args.xmax, self.forcefunc)
self.fp.write("N %d FP %- 22.15g %- 22.15g\n\n" % (self.args.num, diffmin, diffmax))
else:
self.fp.write("N %d\n\n" % (self.args.num))
self.writetable(table, offset)
if self.args.filename != '-':
self.fp.close()
################################################################################
if __name__ == "__main__":
sys.exit("The tabulate module is not meant to be executed directly")

View File

@ -0,0 +1,25 @@
#!/usr/bin/env python
from tabulate import WallTabulate
################################################################################
import math
k = 100.0
rzero = 4.0
def harmonic_force(r):
dr = r - rzero
f = -2.0 * k * dr
return f
def harmonic_energy(r):
dr = r - rzero
f = k * dr * dr
return f
################################################################################
if __name__ == "__main__":
wtable = WallTabulate(harmonic_energy, harmonic_force, units='real')
wtable.run('HARMONIC')

View File

@ -0,0 +1,64 @@
#!/usr/bin/env python
from tabulate import WallTabulate
import os, sys
################################################################################
import math
k = 100.0
rzero = 4.0
epsilon = 0.02
sigma = 2.0
depth = 20.0
width = 2.0
r0 = 1.2
def harmonic_force(r):
dr = r - rzero
f = -2.0 * k * dr
return f
def harmonic_energy(r):
dr = r - rzero
f = k * dr * dr
return f
def lj126_force(r):
f = -4.0*epsilon*(-12.0*math.pow(sigma/r,12.0)/r + 6.0*math.pow(sigma/r,6.0)/r)
return f
def lj126_energy(r):
f = 4.0*epsilon*(math.pow(sigma/r,12.0) - math.pow(sigma/r,6.0))
return f
def morse_energy(r):
ralpha = math.exp(-width*(r-r0))
f = depth * (-1.0 + (1.0 - ralpha) * (1.0 - ralpha))
return f
def morse_force(r):
ralpha = math.exp(-width*(r-r0))
f = -2.0 * depth * width * (1.0 -ralpha) * ralpha
return f
################################################################################
if __name__ == "__main__":
fname = 'walltab.dat'
if os.path.exists(fname):
os.remove(fname)
sys.argv.append('--filename')
sys.argv.append(fname)
sys.argv.append('--num-points')
sys.argv.append('400')
sys.argv.append('--inner')
sys.argv.append('0.01')
sys.argv.append('--outer')
sys.argv.append('4.0')
wtable = WallTabulate(harmonic_energy, harmonic_force, units='real')
wtable.run('HARMONIC')
wtable = WallTabulate(lj126_energy, lj126_force, units='real')
wtable.run('LJ126')
wtable = WallTabulate(morse_energy, morse_force, units='real')
wtable.run('MORSE')

View File

@ -0,0 +1,82 @@
---
lammps_version: 8 Feb 2023
date_generated: Thu Feb 23 00:40:51 2023
epsilon: 4e-14
skip_tests:
prerequisites: ! |
atom full
fix wall/lepton
pre_commands: ! |
boundary p f p
post_commands: ! |
fix move all nve
fix test solute wall/lepton ylo EDGE "k*(r-rc)^2;k=100.0" 5.0 yhi EDGE "k*(r-rc)^2;k=100.0" 5.0
fix_modify test virial yes
input_file: in.fourmol
natoms: 29
run_stress: ! |2-
0.0000000000000000e+00 -7.2422093200265749e+02 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
global_scalar: 42.69977443532441
global_vector: ! |-
2 0 -161.92409617466126
run_pos: ! |2
1 -2.7051715090682593e-01 2.4891718422041942e+00 -1.6687343912524535e-01
2 3.1037661579862175e-01 2.9347166386691113e+00 -8.5496435221221156e-01
3 -7.0402515865264603e-01 1.2304739304383521e+00 -6.2777422080240730e-01
4 -1.5818156002522876e+00 1.4837443919066966e+00 -1.2538703954644463e+00
5 -9.0719963033698159e-01 9.2651871779341399e-01 3.9954137559444142e-01
6 2.4831695467823400e-01 2.8312974957866005e-01 -1.2314232372542311e+00
7 3.4143527599853957e-01 -2.2646552136496162e-02 -2.5292291409504188e+00
8 1.1743552256787158e+00 -4.8863229191571117e-01 -6.3783432834416876e-01
9 1.3800524227031346e+00 -2.5274721005121037e-01 2.8353985882456578e-01
10 2.0510765220197009e+00 -1.4604063740411815e+00 -9.8323745080488900e-01
11 1.7878031944407509e+00 -1.9921863272886073e+00 -1.8890602447598965e+00
12 3.0063007038317027e+00 -4.9013350489718083e-01 -1.6231898106978369e+00
13 4.0515402959160571e+00 -8.9202011606485665e-01 -1.6400005529914481e+00
14 2.6066963345462244e+00 -4.1789253964874307e-01 -2.6634003608727506e+00
15 2.9695287185264685e+00 5.5422613167055734e-01 -1.2342022021669503e+00
16 2.6747029695037297e+00 -2.4124119054292041e+00 -2.3435746152831470e-02
17 2.2153577785010934e+00 -2.0897985186506944e+00 1.1963150794337314e+00
18 2.1369701704267587e+00 3.0158507413153752e+00 -3.5179348337454122e+00
19 1.5355837136075348e+00 2.6255292355297897e+00 -4.2353987779858038e+00
20 2.7727573003201997e+00 3.6923910440705336e+00 -3.9330842459619779e+00
21 4.9040128073837339e+00 -4.0752348170758461e+00 -3.6210314709795299e+00
22 4.3582355554510048e+00 -4.2126119427061379e+00 -4.4612844196307497e+00
23 5.7439382849366911e+00 -3.5821957939240279e+00 -3.8766361295959513e+00
24 2.0689243582618388e+00 3.1513346906720905e+00 3.1550389755134005e+00
25 1.3045351331892774e+00 3.2665125705550957e+00 2.5111855258151388e+00
26 2.5809237402747862e+00 4.0117602605470681e+00 3.2212060529139430e+00
27 -1.9611343130344261e+00 -4.3563411931314180e+00 2.1098293115505782e+00
28 -2.7473562684511403e+00 -4.0200819932374339e+00 1.5830052163432258e+00
29 -1.3126000191357743e+00 -3.5962518039473323e+00 2.2746342468733483e+00
run_vel: ! |2
1 8.0432349631399738e-03 1.4401841389211066e-02 4.9594370365888983e-03
2 6.1330361195047721e-03 -2.0880295268721639e-02 -2.0467529305087918e-03
3 -8.3074380171099371e-03 -1.3074180712034015e-02 -4.0925567431707903e-03
4 -3.7694367867060264e-03 -6.5650784618522711e-03 -1.1170951231990144e-03
5 -1.1026343955717478e-02 -9.8958287307442973e-03 -2.8423479505575396e-03
6 -3.9677127674597606e-02 4.6816039080495052e-02 3.7148638820894170e-02
7 9.1033730239907995e-04 -1.0128528243740664e-02 -5.1568250829251872e-02
8 7.9064772413549398e-03 -3.3507427942055241e-03 3.4557101116794005e-02
9 1.5644169779778431e-03 3.7365552198096001e-03 1.5047408727814703e-02
10 2.9201446825927662e-02 -2.9249578944835361e-02 -1.5018077412006624e-02
11 -4.7835961594766378e-03 -3.7481385002840358e-03 -2.3464104088049835e-03
12 2.2696449755579846e-03 -3.4774139663753189e-04 -3.0640769495163746e-03
13 2.7531740375147718e-03 5.8171061651960147e-03 -7.9467453772151639e-04
14 3.5246182201851889e-03 -5.7939995452846414e-03 -3.9478431035191398e-03
15 -1.8547944555517633e-03 -5.8554729566882438e-03 6.2938485388423842e-03
16 1.8681499934669346e-02 -1.3262466149576239e-02 -4.5638651461858082e-02
17 -1.2896270037715950e-02 9.7527666092669853e-03 3.7296535331498307e-02
18 -8.0065791408039360e-04 -8.6270482947906296e-04 -1.4483041230016354e-03
19 1.2452390812060241e-03 -2.5061097279531195e-03 7.2998631045687393e-03
20 3.5930057934746205e-03 3.6938851526077724e-03 3.2322732077980833e-03
21 -1.4689219756964980e-03 -2.7352107824530941e-04 7.0581625180909957e-04
22 -7.0694199165145339e-03 -4.2577148692717511e-03 2.8079117911325202e-04
23 6.0446963236685169e-03 -1.4000131545098867e-03 2.5819754799379759e-03
24 3.1926371811980193e-04 -9.9445676110986579e-04 1.5000003249577114e-04
25 1.3789762510431792e-04 -4.4335895501596235e-03 -8.1808122106664959e-04
26 2.0485904106950169e-03 2.7813358601316649e-03 4.3245727251785661e-03
27 4.5604120562021738e-04 -1.0305522931717997e-03 2.1188058006115548e-04
28 -6.2544520854975905e-03 1.4127711193315927e-03 -1.8429821890767147e-03
29 6.4110631581209827e-04 3.1273432740202478e-03 3.7253671096581838e-03
...

View File

@ -1,6 +1,6 @@
---
lammps_version: 17 Feb 2022
date_generated: Fri Mar 18 22:18:01 2022
lammps_version: 8 Feb 2023
date_generated: Thu Feb 23 15:26:55 2023
epsilon: 4e-14
skip_tests:
prerequisites: ! |
@ -15,68 +15,68 @@ post_commands: ! |
input_file: in.fourmol
natoms: 29
run_stress: ! |2-
0.0000000000000000e+00 -1.6447328969000660e+03 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
global_scalar: -715.4154062573953
0.0000000000000000e+00 -7.4088044731917480e+03 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
global_scalar: -860.4604684981359
global_vector: ! |-
2 0 -362.76807567062644
2 0 -1661.6917920590186
run_pos: ! |2
1 -2.7045893790409276e-01 2.5008322800634093e+00 -1.6714018607090519e-01
2 3.0963184116147618e-01 3.0014595399936281e+00 -8.5430140686816214e-01
3 -7.0384894984747937e-01 1.2309015375308219e+00 -6.2768436035697617e-01
4 -1.5818176791640250e+00 1.4837231080448017e+00 -1.2538740983093204e+00
5 -9.0718849446796412e-01 9.2653164987898939e-01 3.9954632131545287e-01
6 2.4831839235845354e-01 2.8313265654301789e-01 -1.2314236357880461e+00
7 3.4143526822589915e-01 -2.2646538152574006e-02 -2.5292291434660381e+00
8 1.1743552107695057e+00 -4.8863225989226533e-01 -6.3783434531274807e-01
9 1.3800524241606595e+00 -2.5274721157120961e-01 2.8353985893838241e-01
10 2.0510765222277745e+00 -1.4604063739388657e+00 -9.8323745091734549e-01
11 1.7878031944633563e+00 -1.9921863273237430e+00 -1.8890602447741953e+00
12 3.0063007043413612e+00 -4.9013350523119031e-01 -1.6231898109107055e+00
13 4.0515402959324174e+00 -8.9202011607291531e-01 -1.6400005529969197e+00
14 2.6066963345867493e+00 -4.1789253967796969e-01 -2.6634003609064330e+00
15 2.9695287187403183e+00 5.5422613159536682e-01 -1.2342022022307726e+00
16 2.6747029696074671e+00 -2.4124119055741526e+00 -2.3435746141560052e-02
17 2.2153577786599099e+00 -2.0897985188852957e+00 1.1963150795174466e+00
18 2.1369701703250228e+00 3.0158507415756075e+00 -3.5179348336071414e+00
19 1.5355837136078994e+00 2.6255292355588757e+00 -4.2353987779851296e+00
20 2.7727573003071933e+00 3.6923910440783931e+00 -3.9330842459453148e+00
21 4.9040128073837348e+00 -4.0752348170758461e+00 -3.6210314709795308e+00
22 4.3582355554510048e+00 -4.2126119427061379e+00 -4.4612844196307497e+00
1 -2.7052284503817647e-01 2.5377015779332015e+00 -1.6774875378942034e-01
2 3.0838020114212900e-01 3.1365125714942814e+00 -8.5319486865475569e-01
3 -7.0337031356085378e-01 1.2321701278769190e+00 -6.2734420450713768e-01
4 -1.5818244447736622e+00 1.4836560550089251e+00 -1.2538854411390039e+00
5 -9.0715422690957381e-01 9.2657174436972001e-01 3.9956243697054195e-01
6 2.4832286843402734e-01 2.8314189926636496e-01 -1.2314248449469583e+00
7 3.4143523635211903e-01 -2.2646489955513913e-02 -2.5292291519080385e+00
8 1.1743551641371968e+00 -4.8863216431954298e-01 -6.3783440815706915e-01
9 1.3800524287137592e+00 -2.5274721633920649e-01 2.8353985915157709e-01
10 2.0510765228876604e+00 -1.4604063735798947e+00 -9.8323745129680751e-01
11 1.7878031945360704e+00 -1.9921863274327181e+00 -1.8890602448178007e+00
12 3.0063007058665141e+00 -4.9013350620738022e-01 -1.6231898115581911e+00
13 4.0515402959817353e+00 -8.9202011609685838e-01 -1.6400005530136157e+00
14 2.6066963347079004e+00 -4.1789253976309604e-01 -2.6634003610076054e+00
15 2.9695287193709681e+00 5.5422613138408361e-01 -1.2342022024260366e+00
16 2.6747029699261105e+00 -2.4124119060177067e+00 -2.3435746107727345e-02
17 2.2153577791583658e+00 -2.0897985196245372e+00 1.1963150797810624e+00
18 2.1369701700141044e+00 3.0158507424085670e+00 -3.5179348331855556e+00
19 1.5355837136077577e+00 2.6255292356409377e+00 -4.2353987779789071e+00
20 2.7727573002707873e+00 3.6923910441005812e+00 -3.9330842458985629e+00
21 4.9040128073837366e+00 -4.0752348170758461e+00 -3.6210314709795313e+00
22 4.3582355554510057e+00 -4.2126119427061379e+00 -4.4612844196307497e+00
23 5.7439382849366911e+00 -3.5821957939240279e+00 -3.8766361295959513e+00
24 2.0689243581498653e+00 3.1513346909599651e+00 3.1550389753492256e+00
25 1.3045351329547377e+00 3.2665125707112610e+00 2.5111855254067215e+00
26 2.5809237402542604e+00 4.0117602605530056e+00 3.2212060528871826e+00
27 -1.9611343130419832e+00 -4.3563411931577498e+00 2.1098293115609912e+00
28 -2.7473562684536628e+00 -4.0200819932434282e+00 1.5830052163452875e+00
29 -1.3126000191369560e+00 -3.5962518039526832e+00 2.2746342468757565e+00
24 2.0689243578022922e+00 3.1513346918494771e+00 3.1550389748497025e+00
25 1.3045351322134413e+00 3.2665125712054777e+00 2.5111855241267289e+00
26 2.5809237401898266e+00 4.0117602605713625e+00 3.2212060528040980e+00
27 -1.9611343130657364e+00 -4.3563411932404206e+00 2.1098293115936815e+00
28 -2.7473562684585944e+00 -4.0200819932554426e+00 1.5830052163493729e+00
29 -1.3126000191406215e+00 -3.5962518039692939e+00 2.2746342468831999e+00
run_vel: ! |2
1 8.1789148947012790e-03 2.6011139448739451e-02 4.4419168461127482e-03
2 4.6260716342741079e-03 4.5085766258259774e-02 -7.0825186386967308e-04
3 -7.9721954985889319e-03 -1.2268783977531032e-02 -3.9361845956729386e-03
4 -3.7725559552080636e-03 -6.6074130975376346e-03 -1.1239964478779332e-03
5 -1.1002605235858455e-02 -9.8680015994752728e-03 -2.8327888280266942e-03
6 -3.9674547907414821e-02 4.6822592792817204e-02 3.7148318739351066e-02
7 9.1031746047128470e-04 -1.0128481892033168e-02 -5.1568253048218646e-02
8 7.9064457287878788e-03 -3.3506582863990068e-03 3.4557045247921400e-02
9 1.5644208034781776e-03 3.7365512668284797e-03 1.5047408581112285e-02
10 2.9201446942760539e-02 -2.9249577856792598e-02 -1.5018077696249433e-02
11 -4.7835960986765723e-03 -3.7481385797508478e-03 -2.3464104367979396e-03
12 2.2696460154049596e-03 -3.4774207770823769e-04 -3.0640773817331617e-03
13 2.7531740760828424e-03 5.8171061464595821e-03 -7.9467455065097717e-04
14 3.5246183046552903e-03 -5.7939996060507011e-03 -3.9478431727489067e-03
15 -1.8547940192371359e-03 -5.8554731130000919e-03 6.2938484079631211e-03
16 1.8681500141579217e-02 -1.3262466439236464e-02 -4.5638651434422119e-02
17 -1.2896269711984213e-02 9.7527661294105131e-03 3.7296535503389051e-02
18 -8.0065813058176056e-04 -8.6270429918499042e-04 -1.4483038312432231e-03
19 1.2452390823893668e-03 -2.5061096678311726e-03 7.2998631081901150e-03
20 3.5930057672106052e-03 3.6938851692874418e-03 3.2322732421069351e-03
21 -1.4689219756942099e-03 -2.7352107824552571e-04 7.0581625180796419e-04
22 -7.0694199165143787e-03 -4.2577148692717762e-03 2.8079117911313845e-04
23 6.0446963236686149e-03 -1.4000131545098178e-03 2.5819754799379282e-03
24 3.1926349353317952e-04 -9.9445617038915342e-04 1.4999970019575790e-04
25 1.3789715718110098e-04 -4.4335892217948255e-03 -8.1808204442383866e-04
26 2.0485903705729164e-03 2.7813358762743667e-03 4.3245726703719217e-03
27 4.5604119012943235e-04 -1.0305523473710114e-03 2.1188060159221209e-04
28 -6.2544520902254328e-03 1.4127711077263102e-03 -1.8429821850450522e-03
29 6.4110631319827462e-04 3.1273432626741622e-03 3.7253671146110553e-03
1 8.1150399525879938e-03 6.2469278935841172e-02 3.3151656604757515e-03
2 2.1567380411534119e-03 1.7915358216757693e-01 1.4693442192945936e-03
3 -7.1017845324814833e-03 -9.9511431531007291e-03 -3.3513817570289613e-03
4 -3.7830796561061893e-03 -6.7399523607674736e-03 -1.1446225458905915e-03
5 -1.0930964471138178e-02 -9.7830218971492900e-03 -2.8011654927760140e-03
6 -3.9666631417159662e-02 4.6843374202377414e-02 3.7147439358181544e-02
7 9.1023281310935661e-04 -1.0128325648562678e-02 -5.1568260731589974e-02
8 7.9063456532381289e-03 -3.3504119308433618e-03 3.4556841455369552e-02
9 1.5644327139035345e-03 3.7365387627339643e-03 1.5047407499366916e-02
10 2.9201447428873879e-02 -2.9249574477797566e-02 -1.5018078715987209e-02
11 -4.7835958975253005e-03 -3.7481388302490464e-03 -2.3464105205019963e-03
12 2.2696491096390347e-03 -3.4774406295422266e-04 -3.0640786872695716e-03
13 2.7531741917975823e-03 5.8171060908898987e-03 -7.9467458985718424e-04
14 3.5246185557631796e-03 -5.7939997826183271e-03 -3.9478433795418670e-03
15 -1.8547927399342281e-03 -5.8554735533316513e-03 6.2938480095073527e-03
16 1.8681500769926061e-02 -1.3262467318026393e-02 -4.5638651349980318e-02
17 -1.2896268698689695e-02 9.7527646273574461e-03 3.7296536040864851e-02
18 -8.0065877706055109e-04 -8.6270259764277839e-04 -1.4483029635571510e-03
19 1.2452390851199488e-03 -2.5061094984920639e-03 7.2998631241499162e-03
20 3.5930056948307956e-03 3.6938852174526323e-03 3.2322733371807980e-03
21 -1.4689219756868180e-03 -2.7352107824634250e-04 7.0581625180429135e-04
22 -7.0694199165138548e-03 -4.2577148692718603e-03 2.8079117911282870e-04
23 6.0446963236688717e-03 -1.4000131545096391e-03 2.5819754799378150e-03
24 3.1926280192234435e-04 -9.9445434351455022e-04 1.4999870519578711e-04
25 1.3789568252928821e-04 -4.4335881727435517e-03 -8.1808460956663540e-04
26 2.0485902447450752e-03 2.7813359267364313e-03 4.3245725007170490e-03
27 4.5604114182182037e-04 -1.0305525160278991e-03 2.1188066858079724e-04
28 -6.2544520979275183e-03 1.4127710874880792e-03 -1.8429821780491747e-03
29 6.4110630514945563e-04 3.1273432277213126e-03 3.7253671297833627e-03
...

View File

@ -0,0 +1,82 @@
---
lammps_version: 8 Feb 2023
date_generated: Thu Feb 23 00:56:30 2023
epsilon: 4e-14
skip_tests:
prerequisites: ! |
atom full
fix wall/table
pre_commands: ! |
boundary p f p
post_commands: ! |
fix move all nve
fix test solute wall/table linear 2000 ylo EDGE ${input_dir}/wall.table HARMONIC 4.0 yhi EDGE ${input_dir}/wall.table HARMONIC 4.0
fix_modify test virial yes
input_file: in.fourmol
natoms: 29
run_stress: ! |2-
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
global_scalar: 0
global_vector: ! |-
2 0 0
run_pos: ! |2
1 -2.7045559775384032e-01 2.4912159905679729e+00 -1.6695851791541888e-01
2 3.1004029573899528e-01 2.9612354631094391e+00 -8.5466363037021464e-01
3 -7.0398551400789477e-01 1.2305509955830618e+00 -6.2777526944456274e-01
4 -1.5818159336499285e+00 1.4837407818929933e+00 -1.2538710836062004e+00
5 -9.0719763672789266e-01 9.2652103885675297e-01 3.9954210488374786e-01
6 2.4831720524855985e-01 2.8313021497871271e-01 -1.2314233331711453e+00
7 3.4143527641386412e-01 -2.2646551041391422e-02 -2.5292291414903052e+00
8 1.1743552229100009e+00 -4.8863228565853950e-01 -6.3783432910825522e-01
9 1.3800524229500313e+00 -2.5274721030406683e-01 2.8353985887095157e-01
10 2.0510765220543883e+00 -1.4604063740302866e+00 -9.8323745081712954e-01
11 1.7878031944442556e+00 -1.9921863272948861e+00 -1.8890602447625777e+00
12 3.0063007039340053e+00 -4.9013350496963298e-01 -1.6231898107386231e+00
13 4.0515402959192999e+00 -8.9202011606653986e-01 -1.6400005529924957e+00
14 2.6066963345543819e+00 -4.1789253965514156e-01 -2.6634003608794394e+00
15 2.9695287185712913e+00 5.5422613165234025e-01 -1.2342022021790127e+00
16 2.6747029695228521e+00 -2.4124119054564295e+00 -2.3435746150616152e-02
17 2.2153577785283796e+00 -2.0897985186907717e+00 1.1963150794479436e+00
18 2.1369701704080528e+00 3.0158507413593689e+00 -3.5179348337197793e+00
19 1.5355837136080202e+00 2.6255292355367410e+00 -4.2353987779869007e+00
20 2.7727573003170809e+00 3.6923910440725227e+00 -3.9330842459580020e+00
21 4.9040128073837339e+00 -4.0752348170758461e+00 -3.6210314709795299e+00
22 4.3582355554510048e+00 -4.2126119427061379e+00 -4.4612844196307497e+00
23 5.7439382849366911e+00 -3.5821957939240279e+00 -3.8766361295959513e+00
24 2.0689243582422630e+00 3.1513346907271012e+00 3.1550389754828800e+00
25 1.3045351331492134e+00 3.2665125705842848e+00 2.5111855257433504e+00
26 2.5809237402711274e+00 4.0117602605482832e+00 3.2212060529089896e+00
27 -1.9611343130357228e+00 -4.3563411931359752e+00 2.1098293115523705e+00
28 -2.7473562684513411e+00 -4.0200819932379330e+00 1.5830052163433954e+00
29 -1.3126000191359855e+00 -3.5962518039482929e+00 2.2746342468737835e+00
run_vel: ! |2
1 8.1705744183262381e-03 1.6516406176274288e-02 4.7902264318912917e-03
2 5.4501493445687802e-03 5.1791699408496412e-03 -1.4372931530376625e-03
3 -8.2298292722385660e-03 -1.2926551614621376e-02 -4.0984181178163838e-03
4 -3.7699042590093549e-03 -6.5722892098813894e-03 -1.1184640360133316e-03
5 -1.1021961004346581e-02 -9.8906780939336057e-03 -2.8410737829284403e-03
6 -3.9676663166400034e-02 4.6817061464710256e-02 3.7148491979476124e-02
7 9.1033953013898666e-04 -1.0128524411938794e-02 -5.1568251805019748e-02
8 7.9064712058855742e-03 -3.3507254552631780e-03 3.4557098492564629e-02
9 1.5644176117320923e-03 3.7365546102722164e-03 1.5047408822037646e-02
10 2.9201446820573192e-02 -2.9249578745486147e-02 -1.5018077424322544e-02
11 -4.7835961513517542e-03 -3.7481385134185211e-03 -2.3464104142290089e-03
12 2.2696451841920681e-03 -3.4774154398130373e-04 -3.0640770327796979e-03
13 2.7531740451953164e-03 5.8171061612840502e-03 -7.9467454022160680e-04
14 3.5246182371994213e-03 -5.7939995585585529e-03 -3.9478431172751361e-03
15 -1.8547943640122950e-03 -5.8554729942777795e-03 6.2938485140538675e-03
16 1.8681499973445252e-02 -1.3262466204585334e-02 -4.5638651457003250e-02
17 -1.2896269981100378e-02 9.7527665265956451e-03 3.7296535360836762e-02
18 -8.0065795562956103e-04 -8.6270473963802124e-04 -1.4483040662692239e-03
19 1.2452390821512348e-03 -2.5061097135903924e-03 7.2998631029991060e-03
20 3.5930057870507443e-03 3.6938851567332597e-03 3.2322732161078646e-03
21 -1.4689219756961610e-03 -2.7352107824530291e-04 7.0581625180892197e-04
22 -7.0694199165145105e-03 -4.2577148692717545e-03 2.8079117911323598e-04
23 6.0446963236685230e-03 -1.4000131545098772e-03 2.5819754799379716e-03
24 3.1926367902287880e-04 -9.9445664749276221e-04 1.4999996959365317e-04
25 1.3789754514814532e-04 -4.4335894884532673e-03 -8.1808136725080173e-04
26 2.0485904035217588e-03 2.7813358633835962e-03 4.3245727149206761e-03
27 4.5604120293369840e-04 -1.0305523026921111e-03 2.1188058381358413e-04
28 -6.2544520861855151e-03 1.4127711176146879e-03 -1.8429821884794260e-03
29 6.4110631534402174e-04 3.1273432719593824e-03 3.7253671105656736e-03
...

View File

@ -0,0 +1,82 @@
---
lammps_version: 8 Feb 2023
date_generated: Thu Feb 23 00:56:30 2023
epsilon: 4e-14
skip_tests:
prerequisites: ! |
atom full
fix wall/table
pre_commands: ! |
boundary p f p
post_commands: ! |
fix move all nve
fix test solute wall/table spline 200 ylo EDGE ${input_dir}/wall.table HARMONIC 4.0 yhi EDGE ${input_dir}/wall.table HARMONIC 4.0
fix_modify test virial yes
input_file: in.fourmol
natoms: 29
run_stress: ! |2-
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
global_scalar: 0
global_vector: ! |-
2 0 0
run_pos: ! |2
1 -2.7045559775384032e-01 2.4912159905679729e+00 -1.6695851791541888e-01
2 3.1004029573899528e-01 2.9612354631094391e+00 -8.5466363037021464e-01
3 -7.0398551400789477e-01 1.2305509955830618e+00 -6.2777526944456274e-01
4 -1.5818159336499285e+00 1.4837407818929933e+00 -1.2538710836062004e+00
5 -9.0719763672789266e-01 9.2652103885675297e-01 3.9954210488374786e-01
6 2.4831720524855985e-01 2.8313021497871271e-01 -1.2314233331711453e+00
7 3.4143527641386412e-01 -2.2646551041391422e-02 -2.5292291414903052e+00
8 1.1743552229100009e+00 -4.8863228565853950e-01 -6.3783432910825522e-01
9 1.3800524229500313e+00 -2.5274721030406683e-01 2.8353985887095157e-01
10 2.0510765220543883e+00 -1.4604063740302866e+00 -9.8323745081712954e-01
11 1.7878031944442556e+00 -1.9921863272948861e+00 -1.8890602447625777e+00
12 3.0063007039340053e+00 -4.9013350496963298e-01 -1.6231898107386231e+00
13 4.0515402959192999e+00 -8.9202011606653986e-01 -1.6400005529924957e+00
14 2.6066963345543819e+00 -4.1789253965514156e-01 -2.6634003608794394e+00
15 2.9695287185712913e+00 5.5422613165234025e-01 -1.2342022021790127e+00
16 2.6747029695228521e+00 -2.4124119054564295e+00 -2.3435746150616152e-02
17 2.2153577785283796e+00 -2.0897985186907717e+00 1.1963150794479436e+00
18 2.1369701704080528e+00 3.0158507413593689e+00 -3.5179348337197793e+00
19 1.5355837136080202e+00 2.6255292355367410e+00 -4.2353987779869007e+00
20 2.7727573003170809e+00 3.6923910440725227e+00 -3.9330842459580020e+00
21 4.9040128073837339e+00 -4.0752348170758461e+00 -3.6210314709795299e+00
22 4.3582355554510048e+00 -4.2126119427061379e+00 -4.4612844196307497e+00
23 5.7439382849366911e+00 -3.5821957939240279e+00 -3.8766361295959513e+00
24 2.0689243582422630e+00 3.1513346907271012e+00 3.1550389754828800e+00
25 1.3045351331492134e+00 3.2665125705842848e+00 2.5111855257433504e+00
26 2.5809237402711274e+00 4.0117602605482832e+00 3.2212060529089896e+00
27 -1.9611343130357228e+00 -4.3563411931359752e+00 2.1098293115523705e+00
28 -2.7473562684513411e+00 -4.0200819932379330e+00 1.5830052163433954e+00
29 -1.3126000191359855e+00 -3.5962518039482929e+00 2.2746342468737835e+00
run_vel: ! |2
1 8.1705744183262381e-03 1.6516406176274288e-02 4.7902264318912917e-03
2 5.4501493445687802e-03 5.1791699408496412e-03 -1.4372931530376625e-03
3 -8.2298292722385660e-03 -1.2926551614621376e-02 -4.0984181178163838e-03
4 -3.7699042590093549e-03 -6.5722892098813894e-03 -1.1184640360133316e-03
5 -1.1021961004346581e-02 -9.8906780939336057e-03 -2.8410737829284403e-03
6 -3.9676663166400034e-02 4.6817061464710256e-02 3.7148491979476124e-02
7 9.1033953013898666e-04 -1.0128524411938794e-02 -5.1568251805019748e-02
8 7.9064712058855742e-03 -3.3507254552631780e-03 3.4557098492564629e-02
9 1.5644176117320923e-03 3.7365546102722164e-03 1.5047408822037646e-02
10 2.9201446820573192e-02 -2.9249578745486147e-02 -1.5018077424322544e-02
11 -4.7835961513517542e-03 -3.7481385134185211e-03 -2.3464104142290089e-03
12 2.2696451841920681e-03 -3.4774154398130373e-04 -3.0640770327796979e-03
13 2.7531740451953164e-03 5.8171061612840502e-03 -7.9467454022160680e-04
14 3.5246182371994213e-03 -5.7939995585585529e-03 -3.9478431172751361e-03
15 -1.8547943640122950e-03 -5.8554729942777795e-03 6.2938485140538675e-03
16 1.8681499973445252e-02 -1.3262466204585334e-02 -4.5638651457003250e-02
17 -1.2896269981100378e-02 9.7527665265956451e-03 3.7296535360836762e-02
18 -8.0065795562956103e-04 -8.6270473963802124e-04 -1.4483040662692239e-03
19 1.2452390821512348e-03 -2.5061097135903924e-03 7.2998631029991060e-03
20 3.5930057870507443e-03 3.6938851567332597e-03 3.2322732161078646e-03
21 -1.4689219756961610e-03 -2.7352107824530291e-04 7.0581625180892197e-04
22 -7.0694199165145105e-03 -4.2577148692717545e-03 2.8079117911323598e-04
23 6.0446963236685230e-03 -1.4000131545098772e-03 2.5819754799379716e-03
24 3.1926367902287880e-04 -9.9445664749276221e-04 1.4999996959365317e-04
25 1.3789754514814532e-04 -4.4335894884532673e-03 -8.1808136725080173e-04
26 2.0485904035217588e-03 2.7813358633835962e-03 4.3245727149206761e-03
27 4.5604120293369840e-04 -1.0305523026921111e-03 2.1188058381358413e-04
28 -6.2544520861855151e-03 1.4127711176146879e-03 -1.8429821884794260e-03
29 6.4110631534402174e-04 3.1273432719593824e-03 3.7253671105656736e-03
...

View File

@ -0,0 +1,204 @@
# DATE: 2023-02-23 UNITS: real
HARMONIC
N 200 FP 200.000000006796 200.000000002102
1 0.02 1584.04 796
2 0.04 1568.16 792
3 0.06 1552.36 788
4 0.08 1536.64 784
5 0.1 1521 780
6 0.12 1505.44 776
7 0.14 1489.96 772
8 0.16 1474.56 768
9 0.18 1459.24 764
10 0.2 1444 760
11 0.22 1428.84 756
12 0.24 1413.76 752
13 0.26 1398.76 748
14 0.28 1383.84 744
15 0.3 1369 740
16 0.32 1354.24 736
17 0.34 1339.56 732
18 0.36 1324.96 728
19 0.38 1310.44 724
20 0.4 1296 720
21 0.42 1281.64 716
22 0.44 1267.36 712
23 0.46 1253.16 708
24 0.48 1239.04 704
25 0.5 1225 700
26 0.52 1211.04 696
27 0.54 1197.16 692
28 0.56 1183.36 688
29 0.58 1169.64 684
30 0.6 1156 680
31 0.62 1142.44 676
32 0.64 1128.96 672
33 0.66 1115.56 668
34 0.68 1102.24 664
35 0.7 1089 660
36 0.72 1075.84 656
37 0.74 1062.76 652
38 0.76 1049.76 648
39 0.78 1036.84 644
40 0.8 1024 640
41 0.82 1011.24 636
42 0.84 998.56 632
43 0.86 985.96 628
44 0.88 973.44 624
45 0.9 961 620
46 0.92 948.64 616
47 0.94 936.36 612
48 0.96 924.16 608
49 0.98 912.04 604
50 1 900 600
51 1.02 888.04 596
52 1.04 876.16 592
53 1.06 864.36 588
54 1.08 852.64 584
55 1.1 841 580
56 1.12 829.44 576
57 1.14 817.96 572
58 1.16 806.56 568
59 1.18 795.24 564
60 1.2 784 560
61 1.22 772.84 556
62 1.24 761.76 552
63 1.26 750.76 548
64 1.28 739.84 544
65 1.3 729 540
66 1.32 718.24 536
67 1.34 707.56 532
68 1.36 696.96 528
69 1.38 686.44 524
70 1.4 676 520
71 1.42 665.64 516
72 1.44 655.36 512
73 1.46 645.16 508
74 1.48 635.04 504
75 1.5 625 500
76 1.52 615.04 496
77 1.54 605.16 492
78 1.56 595.36 488
79 1.58 585.64 484
80 1.6 576 480
81 1.62 566.44 476
82 1.64 556.96 472
83 1.66 547.56 468
84 1.68 538.24 464
85 1.7 529 460
86 1.72 519.84 456
87 1.74 510.76 452
88 1.76 501.76 448
89 1.78 492.84 444
90 1.8 484 440
91 1.82 475.24 436
92 1.84 466.56 432
93 1.86 457.96 428
94 1.88 449.44 424
95 1.9 441 420
96 1.92 432.64 416
97 1.94 424.36 412
98 1.96 416.16 408
99 1.98 408.04 404
100 2 400 400
101 2.02 392.04 396
102 2.04 384.16 392
103 2.06 376.36 388
104 2.08 368.64 384
105 2.1 361 380
106 2.12 353.44 376
107 2.14 345.96 372
108 2.16 338.56 368
109 2.18 331.24 364
110 2.2 324 360
111 2.22 316.84 356
112 2.24 309.76 352
113 2.26 302.76 348
114 2.28 295.84 344
115 2.3 289 340
116 2.32 282.24 336
117 2.34 275.56 332
118 2.36 268.96 328
119 2.38 262.44 324
120 2.4 256 320
121 2.42 249.64 316
122 2.44 243.36 312
123 2.46 237.16 308
124 2.48 231.04 304
125 2.5 225 300
126 2.52 219.04 296
127 2.54 213.16 292
128 2.56 207.36 288
129 2.58 201.64 284
130 2.6 196 280
131 2.62 190.44 276
132 2.64 184.96 272
133 2.66 179.56 268
134 2.68 174.24 264
135 2.7 169 260
136 2.72 163.84 256
137 2.74 158.76 252
138 2.76 153.76 248
139 2.78 148.84 244
140 2.8 144 240
141 2.82 139.24 236
142 2.84 134.56 232
143 2.86 129.96 228
144 2.88 125.44 224
145 2.9 121 220
146 2.92 116.64 216
147 2.94 112.36 212
148 2.96 108.16 208
149 2.98 104.04 204
150 3 100 200
151 3.02 96.04 196
152 3.04 92.16 192
153 3.06 88.36 188
154 3.08 84.64 184
155 3.1 81 180
156 3.12 77.44 176
157 3.14 73.96 172
158 3.16 70.56 168
159 3.18 67.24 164
160 3.2 64 160
161 3.22 60.84 156
162 3.24 57.76 152
163 3.26 54.76 148
164 3.28 51.84 144
165 3.3 49 140
166 3.32 46.24 136
167 3.34 43.56 132
168 3.36 40.96 128
169 3.38 38.44 124
170 3.4 36 120
171 3.42 33.64 116
172 3.44 31.36 112
173 3.46 29.16 108
174 3.48 27.04 104
175 3.5 25 100
176 3.52 23.04 96
177 3.54 21.16 92
178 3.56 19.36 88
179 3.58 17.64 84
180 3.6 16 80
181 3.62 14.44 76
182 3.64 12.96 72
183 3.66 11.56 68
184 3.68 10.24 64
185 3.7 8.99999999999999 60
186 3.72 7.83999999999999 56
187 3.74 6.75999999999999 52
188 3.76 5.75999999999999 48
189 3.78 4.83999999999999 44
190 3.8 3.99999999999999 39.9999999999999
191 3.82 3.23999999999999 35.9999999999999
192 3.84 2.55999999999999 31.9999999999999
193 3.86 1.96 28
194 3.88 1.44 24
195 3.9 1 20
196 3.92 0.640000000000001 16
197 3.94 0.360000000000001 12
198 3.96 0.16 8.00000000000001
199 3.98 0.0400000000000001 4
200 4 0 -0