Merge branch 'develop' into feature/batch-snap-ilp
This commit is contained in:
@ -117,6 +117,7 @@ OPT.
|
||||
* :doc:`mvv/tdpd <fix_mvv_dpd>`
|
||||
* :doc:`neb <fix_neb>`
|
||||
* :doc:`neb/spin <fix_neb_spin>`
|
||||
* :doc:`neighbor/swap <fix_neighbor_swap>`
|
||||
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>`
|
||||
* :doc:`nph (ko) <fix_nh>`
|
||||
* :doc:`nph/asphere (o) <fix_nph_asphere>`
|
||||
|
||||
@ -45,13 +45,13 @@ Examples
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Compute *stress/mop* and compute *stress/mop/profile* define
|
||||
computations that calculate components of the local stress tensor using
|
||||
the method of planes :ref:`(Todd) <mop-todd>`. Specifically in compute
|
||||
*stress/mop* calculates 3 components are computed in directions *dir*,\
|
||||
*x*\ ; *dir*,\ *y*\ ; and *dir*,\ *z*\ ; where *dir* is the direction
|
||||
normal to the plane, while in compute *stress/mop/profile* the profile
|
||||
of the stress is computed.
|
||||
Compute *stress/mop* and compute *stress/mop/profile*
|
||||
calculate components of the local stress tensor using
|
||||
the method of planes :ref:`(Todd) <mop-todd>`. Specifically, compute
|
||||
*stress/mop* calculates 3 components in directions :math:`ix`,
|
||||
:math:`iy`, and :math:`iz` where :math:`i` is the direction
|
||||
normal to the plane, while compute *stress/mop/profile* calculates the profile
|
||||
of the local stress along the :math:`i` direction.
|
||||
|
||||
Contrary to methods based on histograms of atomic stress (i.e., using
|
||||
:doc:`compute stress/atom <compute_stress_atom>`), the method of planes
|
||||
@ -103,14 +103,15 @@ Output info
|
||||
Compute *stress/mop* calculates a global vector (indices starting at 1),
|
||||
with 3 values for each declared keyword (in the order the keywords have
|
||||
been declared). For each keyword, the stress tensor components are
|
||||
ordered as follows: stress_dir,x, stress_dir,y, and stress_dir,z.
|
||||
ordered as follows: :math:`P_{ix}`, :math:`P_{iy}`, and :math:`P_{iz}`,
|
||||
where :math:`i` is the direction normal to the plane.
|
||||
|
||||
Compute *stress/mop/profile* instead calculates a global array, with 1
|
||||
column giving the position of the planes where the stress tensor was
|
||||
computed, and with 3 columns of values for each declared keyword (in the
|
||||
order the keywords have been declared). For each keyword, the profiles
|
||||
of stress tensor components are ordered as follows: stress_dir,x;
|
||||
stress_dir,y; and stress_dir,z.
|
||||
of stress tensor components are ordered as follows: :math:`P_{ix}`,
|
||||
:math:`P_{iy}`, and :math:`P_{iz}`.
|
||||
|
||||
The values are in pressure :doc:`units <units>`.
|
||||
|
||||
@ -129,12 +130,11 @@ package <Build_package>` doc page on for more info.
|
||||
The method is implemented for orthogonal simulation boxes whose
|
||||
size does not change in time, and axis-aligned planes.
|
||||
|
||||
The method only works with two-body pair interactions, because it
|
||||
requires the class method ``Pair::single()`` to be implemented, which is
|
||||
not possible for manybody potentials. In particular, compute
|
||||
*stress/mop/profile* and *stress/mop* do not work with more than two-body
|
||||
pair interactions, long range (kspace) interactions and
|
||||
improper intramolecular interactions.
|
||||
Compute *stress/mop* and *stress/mop/profile* do not work with manybody
|
||||
non-bonded interactions, long range (kspace) interactions and
|
||||
improper intramolecular interactions. The reason is that the current
|
||||
implementation requires the class method ``Pair::single()`` to be implemented,
|
||||
which is not possible for manybody potentials.
|
||||
|
||||
The impact of fixes that affect the stress (e.g. fix langevin) is
|
||||
also not included in the stress computed here.
|
||||
|
||||
@ -296,6 +296,7 @@ accelerated styles exist.
|
||||
* :doc:`mvv/tdpd <fix_mvv_dpd>` - constant temperature DPD using the modified velocity-Verlet algorithm
|
||||
* :doc:`neb <fix_neb>` - nudged elastic band (NEB) spring forces
|
||||
* :doc:`neb/spin <fix_neb_spin>` - nudged elastic band (NEB) spring forces for spins
|
||||
* :doc:`neighbor/swap <fix_neighbor_swap>` - kinetic Monte Carlo (kMC) atom swapping
|
||||
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>` - calculate nonaffine displacement of atoms
|
||||
* :doc:`nph <fix_nh>` - constant NPH time integration via Nose/Hoover
|
||||
* :doc:`nph/asphere <fix_nph_asphere>` - NPH for aspherical particles
|
||||
|
||||
264
doc/src/fix_neighbor_swap.rst
Normal file
264
doc/src/fix_neighbor_swap.rst
Normal file
@ -0,0 +1,264 @@
|
||||
.. index:: fix neighbor/swap
|
||||
|
||||
fix neighbor/swap command
|
||||
=========================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID neighbor/swap N X seed T R0 voro-ID keyword values ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* neighbor/swap = style name of this fix command
|
||||
* N = invoke this fix every N steps
|
||||
* X = number of swaps to attempt every N steps
|
||||
* seed = random # seed (positive integer)
|
||||
* T = scaling temperature of the MC swaps (temperature units)
|
||||
* R0 = scaling swap probability of the MC swaps (distance units)
|
||||
* voro-ID = valid voronoi compute id (compute voronoi/atom)
|
||||
* one or more keyword/value pairs may be appended to args
|
||||
* keywords *types* and *diff* are mutually exclusive, but one must be specified
|
||||
* keyword = *types* or *diff* or *ke* or *region* or *rates*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*types* values = two or more atom types (Integers in range [1,Ntypes] or type labels)
|
||||
*diff* values = one atom type
|
||||
*ke* value = *yes* or *no*
|
||||
*yes* = kinetic energy is conserved after atom swaps
|
||||
*no* = no conservation of kinetic energy after atom swaps
|
||||
*region* value = region-ID
|
||||
region-ID = ID of region to use as an exchange/move volume
|
||||
*rates* values = V1 V2 . . . Vntypes values to conduct variable diffusion for different atom types (unitless)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
fix mc all neighbor/swap 10 160 15238 1000.0 3.0 voroN diff 2
|
||||
fix myFix all neighbor/swap 100 1 12345 298.0 3.0 voroN region my_swap_region types 5 6
|
||||
fix kmc all neighbor/swap 1 100 345 1.0 3.0 voroN diff 3 rates 3 1 6
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
This fix performs Monte-Carlo (MC) evaluations to enable kinetic
|
||||
Monte Carlo (kMC)-type behavior during MD simulation by allowing
|
||||
neighboring atoms to swap their positions. In contrast to the :doc:`fix
|
||||
atom/swap <fix_atom_swap>` command which swaps pairs of atoms anywhere
|
||||
in the simulation domain, the restriction of the MC swapping to
|
||||
neighbors enables a hybrid MD/kMC-like simulation.
|
||||
|
||||
Neighboring atoms are defined by using a Voronoi tesselation performed
|
||||
by the :doc:`compute voronoi/atom <compute_voronoi_atom>` command.
|
||||
Two atoms are neighbors if their Voronoi cells share a common face
|
||||
(3d) or edge (2d).
|
||||
|
||||
The selection of a swap neighbor is made using a distance-based
|
||||
criterion for weighting the selection probability of each swap, in the
|
||||
same manner as kMC selects a next event using relative probabilities.
|
||||
The acceptance or rejection of each swap is determined via the
|
||||
Metropolis criterion after evaluating the change in system energy due
|
||||
to the swap.
|
||||
|
||||
A detailed explanation of the original implementation of this
|
||||
algorithm can be found in :ref:`(Tavenner 2023) <TavennerMDkMC>`
|
||||
where it was used to simulated accelerated diffusion in an MD context.
|
||||
|
||||
Simulating inherently kinetically-limited behaviors which rely on rare
|
||||
events (such as atomic diffusion in a solid) is challenging for
|
||||
traditional MD since its relatively short timescale will not naturally
|
||||
sample many events. This fix addresses this challenge by allowing rare
|
||||
neighbor hopping events to be sampled in a kMC-like fashion at a much
|
||||
faster rate (set by the specified *N* and *X* parameters). This enables
|
||||
the processes of atomic diffusion to be approximated during an MD
|
||||
simulation, effectively decoupling the MD atomic vibrational timescale
|
||||
and the atomic hopping (kMC event) timescale.
|
||||
|
||||
The algorithm implemented by this fix is as follows:
|
||||
|
||||
- The MD simulation is paused every *N* steps
|
||||
- A Voronoi tesselation is performed for the current atom configuration.
|
||||
- Then *X* atom swaps are attempted, one after the other.
|
||||
- For each swap, an atom *I* is selected randomly from the list of
|
||||
atom types specified by either the *types* or *diff* keywords.
|
||||
- One of *I*'s Voronoi neighbors *J* is selected using the
|
||||
distance-weighted probability for each neighbor detailed below.
|
||||
- The *I,J* atom IDs are communicated to all processors so that a
|
||||
global energy evaluation can be performed for the post-swap state
|
||||
of the system.
|
||||
- The swap is accepted or rejected based on the Metropolis criterion
|
||||
using the energy change of the system and the specified temperature
|
||||
*T*.
|
||||
|
||||
Here are a few comments on the computational cost of the swapping
|
||||
algorithm.
|
||||
|
||||
1. The cost of a global energy evaluation is similar to that of an MD
|
||||
timestep.
|
||||
|
||||
2. Similar to other MC algorithms in LAMMPS, improved parallel
|
||||
efficiency is achieved with a smaller number of atoms per
|
||||
processor than would typically be used in an standard MD
|
||||
simulation. This is because the per-energy evaluation cost
|
||||
increases relative to the balance of MD/MC steps as indicated by
|
||||
1., but the communication cost remains relatively constant for a
|
||||
given number of MD steps.
|
||||
|
||||
3. The MC portion of the simulation will run dramatically slower if
|
||||
the pair style uses different cutoffs for different atom types (or
|
||||
type pairs). This is because each atom swap then requires a
|
||||
rebuild of the neighbor list to ensure the post-swap global energy
|
||||
can be computed correctly.
|
||||
|
||||
Limitations are imposed on selection of *I,J* atom pairs to avoid
|
||||
swapping of atoms which are outside of a reasonable cutoff (e.g. due to
|
||||
a Voronoi tesselation near free surfaces) though the use of a
|
||||
distance-weighted probability scaling.
|
||||
|
||||
----------
|
||||
|
||||
This section gives more details on other arguments and keywords.
|
||||
|
||||
The random number generator (RNG) used by all the processors for MC
|
||||
operations is initialized with the specified *seed*.
|
||||
|
||||
The distance-based probability is weighted by the specified *R0* which
|
||||
sets the radius :math:`r_0` in this formula
|
||||
|
||||
.. math::
|
||||
|
||||
p_{ij} = e^{(\frac{r_{ij}}{r_0})^2}
|
||||
|
||||
where :math:`p_{ij}` is the probability of selecting atom :math:`j` to
|
||||
swap with atom :math:`i`. Typically, a value for *R0* around the
|
||||
average nearest-neighbor spacing is appropriate. Since this is simply a
|
||||
probability weighting, the swapping behavior is not very sensitive to
|
||||
the exact value of *R0*.
|
||||
|
||||
The required *voro-ID* value is the compute-ID of a
|
||||
:doc:`compute voronoi/atom <compute_voronoi_atom>` command like
|
||||
this:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute compute-ID group-ID voronoi/atom neighbors yes
|
||||
|
||||
It must return per-atom list of valid neighbor IDs as in the
|
||||
:doc:`compute voronoi/atom <compute_voronoi_atom>` command.
|
||||
|
||||
The keyword *types* takes two or more atom types as its values. Only
|
||||
atoms *I* of the first atom type will be selected. Only atoms *J* of the
|
||||
remaining atom types will be considered as potential swap partners.
|
||||
|
||||
The keyword *diff* take a single atom type as its value. Only atoms
|
||||
*I* of the that atom type will be selected. Atoms *J* of all
|
||||
remaining atom types will be considered as potential swap partners.
|
||||
This includes the atom type specified with the *diff* keyword to
|
||||
account for self-diffusive hops between two atoms of the same type.
|
||||
|
||||
Note that the *neighbors yes* option must be enabled for use with this
|
||||
fix. The group-ID should include all the atoms which this fix will
|
||||
potentially select. I.e. the group-ID used in the voronoi compute should
|
||||
include the same atoms as that indicated by the *types* keyword. If the
|
||||
*diff* keyword is used, the group-ID should include atoms of all types
|
||||
in the simulation.
|
||||
|
||||
The keyword *ke* takes *yes* (default) or *no* as its value. It two
|
||||
atoms are swapped with different masses, then a value of *yes* will
|
||||
rescale their respective velocities to conserve the kinetic energy of
|
||||
the system. A value of *no* will perform no rescaling, so that
|
||||
kinetic energy is not conserved. See the restriction on this keyword
|
||||
below.
|
||||
|
||||
The *region* keyword takes a *region-ID* as its value. If specified,
|
||||
then only atoms *I* and *J* within the geometric region will be
|
||||
considered as swap partners. See the :doc:`region <region>` command
|
||||
for details. This means the group-ID for the :doc:`compute
|
||||
voronoi/atom <compute_voronoi_atom>` command also need only contain
|
||||
atoms within the region.
|
||||
|
||||
The keyword *rates* can modify the swap rate based on the type of atom
|
||||
*J*. Ntype values must be specified, where Ntype = the number of atom
|
||||
types in the system. Each value is used to scale the probability
|
||||
weighting given by the equation above. In the third example command
|
||||
above, a simulation has 3 atoms types. Atom *I*s of type 1 are
|
||||
eligible for swapping. Swaps may occur with atom *J*s of all 3 types.
|
||||
Assuming all *J* atoms are equidistant from an atom *I*, *J* atoms of
|
||||
type 1 will be 3x more likely to be selected as a swap partner than
|
||||
atoms of type 2. And *J* atoms of type 3 will be 6.5x more likely to
|
||||
be selected than atoms of type 2. If the *rates* keyword is not used,
|
||||
all atom types will be treated with the same probability during selection
|
||||
of swap attempts.
|
||||
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
This fix writes the state of the fix to :doc:`binary restart files
|
||||
<restart>`. This includes information about the random number generator
|
||||
seed, the next timestep for MC exchanges, and the number of exchange
|
||||
attempts and successes. See the :doc:`read_restart <read_restart>`
|
||||
command for info on how to re-specify a fix in an input script that
|
||||
reads a restart file, so that the operation of the fix continues in an
|
||||
uninterrupted fashion.
|
||||
|
||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to this
|
||||
fix.
|
||||
|
||||
This fix computes a global vector of length 2, which can be accessed
|
||||
by various :doc:`output commands <Howto_output>`. The vector values are
|
||||
the following global cumulative quantities:
|
||||
|
||||
#. swap attempts
|
||||
#. swap accepts
|
||||
|
||||
The vector values calculated by this fix are "intensive".
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the MC package. It is only enabled if LAMMPS was
|
||||
built with that package. See the :doc:`Build package <Build_package>`
|
||||
doc page for more info. Also this fix requires that the :ref:`VORONOI
|
||||
package <PKG-VORONOI>` is installed, otherwise the fix will not be
|
||||
compiled.
|
||||
|
||||
The :doc:`compute voronoi/atom <compute_voronoi_atom>` command
|
||||
referenced by the required voro-ID must return neighboring atoms as
|
||||
illustrated in the examples above.
|
||||
|
||||
If this fix is used with systems that do not have per-type masses
|
||||
(e.g. atom style sphere), the *ke* keyword must be set to *off* since
|
||||
the implemented algorithm will not be able to re-scale velocities
|
||||
properly.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix nvt <fix_nh>`, :doc:`compute voronoi/atom <compute_voronoi_atom>`
|
||||
:doc:`delete_atoms <delete_atoms>`, :doc:`fix gcmc <fix_gcmc>`,
|
||||
:doc:`fix atom/swap <fix_atom_swap>`, :doc:`fix mol/swap <fix_mol_swap>`,
|
||||
:doc:`fix sgcmc <fix_sgcmc>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The option defaults are *ke* = yes and *rates* = 1 for all atom types.
|
||||
|
||||
----------
|
||||
|
||||
.. _TavennerMDkMC:
|
||||
|
||||
**(Tavenner 2023)** J Tavenner, M Mendelev, J Lawson, Computational
|
||||
Materials Science, 218, 111929 (2023).
|
||||
1
examples/PACKAGES/neighbor-swap/MoCoNiVFeAlCr_2nn.meam
Symbolic link
1
examples/PACKAGES/neighbor-swap/MoCoNiVFeAlCr_2nn.meam
Symbolic link
@ -0,0 +1 @@
|
||||
../../../potentials/MoCoNiVFeAlCr_2nn.meam
|
||||
46
examples/PACKAGES/neighbor-swap/in.KMC_pulse_center
Normal file
46
examples/PACKAGES/neighbor-swap/in.KMC_pulse_center
Normal file
@ -0,0 +1,46 @@
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
create_atoms 1 region whole
|
||||
|
||||
replicate 6 16 6
|
||||
|
||||
region puck block INF INF 7 9 INF INF
|
||||
set region puck type 2
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
#write_data pulse_center.data
|
||||
47
examples/PACKAGES/neighbor-swap/in.KMC_pulse_edge
Normal file
47
examples/PACKAGES/neighbor-swap/in.KMC_pulse_edge
Normal file
@ -0,0 +1,47 @@
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
create_atoms 1 region whole
|
||||
|
||||
replicate 6 16 6
|
||||
|
||||
region puck block INF INF INF 2 INF INF
|
||||
set region puck type 2
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
#write_data pulse_end.data
|
||||
1
examples/PACKAGES/neighbor-swap/library_2nn.meam
Symbolic link
1
examples/PACKAGES/neighbor-swap/library_2nn.meam
Symbolic link
@ -0,0 +1 @@
|
||||
../../../potentials/library_2nn.meam
|
||||
@ -0,0 +1,174 @@
|
||||
LAMMPS (12 Jun 2025 - Development - patch_12Jun2025-605-g5eb61491f0-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread.
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
Lattice spacing in x,y,z = 3.762 3.762 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
Created orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 region whole
|
||||
Created 4 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
replicate 6 16 6
|
||||
Replication is creating a 6x16x6 = 576 times larger system...
|
||||
orthogonal box = (0 0 0) to (22.572 60.192 22.572)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
2304 atoms
|
||||
replicate CPU = 0.000 seconds
|
||||
|
||||
region puck block INF INF 7 9 INF INF
|
||||
set region puck type 2
|
||||
Setting atom values ...
|
||||
360 settings made for type
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
Reading MEAM library file library_2nn.meam with DATE: 2024-08-08
|
||||
Reading MEAM potential file MoCoNiVFeAlCr_2nn.meam with DATE: 2024-08-08
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
WARNING: No fixes with time integration, atoms won't move
|
||||
For more information see https://docs.lammps.org/err0028 (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.8
|
||||
ghost atom cutoff = 6.8
|
||||
binsize = 3.4, bins = 7 18 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair meam, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair meam, perpetual, half/full from (1)
|
||||
attributes: half, newton on
|
||||
pair build: halffull/newton
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.32 | 13.32 | 13.32 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 -9674.3728 0 -9674.3728 -212400.94
|
||||
Loop time of 8.62e-07 on 1 procs for 0 steps with 2304 atoms
|
||||
|
||||
0.0% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 8.62e-07 | | |100.00
|
||||
|
||||
Nlocal: 2304 ave 2304 max 2304 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 4735 ave 4735 max 4735 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 99072 ave 99072 max 99072 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 198144 ave 198144 max 198144 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 198144
|
||||
Ave neighs/atom = 86
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- fix neighbor/swap command: doi:10.1016/j.commatsci.2022.111929
|
||||
|
||||
@Article{Tavenner2023111929,
|
||||
author = {Jacob P. Tavenner and Mikhail I. Mendelev and John W. Lawson},
|
||||
title = {Molecular dynamics based kinetic Monte Carlo simulation for accelerated diffusion},
|
||||
journal = {Computational Materials Science},
|
||||
year = {2023},
|
||||
volume = {218},
|
||||
pages = {111929}
|
||||
url = {https://dx.doi.org/10.1016/j.commatsci.2022.111929}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.32 | 13.32 | 13.32 Mbytes
|
||||
Step Temp Press Pxx Pyy Pzz Lx Ly Lz Volume PotEng f_mc[1] f_mc[2]
|
||||
0 2400 -187517.52 -187464.28 -188202.86 -186885.42 22.572 60.192 22.572 30667.534 -9674.3728 0 0
|
||||
100 1687.1584 13681.454 14112.794 14026.902 12904.667 21.637683 57.728817 21.63703 27027.2 -9600.6424 24 23
|
||||
200 1578.9879 -6074.2872 -7170.074 -4456.4001 -6596.3875 21.71812 58.13626 21.712735 27414.722 -9569.7632 48 44
|
||||
300 1586.0502 1921.5002 2871.8396 1449.0001 1443.661 21.677891 58.13829 21.643595 27277.759 -9572.2349 72 67
|
||||
400 1599.8151 459.13309 -890.62191 638.40686 1629.6143 21.662475 58.208733 21.64368 27291.495 -9576.3711 96 88
|
||||
500 1622.7406 -980.83045 -358.66202 -2883.0275 299.19813 21.627475 58.244052 21.683194 27313.708 -9583.2244 120 110
|
||||
600 1558.3072 661.01491 2134.4817 -1069.4315 917.99455 21.675158 58.08722 21.705367 27328.136 -9564.1953 144 132
|
||||
700 1585.7908 2896.8915 2712.2516 5131.3298 847.09324 21.703761 57.89964 21.704281 27274.466 -9572.077 168 154
|
||||
800 1593.7707 -754.08728 -529.51328 807.24585 -2539.9944 21.682927 58.129291 21.67599 27320.704 -9574.7174 192 175
|
||||
900 1594.1026 -504.80889 147.79949 -1421.9393 -240.28691 21.678023 58.172814 21.655846 27309.572 -9574.7989 216 198
|
||||
1000 1604.8161 1017.6914 707.59987 2068.9348 276.53957 21.696786 57.985179 21.676799 27271.408 -9578.0587 240 221
|
||||
Loop time of 30.6062 on 1 procs for 1000 steps with 2304 atoms
|
||||
|
||||
Performance: 5.646 ns/day, 4.251 hours/ns, 32.673 timesteps/s, 75.279 katom-step/s
|
||||
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 27.514 | 27.514 | 27.514 | 0.0 | 89.90
|
||||
Neigh | 0.22106 | 0.22106 | 0.22106 | 0.0 | 0.72
|
||||
Comm | 0.011786 | 0.011786 | 0.011786 | 0.0 | 0.04
|
||||
Output | 0.00030095 | 0.00030095 | 0.00030095 | 0.0 | 0.00
|
||||
Modify | 2.854 | 2.854 | 2.854 | 0.0 | 9.32
|
||||
Other | | 0.004794 | | | 0.02
|
||||
|
||||
Nlocal: 2304 ave 2304 max 2304 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 4744 ave 4744 max 4744 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 130039 ave 130039 max 130039 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 260078 ave 260078 max 260078 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 260078
|
||||
Ave neighs/atom = 112.88108
|
||||
Neighbor list builds = 62
|
||||
Dangerous builds = 0
|
||||
|
||||
#write_data pulse_center.data
|
||||
Total wall time: 0:00:30
|
||||
@ -0,0 +1,174 @@
|
||||
LAMMPS (12 Jun 2025 - Development - patch_12Jun2025-605-g5eb61491f0-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread.
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
Lattice spacing in x,y,z = 3.762 3.762 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
Created orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
create_atoms 1 region whole
|
||||
Created 4 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
replicate 6 16 6
|
||||
Replication is creating a 6x16x6 = 576 times larger system...
|
||||
orthogonal box = (0 0 0) to (22.572 60.192 22.572)
|
||||
1 by 4 by 1 MPI processor grid
|
||||
2304 atoms
|
||||
replicate CPU = 0.000 seconds
|
||||
|
||||
region puck block INF INF 7 9 INF INF
|
||||
set region puck type 2
|
||||
Setting atom values ...
|
||||
360 settings made for type
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
Reading MEAM library file library_2nn.meam with DATE: 2024-08-08
|
||||
Reading MEAM potential file MoCoNiVFeAlCr_2nn.meam with DATE: 2024-08-08
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
WARNING: No fixes with time integration, atoms won't move
|
||||
For more information see https://docs.lammps.org/err0028 (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.8
|
||||
ghost atom cutoff = 6.8
|
||||
binsize = 3.4, bins = 7 18 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair meam, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair meam, perpetual, half/full from (1)
|
||||
attributes: half, newton on
|
||||
pair build: halffull/newton
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.636 | 9.636 | 9.636 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 -9674.3728 0 -9674.3728 -212400.94
|
||||
Loop time of 4.3735e-06 on 4 procs for 0 steps with 2304 atoms
|
||||
|
||||
0.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 4.374e-06 | | |100.00
|
||||
|
||||
Nlocal: 576 ave 576 max 576 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 2131 ave 2131 max 2131 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 24768 ave 24768 max 24768 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 49536 ave 49536 max 49536 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 198144
|
||||
Ave neighs/atom = 86
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- fix neighbor/swap command: doi:10.1016/j.commatsci.2022.111929
|
||||
|
||||
@Article{Tavenner2023111929,
|
||||
author = {Jacob P. Tavenner and Mikhail I. Mendelev and John W. Lawson},
|
||||
title = {Molecular dynamics based kinetic Monte Carlo simulation for accelerated diffusion},
|
||||
journal = {Computational Materials Science},
|
||||
year = {2023},
|
||||
volume = {218},
|
||||
pages = {111929}
|
||||
url = {https://dx.doi.org/10.1016/j.commatsci.2022.111929}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.636 | 9.636 | 9.636 Mbytes
|
||||
Step Temp Press Pxx Pyy Pzz Lx Ly Lz Volume PotEng f_mc[1] f_mc[2]
|
||||
0 2400 -187517.52 -187464.28 -188202.86 -186885.42 22.572 60.192 22.572 30667.534 -9674.3728 0 0
|
||||
100 1688.7809 13746.894 14218.282 14190.983 12831.417 21.636615 57.726346 21.637269 27025.008 -9601.4799 24 24
|
||||
200 1585.0272 -6497.2882 -7280.7893 -5297.3951 -6913.6802 21.716781 58.142867 21.714094 27417.864 -9571.8204 48 45
|
||||
300 1592.737 1747.6515 2738.4114 1924.1359 580.40727 21.676942 58.130592 21.647155 27277.439 -9574.5368 72 68
|
||||
400 1594.154 852.39952 -369.56275 1867.5224 1059.2389 21.659314 58.220677 21.640495 27289.096 -9574.1977 96 89
|
||||
500 1616.8485 -1466.6184 -1965.5854 -2117.4507 -316.81912 21.622512 58.328889 21.660903 27319.101 -9580.0369 120 112
|
||||
600 1560.0956 1162.0193 2410.2796 -925.45844 2001.2369 21.637185 58.168753 21.700261 27312.124 -9564.0088 144 136
|
||||
700 1583.4354 1031.9177 243.6789 5034.5413 -2182.467 21.682521 57.96166 21.718651 27295.022 -9570.2301 168 158
|
||||
800 1618.7711 -2148.2603 -4066.0779 -863.23022 -1515.4726 21.694024 58.144275 21.659535 27320.975 -9581.5884 192 181
|
||||
900 1598.9132 -764.84277 413.68636 -2395.8324 -312.3823 21.650745 58.249779 21.651506 27305.821 -9575.9563 216 204
|
||||
1000 1603.2739 240.94022 606.79481 644.45464 -528.42878 21.661235 58.138319 21.674995 27296.357 -9577.7462 240 228
|
||||
Loop time of 8.90243 on 4 procs for 1000 steps with 2304 atoms
|
||||
|
||||
Performance: 19.410 ns/day, 1.236 hours/ns, 112.329 timesteps/s, 258.806 katom-step/s
|
||||
98.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 7.5993 | 7.7187 | 7.8278 | 3.8 | 86.70
|
||||
Neigh | 0.056181 | 0.059129 | 0.062043 | 1.1 | 0.66
|
||||
Comm | 0.052658 | 0.14746 | 0.25458 | 24.3 | 1.66
|
||||
Output | 0.00018588 | 0.00019825 | 0.00023195 | 0.0 | 0.00
|
||||
Modify | 0.95669 | 0.97388 | 0.99047 | 1.6 | 10.94
|
||||
Other | | 0.00311 | | | 0.03
|
||||
|
||||
Nlocal: 576 ave 619 max 531 min
|
||||
Histogram: 1 0 1 0 0 0 0 0 1 1
|
||||
Nghost: 2159.25 ave 2181 max 2126 min
|
||||
Histogram: 1 0 0 0 0 0 1 0 1 1
|
||||
Neighs: 32404.8 ave 36204 max 28467 min
|
||||
Histogram: 1 0 1 0 0 0 0 0 1 1
|
||||
FullNghs: 64809.5 ave 72517 max 56929 min
|
||||
Histogram: 1 1 0 0 0 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 259238
|
||||
Ave neighs/atom = 112.51649
|
||||
Neighbor list builds = 62
|
||||
Dangerous builds = 0
|
||||
|
||||
#write_data pulse_center.data
|
||||
Total wall time: 0:00:08
|
||||
175
examples/PACKAGES/neighbor-swap/log.11Jul25.KMC_pulse_edge.g++.1
Normal file
175
examples/PACKAGES/neighbor-swap/log.11Jul25.KMC_pulse_edge.g++.1
Normal file
@ -0,0 +1,175 @@
|
||||
LAMMPS (12 Jun 2025 - Development - patch_12Jun2025-605-g5eb61491f0-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread.
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
Lattice spacing in x,y,z = 3.762 3.762 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
Created orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 region whole
|
||||
Created 4 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
replicate 6 16 6
|
||||
Replication is creating a 6x16x6 = 576 times larger system...
|
||||
orthogonal box = (0 0 0) to (22.572 60.192 22.572)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
2304 atoms
|
||||
replicate CPU = 0.000 seconds
|
||||
|
||||
region puck block INF INF INF 2 INF INF
|
||||
set region puck type 2
|
||||
Setting atom values ...
|
||||
360 settings made for type
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
Reading MEAM library file library_2nn.meam with DATE: 2024-08-08
|
||||
Reading MEAM potential file MoCoNiVFeAlCr_2nn.meam with DATE: 2024-08-08
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
WARNING: No fixes with time integration, atoms won't move
|
||||
For more information see https://docs.lammps.org/err0028 (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.8
|
||||
ghost atom cutoff = 6.8
|
||||
binsize = 3.4, bins = 7 18 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair meam, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair meam, perpetual, half/full from (1)
|
||||
attributes: half, newton on
|
||||
pair build: halffull/newton
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.32 | 13.32 | 13.32 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 -9674.3728 0 -9674.3728 -212400.94
|
||||
Loop time of 7.92e-07 on 1 procs for 0 steps with 2304 atoms
|
||||
|
||||
126.3% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 7.92e-07 | | |100.00
|
||||
|
||||
Nlocal: 2304 ave 2304 max 2304 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 4735 ave 4735 max 4735 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 99072 ave 99072 max 99072 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 198144 ave 198144 max 198144 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 198144
|
||||
Ave neighs/atom = 86
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- fix neighbor/swap command: doi:10.1016/j.commatsci.2022.111929
|
||||
|
||||
@Article{Tavenner2023111929,
|
||||
author = {Jacob P. Tavenner and Mikhail I. Mendelev and John W. Lawson},
|
||||
title = {Molecular dynamics based kinetic Monte Carlo simulation for accelerated diffusion},
|
||||
journal = {Computational Materials Science},
|
||||
year = {2023},
|
||||
volume = {218},
|
||||
pages = {111929}
|
||||
url = {https://dx.doi.org/10.1016/j.commatsci.2022.111929}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.32 | 13.32 | 13.32 Mbytes
|
||||
Step Temp Press Pxx Pyy Pzz Lx Ly Lz Volume PotEng f_mc[1] f_mc[2]
|
||||
0 2400 -187517.52 -187464.47 -188202.62 -186885.48 22.572 60.192 22.572 30667.534 -9674.3728 0 0
|
||||
100 1665.6154 14281.316 14426.547 14555.867 13861.534 21.637238 57.719793 21.637281 27022.733 -9594.4303 24 24
|
||||
200 1603.3309 -7325.7341 -8878.1524 -5333.0485 -7766.0015 21.710246 58.122827 21.725933 27415.106 -9577.4545 48 48
|
||||
300 1603.2974 207.19165 1983.4565 -1841.9518 480.07024 21.678227 58.079126 21.674033 27288.745 -9577.6391 72 69
|
||||
400 1600.1515 810.95054 1087.969 802.04946 542.83316 21.683731 58.045848 21.678505 27285.662 -9576.6508 96 92
|
||||
500 1629.8313 -2808.1005 -3197.9357 310.89931 -5537.265 21.683924 58.090375 21.697076 27330.229 -9585.5435 120 113
|
||||
600 1598.8232 -67.845623 -1573.0718 -1526.7607 2896.2957 21.70213 58.12191 21.653853 27313.504 -9576.4147 144 137
|
||||
700 1607.2185 154.66718 -1777.2469 2566.4705 -325.22208 21.712408 57.971553 21.678708 27287.033 -9579.1772 168 158
|
||||
800 1582.559 -891.23631 -632.46037 -636.88203 -1404.3665 21.671936 58.127004 21.678224 27308.594 -9571.6663 192 180
|
||||
900 1586.7172 -617.17083 -2495.5378 -2302.8766 2946.9018 21.658489 58.181921 21.668968 27305.771 -9572.9641 216 204
|
||||
1000 1607.563 -389.8113 810.4908 298.84287 -2278.7676 21.624573 58.076745 21.724272 27283.183 -9579.5034 240 227
|
||||
Loop time of 31.1311 on 1 procs for 1000 steps with 2304 atoms
|
||||
|
||||
Performance: 5.551 ns/day, 4.324 hours/ns, 32.122 timesteps/s, 74.010 katom-step/s
|
||||
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 27.859 | 27.859 | 27.859 | 0.0 | 89.49
|
||||
Neigh | 0.22271 | 0.22271 | 0.22271 | 0.0 | 0.72
|
||||
Comm | 0.012597 | 0.012597 | 0.012597 | 0.0 | 0.04
|
||||
Output | 0.00031219 | 0.00031219 | 0.00031219 | 0.0 | 0.00
|
||||
Modify | 3.0301 | 3.0301 | 3.0301 | 0.0 | 9.73
|
||||
Other | | 0.006178 | | | 0.02
|
||||
|
||||
Nlocal: 2304 ave 2304 max 2304 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 4748 ave 4748 max 4748 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 130301 ave 130301 max 130301 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 260602 ave 260602 max 260602 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 260602
|
||||
Ave neighs/atom = 113.10851
|
||||
Neighbor list builds = 62
|
||||
Dangerous builds = 0
|
||||
|
||||
#write_data pulse_end.data
|
||||
Total wall time: 0:00:31
|
||||
175
examples/PACKAGES/neighbor-swap/log.11Jul25.KMC_pulse_edge.g++.4
Normal file
175
examples/PACKAGES/neighbor-swap/log.11Jul25.KMC_pulse_edge.g++.4
Normal file
@ -0,0 +1,175 @@
|
||||
LAMMPS (12 Jun 2025 - Development - patch_12Jun2025-605-g5eb61491f0-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread.
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
Lattice spacing in x,y,z = 3.762 3.762 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
Created orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
create_atoms 1 region whole
|
||||
Created 4 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
create_atoms CPU = 0.001 seconds
|
||||
|
||||
replicate 6 16 6
|
||||
Replication is creating a 6x16x6 = 576 times larger system...
|
||||
orthogonal box = (0 0 0) to (22.572 60.192 22.572)
|
||||
1 by 4 by 1 MPI processor grid
|
||||
2304 atoms
|
||||
replicate CPU = 0.000 seconds
|
||||
|
||||
region puck block INF INF INF 2 INF INF
|
||||
set region puck type 2
|
||||
Setting atom values ...
|
||||
360 settings made for type
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
Reading MEAM library file library_2nn.meam with DATE: 2024-08-08
|
||||
Reading MEAM potential file MoCoNiVFeAlCr_2nn.meam with DATE: 2024-08-08
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
WARNING: No fixes with time integration, atoms won't move
|
||||
For more information see https://docs.lammps.org/err0028 (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.8
|
||||
ghost atom cutoff = 6.8
|
||||
binsize = 3.4, bins = 7 18 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair meam, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair meam, perpetual, half/full from (1)
|
||||
attributes: half, newton on
|
||||
pair build: halffull/newton
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.636 | 9.636 | 9.636 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 -9674.3728 0 -9674.3728 -212400.94
|
||||
Loop time of 1.84625e-06 on 4 procs for 0 steps with 2304 atoms
|
||||
|
||||
135.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 1.846e-06 | | |100.00
|
||||
|
||||
Nlocal: 576 ave 576 max 576 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 2131 ave 2131 max 2131 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 24768 ave 24768 max 24768 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 49536 ave 49536 max 49536 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 198144
|
||||
Ave neighs/atom = 86
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- fix neighbor/swap command: doi:10.1016/j.commatsci.2022.111929
|
||||
|
||||
@Article{Tavenner2023111929,
|
||||
author = {Jacob P. Tavenner and Mikhail I. Mendelev and John W. Lawson},
|
||||
title = {Molecular dynamics based kinetic Monte Carlo simulation for accelerated diffusion},
|
||||
journal = {Computational Materials Science},
|
||||
year = {2023},
|
||||
volume = {218},
|
||||
pages = {111929}
|
||||
url = {https://dx.doi.org/10.1016/j.commatsci.2022.111929}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.636 | 9.636 | 9.636 Mbytes
|
||||
Step Temp Press Pxx Pyy Pzz Lx Ly Lz Volume PotEng f_mc[1] f_mc[2]
|
||||
0 2400 -187517.52 -187464.47 -188202.62 -186885.48 22.572 60.192 22.572 30667.534 -9674.3728 0 0
|
||||
100 1662.8388 14433.559 14653.105 14684.034 13963.538 21.637114 57.721378 21.63721 27023.232 -9593.5557 24 23
|
||||
200 1592.9276 -6765.4603 -8210.8697 -4995.7657 -7089.7454 21.709482 58.120737 21.726324 27413.648 -9573.9313 48 45
|
||||
300 1619.7013 -391.64606 982.6812 -1910.4062 -247.21322 21.674555 58.073042 21.673346 27280.4 -9583.2581 72 69
|
||||
400 1595.5295 1320.1347 726.16024 2142.0732 1092.1705 21.687154 58.033385 21.679884 27285.845 -9575.3049 96 92
|
||||
500 1613.2865 -2150.2729 -2059.2665 -196.97204 -4194.58 21.675436 58.092453 21.698792 27322.668 -9581.7322 120 114
|
||||
600 1587.7089 685.3534 113.39179 523.41016 1419.2583 21.69641 58.089816 21.665296 27305.65 -9572.879 144 135
|
||||
700 1596.2078 232.23434 -985.47338 1818.9814 -136.80497 21.712357 57.974481 21.690493 27303.182 -9575.5985 168 157
|
||||
800 1544.7314 1176.3622 -1011.314 3132.5302 1407.8703 21.681458 58.02289 21.705773 27306.315 -9560.7678 192 179
|
||||
900 1579.6589 45.000317 -72.21997 -1479.7462 1686.9671 21.649984 58.218959 21.671494 27315.607 -9570.1227 216 198
|
||||
1000 1609.6666 95.736886 -795.90474 641.09574 442.01966 21.651706 58.158209 21.667909 27284.76 -9579.3522 240 221
|
||||
Loop time of 9.05461 on 4 procs for 1000 steps with 2304 atoms
|
||||
|
||||
Performance: 19.084 ns/day, 1.258 hours/ns, 110.441 timesteps/s, 254.456 katom-step/s
|
||||
98.8% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 7.4742 | 7.7144 | 7.8285 | 5.1 | 85.20
|
||||
Neigh | 0.051898 | 0.058573 | 0.061819 | 1.6 | 0.65
|
||||
Comm | 0.063429 | 0.15788 | 0.37324 | 31.7 | 1.74
|
||||
Output | 0.00018368 | 0.00019631 | 0.00023307 | 0.0 | 0.00
|
||||
Modify | 1.098 | 1.1206 | 1.1519 | 1.9 | 12.38
|
||||
Other | | 0.002936 | | | 0.03
|
||||
|
||||
Nlocal: 576 ave 612 max 506 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 1 1
|
||||
Nghost: 2165.5 ave 2211 max 2128 min
|
||||
Histogram: 1 1 0 0 0 0 1 0 0 1
|
||||
Neighs: 32568.8 ave 35314 max 26622 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 0 2
|
||||
FullNghs: 65137.5 ave 70664 max 53385 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 0 2
|
||||
|
||||
Total # of neighbors = 260550
|
||||
Ave neighs/atom = 113.08594
|
||||
Neighbor list builds = 62
|
||||
Dangerous builds = 0
|
||||
|
||||
#write_data pulse_end.data
|
||||
Total wall time: 0:00:09
|
||||
1008
src/MC/fix_neighbor_swap.cpp
Normal file
1008
src/MC/fix_neighbor_swap.cpp
Normal file
File diff suppressed because it is too large
Load Diff
99
src/MC/fix_neighbor_swap.h
Normal file
99
src/MC/fix_neighbor_swap.h
Normal file
@ -0,0 +1,99 @@
|
||||
/* -*- 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(neighbor/swap,FixNeighborSwap);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_NEIGHBOR_SWAP_H
|
||||
#define LMP_FIX_NEIGHBOR_SWAP_H
|
||||
|
||||
#include "fix.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixNeighborSwap : public Fix {
|
||||
public:
|
||||
FixNeighborSwap(class LAMMPS *, int, char **);
|
||||
~FixNeighborSwap();
|
||||
int setmask();
|
||||
void init();
|
||||
void pre_exchange();
|
||||
int pack_forward_comm(int, int *, double *, int, int *);
|
||||
void unpack_forward_comm(int, int, double *);
|
||||
double compute_vector(int);
|
||||
double memory_usage();
|
||||
void write_restart(FILE *);
|
||||
void restart(char *);
|
||||
|
||||
private:
|
||||
int nevery, seed;
|
||||
int ke_flag; // yes = conserve ke, no = do not conserve ke
|
||||
int diff_flag; // yes = simulate diffusion of central atom, no = swap only to certain types
|
||||
int rates_flag; // yes = use modified type rates, no = swap rates are equivalent across types
|
||||
int ncycles;
|
||||
int niswap, njswap; // # of i,j swap atoms on all procs
|
||||
int niswap_local, njswap_local; // # of swap atoms on this proc
|
||||
int niswap_before, njswap_before; // # of swap atoms on procs < this proc
|
||||
|
||||
class Region *region; // swap region
|
||||
char *idregion; // swap region id
|
||||
|
||||
int nswaptypes;
|
||||
int jtype_selected;
|
||||
tagint id_center;
|
||||
double x_center;
|
||||
double y_center;
|
||||
double z_center;
|
||||
int *type_list;
|
||||
double *rate_list;
|
||||
|
||||
double nswap_attempts;
|
||||
double nswap_successes;
|
||||
|
||||
bool unequal_cutoffs;
|
||||
|
||||
int atom_swap_nmax;
|
||||
double beta, inv_r_0;
|
||||
double local_probability; // Total swap probability stored on this proc
|
||||
double global_probability; // Total swap probability across all proc
|
||||
double prev_probability; // Swap probability on proc < this proc
|
||||
double *qtype, *mtype;
|
||||
double energy_stored;
|
||||
double **sqrt_mass_ratio;
|
||||
double **voro_neighbor_list;
|
||||
int *local_swap_iatom_list;
|
||||
int *local_swap_neighbor_list;
|
||||
int *local_swap_type_list; // Type list index of atoms stored on this proc
|
||||
double *local_swap_probability;
|
||||
|
||||
class RanPark *random_equal;
|
||||
|
||||
char *id_voro;
|
||||
class Compute *c_voro, *c_pe;
|
||||
|
||||
void options(int, char **);
|
||||
int attempt_swap();
|
||||
double energy_full();
|
||||
int pick_i_swap_atom();
|
||||
int pick_j_swap_neighbor();
|
||||
void build_i_neighbor_list(int);
|
||||
void update_iswap_atoms_list();
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user