Merge remote-tracking branch 'github/develop' into pair_style_tutorial
This commit is contained in:
@ -60,9 +60,9 @@ if(GPU_API STREQUAL "CUDA")
|
||||
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF)
|
||||
if(CUDA_MPS_SUPPORT)
|
||||
if(CUDPP_OPT)
|
||||
message(FATAL_ERROR "Must use -DCUDPP_OPT=OFF with -DGPU_CUDA_MPS_SUPPORT=ON")
|
||||
message(FATAL_ERROR "Must use -DCUDPP_OPT=OFF with -DCUDA_MPS_SUPPORT=ON")
|
||||
endif()
|
||||
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
|
||||
set(GPU_CUDA_MPS_FLAGS "-DCUDA_MPS_SUPPORT")
|
||||
endif()
|
||||
|
||||
set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
|
||||
|
||||
@ -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 ;\
|
||||
)
|
||||
|
||||
@ -104,6 +104,7 @@ KOKKOS, o = OPENMP, t = OPT.
|
||||
* :doc:`pe/tally <compute_tally>`
|
||||
* :doc:`plasticity/atom <compute_plasticity_atom>`
|
||||
* :doc:`pressure <compute_pressure>`
|
||||
* :doc:`pressure/alchemy <compute_pressure_alchemy>`
|
||||
* :doc:`pressure/uef <compute_pressure_uef>`
|
||||
* :doc:`property/atom <compute_property_atom>`
|
||||
* :doc:`property/chunk <compute_property_chunk>`
|
||||
|
||||
@ -29,6 +29,7 @@ OPT.
|
||||
* :doc:`adapt/fep <fix_adapt_fep>`
|
||||
* :doc:`addforce <fix_addforce>`
|
||||
* :doc:`addtorque <fix_addtorque>`
|
||||
* :doc:`alchemy <fix_alchemy>`
|
||||
* :doc:`amoeba/bitorsion <fix_amoeba_bitorsion>`
|
||||
* :doc:`amoeba/pitorsion <fix_amoeba_pitorsion>`
|
||||
* :doc:`append/atoms <fix_append_atoms>`
|
||||
@ -263,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>`
|
||||
@ -270,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.
|
||||
|
||||
|
||||
@ -258,6 +258,7 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
|
||||
* :doc:`pe/tally <compute_tally>` - potential energy between two groups of atoms via the tally callback mechanism
|
||||
* :doc:`plasticity/atom <compute_plasticity_atom>` - Peridynamic plasticity for each atom
|
||||
* :doc:`pressure <compute_pressure>` - total pressure and pressure tensor
|
||||
* :doc:`pressure/alchemy <compute_pressure_alchemy>` - mixed system total pressure and pressure tensor for :doc:`fix alchemy <fix_alchemy>` runs
|
||||
* :doc:`pressure/uef <compute_pressure_uef>` - pressure tensor in the reference frame of an applied flow field
|
||||
* :doc:`property/atom <compute_property_atom>` - convert atom attributes to per-atom vectors/arrays
|
||||
* :doc:`property/chunk <compute_property_chunk>` - extract various per-chunk attributes
|
||||
|
||||
80
doc/src/compute_pressure_alchemy.rst
Normal file
80
doc/src/compute_pressure_alchemy.rst
Normal file
@ -0,0 +1,80 @@
|
||||
.. index:: compute pressure/alchemy
|
||||
|
||||
compute pressure/alchemy command
|
||||
================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute ID group-ID pressure/alchemy fix-ID
|
||||
|
||||
* ID, group-ID are documented in :doc:`compute <compute>` command
|
||||
* pressure/alchemy = style name of this compute command
|
||||
* fix-ID = ID of :doc:`fix alchemy <fix_alchemy>` command
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix trans all alchemy
|
||||
compute mixed all pressure/alchemy trans
|
||||
thermo_modify press mixed
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
Define a compute style that makes the "mixed" system pressure available
|
||||
for a system that uses the :doc:`fix alchemy <fix_alchemy>` command to
|
||||
transform one topology to another. This can be used in combination with
|
||||
either :doc:`thermo_modify press <thermo_modify>` or :doc:`fix_modify
|
||||
press <fix_modify>` to output and access a pressure consistent with the
|
||||
simulated combined two topology system.
|
||||
|
||||
The actual pressure is determined with :doc:`compute pressure
|
||||
<compute_pressure>` commands that are internally used by :doc:`fix
|
||||
alchemy <fix_alchemy>` for each topology individually and then combined.
|
||||
This command just extracts the information from the fix.
|
||||
|
||||
The ``examples/PACKAGES/alchemy`` folder contains an example input for this command.
|
||||
|
||||
----------
|
||||
|
||||
Output info
|
||||
"""""""""""
|
||||
|
||||
This compute calculates a global scalar (the pressure) and a global
|
||||
vector of length 6 (the pressure tensor), which can be accessed by
|
||||
indices 1--6. These values can be used by any command that uses global
|
||||
scalar or vector values from a compute as input. See the :doc:`Howto
|
||||
output <Howto_output>` page for an overview of LAMMPS output options.
|
||||
|
||||
The ordering of values in the symmetric pressure tensor is as follows:
|
||||
:math:`p_{xx},` :math:`p_{yy},` :math:`p_{zz},` :math:`p_{xy},`
|
||||
:math:`p_{xz},` :math:`p_{yz}.`
|
||||
|
||||
The scalar and vector values calculated by this compute are "intensive".
|
||||
The scalar and vector values will be in pressure :doc:`units <units>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This compute is part of the REPLICA package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix alchemy <fix_alchemy>`, :doc:`compute pressure <compute_pressure>`,
|
||||
:doc:`thermo_modify <thermo_modify>`, :doc:`fix_modify <fix_modify>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
@ -181,6 +181,7 @@ accelerated styles exist.
|
||||
* :doc:`adapt/fep <fix_adapt_fep>` - enhanced version of fix adapt
|
||||
* :doc:`addforce <fix_addforce>` - add a force to each atom
|
||||
* :doc:`addtorque <fix_addtorque>` - add a torque to a group of atoms
|
||||
* :doc:`alchemy <fix_alchemy>` - perform an "alchemical transformation" between two partitions
|
||||
* :doc:`amoeba/bitorsion <fix_amoeba_bitorsion>` - torsion/torsion terms in AMOEBA force field
|
||||
* :doc:`amoeba/pitorsion <fix_amoeba_pitorsion>` - 6-body terms in AMOEBA force field
|
||||
* :doc:`append/atoms <fix_append_atoms>` - append atoms to a running simulation
|
||||
@ -415,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)
|
||||
@ -422,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
|
||||
|
||||
137
doc/src/fix_alchemy.rst
Normal file
137
doc/src/fix_alchemy.rst
Normal file
@ -0,0 +1,137 @@
|
||||
.. index:: fix alchemy
|
||||
|
||||
fix alchemy command
|
||||
===================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID alchemy v_name
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* alchemy = style name of this fix command
|
||||
* v_name = variable with name that determines the :math:`\lambda_p` value
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix trans all alchemy v_ramp
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
This fix command enables running an "alchemical transformation" MD
|
||||
simulation between two topologies (i.e. the same number and positions of
|
||||
atoms, but differences in atom parameters like type, charge, bonds,
|
||||
angles and so on). For this a :ref:`multi-partition run <partition>` is
|
||||
required with exactly two partitions. During the MD run, the fix will
|
||||
will determine a factor, :math:`\lambda_p`, for each partition *p* that
|
||||
will be taken from an equal style or equivalent :doc:`variable
|
||||
<variable>`. Typically, this variable would be chose to linearly ramp
|
||||
*down* from 1.0 to 0.0 for the *first* partition (*p=0*) and linearly
|
||||
ramp *up* from 0.0 to 1.0 for the *second* partition (*p=1*). The
|
||||
forces used for the propagation of the atoms will be the sum of the
|
||||
forces of the two systems combined and scaled with their respective
|
||||
:math:`\lambda_p` factor. This allows to perform transformations that
|
||||
are not easily possible with :doc:`pair style hybrid/scaled
|
||||
<pair_hybrid>`, :doc:`fix adapt <fix_adapt>` or :doc:`fix adapt/fep
|
||||
<fix_adapt_fep>`.
|
||||
|
||||
.. note::
|
||||
|
||||
Since the definition of the variable to provide the :math:`\lambda_p` is
|
||||
independent in the two partitions, no check is made that the two values
|
||||
remain between 0.0 and 1.0 and that they add up to 1.0. So care needs to
|
||||
be taken when defining those variables that this is the case.
|
||||
|
||||
Due to the specifics of the implementation, the initial geometry and
|
||||
dimensions of the system must be exactly the same and the fix will
|
||||
synchronize them during the run. It is thus not possible to initialize
|
||||
the two partitions by reading different data files or creating different
|
||||
systems from scratch, but rather they have to be started from the same
|
||||
system and then the desired modifications need to be applied to the
|
||||
system of the second partition. The commands :doc:`pair style
|
||||
hybrid/scaled <pair_hybrid>`, :doc:`fix adapt <fix_adapt>` or :doc:`fix
|
||||
adapt/fep <fix_adapt_fep>` could be used for simulations where the
|
||||
requirements for fix alchemy are not given.
|
||||
|
||||
The commands below demonstrate how the setup for the second partition
|
||||
can be done for the example of transforming a pure copper system into a
|
||||
copper/aluminum bronze.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
variable name world pure alloy
|
||||
|
||||
create_box 2 box
|
||||
create_atoms 1 box
|
||||
pair_style eam/alloy
|
||||
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||
|
||||
# replace 5% of copper with aluminum on the second partition only
|
||||
variable name world pure alloy
|
||||
if "${name} == alloy" then &
|
||||
"set type 1 type/fraction 2 0.05 6745234"
|
||||
|
||||
# define ramp variable to combine the two different partitions
|
||||
if "${name} == pure" then &
|
||||
"variable ramp equal ramp(1.0,0.0)" &
|
||||
else &
|
||||
"variable ramp equal ramp(0.0,1.0)"
|
||||
|
||||
fix 2 all alchemy v_ramp
|
||||
|
||||
|
||||
The ``examples/PACKAGES/alchemy`` folder contains complete example
|
||||
inputs for this command.
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`.
|
||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix.
|
||||
|
||||
This fix stores a global scalar (the current value of :math:`\lambda_p`)
|
||||
and a global vector of length 3 which contains the potential energy of
|
||||
the first partition, the second partition and the combined value,
|
||||
respectively. The global scalar is unitless and "intensive", the vector
|
||||
is in :doc:`energy units <units>` and "extensive". These values can be
|
||||
used by any command that uses a global value from a fix as input. See
|
||||
the :doc:`Howto output <Howto_output>` doc page for an overview of
|
||||
LAMMPS output options.
|
||||
|
||||
This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the REPLICA package. It is only enabled if LAMMPS
|
||||
was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
There may be only one instance of this fix in use at any time.
|
||||
|
||||
This fix requires to perform a :ref:`multi-partition run <partition>`
|
||||
with *exactly* two partitions.
|
||||
|
||||
This fix is *not* compatible with :doc:`load balancing <fix_balance>`.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute pressure/alchemy <compute_pressure_alchemy>` command,
|
||||
:doc:`fix adapt <fix_adapt>` command, :doc:`fix adapt/fep <fix_adapt_fep>`
|
||||
command, :doc:`pair_style hybrid/scaled <pair_hybrid>` command.
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
@ -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
|
||||
""""""""""""""""
|
||||
|
||||
@ -3489,6 +3489,7 @@ sz
|
||||
Sz
|
||||
Tabbernor
|
||||
tabinner
|
||||
tabstyle
|
||||
Tadmor
|
||||
Tafipolsky
|
||||
tagID
|
||||
|
||||
1
examples/PACKAGES/alchemy/AlCu.eam.alloy
Symbolic link
1
examples/PACKAGES/alchemy/AlCu.eam.alloy
Symbolic link
@ -0,0 +1 @@
|
||||
../../../potentials/AlCu.eam.alloy
|
||||
62
examples/PACKAGES/alchemy/h2o.mol
Normal file
62
examples/PACKAGES/alchemy/h2o.mol
Normal file
@ -0,0 +1,62 @@
|
||||
# Water molecule. SPC/E model.
|
||||
|
||||
3 atoms
|
||||
2 bonds
|
||||
1 angles
|
||||
|
||||
Coords
|
||||
|
||||
1 1.12456 0.09298 1.27452
|
||||
2 1.53683 0.75606 1.89928
|
||||
3 0.49482 0.56390 0.65678
|
||||
|
||||
Types
|
||||
|
||||
1 1
|
||||
2 2
|
||||
3 2
|
||||
|
||||
Charges
|
||||
|
||||
1 -0.8472
|
||||
2 0.4236
|
||||
3 0.4236
|
||||
|
||||
Bonds
|
||||
|
||||
1 1 1 2
|
||||
2 1 1 3
|
||||
|
||||
Angles
|
||||
|
||||
1 1 2 1 3
|
||||
|
||||
Shake Flags
|
||||
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
Shake Atoms
|
||||
|
||||
1 1 2 3
|
||||
2 1 2 3
|
||||
3 1 2 3
|
||||
|
||||
Shake Bond Types
|
||||
|
||||
1 1 1 1
|
||||
2 1 1 1
|
||||
3 1 1 1
|
||||
|
||||
Special Bond Counts
|
||||
|
||||
1 2 0 0
|
||||
2 1 1 0
|
||||
3 1 1 0
|
||||
|
||||
Special Bonds
|
||||
|
||||
1 2 3
|
||||
2 1 3
|
||||
3 1 2
|
||||
45
examples/PACKAGES/alchemy/in.alloy
Normal file
45
examples/PACKAGES/alchemy/in.alloy
Normal file
@ -0,0 +1,45 @@
|
||||
# Example for an alchemical transformation simulation of pure copper into an aluminium bronze
|
||||
|
||||
# set up different names for two partitions
|
||||
variable name world pure alloy
|
||||
|
||||
# create pure copper system
|
||||
units metal
|
||||
lattice fcc 3.75
|
||||
region box block 0 6 0 6 0 6
|
||||
create_box 2 box
|
||||
|
||||
timestep 0.002
|
||||
create_atoms 1 box
|
||||
displace_atoms all random 0.3 0.3 0.3 57845645
|
||||
pair_style eam/alloy
|
||||
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||
|
||||
# replace 5% of copper with aluminium on the second partition only
|
||||
if "${name} == alloy" then &
|
||||
"set type 1 type/fraction 2 0.05 6745234"
|
||||
|
||||
# define ramp variable to combine the two different partitions
|
||||
if "${name} == pure" then &
|
||||
"variable ramp equal ramp(1.0,0.0)" &
|
||||
else &
|
||||
"variable ramp equal ramp(0.0,1.0)"
|
||||
|
||||
velocity all create 5000.0 6567345
|
||||
fix 1 all nvt temp 2500.0 500.0 0.002
|
||||
fix 2 all alchemy v_ramp
|
||||
|
||||
compute pressure all pressure/alchemy 2
|
||||
|
||||
# only need to output a dump file from one partition
|
||||
#if "${name} == alloy" then &
|
||||
# "dump 1 all custom 100 ${name}.lammpstrj id type element x y z" &
|
||||
# "dump_modify 1 element Cu Al"
|
||||
|
||||
thermo_style custom step temp press etotal density pe ke f_2 f_2[3]
|
||||
thermo_modify colname f_2 lambda colname f_2[3] EPot_mixed
|
||||
thermo_modify press pressure
|
||||
|
||||
thermo 100
|
||||
run 10000 post no
|
||||
|
||||
100
examples/PACKAGES/alchemy/in.twowater
Normal file
100
examples/PACKAGES/alchemy/in.twowater
Normal file
@ -0,0 +1,100 @@
|
||||
# Example for an alchemical transformation of two water molecules into a hydronium and hydroxyl ion
|
||||
# WARNING: This input is intended for demonstrating the method only,
|
||||
# the force field parameters are mostly made up and NOT suitable for production simulations.
|
||||
|
||||
# set up different names for two partitions
|
||||
variable name world twowater twoions
|
||||
|
||||
units real
|
||||
atom_style full
|
||||
atom_modify map array
|
||||
region box block -5 5 -5 5 -5 5
|
||||
boundary p p p
|
||||
create_box 2 box bond/types 2 angle/types 2 &
|
||||
extra/bond/per/atom 3 extra/angle/per/atom 3 extra/special/per/atom 3
|
||||
|
||||
mass 1 15.9994
|
||||
mass 2 1.008
|
||||
|
||||
pair_style lj/cut/coul/cut 10.0
|
||||
pair_coeff 1 1 0.1553 3.166
|
||||
pair_coeff 1 2 0.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0
|
||||
|
||||
bond_style harmonic
|
||||
bond_coeff * 1000.0 1.0
|
||||
|
||||
angle_style harmonic
|
||||
angle_coeff * 100.0 109.47
|
||||
|
||||
molecule water h2o.mol
|
||||
|
||||
# create the two molecules we want to transform ...
|
||||
create_atoms 0 single -2.0 0.0 0.0 mol water 453624
|
||||
create_atoms 0 single 2.0 0.0 0.0 mol water 767353
|
||||
|
||||
# ... and put them in a group
|
||||
group transform id 1:6
|
||||
|
||||
# now fill the rest of the box with more water
|
||||
create_atoms 0 random 32 34564 NULL mol water 25367 overlap 1.33
|
||||
|
||||
# change topology and settings for the two states
|
||||
# we cannot simply create a different topology directly or
|
||||
# load a different data file because the order and position
|
||||
# of all atoms must be maintained across both replica
|
||||
|
||||
# we first have to remove all topology data in the transform group
|
||||
delete_bonds transform bond 1
|
||||
delete_bonds transform angle 1 remove
|
||||
|
||||
# then generate different topologies for the two partitions. select by name.
|
||||
if "${name} == twowater" then &
|
||||
"create_bonds single/bond 2 1 2" &
|
||||
"create_bonds single/bond 2 1 3" &
|
||||
"create_bonds single/bond 2 4 5" &
|
||||
"create_bonds single/bond 2 4 6" &
|
||||
"create_bonds single/angle 2 2 1 3" &
|
||||
"create_bonds single/angle 2 5 4 6" &
|
||||
else &
|
||||
"create_bonds single/bond 2 1 2" &
|
||||
"create_bonds single/bond 2 3 4" &
|
||||
"create_bonds single/bond 2 4 5" &
|
||||
"create_bonds single/bond 2 4 6" &
|
||||
"create_bonds single/angle 2 3 4 5" &
|
||||
"create_bonds single/angle 2 5 4 6" &
|
||||
"create_bonds single/angle 2 3 4 6" &
|
||||
"set atom 1 charge -1.1354" &
|
||||
"set atom 2 charge 0.1354" &
|
||||
"set atom 3 charge 0.56775" &
|
||||
"set atom 4 charge -0.70305" &
|
||||
"set atom 5*6 charge 0.56775"
|
||||
|
||||
velocity all create 300.0 5463576
|
||||
timestep 0.2
|
||||
|
||||
# define ramp variable to combine the two different partitions
|
||||
if "${name} == twowater" then &
|
||||
"variable ramp equal ramp(1.0,0.0)" &
|
||||
else &
|
||||
"variable ramp equal ramp(0.0,1.0)"
|
||||
|
||||
# since the trajectory and forces are kept identical through fix alchemy,
|
||||
# we can do fix npt simulations, but we must use the "mixed" pressure
|
||||
|
||||
fix integrate all npt temp 300 300 1.0 iso 1.0 1.0 10.0
|
||||
fix transform all alchemy v_ramp
|
||||
compute pressure all pressure/alchemy transform
|
||||
fix_modify integrate press pressure
|
||||
|
||||
# only need to output a dump file from one partition
|
||||
# if "${name} == twowater" then &
|
||||
# "dump 1 all atom 100 ${name}.lammpstrj" &
|
||||
# "dump_modify 1 sort id"
|
||||
|
||||
thermo_style custom step temp press etotal density pe ke f_transform f_transform[3]
|
||||
thermo_modify colname f_transform lambda colname f_transform[3] EPot_mixed
|
||||
thermo_modify press pressure
|
||||
|
||||
thermo 100
|
||||
run 20000
|
||||
13
examples/PACKAGES/alchemy/log.25Feb23.alloy.g++.4
Normal file
13
examples/PACKAGES/alchemy/log.25Feb23.alloy.g++.4
Normal file
@ -0,0 +1,13 @@
|
||||
LAMMPS (8 Feb 2023)
|
||||
Running on 2 partitions of processors
|
||||
Starting alchemical transformation at 0%
|
||||
Alchemical transformation progress: 10%
|
||||
Alchemical transformation progress: 20%
|
||||
Alchemical transformation progress: 30%
|
||||
Alchemical transformation progress: 40%
|
||||
Alchemical transformation progress: 50%
|
||||
Alchemical transformation progress: 60%
|
||||
Alchemical transformation progress: 70%
|
||||
Alchemical transformation progress: 80%
|
||||
Alchemical transformation progress: 90%
|
||||
Alchemical transformation progress: 100%
|
||||
169
examples/PACKAGES/alchemy/log.25Feb23.alloy.g++.4.0
Normal file
169
examples/PACKAGES/alchemy/log.25Feb23.alloy.g++.4.0
Normal file
@ -0,0 +1,169 @@
|
||||
LAMMPS (8 Feb 2023)
|
||||
Processor partition = 0
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Example for an alchemical transformation simulation of pure copper into an aluminium bronze
|
||||
|
||||
# set up different names for two partitions
|
||||
variable name world pure alloy
|
||||
|
||||
# create pure copper system
|
||||
units metal
|
||||
lattice fcc 3.75
|
||||
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||
region box block 0 6 0 6 0 6
|
||||
create_box 2 box
|
||||
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||
1 by 1 by 2 MPI processor grid
|
||||
|
||||
timestep 0.002
|
||||
create_atoms 1 box
|
||||
Created 864 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||
create_atoms CPU = 0.001 seconds
|
||||
displace_atoms all random 0.3 0.3 0.3 57845645
|
||||
Displacing atoms ...
|
||||
pair_style eam/alloy
|
||||
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||
Reading eam/alloy potential file AlCu.eam.alloy with DATE: 2008-10-01
|
||||
|
||||
# replace 5% of copper with aluminium on the second partition only
|
||||
if "${name} == alloy" then "set type 1 type/fraction 2 0.05 6745234"
|
||||
|
||||
# define ramp variable to combine the two different partitions
|
||||
if "${name} == pure" then "variable ramp equal ramp(1.0,0.0)" else "variable ramp equal ramp(0.0,1.0)"
|
||||
variable ramp equal ramp(1.0,0.0)
|
||||
|
||||
velocity all create 5000.0 6567345
|
||||
fix 1 all nvt temp 2500.0 500.0 0.002
|
||||
fix 2 all alchemy v_ramp
|
||||
|
||||
compute pressure all pressure/alchemy 2
|
||||
|
||||
# only need to output a dump file from one partition
|
||||
#if "${name} == alloy" then # "dump 1 all custom 100 ${name}.lammpstrj id type element x y z" # "dump_modify 1 element Cu Al"
|
||||
|
||||
thermo_style custom step temp press etotal density pe ke f_2 f_2[3]
|
||||
thermo_modify colname f_2 lambda colname f_2[3] EPot_mixed
|
||||
thermo_modify press pressure
|
||||
|
||||
thermo 100
|
||||
run 10000 post no
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 8.6825
|
||||
ghost atom cutoff = 8.6825
|
||||
binsize = 4.34125, bins = 6 6 6
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/alloy, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.474 | 3.474 | 3.474 Mbytes
|
||||
Step Temp Press TotEng Density PotEng KinEng lambda EPot_mixed
|
||||
0 5000 2135632.8 10911.637 8.0039334 10353.88 557.75753 1 10353.88
|
||||
100 2424.8703 98461.445 -2402.724 8.0039334 -2673.222 270.49793 0.99 -2673.3837
|
||||
200 2404.4922 111478.55 -2381.5114 8.0039334 -2649.7361 268.22473 0.98 -2650.057
|
||||
300 2388.2899 109429.75 -2387.7985 8.0039334 -2654.2158 266.41733 0.97 -2654.7075
|
||||
400 2377.6418 97114.07 -2409.7114 8.0039334 -2674.9409 265.22953 0.96 -2675.755
|
||||
500 2371.5028 98285.746 -2408.3248 8.0039334 -2672.8695 264.54471 0.95 -2673.6895
|
||||
600 2368.0363 101125.13 -2402.9816 8.0039334 -2667.1396 264.15802 0.94 -2668.238
|
||||
700 2364.8386 96916.491 -2410.1795 8.0039334 -2673.9808 263.80131 0.93 -2675.3394
|
||||
800 2361.5815 101050.97 -2404.7579 8.0039334 -2668.1958 263.43797 0.92 -2669.6797
|
||||
900 2355.1085 95290.542 -2416.4508 8.0039334 -2679.1667 262.7159 0.91 -2681.0381
|
||||
1000 2344.579 90348.199 -2430.3553 8.0039334 -2691.8966 261.54132 0.9 -2693.7969
|
||||
1100 2328.7808 87089.44 -2435.1426 8.0039334 -2694.9216 259.779 0.89 -2696.9199
|
||||
1200 2310.0924 89628.642 -2438.4943 8.0039334 -2696.1886 257.69429 0.88 -2698.4983
|
||||
1300 2288.2762 92771.824 -2430.0042 8.0039334 -2685.2648 255.26065 0.87 -2687.6406
|
||||
1400 2258.3028 83029.221 -2451.9432 8.0039334 -2703.8603 251.91707 0.86 -2706.638
|
||||
1500 2226.5131 83386 -2452.9658 8.0039334 -2701.3367 248.37089 0.85 -2704.0915
|
||||
1600 2192.5777 81801.467 -2460.6692 8.0039334 -2705.2546 244.58535 0.84 -2708.3304
|
||||
1700 2158.7421 84933.294 -2456.2782 8.0039334 -2697.0891 240.81093 0.83 -2700.142
|
||||
1800 2123.8912 76700.779 -2474.2534 8.0039334 -2711.1767 236.92327 0.82 -2714.6978
|
||||
1900 2091.3912 82568.985 -2469.6316 8.0039334 -2702.9295 233.29783 0.81 -2706.5643
|
||||
2000 2061.868 79024.983 -2476.3262 8.0039334 -2706.3307 230.00448 0.8 -2710.7
|
||||
2100 2036.179 72408.502 -2493.6936 8.0039334 -2720.8324 227.13884 0.79 -2725.1617
|
||||
2200 2014.0161 81172.694 -2479.0525 8.0039334 -2703.719 224.66652 0.78 -2708.4618
|
||||
2300 1996.2707 78029.129 -2485.3835 8.0039334 -2708.0706 222.687 0.77 -2712.5894
|
||||
2400 1982.6409 79691.571 -2483.2441 8.0039334 -2704.4107 221.16658 0.76 -2709.4434
|
||||
2500 1971.6774 75015.359 -2493.8754 8.0039334 -2713.819 219.94358 0.75 -2719.4159
|
||||
2600 1963.0369 74845.99 -2493.3203 8.0039334 -2712.3 218.97972 0.74 -2718.1619
|
||||
2700 1955.2025 76756.042 -2491.6282 8.0039334 -2709.7339 218.10578 0.73 -2716.0963
|
||||
2800 1947.4326 70627.84 -2507.5853 8.0039334 -2724.8243 217.23904 0.72 -2730.7999
|
||||
2900 1939.4308 70852.114 -2508.8277 8.0039334 -2725.1742 216.34642 0.71 -2731.5024
|
||||
3000 1929.3184 75867.616 -2497.0826 8.0039334 -2712.301 215.21837 0.7 -2718.4146
|
||||
3100 1916.202 68984.855 -2517.8316 8.0039334 -2731.5868 213.75522 0.69 -2738.0966
|
||||
3200 1901.363 73304.621 -2508.0281 8.0039334 -2720.128 212.09991 0.68 -2727.1933
|
||||
3300 1881.196 69447.29 -2513.9782 8.0039334 -2723.8285 209.85024 0.67 -2730.768
|
||||
3400 1856.1833 64973.868 -2526.8095 8.0039334 -2733.8695 207.06004 0.66 -2741.4173
|
||||
3500 1829.7246 64688.566 -2528.8664 8.0039334 -2732.9749 204.10853 0.65 -2740.986
|
||||
3600 1800.1245 56451.766 -2547.6377 8.0039334 -2748.4443 200.80659 0.64 -2756.4626
|
||||
3700 1771.5886 68268.147 -2530.5906 8.0039334 -2728.214 197.62337 0.63 -2735.8618
|
||||
3800 1740.3894 64187.24 -2539.0772 8.0039334 -2733.2202 194.14306 0.62 -2742.67
|
||||
3900 1709.6971 61697.296 -2548.5651 8.0039334 -2739.2844 190.71928 0.61 -2748.648
|
||||
4000 1680.6126 58960.336 -2557.3154 8.0039334 -2744.7902 187.47487 0.6 -2753.7317
|
||||
4100 1653.386 49607.708 -2575.5217 8.0039334 -2759.9594 184.43769 0.59 -2769.1633
|
||||
4200 1628.5806 59615.376 -2562.3155 8.0039334 -2743.9861 181.67062 0.58 -2753.41
|
||||
4300 1605.7638 57213.496 -2568.9241 8.0039334 -2748.0495 179.12536 0.57 -2758.0401
|
||||
4400 1586.3539 57319.854 -2567.3656 8.0039334 -2744.3258 176.96016 0.56 -2754.0451
|
||||
4500 1569.1762 51130.713 -2581.1996 8.0039334 -2756.2435 175.04397 0.55 -2767.0321
|
||||
4600 1554.2279 51209.179 -2582.5415 8.0039334 -2755.918 173.37646 0.54 -2767.2662
|
||||
4700 1541.2064 51391.73 -2584.9958 8.0039334 -2756.9197 171.92389 0.53 -2768.7565
|
||||
4800 1529.3566 48164.466 -2590.6042 8.0039334 -2761.2062 170.60203 0.52 -2773.7243
|
||||
4900 1517.8359 47270.397 -2595.8724 8.0039334 -2765.1893 169.31688 0.51 -2777.023
|
||||
5000 1506.2157 46127.507 -2595.6789 8.0039334 -2763.6995 168.02063 0.5 -2777.2298
|
||||
5100 1494.4675 45092.69 -2600.075 8.0039334 -2766.7851 166.7101 0.49 -2779.7181
|
||||
5200 1480.2051 41485.775 -2607.0151 8.0039334 -2772.1342 165.1191 0.48 -2785.5483
|
||||
5300 1465.1748 39849.775 -2612.3292 8.0039334 -2775.7716 163.44246 0.47 -2788.9493
|
||||
5400 1447.9857 39330.898 -2615.0485 8.0039334 -2776.5735 161.52498 0.46 -2790.3996
|
||||
5500 1427.9752 35674.647 -2624.4226 8.0039334 -2783.7154 159.29278 0.45 -2797.922
|
||||
5600 1406.1138 33960.907 -2630.1163 8.0039334 -2786.9704 156.85411 0.44 -2801.8887
|
||||
5700 1383.2834 39122.559 -2621.0951 8.0039334 -2775.4025 154.30734 0.43 -2790.3487
|
||||
5800 1357.4953 34996.372 -2632.2759 8.0039334 -2783.7065 151.43064 0.42 -2798.8306
|
||||
5900 1331.345 30380.598 -2640.9488 8.0039334 -2789.4624 148.51354 0.41 -2804.9873
|
||||
6000 1304.5621 26910.214 -2652.7787 8.0039334 -2798.3046 145.52587 0.4 -2814.8623
|
||||
6100 1278.2361 34273.343 -2642.9208 8.0039334 -2785.51 142.58917 0.39 -2801.9949
|
||||
6200 1251.7315 29640.216 -2651.6543 8.0039334 -2791.2868 139.63253 0.38 -2807.555
|
||||
6300 1226.3243 25302.881 -2660.8448 8.0039334 -2797.6431 136.79832 0.37 -2815.3412
|
||||
6400 1202.0501 23978.218 -2668.9812 8.0039334 -2803.0717 134.09049 0.36 -2820.0498
|
||||
6500 1178.656 25315.547 -2668.8266 8.0039334 -2800.3074 131.48085 0.35 -2817.3114
|
||||
6600 1156.9362 22676.36 -2673.1256 8.0039334 -2802.1835 129.05797 0.34 -2819.6239
|
||||
6700 1163.8953 22497.41 -2674.4164 8.0039334 -2804.2506 129.83427 0.33 -2821.3556
|
||||
6800 1123.3867 18193.925 -2685.3997 8.0039334 -2810.7152 125.31548 0.32 -2830.2267
|
||||
6900 1147.6164 19451.295 -2682.5112 8.0039334 -2810.5295 128.01834 0.31 -2830.1189
|
||||
7000 1096.0437 16757.031 -2689.5567 8.0039334 -2811.822 122.26532 0.3 -2832.475
|
||||
7100 1065.1232 11734.429 -2703.0123 8.0039334 -2821.8284 118.8161 0.29 -2841.8886
|
||||
7200 1048.459 15187.579 -2697.6953 8.0039334 -2814.6525 116.95718 0.28 -2834.2885
|
||||
7300 1067.9311 13697.721 -2698.4027 8.0039334 -2817.532 119.12932 0.27 -2838.9073
|
||||
7400 998.4963 13330.213 -2707.915 8.0039334 -2819.2987 111.38377 0.26 -2840.2979
|
||||
7500 1023.6105 7070.7227 -2712.3293 8.0039334 -2826.5146 114.18529 0.25 -2848.8706
|
||||
7600 970.8256 7694.074 -2717.03 8.0039334 -2825.3271 108.29706 0.24 -2848.0154
|
||||
7700 966.64807 2336.6244 -2727.1914 8.0039334 -2835.0224 107.83105 0.23 -2858.6468
|
||||
7800 961.41051 564.58952 -2731.2826 8.0039334 -2838.5294 107.24679 0.22 -2862.4362
|
||||
7900 880.63112 3569.7496 -2734.8614 8.0039334 -2833.0971 98.235727 0.21 -2857.2329
|
||||
8000 904.4189 -883.03123 -2738.386 8.0039334 -2839.2753 100.88929 0.2 -2864.1778
|
||||
8100 901.36129 -977.71992 -2739.797 8.0039334 -2840.3452 100.54821 0.19 -2864.7239
|
||||
8200 834.53102 2535.4088 -2741.7378 8.0039334 -2834.831 93.093191 0.18 -2859.9007
|
||||
8300 830.12299 -6039.909 -2755.2151 8.0039334 -2847.8166 92.601469 0.17 -2873.9613
|
||||
8400 807.63492 -5386.015 -2755.7433 8.0039334 -2845.8362 90.092891 0.16 -2872.8494
|
||||
8500 792.64609 -6372.4363 -2758.8515 8.0039334 -2847.2724 88.420864 0.15 -2874.8424
|
||||
8600 758.58937 -11610.225 -2770.2002 8.0039334 -2854.822 84.621786 0.14 -2882.1413
|
||||
8700 758.23023 -10178.597 -2769.9169 8.0039334 -2854.4986 84.581724 0.13 -2881.6683
|
||||
8800 743.6008 -12026.268 -2776.0268 8.0039334 -2858.9766 82.949788 0.12 -2886.1335
|
||||
8900 734.90694 -17472.954 -2783.3532 8.0039334 -2865.3332 81.979975 0.11 -2893.7244
|
||||
9000 707.10989 -17006.609 -2785.8037 8.0039334 -2864.6829 78.879173 0.1 -2893.2911
|
||||
9100 695.13334 -20282.325 -2793.2101 8.0039334 -2870.7532 77.543171 0.09 -2899.891
|
||||
9200 642.26078 -20368.748 -2798.1031 8.0039334 -2869.7483 71.645157 0.08 -2899.7706
|
||||
9300 641.79203 -21031.839 -2798.6175 8.0039334 -2870.2104 71.592866 0.07 -2901.0899
|
||||
9400 640.84125 -20243.066 -2799.2216 8.0039334 -2870.7084 71.486807 0.06 -2901.4655
|
||||
9500 609.96498 -23936.746 -2809.3896 8.0039334 -2877.4321 68.042512 0.05 -2908.2797
|
||||
9600 574.1911 -26956.034 -2817.6178 8.0039334 -2881.6696 64.051882 0.04 -2912.6742
|
||||
9700 567.47641 -28321.949 -2818.8602 8.0039334 -2882.163 63.302848 0.03 -2914.4223
|
||||
9800 520.37758 -31000.6 -2828.0252 8.0039334 -2886.0741 58.048903 0.02 -2918.4921
|
||||
9900 506.49368 -32223.744 -2830.1705 8.0039334 -2886.6706 56.500132 0.01 -2920.4741
|
||||
10000 507.13597 -33930.476 -2834.3236 8.0039334 -2890.8954 56.571781 0 -2924.5423
|
||||
Loop time of 17.7279 on 2 procs for 10000 steps with 864 atoms
|
||||
|
||||
|
||||
Total wall time: 0:00:17
|
||||
172
examples/PACKAGES/alchemy/log.25Feb23.alloy.g++.4.1
Normal file
172
examples/PACKAGES/alchemy/log.25Feb23.alloy.g++.4.1
Normal file
@ -0,0 +1,172 @@
|
||||
LAMMPS (8 Feb 2023)
|
||||
Processor partition = 1
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Example for an alchemical transformation simulation of pure copper into an aluminium bronze
|
||||
|
||||
# set up different names for two partitions
|
||||
variable name world pure alloy
|
||||
|
||||
# create pure copper system
|
||||
units metal
|
||||
lattice fcc 3.75
|
||||
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||
region box block 0 6 0 6 0 6
|
||||
create_box 2 box
|
||||
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||
1 by 1 by 2 MPI processor grid
|
||||
|
||||
timestep 0.002
|
||||
create_atoms 1 box
|
||||
Created 864 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
displace_atoms all random 0.3 0.3 0.3 57845645
|
||||
Displacing atoms ...
|
||||
pair_style eam/alloy
|
||||
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||
Reading eam/alloy potential file AlCu.eam.alloy with DATE: 2008-10-01
|
||||
|
||||
# replace 5% of copper with aluminium on the second partition only
|
||||
if "${name} == alloy" then "set type 1 type/fraction 2 0.05 6745234"
|
||||
set type 1 type/fraction 2 0.05 6745234
|
||||
Setting atom values ...
|
||||
37 settings made for type/fraction
|
||||
|
||||
# define ramp variable to combine the two different partitions
|
||||
if "${name} == pure" then "variable ramp equal ramp(1.0,0.0)" else "variable ramp equal ramp(0.0,1.0)"
|
||||
variable ramp equal ramp(0.0,1.0)
|
||||
|
||||
velocity all create 5000.0 6567345
|
||||
fix 1 all nvt temp 2500.0 500.0 0.002
|
||||
fix 2 all alchemy v_ramp
|
||||
|
||||
compute pressure all pressure/alchemy 2
|
||||
|
||||
# only need to output a dump file from one partition
|
||||
#if "${name} == alloy" then # "dump 1 all custom 100 ${name}.lammpstrj id type element x y z" # "dump_modify 1 element Cu Al"
|
||||
|
||||
thermo_style custom step temp press etotal density pe ke f_2 f_2[3]
|
||||
thermo_modify colname f_2 lambda colname f_2[3] EPot_mixed
|
||||
thermo_modify press pressure
|
||||
|
||||
thermo 100
|
||||
run 10000 post no
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 8.6825
|
||||
ghost atom cutoff = 8.6825
|
||||
binsize = 4.34125, bins = 6 6 6
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/alloy, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.474 | 3.474 | 3.474 Mbytes
|
||||
Step Temp Press TotEng Density PotEng KinEng lambda EPot_mixed
|
||||
0 5000 2135632.8 11134.401 7.8067107 10576.643 557.75753 0 10353.88
|
||||
100 2502.4638 98461.445 -2410.2394 7.8067107 -2689.393 279.1536 0.01 -2673.3837
|
||||
200 2471.2133 111478.55 -2390.1144 7.8067107 -2665.7819 275.66756 0.02 -2650.057
|
||||
300 2442.869 109429.75 -2398.101 7.8067107 -2670.6067 272.50571 0.03 -2654.7075
|
||||
400 2420.4514 97114.07 -2425.2882 7.8067107 -2695.2932 270.005 0.04 -2675.755
|
||||
500 2403.3496 98285.746 -2421.1707 7.8067107 -2689.268 268.09727 0.05 -2673.6895
|
||||
600 2388.6644 101125.13 -2418.9873 7.8067107 -2685.4464 266.45911 0.06 -2668.238
|
||||
700 2372.4091 96916.491 -2428.7444 7.8067107 -2693.3902 264.64581 0.07 -2675.3394
|
||||
800 2356.5786 101050.97 -2423.8648 7.8067107 -2686.7446 262.87989 0.08 -2669.6797
|
||||
900 2337.3256 95290.542 -2439.2282 7.8067107 -2699.9604 260.73219 0.09 -2681.0381
|
||||
1000 2314.6552 90348.199 -2452.6965 7.8067107 -2710.8998 258.20327 0.1 -2693.7969
|
||||
1100 2288.9862 87089.44 -2457.7481 7.8067107 -2713.088 255.33986 0.11 -2696.9199
|
||||
1200 2263.1553 89628.642 -2462.9772 7.8067107 -2715.4356 252.45838 0.12 -2698.4983
|
||||
1300 2238.1696 92771.824 -2453.8691 7.8067107 -2703.5403 249.67118 0.13 -2687.6406
|
||||
1400 2209.3333 83029.221 -2477.2462 7.8067107 -2723.7006 246.45446 0.14 -2706.638
|
||||
1500 2181.9468 83386 -2476.3027 7.8067107 -2719.7022 243.39945 0.15 -2704.0915
|
||||
1600 2156.3929 81801.467 -2483.9294 7.8067107 -2724.4783 240.54887 0.16 -2708.3304
|
||||
1700 2133.221 84933.294 -2477.0832 7.8067107 -2715.0473 237.96401 0.17 -2700.142
|
||||
1800 2110.4496 76700.779 -2495.3147 7.8067107 -2730.7386 235.42383 0.18 -2714.6978
|
||||
1900 2091.8774 82568.985 -2488.7082 7.8067107 -2722.0603 233.35207 0.19 -2706.5643
|
||||
2000 2074.8972 79024.983 -2496.7194 7.8067107 -2728.1773 231.45791 0.2 -2710.7
|
||||
2100 2059.7023 72408.502 -2511.6849 7.8067107 -2741.4478 229.76289 0.21 -2725.1617
|
||||
2200 2046.5649 81172.694 -2496.9796 7.8067107 -2725.277 228.2974 0.22 -2708.4618
|
||||
2300 2033.9024 78029.129 -2500.8329 7.8067107 -2727.7178 226.88488 0.23 -2712.5894
|
||||
2400 2022.0535 79691.571 -2499.8173 7.8067107 -2725.3804 225.56311 0.24 -2709.4434
|
||||
2500 2008.7841 75015.359 -2512.1238 7.8067107 -2736.2067 224.08289 0.25 -2719.4159
|
||||
2600 1995.175 74845.99 -2512.2807 7.8067107 -2734.8455 222.56477 0.26 -2718.1619
|
||||
2700 1979.2542 76756.042 -2512.5095 7.8067107 -2733.2983 220.78879 0.27 -2716.0963
|
||||
2800 1961.2518 70627.84 -2527.3853 7.8067107 -2746.1659 218.78059 0.28 -2730.7999
|
||||
2900 1942.4706 70852.114 -2530.3101 7.8067107 -2746.9956 216.68552 0.29 -2731.5024
|
||||
3000 1922.0973 75867.616 -2518.2668 7.8067107 -2732.6796 214.41284 0.3 -2718.4146
|
||||
3100 1898.9538 68984.855 -2540.7552 7.8067107 -2752.5863 211.83116 0.31 -2738.0966
|
||||
3200 1874.9107 73304.621 -2533.0578 7.8067107 -2742.2069 209.14911 0.32 -2727.1933
|
||||
3300 1848.9824 69447.29 -2538.6006 7.8067107 -2744.8574 206.25677 0.33 -2730.768
|
||||
3400 1821.4108 64973.868 -2552.8877 7.8067107 -2756.0688 203.18111 0.34 -2741.4173
|
||||
3500 1795.4926 64688.566 -2555.5739 7.8067107 -2755.8638 200.2899 0.35 -2740.986
|
||||
3600 1769.4009 56451.766 -2573.338 7.8067107 -2770.7174 197.37934 0.36 -2756.4626
|
||||
3700 1745.5646 68268.147 -2554.1634 7.8067107 -2748.8838 194.72036 0.37 -2735.8618
|
||||
3800 1721.4956 64187.24 -2566.0526 7.8067107 -2758.088 192.03542 0.38 -2742.67
|
||||
3900 1699.517 61697.296 -2573.7098 7.8067107 -2763.2935 189.58368 0.39 -2748.648
|
||||
4000 1680.2819 58960.336 -2579.7058 7.8067107 -2767.1438 187.43798 0.4 -2753.7317
|
||||
4100 1662.2079 49607.708 -2596.9862 7.8067107 -2782.408 185.42179 0.41 -2769.1633
|
||||
4200 1645.509 59615.376 -2582.865 7.8067107 -2766.424 183.55901 0.42 -2753.41
|
||||
4300 1628.9336 57213.496 -2589.5734 7.8067107 -2771.2834 181.71 0.43 -2758.0401
|
||||
4400 1614.2369 57319.854 -2586.3446 7.8067107 -2766.4151 180.07055 0.44 -2754.0451
|
||||
4500 1598.6946 51130.713 -2601.8813 7.8067107 -2780.2181 178.33679 0.45 -2767.0321
|
||||
4600 1583.2816 51209.179 -2603.9706 7.8067107 -2780.5881 176.61745 0.46 -2767.2662
|
||||
4700 1567.3743 51391.73 -2607.2614 7.8067107 -2782.1044 174.84296 0.47 -2768.7565
|
||||
4800 1550.9245 48164.466 -2614.2775 7.8067107 -2787.2854 173.00797 0.48 -2773.7243
|
||||
4900 1532.697 47270.397 -2618.365 7.8067107 -2789.3397 170.97466 0.49 -2777.023
|
||||
5000 1513.7604 46127.507 -2621.8979 7.8067107 -2790.7601 168.86225 0.5 -2777.2298
|
||||
5100 1494.431 45092.69 -2625.438 7.8067107 -2792.144 166.70602 0.51 -2779.7181
|
||||
5200 1472.5263 41485.775 -2633.6681 7.8067107 -2797.9306 164.26252 0.52 -2785.5483
|
||||
5300 1450.7978 39849.775 -2638.7965 7.8067107 -2800.6352 161.83868 0.53 -2788.9493
|
||||
5400 1428.063 39330.898 -2642.8749 7.8067107 -2802.1774 159.30258 0.54 -2790.3996
|
||||
5500 1404.4139 35674.647 -2652.8811 7.8067107 -2809.5456 156.66449 0.55 -2797.922
|
||||
5600 1380.8619 33960.907 -2659.5731 7.8067107 -2813.6103 154.03722 0.56 -2801.8887
|
||||
5700 1357.9957 39122.559 -2650.1374 7.8067107 -2801.6239 151.48646 0.57 -2790.3487
|
||||
5800 1334.8385 34996.372 -2660.8794 7.8067107 -2809.7826 148.90324 0.58 -2798.8306
|
||||
5900 1312.6203 30380.598 -2669.3511 7.8067107 -2815.7758 146.42476 0.59 -2804.9873
|
||||
6000 1290.7337 26910.214 -2681.9175 7.8067107 -2825.9008 143.98328 0.6 -2814.8623
|
||||
6100 1269.6552 34273.343 -2670.9025 7.8067107 -2812.5345 141.63195 0.61 -2801.9949
|
||||
6200 1249.4502 29640.216 -2678.1477 7.8067107 -2817.5258 139.37805 0.62 -2807.555
|
||||
6300 1229.8377 25302.881 -2688.545 7.8067107 -2825.7352 137.19025 0.63 -2815.3412
|
||||
6400 1211.0142 23978.218 -2694.5096 7.8067107 -2829.6 135.09045 0.64 -2820.0498
|
||||
6500 1192.3094 25315.547 -2693.4635 7.8067107 -2826.4674 133.0039 0.65 -2817.3114
|
||||
6600 1174.741 22676.36 -2697.5642 7.8067107 -2828.6083 131.04413 0.66 -2819.6239
|
||||
6700 1117.0829 22497.41 -2705.1682 7.8067107 -2829.7804 124.61228 0.67 -2821.3556
|
||||
6800 1125.4062 18193.925 -2713.8679 7.8067107 -2839.4086 125.54075 0.68 -2830.2267
|
||||
6900 1142.0728 19451.295 -2711.5199 7.8067107 -2838.9199 127.39994 0.69 -2830.1189
|
||||
7000 1148.9469 16757.031 -2713.1595 7.8067107 -2841.3263 128.16676 0.7 -2832.475
|
||||
7100 1044.2332 11734.429 -2733.5965 7.8067107 -2850.0822 116.48578 0.71 -2841.8886
|
||||
7200 1052.3967 15187.579 -2724.5284 7.8067107 -2841.9248 117.39644 0.72 -2834.2885
|
||||
7300 1045.9123 13697.721 -2730.1401 7.8067107 -2846.8132 116.67309 0.73 -2838.9073
|
||||
7400 1082.9806 13330.213 -2726.8679 7.8067107 -2847.676 120.80812 0.74 -2840.2979
|
||||
7500 980.30736 7070.7227 -2746.9678 7.8067107 -2856.3226 109.35476 0.75 -2848.8706
|
||||
7600 982.86602 7694.074 -2745.5399 7.8067107 -2855.1801 109.64018 0.76 -2848.0154
|
||||
7700 958.27863 2336.6244 -2758.806 7.8067107 -2865.7035 106.89742 0.77 -2858.6468
|
||||
7800 991.25495 564.58952 -2758.6032 7.8067107 -2869.1791 110.57598 0.78 -2862.4362
|
||||
7900 901.65217 3569.7496 -2763.0681 7.8067107 -2863.6488 100.58066 0.79 -2857.2329
|
||||
8000 871.00782 -883.03123 -2773.2412 7.8067107 -2870.4035 97.162233 0.8 -2864.1778
|
||||
8100 873.73598 -977.71992 -2772.9758 7.8067107 -2870.4424 97.466563 0.81 -2864.7239
|
||||
8200 859.27838 2535.4088 -2769.5501 7.8067107 -2865.4039 95.853797 0.82 -2859.9007
|
||||
8300 874.88664 -6039.909 -2781.7213 7.8067107 -2879.3163 97.594921 0.83 -2873.9613
|
||||
8400 810.33098 -5386.015 -2787.6011 7.8067107 -2877.9947 90.393641 0.84 -2872.8494
|
||||
8500 812.50682 -6372.4363 -2789.0713 7.8067107 -2879.7077 90.636359 0.85 -2874.8424
|
||||
8600 792.27145 -11610.225 -2798.2095 7.8067107 -2886.5886 88.379073 0.86 -2882.1413
|
||||
8700 737.92522 -10178.597 -2803.4114 7.8067107 -2885.7281 82.316669 0.87 -2881.6683
|
||||
8800 744.31065 -12026.268 -2806.8078 7.8067107 -2889.8367 83.028973 0.88 -2886.1335
|
||||
8900 709.31385 -17472.954 -2818.1084 7.8067107 -2897.2334 79.125027 0.89 -2893.7244
|
||||
9000 704.20763 -17006.609 -2817.9144 7.8067107 -2896.4698 78.555422 0.9 -2893.2911
|
||||
9100 697.72956 -20282.325 -2824.94 7.8067107 -2902.7728 77.832782 0.91 -2899.891
|
||||
9200 696.15397 -20368.748 -2824.7243 7.8067107 -2902.3813 77.657023 0.92 -2899.7706
|
||||
9300 627.98752 -21031.839 -2833.3613 7.8067107 -2903.4142 70.052953 0.93 -2901.0899
|
||||
9400 603.4933 -20243.066 -2836.1082 7.8067107 -2903.4288 67.320586 0.94 -2901.4655
|
||||
9500 599.69375 -23936.746 -2843.0066 7.8067107 -2909.9033 66.89674 0.95 -2908.2797
|
||||
9600 587.42611 -26956.034 -2848.4377 7.8067107 -2913.966 65.528267 0.96 -2912.6742
|
||||
9700 567.47718 -28321.949 -2852.1171 7.8067107 -2915.42 63.302933 0.97 -2914.4223
|
||||
9800 524.81105 -31000.6 -2860.6103 7.8067107 -2919.1537 58.543462 0.98 -2918.4921
|
||||
9900 507.60008 -32223.744 -2864.192 7.8067107 -2920.8155 56.623552 0.99 -2920.4741
|
||||
10000 521.28866 -33930.476 -2866.3918 7.8067107 -2924.5423 58.150534 1 -2924.5423
|
||||
Loop time of 17.7277 on 2 procs for 10000 steps with 864 atoms
|
||||
|
||||
|
||||
Total wall time: 0:00:17
|
||||
13
examples/PACKAGES/alchemy/log.25Feb23.twowater.g++.4
Normal file
13
examples/PACKAGES/alchemy/log.25Feb23.twowater.g++.4
Normal file
@ -0,0 +1,13 @@
|
||||
LAMMPS (8 Feb 2023)
|
||||
Running on 2 partitions of processors
|
||||
Starting alchemical transformation at 0%
|
||||
Alchemical transformation progress: 10%
|
||||
Alchemical transformation progress: 20%
|
||||
Alchemical transformation progress: 30%
|
||||
Alchemical transformation progress: 40%
|
||||
Alchemical transformation progress: 50%
|
||||
Alchemical transformation progress: 60%
|
||||
Alchemical transformation progress: 70%
|
||||
Alchemical transformation progress: 80%
|
||||
Alchemical transformation progress: 90%
|
||||
Alchemical transformation progress: 100%
|
||||
412
examples/PACKAGES/alchemy/log.25Feb23.twowater.g++.4.0
Normal file
412
examples/PACKAGES/alchemy/log.25Feb23.twowater.g++.4.0
Normal file
@ -0,0 +1,412 @@
|
||||
LAMMPS (8 Feb 2023)
|
||||
Processor partition = 0
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Example for an alchemical transformation of two water molecules into a hydronium and hydroxyl ion
|
||||
# WARNING: This input is intended for demonstrating the method only,
|
||||
# the force field parameters are mostly made up and NOT suitable for production simulations.
|
||||
|
||||
# set up different names for two partitions
|
||||
variable name world twowater twoions
|
||||
|
||||
units real
|
||||
atom_style full
|
||||
atom_modify map array
|
||||
region box block -5 5 -5 5 -5 5
|
||||
boundary p p p
|
||||
create_box 2 box bond/types 2 angle/types 2 extra/bond/per/atom 3 extra/angle/per/atom 3 extra/special/per/atom 3
|
||||
Created orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
1 by 1 by 2 MPI processor grid
|
||||
|
||||
mass 1 15.9994
|
||||
mass 2 1.008
|
||||
|
||||
pair_style lj/cut/coul/cut 10.0
|
||||
pair_coeff 1 1 0.1553 3.166
|
||||
pair_coeff 1 2 0.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0
|
||||
|
||||
bond_style harmonic
|
||||
bond_coeff * 1000.0 1.0
|
||||
|
||||
angle_style harmonic
|
||||
angle_coeff * 100.0 109.47
|
||||
|
||||
molecule water h2o.mol
|
||||
Read molecule template water:
|
||||
1 molecules
|
||||
0 fragments
|
||||
3 atoms with max type 2
|
||||
2 bonds with max type 1
|
||||
1 angles with max type 1
|
||||
0 dihedrals with max type 0
|
||||
0 impropers with max type 0
|
||||
|
||||
# create the two molecules we want to transform ...
|
||||
create_atoms 0 single -2.0 0.0 0.0 mol water 453624
|
||||
Created 3 atoms
|
||||
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
create_atoms CPU = 0.003 seconds
|
||||
create_atoms 0 single 2.0 0.0 0.0 mol water 767353
|
||||
Created 3 atoms
|
||||
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
# ... and put them in a group
|
||||
group transform id 1:6
|
||||
6 atoms in group transform
|
||||
|
||||
# now fill the rest of the box with more water
|
||||
create_atoms 0 random 32 34564 NULL mol water 25367 overlap 1.33
|
||||
Created 96 atoms
|
||||
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
# change topology and settings for the two states
|
||||
# we cannot simply create a different topology directly or
|
||||
# load a different data file because the order and position
|
||||
# of all atoms must be maintained across both replica
|
||||
|
||||
# we first have to remove all topology data in the transform group
|
||||
delete_bonds transform bond 1
|
||||
System init for delete_bonds ...
|
||||
Generated 0 of 1 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 = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 2 2 2
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut/coul/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Deleting bonds ...
|
||||
68 total bonds, 64 turned on, 4 turned off
|
||||
34 total angles, 34 turned on, 0 turned off
|
||||
0 total dihedrals, 0 turned on, 0 turned off
|
||||
0 total impropers, 0 turned on, 0 turned off
|
||||
delete_bonds transform angle 1 remove
|
||||
System init for delete_bonds ...
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Deleting bonds ...
|
||||
64 total bonds, 64 turned on, 0 turned off
|
||||
32 total angles, 32 turned on, 0 turned off
|
||||
0 total dihedrals, 0 turned on, 0 turned off
|
||||
0 total impropers, 0 turned on, 0 turned off
|
||||
|
||||
# then generate different topologies for the two partitions. select by name.
|
||||
if "${name} == twowater" then "create_bonds single/bond 2 1 2" "create_bonds single/bond 2 1 3" "create_bonds single/bond 2 4 5" "create_bonds single/bond 2 4 6" "create_bonds single/angle 2 2 1 3" "create_bonds single/angle 2 5 4 6" else "create_bonds single/bond 2 1 2" "create_bonds single/bond 2 3 4" "create_bonds single/bond 2 4 5" "create_bonds single/bond 2 4 6" "create_bonds single/angle 2 3 4 5" "create_bonds single/angle 2 5 4 6" "create_bonds single/angle 2 3 4 6" "set atom 1 charge -1.1354" "set atom 2 charge 0.1354" "set atom 3 charge 0.56775" "set atom 4 charge -0.70305" "set atom 5*6 charge 0.56775"
|
||||
create_bonds single/bond 2 1 2
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/bond 2 1 3
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/bond 2 4 5
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/bond 2 4 6
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/angle 2 2 1 3
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/angle 2 5 4 6
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
|
||||
velocity all create 300.0 5463576
|
||||
timestep 0.2
|
||||
|
||||
# define ramp variable to combine the two different partitions
|
||||
if "${name} == twowater" then "variable ramp equal ramp(1.0,0.0)" else "variable ramp equal ramp(0.0,1.0)"
|
||||
variable ramp equal ramp(1.0,0.0)
|
||||
|
||||
# since the trajectory and forces are kept identical through fix alchemy,
|
||||
# we can do fix npt simulations, but we must use the "mixed" pressure
|
||||
|
||||
fix integrate all npt temp 300 300 1.0 iso 1.0 1.0 10.0
|
||||
fix transform all alchemy v_ramp
|
||||
compute pressure all pressure/alchemy transform
|
||||
fix_modify integrate press pressure
|
||||
|
||||
# only need to output a dump file from one partition
|
||||
# if "${name} == twowater" then # "dump 1 all atom 100 ${name}.lammpstrj" # "dump_modify 1 sort id"
|
||||
|
||||
thermo_style custom step temp press etotal density pe ke f_transform f_transform[3]
|
||||
thermo_modify colname f_transform lambda colname f_transform[3] EPot_mixed
|
||||
thermo_modify press pressure
|
||||
|
||||
thermo 100
|
||||
run 20000
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.535 | 7.535 | 7.535 Mbytes
|
||||
Step Temp Press TotEng Density PotEng KinEng lambda EPot_mixed
|
||||
0 300 184631.17 -802.19609 1.0171193 -892.51464 90.318545 1 -892.51464
|
||||
100 293.4335 -513.97927 189.09028 0.3029684 100.74865 88.341623 0.995 207.29243
|
||||
200 320.81838 1513.3 111.09325 0.64509407 14.507087 96.586165 0.99 46.402434
|
||||
300 261.53825 -3808.6942 -538.67351 0.88817871 -617.41269 78.739179 0.985 -614.76481
|
||||
400 308.32444 1375.0327 -804.08042 0.97694485 -896.90513 92.824715 0.98 -897.24386
|
||||
500 292.60623 -12843.384 -1141.5985 1.0140814 -1229.691 88.092563 0.975 -1221.948
|
||||
600 326.16112 91608.645 2882.4855 1.0263567 2784.2908 98.194659 0.97 2786.0743
|
||||
700 317.22811 -60420.408 -1517.0601 0.9919143 -1612.5654 95.505272 0.965 -1616.7677
|
||||
800 309.94673 -56793.931 -1549.4612 1.0024958 -1642.7743 93.313126 0.96 -1640.8606
|
||||
900 272.80718 -5076.2282 -1266.6775 1.0141078 -1348.8093 82.131824 0.955 -1357.1812
|
||||
1000 346.52557 -16919.192 -1406.675 1.0170322 -1511.0006 104.32562 0.95 -1514.1398
|
||||
1100 300.62984 -51826.972 -2469.2821 1.0063592 -2559.7903 90.508164 0.945 -2565.9668
|
||||
1200 293.72767 45222.698 2039.1938 1.0272336 1950.7636 88.430186 0.94 1951.1683
|
||||
1300 289.4971 94600.203 2184.5096 1.0298091 2097.3531 87.156524 0.935 2088.1011
|
||||
1400 328.98666 35468.53 1816.723 1.0198467 1717.6777 99.045321 0.93 1716.9268
|
||||
1500 392.9407 41220.21 1820.7312 1.0194044 1702.4317 118.29944 0.925 1690.6416
|
||||
1600 284.90093 -37995.141 -2439.9256 1.0068497 -2525.6984 85.772791 0.92 -2529.5874
|
||||
1700 267.67454 25275.255 1612.5912 1.0313556 1532.0046 80.586582 0.915 1520.9695
|
||||
1800 247.16495 -68222.994 -2699.1903 1.0018048 -2773.6022 74.41193 0.91 -2788.9545
|
||||
1900 328.41849 -51979.665 -2339.7432 1.0154952 -2438.6175 98.874268 0.905 -2461.3422
|
||||
2000 313.8715 21726.003 1473.9594 1.018831 1379.4647 94.494725 0.9 1363.0739
|
||||
2100 296.07341 66130.11 1379.1597 1.0224882 1290.0233 89.136398 0.895 1272.1884
|
||||
2200 282.67889 51746.464 2376.377 1.0362683 2291.2732 85.103821 0.89 2276.1488
|
||||
2300 281.04207 -71937.759 -2791.0867 1.0111968 -2875.6977 84.611035 0.885 -2892.2526
|
||||
2400 321.00806 -51658.758 -2507.6376 1.0168161 -2604.2809 96.643269 0.88 -2622.9732
|
||||
2500 288.95906 49645.753 2361.024 1.0355648 2274.0295 86.99454 0.875 2275.0348
|
||||
2600 303.0064 -48470.216 -1973.9561 1.000439 -2065.1798 91.223657 0.87 -2082.5895
|
||||
2700 361.7083 54973.584 1929.0772 1.0223169 1820.1806 108.89656 0.865 1817.1972
|
||||
2800 289.27827 33564.017 1783.5154 1.0257088 1696.4248 87.090642 0.86 1682.9162
|
||||
2900 283.94365 -47190.274 -2286.9529 1.0059224 -2372.4375 85.484591 0.855 -2395.9575
|
||||
3000 337.10996 61988.686 2289.363 1.0258 2187.8721 101.49094 0.85 2168.1085
|
||||
3100 305.28249 -50123.109 -1913.7375 1.0143567 -2005.6464 91.9089 0.845 -2040.3453
|
||||
3200 270.19471 -18114.265 -1961.3048 1.0132413 -2042.6502 81.345309 0.84 -2076.9595
|
||||
3300 263.39996 -109301.89 -2351.6647 0.99956867 -2430.9643 79.299671 0.835 -2471.0269
|
||||
3400 249.01722 -37585.949 -2423.3849 1.0080932 -2498.3544 74.969576 0.83 -2537.734
|
||||
3500 267.88868 65528.865 2164.3882 1.0390872 2083.7372 80.651054 0.825 2061.6421
|
||||
3600 351.46458 -67583.574 -2861.4561 1.0059621 -2967.2687 105.81256 0.82 -3004.5028
|
||||
3700 332.82565 -61204.843 -2275.2765 1.0053485 -2375.4776 100.20109 0.815 -2415.4435
|
||||
3800 298.0279 61123.085 1951.1943 1.020672 1861.4695 89.724819 0.81 1831.9734
|
||||
3900 317.04715 43210.045 1848.3875 1.0287838 1752.9367 95.450792 0.805 1721.1961
|
||||
4000 261.75174 -111920.72 -3274.707 0.99457106 -3353.5105 78.803455 0.8 -3394.3528
|
||||
4100 338.34245 89763.083 2115.4809 1.0318272 2013.6189 101.86199 0.795 1973.419
|
||||
4200 288.52623 19989.792 1758.0617 1.0204119 1671.1975 86.86423 0.79 1633.1439
|
||||
4300 322.05593 -33791.403 -2107.1643 1.0155065 -2204.1231 96.958741 0.785 -2246.4353
|
||||
4400 280.59054 -27839.599 -1534.3265 1.0123506 -1618.8016 84.475096 0.78 -1672.1425
|
||||
4500 296.08336 75206.112 2789.7494 1.0329133 2700.61 89.139393 0.775 2670.4908
|
||||
4600 288.02094 -67445.101 -2983.5242 0.99579107 -3070.2363 86.712106 0.77 -3132.6352
|
||||
4700 332.21641 -83964.647 -2746.0748 1.0053915 -2846.0925 100.01768 0.765 -2916.6652
|
||||
4800 305.52557 -93111.682 -2354.6562 0.99824941 -2446.6383 91.982082 0.76 -2514.039
|
||||
4900 272.82262 -53664.198 -2790.1342 0.99527907 -2872.2707 82.136472 0.755 -2947.2062
|
||||
5000 288.96388 39846.089 1975.7895 1.0371205 1888.7935 86.99599 0.75 1833.3716
|
||||
5100 293.25543 -71819.425 -2916.8817 0.99452016 -3005.1697 88.288011 0.745 -3069.7618
|
||||
5200 296.16486 -64484.821 -2416.0381 1.0153125 -2505.2021 89.163931 0.74 -2589.6878
|
||||
5300 342.07246 60255.985 1749.8984 1.0306374 1646.9134 102.98496 0.735 1608.5673
|
||||
5400 295.53315 61421.189 1620.6432 1.0334762 1531.6695 88.973746 0.73 1492.0969
|
||||
5500 285.1755 24845.113 1144.9009 1.0335035 1059.0454 85.855455 0.725 1014.0263
|
||||
5600 276.79246 66244.072 1523.3405 1.0251134 1440.0089 83.331641 0.72 1390.9078
|
||||
5700 288.43485 14629.129 1208.7278 1.02997 1121.8911 86.836719 0.715 1074.3779
|
||||
5800 276.64233 59262.97 914.26981 1.0332305 830.98336 83.286443 0.71 763.27415
|
||||
5900 358.25384 -111203.23 -3370.7104 1.006331 -3478.567 107.85655 0.705 -3561.6283
|
||||
6000 327.82233 -62936.335 -1881.2426 1.0106476 -1979.9373 98.694786 0.7 -2062.107
|
||||
6100 309.86553 -59110.381 -2698.4147 1.0076375 -2791.7034 93.28868 0.695 -2870.9566
|
||||
6200 294.95752 -58011.845 -1819.201 1.0161986 -1908.0014 88.800448 0.69 -1971.2586
|
||||
6300 307.27252 59016.127 1186.0709 1.0225343 1093.5629 92.508022 0.685 1032.9616
|
||||
6400 292.21611 -118857.83 -2992.9227 1.0031304 -3080.8978 87.975114 0.68 -3175.9068
|
||||
6500 332.21108 97132.547 2290.2726 1.0349752 2190.2565 100.01607 0.675 2121.4674
|
||||
6600 321.93985 -50017.836 -2484.5919 1.0076385 -2581.5157 96.923796 0.67 -2673.6819
|
||||
6700 299.07231 -98136.241 -3013.1584 1.0106261 -3103.1976 90.039252 0.665 -3194.0694
|
||||
6800 285.33731 28487.407 455.68104 1.017186 369.77687 85.904169 0.66 294.02418
|
||||
6900 296.41387 50054.533 2028.1018 1.0445934 1938.8629 89.238897 0.655 1851.1397
|
||||
7000 318.34109 -71579.897 -3114.0324 1.007304 -3209.8728 95.840345 0.65 -3305.5715
|
||||
7100 317.2192 12370.315 1139.7687 1.0177238 1044.2661 95.502589 0.645 961.68146
|
||||
7200 289.91091 43944.333 1213.4685 1.0302599 1126.1874 87.281105 0.64 1039.3329
|
||||
7300 324.81227 42859.173 1288.5297 1.0300698 1190.7411 97.788572 0.635 1083.5764
|
||||
7400 305.72634 76516.72 2404.9462 1.0580673 2312.9036 92.042527 0.63 2218.3674
|
||||
7500 283.77479 -87225.247 -3401.4354 0.9936609 -3486.8692 85.433754 0.625 -3581.9003
|
||||
7600 318.72048 16084.995 1848.3396 1.0296163 1752.385 95.954566 0.62 1653.5125
|
||||
7700 307.36895 74007.024 1754.8928 1.0363553 1662.3558 92.537054 0.615 1572.8568
|
||||
7800 297.44704 28693.429 1261.5958 1.0206402 1172.0459 89.549946 0.61 1093.5903
|
||||
7900 288.47173 -94644.76 -2455.4369 1.0095244 -2542.2847 86.847823 0.605 -2648.2974
|
||||
8000 280.5001 63255.987 1584.7287 1.020587 1500.2808 84.44787 0.6 1418.7144
|
||||
8100 320.23351 68383.584 2300.142 1.0419027 2203.7319 96.410082 0.595 2111.2616
|
||||
8200 354.86765 50012.316 1350.3752 1.0292074 1243.5381 106.8371 0.59 1149.0631
|
||||
8300 278.8859 24200.145 772.82478 1.0232468 688.86288 83.961894 0.585 569.83331
|
||||
8400 295.95754 -12010.401 1078.6687 1.0200526 989.56716 89.101514 0.58 872.63254
|
||||
8500 289.57525 -64114.236 -3017.5291 1.0062613 -3104.7091 87.18005 0.575 -3227.8592
|
||||
8600 329.23192 15948.893 1427.4791 1.0271511 1328.3599 99.119161 0.57 1211.3868
|
||||
8700 327.45998 39407.811 1697.908 1.0343756 1599.3223 98.585695 0.565 1480.9482
|
||||
8800 296.99753 18017.036 871.11717 1.0178295 781.70256 89.414616 0.56 657.09357
|
||||
8900 289.10016 79527.35 2536.8041 1.0462904 2449.7671 87.037018 0.555 2338.4742
|
||||
9000 260.53308 -51430.717 -2680.1664 1.0040128 -2758.603 78.436561 0.55 -2894.7913
|
||||
9100 314.17867 40043.249 2043.6144 1.0361707 1949.0272 94.5872 0.545 1836.5399
|
||||
9200 362.21236 -55153.163 -2232.4614 1.0102652 -2341.5097 109.04831 0.54 -2497.8765
|
||||
9300 266.62049 -72193.959 -2980.9254 1.0063615 -3061.1946 80.269248 0.535 -3225.2604
|
||||
9400 259.59316 7674.9295 1378.2484 1.0326879 1300.0948 78.153588 0.53 1171.7119
|
||||
9500 278.72962 -33127.835 -2581.8908 1.0163553 -2665.8057 83.914845 0.525 -2805.1711
|
||||
9600 299.09039 24570.664 1839.3275 1.025317 1749.2828 90.044695 0.52 1631.8392
|
||||
9700 336.65655 37767.059 1415.9074 1.0245842 1314.5529 101.35443 0.515 1218.4022
|
||||
9800 279.68112 -55007.939 -2548.4947 1.0129837 -2632.696 84.201305 0.51 -2775.6909
|
||||
9900 300.55694 14964.424 1332.287 1.0176315 1241.8008 90.486218 0.505 1127.7276
|
||||
10000 276.77193 -75638.817 -3100.7483 1.0019055 -3184.0738 83.325459 0.5 -3341.663
|
||||
10100 316.26926 61548.301 2406.8933 1.0427988 2311.6767 95.216598 0.495 2206.7159
|
||||
10200 297.28171 56814.839 2073.2348 1.0270036 1983.7347 89.500171 0.49 1859.0176
|
||||
10300 276.84774 83572.576 1920.2202 1.0322243 1836.8719 83.348283 0.485 1704.2233
|
||||
10400 263.28687 -16549.994 1144.9186 1.0177296 1065.6529 79.265623 0.48 940.36339
|
||||
10500 332.79252 47379.311 1538.8168 1.0223403 1438.6257 100.19112 0.475 1301.3762
|
||||
10600 329.01105 39299.248 1330.9914 1.0230094 1231.9387 99.052663 0.47 1077.5639
|
||||
10700 339.21335 -4217.0313 981.9193 1.0235915 879.79511 102.12419 0.465 741.87272
|
||||
10800 297.11192 -80013.424 -3682.9794 1.0009566 -3772.4285 89.449054 0.46 -3958.8283
|
||||
10900 299.63096 47783.864 1833.1832 1.0435283 1742.9757 90.207441 0.455 1620.9328
|
||||
11000 363.58243 67370.65 1769.9236 1.0450565 1660.4628 109.46079 0.45 1543.803
|
||||
11100 306.04664 50246.004 1323.7676 1.0341876 1231.6287 92.138957 0.445 1063.5345
|
||||
11200 255.68488 43750.967 2205.2392 1.0530607 2128.2623 76.976955 0.44 1986.9636
|
||||
11300 271.71957 -40289.299 -3083.4093 1.0168497 -3165.2137 81.804388 0.435 -3344.1558
|
||||
11400 291.74007 -115249.24 -3319.2153 1.0067921 -3407.0471 87.831795 0.43 -3569.0256
|
||||
11500 270.22077 28235.119 596.78348 1.0195886 515.43032 81.353155 0.425 373.78255
|
||||
11600 297.08506 29790.701 1031.3514 1.0317561 941.91046 89.440969 0.42 803.92835
|
||||
11700 295.33119 -101140.58 -3068.1166 1.0107252 -3157.0295 88.912943 0.415 -3348.5652
|
||||
11800 308.77287 -120312.75 -3553.1266 0.99681611 -3646.0863 92.95972 0.41 -3835.4663
|
||||
11900 293.86337 82287.969 1847.0953 1.0331446 1758.6242 88.47104 0.405 1625.4846
|
||||
12000 279.9866 27919.689 2249.3175 1.0384909 2165.0242 84.293273 0.4 2028.6311
|
||||
12100 292.19439 47035.018 1220.3593 1.0210948 1132.3908 87.968573 0.395 976.68113
|
||||
12200 317.78325 46886.483 2039.3721 1.0310567 1943.6997 95.672401 0.39 1763.6359
|
||||
12300 357.44038 51492.35 1898.3396 1.0414835 1790.7279 107.61165 0.385 1638.1905
|
||||
12400 288.16042 -50528.478 -2837.5599 1.0130798 -2924.314 86.7541 0.38 -3115.1383
|
||||
12500 300.37356 -114034.29 -3091.586 1.0130272 -3182.017 90.431009 0.375 -3364.511
|
||||
12600 265.4402 73960.28 1297.3012 1.0343798 1217.3873 79.913907 0.37 1094.544
|
||||
12700 287.07994 22722.337 1711.9055 1.0268893 1625.4767 86.428809 0.365 1490.443
|
||||
12800 315.39745 46072.191 926.21362 1.0205906 831.25949 94.954129 0.36 662.83753
|
||||
12900 307.48549 -120472.73 -3181.5418 1.005689 -3274.1139 92.57214 0.355 -3469.7834
|
||||
13000 291.00577 -59154.878 -2652.0402 1.012821 -2739.6509 87.610727 0.35 -2966.2448
|
||||
13100 318.37718 86703.775 2087.145 1.036209 1991.2938 95.851211 0.345 1819.7078
|
||||
13200 280.41509 -107033.79 -2683.9682 1.0135499 -2768.3905 84.422277 0.34 -2953.8355
|
||||
13300 275.01919 112086.85 2632.1169 1.0437945 2549.3192 82.797775 0.335 2394.6707
|
||||
13400 299.46547 -111959.62 -3475.4354 0.98732074 -3565.593 90.157617 0.33 -3792.6798
|
||||
13500 275.65631 17625.49 1762.6531 1.0255473 1679.6636 82.989588 0.325 1521.2745
|
||||
13600 302.63525 122466.63 2853.8095 1.0438137 2762.6976 91.111917 0.32 2611.7188
|
||||
13700 302.21323 -94399.663 -3003.7573 1.0068914 -3094.7422 90.984863 0.315 -3328.4539
|
||||
13800 305.70483 30039.825 1792.3286 1.0225478 1700.2926 92.036052 0.31 1502.8476
|
||||
13900 273.15564 -27822.597 -2346.6702 1.0131002 -2428.9069 82.236732 0.305 -2683.7804
|
||||
14000 257.14635 -1821.0012 1378.2522 1.0172653 1300.8352 77.416947 0.3 1067.8821
|
||||
14100 323.74174 -76139.363 -2747.4152 1.0139806 -2844.8814 97.466276 0.295 -3052.598
|
||||
14200 274.99913 54440.943 983.27131 1.0186356 900.47957 82.791736 0.29 767.64274
|
||||
14300 291.8774 1281.7286 1258.7881 1.0214356 1170.915 87.873139 0.285 1042.8585
|
||||
14400 308.97245 -47961.551 -2680.7892 1.0155221 -2773.809 93.019806 0.28 -3007.3204
|
||||
14500 311.05309 86026.739 2115.2413 1.0311818 2021.5951 93.646208 0.275 1830.5463
|
||||
14600 269.27432 -12972.747 971.48792 1.0172239 890.41971 81.068214 0.27 711.81484
|
||||
14700 262.20739 -77722.459 -3215.6796 1.0029421 -3294.6202 78.940634 0.265 -3537.1929
|
||||
14800 300.33592 -107332.8 -2798.6664 1.0126785 -2889.086 90.419677 0.26 -3125.8439
|
||||
14900 307.0173 -73204.94 -2652.7275 1.016875 -2745.1587 92.431185 0.255 -3016.0143
|
||||
15000 334.08711 64440.709 1615.3385 1.0369481 1514.7576 100.58087 0.25 1323.9179
|
||||
15100 293.46703 35179.395 2020.1996 1.0331703 1931.8479 88.351717 0.245 1768.9681
|
||||
15200 307.80546 54006.291 1111.7619 1.0246134 1019.0935 92.668471 0.24 822.22754
|
||||
15300 336.59792 33832.907 1282.8271 1.0242407 1181.4903 101.33678 0.235 956.25285
|
||||
15400 285.46526 -99629.94 -2336.7535 1.0041261 -2422.6962 85.942688 0.23 -2730.1887
|
||||
15500 269.15938 122546.45 3012.0792 1.0318941 2931.0456 81.033612 0.225 2695.4331
|
||||
15600 294.50818 -104733.19 -1914.0242 1.0017241 -2002.6894 88.665166 0.22 -2281.5773
|
||||
15700 321.05125 -40438.501 -1721.9536 1.0125007 -1818.6099 96.656271 0.215 -2084.0893
|
||||
15800 303.22185 -42224.408 -2145.481 1.0090867 -2236.7695 91.288521 0.21 -2506.3355
|
||||
15900 281.65025 78652.063 2791.9418 1.0460521 2707.1477 84.794136 0.205 2500.7128
|
||||
16000 286.5056 63174.412 1725.0409 1.0185277 1638.785 86.255897 0.2 1442.2427
|
||||
16100 271.74574 -75051.584 -2101.5778 1.0091727 -2183.3901 81.812265 0.195 -2447.1967
|
||||
16200 266.40007 -64120.09 -2223.3693 1.0064388 -2303.5722 80.202888 0.19 -2525.4243
|
||||
16300 330.67137 46204.124 1837.3168 1.0271037 1737.7643 99.552523 0.185 1529.8186
|
||||
16400 310.94573 18510.676 1531.823 1.0188695 1438.2091 93.613887 0.18 1195.3041
|
||||
16500 270.29191 79005.409 1989.9392 1.0354088 1908.5646 81.374574 0.175 1678.7342
|
||||
16600 334.24108 17143.221 1644.1483 1.0230561 1543.521 100.62723 0.17 1379.3215
|
||||
16700 292.28721 -78618.031 -2768.3997 0.99940789 -2856.3962 87.996518 0.165 -3087.379
|
||||
16800 346.09157 -69398.937 -2647.1375 1.0153026 -2751.3325 104.19496 0.16 -3011.3476
|
||||
16900 284.37042 39314.526 2287.7061 1.0343186 2202.093 85.613074 0.155 2045.8316
|
||||
17000 281.69389 86032.163 1817.9125 1.0237583 1733.1052 84.807275 0.15 1528.8391
|
||||
17100 297.2629 55128.393 2617.4156 1.0419182 2527.9211 89.494508 0.145 2369.0347
|
||||
17200 328.81472 47063.86 1880.9768 1.0364627 1781.9832 98.993555 0.14 1526.7115
|
||||
17300 313.41363 -46685.063 -2310.803 1.008117 -2405.1599 94.356878 0.135 -2685.8034
|
||||
17400 288.17114 68721.523 2771.6788 1.0429105 2684.9215 86.757326 0.13 2490.5845
|
||||
17500 260.01702 -23324.539 -1436.6738 1.0100415 -1514.955 78.281195 0.125 -1812.4813
|
||||
17600 297.6633 72795.463 2635.741 1.0362827 2546.126 89.615054 0.12 2336.0152
|
||||
17700 301.02937 93833.118 2690.518 1.0276466 2599.8896 90.628448 0.115 2364.8751
|
||||
17800 238.92837 -78317.212 -2175.2589 1.0084077 -2247.1911 71.932208 0.11 -2579.4429
|
||||
17900 299.27724 -65278.891 -2589.1173 1.0034773 -2679.2182 90.10095 0.105 -2987.498
|
||||
18000 315.15753 -72437.481 -2338.6068 1.0136139 -2433.4887 94.881898 0.1 -2718.125
|
||||
18100 268.39411 -42194.209 -2285.3824 1.0108104 -2366.1856 80.803219 0.095 -2656.3853
|
||||
18200 284.91941 40905.162 2045.1299 1.0266185 1959.3515 85.778354 0.09 1723.6803
|
||||
18300 329.41629 -56526.814 -2104.8386 1.0137784 -2204.0133 99.174667 0.085 -2540.6829
|
||||
18400 293.16732 -22085.551 -1652.5444 1.0163557 -1740.8059 88.261484 0.08 -2052.7864
|
||||
18500 276.28141 29367.359 2314.5497 1.0270087 2231.3719 83.177784 0.075 1971.9405
|
||||
18600 331.18031 94669.124 2466.3928 1.0225403 2366.6871 99.705745 0.07 2081.8675
|
||||
18700 265.4491 49872.536 2571.9864 1.0255308 2492.0698 79.916587 0.065 2260.4261
|
||||
18800 314.51042 60758.629 2560.3258 1.0300818 2465.6387 94.687078 0.06 2219.6547
|
||||
18900 317.70309 66345.835 1768.2041 1.0248229 1672.5558 95.648268 0.055 1410.3087
|
||||
19000 291.39831 -96336.931 -2448.6251 1.0100498 -2536.354 87.728905 0.05 -2805.9396
|
||||
19100 303.37353 -21421.495 -2012.0929 0.99771284 -2103.4271 91.334186 0.045 -2436.2173
|
||||
19200 293.92948 36383.881 2042.0163 1.0251299 1953.5254 88.490944 0.04 1633.579
|
||||
19300 287.24409 -46691.027 -2399.698 1.0112067 -2486.1762 86.478228 0.035 -2811.3506
|
||||
19400 333.42205 21152.63 1524.8699 1.0189912 1424.4893 100.38065 0.03 1118.2463
|
||||
19500 309.17989 60445.761 2298.6966 1.0338543 2205.6144 93.082259 0.025 1928.6181
|
||||
19600 255.92246 -32795.547 -1724.7933 1.0157044 -1801.8418 77.04848 0.02 -2213.9484
|
||||
19700 342.62332 33538.746 2439.138 1.0225905 2335.9872 103.1508 0.015 2081.9185
|
||||
19800 295.68946 81474.342 2308.3249 1.0240743 2219.3041 89.020804 0.01 1910.5545
|
||||
19900 306.4947 43488.052 2330.4958 1.0222707 2238.222 92.27385 0.005 1957.4368
|
||||
20000 313.31679 -25133.284 -1161.6979 1.0163289 -1256.0256 94.327722 0 -1649.7551
|
||||
Loop time of 8.92653 on 2 procs for 20000 steps with 102 atoms
|
||||
|
||||
Performance: 38.716 ns/day, 0.620 hours/ns, 2240.513 timesteps/s, 228.532 katom-step/s
|
||||
96.3% CPU use with 2 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.7448 | 5.9908 | 7.2367 | 50.9 | 67.11
|
||||
Bond | 0.036126 | 0.03641 | 0.036695 | 0.1 | 0.41
|
||||
Neigh | 0.082247 | 0.082294 | 0.082342 | 0.0 | 0.92
|
||||
Comm | 0.68467 | 1.9303 | 3.1759 | 89.7 | 21.62
|
||||
Output | 0.0023377 | 0.0052347 | 0.0081317 | 4.0 | 0.06
|
||||
Modify | 0.8194 | 0.82122 | 0.82303 | 0.2 | 9.20
|
||||
Other | | 0.06029 | | | 0.68
|
||||
|
||||
Nlocal: 51 ave 51 max 51 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 3317 ave 3317 max 3317 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 18320 ave 21941 max 14699 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 36640
|
||||
Ave neighs/atom = 359.21569
|
||||
Ave special neighs/atom = 2
|
||||
Neighbor list builds = 181
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:08
|
||||
437
examples/PACKAGES/alchemy/log.25Feb23.twowater.g++.4.1
Normal file
437
examples/PACKAGES/alchemy/log.25Feb23.twowater.g++.4.1
Normal file
@ -0,0 +1,437 @@
|
||||
LAMMPS (8 Feb 2023)
|
||||
Processor partition = 1
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Example for an alchemical transformation of two water molecules into a hydronium and hydroxyl ion
|
||||
# WARNING: This input is intended for demonstrating the method only,
|
||||
# the force field parameters are mostly made up and NOT suitable for production simulations.
|
||||
|
||||
# set up different names for two partitions
|
||||
variable name world twowater twoions
|
||||
|
||||
units real
|
||||
atom_style full
|
||||
atom_modify map array
|
||||
region box block -5 5 -5 5 -5 5
|
||||
boundary p p p
|
||||
create_box 2 box bond/types 2 angle/types 2 extra/bond/per/atom 3 extra/angle/per/atom 3 extra/special/per/atom 3
|
||||
Created orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
1 by 1 by 2 MPI processor grid
|
||||
|
||||
mass 1 15.9994
|
||||
mass 2 1.008
|
||||
|
||||
pair_style lj/cut/coul/cut 10.0
|
||||
pair_coeff 1 1 0.1553 3.166
|
||||
pair_coeff 1 2 0.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0
|
||||
|
||||
bond_style harmonic
|
||||
bond_coeff * 1000.0 1.0
|
||||
|
||||
angle_style harmonic
|
||||
angle_coeff * 100.0 109.47
|
||||
|
||||
molecule water h2o.mol
|
||||
Read molecule template water:
|
||||
1 molecules
|
||||
0 fragments
|
||||
3 atoms with max type 2
|
||||
2 bonds with max type 1
|
||||
1 angles with max type 1
|
||||
0 dihedrals with max type 0
|
||||
0 impropers with max type 0
|
||||
|
||||
# create the two molecules we want to transform ...
|
||||
create_atoms 0 single -2.0 0.0 0.0 mol water 453624
|
||||
Created 3 atoms
|
||||
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
create_atoms CPU = 0.003 seconds
|
||||
create_atoms 0 single 2.0 0.0 0.0 mol water 767353
|
||||
Created 3 atoms
|
||||
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
# ... and put them in a group
|
||||
group transform id 1:6
|
||||
6 atoms in group transform
|
||||
|
||||
# now fill the rest of the box with more water
|
||||
create_atoms 0 random 32 34564 NULL mol water 25367 overlap 1.33
|
||||
Created 96 atoms
|
||||
using lattice units in orthogonal box = (-5 -5 -5) to (5 5 5)
|
||||
create_atoms CPU = 0.001 seconds
|
||||
|
||||
# change topology and settings for the two states
|
||||
# we cannot simply create a different topology directly or
|
||||
# load a different data file because the order and position
|
||||
# of all atoms must be maintained across both replica
|
||||
|
||||
# we first have to remove all topology data in the transform group
|
||||
delete_bonds transform bond 1
|
||||
System init for delete_bonds ...
|
||||
Generated 0 of 1 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 = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 2 2 2
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut/coul/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Deleting bonds ...
|
||||
68 total bonds, 64 turned on, 4 turned off
|
||||
34 total angles, 34 turned on, 0 turned off
|
||||
0 total dihedrals, 0 turned on, 0 turned off
|
||||
0 total impropers, 0 turned on, 0 turned off
|
||||
delete_bonds transform angle 1 remove
|
||||
System init for delete_bonds ...
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Deleting bonds ...
|
||||
64 total bonds, 64 turned on, 0 turned off
|
||||
32 total angles, 32 turned on, 0 turned off
|
||||
0 total dihedrals, 0 turned on, 0 turned off
|
||||
0 total impropers, 0 turned on, 0 turned off
|
||||
|
||||
# then generate different topologies for the two partitions. select by name.
|
||||
if "${name} == twowater" then "create_bonds single/bond 2 1 2" "create_bonds single/bond 2 1 3" "create_bonds single/bond 2 4 5" "create_bonds single/bond 2 4 6" "create_bonds single/angle 2 2 1 3" "create_bonds single/angle 2 5 4 6" else "create_bonds single/bond 2 1 2" "create_bonds single/bond 2 3 4" "create_bonds single/bond 2 4 5" "create_bonds single/bond 2 4 6" "create_bonds single/angle 2 3 4 5" "create_bonds single/angle 2 5 4 6" "create_bonds single/angle 2 3 4 6" "set atom 1 charge -1.1354" "set atom 2 charge 0.1354" "set atom 3 charge 0.56775" "set atom 4 charge -0.70305" "set atom 5*6 charge 0.56775"
|
||||
create_bonds single/bond 2 1 2
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.002 seconds
|
||||
create_bonds single/bond 2 3 4
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/bond 2 4 5
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/bond 2 4 6
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
3 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
2 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/angle 2 3 4 5
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
3 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
2 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/angle 2 5 4 6
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
3 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
2 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
create_bonds single/angle 2 3 4 6
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0
|
||||
special bond factors coul: 0 0 0
|
||||
3 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
2 = max # of 1-4 neighbors
|
||||
7 = max # of special neighbors
|
||||
special bonds CPU = 0.000 seconds
|
||||
set atom 1 charge -1.1354
|
||||
Setting atom values ...
|
||||
1 settings made for charge
|
||||
set atom 2 charge 0.1354
|
||||
Setting atom values ...
|
||||
1 settings made for charge
|
||||
set atom 3 charge 0.56775
|
||||
Setting atom values ...
|
||||
1 settings made for charge
|
||||
set atom 4 charge -0.70305
|
||||
Setting atom values ...
|
||||
1 settings made for charge
|
||||
set atom 5*6 charge 0.56775
|
||||
Setting atom values ...
|
||||
2 settings made for charge
|
||||
|
||||
velocity all create 300.0 5463576
|
||||
timestep 0.2
|
||||
|
||||
# define ramp variable to combine the two different partitions
|
||||
if "${name} == twowater" then "variable ramp equal ramp(1.0,0.0)" else "variable ramp equal ramp(0.0,1.0)"
|
||||
variable ramp equal ramp(0.0,1.0)
|
||||
|
||||
# since the trajectory and forces are kept identical through fix alchemy,
|
||||
# we can do fix npt simulations, but we must use the "mixed" pressure
|
||||
|
||||
fix integrate all npt temp 300 300 1.0 iso 1.0 1.0 10.0
|
||||
fix transform all alchemy v_ramp
|
||||
compute pressure all pressure/alchemy transform
|
||||
fix_modify integrate press pressure
|
||||
|
||||
# only need to output a dump file from one partition
|
||||
# if "${name} == twowater" then # "dump 1 all atom 100 ${name}.lammpstrj" # "dump_modify 1 sort id"
|
||||
|
||||
thermo_style custom step temp press etotal density pe ke f_transform f_transform[3]
|
||||
thermo_modify colname f_transform lambda colname f_transform[3] EPot_mixed
|
||||
thermo_modify press pressure
|
||||
|
||||
thermo 100
|
||||
run 20000
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Bond/angle/dihedral extent > half of periodic box length (src/domain.cpp:936)
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.535 | 7.535 | 7.535 Mbytes
|
||||
Step Temp Press TotEng Density PotEng KinEng lambda EPot_mixed
|
||||
0 300 184631.17 10769.267 1.0171193 10678.948 90.318545 0 -892.51464
|
||||
100 293.4335 -513.97927 21497.846 0.3029684 21409.505 88.341623 0.005 207.29243
|
||||
200 320.81838 1513.3 3300.6279 0.64509407 3204.0418 96.586165 0.01 46.402434
|
||||
300 261.53825 -3808.6942 -362.14861 0.88817871 -440.88779 78.739179 0.015 -614.76481
|
||||
400 308.32444 1375.0327 -821.01681 0.97694485 -913.84152 92.824715 0.02 -897.24386
|
||||
500 292.60623 -12843.384 -831.87625 1.0140814 -919.96881 88.092563 0.025 -1221.948
|
||||
600 326.16112 91608.645 2941.9339 1.0263567 2843.7393 98.194659 0.03 2786.0743
|
||||
700 317.22811 -60420.408 -1637.1259 0.9919143 -1732.6311 95.505272 0.035 -1616.7677
|
||||
800 309.94673 -56793.931 -1501.6195 1.0024958 -1594.9326 93.313126 0.04 -1640.8606
|
||||
900 272.80718 -5076.2282 -1452.719 1.0141078 -1534.8508 82.131824 0.045 -1357.1812
|
||||
1000 346.52557 -16919.192 -1469.4601 1.0170322 -1573.7857 104.32562 0.05 -1514.1398
|
||||
1100 300.62984 -51826.972 -2581.5818 1.0063592 -2672.09 90.508164 0.055 -2565.9668
|
||||
1200 293.72767 45222.698 2045.9381 1.0272336 1957.5079 88.430186 0.06 1951.1683
|
||||
1300 289.4971 94600.203 2042.1709 1.0298091 1955.0144 87.156524 0.065 2088.1011
|
||||
1400 328.98666 35468.53 1805.9965 1.0198467 1706.9512 99.045321 0.07 1716.9268
|
||||
1500 392.9407 41220.21 1663.5291 1.0194044 1545.2297 118.29944 0.075 1690.6416
|
||||
1600 284.90093 -37995.141 -2488.5372 1.0068497 -2574.31 85.772791 0.08 -2529.5874
|
||||
1700 267.67454 25275.255 1482.7666 1.0313556 1402.18 80.586582 0.085 1520.9695
|
||||
1800 247.16495 -68222.994 -2869.7712 1.0018048 -2944.1832 74.41193 0.09 -2788.9545
|
||||
1900 328.41849 -51979.665 -2578.9515 1.0154952 -2677.8258 98.874268 0.095 -2461.3422
|
||||
2000 313.8715 21726.003 1310.0519 1.018831 1215.5571 94.494725 0.1 1363.0739
|
||||
2100 296.07341 66130.11 1209.3035 1.0224882 1120.1671 89.136398 0.105 1272.1884
|
||||
2200 282.67889 51746.464 2238.8823 1.0362683 2153.7785 85.103821 0.11 2276.1488
|
||||
2300 281.04207 -71937.759 -2935.0422 1.0111968 -3019.6532 84.611035 0.115 -2892.2526
|
||||
2400 321.00806 -51658.758 -2663.4071 1.0168161 -2760.0503 96.643269 0.12 -2622.9732
|
||||
2500 288.95906 49645.753 2369.0667 1.0355648 2282.0722 86.99454 0.125 2275.0348
|
||||
2600 303.0064 -48470.216 -2107.8769 1.000439 -2199.1005 91.223657 0.13 -2082.5895
|
||||
2700 361.7083 54973.584 1906.9779 1.0223169 1798.0813 108.89656 0.135 1817.1972
|
||||
2800 289.27827 33564.017 1687.0255 1.0257088 1599.9349 87.090642 0.14 1682.9162
|
||||
2900 283.94365 -47190.274 -2449.1599 1.0059224 -2534.6445 85.484591 0.145 -2395.9575
|
||||
3000 337.10996 61988.686 2157.6059 1.0258 2056.115 101.49094 0.15 2168.1085
|
||||
3100 305.28249 -50123.109 -2137.6015 1.0143567 -2229.5104 91.9089 0.155 -2040.3453
|
||||
3200 270.19471 -18114.265 -2175.7381 1.0132413 -2257.0834 81.345309 0.16 -2076.9595
|
||||
3300 263.39996 -109301.89 -2594.4684 0.99956867 -2673.7681 79.299671 0.165 -2471.0269
|
||||
3400 249.01722 -37585.949 -2655.0291 1.0080932 -2729.9987 74.969576 0.17 -2537.734
|
||||
3500 267.88868 65528.865 2038.1308 1.0390872 1957.4797 80.651054 0.175 2061.6421
|
||||
3600 351.46458 -67583.574 -3068.3126 1.0059621 -3174.1251 105.81256 0.18 -3004.5028
|
||||
3700 332.82565 -61204.843 -2491.3087 1.0053485 -2591.5097 100.20109 0.185 -2415.4435
|
||||
3800 298.0279 61123.085 1795.9521 1.020672 1706.2273 89.724819 0.19 1831.9734
|
||||
3900 317.04715 43210.045 1685.6151 1.0287838 1590.1643 95.450792 0.195 1721.1961
|
||||
4000 261.75174 -111920.72 -3478.9188 0.99457106 -3557.7223 78.803455 0.2 -3394.3528
|
||||
4100 338.34245 89763.083 1919.3836 1.0318272 1817.5216 101.86199 0.205 1973.419
|
||||
4200 288.52623 19989.792 1576.8543 1.0204119 1489.99 86.86423 0.21 1633.1439
|
||||
4300 322.05593 -33791.403 -2303.9654 1.0155065 -2400.9242 96.958741 0.215 -2246.4353
|
||||
4400 280.59054 -27839.599 -1776.7852 1.0123506 -1861.2603 84.475096 0.22 -1672.1425
|
||||
4500 296.08336 75206.112 2655.8862 1.0329133 2566.7468 89.139393 0.225 2670.4908
|
||||
4600 288.02094 -67445.101 -3254.8238 0.99579107 -3341.5359 86.712106 0.23 -3132.6352
|
||||
4700 332.21641 -83964.647 -3046.3841 1.0053915 -3146.4017 100.01768 0.235 -2916.6652
|
||||
4800 305.52557 -93111.682 -2635.4926 0.99824941 -2727.4747 91.982082 0.24 -2514.039
|
||||
4900 272.82262 -53664.198 -3095.9932 0.99527907 -3178.1297 82.136472 0.245 -2947.2062
|
||||
5000 288.96388 39846.089 1754.1018 1.0371205 1667.1058 86.99599 0.25 1833.3716
|
||||
5100 293.25543 -71819.425 -3170.1841 0.99452016 -3258.4721 88.288011 0.255 -3069.7618
|
||||
5200 296.16486 -64484.821 -2740.9832 1.0153125 -2830.1471 89.163931 0.26 -2589.6878
|
||||
5300 342.07246 60255.985 1605.1961 1.0306374 1502.2111 102.98496 0.265 1608.5673
|
||||
5400 295.53315 61421.189 1474.0782 1.0334762 1385.1045 88.973746 0.27 1492.0969
|
||||
5500 285.1755 24845.113 981.19505 1.0335035 895.3396 85.855455 0.275 1014.0263
|
||||
5600 276.79246 66244.072 1347.9794 1.0251134 1264.6478 83.331641 0.28 1390.9078
|
||||
5700 288.43485 14629.129 1042.0147 1.02997 955.17799 86.836719 0.285 1074.3779
|
||||
5800 276.64233 59262.97 680.78976 1.0332305 597.50331 83.286443 0.29 763.27415
|
||||
5900 358.25384 -111203.23 -3652.2742 1.006331 -3760.1307 107.85655 0.295 -3561.6283
|
||||
6000 327.82233 -62936.335 -2155.1414 1.0106476 -2253.8362 98.694786 0.3 -2062.107
|
||||
6100 309.86553 -59110.381 -2958.2613 1.0076375 -3051.5499 93.28868 0.305 -2870.9566
|
||||
6200 294.95752 -58011.845 -2023.2564 1.0161986 -2112.0569 88.800448 0.31 -1971.2586
|
||||
6300 307.27252 59016.127 993.68575 1.0225343 901.17773 92.508022 0.315 1032.9616
|
||||
6400 292.21611 -118857.83 -3289.8257 1.0031304 -3377.8009 87.975114 0.32 -3175.9068
|
||||
6500 332.21108 97132.547 2078.6137 1.0349752 1978.5976 100.01607 0.325 2121.4674
|
||||
6600 321.93985 -50017.836 -2763.8832 1.0076385 -2860.807 96.923796 0.33 -2673.6819
|
||||
6700 299.07231 -98136.241 -3284.4174 1.0106261 -3374.4566 90.039252 0.335 -3194.0694
|
||||
6800 285.33731 28487.407 232.87902 1.017186 146.97485 85.904169 0.34 294.02418
|
||||
6900 296.41387 50054.533 1773.8315 1.0445934 1684.5926 89.238897 0.345 1851.1397
|
||||
7000 318.34109 -71579.897 -3387.4573 1.007304 -3483.2977 95.840345 0.35 -3305.5715
|
||||
7100 317.2192 12370.315 907.13585 1.0177238 811.63326 95.502589 0.355 961.68146
|
||||
7200 289.91091 43944.333 972.20602 1.0302599 884.92492 87.281105 0.36 1039.3329
|
||||
7300 324.81227 42859.173 994.92755 1.0300698 897.13897 97.788572 0.365 1083.5764
|
||||
7400 305.72634 76516.72 2149.4427 1.0580673 2057.4002 92.042527 0.37 2218.3674
|
||||
7500 283.77479 -87225.247 -3654.8517 0.9936609 -3740.2855 85.433754 0.375 -3581.9003
|
||||
7600 318.72048 16084.995 1588.1487 1.0296163 1492.1941 95.954566 0.38 1653.5125
|
||||
7700 307.36895 74007.024 1522.4279 1.0363553 1429.8909 92.537054 0.385 1572.8568
|
||||
7800 297.44704 28693.429 1060.4277 1.0206402 970.87774 89.549946 0.39 1093.5903
|
||||
7900 288.47173 -94644.76 -2723.8234 1.0095244 -2810.6712 86.847823 0.395 -2648.2974
|
||||
8000 280.5001 63255.987 1380.8125 1.020587 1296.3647 84.44787 0.4 1418.7144
|
||||
8100 320.23351 68383.584 2071.8202 1.0419027 1975.4101 96.410082 0.405 2111.2616
|
||||
8200 354.86765 50012.316 1119.9483 1.0292074 1013.1112 106.8371 0.41 1149.0631
|
||||
8300 278.8859 24200.145 486.00653 1.0232468 402.04464 83.961894 0.415 569.83331
|
||||
8400 295.95754 -12010.401 800.25292 1.0200526 711.1514 89.101514 0.42 872.63254
|
||||
8500 289.57525 -64114.236 -3307.2939 1.0062613 -3394.4739 87.18005 0.425 -3227.8592
|
||||
8600 329.23192 15948.893 1155.4486 1.0271511 1056.3294 99.119161 0.43 1211.3868
|
||||
8700 327.45998 39407.811 1425.7837 1.0343756 1327.198 98.585695 0.435 1480.9482
|
||||
8800 296.99753 18017.036 587.91493 1.0178295 498.50031 89.414616 0.44 657.09357
|
||||
8900 289.10016 79527.35 2286.7077 1.0462904 2199.6707 87.037018 0.445 2338.4742
|
||||
9000 260.53308 -51430.717 -2982.8072 1.0040128 -3061.2437 78.436561 0.45 -2894.7913
|
||||
9100 314.17867 40043.249 1796.3896 1.0361707 1701.8024 94.5872 0.455 1836.5399
|
||||
9200 362.21236 -55153.163 -2572.3893 1.0102652 -2681.4376 109.04831 0.46 -2497.8765
|
||||
9300 266.62049 -72193.959 -3333.755 1.0063615 -3414.0242 80.269248 0.465 -3225.2604
|
||||
9400 259.59316 7674.9295 1105.0933 1.0326879 1026.9397 78.153588 0.47 1171.7119
|
||||
9500 278.72962 -33127.835 -2875.2917 1.0163553 -2959.2065 83.914845 0.475 -2805.1711
|
||||
9600 299.09039 24570.664 1594.6533 1.025317 1504.6086 90.044695 0.48 1631.8392
|
||||
9700 336.65655 37767.059 1217.6584 1.0245842 1116.3039 101.35443 0.485 1218.4022
|
||||
9800 279.68112 -55007.939 -2840.321 1.0129837 -2924.5223 84.201305 0.49 -2775.6909
|
||||
9900 300.55694 14964.424 1101.8362 1.0176315 1011.35 90.486218 0.495 1127.7276
|
||||
10000 276.77193 -75638.817 -3415.9268 1.0019055 -3499.2523 83.325459 0.5 -3341.663
|
||||
10100 316.26926 61548.301 2199.0502 1.0427988 2103.8336 95.216598 0.505 2206.7159
|
||||
10200 297.28171 56814.839 1828.6916 1.0270036 1739.1915 89.500171 0.51 1859.0176
|
||||
10300 276.84774 83572.576 1662.6501 1.0322243 1579.3018 83.348283 0.515 1704.2233
|
||||
10400 263.28687 -16549.994 903.97712 1.0177296 824.71149 79.265623 0.52 940.36339
|
||||
10500 332.79252 47379.311 1277.3892 1.0223403 1177.1981 100.19112 0.525 1301.3762
|
||||
10600 329.01105 39299.248 1039.7181 1.0230094 940.66548 99.052663 0.53 1077.5639
|
||||
10700 339.21335 -4217.0313 724.12043 1.0235915 621.99624 102.12419 0.535 741.87272
|
||||
10800 297.11192 -80013.424 -4028.1643 1.0009566 -4117.6134 89.449054 0.54 -3958.8283
|
||||
10900 299.63096 47783.864 1609.2512 1.0435283 1519.0437 90.207441 0.545 1620.9328
|
||||
11000 363.58243 67370.65 1557.8148 1.0450565 1448.354 109.46079 0.55 1543.803
|
||||
11100 306.04664 50246.004 1020.8953 1.0341876 928.75637 92.138957 0.555 1063.5345
|
||||
11200 255.68488 43750.967 1952.9201 1.0530607 1875.9431 76.976955 0.56 1986.9636
|
||||
11300 271.71957 -40289.299 -3400.121 1.0168497 -3481.9254 81.804388 0.565 -3344.1558
|
||||
11400 291.74007 -115249.24 -3603.3881 1.0067921 -3691.2199 87.831795 0.57 -3569.0256
|
||||
11500 270.22077 28235.119 350.43952 1.0195886 269.08637 81.353155 0.575 373.78255
|
||||
11600 297.08506 29790.701 793.45124 1.0317561 704.01027 89.440969 0.58 803.92835
|
||||
11700 295.33119 -101140.58 -3395.5279 1.0107252 -3484.4409 88.912943 0.585 -3348.5652
|
||||
11800 308.77287 -120312.75 -3874.1096 0.99681611 -3967.0693 92.95972 0.59 -3835.4663
|
||||
11900 293.86337 82287.969 1623.3312 1.0331446 1534.8602 88.47104 0.595 1625.4846
|
||||
12000 279.9866 27919.689 2021.9956 1.0384909 1937.7024 84.293273 0.6 2028.6311
|
||||
12100 292.19439 47035.018 962.98803 1.0210948 875.01946 87.968573 0.605 976.68113
|
||||
12200 317.78325 46886.483 1744.1855 1.0310567 1648.5131 95.672401 0.61 1763.6359
|
||||
12300 357.44038 51492.35 1650.3113 1.0414835 1542.6996 107.61165 0.615 1638.1905
|
||||
12400 288.16042 -50528.478 -3145.341 1.0130798 -3232.0951 86.7541 0.62 -3115.1383
|
||||
12500 300.37356 -114034.29 -3383.5763 1.0130272 -3474.0074 90.431009 0.625 -3364.511
|
||||
12600 265.4402 73960.28 1102.3119 1.0343798 1022.398 79.913907 0.63 1094.544
|
||||
12700 287.07994 22722.337 1499.2541 1.0268893 1412.8252 86.428809 0.635 1490.443
|
||||
12800 315.39745 46072.191 663.05431 1.0205906 568.10018 94.954129 0.64 662.83753
|
||||
12900 307.48549 -120472.73 -3484.9054 1.005689 -3577.4775 92.57214 0.645 -3469.7834
|
||||
13000 291.00577 -59154.878 -3000.6461 1.012821 -3088.2569 87.610727 0.65 -2966.2448
|
||||
13100 318.37718 86703.775 1825.1817 1.036209 1729.3305 95.851211 0.655 1819.7078
|
||||
13200 280.41509 -107033.79 -2964.9455 1.0135499 -3049.3678 84.422277 0.66 -2953.8355
|
||||
13300 275.01919 112086.85 2399.5628 1.0437945 2316.765 82.797775 0.665 2394.6707
|
||||
13400 299.46547 -111959.62 -3814.3709 0.98732074 -3904.5286 90.157617 0.67 -3792.6798
|
||||
13500 275.65631 17625.49 1528.0027 1.0255473 1445.0131 82.989588 0.675 1521.2745
|
||||
13600 302.63525 122466.63 2631.7819 1.0438137 2540.67 91.111917 0.68 2611.7188
|
||||
13700 302.21323 -94399.663 -3344.9423 1.0068914 -3435.9271 90.984863 0.685 -3328.4539
|
||||
13800 305.70483 30039.825 1506.1765 1.0225478 1414.1404 92.036052 0.69 1502.8476
|
||||
13900 273.15564 -27822.597 -2713.3946 1.0131002 -2795.6313 82.236732 0.695 -2683.7804
|
||||
14000 257.14635 -1821.0012 1045.462 1.0172653 968.04508 77.416947 0.7 1067.8821
|
||||
14100 323.74174 -76139.363 -3042.0486 1.0139806 -3139.5149 97.466276 0.705 -3052.598
|
||||
14200 274.99913 54440.943 796.17718 1.0186356 713.38545 82.791736 0.71 767.64274
|
||||
14300 291.8774 1281.7286 1079.6881 1.0214356 991.81498 87.873139 0.715 1042.8585
|
||||
14400 308.97245 -47961.551 -3005.1106 1.0155221 -3098.1304 93.019806 0.72 -3007.3204
|
||||
14500 311.05309 86026.739 1851.7257 1.0311818 1758.0795 93.646208 0.725 1830.5463
|
||||
14600 269.27432 -12972.747 726.82371 1.0172239 645.7555 81.068214 0.73 711.81484
|
||||
14700 262.20739 -77722.459 -3545.7104 1.0029421 -3624.651 78.940634 0.735 -3537.1929
|
||||
14800 300.33592 -107332.8 -3118.6094 1.0126785 -3209.0291 90.419677 0.74 -3125.8439
|
||||
14900 307.0173 -73204.94 -3016.2921 1.016875 -3108.7233 92.431185 0.745 -3016.0143
|
||||
15000 334.08711 64440.709 1360.8856 1.0369481 1260.3047 100.58087 0.75 1323.9179
|
||||
15100 293.46703 35179.395 1804.4648 1.0331703 1716.1131 88.351717 0.755 1768.9681
|
||||
15200 307.80546 54006.291 852.72781 1.0246134 760.05934 92.668471 0.76 822.22754
|
||||
15300 336.59792 33832.907 988.39905 1.0242407 887.06227 101.33678 0.765 956.25285
|
||||
15400 285.46526 -99629.94 -2736.0944 1.0041261 -2822.0371 85.942688 0.77 -2730.1887
|
||||
15500 269.15938 122546.45 2708.063 1.0318941 2627.0294 81.033612 0.775 2695.4331
|
||||
15600 294.50818 -104733.19 -2271.5729 1.0017241 -2360.238 88.665166 0.78 -2281.5773
|
||||
15700 321.05125 -40438.501 -2060.144 1.0125007 -2156.8002 96.656271 0.785 -2084.0893
|
||||
15800 303.22185 -42224.408 -2486.7037 1.0090867 -2577.9922 91.288521 0.79 -2506.3355
|
||||
15900 281.65025 78652.063 2532.2753 1.0460521 2447.4812 84.794136 0.795 2500.7128
|
||||
16000 286.5056 63174.412 1479.3631 1.0185277 1393.1072 86.255897 0.8 1442.2427
|
||||
16100 271.74574 -75051.584 -2429.2879 1.0091727 -2511.1002 81.812265 0.805 -2447.1967
|
||||
16200 266.40007 -64120.09 -2497.2609 1.0064388 -2577.4638 80.202888 0.81 -2525.4243
|
||||
16300 330.67137 46204.124 1582.1688 1.0271037 1482.6162 99.552523 0.815 1529.8186
|
||||
16400 310.94573 18510.676 1235.5974 1.0188695 1141.9835 93.613887 0.82 1195.3041
|
||||
16500 270.29191 79005.409 1711.3568 1.0354088 1629.9822 81.374574 0.825 1678.7342
|
||||
16600 334.24108 17143.221 1446.3175 1.0230561 1345.6903 100.62723 0.83 1379.3215
|
||||
16700 292.28721 -78618.031 -3045.0258 0.99940789 -3133.0223 87.996518 0.835 -3087.379
|
||||
16800 346.09157 -69398.937 -2956.6793 1.0153026 -3060.8742 104.19496 0.84 -3011.3476
|
||||
16900 284.37042 39314.526 2102.7814 1.0343186 2017.1683 85.613074 0.845 2045.8316
|
||||
17000 281.69389 86032.163 1577.5995 1.0237583 1492.7922 84.807275 0.85 1528.8391
|
||||
17100 297.2629 55128.393 2431.5835 1.0419182 2342.089 89.494508 0.855 2369.0347
|
||||
17200 328.81472 47063.86 1584.1492 1.0364627 1485.1556 98.993555 0.86 1526.7115
|
||||
17300 313.41363 -46685.063 -2635.2463 1.008117 -2729.6032 94.356878 0.865 -2685.8034
|
||||
17400 288.17114 68721.523 2548.303 1.0429105 2461.5456 86.757326 0.87 2490.5845
|
||||
17500 260.01702 -23324.539 -1776.7039 1.0100415 -1854.9851 78.281195 0.875 -1812.4813
|
||||
17600 297.6633 72795.463 2396.9788 1.0362827 2307.3638 89.615054 0.88 2336.0152
|
||||
17700 301.02937 93833.118 2424.9649 1.0276466 2334.3364 90.628448 0.885 2364.8751
|
||||
17800 238.92837 -78317.212 -2548.5755 1.0084077 -2620.5077 71.932208 0.89 -2579.4429
|
||||
17900 299.27724 -65278.891 -2933.564 1.0034773 -3023.6649 90.10095 0.895 -2987.498
|
||||
18000 315.15753 -72437.481 -2654.8693 1.0136139 -2749.7512 94.881898 0.9 -2718.125
|
||||
18100 268.39411 -42194.209 -2606.045 1.0108104 -2686.8482 80.803219 0.905 -2656.3853
|
||||
18200 284.91941 40905.162 1786.1505 1.0266185 1700.3722 85.778354 0.91 1723.6803
|
||||
18300 329.41629 -56526.814 -2472.7835 1.0137784 -2571.9582 99.174667 0.915 -2540.6829
|
||||
18400 293.16732 -22085.551 -1991.6537 1.0163557 -2079.9152 88.261484 0.92 -2052.7864
|
||||
18500 276.28141 29367.359 2034.0833 1.0270087 1950.9056 83.177784 0.925 1971.9405
|
||||
18600 331.18031 94669.124 2160.1352 1.0225403 2060.4295 99.705745 0.93 2081.8675
|
||||
18700 265.4491 49872.536 2324.2391 1.0255308 2244.3225 79.916587 0.935 2260.4261
|
||||
18800 314.51042 60758.629 2298.6407 1.0300818 2203.9536 94.687078 0.94 2219.6547
|
||||
18900 317.70309 66345.835 1490.6939 1.0248229 1395.0457 95.648268 0.945 1410.3087
|
||||
19000 291.39831 -96336.931 -2732.3994 1.0100498 -2820.1283 87.728905 0.95 -2805.9396
|
||||
19100 303.37353 -21421.495 -2360.5644 0.99771284 -2451.8986 91.334186 0.955 -2436.2173
|
||||
19200 293.92948 36383.881 1708.7388 1.0251299 1620.2479 88.490944 0.96 1633.579
|
||||
19300 287.24409 -46691.027 -2736.6663 1.0112067 -2823.1445 86.478228 0.965 -2811.3506
|
||||
19400 333.42205 21152.63 1209.1556 1.0189912 1108.7749 100.38065 0.97 1118.2463
|
||||
19500 309.17989 60445.761 2014.5979 1.0338543 1921.5157 93.082259 0.975 1928.6181
|
||||
19600 255.92246 -32795.547 -2145.3103 1.0157044 -2222.3587 77.04848 0.98 -2213.9484
|
||||
19700 342.62332 33538.746 2181.2002 1.0225905 2078.0494 103.1508 0.985 2081.9185
|
||||
19800 295.68946 81474.342 1996.4567 1.0240743 1907.4359 89.020804 0.99 1910.5545
|
||||
19900 306.4947 43488.052 2048.2997 1.0222707 1956.0258 92.27385 0.995 1957.4368
|
||||
20000 313.31679 -25133.284 -1555.4274 1.0163289 -1649.7551 94.327722 1 -1649.7551
|
||||
Loop time of 8.92592 on 2 procs for 20000 steps with 102 atoms
|
||||
|
||||
Performance: 38.719 ns/day, 0.620 hours/ns, 2240.664 timesteps/s, 228.548 katom-step/s
|
||||
96.2% CPU use with 2 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.7753 | 6.0676 | 7.3599 | 52.5 | 67.98
|
||||
Bond | 0.036352 | 0.036909 | 0.037466 | 0.3 | 0.41
|
||||
Neigh | 0.085317 | 0.085383 | 0.085449 | 0.0 | 0.96
|
||||
Comm | 0.72794 | 2.022 | 3.3161 | 91.0 | 22.65
|
||||
Output | 0.0023255 | 0.005156 | 0.0079865 | 3.9 | 0.06
|
||||
Modify | 0.64567 | 0.64689 | 0.64812 | 0.2 | 7.25
|
||||
Other | | 0.06196 | | | 0.69
|
||||
|
||||
Nlocal: 51 ave 51 max 51 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 3317 ave 3317 max 3317 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 18319.5 ave 21940 max 14699 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 36639
|
||||
Ave neighs/atom = 359.20588
|
||||
Ave special neighs/atom = 2.0196078
|
||||
Neighbor list builds = 181
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:08
|
||||
@ -16,6 +16,9 @@ dihedral_style class2
|
||||
|
||||
improper_style class2
|
||||
|
||||
special_bonds lj/coul 0 0 1
|
||||
pair_modify tail yes mix sixthpower
|
||||
|
||||
variable T equal 530
|
||||
|
||||
read_data trimer.data &
|
||||
|
||||
@ -18,6 +18,9 @@ dihedral_style class2
|
||||
|
||||
improper_style class2
|
||||
|
||||
special_bonds lj/coul 0 0 1
|
||||
pair_modify tail yes mix sixthpower
|
||||
|
||||
read_data large_nylon_melt.data.gz &
|
||||
extra/bond/per/atom 5 &
|
||||
extra/angle/per/atom 15 &
|
||||
|
||||
@ -17,6 +17,9 @@ dihedral_style class2
|
||||
|
||||
improper_style class2
|
||||
|
||||
special_bonds lj/coul 0 0 1
|
||||
pair_modify tail yes mix sixthpower
|
||||
|
||||
read_data tiny_epoxy.data
|
||||
|
||||
velocity all create 300.0 4928459 dist gaussian
|
||||
|
||||
@ -19,6 +19,9 @@ dihedral_style class2
|
||||
|
||||
improper_style class2
|
||||
|
||||
special_bonds lj/coul 0 0 1
|
||||
pair_modify tail yes mix sixthpower
|
||||
|
||||
read_data tiny_nylon.data &
|
||||
extra/bond/per/atom 5 &
|
||||
extra/angle/per/atom 15 &
|
||||
|
||||
@ -19,6 +19,9 @@ dihedral_style class2
|
||||
|
||||
improper_style class2
|
||||
|
||||
special_bonds lj/coul 0 0 1
|
||||
pair_modify tail yes mix sixthpower
|
||||
|
||||
read_data tiny_nylon.data &
|
||||
extra/bond/per/atom 5 &
|
||||
extra/angle/per/atom 15 &
|
||||
|
||||
@ -19,6 +19,9 @@ dihedral_style class2
|
||||
|
||||
improper_style class2
|
||||
|
||||
special_bonds lj/coul 0 0 1
|
||||
pair_modify tail yes mix sixthpower
|
||||
|
||||
read_data tiny_nylon.data &
|
||||
extra/bond/per/atom 5 &
|
||||
extra/angle/per/atom 15 &
|
||||
|
||||
@ -19,6 +19,9 @@ dihedral_style class2
|
||||
|
||||
improper_style class2
|
||||
|
||||
special_bonds lj/coul 0 0 1
|
||||
pair_modify tail yes mix sixthpower
|
||||
|
||||
variable T equal 530
|
||||
|
||||
read_data tiny_polystyrene.data &
|
||||
|
||||
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
@ -54,7 +54,7 @@ BIN2C = $(CUDA_HOME)/bin/bin2c
|
||||
|
||||
CUDR_CPP = mpicxx -DMPI_GERYON -DUCL_NO_EXIT -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX=1 -fPIC
|
||||
CUDR_OPTS = -O2 $(LMP_INC)
|
||||
CUDR = $(CUDR_CPP) $(CUDR_OPTS) $(CUDA_PROXY) $(CUDA_PRECISION) $(CUDA_INCLUDE) \
|
||||
CUDR = $(CUDR_CPP) $(CUDR_OPTS) $(CUDA_MPS) $(CUDA_PRECISION) $(CUDA_INCLUDE) \
|
||||
$(CUDPP_OPT)
|
||||
|
||||
# Headers for Geryon
|
||||
|
||||
@ -30,7 +30,7 @@ AR = ar
|
||||
BSH = /bin/sh
|
||||
|
||||
CUDPP_OPT =
|
||||
CUDA_MPS = -DCUDA_PROXY
|
||||
CUDA_MPS = -DCUDA_MPS_SUPPORT
|
||||
|
||||
# device code compiler and settings
|
||||
|
||||
@ -53,7 +53,7 @@ BIN2C = $(CUDA_HOME)/bin/bin2c
|
||||
|
||||
CUDR_CPP = mpicxx -fopenmp -DMPI_GERYON -DUCL_NO_EXIT -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX=1 -fPIC
|
||||
CUDR_OPTS = -O2 $(LMP_INC)
|
||||
CUDR = $(CUDR_CPP) $(CUDR_OPTS) $(CUDA_PROXY) $(CUDA_PRECISION) $(CUDA_INCLUDE) \
|
||||
CUDR = $(CUDR_CPP) $(CUDR_OPTS) $(CUDA_MPS) $(CUDA_PRECISION) $(CUDA_INCLUDE) \
|
||||
$(CUDPP_OPT)
|
||||
|
||||
# Headers for Geryon
|
||||
|
||||
@ -18,7 +18,7 @@ OCL_CPP = mpiicpc -std=c++11 -diag-disable=10441 -DMPICH_IGNORE_CXX_SEEK \
|
||||
$(LMP_INC) $(OCL_INC) $(CPP_OPT)
|
||||
OCL_LINK = -L$(ONEAPI_ROOT)/compiler/latest/linux/lib -lOpenCL
|
||||
OCL_PREC = -D_SINGLE_DOUBLE
|
||||
OCL_TUNE = -DMPI_GERYON -DCUDA_PROXY -DGERYON_NUMA_FISSION -DUCL_NO_EXIT
|
||||
OCL_TUNE = -DMPI_GERYON -DGERYON_NUMA_FISSION -DUCL_NO_EXIT
|
||||
|
||||
BIN_DIR = ./
|
||||
OBJ_DIR = ./
|
||||
|
||||
@ -205,8 +205,7 @@ $(CUDA_HOME)/lib64/stubs), that can be used for linking.
|
||||
Best performance with the GPU library is typically with multiple MPI processes
|
||||
sharing the same GPU cards. For NVIDIA, this is most efficient with CUDA
|
||||
MPS enabled. To prevent runtime errors for GPUs configured in exclusive process
|
||||
mode with MPS, the GPU library should be build with either of the equivalent
|
||||
-DCUDA_MPS_SUPPORT or -DCUDA_PROXY flags.
|
||||
mode with MPS, the GPU library should be build with the -DCUDA_MPS_SUPPORT flag.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
HIP BUILD NOTES
|
||||
@ -244,7 +243,6 @@ _SINGLE_SINGLE Build library for single precision mode
|
||||
_SINGLE_DOUBLE Build library for mixed precision mode
|
||||
_DOUBLE_DOUBLE Build library for double precision mode
|
||||
CUDA_MPS_SUPPORT Do not generate errors for exclusive mode for CUDA
|
||||
CUDA_PROXY Same as above
|
||||
MPI_GERYON Library should use MPI_Abort for unhandled errors
|
||||
GERYON_NUMA_FISSION Accelerators with main memory NUMA are split into
|
||||
multiple virtual accelerators for each NUMA node
|
||||
|
||||
@ -277,7 +277,7 @@ int DeviceT::init_device(MPI_Comm /*world*/, MPI_Comm replica, const int ngpu,
|
||||
MPI_Comm_split(node_comm,my_gpu,0,&_comm_gpu);
|
||||
MPI_Comm_rank(_comm_gpu,&_gpu_rank);
|
||||
|
||||
#if !defined(CUDA_PROXY) && !defined(CUDA_MPS_SUPPORT)
|
||||
#if !defined(CUDA_MPS_SUPPORT)
|
||||
if (_procs_per_gpu>1 && !gpu->sharing_supported(my_gpu))
|
||||
return -7;
|
||||
#endif
|
||||
|
||||
8
src/.gitignore
vendored
8
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
|
||||
|
||||
@ -1465,6 +1467,8 @@
|
||||
/zstd_file_writer.cpp
|
||||
/zstd_file_writer.h
|
||||
|
||||
/compute_pressure_alchemy.cpp
|
||||
/compute_pressure_alchemy.h
|
||||
/atom_vec_smd.cpp
|
||||
/atom_vec_smd.h
|
||||
/compute_saed.cpp
|
||||
@ -1531,8 +1535,8 @@
|
||||
/fix_langevin_drude.h
|
||||
/fix_mol_swap.cpp
|
||||
/fix_mol_swap.h
|
||||
/fix_pimd.cpp
|
||||
/fix_pimd.h
|
||||
/fix_alchemy.cpp
|
||||
/fix_alchemy.h
|
||||
/fix_pimd_nvt.cpp
|
||||
/fix_pimd_nvt.h
|
||||
/fix_qbmsst.cpp
|
||||
|
||||
@ -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};
|
||||
|
||||
@ -115,7 +115,6 @@ cdef create_array(device, void *pointer, shape,is_int):
|
||||
size=1
|
||||
for i in shape:
|
||||
size = size*i
|
||||
|
||||
if ( device == 1):
|
||||
mem = cupy.cuda.UnownedMemory(ptr=int( <uintptr_t> pointer), owner=None, size=size)
|
||||
memptr = cupy.cuda.MemoryPointer(mem, 0)
|
||||
@ -146,10 +145,18 @@ cdef class MLIAPDataPy:
|
||||
self.data = NULL
|
||||
|
||||
def update_pair_energy_cpu(self, eij):
|
||||
cdef double[:] eij_arr = eij
|
||||
cdef double[:] eij_arr
|
||||
try:
|
||||
eij_arr = eij
|
||||
except:
|
||||
eij_arr = eij.detach().numpy().astype(np.double)
|
||||
update_pair_energy(self.data, &eij_arr[0])
|
||||
def update_pair_energy_gpu(self, eij):
|
||||
cdef uintptr_t ptr = eij.data.ptr
|
||||
cdef uintptr_t ptr;
|
||||
try:
|
||||
ptr = eij.data.ptr
|
||||
except:
|
||||
ptr = eij.data_ptr()
|
||||
update_pair_energy(self.data, <double*>ptr)
|
||||
def update_pair_energy(self, eij):
|
||||
if self.data.dev==0:
|
||||
@ -158,10 +165,18 @@ cdef class MLIAPDataPy:
|
||||
self.update_pair_energy_gpu(eij)
|
||||
|
||||
def update_pair_forces_cpu(self, fij):
|
||||
cdef double[:, ::1] fij_arr = fij
|
||||
cdef double[:, ::1] fij_arr
|
||||
try:
|
||||
fij_arr = fij
|
||||
except:
|
||||
fij_arr = fij.detach().numpy().astype(np.double)
|
||||
update_pair_forces(self.data, &fij_arr[0][0])
|
||||
def update_pair_forces_gpu(self, fij):
|
||||
cdef uintptr_t ptr = fij.data.ptr
|
||||
cdef uintptr_t ptr
|
||||
try:
|
||||
ptr = fij.data.ptr
|
||||
except:
|
||||
ptr = fij.data_ptr()
|
||||
update_pair_forces(self.data, <double*>ptr)
|
||||
def update_pair_forces(self, fij):
|
||||
if self.data.dev==0:
|
||||
@ -172,7 +187,8 @@ cdef class MLIAPDataPy:
|
||||
def f(self):
|
||||
if self.data.f is NULL:
|
||||
return None
|
||||
return cupy.asarray(<double[:self.ntotal, :3]> self.data.f)
|
||||
return create_array(self.data.dev, self.data.f, [self.ntotal, 3],False)
|
||||
|
||||
|
||||
@property
|
||||
def size_gradforce(self):
|
||||
@ -205,14 +221,11 @@ cdef class MLIAPDataPy:
|
||||
descriptors_view[:] = value_view
|
||||
print("This code has not been tested or optimized for the GPU, if you are getting this warning optimize descriptors")
|
||||
|
||||
@write_only_property
|
||||
def eatoms(self, value):
|
||||
@property
|
||||
def eatoms(self):
|
||||
if self.data.eatoms is NULL:
|
||||
raise ValueError("attempt to set NULL eatoms")
|
||||
cdef double[:] eatoms_view = <double[:self.nlistatoms]> &self.data.eatoms[0]
|
||||
cdef double[:] value_view = value
|
||||
eatoms_view[:] = value_view
|
||||
print("This code has not been tested or optimized for the GPU, if you are getting this warning optimize eatoms")
|
||||
return create_array(self.data.dev, self.data.eatoms, [self.nlistatoms],False)
|
||||
|
||||
|
||||
@write_only_property
|
||||
@ -351,7 +364,7 @@ cdef class MLIAPDataPy:
|
||||
|
||||
|
||||
# Interface between C and Python compute functions
|
||||
cdef class MLIAPUnifiedInterface:
|
||||
cdef class MLIAPUnifiedInterfaceKokkos:
|
||||
cdef MLIAPDummyModel * model
|
||||
cdef MLIAPDummyDescriptor * descriptor
|
||||
cdef unified_impl
|
||||
@ -404,7 +417,7 @@ cdef public object mliap_unified_connect_kokkos(char *fname, MLIAPDummyModel * m
|
||||
with open(str_fname, 'rb') as pfile:
|
||||
unified = pickle.load(pfile)
|
||||
|
||||
unified_int = MLIAPUnifiedInterface(unified)
|
||||
unified_int = MLIAPUnifiedInterfaceKokkos(unified)
|
||||
unified_int.model = model
|
||||
unified_int.descriptor = descriptor
|
||||
|
||||
|
||||
@ -269,7 +269,6 @@ MLIAPBuildUnifiedKokkos_t<DeviceType> LAMMPS_NS::build_unified(char *unified_fna
|
||||
|
||||
void LAMMPS_NS::update_pair_energy(MLIAPDataKokkosDevice *data, double *eij)
|
||||
{
|
||||
double e_total = 0.0;
|
||||
auto d_eatoms = data->eatoms;
|
||||
auto d_pair_i= data->pair_i;
|
||||
const auto nlistatoms = data->nlistatoms;
|
||||
@ -301,8 +300,13 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij)
|
||||
auto j_atoms = data->jatoms;
|
||||
auto vflag = data->vflag;
|
||||
auto rij = data->rij;
|
||||
int vflag_either=data->pairmliap->vflag_either, vflag_global=data->pairmliap->vflag_global, vflag_atom=data->pairmliap->vflag_atom;
|
||||
int vflag_global=data->pairmliap->vflag_global, vflag_atom=data->pairmliap->vflag_atom;
|
||||
if (vflag_atom) {
|
||||
data->pairmliap->k_vatom.template modify<LMPHostType>();
|
||||
data->pairmliap->k_vatom.template sync<LMPDeviceType>();
|
||||
}
|
||||
auto d_vatom = data->pairmliap->k_vatom.template view<LMPDeviceType>();
|
||||
|
||||
Kokkos::View<double[6], LMPDeviceType> virial("virial");
|
||||
|
||||
Kokkos::parallel_for(data->npairs,KOKKOS_LAMBDA (int ii) {
|
||||
@ -310,7 +314,6 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij)
|
||||
int ii3 = ii * 3;
|
||||
int i = pair_i[ii];
|
||||
int j = j_atoms[ii];
|
||||
|
||||
// must not count any contribution where i is not a local atom
|
||||
if (i < nlistatoms) {
|
||||
Kokkos::atomic_add(&f[i*3+0], fij[ii3+0]);
|
||||
@ -335,7 +338,7 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij)
|
||||
Kokkos::atomic_add(&virial[4], v[4]);
|
||||
Kokkos::atomic_add(&virial[5], v[5]);
|
||||
}
|
||||
if (vflag_atom) {
|
||||
if (vflag_atom ) {
|
||||
Kokkos::atomic_add(&d_vatom(i,0), 0.5*v[0]);
|
||||
Kokkos::atomic_add(&d_vatom(i,1), 0.5*v[1]);
|
||||
Kokkos::atomic_add(&d_vatom(i,2), 0.5*v[2]);
|
||||
@ -373,15 +376,11 @@ template class MLIAPDummyModelKokkos<LMPDeviceType>;
|
||||
template class MLIAPDummyDescriptorKokkos<LMPDeviceType>;
|
||||
template MLIAPBuildUnifiedKokkos_t<LMPDeviceType> LAMMPS_NS::build_unified(char *unified_fname, MLIAPDataKokkos<LMPDeviceType> *data, LAMMPS *lmp,
|
||||
char *coefffilename);
|
||||
//template void LAMMPS_NS::update_pair_energy(MLIAPDataKokkos<LMPDeviceType> *data, double *eij);
|
||||
//template void LAMMPS_NS::update_pair_forces(MLIAPDataKokkos<LMPDeviceType> *data, double *fij);
|
||||
#ifdef LMP_KOKKOS_GPU
|
||||
template class MLIAPDummyModelKokkos<LMPHostType>;
|
||||
template class MLIAPDummyDescriptorKokkos<LMPHostType>;
|
||||
template MLIAPBuildUnifiedKokkos_t<LMPHostType> LAMMPS_NS::build_unified(char *unified_fname, MLIAPDataKokkos<LMPHostType> *data, LAMMPS *lmp,
|
||||
char *coefffilename);
|
||||
//template void LAMMPS_NS::update_pair_energy(MLIAPDataKokkos<LMPHostType> *data, double *eij);
|
||||
//template void LAMMPS_NS::update_pair_forces(MLIAPDataKokkos<LMPHostType> *data, double *fij);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -74,7 +74,6 @@ void PairMLIAPKokkos<DeviceType>::compute(int eflag, int vflag)
|
||||
int is_kokkos_descriptor = (dynamic_cast<MLIAPDescriptorKokkos<DeviceType>*>(descriptor)) != nullptr;
|
||||
auto model_space = is_kokkos_model ? execution_space : Host;
|
||||
auto descriptor_space = is_kokkos_descriptor? execution_space : Host;
|
||||
|
||||
// consistency checks
|
||||
if (data->ndescriptors != model->ndescriptors)
|
||||
error->all(FLERR, "Incompatible model and descriptor descriptor count");
|
||||
@ -107,12 +106,14 @@ void PairMLIAPKokkos<DeviceType>::compute(int eflag, int vflag)
|
||||
k_data->sync(model_space, IELEMS_MASK | DESCRIPTORS_MASK);
|
||||
model->compute_gradients(data);
|
||||
k_data->modified(model_space, BETAS_MASK);
|
||||
if (eflag_atom)
|
||||
if (eflag_atom) {
|
||||
k_data->modified(model_space, EATOMS_MASK);
|
||||
}
|
||||
|
||||
// calculate force contributions beta_i*dB_i/dR_j
|
||||
atomKK->sync(descriptor_space,F_MASK);
|
||||
k_data->sync(descriptor_space, NUMNEIGHS_MASK | IATOMS_MASK | IELEMS_MASK | ELEMS_MASK | BETAS_MASK | JATOMS_MASK | PAIR_I_MASK | JELEMS_MASK | RIJ_MASK );
|
||||
|
||||
descriptor->compute_forces(data);
|
||||
|
||||
e_tally(data);
|
||||
@ -293,7 +294,7 @@ void PairMLIAPKokkos<DeviceType>::e_tally(MLIAPData* data)
|
||||
if (eflag_global) eng_vdwl += data->energy;
|
||||
if (eflag_atom) {
|
||||
MLIAPDataKokkos<DeviceType> *k_data = static_cast<MLIAPDataKokkos<DeviceType>*>(data);
|
||||
k_data->sync(execution_space, IATOMS_MASK | EATOMS_MASK);
|
||||
k_data->sync(execution_space, IATOMS_MASK | EATOMS_MASK, true);
|
||||
auto d_iatoms = k_data->k_iatoms.template view<DeviceType>();
|
||||
auto d_eatoms = k_data->k_eatoms.template view<DeviceType>();
|
||||
auto d_eatom = k_eatom.template view<DeviceType>();
|
||||
|
||||
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
|
||||
@ -35,6 +35,17 @@
|
||||
// However, that exposes -too many- headers.
|
||||
#include "mliap_model_python_couple.h"
|
||||
#include "mliap_unified_couple.h"
|
||||
#ifdef LMP_KOKKOS
|
||||
#include "mliap_model_python_kokkos.h"
|
||||
#include "mliap_unified_kokkos.h"
|
||||
// The above should somehow really be included in the next file.
|
||||
// We could get around this with cython --capi-reexport-cincludes
|
||||
// However, that exposes -too many- headers.
|
||||
#include "mliap_model_python_couple_kokkos.h"
|
||||
#include "mliap_unified_couple_kokkos.h"
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
@ -71,6 +82,16 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp)
|
||||
|
||||
err = PyImport_AppendInittab("mliap_unified_couple", PyInit_mliap_unified_couple);
|
||||
if (err) error->all(FLERR, "Could not register MLIAPPY unified embedded python module.");
|
||||
#ifdef LMP_KOKKOS
|
||||
// Inform python intialization scheme of the mliappy module.
|
||||
// This -must- happen before python is initialized.
|
||||
err = PyImport_AppendInittab("mliap_model_python_couple_kokkos", PyInit_mliap_model_python_couple_kokkos);
|
||||
if (err) error->all(FLERR, "Could not register MLIAPPY embedded python module.");
|
||||
|
||||
err = PyImport_AppendInittab("mliap_unified_couple_kokkos", PyInit_mliap_unified_couple_kokkos);
|
||||
if (err) error->all(FLERR, "Could not register MLIAPPY unified embedded python module.");
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Py_Initialize();
|
||||
|
||||
@ -216,7 +216,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
// this looks excessive
|
||||
// the price of vectorization (all reactions in one command)?
|
||||
memory->create(rxn_name,nreacts,MAXLINE,"bond/react:rxn_name");
|
||||
memory->create(rxn_name,nreacts,MAXNAME,"bond/react:rxn_name");
|
||||
memory->create(nevery,nreacts,"bond/react:nevery");
|
||||
memory->create(cutsq,nreacts,2,"bond/react:cutsq");
|
||||
memory->create(unreacted_mol,nreacts,"bond/react:unreacted_mol");
|
||||
@ -287,7 +287,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
||||
iarg++;
|
||||
|
||||
int n = strlen(arg[iarg]) + 1;
|
||||
if (n > MAXLINE) error->all(FLERR,"Reaction name (react-ID) is too long (limit: 256 characters)");
|
||||
if (n > MAXNAME) error->all(FLERR,"Reaction name (react-ID) is too long (limit: 256 characters)");
|
||||
strcpy(rxn_name[rxn],arg[iarg++]);
|
||||
|
||||
int groupid = group->find(arg[iarg++]);
|
||||
@ -545,6 +545,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
||||
attempt = nullptr;
|
||||
nattempt = nullptr;
|
||||
allnattempt = 0;
|
||||
my_num_mega = 0;
|
||||
local_num_mega = 0;
|
||||
ghostly_num_mega = 0;
|
||||
restore = nullptr;
|
||||
@ -555,6 +556,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
|
||||
glove_counter = 0;
|
||||
guess_branch = new int[MAXGUESS]();
|
||||
pioneer_count = new int[max_natoms];
|
||||
my_mega_glove = nullptr;
|
||||
local_mega_glove = nullptr;
|
||||
ghostly_mega_glove = nullptr;
|
||||
global_mega_glove = nullptr;
|
||||
@ -654,6 +656,7 @@ FixBondReact::~FixBondReact()
|
||||
memory->destroy(restore);
|
||||
memory->destroy(glove);
|
||||
memory->destroy(pioneers);
|
||||
memory->destroy(my_mega_glove);
|
||||
memory->destroy(local_mega_glove);
|
||||
memory->destroy(ghostly_mega_glove);
|
||||
}
|
||||
@ -936,7 +939,7 @@ void FixBondReact::post_integrate()
|
||||
if (var_flag[NRATE][rxnID] == 1) {
|
||||
my_nrate = input->variable->compute_equal(var_id[NRATE][rxnID]);
|
||||
} else my_nrate = rate_limit[1][rxnID];
|
||||
if (nrxns_delta > my_nrate) rate_limit_flag = 0;
|
||||
if (nrxns_delta >= my_nrate) rate_limit_flag = 0;
|
||||
}
|
||||
}
|
||||
if ((update->ntimestep % nevery[rxnID]) ||
|
||||
@ -1251,6 +1254,7 @@ void FixBondReact::close_partner()
|
||||
void FixBondReact::superimpose_algorithm()
|
||||
{
|
||||
const int nprocs = comm->nprocs;
|
||||
my_num_mega = 0;
|
||||
local_num_mega = 0;
|
||||
ghostly_num_mega = 0;
|
||||
|
||||
@ -1269,6 +1273,7 @@ void FixBondReact::superimpose_algorithm()
|
||||
memory->destroy(restore);
|
||||
memory->destroy(glove);
|
||||
memory->destroy(pioneers);
|
||||
memory->destroy(my_mega_glove);
|
||||
memory->destroy(local_mega_glove);
|
||||
memory->destroy(ghostly_mega_glove);
|
||||
}
|
||||
@ -1277,18 +1282,14 @@ void FixBondReact::superimpose_algorithm()
|
||||
memory->create(restore_pt,MAXGUESS,4,"bond/react:restore_pt");
|
||||
memory->create(pioneers,max_natoms,"bond/react:pioneers");
|
||||
memory->create(restore,max_natoms,MAXGUESS*4,"bond/react:restore");
|
||||
memory->create(local_mega_glove,max_natoms+1,allnattempt,"bond/react:local_mega_glove");
|
||||
memory->create(ghostly_mega_glove,max_natoms+1,allnattempt,"bond/react:ghostly_mega_glove");
|
||||
memory->create(my_mega_glove,max_natoms+1,allnattempt,"bond/react:local_mega_glove");
|
||||
|
||||
for (int i = 0; i < max_natoms+1; i++)
|
||||
for (int j = 0; j < allnattempt; j++)
|
||||
my_mega_glove[i][j] = 0;
|
||||
|
||||
attempted_rxn = 1;
|
||||
|
||||
for (int i = 0; i < max_natoms+1; i++) {
|
||||
for (int j = 0; j < allnattempt; j++) {
|
||||
local_mega_glove[i][j] = 0;
|
||||
ghostly_mega_glove[i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// let's finally begin the superimpose loop
|
||||
for (rxnID = 0; rxnID < nreacts; rxnID++) {
|
||||
for (lcl_inst = 0; lcl_inst < nattempt[rxnID]; lcl_inst++) {
|
||||
@ -1335,7 +1336,11 @@ void FixBondReact::superimpose_algorithm()
|
||||
status = REJECT;
|
||||
} else {
|
||||
status = ACCEPT;
|
||||
glove_ghostcheck();
|
||||
my_mega_glove[0][my_num_mega] = rxnID;
|
||||
for (int i = 0; i < onemol->natoms; i++) {
|
||||
my_mega_glove[i+1][my_num_mega] = glove[i][1];
|
||||
}
|
||||
my_num_mega++;
|
||||
}
|
||||
} else status = REJECT;
|
||||
}
|
||||
@ -1378,7 +1383,13 @@ void FixBondReact::superimpose_algorithm()
|
||||
if (status == ACCEPT) {
|
||||
if (fraction[rxnID] < 1.0 &&
|
||||
random[rxnID]->uniform() >= fraction[rxnID]) status = REJECT;
|
||||
else glove_ghostcheck();
|
||||
else {
|
||||
my_mega_glove[0][my_num_mega] = rxnID;
|
||||
for (int i = 0; i < onemol->natoms; i++) {
|
||||
my_mega_glove[i+1][my_num_mega] = glove[i][1];
|
||||
}
|
||||
my_num_mega++;
|
||||
}
|
||||
}
|
||||
hang_catch++;
|
||||
// let's go ahead and catch the simplest of hangs
|
||||
@ -1394,8 +1405,19 @@ void FixBondReact::superimpose_algorithm()
|
||||
|
||||
global_megasize = 0;
|
||||
|
||||
ghost_glovecast(); // consolidate all mega_gloves to all processors
|
||||
memory->create(local_mega_glove,max_natoms+1,my_num_mega,"bond/react:local_mega_glove");
|
||||
memory->create(ghostly_mega_glove,max_natoms+1,my_num_mega,"bond/react:ghostly_mega_glove");
|
||||
|
||||
for (int i = 0; i < max_natoms+1; i++) {
|
||||
for (int j = 0; j < my_num_mega; j++) {
|
||||
local_mega_glove[i][j] = 0;
|
||||
ghostly_mega_glove[i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
dedup_mega_gloves(LOCAL); // make sure atoms aren't added to more than one reaction
|
||||
glove_ghostcheck(); // split into 'local' and 'global'
|
||||
ghost_glovecast(); // consolidate all mega_gloves to all processors
|
||||
|
||||
MPI_Allreduce(&local_rxn_count[0],&reaction_count[0],nreacts,MPI_INT,MPI_SUM,world);
|
||||
|
||||
@ -2639,14 +2661,14 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
||||
{
|
||||
// dedup_mode == LOCAL for local_dedup
|
||||
// dedup_mode == GLOBAL for global_mega_glove
|
||||
for (int i = 0; i < nreacts; i++) {
|
||||
if (dedup_mode == LOCAL) local_rxn_count[i] = 0;
|
||||
if (dedup_mode == GLOBAL) ghostly_rxn_count[i] = 0;
|
||||
}
|
||||
|
||||
if (dedup_mode == GLOBAL)
|
||||
for (int i = 0; i < nreacts; i++)
|
||||
ghostly_rxn_count[i] = 0;
|
||||
|
||||
int dedup_size = 0;
|
||||
if (dedup_mode == LOCAL) {
|
||||
dedup_size = local_num_mega;
|
||||
dedup_size = my_num_mega;
|
||||
} else if (dedup_mode == GLOBAL) {
|
||||
dedup_size = global_megasize;
|
||||
}
|
||||
@ -2657,7 +2679,7 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
||||
if (dedup_mode == LOCAL) {
|
||||
for (int i = 0; i < dedup_size; i++) {
|
||||
for (int j = 0; j < max_natoms+1; j++) {
|
||||
dedup_glove[j][i] = local_mega_glove[j][i];
|
||||
dedup_glove[j][i] = my_mega_glove[j][i];
|
||||
}
|
||||
}
|
||||
} else if (dedup_mode == GLOBAL) {
|
||||
@ -2671,11 +2693,8 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
||||
// dedup_mask is size dedup_size and filters reactions that have been deleted
|
||||
// a value of 1 means this reaction instance has been deleted
|
||||
int *dedup_mask = new int[dedup_size];
|
||||
int *dup_list = new int[dedup_size];
|
||||
|
||||
for (int i = 0; i < dedup_size; i++) {
|
||||
dedup_mask[i] = 0;
|
||||
dup_list[i] = 0;
|
||||
}
|
||||
|
||||
// let's randomly mix up our reaction instances first
|
||||
@ -2699,60 +2718,40 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
||||
|
||||
for (int i = 0; i < dedup_size; i++) {
|
||||
if (dedup_mask[i] == 0) {
|
||||
int num_dups = 0;
|
||||
int myrxnid1 = dedup_glove[0][i];
|
||||
onemol = atom->molecules[unreacted_mol[myrxnid1]];
|
||||
for (int j = 0; j < onemol->natoms; j++) {
|
||||
int check1 = dedup_glove[j+1][i];
|
||||
for (int ii = i + 1; ii < dedup_size; ii++) {
|
||||
int already_listed = 0;
|
||||
for (int jj = 0; jj < num_dups; jj++) {
|
||||
if (dup_list[jj] == ii) {
|
||||
already_listed = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (dedup_mask[ii] == 0 && already_listed == 0) {
|
||||
if (dedup_mask[ii] == 0) {
|
||||
int myrxnid2 = dedup_glove[0][ii];
|
||||
twomol = atom->molecules[unreacted_mol[myrxnid2]];
|
||||
for (int jj = 0; jj < twomol->natoms; jj++) {
|
||||
int check2 = dedup_glove[jj+1][ii];
|
||||
if (check2 == check1) {
|
||||
// add this rxn instance as well
|
||||
if (num_dups == 0) dup_list[num_dups++] = i;
|
||||
dup_list[num_dups++] = ii;
|
||||
dedup_mask[ii] = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// here we choose random number and therefore reaction instance
|
||||
int myrand = 1;
|
||||
if (num_dups > 0) {
|
||||
myrand = floor(random[0]->uniform()*num_dups);
|
||||
for (int iii = 0; iii < num_dups; iii++) {
|
||||
if (iii != myrand) dedup_mask[dup_list[iii]] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// we must update local_mega_glove and local_megasize
|
||||
// we can simply overwrite local_mega_glove column by column
|
||||
if (dedup_mode == LOCAL) {
|
||||
int new_local_megasize = 0;
|
||||
for (int i = 0; i < local_num_mega; i++) {
|
||||
int my_new_megasize = 0;
|
||||
for (int i = 0; i < my_num_mega; i++) {
|
||||
if (dedup_mask[i] == 0) {
|
||||
local_rxn_count[(int) dedup_glove[0][i]]++;
|
||||
for (int j = 0; j < max_natoms+1; j++) {
|
||||
local_mega_glove[j][new_local_megasize] = dedup_glove[j][i];
|
||||
my_mega_glove[j][my_new_megasize] = dedup_glove[j][i];
|
||||
}
|
||||
new_local_megasize++;
|
||||
my_new_megasize++;
|
||||
}
|
||||
}
|
||||
|
||||
local_num_mega = new_local_megasize;
|
||||
my_num_mega = my_new_megasize;
|
||||
}
|
||||
|
||||
// we must update global_mega_glove and global_megasize
|
||||
@ -2773,7 +2772,6 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode)
|
||||
|
||||
memory->destroy(dedup_glove);
|
||||
delete [] dedup_mask;
|
||||
delete [] dup_list;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
@ -2826,40 +2824,47 @@ void FixBondReact::glove_ghostcheck()
|
||||
// here we add glove to either local_mega_glove or ghostly_mega_glove
|
||||
// ghostly_mega_glove includes atoms that are ghosts, either of this proc or another
|
||||
// 'ghosts of another' indication taken from comm->sendlist
|
||||
// also includes local gloves that overlap with ghostly gloves, to get dedup right
|
||||
|
||||
int ghostly = 0;
|
||||
#if !defined(MPI_STUBS)
|
||||
if (comm->style == Comm::BRICK) {
|
||||
if (create_atoms_flag[rxnID] == 1) {
|
||||
ghostly = 1;
|
||||
} else {
|
||||
for (int i = 0; i < onemol->natoms; i++) {
|
||||
int ilocal = atom->map(glove[i][1]);
|
||||
if (ilocal >= atom->nlocal || localsendlist[ilocal] == 1) {
|
||||
ghostly = 1;
|
||||
break;
|
||||
for (int i = 0; i < nreacts; i++)
|
||||
local_rxn_count[i] = 0;
|
||||
|
||||
for (int i = 0; i < my_num_mega; i++) {
|
||||
rxnID = my_mega_glove[0][i];
|
||||
onemol = atom->molecules[unreacted_mol[rxnID]];
|
||||
int ghostly = 0;
|
||||
#if !defined(MPI_STUBS)
|
||||
if (comm->style == Comm::BRICK) {
|
||||
if (create_atoms_flag[rxnID] == 1) {
|
||||
ghostly = 1;
|
||||
} else {
|
||||
for (int j = 0; j < onemol->natoms; j++) {
|
||||
int ilocal = atom->map(my_mega_glove[j+1][i]);
|
||||
if (ilocal >= atom->nlocal || localsendlist[ilocal] == 1) {
|
||||
ghostly = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ghostly = 1;
|
||||
}
|
||||
} else {
|
||||
ghostly = 1;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (ghostly == 1) {
|
||||
ghostly_mega_glove[0][ghostly_num_mega] = rxnID;
|
||||
ghostly_rxn_count[rxnID]++; //for debuginng
|
||||
for (int i = 0; i < onemol->natoms; i++) {
|
||||
ghostly_mega_glove[i+1][ghostly_num_mega] = glove[i][1];
|
||||
if (ghostly == 1) {
|
||||
ghostly_mega_glove[0][ghostly_num_mega] = rxnID;
|
||||
for (int j = 0; j < onemol->natoms+1; j++) {
|
||||
ghostly_mega_glove[j][ghostly_num_mega] = my_mega_glove[j][i];
|
||||
}
|
||||
ghostly_num_mega++;
|
||||
} else {
|
||||
local_mega_glove[0][local_num_mega] = rxnID;
|
||||
local_rxn_count[rxnID]++;
|
||||
for (int j = 0; j < onemol->natoms+1; j++) {
|
||||
local_mega_glove[j][local_num_mega] = my_mega_glove[j][i];
|
||||
}
|
||||
local_num_mega++;
|
||||
}
|
||||
ghostly_num_mega++;
|
||||
} else {
|
||||
local_mega_glove[0][local_num_mega] = rxnID;
|
||||
local_rxn_count[rxnID]++; //for debuginng
|
||||
for (int i = 0; i < onemol->natoms; i++) {
|
||||
local_mega_glove[i+1][local_num_mega] = glove[i][1];
|
||||
}
|
||||
local_num_mega++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3903,6 +3908,7 @@ read map file
|
||||
|
||||
void FixBondReact::read_map_file(int myrxn)
|
||||
{
|
||||
int rv;
|
||||
char line[MAXLINE],keyword[MAXLINE];
|
||||
char *eof,*ptr;
|
||||
|
||||
@ -3927,16 +3933,24 @@ void FixBondReact::read_map_file(int myrxn)
|
||||
|
||||
if (strstr(line,"edgeIDs")) sscanf(line,"%d",&nedge);
|
||||
else if (strstr(line,"equivalences")) {
|
||||
sscanf(line,"%d",&nequivalent);
|
||||
rv = sscanf(line,"%d",&nequivalent);
|
||||
if (rv != 1) error->one(FLERR, "Map file header is incorrectly formatted");
|
||||
if (nequivalent != onemol->natoms)
|
||||
error->one(FLERR,"Fix bond/react: Number of equivalences in map file must "
|
||||
"equal number of atoms in reaction templates");
|
||||
}
|
||||
else if (strstr(line,"deleteIDs")) sscanf(line,"%d",&ndelete);
|
||||
else if (strstr(line,"createIDs")) sscanf(line,"%d",&ncreate);
|
||||
else if (strstr(line,"chiralIDs")) sscanf(line,"%d",&nchiral);
|
||||
else if (strstr(line,"constraints")) {
|
||||
sscanf(line,"%d",&nconstraints[myrxn]);
|
||||
else if (strstr(line,"deleteIDs")) {
|
||||
rv = sscanf(line,"%d",&ndelete);
|
||||
if (rv != 1) error->one(FLERR, "Map file header is incorrectly formatted");
|
||||
} else if (strstr(line,"createIDs")) {
|
||||
rv = sscanf(line,"%d",&ncreate);
|
||||
if (rv != 1) error->one(FLERR, "Map file header is incorrectly formatted");
|
||||
} else if (strstr(line,"chiralIDs")) {
|
||||
rv = sscanf(line,"%d",&nchiral);
|
||||
if (rv != 1) error->one(FLERR, "Map file header is incorrectly formatted");
|
||||
} else if (strstr(line,"constraints")) {
|
||||
rv = sscanf(line,"%d",&nconstraints[myrxn]);
|
||||
if (rv != 1) error->one(FLERR, "Map file header is incorrectly formatted");
|
||||
if (maxnconstraints < nconstraints[myrxn]) maxnconstraints = nconstraints[myrxn];
|
||||
constraints.resize(maxnconstraints, std::vector<Constraint>(nreacts));
|
||||
} else break;
|
||||
@ -3956,11 +3970,13 @@ void FixBondReact::read_map_file(int myrxn)
|
||||
if (comm->me == 0) error->warning(FLERR,"Fix bond/react: The BondingIDs section title has been deprecated. Please use InitiatorIDs instead.");
|
||||
bondflag = 1;
|
||||
readline(line);
|
||||
sscanf(line,"%d",&ibonding[myrxn]);
|
||||
rv = sscanf(line,"%d",&ibonding[myrxn]);
|
||||
if (rv != 1) error->one(FLERR, "InitiatorIDs section is incorrectly formatted");
|
||||
if (ibonding[myrxn] > onemol->natoms)
|
||||
error->one(FLERR,"Fix bond/react: Invalid template atom ID in map file");
|
||||
readline(line);
|
||||
sscanf(line,"%d",&jbonding[myrxn]);
|
||||
rv = sscanf(line,"%d",&jbonding[myrxn]);
|
||||
if (rv != 1) error->one(FLERR, "InitiatorIDs section is incorrectly formatted");
|
||||
if (jbonding[myrxn] > onemol->natoms)
|
||||
error->one(FLERR,"Fix bond/react: Invalid template atom ID in map file");
|
||||
} else if (strcmp(keyword,"EdgeIDs") == 0) {
|
||||
@ -3991,10 +4007,11 @@ void FixBondReact::EdgeIDs(char *line, int myrxn)
|
||||
{
|
||||
// puts a 1 at edge(edgeID)
|
||||
|
||||
int tmp;
|
||||
int tmp,rv;
|
||||
for (int i = 0; i < nedge; i++) {
|
||||
readline(line);
|
||||
sscanf(line,"%d",&tmp);
|
||||
rv = sscanf(line,"%d",&tmp);
|
||||
if (rv != 1) error->one(FLERR, "EdgeIDs section is incorrectly formatted");
|
||||
if (tmp > onemol->natoms)
|
||||
error->one(FLERR,"Fix bond/react: Invalid template atom ID in map file");
|
||||
edge[tmp-1][myrxn] = 1;
|
||||
@ -4003,11 +4020,11 @@ void FixBondReact::EdgeIDs(char *line, int myrxn)
|
||||
|
||||
void FixBondReact::Equivalences(char *line, int myrxn)
|
||||
{
|
||||
int tmp1;
|
||||
int tmp2;
|
||||
int tmp1,tmp2,rv;
|
||||
for (int i = 0; i < nequivalent; i++) {
|
||||
readline(line);
|
||||
sscanf(line,"%d %d",&tmp1,&tmp2);
|
||||
rv = sscanf(line,"%d %d",&tmp1,&tmp2);
|
||||
if (rv != 2) error->one(FLERR, "Equivalences section is incorrectly formatted");
|
||||
if (tmp1 > onemol->natoms || tmp2 > twomol->natoms)
|
||||
error->one(FLERR,"Fix bond/react: Invalid template atom ID in map file");
|
||||
//equivalences is-> clmn 1: post-reacted, clmn 2: pre-reacted
|
||||
@ -4021,10 +4038,11 @@ void FixBondReact::Equivalences(char *line, int myrxn)
|
||||
|
||||
void FixBondReact::DeleteAtoms(char *line, int myrxn)
|
||||
{
|
||||
int tmp;
|
||||
int tmp,rv;
|
||||
for (int i = 0; i < ndelete; i++) {
|
||||
readline(line);
|
||||
sscanf(line,"%d",&tmp);
|
||||
rv = sscanf(line,"%d",&tmp);
|
||||
if (rv != 1) error->one(FLERR, "DeleteIDs section is incorrectly formatted");
|
||||
if (tmp > onemol->natoms)
|
||||
error->one(FLERR,"Fix bond/react: Invalid template atom ID in map file");
|
||||
delete_atoms[tmp-1][myrxn] = 1;
|
||||
@ -4034,10 +4052,11 @@ void FixBondReact::DeleteAtoms(char *line, int myrxn)
|
||||
void FixBondReact::CreateAtoms(char *line, int myrxn)
|
||||
{
|
||||
create_atoms_flag[myrxn] = 1;
|
||||
int tmp;
|
||||
int tmp,rv;
|
||||
for (int i = 0; i < ncreate; i++) {
|
||||
readline(line);
|
||||
sscanf(line,"%d",&tmp);
|
||||
rv = sscanf(line,"%d",&tmp);
|
||||
if (rv != 1) error->one(FLERR, "CreateIDs section is incorrectly formatted");
|
||||
create_atoms[tmp-1][myrxn] = 1;
|
||||
}
|
||||
if (twomol->xflag == 0)
|
||||
@ -4055,10 +4074,11 @@ void FixBondReact::CustomCharges(int ifragment, int myrxn)
|
||||
|
||||
void FixBondReact::ChiralCenters(char *line, int myrxn)
|
||||
{
|
||||
int tmp;
|
||||
int tmp,rv;
|
||||
for (int i = 0; i < nchiral; i++) {
|
||||
readline(line);
|
||||
sscanf(line,"%d",&tmp);
|
||||
rv = sscanf(line,"%d",&tmp);
|
||||
if (rv != 1) error->one(FLERR, "ChiralIDs section is incorrectly formatted");
|
||||
if (tmp > onemol->natoms)
|
||||
error->one(FLERR,"Fix bond/react: Invalid template atom ID in map file");
|
||||
chiral_atoms[tmp-1][0][myrxn] = 1;
|
||||
@ -4088,6 +4108,7 @@ void FixBondReact::ChiralCenters(char *line, int myrxn)
|
||||
|
||||
void FixBondReact::ReadConstraints(char *line, int myrxn)
|
||||
{
|
||||
int rv;
|
||||
double tmp[MAXCONARGS];
|
||||
char **strargs,*ptr,*lptr;
|
||||
memory->create(strargs,MAXCONARGS,MAXLINE,"bond/react:strargs");
|
||||
@ -4129,10 +4150,12 @@ void FixBondReact::ReadConstraints(char *line, int myrxn)
|
||||
}
|
||||
if ((ptr = strchr(lptr,')')))
|
||||
*ptr = '\0';
|
||||
sscanf(line,"%s",constraint_type);
|
||||
rv = sscanf(line,"%s",constraint_type);
|
||||
if (rv != 1) error->one(FLERR, "Constraints section is incorrectly formatted");
|
||||
if (strcmp(constraint_type,"distance") == 0) {
|
||||
constraints[i][myrxn].type = DISTANCE;
|
||||
sscanf(line,"%*s %s %s %lg %lg",strargs[0],strargs[1],&tmp[0],&tmp[1]);
|
||||
rv = sscanf(line,"%*s %s %s %lg %lg",strargs[0],strargs[1],&tmp[0],&tmp[1]);
|
||||
if (rv != 4) error->one(FLERR, "Distance constraint is incorrectly formatted");
|
||||
readID(strargs[0], i, myrxn, 0);
|
||||
readID(strargs[1], i, myrxn, 1);
|
||||
// cutoffs
|
||||
@ -4140,7 +4163,8 @@ void FixBondReact::ReadConstraints(char *line, int myrxn)
|
||||
constraints[i][myrxn].par[1] = tmp[1]*tmp[1];
|
||||
} else if (strcmp(constraint_type,"angle") == 0) {
|
||||
constraints[i][myrxn].type = ANGLE;
|
||||
sscanf(line,"%*s %s %s %s %lg %lg",strargs[0],strargs[1],strargs[2],&tmp[0],&tmp[1]);
|
||||
rv = sscanf(line,"%*s %s %s %s %lg %lg",strargs[0],strargs[1],strargs[2],&tmp[0],&tmp[1]);
|
||||
if (rv != 5) error->one(FLERR, "Angle constraint is incorrectly formatted");
|
||||
readID(strargs[0], i, myrxn, 0);
|
||||
readID(strargs[1], i, myrxn, 1);
|
||||
readID(strargs[2], i, myrxn, 2);
|
||||
@ -4150,8 +4174,9 @@ void FixBondReact::ReadConstraints(char *line, int myrxn)
|
||||
constraints[i][myrxn].type = DIHEDRAL;
|
||||
tmp[2] = 181.0; // impossible range
|
||||
tmp[3] = 182.0;
|
||||
sscanf(line,"%*s %s %s %s %s %lg %lg %lg %lg",strargs[0],strargs[1],
|
||||
rv = sscanf(line,"%*s %s %s %s %s %lg %lg %lg %lg",strargs[0],strargs[1],
|
||||
strargs[2],strargs[3],&tmp[0],&tmp[1],&tmp[2],&tmp[3]);
|
||||
if (!(rv == 6 || rv == 8)) error->one(FLERR, "Dihedral constraint is incorrectly formatted");
|
||||
readID(strargs[0], i, myrxn, 0);
|
||||
readID(strargs[1], i, myrxn, 1);
|
||||
readID(strargs[2], i, myrxn, 2);
|
||||
@ -4163,7 +4188,8 @@ void FixBondReact::ReadConstraints(char *line, int myrxn)
|
||||
} else if (strcmp(constraint_type,"arrhenius") == 0) {
|
||||
constraints[i][myrxn].type = ARRHENIUS;
|
||||
constraints[i][myrxn].par[0] = narrhenius++;
|
||||
sscanf(line,"%*s %lg %lg %lg %lg",&tmp[0],&tmp[1],&tmp[2],&tmp[3]);
|
||||
rv = sscanf(line,"%*s %lg %lg %lg %lg",&tmp[0],&tmp[1],&tmp[2],&tmp[3]);
|
||||
if (rv != 4) error->one(FLERR, "Arrhenius constraint is incorrectly formatted");
|
||||
constraints[i][myrxn].par[1] = tmp[0];
|
||||
constraints[i][myrxn].par[2] = tmp[1];
|
||||
constraints[i][myrxn].par[3] = tmp[2];
|
||||
@ -4171,7 +4197,8 @@ void FixBondReact::ReadConstraints(char *line, int myrxn)
|
||||
} else if (strcmp(constraint_type,"rmsd") == 0) {
|
||||
constraints[i][myrxn].type = RMSD;
|
||||
strcpy(strargs[0],"0");
|
||||
sscanf(line,"%*s %lg %s",&tmp[0],strargs[0]);
|
||||
rv = sscanf(line,"%*s %lg %s",&tmp[0],strargs[0]);
|
||||
if (!(rv == 1 || rv == 2)) error->one(FLERR, "RMSD constraint is incorrectly formatted");
|
||||
constraints[i][myrxn].par[0] = tmp[0]; // RMSDmax
|
||||
constraints[i][myrxn].id[0] = -1; // optional molecule fragment
|
||||
if (isalpha(strargs[0][0])) {
|
||||
@ -4411,8 +4438,8 @@ void FixBondReact::write_restart(FILE *fp)
|
||||
for (int i = 0; i < nreacts; i++) {
|
||||
set[i].reaction_count_total = reaction_count_total[i];
|
||||
|
||||
strncpy(set[i].rxn_name,rxn_name[i],MAXLINE-1);
|
||||
set[i].rxn_name[MAXLINE-1] = '\0';
|
||||
strncpy(set[i].rxn_name,rxn_name[i],MAXNAME-1);
|
||||
set[i].rxn_name[MAXNAME-1] = '\0';
|
||||
}
|
||||
|
||||
int rbufcount = max_rate_limit_steps*nreacts;
|
||||
@ -4449,13 +4476,16 @@ void FixBondReact::restart(char *buf)
|
||||
Set *set_restart = (Set *) &buf[n*sizeof(int)];
|
||||
r_nreacts = set_restart[0].nreacts;
|
||||
|
||||
n2cpy = 0;
|
||||
if (revision > 0) {
|
||||
r_max_rate_limit_steps = set_restart[0].max_rate_limit_steps;
|
||||
ibufcount = r_max_rate_limit_steps*r_nreacts;
|
||||
memory->create(ibuf,r_max_rate_limit_steps,r_nreacts,"bond/react:ibuf");
|
||||
memcpy(&ibuf[0][0],&buf[sizeof(int)+r_nreacts*sizeof(Set)],sizeof(int)*ibufcount);
|
||||
n2cpy = r_max_rate_limit_steps;
|
||||
} else n2cpy = 0;
|
||||
if (r_max_rate_limit_steps > 0) {
|
||||
ibufcount = r_max_rate_limit_steps*r_nreacts;
|
||||
memory->create(ibuf,r_max_rate_limit_steps,r_nreacts,"bond/react:ibuf");
|
||||
memcpy(&ibuf[0][0],&buf[sizeof(int)+r_nreacts*sizeof(Set)],sizeof(int)*ibufcount);
|
||||
n2cpy = r_max_rate_limit_steps;
|
||||
}
|
||||
}
|
||||
|
||||
if (max_rate_limit_steps < n2cpy) n2cpy = max_rate_limit_steps;
|
||||
for (int i = 0; i < r_nreacts; i++) {
|
||||
@ -4468,7 +4498,7 @@ void FixBondReact::restart(char *buf)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (revision > 0) memory->destroy(ibuf);
|
||||
if (revision > 0 && r_max_rate_limit_steps > 0) memory->destroy(ibuf);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -33,7 +33,8 @@ namespace LAMMPS_NS {
|
||||
|
||||
class FixBondReact : public Fix {
|
||||
public:
|
||||
enum { MAXLINE = 256 }; // max length of line read from files
|
||||
enum { MAXLINE = 1024 }; // max length of line read from files
|
||||
enum { MAXNAME = 256 }; // max character length of react-ID
|
||||
enum { MAXCONIDS = 4 }; // max # of IDs used by any constraint
|
||||
enum { MAXCONPAR = 5 }; // max # of constraint parameters
|
||||
|
||||
@ -154,13 +155,15 @@ class FixBondReact : public Fix {
|
||||
int pion, neigh, trace; // important indices for various loops. required for restore points
|
||||
int lcl_inst; // reaction instance
|
||||
tagint **glove; // 1st colmn: pre-reacted template, 2nd colmn: global IDs
|
||||
// for all mega_gloves and global_mega_glove: first row is the ID of bond/react
|
||||
tagint **local_mega_glove; // consolidation local of reaction instances
|
||||
tagint **ghostly_mega_glove; // consolidation nonlocal of reaction instances
|
||||
// for all mega_gloves: first row is the ID of bond/react
|
||||
tagint **my_mega_glove; // local + ghostly reaction instances
|
||||
tagint **local_mega_glove; // consolidation of local reaction instances
|
||||
tagint **ghostly_mega_glove; // consolidation of nonlocal reaction instances
|
||||
tagint **global_mega_glove; // consolidation (inter-processor) of gloves
|
||||
// containing nonlocal atoms
|
||||
|
||||
int *localsendlist; // indicates ghosts of other procs
|
||||
int my_num_mega; // local + ghostly reaction instances (on this proc)
|
||||
int local_num_mega; // num of local reaction instances
|
||||
int ghostly_num_mega; // num of ghostly reaction instances
|
||||
int global_megasize; // num of reaction instances in global_mega_glove
|
||||
@ -216,7 +219,7 @@ class FixBondReact : public Fix {
|
||||
// store restart data
|
||||
struct Set {
|
||||
int nreacts;
|
||||
char rxn_name[MAXLINE];
|
||||
char rxn_name[MAXNAME];
|
||||
int reaction_count_total;
|
||||
int max_rate_limit_steps;
|
||||
};
|
||||
|
||||
102
src/REPLICA/compute_pressure_alchemy.cpp
Normal file
102
src/REPLICA/compute_pressure_alchemy.cpp
Normal file
@ -0,0 +1,102 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
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 "compute_pressure_alchemy.h"
|
||||
|
||||
#include "domain.h"
|
||||
#include "error.h"
|
||||
#include "fix.h"
|
||||
#include "modify.h"
|
||||
#include "update.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ComputePressureAlchemy::ComputePressureAlchemy(LAMMPS *lmp, int narg, char **arg) :
|
||||
Compute(lmp, narg, arg)
|
||||
{
|
||||
if (narg != 4) error->all(FLERR, "Illegal compute pressure/alchemy command");
|
||||
if (igroup) error->all(FLERR, "Compute pressure/alchemy must use group all");
|
||||
|
||||
scalar_flag = vector_flag = 1;
|
||||
size_vector = 6;
|
||||
extscalar = 0;
|
||||
extvector = 0;
|
||||
pressflag = 1;
|
||||
timeflag = 1;
|
||||
|
||||
id_fix = arg[3];
|
||||
if (!modify->get_fix_by_id(id_fix))
|
||||
error->all(FLERR, "Could not find compute pressure/alchemy fix ID {} for fix alchemy", id_fix);
|
||||
|
||||
vector = new double[size_vector];
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ComputePressureAlchemy::~ComputePressureAlchemy()
|
||||
{
|
||||
delete[] vector;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ComputePressureAlchemy::init()
|
||||
{
|
||||
|
||||
fix = modify->get_fix_by_id(id_fix);
|
||||
if (!fix)
|
||||
error->all(FLERR, "Could not find compute pressure/alchemy fix ID {} for fix alchemy", id_fix);
|
||||
|
||||
int dim = 0;
|
||||
void *ptr = fix->extract("pressure", dim);
|
||||
if (!ptr || (dim != 1)) error->all(FLERR, "Could not extract pressure from fix alchemy");
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
compute total pressure from tensor, averaged over Pxx, Pyy, Pzz
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double ComputePressureAlchemy::compute_scalar()
|
||||
{
|
||||
invoked_scalar = update->ntimestep;
|
||||
if (update->vflag_global != invoked_scalar)
|
||||
error->all(FLERR, "Virial was not tallied on needed timestep");
|
||||
|
||||
compute_vector();
|
||||
|
||||
if (domain->dimension == 3) {
|
||||
scalar = (vector[0] + vector[1] + vector[2]) / 3.0;
|
||||
} else {
|
||||
scalar = (vector[0] + vector[1]) / 2.0;
|
||||
}
|
||||
return scalar;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
extract compute combined system pressure tensor from alchemy fix
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ComputePressureAlchemy::compute_vector()
|
||||
{
|
||||
invoked_vector = update->ntimestep;
|
||||
if (update->vflag_global != invoked_vector)
|
||||
error->all(FLERR, "Virial was not tallied on needed timestep");
|
||||
|
||||
int dim = 0;
|
||||
double *pressure = (double *) fix->extract("pressure", dim);
|
||||
if (!pressure || (dim != 1)) error->all(FLERR, "Could not extract pressure from fix alchemy");
|
||||
|
||||
for (int i = 0; i < 6; i++) vector[i] = pressure[i];
|
||||
}
|
||||
41
src/REPLICA/compute_pressure_alchemy.h
Normal file
41
src/REPLICA/compute_pressure_alchemy.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 COMPUTE_CLASS
|
||||
// clang-format off
|
||||
ComputeStyle(pressure/alchemy,ComputePressureAlchemy);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_COMPUTE_PRESSURE_ALCHEMY_H
|
||||
#define LMP_COMPUTE_PRESSURE_ALCHEMY_H
|
||||
|
||||
#include "compute.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class ComputePressureAlchemy : public Compute {
|
||||
public:
|
||||
ComputePressureAlchemy(class LAMMPS *, int, char **);
|
||||
~ComputePressureAlchemy() override;
|
||||
void init() override;
|
||||
double compute_scalar() override;
|
||||
void compute_vector() override;
|
||||
|
||||
protected:
|
||||
class Fix *fix;
|
||||
std::string id_fix;
|
||||
};
|
||||
} // namespace LAMMPS_NS
|
||||
#endif
|
||||
#endif
|
||||
265
src/REPLICA/fix_alchemy.cpp
Normal file
265
src/REPLICA/fix_alchemy.cpp
Normal file
@ -0,0 +1,265 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
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_alchemy.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "compute.h"
|
||||
#include "domain.h"
|
||||
#include "error.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "modify.h"
|
||||
#include "respa.h"
|
||||
#include "universe.h"
|
||||
#include "update.h"
|
||||
#include "variable.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixAlchemy::FixAlchemy(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), commbuf(nullptr)
|
||||
{
|
||||
if (narg != 4) error->all(FLERR, "Incorrect number of arguments for fix alchemy");
|
||||
if (universe->nworlds != 2) error->all(FLERR, "Must use exactly two partitions");
|
||||
if (utils::strmatch(arg[3], "^v_"))
|
||||
id_lambda = arg[3] + 2;
|
||||
else
|
||||
error->all(FLERR, "Must use variable as lambda argument to fix alchemy");
|
||||
|
||||
lambda = epot[0] = epot[1] = epot[2] = 0.0;
|
||||
progress = 0;
|
||||
for (int i = 0; i < 6; ++i) pressure[i] = 0.0;
|
||||
|
||||
no_change_box = 1;
|
||||
time_depend = 1;
|
||||
scalar_flag = 1;
|
||||
extscalar = 0;
|
||||
vector_flag = 1;
|
||||
size_vector = 3;
|
||||
extvector = 1;
|
||||
ilevel_respa = 0;
|
||||
nmax = 6;
|
||||
sync_box = 0;
|
||||
|
||||
// set up rank-to-rank communicator for inter-partition communication
|
||||
|
||||
int color = comm->me;
|
||||
int key = universe->iworld;
|
||||
MPI_Comm_split(universe->uworld, color, key, &samerank);
|
||||
|
||||
// check that we have the same domain decomposition on all ranks
|
||||
|
||||
int my_nlocal[2] = {0, 0};
|
||||
int all_nlocal[2] = {0, 0};
|
||||
my_nlocal[universe->iworld] = atom->nlocal;
|
||||
MPI_Allreduce(my_nlocal, all_nlocal, 2, MPI_INT, MPI_SUM, samerank);
|
||||
int fail = (all_nlocal[0] == all_nlocal[1]) ? 0 : 1;
|
||||
int allfail = 0;
|
||||
MPI_Allreduce(&fail, &allfail, 1, MPI_INT, MPI_MAX, universe->uworld);
|
||||
if (allfail)
|
||||
error->all(FLERR, "Number of atoms and domain decomposition must match for both partitions");
|
||||
|
||||
id_pe = std::string(id) + "_pe";
|
||||
pe = modify->add_compute(id_pe + " all pe");
|
||||
pe->addstep(update->ntimestep);
|
||||
id_temp = std::string(id) + "_temp";
|
||||
temp = modify->add_compute(id_temp + " all temp");
|
||||
temp->addstep(update->ntimestep);
|
||||
id_press = std::string(id) + "_press";
|
||||
press = modify->add_compute(id_press + " all pressure " + id_temp);
|
||||
press->addstep(update->ntimestep);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixAlchemy::~FixAlchemy()
|
||||
{
|
||||
MPI_Comm_free(&samerank);
|
||||
modify->delete_compute(id_pe);
|
||||
modify->delete_compute(id_temp);
|
||||
modify->delete_compute(id_press);
|
||||
memory->destroy(commbuf);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
int FixAlchemy::setmask()
|
||||
{
|
||||
int mask = 0;
|
||||
mask |= POST_INTEGRATE;
|
||||
mask |= POST_FORCE;
|
||||
return mask;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
static void synchronize_box(Domain *domain, MPI_Comm samerank)
|
||||
{
|
||||
MPI_Bcast(&domain->boxlo[0], 3, MPI_DOUBLE, 0, samerank);
|
||||
MPI_Bcast(&domain->boxhi[0], 3, MPI_DOUBLE, 0, samerank);
|
||||
MPI_Bcast(&domain->yz, 1, MPI_DOUBLE, 0, samerank);
|
||||
MPI_Bcast(&domain->xz, 1, MPI_DOUBLE, 0, samerank);
|
||||
MPI_Bcast(&domain->xy, 1, MPI_DOUBLE, 0, samerank);
|
||||
domain->set_global_box();
|
||||
domain->set_local_box();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixAlchemy::init()
|
||||
{
|
||||
int onenmax = MAX(nmax, 3 * atom->nmax);
|
||||
MPI_Allreduce(&onenmax, &nmax, 1, MPI_INT, MPI_MAX, universe->uworld);
|
||||
memory->destroy(commbuf);
|
||||
memory->create(commbuf, sizeof(double) * nmax, "alchemy:nmax");
|
||||
|
||||
if (modify->get_fix_by_style("^balance").size() > 0)
|
||||
error->all(FLERR, "Fix alchemy is not compatible with load balancing");
|
||||
|
||||
if (modify->get_fix_by_style("^alchemy").size() > 1)
|
||||
error->all(FLERR, "There may only one fix alchemy at a time");
|
||||
|
||||
ivar = input->variable->find(id_lambda.c_str());
|
||||
if (ivar < 0)
|
||||
error->universe_one(FLERR, fmt::format("Variable {} for fix alchemy does not exist", id_lambda));
|
||||
if (!input->variable->equalstyle(ivar))
|
||||
error->universe_one(FLERR,
|
||||
fmt::format("Variable {} for fix alchemy is invalid style", id_lambda));
|
||||
lambda = input->variable->compute_equal(ivar);
|
||||
|
||||
// synchronize box dimensions, determine if resync during run will be needed.
|
||||
|
||||
synchronize_box(domain, samerank);
|
||||
|
||||
sync_box = 0;
|
||||
for (auto ifix : modify->get_fix_list())
|
||||
if (ifix->box_change) sync_box = 1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixAlchemy::setup(int vflag)
|
||||
{
|
||||
if (utils::strmatch(update->integrate_style, "^respa")) {
|
||||
auto respa = dynamic_cast<Respa *>(update->integrate);
|
||||
respa->copy_flevel_f(ilevel_respa);
|
||||
post_force_respa(vflag, ilevel_respa, 0);
|
||||
respa->copy_f_flevel(ilevel_respa);
|
||||
} else {
|
||||
post_force(vflag);
|
||||
}
|
||||
|
||||
if (universe->me == 0) {
|
||||
double delta = update->ntimestep - update->beginstep;
|
||||
if ((delta != 0.0) && (update->beginstep != update->endstep))
|
||||
delta /= update->endstep - update->beginstep;
|
||||
progress = static_cast<int>(delta*100.0);
|
||||
auto msg = fmt::format("Starting alchemical transformation at {:>3d}%\n", progress);
|
||||
if (universe->uscreen) fmt::print(universe->uscreen, msg);
|
||||
if (universe->ulogfile) fmt::print(universe->ulogfile, msg);
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixAlchemy::post_integrate()
|
||||
{
|
||||
// synchronize atom positions
|
||||
|
||||
const int nall = atom->nlocal + atom->nghost;
|
||||
MPI_Bcast(&atom->x[0][0], 3 * nall, MPI_DOUBLE, 0, samerank);
|
||||
|
||||
// synchronize box dimensions, if needed
|
||||
|
||||
if (sync_box) synchronize_box(domain, samerank);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixAlchemy::post_force(int /*vflag*/)
|
||||
{
|
||||
if (3 * atom->nmax > nmax) {
|
||||
nmax = 3 * atom->nmax;
|
||||
memory->grow(commbuf, sizeof(double) * atom->nmax, "alchemy:commbuf");
|
||||
}
|
||||
|
||||
const int nall = 3 * atom->nlocal;
|
||||
double *f = &atom->f[0][0];
|
||||
lambda = input->variable->compute_equal(ivar);
|
||||
|
||||
for (int i = 0; i < nall; ++i) commbuf[i] = f[i] * lambda;
|
||||
MPI_Allreduce(commbuf, f, nall, MPI_DOUBLE, MPI_SUM, samerank);
|
||||
|
||||
// sum up potential energy
|
||||
|
||||
const double scalefac = 1.0 / comm->nprocs;
|
||||
commbuf[0] = commbuf[1] = commbuf[2] = 0.0;
|
||||
commbuf[universe->iworld] = scalefac * pe->compute_scalar();
|
||||
commbuf[2] = lambda * scalefac * pe->compute_scalar();
|
||||
MPI_Allreduce(commbuf, epot, 3, MPI_DOUBLE, MPI_SUM, universe->uworld);
|
||||
pe->addstep(update->ntimestep + 1);
|
||||
|
||||
// sum up pressure
|
||||
|
||||
press->compute_vector();
|
||||
for (int i = 0; i < 6; ++i) commbuf[i] = lambda * scalefac * press->vector[i];
|
||||
MPI_Allreduce(commbuf, pressure, 6, MPI_DOUBLE, MPI_SUM, universe->uworld);
|
||||
press->addstep(update->ntimestep + 1);
|
||||
|
||||
// print progress info
|
||||
|
||||
if (universe->me == 0) {
|
||||
double delta = update->ntimestep - update->beginstep;
|
||||
if ((delta != 0.0) && (update->beginstep != update->endstep))
|
||||
delta /= update->endstep - update->beginstep;
|
||||
int status = static_cast<int>(delta*100.0);
|
||||
if ((status / 10) > (progress / 10)) {
|
||||
progress = status;
|
||||
auto msg = fmt::format(" Alchemical transformation progress: {:>3d}%\n", progress);
|
||||
if (universe->uscreen) fmt::print(universe->uscreen, msg);
|
||||
if (universe->ulogfile) fmt::print(universe->ulogfile, msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
double FixAlchemy::compute_scalar()
|
||||
{
|
||||
return lambda;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
double FixAlchemy::compute_vector(int n)
|
||||
{
|
||||
return epot[n];
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void *FixAlchemy::extract(const char *str, int &dim)
|
||||
{
|
||||
dim = 0;
|
||||
if (strcmp(str, "lambda") == 0) { return λ }
|
||||
if (strcmp(str, "pe") == 0) { return &epot[2]; }
|
||||
dim = 1;
|
||||
if (strcmp(str, "pressure") == 0) { return pressure; }
|
||||
return nullptr;
|
||||
}
|
||||
58
src/REPLICA/fix_alchemy.h
Normal file
58
src/REPLICA/fix_alchemy.h
Normal file
@ -0,0 +1,58 @@
|
||||
/* -*- 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(alchemy,FixAlchemy);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_ALCHEMY_H
|
||||
#define LMP_FIX_ALCHEMY_H
|
||||
|
||||
#include "fix.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixAlchemy : public Fix {
|
||||
public:
|
||||
FixAlchemy(class LAMMPS *, int, char **);
|
||||
~FixAlchemy() override;
|
||||
|
||||
int setmask() override;
|
||||
void init() override;
|
||||
void setup(int) override;
|
||||
void post_integrate() override;
|
||||
void post_force(int) override;
|
||||
double compute_scalar() override;
|
||||
double compute_vector(int) override;
|
||||
void *extract(const char *, int &) override;
|
||||
|
||||
protected:
|
||||
MPI_Comm samerank;
|
||||
double *commbuf;
|
||||
class Compute *pe, *temp, *press;
|
||||
std::string id_pe, id_temp, id_press, id_lambda;
|
||||
double lambda; // scaling prefactor for combining the partitions
|
||||
double epot[3]; // last (unscaled) potential energy from each replica and combined energy
|
||||
double pressure[6]; // joined pressure
|
||||
int progress; // for progress indicator
|
||||
int sync_box; // 1 of box dimensions need to be synchronized
|
||||
int ilevel_respa;
|
||||
int nmax;
|
||||
int ivar;
|
||||
};
|
||||
} // 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 };
|
||||
|
||||
@ -319,8 +319,6 @@ void CreateBonds::many()
|
||||
|
||||
void CreateBonds::single_bond()
|
||||
{
|
||||
int m;
|
||||
|
||||
// check that 2 atoms exist
|
||||
|
||||
const int nlocal = atom->nlocal;
|
||||
@ -341,7 +339,8 @@ void CreateBonds::single_bond()
|
||||
int **bond_type = atom->bond_type;
|
||||
tagint **bond_atom = atom->bond_atom;
|
||||
|
||||
if ((m = idx1) >= 0) {
|
||||
int m = idx1;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_bond[m] == atom->bond_per_atom)
|
||||
error->one(FLERR, "New bond exceeded bonds per atom in create_bonds");
|
||||
bond_type[m][num_bond[m]] = btype;
|
||||
@ -352,7 +351,8 @@ void CreateBonds::single_bond()
|
||||
|
||||
if (force->newton_bond) return;
|
||||
|
||||
if ((m = idx2) >= 0) {
|
||||
m = idx2;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_bond[m] == atom->bond_per_atom)
|
||||
error->one(FLERR, "New bond exceeded bonds per atom in create_bonds");
|
||||
bond_type[m][num_bond[m]] = btype;
|
||||
@ -365,8 +365,6 @@ void CreateBonds::single_bond()
|
||||
|
||||
void CreateBonds::single_angle()
|
||||
{
|
||||
int m;
|
||||
|
||||
// check that 3 atoms exist
|
||||
|
||||
const int nlocal = atom->nlocal;
|
||||
@ -391,7 +389,8 @@ void CreateBonds::single_angle()
|
||||
tagint **angle_atom2 = atom->angle_atom2;
|
||||
tagint **angle_atom3 = atom->angle_atom3;
|
||||
|
||||
if ((m = idx2) >= 0) {
|
||||
int m = idx2;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_angle[m] == atom->angle_per_atom)
|
||||
error->one(FLERR, "New angle exceeded angles per atom in create_bonds");
|
||||
angle_type[m][num_angle[m]] = atype;
|
||||
@ -404,7 +403,8 @@ void CreateBonds::single_angle()
|
||||
|
||||
if (force->newton_bond) return;
|
||||
|
||||
if ((m = idx1) >= 0) {
|
||||
m = idx1;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_angle[m] == atom->angle_per_atom)
|
||||
error->one(FLERR, "New angle exceeded angles per atom in create_bonds");
|
||||
angle_type[m][num_angle[m]] = atype;
|
||||
@ -414,7 +414,8 @@ void CreateBonds::single_angle()
|
||||
num_angle[m]++;
|
||||
}
|
||||
|
||||
if ((m = idx3) >= 0) {
|
||||
m = idx3;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_angle[m] == atom->angle_per_atom)
|
||||
error->one(FLERR, "New angle exceeded angles per atom in create_bonds");
|
||||
angle_type[m][num_angle[m]] = atype;
|
||||
@ -429,8 +430,6 @@ void CreateBonds::single_angle()
|
||||
|
||||
void CreateBonds::single_dihedral()
|
||||
{
|
||||
int m;
|
||||
|
||||
// check that 4 atoms exist
|
||||
|
||||
const int nlocal = atom->nlocal;
|
||||
@ -458,7 +457,8 @@ void CreateBonds::single_dihedral()
|
||||
tagint **dihedral_atom3 = atom->dihedral_atom3;
|
||||
tagint **dihedral_atom4 = atom->dihedral_atom4;
|
||||
|
||||
if ((m = idx2) >= 0) {
|
||||
int m = idx2;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||
error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds");
|
||||
dihedral_type[m][num_dihedral[m]] = dtype;
|
||||
@ -472,7 +472,8 @@ void CreateBonds::single_dihedral()
|
||||
|
||||
if (force->newton_bond) return;
|
||||
|
||||
if ((m = idx1) >= 0) {
|
||||
m = idx1;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||
error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds");
|
||||
dihedral_type[m][num_dihedral[m]] = dtype;
|
||||
@ -483,7 +484,8 @@ void CreateBonds::single_dihedral()
|
||||
num_dihedral[m]++;
|
||||
}
|
||||
|
||||
if ((m = idx3) >= 0) {
|
||||
m = idx3;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||
error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds");
|
||||
dihedral_type[m][num_dihedral[m]] = dtype;
|
||||
@ -494,7 +496,8 @@ void CreateBonds::single_dihedral()
|
||||
num_dihedral[m]++;
|
||||
}
|
||||
|
||||
if ((m = idx4) >= 0) {
|
||||
m = idx4;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_dihedral[m] == atom->dihedral_per_atom)
|
||||
error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds");
|
||||
dihedral_type[m][num_dihedral[m]] = dtype;
|
||||
@ -510,8 +513,6 @@ void CreateBonds::single_dihedral()
|
||||
|
||||
void CreateBonds::single_improper()
|
||||
{
|
||||
int m;
|
||||
|
||||
// check that 4 atoms exist
|
||||
|
||||
const int nlocal = atom->nlocal;
|
||||
@ -539,7 +540,8 @@ void CreateBonds::single_improper()
|
||||
tagint **improper_atom3 = atom->improper_atom3;
|
||||
tagint **improper_atom4 = atom->improper_atom4;
|
||||
|
||||
if ((m = idx2) >= 0) {
|
||||
int m = idx2;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_improper[m] == atom->improper_per_atom)
|
||||
error->one(FLERR, "New improper exceeded impropers per atom in create_bonds");
|
||||
improper_type[m][num_improper[m]] = dtype;
|
||||
@ -553,7 +555,8 @@ void CreateBonds::single_improper()
|
||||
|
||||
if (force->newton_bond) return;
|
||||
|
||||
if ((m = idx1) >= 0) {
|
||||
m = idx1;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_improper[m] == atom->improper_per_atom)
|
||||
error->one(FLERR, "New improper exceeded impropers per atom in create_bonds");
|
||||
improper_type[m][num_improper[m]] = dtype;
|
||||
@ -564,7 +567,8 @@ void CreateBonds::single_improper()
|
||||
num_improper[m]++;
|
||||
}
|
||||
|
||||
if ((m = idx3) >= 0) {
|
||||
m = idx3;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_improper[m] == atom->improper_per_atom)
|
||||
error->one(FLERR, "New improper exceeded impropers per atom in create_bonds");
|
||||
improper_type[m][num_improper[m]] = dtype;
|
||||
@ -575,7 +579,8 @@ void CreateBonds::single_improper()
|
||||
num_improper[m]++;
|
||||
}
|
||||
|
||||
if ((m = idx4) >= 0) {
|
||||
m = idx4;
|
||||
if ((m >= 0) && (m < nlocal)) {
|
||||
if (num_improper[m] == atom->improper_per_atom)
|
||||
error->one(FLERR, "New improper exceeded impropers per atom in create_bonds");
|
||||
improper_type[m][num_improper[m]] = dtype;
|
||||
|
||||
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