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:
@ -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 ;\
|
||||
)
|
||||
|
||||
@ -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>`
|
||||
|
||||
@ -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.
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
""""""""""""""""
|
||||
|
||||
@ -3487,6 +3487,7 @@ sz
|
||||
Sz
|
||||
Tabbernor
|
||||
tabinner
|
||||
tabstyle
|
||||
Tadmor
|
||||
Tafipolsky
|
||||
tagID
|
||||
|
||||
110
examples/wall/in.wall.lepton
Normal file
110
examples/wall/in.wall.lepton
Normal 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
129
examples/wall/in.wall.table
Normal 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
|
||||
882
examples/wall/log.23Feb23.wall.lepton.g++.1
Normal file
882
examples/wall/log.23Feb23.wall.lepton.g++.1
Normal 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
|
||||
882
examples/wall/log.23Feb23.wall.lepton.g++.4
Normal file
882
examples/wall/log.23Feb23.wall.lepton.g++.4
Normal 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
|
||||
1116
examples/wall/log.23Feb23.wall.table.g++.1
Normal file
1116
examples/wall/log.23Feb23.wall.table.g++.1
Normal file
File diff suppressed because it is too large
Load Diff
1116
examples/wall/log.23Feb23.wall.table.g++.4
Normal file
1116
examples/wall/log.23Feb23.wall.table.g++.4
Normal file
File diff suppressed because it is too large
Load Diff
16
examples/wall/wall.inc
Normal file
16
examples/wall/wall.inc
Normal 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
1212
examples/wall/walltab.dat
Normal file
File diff suppressed because it is too large
Load Diff
2
src/.gitignore
vendored
2
src/.gitignore
vendored
@ -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
|
||||
|
||||
|
||||
@ -24,7 +24,6 @@
|
||||
#include <cmath>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -26,7 +26,6 @@
|
||||
#include <cmath>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -31,7 +31,6 @@
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
enum{NONE,DIFFUSIVE,MAXWELL,CCL};
|
||||
|
||||
|
||||
@ -29,7 +29,6 @@
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -19,7 +19,6 @@
|
||||
#include "atom_masks.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -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};
|
||||
|
||||
138
src/LEPTON/fix_wall_lepton.cpp
Normal file
138
src/LEPTON/fix_wall_lepton.cpp
Normal 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);
|
||||
}
|
||||
41
src/LEPTON/fix_wall_lepton.h
Normal file
41
src/LEPTON/fix_wall_lepton.h
Normal 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
|
||||
@ -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;
|
||||
|
||||
@ -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 };
|
||||
|
||||
258
src/fix_wall.cpp
258
src/fix_wall.cpp
@ -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];
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
#include "error.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -18,7 +18,6 @@
|
||||
#include "error.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -18,7 +18,6 @@
|
||||
#include "error.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -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
472
src/fix_wall_table.cpp
Normal 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
67
src/fix_wall_table.h
Normal 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
|
||||
@ -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:
|
||||
|
||||
@ -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")
|
||||
|
||||
25
tools/tabulate/wall_harmonic_tabulate.py
Executable file
25
tools/tabulate/wall_harmonic_tabulate.py
Executable 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')
|
||||
64
tools/tabulate/wall_multi_tabulate.py
Executable file
64
tools/tabulate/wall_multi_tabulate.py
Executable 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')
|
||||
@ -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
|
||||
...
|
||||
@ -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
|
||||
...
|
||||
|
||||
@ -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
|
||||
...
|
||||
@ -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
|
||||
...
|
||||
204
unittest/force-styles/tests/wall.table
Normal file
204
unittest/force-styles/tests/wall.table
Normal 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
|
||||
Reference in New Issue
Block a user