Merge branch 'develop' of https://www.github.com/lammps/lammps into lubricate
This commit is contained in:
@ -3,71 +3,70 @@ Running LAMMPS on Windows
|
||||
|
||||
To run a serial (non-MPI) executable, follow these steps:
|
||||
|
||||
* Get a command prompt by going to Start->Run... ,
|
||||
then typing "cmd".
|
||||
* Move to the directory where you have your input script,
|
||||
* Install a LAMMPS installer package from https://packages.lammps.org/windows.html
|
||||
* Open the "Command Prompt" or "Terminal" app.
|
||||
* Change to the directory where you have your input script,
|
||||
(e.g. by typing: cd "Documents").
|
||||
* At the command prompt, type "lmp -in in.file", where
|
||||
in.file is the name of your LAMMPS input script.
|
||||
* At the command prompt, type "lmp -in in.file.lmp", where
|
||||
``in.file.lmp`` is the name of your LAMMPS input script.
|
||||
|
||||
Note that the serial executable includes support for multi-threading
|
||||
parallelization from the styles in the OPENMP packages. To run with
|
||||
4 threads, you can type this:
|
||||
parallelization from the styles in the OPENMP and KOKKOS packages.
|
||||
To run with 4 threads, you can type this:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
lmp -in in.lj -pk omp 4 -sf omp
|
||||
lmp -in in.lj.lmp -pk omp 4 -sf omp
|
||||
lmp -in in.lj.lmp -k on t 4 -sf kk
|
||||
|
||||
Alternately, you can also install a package with LAMMPS-GUI included and
|
||||
open the LAMMPS-GUI app (the package includes the command line version
|
||||
of LAMMPS as well) and open the input file in the GUI and run it from
|
||||
there. For details on LAMMPS-GUI, see :doc:`Howto_lammps_gui`.
|
||||
|
||||
----------
|
||||
|
||||
For the MPI executable, which allows you to run LAMMPS under Windows
|
||||
in parallel, follow these steps.
|
||||
For the MS-MPI executables, which allow you to run LAMMPS under Windows
|
||||
in parallel using MPI rather than multi-threading, follow these steps.
|
||||
|
||||
Download and install a compatible MPI library binary package:
|
||||
|
||||
* for 32-bit Windows: `mpich2-1.4.1p1-win-ia32.msi <https://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-ia32.msi>`_
|
||||
* for 64-bit Windows: `mpich2-1.4.1p1-win-x86-64.msi <https://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-x86-64.msi>`_
|
||||
|
||||
The LAMMPS Windows installer packages will automatically adjust your
|
||||
path for the default location of this MPI package. After the
|
||||
installation of the MPICH2 software, it needs to be integrated into
|
||||
the system. For this you need to start a Command Prompt in
|
||||
*Administrator Mode* (right click on the icon and select it). Change
|
||||
into the MPICH2 installation directory, then into the subdirectory
|
||||
**bin** and execute **smpd.exe -install**\ . Exit the command window.
|
||||
|
||||
* Get a new, regular command prompt by going to Start->Run... ,
|
||||
then typing "cmd".
|
||||
* Move to the directory where you have your input file
|
||||
(e.g. by typing: cd "Documents").
|
||||
Download and install the MS-MPI runtime package ``msmpisetup.exe`` from
|
||||
https://www.microsoft.com/en-us/download/details.aspx?id=105289 (Note
|
||||
that the ``msmpisdk.msi`` is **only** required for **compilation** of
|
||||
LAMMPS from source on Windows using Microsoft Visual Studio). After
|
||||
installation of MS-MPI perform a reboot.
|
||||
|
||||
Then you can run the executable in serial like in the example above
|
||||
or in parallel using MPI with one of the following commands:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpiexec -localonly 4 lmp -in in.file
|
||||
mpiexec -np 4 lmp -in in.file
|
||||
mpiexec -localonly 4 lmp -in in.file.lmp
|
||||
mpiexec -np 4 lmp -in in.file.lmp
|
||||
|
||||
where in.file is the name of your LAMMPS input script. For the latter
|
||||
case, you may be prompted to enter the password that you set during
|
||||
installation of the MPI library software.
|
||||
where ``in.file.lmp`` is the name of your LAMMPS input script. For the
|
||||
latter case, you may be prompted to enter the password that you set
|
||||
during installation of the MPI library software.
|
||||
|
||||
In this mode, output may not immediately show up on the screen, so if
|
||||
your input script takes a long time to execute, you may need to be
|
||||
patient before the output shows up.
|
||||
|
||||
The parallel executable can also run on a single processor by typing
|
||||
something like this:
|
||||
Note that the parallel executable also includes OpenMP multi-threading
|
||||
through both the OPENMP and the KOKKOS package, which can be combined
|
||||
with MPI using something like:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
lmp -in in.lj
|
||||
mpiexec -localonly 2 lmp -in in.lj.lmp -pk omp 2 -sf omp
|
||||
mpiexec -localonly 2 lmp -in in.lj.lmp -kokkos on t 2 -sf kk
|
||||
|
||||
Note that the parallel executable also includes OpenMP
|
||||
multi-threading, which can be combined with MPI using something like:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mpiexec -localonly 2 lmp -in in.lj -pk omp 2 -sf omp
|
||||
-------------
|
||||
|
||||
MPI parallelization will work for *all* functionality in LAMMPS and in
|
||||
many cases the MPI parallelization is more efficient than
|
||||
multi-threading since LAMMPS was designed from ground up for MPI
|
||||
parallelization using domain decomposition. Multi-threading is only
|
||||
available for selected styles and implemented on top of the MPI
|
||||
parallelization. Multi-threading is most useful for systems with large
|
||||
load imbalances when using domain decomposition and a smaller number
|
||||
of threads (<= 8).
|
||||
|
||||
@ -322,29 +322,31 @@ all types from 1 to :math:`N`. A leading asterisk means all types from
|
||||
If :doc:`bond_style hybrid <bond_hybrid>` is used, *bstyle* should be a
|
||||
sub-style name. The bond styles that currently work with fix adapt are:
|
||||
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`class2 <bond_class2>` | r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`fene <bond_fene>` | k,r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`fene/expand <bond_fene_expand>` | k,r0,epsilon,sigma,shift | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`fene/nm <bond_fene>` | k,r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`gromos <bond_gromos>` | k,r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`harmonic <bond_harmonic>` | k,r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`harmonic/shift <bond_harmonic_shift>` | k,r0,r1 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`harmonic/restrain <bond_harmonic_restrain>` | k | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`mm3 <bond_mm3>` | k,r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`morse <bond_morse>` | r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`nonlinear <bond_nonlinear>` | epsilon,r0 | type bonds |
|
||||
+---------------------------------------------------+---------------------------+------------+
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`class2 <bond_class2>` | r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`fene <bond_fene>` | k,r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`fene/expand <bond_fene_expand>` | k,r0,epsilon,sigma,shift | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`fene/nm <bond_fene>` | k,r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`gromos <bond_gromos>` | k,r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`harmonic <bond_harmonic>` | k,r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`harmonic/restrain <bond_harmonic_restrain>` | k | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`harmonic/shift <bond_harmonic_shift>` | k,r0,r1 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`harmonic/shift/cut <bond_harmonic_shift_cut>` | k,r0,r1 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`mm3 <bond_mm3>` | k,r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`morse <bond_morse>` | r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
| :doc:`nonlinear <bond_nonlinear>` | epsilon,r0 | type bonds |
|
||||
+-----------------------------------------------------+---------------------------+------------+
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -50,8 +50,8 @@ Syntax
|
||||
*intra_energy* value = intramolecular energy (energy units)
|
||||
*tfac_insert* value = scale up/down temperature of inserted atoms (unitless)
|
||||
*overlap_cutoff* value = maximum pair distance for overlap rejection (distance units)
|
||||
*max* value = Maximum number of molecules allowed in the system
|
||||
*min* value = Minimum number of molecules allowed in the system
|
||||
*max* value = Maximum number of atoms allowed in the fix group (and region)
|
||||
*min* value = Minimum number of atoms allowed in the fix group (and region)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -380,10 +380,11 @@ an infinite positive energy to all new configurations that place any
|
||||
pair of atoms closer than the specified overlap cutoff distance.
|
||||
|
||||
The *max* and *min* keywords allow for the restriction of the number of
|
||||
atoms in the simulation. They automatically reject all insertion or
|
||||
deletion moves that would take the system beyond the set boundaries.
|
||||
Should the system already be beyond the boundary, only moves that bring
|
||||
the system closer to the bounds may be accepted.
|
||||
atoms in the fix group (and region in case the *region* keyword is
|
||||
used). They automatically reject all insertion or deletion moves that
|
||||
would take the system beyond the set boundaries. Should the system
|
||||
already be beyond the boundary, only moves that bring the system closer
|
||||
to the bounds may be accepted.
|
||||
|
||||
The *group* keyword adds all inserted atoms to the :doc:`group <group>`
|
||||
of the group-ID value. The *grouptype* keyword adds all inserted atoms
|
||||
|
||||
@ -115,10 +115,11 @@ to tell LAMMPS how many parallel files exist, via its specified
|
||||
|
||||
The format of the dump file is selected through the *format* keyword.
|
||||
If specified, it must be the last keyword used, since all remaining
|
||||
arguments are passed on to the dump reader. The *native* format is
|
||||
for native LAMMPS dump files, written with a :doc:`dump atom <dump>`
|
||||
or :doc:`dump custom <dump>` command. The *xyz* format is for generic XYZ
|
||||
formatted dump files. These formats take no additional values.
|
||||
arguments are passed on to the dump reader. The *native* format is for
|
||||
native LAMMPS dump files, written with a :doc:`dump atom <dump>` or
|
||||
:doc:`dump custom <dump>` command. The *xyz* format is for generic XYZ
|
||||
formatted dump files (see details below). These formats take no
|
||||
additional values.
|
||||
|
||||
The *molfile* format supports reading data through using the `VMD <vmd_>`_
|
||||
molfile plugin interface. This dump reader format is only available,
|
||||
@ -230,23 +231,39 @@ will then have a label corresponding to the fix-ID rather than "x" or
|
||||
"xs". The *label* keyword can also be used to specify new column
|
||||
labels for fields *id* and *type*\ .
|
||||
|
||||
For dump files in *xyz* format, only the *x*, *y*, and *z* fields are
|
||||
supported. The dump file does not store atom IDs, so these are
|
||||
assigned consecutively to the atoms as they appear in the dump file,
|
||||
starting from 1. Thus you should ensure that order of atoms is
|
||||
consistent from snapshot to snapshot in the XYZ dump file. See
|
||||
the :doc:`dump_modify sort <dump_modify>` command if the XYZ dump file
|
||||
was written by LAMMPS.
|
||||
For dump files in *xyz* format, only the *type*, *x*, *y*, and *z*
|
||||
fields are supported. There are many variants of the XYZ file format.
|
||||
LAMMPS will read the number of atoms from the first line of each frame,
|
||||
ignore the second (title) line, and then read one line for each atom in the format:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
<label> <x coordinate> <y coordinate> <z coordinate>
|
||||
|
||||
|
||||
If the atom label is a numeric integer (like with XYZ files created by
|
||||
created with default settings by :doc:`dump style <dump>` *xyz*), that
|
||||
number will be used as the atom type. If the atom label is a string,
|
||||
then a type map must be created using the :doc:`labelmap command
|
||||
<labelmap>`. This map needs to associate each (numeric) atom type with
|
||||
a string label. The numeric atom type is stored internally.
|
||||
|
||||
The xyz format dump file does not store atom IDs, so these are assigned
|
||||
consecutively to the atoms as they appear in the dump file, starting
|
||||
from 1. Thus you should ensure that the order of atoms is consistent
|
||||
from snapshot to snapshot in the XYZ dump file. See the
|
||||
:doc:`dump_modify sort <dump_modify>` command if the XYZ dump file was
|
||||
written by LAMMPS.
|
||||
|
||||
For dump files in *molfile* format, the *x*, *y*, *z*, *vx*, *vy*, and
|
||||
*vz* fields can be specified. However, not all molfile formats store
|
||||
velocities, or their respective plugins may not support reading of
|
||||
velocities. The molfile dump files do not store atom IDs, so these
|
||||
are assigned consecutively to the atoms as they appear in the dump
|
||||
file, starting from 1. Thus you should ensure that order of atoms are
|
||||
consistent from snapshot to snapshot in the molfile dump file.
|
||||
See the :doc:`dump_modify sort <dump_modify>` command if the dump file
|
||||
was written by LAMMPS.
|
||||
velocities. The molfile dump files do not store atom IDs, so these are
|
||||
assigned consecutively to the atoms as they appear in the dump file,
|
||||
starting from 1. Thus you should ensure that the order of atoms are
|
||||
consistent from snapshot to snapshot in the molfile dump file. See the
|
||||
:doc:`dump_modify sort <dump_modify>` command if the dump file was
|
||||
written by LAMMPS.
|
||||
|
||||
The *adios* format supports all fields that the *native* format supports
|
||||
except for the *q* charge field.
|
||||
|
||||
@ -13,11 +13,11 @@ neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra all
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff * * 1.0 1.0 1.0 0.25 2.5
|
||||
pair_coeff * * 0.25 0.25 1.0 0.25 2.5
|
||||
|
||||
fix 2 all rigid molecule langevin 2.0 2.0 1.0 492983
|
||||
|
||||
fix 3 all deform 1 x scale 0.3 y scale 0.3
|
||||
fix 3 all deform 5 x scale 0.8 y scale 0.8
|
||||
fix 4 all enforce2d
|
||||
|
||||
compute 10 all property/atom end1x end1y end2x end2y
|
||||
@ -26,7 +26,7 @@ compute 10 all property/atom end1x end1y end2x end2y
|
||||
#dump 2 all custom 500 dump1.line id type &
|
||||
# c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
timestep 0.004
|
||||
timestep 0.001
|
||||
|
||||
compute 1 all erotate/asphere
|
||||
compute 2 all ke
|
||||
|
||||
@ -21,10 +21,10 @@ set group small mass 0.01
|
||||
# delete overlaps
|
||||
# must set 1-2 cutoff to non-zero value
|
||||
|
||||
pair_style lj/cut 1.5
|
||||
pair_style lj/cut 1.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 0.0 1.0
|
||||
pair_coeff 1 2 1.0 1.0
|
||||
|
||||
delete_atoms overlap 1.5 small big
|
||||
|
||||
@ -34,7 +34,7 @@ reset_timestep 0
|
||||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.3 multi
|
||||
neighbor 0.8 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra big include big
|
||||
|
||||
@ -44,21 +44,21 @@ neigh_modify include big
|
||||
# no pairwise interactions with small particles
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff 1 1 1.0 1.0 1.0 1.0 2.5
|
||||
pair_coeff 2 2 0.0 0.0 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 0.0 0.0 1.0 0.0
|
||||
pair_coeff 1 1 1.0 1.0 1.0 1.0 2.5
|
||||
pair_coeff 2 2 0.0 0.0 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 0.2 1.0 0.2 2.5
|
||||
|
||||
# use fix SRD to push small particles out from inside big ones
|
||||
# if comment out, big particles won't see SRD particles
|
||||
|
||||
timestep 0.001
|
||||
timestep 0.0001
|
||||
|
||||
fix 1 big rigid molecule
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 &
|
||||
search 0.2 cubic warn 0.0001 shift yes 49829 &
|
||||
overlap yes collision noslip
|
||||
|
||||
fix 3 all deform 1 x scale 0.35 y scale 0.35
|
||||
fix 3 all deform 1 x scale 1.25 y scale 1.25
|
||||
fix 4 all enforce2d
|
||||
|
||||
# diagnostics
|
||||
@ -96,12 +96,12 @@ change_box all triclinic
|
||||
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 &
|
||||
search 0.2 cubic warn 0.0001 shift yes 49829 &
|
||||
overlap yes collision noslip tstat yes
|
||||
overlap yes collision noslip #tstat yes
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line.srd id type &
|
||||
# c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.05 units box remap v
|
||||
fix 3 all deform 1 xy erate 0.0002 units box remap v
|
||||
|
||||
run 40000
|
||||
run 30000
|
||||
|
||||
@ -1,213 +0,0 @@
|
||||
LAMMPS (1 Feb 2014)
|
||||
# Aspherical shear demo - 2d line box and triangle mixture, implicit solvent
|
||||
|
||||
units lj
|
||||
atom_style line
|
||||
dimension 2
|
||||
|
||||
read_data data.line
|
||||
orthogonal box = (-22.5539 -22.5539 -0.5) to (22.5539 22.5539 0.5)
|
||||
4 by 2 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
350 atoms
|
||||
350 lines
|
||||
|
||||
velocity all create 1.44 320984 loop geom
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule all
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff * * 1.0 0.25
|
||||
|
||||
fix 2 all rigid molecule langevin 2.0 2.0 1.0 492983
|
||||
100 rigid bodies with 350 atoms
|
||||
|
||||
fix 3 all deform 1 x scale 0.3 y scale 0.3
|
||||
fix 4 all enforce2d
|
||||
|
||||
compute 10 all property/atom end1x end1y end2x end2y
|
||||
|
||||
#dump 1 all custom 500 dump1.atom id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.line id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
timestep 0.004
|
||||
|
||||
compute 1 all erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step temp f_2 pe ke c_1 c_2 c_3 v_toteng
|
||||
|
||||
run 10000
|
||||
Memory usage per processor = 2.6072 Mbytes
|
||||
Step Temp 2 PotEng KinEng 1 2 3 toteng
|
||||
0 0 1.2780105 0 -0 0.037823677 0.50989511 0 0.54771879
|
||||
1000 0 1.9896906 -0.13333756 -0 0.12630626 0.72641827 -0.13333756 0.71938697
|
||||
2000 0 2.0408541 -0.24906647 -0 0.13199238 0.74265938 -0.24906647 0.62558529
|
||||
3000 0 1.9921323 -0.39759798 -0 0.11671173 0.73705927 -0.39759798 0.45617302
|
||||
4000 0 2.1392159 -0.36475197 -0 0.11923802 0.7975688 -0.36475197 0.55205485
|
||||
5000 0 2.139715 -0.52582091 -0 0.15846417 0.75855653 -0.52582091 0.39119979
|
||||
6000 0 2.1313904 -0.65532027 -0 0.11090422 0.80254883 -0.65532027 0.25813278
|
||||
7000 0 1.9416614 -0.81322598 -0 0.11722471 0.71491587 -0.81322598 0.018914608
|
||||
8000 0 1.9388183 -1.0581149 -0 0.10142762 0.72949452 -1.0581149 -0.22719275
|
||||
9000 0 2.2830265 -1.583347 -0 0.14583927 0.83260066 -1.583347 -0.60490709
|
||||
10000 0 4.1416666 -2.6034045 -0 0.18839177 1.5866082 -2.6034045 -0.82840455
|
||||
Loop time of 2.84713 on 8 procs for 10000 steps with 350 atoms
|
||||
|
||||
Pair time (%) = 1.26607 (44.4682)
|
||||
Neigh time (%) = 0.0163046 (0.572669)
|
||||
Comm time (%) = 0.786148 (27.612)
|
||||
Outpt time (%) = 0.000368953 (0.0129588)
|
||||
Other time (%) = 0.778241 (27.3342)
|
||||
|
||||
Nlocal: 43.75 ave 51 max 39 min
|
||||
Histogram: 1 2 0 2 0 1 1 0 0 1
|
||||
Nghost: 170.25 ave 180 max 160 min
|
||||
Histogram: 2 1 0 0 0 0 2 0 1 2
|
||||
Neighs: 963.125 ave 1209 max 767 min
|
||||
Histogram: 2 0 2 0 1 0 1 0 1 1
|
||||
|
||||
Total # of neighbors = 7705
|
||||
Ave neighs/atom = 22.0143
|
||||
Neighbor list builds = 987
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
triclinic box = (-6.76616 -6.76616 -0.5) to (6.76616 6.76616 0.5) with tilt (0 0 0)
|
||||
|
||||
#dump 1 all custom 500 dump2.atom id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.01 units box
|
||||
|
||||
run 100000
|
||||
Memory usage per processor = 2.75978 Mbytes
|
||||
Step Temp 2 PotEng KinEng 1 2 3 toteng
|
||||
10000 0 4.1416666 -2.6024092 -0 0.18839177 1.5866082 -2.6024092 -0.82740923
|
||||
11000 0 1.8408319 -3.1031477 -0 0.12073234 0.66819561 -3.1031477 -2.3142198
|
||||
12000 0 2.0793172 -3.0329681 -0 0.086927592 0.80420833 -3.0329681 -2.1418322
|
||||
13000 0 2.2022136 -2.99776 -0 0.14309291 0.8007129 -2.99776 -2.0539542
|
||||
14000 0 1.9510757 -3.094649 -0 0.09482969 0.74134559 -3.094649 -2.2584737
|
||||
15000 0 1.9874689 -3.1431753 -0 0.1083061 0.7434663 -3.1431753 -2.2914029
|
||||
16000 0 1.8484778 -2.9491537 -0 0.079102883 0.71310191 -2.9491537 -2.1569489
|
||||
17000 0 2.1978438 -2.9675694 -0 0.11677634 0.82515673 -2.9675694 -2.0256363
|
||||
18000 0 2.0293397 -2.9860257 -0 0.1287845 0.7409325 -2.9860257 -2.1163087
|
||||
19000 0 2.0077219 -3.005622 -0 0.12697603 0.7334762 -3.005622 -2.1451698
|
||||
20000 0 2.1806369 -3.0622132 -0 0.11066657 0.82389212 -3.0622132 -2.1276545
|
||||
21000 0 1.8156509 -3.1031481 -0 0.10227614 0.67585994 -3.1031481 -2.325012
|
||||
22000 0 2.1028516 -3.0861182 -0 0.098877162 0.80234493 -3.0861182 -2.1848961
|
||||
23000 0 1.8994891 -3.0110243 -0 0.10961187 0.70445488 -3.0110243 -2.1969576
|
||||
24000 0 1.9305389 -3.0057136 -0 0.11735151 0.7100223 -3.0057136 -2.1783398
|
||||
25000 0 1.9553918 -3.0848948 -0 0.13217467 0.70585039 -3.0848948 -2.2468697
|
||||
26000 0 1.8903754 -2.9543658 -0 0.099925113 0.71023579 -2.9543658 -2.1442049
|
||||
27000 0 2.2624684 -3.2416154 -0 0.11398815 0.85564117 -3.2416154 -2.2719861
|
||||
28000 0 2.0335234 -3.1795174 -0 0.10291986 0.76859015 -3.1795174 -2.3080074
|
||||
29000 0 1.7056403 -3.1198739 -0 0.076174496 0.65481419 -3.1198739 -2.3888853
|
||||
30000 0 2.1203465 -3.0863113 -0 0.11355683 0.79516311 -3.0863113 -2.1775914
|
||||
31000 0 1.8446708 -3.2764357 -0 0.11006455 0.68050865 -3.2764357 -2.4858625
|
||||
32000 0 1.7947968 -3.081031 -0 0.087540776 0.68165784 -3.081031 -2.3118324
|
||||
33000 0 2.2576228 -3.1042222 -0 0.15666855 0.81088407 -3.1042222 -2.1366696
|
||||
34000 0 1.8522306 -3.0037311 -0 0.08276626 0.71104684 -3.0037311 -2.209918
|
||||
35000 0 2.0611686 -2.9877406 -0 0.10822003 0.77513794 -2.9877406 -2.1043826
|
||||
36000 0 2.0739798 -2.981184 -0 0.11784198 0.77100651 -2.981184 -2.0923355
|
||||
37000 0 2.2120215 -2.8961216 -0 0.13172943 0.8162798 -2.8961216 -1.9481124
|
||||
38000 0 2.1097357 -2.9746777 -0 0.11881736 0.78535507 -2.9746777 -2.0705053
|
||||
39000 0 1.8928127 -2.9482169 -0 0.10915752 0.70204792 -2.9482169 -2.1370115
|
||||
40000 0 1.8515483 -3.003524 -0 0.096981256 0.69653943 -3.003524 -2.2100033
|
||||
41000 0 1.8569065 -3.0834675 -0 0.10562739 0.6901897 -3.0834675 -2.2876504
|
||||
42000 0 2.2638459 -3.0577224 -0 0.10896442 0.86125524 -3.0577224 -2.0875027
|
||||
43000 0 2.0992151 -3.1219185 -0 0.13280434 0.76685929 -3.1219185 -2.2222548
|
||||
44000 0 2.3479986 -3.0702445 -0 0.14438131 0.86190379 -3.0702445 -2.0639594
|
||||
45000 0 2.0295235 -2.9619688 -0 0.13726365 0.73253213 -2.9619688 -2.092173
|
||||
46000 0 2.0597998 -3.1282569 -0 0.10139093 0.7813804 -3.1282569 -2.2454856
|
||||
47000 0 1.8173541 -3.1122647 -0 0.10380346 0.67506259 -3.1122647 -2.3333986
|
||||
48000 0 1.9650208 -3.22153 -0 0.10115952 0.74099226 -3.22153 -2.3793782
|
||||
49000 0 1.8836303 -3.0781944 -0 0.10561306 0.70165705 -3.0781944 -2.2709243
|
||||
50000 0 1.7799289 -3.1090208 -0 0.10522105 0.65760561 -3.1090208 -2.3461941
|
||||
51000 0 1.7270244 -2.894789 -0 0.079316066 0.66083727 -2.894789 -2.1546357
|
||||
52000 0 2.1036512 -3.0708266 -0 0.11762021 0.7839446 -3.0708266 -2.1692618
|
||||
53000 0 2.1749106 -3.043193 -0 0.11908953 0.81301499 -3.043193 -2.1110885
|
||||
54000 0 1.7245018 -3.1528646 -0 0.11118993 0.62788226 -3.1528646 -2.4137924
|
||||
55000 0 1.7599209 -3.0543405 -0 0.098996756 0.65525507 -3.0543405 -2.3000886
|
||||
56000 0 1.9085953 -3.1072383 -0 0.10931083 0.70865859 -3.1072383 -2.2892689
|
||||
57000 0 1.9682028 -3.131335 -0 0.094973379 0.74854212 -3.131335 -2.2878195
|
||||
58000 0 1.7813545 -3.167275 -0 0.085523136 0.6779145 -3.167275 -2.4038374
|
||||
59000 0 2.0324497 -3.1103534 -0 0.13343285 0.73761703 -3.1103534 -2.2393035
|
||||
60000 0 1.697349 -3.152831 -0 0.086035815 0.64139945 -3.152831 -2.4253957
|
||||
61000 0 2.061537 -3.0730484 -0 0.12753143 0.75598441 -3.0730484 -2.1895325
|
||||
62000 0 1.8186587 -3.1590894 -0 0.096701457 0.68272371 -3.1590894 -2.3796643
|
||||
63000 0 1.9692063 -3.1053354 -0 0.094864849 0.7490807 -3.1053354 -2.2613899
|
||||
64000 0 2.0113722 -3.0898117 -0 0.12640828 0.73560838 -3.0898117 -2.227795
|
||||
65000 0 1.9350085 -3.2290712 -0 0.11850297 0.71078638 -3.2290712 -2.3997819
|
||||
66000 0 2.0569306 -3.0489252 -0 0.12731012 0.75423156 -3.0489252 -2.1673835
|
||||
67000 0 2.0119071 -3.10894 -0 0.099142151 0.76310375 -3.10894 -2.2466941
|
||||
68000 0 2.0615321 -3.167552 -0 0.11066625 0.77284751 -3.167552 -2.2840383
|
||||
69000 0 1.8731077 -3.1864825 -0 0.12982742 0.672933 -3.1864825 -2.3837221
|
||||
70000 0 2.109088 -3.1787326 -0 0.13107619 0.77281866 -3.1787326 -2.2748377
|
||||
71000 0 1.9764202 -3.0731116 -0 0.12035585 0.72668137 -3.0731116 -2.2260744
|
||||
72000 0 1.6460591 -3.0865952 -0 0.09486718 0.61058673 -3.0865952 -2.3811413
|
||||
73000 0 1.9756864 -3.0431747 -0 0.1041775 0.74254526 -3.0431747 -2.196452
|
||||
74000 0 2.0553658 -3.1290715 -0 0.12267262 0.75819842 -3.1290715 -2.2482004
|
||||
75000 0 1.550997 -2.9813403 -0 0.094350599 0.57036238 -2.9813403 -2.3166273
|
||||
76000 0 1.9824851 -3.0057088 -0 0.11621875 0.73341774 -3.0057088 -2.1560723
|
||||
77000 0 1.8451505 -3.0063772 -0 0.12602143 0.66475735 -3.0063772 -2.2155984
|
||||
78000 0 1.934755 -3.0603773 -0 0.11800375 0.71117696 -3.0603773 -2.2311966
|
||||
79000 0 2.1982093 -3.095224 -0 0.12840585 0.81368383 -3.095224 -2.1531343
|
||||
80000 0 1.7547828 -3.0620364 -0 0.092552269 0.65949751 -3.0620364 -2.3099866
|
||||
81000 0 2.1064588 -3.1631358 -0 0.11415036 0.78861768 -3.1631358 -2.2603677
|
||||
82000 0 2.0039288 -3.1190532 -0 0.13374009 0.72508654 -3.1190532 -2.2602266
|
||||
83000 0 1.7749465 -3.2172309 -0 0.11017601 0.65051537 -3.2172309 -2.4565396
|
||||
84000 0 1.7865147 -3.1433093 -0 0.086859958 0.67878922 -3.1433093 -2.3776602
|
||||
85000 0 1.4541199 -3.0123872 -0 0.096301993 0.52689225 -3.0123872 -2.3891929
|
||||
86000 0 2.0345567 -2.9577061 -0 0.11756878 0.7543841 -2.9577061 -2.0857532
|
||||
87000 0 1.9655671 -3.0235755 -0 0.13068174 0.71170417 -3.0235755 -2.1811896
|
||||
88000 0 2.1238733 -3.0972095 -0 0.15660293 0.75362848 -3.0972095 -2.1869781
|
||||
89000 0 1.93413 -3.0018414 -0 0.11736651 0.71154634 -3.0018414 -2.1729285
|
||||
90000 0 2.0106701 -3.0778989 -0 0.1150105 0.74670527 -3.0778989 -2.2161831
|
||||
91000 0 1.9700224 -3.0072749 -0 0.1200151 0.72428023 -3.0072749 -2.1629796
|
||||
92000 0 2.3062898 -3.1245149 -0 0.16045862 0.82795128 -3.1245149 -2.136105
|
||||
93000 0 1.9977984 -3.1072212 -0 0.098381856 0.75781746 -3.1072212 -2.2510219
|
||||
94000 0 1.9684844 -3.0923519 -0 0.11228362 0.73135255 -3.0923519 -2.2487157
|
||||
95000 0 1.8913269 -3.1044766 -0 0.088944817 0.72162386 -3.1044766 -2.293908
|
||||
96000 0 2.139258 -2.9032081 -0 0.12122357 0.7956013 -2.9032081 -1.9863833
|
||||
97000 0 2.1549839 -3.0073823 -0 0.14177897 0.78178555 -3.0073823 -2.0838178
|
||||
98000 0 2.001084 -3.0411655 -0 0.16549603 0.69211139 -3.0411655 -2.1835581
|
||||
99000 0 2.269108 -3.0749812 -0 0.11370514 0.85876972 -3.0749812 -2.1025064
|
||||
100000 0 2.0270482 -3.0802101 -0 0.098599302 0.77013563 -3.0802101 -2.2114752
|
||||
101000 0 1.9412796 -3.1543623 -0 0.11953004 0.71244692 -3.1543623 -2.3223853
|
||||
102000 0 2.0146461 -3.0140006 -0 0.10152606 0.7618937 -3.0140006 -2.1505808
|
||||
103000 0 1.7377282 -3.1862597 -0 0.082111131 0.66262952 -3.1862597 -2.441519
|
||||
104000 0 1.7973897 -3.1055088 -0 0.093370304 0.67693958 -3.1055088 -2.3351989
|
||||
105000 0 2.2615194 -2.9636424 -0 0.12584102 0.84338157 -2.9636424 -1.9944198
|
||||
106000 0 1.8974182 -2.9505576 -0 0.085928679 0.72725057 -2.9505576 -2.1373783
|
||||
107000 0 2.0691161 -3.0804349 -0 0.12411017 0.76265389 -3.0804349 -2.1936708
|
||||
108000 0 2.0457472 -2.981702 -0 0.09308074 0.78366806 -2.981702 -2.1049532
|
||||
109000 0 1.6610604 -3.1463569 -0 0.066318676 0.64556436 -3.1463569 -2.4344738
|
||||
110000 0 1.9606721 -3.080013 -0 0.13164067 0.70864736 -3.080013 -2.2397249
|
||||
Loop time of 62.2251 on 8 procs for 100000 steps with 350 atoms
|
||||
|
||||
Pair time (%) = 43.4946 (69.8987)
|
||||
Neigh time (%) = 0.395421 (0.635469)
|
||||
Comm time (%) = 10.3551 (16.6414)
|
||||
Outpt time (%) = 0.00358662 (0.00576394)
|
||||
Other time (%) = 7.97644 (12.8187)
|
||||
|
||||
Nlocal: 43.75 ave 51 max 33 min
|
||||
Histogram: 1 0 1 0 0 2 0 1 2 1
|
||||
Nghost: 168.375 ave 180 max 155 min
|
||||
Histogram: 1 1 0 0 1 0 2 2 0 1
|
||||
Neighs: 971 ave 1278 max 631 min
|
||||
Histogram: 1 1 0 1 0 1 2 1 0 1
|
||||
|
||||
Total # of neighbors = 7768
|
||||
Ave neighs/atom = 22.1943
|
||||
Neighbor list builds = 7621
|
||||
Dangerous builds = 0
|
||||
@ -1,244 +0,0 @@
|
||||
LAMMPS (1 Feb 2014)
|
||||
# Aspherical shear demo - 2d line boxes, solvated by SRD particles
|
||||
|
||||
units lj
|
||||
atom_style line
|
||||
atom_modify first big
|
||||
dimension 2
|
||||
|
||||
read_data data.line.srd
|
||||
orthogonal box = (-28.7968 -28.7968 -0.5) to (28.7968 28.7968 0.5)
|
||||
4 by 2 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
400 atoms
|
||||
400 lines
|
||||
|
||||
# add small particles as hi density lattice
|
||||
|
||||
lattice sq 0.4
|
||||
Lattice spacing in x,y,z = 1.58114 1.58114 1.58114
|
||||
region plane block INF INF INF INF -0.001 0.001
|
||||
lattice sq 10.0
|
||||
Lattice spacing in x,y,z = 0.316228 0.316228 0.316228
|
||||
create_atoms 2 region plane
|
||||
Created 33489 atoms
|
||||
|
||||
group big type 1
|
||||
400 atoms in group big
|
||||
group small type 2
|
||||
33489 atoms in group small
|
||||
set group small mass 0.01
|
||||
33489 settings made for mass
|
||||
|
||||
# delete overlaps
|
||||
# must set 1-2 cutoff to non-zero value
|
||||
|
||||
pair_style lj/cut 1.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 0.0 1.0
|
||||
|
||||
delete_atoms overlap 1.5 small big
|
||||
Deleted 13605 atoms, new total = 20284
|
||||
|
||||
# SRD run
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule big include big
|
||||
|
||||
communicate multi group big vel yes
|
||||
neigh_modify include big
|
||||
|
||||
# no pairwise interactions with small particles
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 0.0 1.0 0.0
|
||||
|
||||
# use fix SRD to push small particles out from inside big ones
|
||||
# if comment out, big particles won't see SRD particles
|
||||
|
||||
timestep 0.001
|
||||
|
||||
fix 1 big rigid molecule
|
||||
100 rigid bodies with 400 atoms
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip
|
||||
|
||||
fix 3 all deform 1 x scale 0.35 y scale 0.35
|
||||
fix 4 all enforce2d
|
||||
|
||||
# diagnostics
|
||||
|
||||
compute tsmall small temp/deform
|
||||
compute tbig big temp
|
||||
variable pebig equal pe*atoms/count(big)
|
||||
variable ebig equal etotal*atoms/count(big)
|
||||
|
||||
compute 1 big erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step temp c_tsmall f_2[9] c_1 etotal v_pebig v_ebig press
|
||||
thermo_modify temp tbig
|
||||
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:439)
|
||||
|
||||
compute 10 big property/atom end1x end1y end2x end2y
|
||||
|
||||
#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
run 10000
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (../fix_srd.cpp:385)
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.99882 0.503306
|
||||
SRD temperature & lamda = 1 0.2
|
||||
SRD max distance & max velocity = 0.8 40
|
||||
SRD grid counts: 230 230 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.250407 0.250407 1
|
||||
SRD per actual grid cell = 0.444963
|
||||
SRD viscosity = 4.2356
|
||||
big/SRD mass density ratio = 14.0918
|
||||
WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2853)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 15.906 29.1054
|
||||
ave/max big velocity = 0 0
|
||||
WARNING: Using compute temp/deform with inconsistent fix deform remap option (../compute_temp_deform.cpp:76)
|
||||
Memory usage per processor = 7.79007 Mbytes
|
||||
Step Temp tsmall 2[9] 1 TotEng pebig ebig Press
|
||||
0 0 1.4528554 0 0 0 0 0 0
|
||||
1000 0 1.1122612 1.1071958 0.00058011072 0 0 0 0.32625408
|
||||
2000 0 1.0254475 1.0231236 0.00072347646 -2.3144253e-06 -0.00011736451 -0.00011736451 0.44526308
|
||||
3000 0 1.0089214 0.99966408 0.00061511441 -0.00023298189 -0.011814512 -0.011814512 0.87208025
|
||||
4000 0 1.0066185 0.99391102 0.00079065587 -0.0021630644 -0.10968899 -0.10968899 1.3901494
|
||||
5000 0 1.0109003 1.0009124 0.00071588733 -0.0040023493 -0.20295913 -0.20295913 1.2736445
|
||||
6000 0 1.0119642 1.0105049 0.00080741361 -0.0067908165 -0.34436231 -0.34436231 2.5492857
|
||||
7000 0 1.0048989 0.98912274 0.00098851463 -0.010933999 -0.55446309 -0.55446309 3.5707613
|
||||
8000 0 1.0021597 0.99377939 0.0008405671 -0.015690841 -0.79568252 -0.79568252 6.685381
|
||||
9000 0 1.0197546 1.00114 0.0012645557 -0.021124602 -1.0712286 -1.0712286 18.907993
|
||||
10000 0 1.0401079 1.0184189 0.0036111452 0.0099395852 0.50403637 0.50403637 96.909257
|
||||
Loop time of 3.93391 on 8 procs for 10000 steps with 20284 atoms
|
||||
|
||||
Pair time (%) = 0.110261 (2.80284)
|
||||
Neigh time (%) = 0.32853 (8.35124)
|
||||
Comm time (%) = 0.199613 (5.07416)
|
||||
Outpt time (%) = 0.00108692 (0.0276295)
|
||||
Other time (%) = 3.29442 (83.7441)
|
||||
|
||||
Nlocal: 2535.5 ave 2850 max 2226 min
|
||||
Histogram: 1 0 1 1 1 1 1 0 1 1
|
||||
Nghost: 109.25 ave 117 max 102 min
|
||||
Histogram: 1 0 2 0 1 1 1 1 0 1
|
||||
Neighs: 526 ave 665 max 407 min
|
||||
Histogram: 1 2 0 1 0 1 1 1 0 1
|
||||
|
||||
Total # of neighbors = 4208
|
||||
Ave neighs/atom = 0.207454
|
||||
Neighbor list builds = 522
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
triclinic box = (-10.0789 -10.0789 -0.5) to (10.0789 10.0789 0.5) with tilt (0 0 0)
|
||||
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip tstat yes
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.05 units box remap v
|
||||
|
||||
run 40000
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.99882 0.503306
|
||||
SRD temperature & lamda = 1 0.2
|
||||
SRD max distance & max velocity = 0.8 40
|
||||
SRD grid counts: 81 81 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.248861 0.248861 1
|
||||
SRD per actual grid cell = -11.3331
|
||||
SRD viscosity = -1920.36
|
||||
big/SRD mass density ratio = -0.546468
|
||||
WARNING: SRD bin size for fix srd differs from user request (../fix_srd.cpp:2853)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (../fix_srd.cpp:2875)
|
||||
WARNING: Fix srd viscosity < 0.0 due to low SRD density (../fix_srd.cpp:2877)
|
||||
# of rescaled SRD velocities = 1
|
||||
ave/max small velocity = 12.724 40
|
||||
ave/max big velocity = 1.54523 5.36901
|
||||
Memory usage per processor = 4.23847 Mbytes
|
||||
Step Temp tsmall 2[9] 1 TotEng pebig ebig Press
|
||||
10000 0 1.0277413 0 0.0036111452 0.010135973 0.51399517 0.51399517 60.794865
|
||||
11000 0 1.0024742 1 0.00040482851 -0.031643325 -1.604633 -1.604633 55.531632
|
||||
12000 0 1.0036177 1 0.00036416993 -0.030844063 -1.5641024 -1.5641024 56.694788
|
||||
13000 0 1.0043067 1 0.00068862721 -0.030673787 -1.5554677 -1.5554677 56.852537
|
||||
14000 0 1.0042533 1 0.00050997053 -0.035967153 -1.8238943 -1.8238943 51.254109
|
||||
15000 0 1.003956 1 0.00048458218 -0.038060147 -1.9300301 -1.9300301 50.346943
|
||||
16000 0 1.0059929 1 0.0004740426 -0.037433402 -1.8982478 -1.8982478 49.82532
|
||||
17000 0 1.0042401 1 0.00039855238 -0.034314446 -1.7400855 -1.7400855 48.430648
|
||||
18000 0 1.0025952 1 0.00046207703 -0.034166102 -1.732563 -1.732563 53.883613
|
||||
19000 0 1.0025881 1 0.00034818943 -0.037341367 -1.8935807 -1.8935807 48.90662
|
||||
20000 0 1.0009932 1 0.00031244041 -0.035274728 -1.7887814 -1.7887814 47.665935
|
||||
21000 0 1.0025603 1 0.0005514826 -0.034350221 -1.7418997 -1.7418997 63.290704
|
||||
22000 0 1.0038575 1 0.00034453716 -0.03576596 -1.8136918 -1.8136918 49.805726
|
||||
23000 0 1.0030321 1 0.00049535709 -0.035873083 -1.819124 -1.819124 48.973244
|
||||
24000 0 1.0048593 1 0.00034225992 -0.03322158 -1.6846663 -1.6846663 52.557383
|
||||
25000 0 1.0024423 1 0.00059157362 -0.030152319 -1.5290241 -1.5290241 56.733821
|
||||
26000 0 1.0022703 1 0.00047512976 -0.029563064 -1.499143 -1.499143 56.271943
|
||||
27000 0 1.0024537 1 0.00054158319 -0.02957039 -1.4995145 -1.4995145 55.246787
|
||||
28000 0 1.0023325 1 0.00051129428 -0.035115211 -1.7806924 -1.7806924 49.718172
|
||||
29000 0 1.002865 1 0.00056728135 -0.035484703 -1.7994293 -1.7994293 48.387401
|
||||
30000 0 1.0022693 1 0.00040284402 -0.033844303 -1.7162446 -1.7162446 50.486676
|
||||
31000 0 1.0037106 1 0.00056291948 -0.036529699 -1.852421 -1.852421 52.011803
|
||||
32000 0 1.0022542 1 0.00041877447 -0.036903458 -1.8713743 -1.8713743 52.712289
|
||||
33000 0 1.0021364 1 0.00040871451 -0.033616728 -1.7047043 -1.7047043 55.199593
|
||||
34000 0 1.003779 1 0.00040667148 -0.031745412 -1.6098098 -1.6098098 51.055261
|
||||
35000 0 1.0015547 1 0.00042509365 -0.033603064 -1.7040114 -1.7040114 53.887389
|
||||
36000 0 1.0024849 1 0.00040589851 -0.032151258 -1.6303903 -1.6303903 55.673615
|
||||
37000 0 1.0038204 1 0.00040542177 -0.033643242 -1.7060488 -1.7060488 51.834694
|
||||
38000 0 1.0031777 1 0.00040237126 -0.034711811 -1.7602359 -1.7602359 56.275778
|
||||
39000 0 1.002777 1 0.00051021239 -0.034375104 -1.7431615 -1.7431615 48.461145
|
||||
40000 0 1.0053762 1 0.00041566465 -0.036016384 -1.8263908 -1.8263908 48.937456
|
||||
41000 0 1.0039078 1 0.00049726673 -0.036481888 -1.8499966 -1.8499966 49.290465
|
||||
42000 0 1.0033408 1 0.00045236191 -0.034254524 -1.7370469 -1.7370469 52.146603
|
||||
43000 0 1.0039893 1 0.00048362351 -0.032519474 -1.6490625 -1.6490625 53.320599
|
||||
44000 0 1.0036667 1 0.00046834006 -0.031099875 -1.5770747 -1.5770747 55.907531
|
||||
45000 0 1.0035765 1 0.0005195031 -0.029559708 -1.4989728 -1.4989728 56.191165
|
||||
46000 0 1.004514 1 0.00050134348 -0.028852909 -1.463131 -1.463131 57.547696
|
||||
47000 0 1.003864 1 0.00038963389 -0.031339229 -1.5892123 -1.5892123 55.775764
|
||||
48000 0 1.003145 1 0.00035436452 -0.032390682 -1.6425315 -1.6425315 55.233354
|
||||
49000 0 1.0042615 1 0.00053161075 -0.029960468 -1.5192953 -1.5192953 54.611685
|
||||
50000 0 1.0037096 1 0.00031191389 -0.02942011 -1.4918938 -1.4918938 58.653762
|
||||
Loop time of 27.1275 on 8 procs for 40000 steps with 20284 atoms
|
||||
|
||||
Pair time (%) = 1.54277 (5.68709)
|
||||
Neigh time (%) = 1.26864 (4.67658)
|
||||
Comm time (%) = 1.19871 (4.4188)
|
||||
Outpt time (%) = 0.00421953 (0.0155544)
|
||||
Other time (%) = 23.1132 (85.202)
|
||||
|
||||
Nlocal: 2535.5 ave 2670 max 2406 min
|
||||
Histogram: 1 1 1 0 0 2 1 1 0 1
|
||||
Nghost: 114.5 ave 124 max 103 min
|
||||
Histogram: 1 0 1 0 2 1 0 1 0 2
|
||||
Neighs: 521.5 ave 692 max 442 min
|
||||
Histogram: 3 1 1 1 0 0 0 1 0 1
|
||||
|
||||
Total # of neighbors = 4172
|
||||
Ave neighs/atom = 0.205679
|
||||
Neighbor list builds = 2002
|
||||
Dangerous builds = 0
|
||||
|
||||
Please see the log.cite file for references relevant to this simulation
|
||||
|
||||
189
examples/ASPHERE/line/log.21Sep24.line.g++.1
Normal file
189
examples/ASPHERE/line/log.21Sep24.line.g++.1
Normal file
@ -0,0 +1,189 @@
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-296-g061c80104a-modified)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Aspherical shear demo - 2d line box and triangle mixture, implicit solvent
|
||||
|
||||
units lj
|
||||
atom_style line
|
||||
dimension 2
|
||||
|
||||
read_data data.line
|
||||
Reading data file ...
|
||||
orthogonal box = (-22.553882 -22.553882 -0.5) to (22.553882 22.553882 0.5)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
350 atoms
|
||||
350 lines
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
velocity all create 1.44 320984 loop geom
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra all
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff * * 0.25 0.25 1.0 0.25 2.5
|
||||
|
||||
fix 2 all rigid molecule langevin 2.0 2.0 1.0 492983
|
||||
100 rigid bodies with 350 atoms
|
||||
|
||||
fix 3 all deform 5 x scale 0.8 y scale 0.8
|
||||
fix 4 all enforce2d
|
||||
|
||||
compute 10 all property/atom end1x end1y end2x end2y
|
||||
|
||||
#dump 1 all custom 500 dump1.atom id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.line id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
timestep 0.001
|
||||
|
||||
compute 1 all erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
compute_modify thermo_temp extra/dof -350
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step f_2 pe ke c_1 c_2 c_3 v_toteng
|
||||
|
||||
run 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- Type Label Framework: https://doi.org/10.1021/acs.jpcb.3c08419
|
||||
|
||||
@Article{Gissinger24,
|
||||
author = {Jacob R. Gissinger, Ilia Nikiforov, Yaser Afshar, Brendon Waters, Moon-ki Choi, Daniel S. Karls, Alexander Stukowski, Wonpil Im, Hendrik Heinz, Axel Kohlmeyer, and Ellad B. Tadmor},
|
||||
title = {Type Label Framework for Bonded Force Fields in LAMMPS},
|
||||
journal = {J. Phys. Chem. B},
|
||||
year = 2024,
|
||||
volume = 128,
|
||||
number = 13,
|
||||
pages = {3282–-3297}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
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 = 2.8
|
||||
ghost atom cutoff = 2.8
|
||||
binsize = 1.4, bins = 33 33 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/2d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.742 | 4.742 | 4.742 Mbytes
|
||||
Step f_2 PotEng KinEng c_1 c_2 c_3 v_toteng
|
||||
0 1.1872976 0 0.46543528 0.03617212 0.46543528 0 0.5016074
|
||||
1000 1.9084412 -0.001043719 0.71003395 0.089891202 0.71003395 -0.001043719 0.79888143
|
||||
2000 2.31668 -0.020711665 0.83611544 0.13062287 0.83611544 -0.020711665 0.94602664
|
||||
3000 2.3094506 -0.062018072 0.80584123 0.15326943 0.80584123 -0.062018072 0.8970926
|
||||
4000 2.4383442 -0.053659995 0.86864073 0.14696993 0.86864073 -0.053659995 0.96195067
|
||||
5000 2.5885917 -0.15612821 0.90351683 0.17156633 0.90351683 -0.15612821 0.91895495
|
||||
6000 2.1187379 -0.072041135 0.76933527 0.11557939 0.76933527 -0.072041135 0.81287353
|
||||
7000 2.1407592 -0.057727294 0.75154343 0.13827066 0.75154343 -0.057727294 0.8320868
|
||||
8000 2.0661844 -0.097529608 0.71093839 0.14547433 0.71093839 -0.097529608 0.75888311
|
||||
9000 2.1574445 -0.052890857 0.78826145 0.11363136 0.78826145 -0.052890857 0.84900195
|
||||
10000 2.473097 -0.092376489 0.85756337 0.16861278 0.85756337 -0.092376489 0.93379965
|
||||
Loop time of 1.16704 on 1 procs for 10000 steps with 350 atoms
|
||||
|
||||
Performance: 740334.372 tau/day, 8568.685 timesteps/s, 2.999 Matom-step/s
|
||||
99.7% 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.80757 | 0.80757 | 0.80757 | 0.0 | 69.20
|
||||
Neigh | 0.0090046 | 0.0090046 | 0.0090046 | 0.0 | 0.77
|
||||
Comm | 0.011808 | 0.011808 | 0.011808 | 0.0 | 1.01
|
||||
Output | 0.000194 | 0.000194 | 0.000194 | 0.0 | 0.02
|
||||
Modify | 0.3317 | 0.3317 | 0.3317 | 0.0 | 28.42
|
||||
Other | | 0.006768 | | | 0.58
|
||||
|
||||
Nlocal: 350 ave 350 max 350 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 101 ave 101 max 101 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 853 ave 853 max 853 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 853
|
||||
Ave neighs/atom = 2.4371429
|
||||
Neighbor list builds = 274
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
Changing box ...
|
||||
triclinic box = (-18.043106 -18.043106 -0.5) to (18.043106 18.043106 0.5) with tilt (0 0 0)
|
||||
|
||||
#dump 1 all custom 500 dump2.atom id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.01 units box
|
||||
|
||||
run 10000
|
||||
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 = 2.8
|
||||
ghost atom cutoff = 2.8
|
||||
binsize = 1.4, bins = 26 26 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton/tri
|
||||
stencil: half/bin/2d/tri
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.756 | 4.756 | 4.756 Mbytes
|
||||
Step f_2 PotEng KinEng c_1 c_2 c_3 v_toteng
|
||||
10000 2.473097 -0.092380532 0.85753671 0.16863499 0.85753671 -0.092380532 0.93379117
|
||||
11000 2.5185915 -0.1015737 0.84230876 0.197573 0.84230876 -0.1015737 0.93830806
|
||||
12000 2.5971728 -0.13087195 0.90608898 0.17248755 0.90608898 -0.13087195 0.94770458
|
||||
13000 2.5065714 -0.14666584 0.83804307 0.19683483 0.83804307 -0.14666584 0.88821206
|
||||
14000 2.1672357 -0.10720878 0.79713452 0.10973398 0.79713452 -0.10720878 0.79965972
|
||||
15000 2.3444438 -0.14780285 0.81642139 0.15695019 0.81642139 -0.14780285 0.82556873
|
||||
16000 2.2672973 -0.12590007 0.76672668 0.17081014 0.76672668 -0.12590007 0.81163675
|
||||
17000 2.3999651 -0.15464102 0.85708567 0.14289234 0.85708567 -0.15464102 0.84533699
|
||||
18000 2.2024356 -0.14077779 0.76727873 0.14718521 0.76727873 -0.14077779 0.77368615
|
||||
19000 2.5411572 -0.092014576 0.85750101 0.19297197 0.85750101 -0.092014576 0.95845841
|
||||
20000 2.2113691 -0.11944862 0.77295445 0.14564597 0.77295445 -0.11944862 0.79915181
|
||||
Loop time of 1.76388 on 1 procs for 10000 steps with 350 atoms
|
||||
|
||||
Performance: 489827.896 tau/day, 5669.304 timesteps/s, 1.984 Matom-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 | 1.3668 | 1.3668 | 1.3668 | 0.0 | 77.49
|
||||
Neigh | 0.018849 | 0.018849 | 0.018849 | 0.0 | 1.07
|
||||
Comm | 0.013338 | 0.013338 | 0.013338 | 0.0 | 0.76
|
||||
Output | 0.00020434 | 0.00020434 | 0.00020434 | 0.0 | 0.01
|
||||
Modify | 0.35698 | 0.35698 | 0.35698 | 0.0 | 20.24
|
||||
Other | | 0.007667 | | | 0.43
|
||||
|
||||
Nlocal: 350 ave 350 max 350 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 119 ave 119 max 119 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 997 ave 997 max 997 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 997
|
||||
Ave neighs/atom = 2.8485714
|
||||
Neighbor list builds = 283
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:02
|
||||
189
examples/ASPHERE/line/log.21Sep24.line.g++.4
Normal file
189
examples/ASPHERE/line/log.21Sep24.line.g++.4
Normal file
@ -0,0 +1,189 @@
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-296-g061c80104a-modified)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Aspherical shear demo - 2d line box and triangle mixture, implicit solvent
|
||||
|
||||
units lj
|
||||
atom_style line
|
||||
dimension 2
|
||||
|
||||
read_data data.line
|
||||
Reading data file ...
|
||||
orthogonal box = (-22.553882 -22.553882 -0.5) to (22.553882 22.553882 0.5)
|
||||
2 by 2 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
350 atoms
|
||||
350 lines
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
velocity all create 1.44 320984 loop geom
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra all
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff * * 0.25 0.25 1.0 0.25 2.5
|
||||
|
||||
fix 2 all rigid molecule langevin 2.0 2.0 1.0 492983
|
||||
100 rigid bodies with 350 atoms
|
||||
|
||||
fix 3 all deform 5 x scale 0.8 y scale 0.8
|
||||
fix 4 all enforce2d
|
||||
|
||||
compute 10 all property/atom end1x end1y end2x end2y
|
||||
|
||||
#dump 1 all custom 500 dump1.atom id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.line id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
timestep 0.001
|
||||
|
||||
compute 1 all erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
compute_modify thermo_temp extra/dof -350
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step f_2 pe ke c_1 c_2 c_3 v_toteng
|
||||
|
||||
run 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- Type Label Framework: https://doi.org/10.1021/acs.jpcb.3c08419
|
||||
|
||||
@Article{Gissinger24,
|
||||
author = {Jacob R. Gissinger, Ilia Nikiforov, Yaser Afshar, Brendon Waters, Moon-ki Choi, Daniel S. Karls, Alexander Stukowski, Wonpil Im, Hendrik Heinz, Axel Kohlmeyer, and Ellad B. Tadmor},
|
||||
title = {Type Label Framework for Bonded Force Fields in LAMMPS},
|
||||
journal = {J. Phys. Chem. B},
|
||||
year = 2024,
|
||||
volume = 128,
|
||||
number = 13,
|
||||
pages = {3282–-3297}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
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 = 2.8
|
||||
ghost atom cutoff = 2.8
|
||||
binsize = 1.4, bins = 33 33 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/2d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.736 | 4.736 | 4.736 Mbytes
|
||||
Step f_2 PotEng KinEng c_1 c_2 c_3 v_toteng
|
||||
0 1.1872976 0 0.46543528 0.03617212 0.46543528 0 0.5016074
|
||||
1000 1.9084412 -0.001043719 0.71003395 0.089891202 0.71003395 -0.001043719 0.79888143
|
||||
2000 2.31668 -0.020711665 0.83611544 0.13062287 0.83611544 -0.020711665 0.94602664
|
||||
3000 2.3094506 -0.062018072 0.80584123 0.15326943 0.80584123 -0.062018072 0.8970926
|
||||
4000 2.4383442 -0.053659995 0.86864073 0.14696993 0.86864073 -0.053659995 0.96195067
|
||||
5000 2.5885917 -0.15612821 0.90351683 0.17156633 0.90351683 -0.15612821 0.91895494
|
||||
6000 2.118738 -0.072041141 0.76933528 0.1155794 0.76933528 -0.072041141 0.81287354
|
||||
7000 2.1407609 -0.057727453 0.75154404 0.13827078 0.75154404 -0.057727453 0.83208737
|
||||
8000 2.066348 -0.097639137 0.71096217 0.14551295 0.71096217 -0.097639137 0.75883597
|
||||
9000 2.1969096 -0.050133795 0.8028133 0.11559948 0.8028133 -0.050133795 0.86827899
|
||||
10000 2.3932442 -0.098008752 0.83753779 0.15678193 0.83753779 -0.098008752 0.89631097
|
||||
Loop time of 0.596624 on 4 procs for 10000 steps with 350 atoms
|
||||
|
||||
Performance: 1448149.372 tau/day, 16760.988 timesteps/s, 5.866 Matom-step/s
|
||||
98.2% 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.17419 | 0.21073 | 0.27006 | 7.8 | 35.32
|
||||
Neigh | 0.0015899 | 0.0018079 | 0.0020932 | 0.5 | 0.30
|
||||
Comm | 0.041688 | 0.101 | 0.13805 | 11.3 | 16.93
|
||||
Output | 0.00011945 | 0.0001262 | 0.000143 | 0.0 | 0.02
|
||||
Modify | 0.26906 | 0.27183 | 0.27467 | 0.4 | 45.56
|
||||
Other | | 0.01113 | | | 1.87
|
||||
|
||||
Nlocal: 87.5 ave 94 max 80 min
|
||||
Histogram: 1 1 0 0 0 0 0 0 0 2
|
||||
Nghost: 54.5 ave 67 max 42 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
Neighs: 212.75 ave 286 max 122 min
|
||||
Histogram: 1 0 0 1 0 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 851
|
||||
Ave neighs/atom = 2.4314286
|
||||
Neighbor list builds = 273
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
Changing box ...
|
||||
triclinic box = (-18.043106 -18.043106 -0.5) to (18.043106 18.043106 0.5) with tilt (0 0 0)
|
||||
|
||||
#dump 1 all custom 500 dump2.atom id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.01 units box
|
||||
|
||||
run 10000
|
||||
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 = 2.8
|
||||
ghost atom cutoff = 2.8
|
||||
binsize = 1.4, bins = 26 26 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton/tri
|
||||
stencil: half/bin/2d/tri
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.752 | 4.752 | 4.752 Mbytes
|
||||
Step f_2 PotEng KinEng c_1 c_2 c_3 v_toteng
|
||||
10000 2.3932442 -0.098029446 0.83751359 0.1568021 0.83751359 -0.098029446 0.89628624
|
||||
11000 2.4541893 -0.15538223 0.82053681 0.19271549 0.82053681 -0.15538223 0.85787007
|
||||
12000 2.4124449 -0.14024177 0.84559598 0.15692416 0.84559598 -0.14024177 0.86227837
|
||||
13000 2.2095814 -0.10822636 0.73930104 0.173052 0.73930104 -0.10822636 0.80412668
|
||||
14000 2.0946831 -0.087303541 0.77743494 0.10023865 0.77743494 -0.087303541 0.79037005
|
||||
15000 2.0911016 -0.11524594 0.74044758 0.12978235 0.74044758 -0.11524594 0.75498398
|
||||
16000 1.9736428 -0.17259563 0.67852978 0.13943094 0.67852978 -0.17259563 0.64536509
|
||||
17000 2.3284367 -0.17673537 0.77018991 0.1897596 0.77018991 -0.17673537 0.78321414
|
||||
18000 2.3178564 -0.16634746 0.81488323 0.1487365 0.81488323 -0.16634746 0.79727227
|
||||
19000 2.7497251 -0.18254513 1.0041125 0.14528424 1.0041125 -0.18254513 0.96685165
|
||||
20000 2.3897059 -0.12664177 0.8390411 0.15426546 0.8390411 -0.12664177 0.86666479
|
||||
Loop time of 0.79519 on 4 procs for 10000 steps with 350 atoms
|
||||
|
||||
Performance: 1086533.223 tau/day, 12575.616 timesteps/s, 4.401 Matom-step/s
|
||||
98.2% 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.26601 | 0.35051 | 0.443 | 12.3 | 44.08
|
||||
Neigh | 0.0029891 | 0.0036725 | 0.0040631 | 0.7 | 0.46
|
||||
Comm | 0.049744 | 0.14268 | 0.22734 | 19.3 | 17.94
|
||||
Output | 0.00013783 | 0.00014503 | 0.00016304 | 0.0 | 0.02
|
||||
Modify | 0.27963 | 0.28446 | 0.29049 | 0.8 | 35.77
|
||||
Other | | 0.01372 | | | 1.73
|
||||
|
||||
Nlocal: 87.5 ave 101 max 75 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
Nghost: 61.5 ave 67 max 50 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 2 1
|
||||
Neighs: 244.75 ave 268 max 198 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 0 2
|
||||
|
||||
Total # of neighbors = 979
|
||||
Ave neighs/atom = 2.7971429
|
||||
Neighbor list builds = 289
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:01
|
||||
363
examples/ASPHERE/line/log.21Sep24.line.srd.g++.1
Normal file
363
examples/ASPHERE/line/log.21Sep24.line.srd.g++.1
Normal file
@ -0,0 +1,363 @@
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-296-g061c80104a-modified)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Aspherical shear demo - 2d line boxes, solvated by SRD particles
|
||||
|
||||
units lj
|
||||
atom_style line
|
||||
atom_modify first big
|
||||
dimension 2
|
||||
|
||||
read_data data.line.srd
|
||||
Reading data file ...
|
||||
orthogonal box = (-28.796757 -28.796757 -0.5) to (28.796757 28.796757 0.5)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
400 atoms
|
||||
400 lines
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
# add small particles as hi density lattice
|
||||
|
||||
lattice sq 0.4
|
||||
Lattice spacing in x,y,z = 1.5811388 1.5811388 1.5811388
|
||||
region plane block INF INF INF INF -0.001 0.001
|
||||
lattice sq 10.0
|
||||
Lattice spacing in x,y,z = 0.31622777 0.31622777 0.31622777
|
||||
create_atoms 2 region plane
|
||||
Created 33489 atoms
|
||||
using lattice units in orthogonal box = (-28.796757 -28.796757 -0.5) to (28.796757 28.796757 0.5)
|
||||
create_atoms CPU = 0.003 seconds
|
||||
|
||||
group big type 1
|
||||
400 atoms in group big
|
||||
group small type 2
|
||||
33489 atoms in group small
|
||||
set group small mass 0.01
|
||||
Setting atom values ...
|
||||
33489 settings made for mass
|
||||
|
||||
# delete overlaps
|
||||
# must set 1-2 cutoff to non-zero value
|
||||
|
||||
pair_style lj/cut 1.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 1.0
|
||||
|
||||
delete_atoms overlap 1.5 small big
|
||||
System init for delete_atoms ...
|
||||
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 = 1.8
|
||||
ghost atom cutoff = 1.8
|
||||
binsize = 0.9, bins = 64 64 2
|
||||
2 neighbor lists, perpetual/occasional/extra = 1 1 0
|
||||
(1) command delete_atoms, occasional
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/2d
|
||||
bin: standard
|
||||
(2) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/2d
|
||||
bin: standard
|
||||
WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:313)
|
||||
Deleted 13605 atoms, new total = 20284
|
||||
|
||||
# SRD run
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.8 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra big include big
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
neigh_modify include big
|
||||
|
||||
# no pairwise interactions with small particles
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff 1 1 1.0 1.0 1.0 1.0 2.5
|
||||
pair_coeff 2 2 0.0 0.0 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 0.2 1.0 0.2 2.5
|
||||
|
||||
# use fix SRD to push small particles out from inside big ones
|
||||
# if comment out, big particles won't see SRD particles
|
||||
|
||||
timestep 0.0001
|
||||
|
||||
fix 1 big rigid molecule
|
||||
100 rigid bodies with 400 atoms
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip
|
||||
|
||||
fix 3 all deform 1 x scale 1.25 y scale 1.25
|
||||
fix 4 all enforce2d
|
||||
|
||||
# diagnostics
|
||||
|
||||
compute tsmall small temp/deform
|
||||
compute tbig big temp
|
||||
variable pebig equal pe*atoms/count(big)
|
||||
variable ebig equal etotal*atoms/count(big)
|
||||
|
||||
compute_modify tbig extra/dof -350
|
||||
|
||||
compute 1 big erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step c_tsmall f_2[9] c_1 etotal v_pebig v_ebig press
|
||||
thermo_modify temp tbig
|
||||
WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:533)
|
||||
|
||||
compute 10 big property/atom end1x end1y end2x end2y
|
||||
|
||||
#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
run 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- Type Label Framework: https://doi.org/10.1021/acs.jpcb.3c08419
|
||||
|
||||
@Article{Gissinger24,
|
||||
author = {Jacob R. Gissinger, Ilia Nikiforov, Yaser Afshar, Brendon Waters, Moon-ki Choi, Daniel S. Karls, Alexander Stukowski, Wonpil Im, Hendrik Heinz, Axel Kohlmeyer, and Ellad B. Tadmor},
|
||||
title = {Type Label Framework for Bonded Force Fields in LAMMPS},
|
||||
journal = {J. Phys. Chem. B},
|
||||
year = 2024,
|
||||
volume = 128,
|
||||
number = 13,
|
||||
pages = {3282–-3297}
|
||||
}
|
||||
|
||||
- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2
|
||||
|
||||
@Article{Intveld08,
|
||||
author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest},
|
||||
title = {Accurate and Efficient Methods for Modeling Colloidal
|
||||
Mixtures in an Explicit Solvent using Molecular Dynamics},
|
||||
journal = {Comput.\ Phys.\ Commut.},
|
||||
year = 2008,
|
||||
volume = 179,
|
||||
pages = {320--329}
|
||||
}
|
||||
|
||||
@article{Shire2020,
|
||||
author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin},
|
||||
title = {{DEM} Simulations of Polydisperse Media: Efficient Contact
|
||||
Detection Applied to Investigate the Quasi-Static Limit},
|
||||
journal = {Computational Particle Mechanics},
|
||||
year = {2020}
|
||||
@article{Monti2022,
|
||||
author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava,
|
||||
Ishan and Silbert, Leonardo E. and Grest, Gary S.
|
||||
and Lechman, Jeremy B.},
|
||||
title = {Large-scale frictionless jamming with power-law particle
|
||||
size distributions},
|
||||
journal = {Phys. Rev. E},
|
||||
volume = {106}
|
||||
issue = {3}
|
||||
year = {2022}
|
||||
}
|
||||
|
||||
- fix srd command: doi:10.1063/1.3419070
|
||||
|
||||
@Article{Petersen10,
|
||||
author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and
|
||||
G. S. Grest and in 't Veld, P. J. and P. R. Schunk},
|
||||
title = {Mesoscale Hydrodynamics via Stochastic Rotation
|
||||
Dynamics: Comparison with {L}ennard-{J}ones Fluid},
|
||||
journal = {J.~Chem.\ Phys.},
|
||||
year = 2010,
|
||||
volume = 132,
|
||||
pages = 174106
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Using compute temp/deform with inconsistent fix deform remap option (src/compute_temp_deform.cpp:71)
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405)
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.9988171 0.50330564
|
||||
SRD temperature & lamda = 1 0.02
|
||||
SRD max distance & max velocity = 0.08 40
|
||||
SRD grid counts: 230 230 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.25040659 0.25040659 1
|
||||
SRD per actual grid cell = 0.45503978
|
||||
SRD viscosity = 0.92062623
|
||||
big/SRD mass density ratio = 12.298053
|
||||
WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 15.906001 29.105426
|
||||
ave/max big velocity = 0 0
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.3
|
||||
ghost atom cutoff = 3.3
|
||||
binsize = 1.65, bins = 35 35 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/atomonly/newton
|
||||
stencil: half/multi/2d
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 43.18 | 43.18 | 43.18 Mbytes
|
||||
Step c_tsmall f_2[9] c_1 TotEng v_pebig v_ebig Press
|
||||
0 1.6084386 0 0 0 0 0 0
|
||||
1000 1.4566787 1.2042825 0.00015900089 0.0011955837 0 0.060628048 0.75322967
|
||||
2000 1.3561018 1.2092936 0.00026739313 0.0020783306 0 0.10539215 0.53247025
|
||||
3000 1.3327447 1.1696777 0.0003215116 0.0024935719 0 0.12644903 0.32024668
|
||||
4000 1.3031273 1.1385596 0.00037337107 0.0031214473 0 0.15828859 0.64066244
|
||||
5000 1.28204 1.0983763 0.00047966362 0.0033295434 0 0.16884114 0.32103666
|
||||
6000 1.2654396 1.0969562 0.00049917373 0.0037382387 0 0.18956609 0.16211614
|
||||
7000 1.2401503 1.1232046 0.00045137168 0.0037522201 0 0.19027508 0.014071672
|
||||
8000 1.2349025 1.059008 0.00056648801 0.0039664742 0 0.20113991 0.24483817
|
||||
9000 1.2272907 1.0371006 0.00056271544 0.0037847074 0 0.19192251 0.032968056
|
||||
10000 1.2153817 1.0209113 0.00053291164 0.0037197691 0 0.18862949 0.3237698
|
||||
Loop time of 6.0346 on 1 procs for 10000 steps with 20284 atoms
|
||||
|
||||
Performance: 14317.424 tau/day, 1657.109 timesteps/s, 33.613 Matom-step/s
|
||||
96.2% 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.10636 | 0.10636 | 0.10636 | 0.0 | 1.76
|
||||
Neigh | 0.01905 | 0.01905 | 0.01905 | 0.0 | 0.32
|
||||
Comm | 0.041223 | 0.041223 | 0.041223 | 0.0 | 0.68
|
||||
Output | 0.0017015 | 0.0017015 | 0.0017015 | 0.0 | 0.03
|
||||
Modify | 5.8165 | 5.8165 | 5.8165 | 0.0 | 96.39
|
||||
Other | | 0.04976 | | | 0.82
|
||||
|
||||
Nlocal: 20284 ave 20284 max 20284 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 84 ave 84 max 84 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 0
|
||||
Ave neighs/atom = 0
|
||||
Neighbor list builds = 500
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
Changing box ...
|
||||
triclinic box = (-35.995947 -35.995947 -0.5) to (35.995947 35.995947 0.5) with tilt (0 0 0)
|
||||
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip #tstat yes
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.0002 units box remap v
|
||||
|
||||
run 30000
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405)
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.9988171 0.50330564
|
||||
SRD temperature & lamda = 1 0.02
|
||||
SRD max distance & max velocity = 0.08 40
|
||||
SRD grid counts: 288 288 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.24997185 0.24997185 1
|
||||
SRD per actual grid cell = 0.26976265
|
||||
SRD viscosity = 1.0312189
|
||||
big/SRD mass density ratio = 20.672578
|
||||
WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 12.805429 40
|
||||
ave/max big velocity = 0.50400801 2.1697856
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.3
|
||||
ghost atom cutoff = 3.3
|
||||
binsize = 1.65, bins = 44 44 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/atomonly/newton/tri
|
||||
stencil: half/multi/2d/tri
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 58.85 | 58.85 | 58.85 Mbytes
|
||||
Step c_tsmall f_2[9] c_1 TotEng v_pebig v_ebig Press
|
||||
10000 1.0423767 0 0.00053289774 0.0037197858 0 0.18863034 0.014558088
|
||||
11000 1.0333923 1.0309908 0.00058283908 0.0042336078 0 0.21468625 0.13036048
|
||||
12000 1.0268543 1.0290122 0.00055294944 0.0044278861 0 0.2245381 0.53275676
|
||||
13000 1.0257856 1.0140434 0.00051520803 0.0042888387 0 0.21748701 0.2066835
|
||||
14000 1.0239497 1.0321558 0.00054742053 0.004259664 0 0.21600756 0.24430097
|
||||
15000 1.0194475 1.0119806 0.00053619565 0.0041113765 0 0.2084879 0.18420434
|
||||
16000 1.016421 1.0309991 0.00049553642 0.0041338645 0 0.20962827 0.18298406
|
||||
17000 1.0088527 0.99723694 0.00049824173 0.0044777581 0 0.22706711 0.65557023
|
||||
18000 1.0073877 1.0136962 0.00058327835 0.0045355884 0 0.22999969 0.13700737
|
||||
19000 1.0026916 1.0253129 0.00056760151 0.0045138437 0 0.22889701 0.16443344
|
||||
20000 1.0024042 0.98988084 0.00057568118 0.0048644983 0 0.24667871 0.060864322
|
||||
21000 0.99500641 0.99075324 0.00062187543 0.0050480594 0 0.25598709 0.18428384
|
||||
22000 0.99286446 0.98642266 0.00061024492 0.0050497174 0 0.25607117 0.18499738
|
||||
23000 0.99204086 0.98869005 0.00064013575 0.0052921112 0 0.26836296 0.046987646
|
||||
24000 0.98768375 1.0110613 0.00065868636 0.0049285304 0 0.24992578 0.22623751
|
||||
25000 0.98763308 0.98752678 0.00067070463 0.0049364253 0 0.25032613 0.022819382
|
||||
26000 0.9844889 1.0059918 0.00075364589 0.0053381778 0 0.270699 0.089735771
|
||||
27000 0.98574608 0.99094039 0.00080711088 0.0054137233 0 0.27452991 0.14477885
|
||||
28000 0.98139419 0.97487219 0.00071242405 0.0053315389 0 0.27036234 -0.016357088
|
||||
29000 0.98458705 0.98600894 0.00068355573 0.0050157315 0 0.25434775 0.015749835
|
||||
30000 0.98440759 1.0010793 0.00067594666 0.0048121267 0 0.24402295 0.20422918
|
||||
31000 0.98060632 0.9825933 0.00069529947 0.0050649881 -0.00010700206 0.25684555 0.0014601267
|
||||
32000 0.97616624 0.94976641 0.00067682494 0.0052111319 -0.00013230279 0.2642565 0.013738873
|
||||
33000 0.97926122 0.95756794 0.00071774059 0.0053716513 -0.00024804252 0.27239644 0.10643895
|
||||
34000 0.97227771 0.94365547 0.00080885359 0.0055744144 -0.00063217879 0.28267856 0.12472959
|
||||
35000 0.97295679 0.98103625 0.0008130852 0.0057598371 -0.00097218501 0.29208134 0.88422099
|
||||
36000 0.97131919 0.97164636 0.0008345433 0.0062212675 -0.001543055 0.31548048 0.22389401
|
||||
37000 0.96988732 0.98589058 0.00083271625 0.0062999411 -0.0026064482 0.31947001 0.11797226
|
||||
38000 0.97135512 0.96486494 0.00076943974 0.0057397763 -0.0041174109 0.29106406 0.072790492
|
||||
39000 0.97386738 0.95218062 0.00079594844 0.0056308358 -0.0069006312 0.28553968 0.12417837
|
||||
40000 0.97914045 1.0033941 0.000830798 0.0055952714 -0.0086705514 0.28373621 0.1976663
|
||||
Loop time of 15.944 on 1 procs for 30000 steps with 20284 atoms
|
||||
|
||||
Performance: 16256.931 tau/day, 1881.589 timesteps/s, 38.166 Matom-step/s
|
||||
99.5% 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.31871 | 0.31871 | 0.31871 | 0.0 | 2.00
|
||||
Neigh | 0.082974 | 0.082974 | 0.082974 | 0.0 | 0.52
|
||||
Comm | 0.16092 | 0.16092 | 0.16092 | 0.0 | 1.01
|
||||
Output | 0.0047257 | 0.0047257 | 0.0047257 | 0.0 | 0.03
|
||||
Modify | 15.189 | 15.189 | 15.189 | 0.0 | 95.27
|
||||
Other | | 0.1871 | | | 1.17
|
||||
|
||||
Nlocal: 20284 ave 20284 max 20284 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 76 ave 76 max 76 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 38 ave 38 max 38 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 38
|
||||
Ave neighs/atom = 0.0018733978
|
||||
Neighbor list builds = 1500
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:22
|
||||
363
examples/ASPHERE/line/log.21Sep24.line.srd.g++.4
Normal file
363
examples/ASPHERE/line/log.21Sep24.line.srd.g++.4
Normal file
@ -0,0 +1,363 @@
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-296-g061c80104a-modified)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Aspherical shear demo - 2d line boxes, solvated by SRD particles
|
||||
|
||||
units lj
|
||||
atom_style line
|
||||
atom_modify first big
|
||||
dimension 2
|
||||
|
||||
read_data data.line.srd
|
||||
Reading data file ...
|
||||
orthogonal box = (-28.796757 -28.796757 -0.5) to (28.796757 28.796757 0.5)
|
||||
2 by 2 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
400 atoms
|
||||
400 lines
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
# add small particles as hi density lattice
|
||||
|
||||
lattice sq 0.4
|
||||
Lattice spacing in x,y,z = 1.5811388 1.5811388 1.5811388
|
||||
region plane block INF INF INF INF -0.001 0.001
|
||||
lattice sq 10.0
|
||||
Lattice spacing in x,y,z = 0.31622777 0.31622777 0.31622777
|
||||
create_atoms 2 region plane
|
||||
Created 33489 atoms
|
||||
using lattice units in orthogonal box = (-28.796757 -28.796757 -0.5) to (28.796757 28.796757 0.5)
|
||||
create_atoms CPU = 0.001 seconds
|
||||
|
||||
group big type 1
|
||||
400 atoms in group big
|
||||
group small type 2
|
||||
33489 atoms in group small
|
||||
set group small mass 0.01
|
||||
Setting atom values ...
|
||||
33489 settings made for mass
|
||||
|
||||
# delete overlaps
|
||||
# must set 1-2 cutoff to non-zero value
|
||||
|
||||
pair_style lj/cut 1.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 1.0
|
||||
|
||||
delete_atoms overlap 1.5 small big
|
||||
System init for delete_atoms ...
|
||||
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 = 1.8
|
||||
ghost atom cutoff = 1.8
|
||||
binsize = 0.9, bins = 64 64 2
|
||||
2 neighbor lists, perpetual/occasional/extra = 1 1 0
|
||||
(1) command delete_atoms, occasional
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/2d
|
||||
bin: standard
|
||||
(2) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/2d
|
||||
bin: standard
|
||||
WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:313)
|
||||
Deleted 13605 atoms, new total = 20284
|
||||
|
||||
# SRD run
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.8 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra big include big
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
neigh_modify include big
|
||||
|
||||
# no pairwise interactions with small particles
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff 1 1 1.0 1.0 1.0 1.0 2.5
|
||||
pair_coeff 2 2 0.0 0.0 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 0.2 1.0 0.2 2.5
|
||||
|
||||
# use fix SRD to push small particles out from inside big ones
|
||||
# if comment out, big particles won't see SRD particles
|
||||
|
||||
timestep 0.0001
|
||||
|
||||
fix 1 big rigid molecule
|
||||
100 rigid bodies with 400 atoms
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip
|
||||
|
||||
fix 3 all deform 1 x scale 1.25 y scale 1.25
|
||||
fix 4 all enforce2d
|
||||
|
||||
# diagnostics
|
||||
|
||||
compute tsmall small temp/deform
|
||||
compute tbig big temp
|
||||
variable pebig equal pe*atoms/count(big)
|
||||
variable ebig equal etotal*atoms/count(big)
|
||||
|
||||
compute_modify tbig extra/dof -350
|
||||
|
||||
compute 1 big erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step c_tsmall f_2[9] c_1 etotal v_pebig v_ebig press
|
||||
thermo_modify temp tbig
|
||||
WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:533)
|
||||
|
||||
compute 10 big property/atom end1x end1y end2x end2y
|
||||
|
||||
#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
run 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- Type Label Framework: https://doi.org/10.1021/acs.jpcb.3c08419
|
||||
|
||||
@Article{Gissinger24,
|
||||
author = {Jacob R. Gissinger, Ilia Nikiforov, Yaser Afshar, Brendon Waters, Moon-ki Choi, Daniel S. Karls, Alexander Stukowski, Wonpil Im, Hendrik Heinz, Axel Kohlmeyer, and Ellad B. Tadmor},
|
||||
title = {Type Label Framework for Bonded Force Fields in LAMMPS},
|
||||
journal = {J. Phys. Chem. B},
|
||||
year = 2024,
|
||||
volume = 128,
|
||||
number = 13,
|
||||
pages = {3282–-3297}
|
||||
}
|
||||
|
||||
- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2
|
||||
|
||||
@Article{Intveld08,
|
||||
author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest},
|
||||
title = {Accurate and Efficient Methods for Modeling Colloidal
|
||||
Mixtures in an Explicit Solvent using Molecular Dynamics},
|
||||
journal = {Comput.\ Phys.\ Commut.},
|
||||
year = 2008,
|
||||
volume = 179,
|
||||
pages = {320--329}
|
||||
}
|
||||
|
||||
@article{Shire2020,
|
||||
author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin},
|
||||
title = {{DEM} Simulations of Polydisperse Media: Efficient Contact
|
||||
Detection Applied to Investigate the Quasi-Static Limit},
|
||||
journal = {Computational Particle Mechanics},
|
||||
year = {2020}
|
||||
@article{Monti2022,
|
||||
author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava,
|
||||
Ishan and Silbert, Leonardo E. and Grest, Gary S.
|
||||
and Lechman, Jeremy B.},
|
||||
title = {Large-scale frictionless jamming with power-law particle
|
||||
size distributions},
|
||||
journal = {Phys. Rev. E},
|
||||
volume = {106}
|
||||
issue = {3}
|
||||
year = {2022}
|
||||
}
|
||||
|
||||
- fix srd command: doi:10.1063/1.3419070
|
||||
|
||||
@Article{Petersen10,
|
||||
author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and
|
||||
G. S. Grest and in 't Veld, P. J. and P. R. Schunk},
|
||||
title = {Mesoscale Hydrodynamics via Stochastic Rotation
|
||||
Dynamics: Comparison with {L}ennard-{J}ones Fluid},
|
||||
journal = {J.~Chem.\ Phys.},
|
||||
year = 2010,
|
||||
volume = 132,
|
||||
pages = 174106
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Using compute temp/deform with inconsistent fix deform remap option (src/compute_temp_deform.cpp:71)
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405)
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.9988171 0.50330564
|
||||
SRD temperature & lamda = 1 0.02
|
||||
SRD max distance & max velocity = 0.08 40
|
||||
SRD grid counts: 230 230 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.25040659 0.25040659 1
|
||||
SRD per actual grid cell = 0.45503978
|
||||
SRD viscosity = 0.92062623
|
||||
big/SRD mass density ratio = 12.298053
|
||||
WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 15.906001 29.105426
|
||||
ave/max big velocity = 0 0
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.3
|
||||
ghost atom cutoff = 3.3
|
||||
binsize = 1.65, bins = 35 35 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/atomonly/newton
|
||||
stencil: half/multi/2d
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.44 | 13.45 | 13.47 Mbytes
|
||||
Step c_tsmall f_2[9] c_1 TotEng v_pebig v_ebig Press
|
||||
0 1.6084386 0 0 0 0 0 0
|
||||
1000 1.4539924 1.2578325 0.0001679809 0.0010497614 0 0.053233399 0.69841607
|
||||
2000 1.3516746 1.1693535 0.00031932331 0.0021450754 0 0.10877677 0.058141137
|
||||
3000 1.3294093 1.1539986 0.00032558495 0.0022345521 0 0.11331414 0.085892255
|
||||
4000 1.3049311 1.1174444 0.00039637116 0.0026520968 0 0.13448783 0.10574422
|
||||
5000 1.2790124 1.1209176 0.0004519172 0.0032635257 0 0.16549339 0.59225702
|
||||
6000 1.2631214 1.0868777 0.00052274216 0.003527049 0 0.17885666 0.26093936
|
||||
7000 1.2520054 1.0780954 0.00051683183 0.0038111141 0 0.1932616 -0.0014733978
|
||||
8000 1.2412037 1.0587149 0.00056620143 0.0038329297 0 0.19436786 0.31576462
|
||||
9000 1.2242125 1.0699712 0.00065335672 0.0039948578 0 0.20257924 0.19755012
|
||||
10000 1.2155758 1.0279682 0.00059730828 0.004142635 0 0.21007302 0.30022953
|
||||
Loop time of 1.92412 on 4 procs for 10000 steps with 20284 atoms
|
||||
|
||||
Performance: 44903.607 tau/day, 5197.177 timesteps/s, 105.420 Matom-step/s
|
||||
97.6% 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.026855 | 0.027529 | 0.028377 | 0.4 | 1.43
|
||||
Neigh | 0.0073723 | 0.007433 | 0.0075693 | 0.1 | 0.39
|
||||
Comm | 0.062837 | 0.065574 | 0.066747 | 0.6 | 3.41
|
||||
Output | 0.00072894 | 0.00076558 | 0.00083361 | 0.0 | 0.04
|
||||
Modify | 1.7861 | 1.7926 | 1.8 | 0.4 | 93.16
|
||||
Other | | 0.03026 | | | 1.57
|
||||
|
||||
Nlocal: 5071 ave 5096 max 5051 min
|
||||
Histogram: 1 0 1 0 0 1 0 0 0 1
|
||||
Nghost: 44 ave 51 max 40 min
|
||||
Histogram: 2 0 0 1 0 0 0 0 0 1
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 0
|
||||
Ave neighs/atom = 0
|
||||
Neighbor list builds = 500
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
Changing box ...
|
||||
triclinic box = (-35.995947 -35.995947 -0.5) to (35.995947 35.995947 0.5) with tilt (0 0 0)
|
||||
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip #tstat yes
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.0002 units box remap v
|
||||
|
||||
run 30000
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405)
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.9988171 0.50330564
|
||||
SRD temperature & lamda = 1 0.02
|
||||
SRD max distance & max velocity = 0.08 40
|
||||
SRD grid counts: 288 288 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.24997185 0.24997185 1
|
||||
SRD per actual grid cell = 0.26976265
|
||||
SRD viscosity = 1.0312189
|
||||
big/SRD mass density ratio = 20.672578
|
||||
WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 12.826666 40
|
||||
ave/max big velocity = 0.53469722 1.7415554
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.3
|
||||
ghost atom cutoff = 3.3
|
||||
binsize = 1.65, bins = 44 44 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/atomonly/newton/tri
|
||||
stencil: half/multi/2d/tri
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 17.6 | 17.6 | 17.61 Mbytes
|
||||
Step c_tsmall f_2[9] c_1 TotEng v_pebig v_ebig Press
|
||||
10000 1.0416233 0 0.0005972922 0.0041426543 0 0.210074 0.016213064
|
||||
11000 1.0366852 1.0236717 0.00066926382 0.004404743 0 0.22336452 0.097686059
|
||||
12000 1.028695 1.0023004 0.00065323121 0.0043971164 0 0.22297777 0.30007875
|
||||
13000 1.0223214 1.0296267 0.00060201395 0.0041815724 0 0.21204754 0.17307062
|
||||
14000 1.0210601 1.0092227 0.00057020066 0.0041936718 0 0.2126611 0.13379405
|
||||
15000 1.0169223 1.003359 0.00060818329 0.0046120335 0 0.23387622 0.39144341
|
||||
16000 1.012222 0.99937463 0.00060471571 0.004533278 0 0.22988253 0.16026051
|
||||
17000 1.0087993 0.98937449 0.00061843646 0.0048888197 0 0.24791205 0.095507016
|
||||
18000 1.0030288 0.94092316 0.00054252694 0.0046740839 0 0.2370228 -0.070838649
|
||||
19000 1.0010739 0.99759814 0.00054041829 0.0045481798 0 0.2306382 0.1944996
|
||||
20000 1.004189 1.0157285 0.00053330893 0.0044999261 0 0.22819125 0.14452619
|
||||
21000 0.99601133 1.003771 0.00053282188 0.0048954851 0 0.24825005 0.20196263
|
||||
22000 0.99445408 1.0163465 0.00059954941 0.0051668276 0 0.26200983 0.21332194
|
||||
23000 0.99663947 0.94920707 0.00057729723 0.0051052499 0 0.25888722 0.19282224
|
||||
24000 0.99500015 1.0021742 0.00064312956 0.0053430656 0 0.27094686 0.18044164
|
||||
25000 0.99388189 0.98446723 0.00060150964 0.0054017824 0 0.27392438 0.18844037
|
||||
26000 0.99632932 0.94670024 0.00052479857 0.004905147 0 0.24874 0.17961314
|
||||
27000 0.99112962 1.0247118 0.00053159824 0.004752248 0 0.2409865 0.12037737
|
||||
28000 0.98887153 0.97734068 0.00052255365 0.0050199491 0 0.25456162 0.29110866
|
||||
29000 0.98938025 0.99467239 0.00053095044 0.0050303107 0 0.25508706 0.59776339
|
||||
30000 0.99081592 0.98822122 0.00056693985 0.0052452228 0 0.26598525 0.0150843
|
||||
31000 0.99050903 1.0184912 0.00056742049 0.0056515686 0 0.28659104 0.07877756
|
||||
32000 0.98929926 0.99257634 0.00058111732 0.005740055 0 0.29107819 0.19146041
|
||||
33000 0.98698723 0.94872564 0.00056547335 0.0057628447 0 0.29223385 0.076755599
|
||||
34000 0.98967998 0.98777081 0.00056045905 0.0055645603 0 0.28217885 0.095025284
|
||||
35000 0.98777734 0.95746323 0.00050104756 0.0055630681 -4.7847642e-05 0.28210318 0.25667997
|
||||
36000 0.98661597 0.98801246 0.00047074618 0.0054500805 -5.8956193e-05 0.27637358 0.18221607
|
||||
37000 0.98390111 0.9837894 0.00044581144 0.0054703357 -7.4197741e-05 0.27740072 0.11959303
|
||||
38000 0.98092646 1.0142057 0.0004945556 0.0056372628 -8.6736668e-05 0.2858656 0.017325263
|
||||
39000 0.98125957 0.94219822 0.00059691168 0.0060914156 -9.9726556e-05 0.30889569 0.0081217281
|
||||
40000 0.98362942 0.9649582 0.00062286697 0.0063736358 -0.00010700337 0.32320707 0.293121
|
||||
Loop time of 5.08621 on 4 procs for 30000 steps with 20284 atoms
|
||||
|
||||
Performance: 50961.296 tau/day, 5898.298 timesteps/s, 119.641 Matom-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 | 0.084321 | 0.084948 | 0.086233 | 0.3 | 1.67
|
||||
Neigh | 0.027521 | 0.029247 | 0.030632 | 0.7 | 0.58
|
||||
Comm | 0.19101 | 0.20262 | 0.2068 | 1.5 | 3.98
|
||||
Output | 0.0019581 | 0.0020369 | 0.0022544 | 0.3 | 0.04
|
||||
Modify | 4.681 | 4.6884 | 4.7051 | 0.4 | 92.18
|
||||
Other | | 0.07891 | | | 1.55
|
||||
|
||||
Nlocal: 5071 ave 5197 max 4951 min
|
||||
Histogram: 1 0 0 1 0 0 1 0 0 1
|
||||
Nghost: 44 ave 50 max 41 min
|
||||
Histogram: 2 0 0 1 0 0 0 0 0 1
|
||||
Neighs: 5.75 ave 12 max 0 min
|
||||
Histogram: 1 0 0 1 0 1 0 0 0 1
|
||||
|
||||
Total # of neighbors = 23
|
||||
Ave neighs/atom = 0.0011338986
|
||||
Neighbor list builds = 1500
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:07
|
||||
323
examples/ASPHERE/line/log.21Sep24.line.srd.g++.8
Normal file
323
examples/ASPHERE/line/log.21Sep24.line.srd.g++.8
Normal file
@ -0,0 +1,323 @@
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-296-g061c80104a-modified)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Aspherical shear demo - 2d line boxes, solvated by SRD particles
|
||||
|
||||
units lj
|
||||
atom_style line
|
||||
atom_modify first big
|
||||
dimension 2
|
||||
|
||||
read_data data.line.srd
|
||||
Reading data file ...
|
||||
orthogonal box = (-28.796757 -28.796757 -0.5) to (28.796757 28.796757 0.5)
|
||||
4 by 2 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
400 atoms
|
||||
400 lines
|
||||
read_data CPU = 0.002 seconds
|
||||
|
||||
# add small particles as hi density lattice
|
||||
|
||||
lattice sq 0.4
|
||||
Lattice spacing in x,y,z = 1.5811388 1.5811388 1.5811388
|
||||
region plane block INF INF INF INF -0.001 0.001
|
||||
lattice sq 10.0
|
||||
Lattice spacing in x,y,z = 0.31622777 0.31622777 0.31622777
|
||||
create_atoms 2 region plane
|
||||
Created 33489 atoms
|
||||
using lattice units in orthogonal box = (-28.796757 -28.796757 -0.5) to (28.796757 28.796757 0.5)
|
||||
create_atoms CPU = 0.001 seconds
|
||||
|
||||
group big type 1
|
||||
400 atoms in group big
|
||||
group small type 2
|
||||
33489 atoms in group small
|
||||
set group small mass 0.01
|
||||
Setting atom values ...
|
||||
33489 settings made for mass
|
||||
|
||||
# delete overlaps
|
||||
# must set 1-2 cutoff to non-zero value
|
||||
|
||||
pair_style lj/cut 1.5
|
||||
pair_coeff 1 1 1.0 1.0
|
||||
pair_coeff 2 2 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 1.0
|
||||
|
||||
delete_atoms overlap 1.5 small big
|
||||
System init for delete_atoms ...
|
||||
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 = 1.8
|
||||
ghost atom cutoff = 1.8
|
||||
binsize = 0.9, bins = 64 64 2
|
||||
2 neighbor lists, perpetual/occasional/extra = 1 1 0
|
||||
(1) command delete_atoms, occasional
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/2d
|
||||
bin: standard
|
||||
(2) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/2d
|
||||
bin: standard
|
||||
WARNING: Delete_atoms cutoff > minimum neighbor cutoff (src/delete_atoms.cpp:313)
|
||||
Deleted 13605 atoms, new total = 20284
|
||||
|
||||
# SRD run
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.8 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra big include big
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
neigh_modify include big
|
||||
|
||||
# no pairwise interactions with small particles
|
||||
|
||||
pair_style line/lj 2.5
|
||||
pair_coeff 1 1 1.0 1.0 1.0 1.0 2.5
|
||||
pair_coeff 2 2 0.0 0.0 0.0 1.0 0.0
|
||||
pair_coeff 1 2 1.0 0.2 1.0 0.2 2.5
|
||||
|
||||
# use fix SRD to push small particles out from inside big ones
|
||||
# if comment out, big particles won't see SRD particles
|
||||
|
||||
timestep 0.0002
|
||||
|
||||
fix 1 big rigid molecule
|
||||
100 rigid bodies with 400 atoms
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip
|
||||
|
||||
fix 3 all deform 1 x scale 1.25 y scale 1.25
|
||||
fix 4 all enforce2d
|
||||
|
||||
# diagnostics
|
||||
|
||||
compute tsmall small temp/deform
|
||||
compute tbig big temp
|
||||
variable pebig equal pe*atoms/count(big)
|
||||
variable ebig equal etotal*atoms/count(big)
|
||||
|
||||
compute_modify tbig extra/dof -350
|
||||
|
||||
compute 1 big erotate/asphere
|
||||
compute 2 all ke
|
||||
compute 3 all pe
|
||||
variable toteng equal (c_1+c_2+c_3)/atoms
|
||||
|
||||
thermo 1000
|
||||
thermo_style custom step c_tsmall f_2[9] c_1 etotal v_pebig v_ebig press
|
||||
thermo_modify temp tbig
|
||||
WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:533)
|
||||
|
||||
compute 10 big property/atom end1x end1y end2x end2y
|
||||
|
||||
#dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump1.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
run 10000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- Type Label Framework: https://doi.org/10.1021/acs.jpcb.3c08419
|
||||
|
||||
@Article{Gissinger24,
|
||||
author = {Jacob R. Gissinger, Ilia Nikiforov, Yaser Afshar, Brendon Waters, Moon-ki Choi, Daniel S. Karls, Alexander Stukowski, Wonpil Im, Hendrik Heinz, Axel Kohlmeyer, and Ellad B. Tadmor},
|
||||
title = {Type Label Framework for Bonded Force Fields in LAMMPS},
|
||||
journal = {J. Phys. Chem. B},
|
||||
year = 2024,
|
||||
volume = 128,
|
||||
number = 13,
|
||||
pages = {3282–-3297}
|
||||
}
|
||||
|
||||
- neighbor multi command: doi:10.1016/j.cpc.2008.03.005, doi:10.1007/s40571-020-00361-2
|
||||
|
||||
@Article{Intveld08,
|
||||
author = {in 't Veld, P. J. and S. J.~Plimpton and G. S. Grest},
|
||||
title = {Accurate and Efficient Methods for Modeling Colloidal
|
||||
Mixtures in an Explicit Solvent using Molecular Dynamics},
|
||||
journal = {Comput.\ Phys.\ Commut.},
|
||||
year = 2008,
|
||||
volume = 179,
|
||||
pages = {320--329}
|
||||
}
|
||||
|
||||
@article{Shire2020,
|
||||
author = {Shire, Tom and Hanley, Kevin J. and Stratford, Kevin},
|
||||
title = {{DEM} Simulations of Polydisperse Media: Efficient Contact
|
||||
Detection Applied to Investigate the Quasi-Static Limit},
|
||||
journal = {Computational Particle Mechanics},
|
||||
year = {2020}
|
||||
@article{Monti2022,
|
||||
author = {Monti, Joseph M. and Clemmer, Joel T. and Srivastava,
|
||||
Ishan and Silbert, Leonardo E. and Grest, Gary S.
|
||||
and Lechman, Jeremy B.},
|
||||
title = {Large-scale frictionless jamming with power-law particle
|
||||
size distributions},
|
||||
journal = {Phys. Rev. E},
|
||||
volume = {106}
|
||||
issue = {3}
|
||||
year = {2022}
|
||||
}
|
||||
|
||||
- fix srd command: doi:10.1063/1.3419070
|
||||
|
||||
@Article{Petersen10,
|
||||
author = {M. K. Petersen and J. B. Lechman and S. J. Plimpton and
|
||||
G. S. Grest and in 't Veld, P. J. and P. R. Schunk},
|
||||
title = {Mesoscale Hydrodynamics via Stochastic Rotation
|
||||
Dynamics: Comparison with {L}ennard-{J}ones Fluid},
|
||||
journal = {J.~Chem.\ Phys.},
|
||||
year = 2010,
|
||||
volume = 132,
|
||||
pages = 174106
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Using compute temp/deform with inconsistent fix deform remap option (src/compute_temp_deform.cpp:71)
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405)
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.9988171 0.50330564
|
||||
SRD temperature & lamda = 1 0.04
|
||||
SRD max distance & max velocity = 0.16 40
|
||||
SRD grid counts: 230 230 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.25040659 0.25040659 1
|
||||
SRD per actual grid cell = 0.45503978
|
||||
SRD viscosity = 1.0732692
|
||||
big/SRD mass density ratio = 12.298053
|
||||
WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830)
|
||||
# of rescaled SRD velocities = 0
|
||||
ave/max small velocity = 15.906001 29.105426
|
||||
ave/max big velocity = 0 0
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.3
|
||||
ghost atom cutoff = 3.3
|
||||
binsize = 1.65, bins = 35 35 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/atomonly/newton
|
||||
stencil: half/multi/2d
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.752 | 9.762 | 9.781 Mbytes
|
||||
Step c_tsmall f_2[9] c_1 TotEng v_pebig v_ebig Press
|
||||
0 1.4809886 0 0 0 0 0 0
|
||||
1000 1.2265081 1.1522909 0.00027866069 0.0022427232 0 0.1137285 0.58262976
|
||||
2000 1.1757141 1.1251323 0.00040597152 0.003287261 0 0.16669701 0.27109853
|
||||
3000 1.126304 1.0646585 0.00050542958 0.0040748897 0 0.20663766 0.36959653
|
||||
4000 1.1140297 1.0761435 0.00060430927 0.0052863645 0 0.26807154 0.35099205
|
||||
5000 1.0823307 1.0256814 0.00066557681 0.0051213284 0 0.25970256 0.28491631
|
||||
6000 1.0656188 1.0387091 0.00066454105 0.005213537 0 0.26437846 0.2150581
|
||||
7000 1.0600108 1.0099931 0.0007238719 0.005470459 0 0.27740698 0.21846568
|
||||
8000 1.0464374 1.0049819 0.00061068366 0.0053702582 0 0.27232579 0.1326171
|
||||
9000 1.0381097 1.0126049 0.00057318728 0.0055976321 0 0.28385592 0.16797796
|
||||
10000 1.0312982 1.0018962 0.00050597007 0.0051153126 0 0.2593975 0.15281043
|
||||
Loop time of 1.2997 on 8 procs for 10000 steps with 20284 atoms
|
||||
|
||||
Performance: 132953.355 tau/day, 7694.060 timesteps/s, 156.066 Matom-step/s
|
||||
96.7% CPU use with 8 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.01406 | 0.014495 | 0.01532 | 0.3 | 1.12
|
||||
Neigh | 0.0051916 | 0.0053424 | 0.0054386 | 0.1 | 0.41
|
||||
Comm | 0.062053 | 0.065305 | 0.069014 | 0.9 | 5.02
|
||||
Output | 0.00062289 | 0.00065254 | 0.00077243 | 0.0 | 0.05
|
||||
Modify | 1.169 | 1.178 | 1.1905 | 0.6 | 90.64
|
||||
Other | | 0.03589 | | | 2.76
|
||||
|
||||
Nlocal: 2535.5 ave 2637 max 2476 min
|
||||
Histogram: 1 3 1 1 0 0 0 0 1 1
|
||||
Nghost: 31.125 ave 42 max 25 min
|
||||
Histogram: 3 0 1 2 0 0 0 0 1 1
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 8 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 0
|
||||
Ave neighs/atom = 0
|
||||
Neighbor list builds = 500
|
||||
Dangerous builds = 0
|
||||
|
||||
#undump 1
|
||||
#undump 2
|
||||
unfix 3
|
||||
|
||||
change_box all triclinic
|
||||
Changing box ...
|
||||
triclinic box = (-35.995947 -35.995947 -0.5) to (35.995947 35.995947 0.5) with tilt (0 0 0)
|
||||
|
||||
fix 2 small srd 20 big 1.0 0.25 49894 search 0.2 cubic warn 0.0001 shift yes 49829 overlap yes collision noslip #tstat yes
|
||||
|
||||
#dump 1 all custom 500 dump2.atom.srd id type x y z ix iy iz
|
||||
#dump 2 all custom 500 dump2.line.srd id type # c_10[1] c_10[2] c_10[3] c_10[4]
|
||||
|
||||
fix 3 all deform 1 xy erate 0.0002 units box remap v
|
||||
|
||||
run 40000
|
||||
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
WARNING: Using fix srd with box deformation but no SRD thermostat (src/SRD/fix_srd.cpp:405)
|
||||
SRD info:
|
||||
SRD/big particles = 19884 400
|
||||
big particle diameter max/min = 1.9988171 0.50330564
|
||||
SRD temperature & lamda = 1 0.04
|
||||
SRD max distance & max velocity = 0.16 40
|
||||
SRD grid counts: 288 288 1
|
||||
SRD grid size: request, actual (xyz) = 0.25, 0.24997185 0.24997185 1
|
||||
SRD per actual grid cell = 0.26976265
|
||||
SRD viscosity = 1.5799049
|
||||
big/SRD mass density ratio = 20.672578
|
||||
WARNING: SRD bin size for fix srd differs from user request (src/SRD/fix_srd.cpp:2809)
|
||||
WARNING: Fix srd grid size > 1/4 of big particle diameter (src/SRD/fix_srd.cpp:2830)
|
||||
# of rescaled SRD velocities = 1
|
||||
ave/max small velocity = 12.481632 40
|
||||
ave/max big velocity = 0.58815233 1.5489134
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 3.3
|
||||
ghost atom cutoff = 3.3
|
||||
binsize = 1.65, bins = 44 44 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair line/lj, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/multi/atomonly/newton/tri
|
||||
stencil: half/multi/2d/tri
|
||||
bin: multi
|
||||
Per MPI rank memory allocation (min/avg/max) = 11.95 | 11.95 | 11.95 Mbytes
|
||||
Step c_tsmall f_2[9] c_1 TotEng v_pebig v_ebig Press
|
||||
10000 0.98889306 0 0.00050595647 0.0051153289 0 0.25939833 0.020019811
|
||||
11000 0.98995417 0.99721412 0.0005166709 0.0054320552 0 0.27545952 0.03376188
|
||||
12000 0.99401168 0.95502319 0.00053659416 0.0054974426 0 0.27877531 0.056856034
|
||||
13000 0.98790692 0.96488357 0.00061076364 0.0053196554 0 0.26975972 0.2677228
|
||||
14000 0.98939233 0.98809694 0.00052317779 0.0050536922 0 0.25627273 0.20381427
|
||||
15000 0.99046365 0.97048828 0.00056914402 0.0053274908 0 0.27015706 0.082163088
|
||||
16000 0.99743447 1.0111983 0.00053706165 0.0048068384 0 0.24375478 0.06429569
|
||||
17000 0.99622359 1.0124982 0.0005905197 0.0055966416 -7.4541903e-05 0.2838057 0.25418037
|
||||
18000 0.99283929 0.99581721 0.00061730878 0.0059098964 -0.00014754106 0.29969084 0.12701702
|
||||
19000 0.99175517 1.0115581 0.0005128714 0.0059214809 -0.00046203987 0.30027829 0.2640506
|
||||
20000 0.98895811 0.97731528 0.00052294314 0.0055670021 -0.0016029702 0.28230268 0.26239209
|
||||
21000 0.98904093 0.98120258 0.00054169978 0.0052762731 -0.0026834879 0.26755981 0.15432481
|
||||
22000 0.98773149 0.99217218 0.00056091602 0.0052754729 -0.0044093345 0.26751923 0.2208051
|
||||
23000 0.98802862 0.96564549 0.00062226338 0.0053263454 -0.008790914 0.27009898 0.18058977
|
||||
24000 0.98754002 1.024015 0.00057178953 0.0054083382 -0.0094859317 0.27425683 0.01598147
|
||||
25000 0.98656341 0.94647246 0.00066215791 0.0053555849 -0.014877058 0.27158171 0.28794628
|
||||
26000 0.98750471 1.0077626 0.00058955769 0.0057081639 -0.013151869 0.28946099 0.20814911
|
||||
27
|
||||
@ -81,6 +81,7 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib)
|
||||
ADDSYM(python_finalize);
|
||||
|
||||
ADDSYM(error);
|
||||
ADDSYM(expand);
|
||||
|
||||
ADDSYM(file);
|
||||
ADDSYM(command);
|
||||
|
||||
@ -126,6 +126,7 @@ struct _liblammpsplugin {
|
||||
void (*python_finalize)();
|
||||
|
||||
void (*error)(void *, int, const char *);
|
||||
char *(*expand)(void *, const char *);
|
||||
|
||||
void (*file)(void *, const char *);
|
||||
char *(*command)(void *, const char *);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-182-g93942f2013-modified)
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-372-g51d104975a)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Test of MEAM potential for HGa
|
||||
@ -67,7 +67,7 @@ Created 1 atoms
|
||||
variable teng equal "c_eatoms"
|
||||
compute pot_energy all pe/atom
|
||||
compute stress all stress/atom NULL
|
||||
# dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
run 1
|
||||
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
@ -89,22 +89,22 @@ Neighbor list info ...
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.587 | 8.587 | 8.587 Mbytes
|
||||
Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume c_eatoms
|
||||
0 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
1 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
Loop time of 4.4446e-05 on 1 procs for 1 steps with 3 atoms
|
||||
0 0 15.438614 491542.52 839006.02 635621.55 0 80225.587 0 0 8 8 8 512 15.438614
|
||||
1 0 15.438614 491542.52 839006.02 635621.55 0 80225.587 0 0 8 8 8 512 15.438614
|
||||
Loop time of 0.000144827 on 1 procs for 1 steps with 3 atoms
|
||||
|
||||
Performance: 1943.932 ns/day, 0.012 hours/ns, 22499.213 timesteps/s, 67.498 katom-step/s
|
||||
31.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 596.574 ns/day, 0.040 hours/ns, 6904.790 timesteps/s, 20.714 katom-step/s
|
||||
21.4% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 2.9908e-05 | 2.9908e-05 | 2.9908e-05 | 0.0 | 67.29
|
||||
Pair | 9.2136e-05 | 9.2136e-05 | 9.2136e-05 | 0.0 | 63.62
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 1.033e-06 | 1.033e-06 | 1.033e-06 | 0.0 | 2.32
|
||||
Output | 9.347e-06 | 9.347e-06 | 9.347e-06 | 0.0 | 21.03
|
||||
Modify | 2.02e-07 | 2.02e-07 | 2.02e-07 | 0.0 | 0.45
|
||||
Other | | 3.956e-06 | | | 8.90
|
||||
Comm | 4.389e-06 | 4.389e-06 | 4.389e-06 | 0.0 | 3.03
|
||||
Output | 3.9556e-05 | 3.9556e-05 | 3.9556e-05 | 0.0 | 27.31
|
||||
Modify | 9.92e-07 | 9.92e-07 | 9.92e-07 | 0.0 | 0.68
|
||||
Other | | 7.754e-06 | | | 5.35
|
||||
|
||||
Nlocal: 3 ave 3 max 3 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
@ -1,4 +1,4 @@
|
||||
LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-182-g93942f2013-modified)
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-372-g51d104975a)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Test of MEAM potential for HGa
|
||||
@ -67,7 +67,7 @@ Created 1 atoms
|
||||
variable teng equal "c_eatoms"
|
||||
compute pot_energy all pe/atom
|
||||
compute stress all stress/atom NULL
|
||||
# dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
dump 1 all custom 1 dump.msmeam id x y z fx fy fz c_pot_energy c_stress[1] c_stress[2] c_stress[3] c_stress[4] c_stress[5] c_stress[6]
|
||||
run 1
|
||||
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
@ -89,22 +89,22 @@ Neighbor list info ...
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.965 | 8.123 | 8.594 Mbytes
|
||||
Step Temp TotEng Press Pxx Pyy Pzz Pxy Pxz Pyz Lx Ly Lz Volume c_eatoms
|
||||
0 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
1 0 15.433079 491354.7 838670.96 635393.15 0 80195.797 0 0 8 8 8 512 15.433079
|
||||
Loop time of 8.70645e-05 on 4 procs for 1 steps with 3 atoms
|
||||
0 0 15.438614 491542.52 839006.02 635621.55 0 80225.587 0 0 8 8 8 512 15.438614
|
||||
1 0 15.438614 491542.52 839006.02 635621.55 0 80225.587 0 0 8 8 8 512 15.438614
|
||||
Loop time of 0.000328503 on 4 procs for 1 steps with 3 atoms
|
||||
|
||||
Performance: 992.368 ns/day, 0.024 hours/ns, 11485.738 timesteps/s, 34.457 katom-step/s
|
||||
29.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 263.011 ns/day, 0.091 hours/ns, 3044.110 timesteps/s, 9.132 katom-step/s
|
||||
75.3% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.3957e-05 | 4.67e-05 | 5.1056e-05 | 0.0 | 53.64
|
||||
Pair | 0.0001419 | 0.0001471 | 0.00015891 | 0.0 | 44.78
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 1.105e-05 | 1.3822e-05 | 1.7033e-05 | 0.0 | 15.88
|
||||
Output | 1.5765e-05 | 1.9045e-05 | 2.5216e-05 | 0.0 | 21.87
|
||||
Modify | 2.58e-07 | 3.465e-07 | 3.81e-07 | 0.0 | 0.40
|
||||
Other | | 7.151e-06 | | | 8.21
|
||||
Comm | 2.2092e-05 | 2.8424e-05 | 3.667e-05 | 0.0 | 8.65
|
||||
Output | 8.6275e-05 | 0.00010558 | 0.0001422 | 0.0 | 32.14
|
||||
Modify | 1.093e-06 | 2.4148e-06 | 5.651e-06 | 0.0 | 0.74
|
||||
Other | | 4.498e-05 | | | 13.69
|
||||
|
||||
Nlocal: 0.75 ave 3 max 0 min
|
||||
Histogram: 3 0 0 0 0 0 0 0 0 1
|
||||
@ -1,37 +1,37 @@
|
||||
# 2d NEMD simulation
|
||||
|
||||
units lj
|
||||
atom_style atomic
|
||||
dimension 2
|
||||
units lj
|
||||
atom_style atomic
|
||||
dimension 2
|
||||
|
||||
lattice sq2 0.8442
|
||||
region box prism 0 10 0 8 -0.5 0.5 0 0 0
|
||||
create_box 2 box
|
||||
create_atoms 1 box
|
||||
mass * 1.0
|
||||
lattice sq2 0.8442
|
||||
region box prism 0 10 0 8 -0.5 0.5 0 0 0
|
||||
create_box 2 box
|
||||
create_atoms 1 box
|
||||
mass * 1.0
|
||||
|
||||
velocity all create 1.44 87287 loop geom
|
||||
velocity all create 1.44 87287 loop geom
|
||||
|
||||
region slice block 4 6 INF INF INF INF
|
||||
set region slice type 2
|
||||
region slice block 4 6 INF INF INF INF
|
||||
set region slice type 2
|
||||
|
||||
pair_style lj/cut 2.5
|
||||
pair_coeff * * 1.0 1.0 1.0
|
||||
pair_style lj/cut 4.0
|
||||
pair_coeff * * 1.0 1.0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1
|
||||
|
||||
fix 1 all nvt/sllod temp 1.0 1.0 1.0 tchain 1
|
||||
fix 2 all deform 1 xy erate 0.01 remap v
|
||||
fix 1 all nvt/sllod temp 1.0 1.0 1.0 tchain 1
|
||||
fix 2 all deform 1 xy erate 0.01 remap v
|
||||
|
||||
#dump 1 all custom 5000 dump.nemd id type x y z
|
||||
#dump 1 all custom 500 dump.nemd id type x y z
|
||||
|
||||
#dump 2 all image 1000 image.*.jpg type type adiam 1.2
|
||||
#dump_modify 2 pad 5
|
||||
#dump 2 all image 100 image.*.jpg type type adiam 1.2
|
||||
#dump_modify 2 pad 5
|
||||
|
||||
#dump 3 all movie 1000 movie.mpg type type adiam 1.2
|
||||
#dump_modify 3 pad 5
|
||||
#dump 3 all movie 100 movie.mpg type type adiam 1.2
|
||||
#dump_modify 3 pad 5
|
||||
|
||||
thermo 1000
|
||||
thermo 50
|
||||
|
||||
run 50000
|
||||
run 1000
|
||||
|
||||
@ -1,137 +0,0 @@
|
||||
LAMMPS (27 Nov 2018)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# 2d NEMD simulation
|
||||
|
||||
units lj
|
||||
atom_style atomic
|
||||
dimension 2
|
||||
|
||||
lattice sq2 0.8442
|
||||
Lattice spacing in x,y,z = 1.53919 1.53919 1.53919
|
||||
region box prism 0 10 0 8 -0.5 0.5 0 0 0
|
||||
create_box 2 box
|
||||
Created triclinic box = (0 0 -0.769595) to (15.3919 12.3135 0.769595) with tilt (0 0 0)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 box
|
||||
Created 160 atoms
|
||||
Time spent = 0.000332355 secs
|
||||
mass * 1.0
|
||||
|
||||
velocity all create 1.44 87287 loop geom
|
||||
|
||||
region slice block 4 6 INF INF INF INF
|
||||
set region slice type 2
|
||||
40 settings made for type
|
||||
|
||||
pair_style lj/cut 2.5
|
||||
pair_coeff * * 1.0 1.0 1.0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1
|
||||
|
||||
fix 1 all nvt/sllod temp 1.0 1.0 1.0 tchain 1
|
||||
fix 2 all deform 1 xy erate 0.01 remap v
|
||||
|
||||
#dump 1 all custom 5000 dump.nemd id type x y z
|
||||
|
||||
#dump 2 all image 1000 image.*.jpg type type adiam 1.2
|
||||
#dump_modify 2 pad 5
|
||||
|
||||
#dump 3 all movie 1000 movie.mpg type type adiam 1.2
|
||||
#dump_modify 3 pad 5
|
||||
|
||||
thermo 1000
|
||||
|
||||
run 50000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 1.3
|
||||
ghost atom cutoff = 1.3
|
||||
binsize = 0.65, bins = 24 19 3
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton/tri
|
||||
stencil: half/bin/2d/newton/tri
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.065 | 3.065 | 3.065 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press Volume
|
||||
0 1.44 0 0 1.431 1.2080502 189.52855
|
||||
1000 1.1326992 0.25863754 0 1.3842573 6.0588079 189.52855
|
||||
2000 0.99104643 0.37634349 0 1.3611959 7.8993387 189.52855
|
||||
3000 1.0749743 0.21908728 0 1.2873429 6.2659517 189.52855
|
||||
4000 1.0986742 0.27147022 0 1.3632777 5.8778262 189.52855
|
||||
5000 1.071838 0.23413372 0 1.2992728 5.9120887 189.52855
|
||||
6000 1.0013194 0.26923671 0 1.2642979 6.2802759 189.52855
|
||||
7000 0.94110685 0.3224557 0 1.2576806 6.1864166 189.52855
|
||||
8000 0.97391513 0.28793383 0 1.255762 6.5071893 189.52855
|
||||
9000 0.95346063 0.31050593 0 1.2580074 6.3321512 189.52855
|
||||
10000 0.96236447 0.26298203 0 1.2193317 6.4083918 189.52855
|
||||
11000 0.9511149 0.27571527 0 1.2208857 6.0949768 189.52855
|
||||
12000 1.0186935 0.18134918 0 1.1936758 5.1269128 189.52855
|
||||
13000 0.96350682 0.23171507 0 1.1892 5.7367267 189.52855
|
||||
14000 0.94740402 0.27357945 0 1.2150622 6.0156532 189.52855
|
||||
15000 0.87951545 0.27745111 0 1.1514696 6.297405 189.52855
|
||||
16000 0.93216196 0.27020559 0 1.1965415 6.6188833 189.52855
|
||||
17000 0.94109936 0.24756193 0 1.1827794 5.8993088 189.52855
|
||||
18000 0.97325239 0.27996398 0 1.2471335 6.1486561 189.52855
|
||||
19000 1.0494686 0.27132686 0 1.3142363 6.6757065 189.52855
|
||||
20000 1.0391862 0.25195457 0 1.2846459 6.143235 189.52855
|
||||
21000 0.96407137 0.27359166 0 1.2316376 5.9577116 189.52855
|
||||
22000 0.97954534 0.31920255 0 1.2926257 6.5320163 189.52855
|
||||
23000 0.97585473 0.24154424 0 1.2112999 6.0839179 189.52855
|
||||
24000 1.0522109 0.1646952 0 1.2103298 5.0388687 189.52855
|
||||
25000 0.93707172 0.25655806 0 1.1877731 5.819887 189.52855
|
||||
26000 0.89798775 0.26629627 0 1.1586716 6.0393558 189.52855
|
||||
27000 0.93259926 0.24542428 0 1.1721948 5.3560986 189.52855
|
||||
28000 0.8428223 0.20784302 0 1.0453977 4.956911 189.52855
|
||||
29000 0.81653505 0.21924932 0 1.030681 5.271501 189.52855
|
||||
30000 0.90157811 0.15070734 0 1.0466506 4.476142 189.52855
|
||||
31000 0.86580039 0.21115151 0 1.0715407 5.0056915 189.52855
|
||||
32000 0.89768096 0.28377249 0 1.1758429 5.8449711 189.52855
|
||||
33000 1.0504011 0.29009694 0 1.333933 6.1319155 189.52855
|
||||
34000 1.2009765 0.19137934 0 1.3848498 4.9643885 189.52855
|
||||
35000 1.208705 0.27071222 0 1.4718628 6.2162389 189.52855
|
||||
36000 1.2211309 0.28389521 0 1.497394 6.5090715 189.52855
|
||||
37000 1.1384381 0.42795547 0 1.5592783 8.5129272 189.52855
|
||||
38000 1.2198334 0.34335732 0 1.5555668 7.2940883 189.52855
|
||||
39000 1.1562045 0.35783089 0 1.5068091 7.340999 189.52855
|
||||
40000 1.2145924 0.28410558 0 1.4911068 6.234986 189.52855
|
||||
41000 1.1240878 0.34663237 0 1.4636946 7.1720193 189.52855
|
||||
42000 1.2491422 0.26815889 0 1.509494 6.1390803 189.52855
|
||||
43000 1.1387564 0.33755832 0 1.4691975 7.0577597 189.52855
|
||||
44000 1.0031598 0.4081807 0 1.4050708 8.2732113 189.52855
|
||||
45000 1.0166213 0.29131017 0 1.3015776 6.1907807 189.52855
|
||||
46000 0.96251302 0.31483519 0 1.2713325 6.6987235 189.52855
|
||||
47000 0.89809294 0.30909884 0 1.2015787 6.3997583 189.52855
|
||||
48000 0.86736217 0.31917648 0 1.1811176 7.1584774 189.52855
|
||||
49000 0.91979053 0.21099403 0 1.1250359 5.4968259 189.52855
|
||||
50000 0.87079959 0.24059333 0 1.1059504 5.6039305 189.52855
|
||||
Loop time of 1.54353 on 1 procs for 50000 steps with 160 atoms
|
||||
|
||||
Performance: 13993916.675 tau/day, 32393.326 timesteps/s
|
||||
99.7% 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.20172 | 0.20172 | 0.20172 | 0.0 | 13.07
|
||||
Neigh | 0.16634 | 0.16634 | 0.16634 | 0.0 | 10.78
|
||||
Comm | 0.068928 | 0.068928 | 0.068928 | 0.0 | 4.47
|
||||
Output | 0.00059891 | 0.00059891 | 0.00059891 | 0.0 | 0.04
|
||||
Modify | 1.0123 | 1.0123 | 1.0123 | 0.0 | 65.59
|
||||
Other | | 0.09361 | | | 6.06
|
||||
|
||||
Nlocal: 160 ave 160 max 160 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 73 ave 73 max 73 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 353 ave 353 max 353 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 353
|
||||
Ave neighs/atom = 2.20625
|
||||
Neighbor list builds = 5273
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:01
|
||||
@ -1,137 +0,0 @@
|
||||
LAMMPS (27 Nov 2018)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# 2d NEMD simulation
|
||||
|
||||
units lj
|
||||
atom_style atomic
|
||||
dimension 2
|
||||
|
||||
lattice sq2 0.8442
|
||||
Lattice spacing in x,y,z = 1.53919 1.53919 1.53919
|
||||
region box prism 0 10 0 8 -0.5 0.5 0 0 0
|
||||
create_box 2 box
|
||||
Created triclinic box = (0 0 -0.769595) to (15.3919 12.3135 0.769595) with tilt (0 0 0)
|
||||
2 by 2 by 1 MPI processor grid
|
||||
create_atoms 1 box
|
||||
Created 160 atoms
|
||||
Time spent = 0.000308275 secs
|
||||
mass * 1.0
|
||||
|
||||
velocity all create 1.44 87287 loop geom
|
||||
|
||||
region slice block 4 6 INF INF INF INF
|
||||
set region slice type 2
|
||||
40 settings made for type
|
||||
|
||||
pair_style lj/cut 2.5
|
||||
pair_coeff * * 1.0 1.0 1.0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1
|
||||
|
||||
fix 1 all nvt/sllod temp 1.0 1.0 1.0 tchain 1
|
||||
fix 2 all deform 1 xy erate 0.01 remap v
|
||||
|
||||
#dump 1 all custom 5000 dump.nemd id type x y z
|
||||
|
||||
#dump 2 all image 1000 image.*.jpg type type adiam 1.2
|
||||
#dump_modify 2 pad 5
|
||||
|
||||
#dump 3 all movie 1000 movie.mpg type type adiam 1.2
|
||||
#dump_modify 3 pad 5
|
||||
|
||||
thermo 1000
|
||||
|
||||
run 50000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 1.3
|
||||
ghost atom cutoff = 1.3
|
||||
binsize = 0.65, bins = 24 19 3
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton/tri
|
||||
stencil: half/bin/2d/newton/tri
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.062 | 3.062 | 3.062 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press Volume
|
||||
0 1.44 0 0 1.431 1.2080502 189.52855
|
||||
1000 1.1682693 0.24486562 0 1.4058332 5.8092954 189.52855
|
||||
2000 1.0928734 0.27609364 0 1.3621366 6.2237017 189.52855
|
||||
3000 1.09088 0.24816112 0 1.3322231 5.7001547 189.52855
|
||||
4000 1.0110684 0.29868377 0 1.303433 7.3312319 189.52855
|
||||
5000 0.91033678 0.28330698 0 1.1879542 6.1840352 189.52855
|
||||
6000 0.93416074 0.22661127 0 1.1549335 5.3619735 189.52855
|
||||
7000 0.93305734 0.19203739 0 1.1192631 5.2497547 189.52855
|
||||
8000 0.88944438 0.19421381 0 1.0780992 4.9733446 189.52855
|
||||
9000 0.86949257 0.21207681 0 1.0761351 5.4687076 189.52855
|
||||
10000 0.80088203 0.24071142 0 1.0365879 5.334545 189.52855
|
||||
11000 0.88899727 0.19972767 0 1.0831687 4.8832207 189.52855
|
||||
12000 0.93045817 0.17883252 0 1.1034753 4.9081709 189.52855
|
||||
13000 0.9724196 0.19089684 0 1.1572388 5.3460903 189.52855
|
||||
14000 0.93902186 0.25513773 0 1.1882907 6.3338337 189.52855
|
||||
15000 0.91879903 0.31605547 0 1.229112 6.2085671 189.52855
|
||||
16000 0.9860058 0.26863362 0 1.2484769 6.514688 189.52855
|
||||
17000 1.0354756 0.23445357 0 1.2634574 6.1519296 189.52855
|
||||
18000 1.0244774 0.27511827 0 1.2931927 6.2230002 189.52855
|
||||
19000 1.1581216 0.21558936 0 1.3664727 5.5458237 189.52855
|
||||
20000 1.0552168 0.29344488 0 1.3420666 6.4880315 189.52855
|
||||
21000 0.97925435 0.31583414 0 1.2889681 6.7584093 189.52855
|
||||
22000 1.0112494 0.26246834 0 1.2673974 5.4112008 189.52855
|
||||
23000 1.0463332 0.26049752 0 1.3002911 6.1359606 189.52855
|
||||
24000 1.1130319 0.19848564 0 1.3045611 5.7088487 189.52855
|
||||
25000 1.0355662 0.28048951 0 1.3095834 6.4596476 189.52855
|
||||
26000 1.0823932 0.21784218 0 1.2934704 5.106334 189.52855
|
||||
27000 0.99719525 0.32679678 0 1.3177596 6.7399277 189.52855
|
||||
28000 1.0665868 0.25002709 0 1.3099477 6.2732557 189.52855
|
||||
29000 1.0312798 0.30650087 0 1.3313351 7.0581024 189.52855
|
||||
30000 1.0388277 0.29812912 0 1.3304641 6.2533028 189.52855
|
||||
31000 1.0461658 0.21344416 0 1.2530714 5.3631154 189.52855
|
||||
32000 1.0233681 0.27545017 0 1.2924222 5.9612896 189.52855
|
||||
33000 1.1353086 0.20278244 0 1.3309953 5.7619128 189.52855
|
||||
34000 1.0374791 0.29661216 0 1.327607 6.5124409 189.52855
|
||||
35000 1.0752783 0.21684443 0 1.2854022 5.4759171 189.52855
|
||||
36000 1.0383445 0.27068641 0 1.3025412 6.8367218 189.52855
|
||||
37000 0.97341144 0.24034988 0 1.2076775 6.1335996 189.52855
|
||||
38000 0.9285918 0.2737544 0 1.1965425 5.8750327 189.52855
|
||||
39000 0.84869423 0.30079207 0 1.144182 6.8909326 189.52855
|
||||
40000 0.88237131 0.26049171 0 1.1373482 6.3932981 189.52855
|
||||
41000 0.90368591 0.21064132 0 1.1086792 5.5627232 189.52855
|
||||
42000 0.93436749 0.20367569 0 1.1322034 5.1420052 189.52855
|
||||
43000 0.91378588 0.26155533 0 1.16963 6.366756 189.52855
|
||||
44000 0.91673608 0.25967314 0 1.1706796 6.0846334 189.52855
|
||||
45000 1.0233334 0.25463562 0 1.2715732 6.0924255 189.52855
|
||||
46000 0.96184729 0.35422095 0 1.3100567 7.0249175 189.52855
|
||||
47000 1.134079 0.26196034 0 1.3889514 6.3476756 189.52855
|
||||
48000 1.0552136 0.303812 0 1.3524305 6.6968927 189.52855
|
||||
49000 1.1282184 0.2100955 0 1.3312626 5.8658659 189.52855
|
||||
50000 1.0493816 0.31540438 0 1.3582274 6.6348173 189.52855
|
||||
Loop time of 1.09903 on 4 procs for 50000 steps with 160 atoms
|
||||
|
||||
Performance: 19653623.953 tau/day, 45494.500 timesteps/s
|
||||
94.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.057854 | 0.05974 | 0.062726 | 0.7 | 5.44
|
||||
Neigh | 0.047791 | 0.049863 | 0.054819 | 1.3 | 4.54
|
||||
Comm | 0.3581 | 0.38553 | 0.39784 | 2.6 | 35.08
|
||||
Output | 0.001116 | 0.0014414 | 0.0023859 | 1.4 | 0.13
|
||||
Modify | 0.41102 | 0.42642 | 0.4493 | 2.3 | 38.80
|
||||
Other | | 0.176 | | | 16.02
|
||||
|
||||
Nlocal: 40 ave 42 max 39 min
|
||||
Histogram: 2 0 0 1 0 0 0 0 0 1
|
||||
Nghost: 36.5 ave 37 max 36 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Neighs: 87.5 ave 94 max 81 min
|
||||
Histogram: 1 1 0 0 0 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 350
|
||||
Ave neighs/atom = 2.1875
|
||||
Neighbor list builds = 5276
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:01
|
||||
111
examples/nemd/log.30Sep24.g++.1
Normal file
111
examples/nemd/log.30Sep24.g++.1
Normal file
@ -0,0 +1,111 @@
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-394-g75f86a68a7-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# 2d NEMD simulation
|
||||
|
||||
units lj
|
||||
atom_style atomic
|
||||
dimension 2
|
||||
|
||||
lattice sq2 0.8442
|
||||
Lattice spacing in x,y,z = 1.5391903 1.5391903 1.5391903
|
||||
region box prism 0 10 0 8 -0.5 0.5 0 0 0
|
||||
create_box 2 box
|
||||
Created triclinic box = (0 0 -0.76959516) to (15.391903 12.313523 0.76959516) with tilt (0 0 0)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 box
|
||||
Created 160 atoms
|
||||
using lattice units in triclinic box = (0 0 -0.76959516) to (15.391903 12.313523 0.76959516) with tilt (0 0 0)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
mass * 1.0
|
||||
|
||||
velocity all create 1.44 87287 loop geom
|
||||
|
||||
region slice block 4 6 INF INF INF INF
|
||||
set region slice type 2
|
||||
Setting atom values ...
|
||||
40 settings made for type
|
||||
|
||||
pair_style lj/cut 4.0
|
||||
pair_coeff * * 1.0 1.0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1
|
||||
|
||||
fix 1 all nvt/sllod temp 1.0 1.0 1.0 tchain 1
|
||||
fix 2 all deform 1 xy erate 0.01 remap v
|
||||
|
||||
#dump 1 all custom 500 dump.nemd id type x y z
|
||||
|
||||
#dump 2 all image 100 image.*.jpg type type adiam 1.2
|
||||
#dump_modify 2 pad 5
|
||||
|
||||
#dump 3 all movie 100 movie.mpg type type adiam 1.2
|
||||
#dump_modify 3 pad 5
|
||||
|
||||
thermo 50
|
||||
|
||||
run 1000
|
||||
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 = 4.3
|
||||
ghost atom cutoff = 4.3
|
||||
binsize = 2.15, bins = 8 6 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton/tri
|
||||
stencil: half/bin/2d/tri
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.065 | 3.065 | 3.065 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press Volume
|
||||
0 1.44 -2.6548731 0 -1.2238731 1.9354912 189.52855
|
||||
50 0.97904822 -2.1934929 0 -1.2205637 5.0001562 189.52855
|
||||
100 0.96423603 -2.1711413 0 -1.2129318 5.3040025 189.52855
|
||||
150 0.96430794 -2.153062 0 -1.194781 5.3988945 189.52855
|
||||
200 1.056585 -2.2379316 0 -1.1879503 5.0007883 189.52855
|
||||
250 1.0183256 -2.1921531 0 -1.1801921 5.5370076 189.52855
|
||||
300 0.96855552 -2.140465 0 -1.177963 5.7188412 189.52855
|
||||
350 1.0115567 -2.1883272 0 -1.1830927 5.4437104 189.52855
|
||||
400 0.93743103 -2.1230826 0 -1.1915105 5.7059909 189.52855
|
||||
450 1.1120368 -2.3041274 0 -1.1990408 4.646396 189.52855
|
||||
500 0.99611106 -2.2039016 0 -1.2140162 5.1526658 189.52855
|
||||
550 1.1075519 -2.3349751 0 -1.2343453 4.0671355 189.52855
|
||||
600 1.0550783 -2.3126484 0 -1.2641644 4.5423735 189.52855
|
||||
650 0.98516169 -2.2664919 0 -1.2874875 4.8365475 189.52855
|
||||
700 0.97899201 -2.2815136 0 -1.3086403 4.5415389 189.52855
|
||||
750 1.0107776 -2.3375258 0 -1.3330656 4.3655082 189.52855
|
||||
800 0.97711804 -2.3221241 0 -1.3511131 4.2153988 189.52855
|
||||
850 0.8984454 -2.258341 0 -1.3655108 4.6759265 189.52855
|
||||
900 0.85409237 -2.2157566 0 -1.3670024 5.0180073 189.52855
|
||||
950 0.90195434 -2.2500988 0 -1.3537817 4.8189466 189.52855
|
||||
1000 1.0047283 -2.3359434 0 -1.3374947 4.0788763 189.52855
|
||||
Loop time of 0.0331477 on 1 procs for 1000 steps with 160 atoms
|
||||
|
||||
Performance: 13032596.122 tau/day, 30168.047 timesteps/s, 4.827 Matom-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 | 0.017584 | 0.017584 | 0.017584 | 0.0 | 53.05
|
||||
Neigh | 0.0080996 | 0.0080996 | 0.0080996 | 0.0 | 24.43
|
||||
Comm | 0.0010864 | 0.0010864 | 0.0010864 | 0.0 | 3.28
|
||||
Output | 9.9819e-05 | 9.9819e-05 | 9.9819e-05 | 0.0 | 0.30
|
||||
Modify | 0.0057062 | 0.0057062 | 0.0057062 | 0.0 | 17.21
|
||||
Other | | 0.0005715 | | | 1.72
|
||||
|
||||
Nlocal: 160 ave 160 max 160 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 271 ave 271 max 271 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 3881 ave 3881 max 3881 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 3881
|
||||
Ave neighs/atom = 24.25625
|
||||
Neighbor list builds = 106
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:00
|
||||
111
examples/nemd/log.30Sep24.g++.4
Normal file
111
examples/nemd/log.30Sep24.g++.4
Normal file
@ -0,0 +1,111 @@
|
||||
LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-394-g75f86a68a7-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# 2d NEMD simulation
|
||||
|
||||
units lj
|
||||
atom_style atomic
|
||||
dimension 2
|
||||
|
||||
lattice sq2 0.8442
|
||||
Lattice spacing in x,y,z = 1.5391903 1.5391903 1.5391903
|
||||
region box prism 0 10 0 8 -0.5 0.5 0 0 0
|
||||
create_box 2 box
|
||||
Created triclinic box = (0 0 -0.76959516) to (15.391903 12.313523 0.76959516) with tilt (0 0 0)
|
||||
2 by 2 by 1 MPI processor grid
|
||||
create_atoms 1 box
|
||||
Created 160 atoms
|
||||
using lattice units in triclinic box = (0 0 -0.76959516) to (15.391903 12.313523 0.76959516) with tilt (0 0 0)
|
||||
create_atoms CPU = 0.001 seconds
|
||||
mass * 1.0
|
||||
|
||||
velocity all create 1.44 87287 loop geom
|
||||
|
||||
region slice block 4 6 INF INF INF INF
|
||||
set region slice type 2
|
||||
Setting atom values ...
|
||||
40 settings made for type
|
||||
|
||||
pair_style lj/cut 4.0
|
||||
pair_coeff * * 1.0 1.0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neigh_modify delay 0 every 1
|
||||
|
||||
fix 1 all nvt/sllod temp 1.0 1.0 1.0 tchain 1
|
||||
fix 2 all deform 1 xy erate 0.01 remap v
|
||||
|
||||
#dump 1 all custom 500 dump.nemd id type x y z
|
||||
|
||||
#dump 2 all image 100 image.*.jpg type type adiam 1.2
|
||||
#dump_modify 2 pad 5
|
||||
|
||||
#dump 3 all movie 100 movie.mpg type type adiam 1.2
|
||||
#dump_modify 3 pad 5
|
||||
|
||||
thermo 50
|
||||
|
||||
run 1000
|
||||
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 = 4.3
|
||||
ghost atom cutoff = 4.3
|
||||
binsize = 2.15, bins = 8 6 1
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton/tri
|
||||
stencil: half/bin/2d/tri
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.064 | 3.064 | 3.064 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press Volume
|
||||
0 1.44 -2.6548731 0 -1.2238731 1.9354912 189.52855
|
||||
50 0.97904822 -2.1934929 0 -1.2205637 5.0001562 189.52855
|
||||
100 0.96423603 -2.1711413 0 -1.2129318 5.3040025 189.52855
|
||||
150 0.96430794 -2.153062 0 -1.194781 5.3988945 189.52855
|
||||
200 1.056585 -2.2379316 0 -1.1879503 5.0007883 189.52855
|
||||
250 1.0183256 -2.1921531 0 -1.1801921 5.5370076 189.52855
|
||||
300 0.96855552 -2.140465 0 -1.177963 5.7188412 189.52855
|
||||
350 1.0115567 -2.1883272 0 -1.1830927 5.4437104 189.52855
|
||||
400 0.93743103 -2.1230826 0 -1.1915105 5.7059909 189.52855
|
||||
450 1.1120368 -2.3041274 0 -1.1990408 4.646396 189.52855
|
||||
500 0.99611106 -2.2039016 0 -1.2140162 5.1526658 189.52855
|
||||
550 1.1075519 -2.3349751 0 -1.2343453 4.0671355 189.52855
|
||||
600 1.0550783 -2.3126484 0 -1.2641644 4.5423735 189.52855
|
||||
650 0.98516169 -2.2664919 0 -1.2874875 4.8365475 189.52855
|
||||
700 0.97899201 -2.2815136 0 -1.3086403 4.5415389 189.52855
|
||||
750 1.0107776 -2.3375258 0 -1.3330656 4.3655082 189.52855
|
||||
800 0.97711804 -2.3221241 0 -1.3511131 4.2153988 189.52855
|
||||
850 0.8984454 -2.258341 0 -1.3655108 4.6759265 189.52855
|
||||
900 0.85409237 -2.2157566 0 -1.3670024 5.0180073 189.52855
|
||||
950 0.90195434 -2.2500988 0 -1.3537817 4.8189466 189.52855
|
||||
1000 1.0047283 -2.3359434 0 -1.3374947 4.0788763 189.52855
|
||||
Loop time of 0.0158907 on 4 procs for 1000 steps with 160 atoms
|
||||
|
||||
Performance: 27185684.597 tau/day, 62929.825 timesteps/s, 10.069 Matom-step/s
|
||||
98.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.0044606 | 0.004562 | 0.0047619 | 0.2 | 28.71
|
||||
Neigh | 0.0023154 | 0.0023979 | 0.002494 | 0.1 | 15.09
|
||||
Comm | 0.0051743 | 0.0054807 | 0.0056638 | 0.3 | 34.49
|
||||
Output | 7.5535e-05 | 8.9889e-05 | 0.00012988 | 0.0 | 0.57
|
||||
Modify | 0.002223 | 0.0023624 | 0.0026372 | 0.3 | 14.87
|
||||
Other | | 0.0009979 | | | 6.28
|
||||
|
||||
Nlocal: 40 ave 42 max 38 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
Nghost: 163.5 ave 166 max 162 min
|
||||
Histogram: 2 0 0 0 0 1 0 0 0 1
|
||||
Neighs: 970.25 ave 1016 max 942 min
|
||||
Histogram: 1 1 0 0 1 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 3881
|
||||
Ave neighs/atom = 24.25625
|
||||
Neighbor list builds = 106
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:00
|
||||
@ -100,6 +100,7 @@ MODULE LIBLAMMPS
|
||||
CONTAINS
|
||||
PROCEDURE :: close => lmp_close
|
||||
PROCEDURE :: error => lmp_error
|
||||
PROCEDURE :: expand => lmp_expand
|
||||
PROCEDURE :: file => lmp_file
|
||||
PROCEDURE :: command => lmp_command
|
||||
PROCEDURE :: commands_list => lmp_commands_list
|
||||
@ -410,6 +411,14 @@ MODULE LIBLAMMPS
|
||||
TYPE(c_ptr), VALUE :: error_text
|
||||
END SUBROUTINE lammps_error
|
||||
|
||||
FUNCTION lammps_expand(handle, line) BIND(C)
|
||||
IMPORT :: c_ptr
|
||||
IMPLICIT NONE
|
||||
TYPE(c_ptr), INTENT(IN), VALUE :: handle
|
||||
TYPE(c_ptr), INTENT(IN), VALUE :: line
|
||||
TYPE(c_ptr) :: lammps_expand
|
||||
END FUNCTION lammps_expand
|
||||
|
||||
SUBROUTINE lammps_file(handle, filename) BIND(C)
|
||||
IMPORT :: c_ptr
|
||||
IMPLICIT NONE
|
||||
@ -1107,10 +1116,24 @@ CONTAINS
|
||||
CALL lammps_free(str)
|
||||
END SUBROUTINE lmp_error
|
||||
|
||||
! equivalent function to lammps_expand()
|
||||
FUNCTION lmp_expand(self, line)
|
||||
CLASS(lammps), INTENT(IN) :: self
|
||||
CHARACTER(len=*), INTENT(IN) :: line
|
||||
TYPE(c_ptr) :: str, res
|
||||
CHARACTER(len=:), ALLOCATABLE :: lmp_expand
|
||||
|
||||
str = f2c_string(line)
|
||||
res = lammps_expand(self%handle, str)
|
||||
CALL lammps_free(str)
|
||||
lmp_expand = c2f_string(res)
|
||||
CALL lammps_free(res)
|
||||
END FUNCTION lmp_expand
|
||||
|
||||
! equivalent function to lammps_file()
|
||||
SUBROUTINE lmp_file(self, filename)
|
||||
CLASS(lammps), INTENT(IN) :: self
|
||||
CHARACTER(len=*) :: filename
|
||||
CHARACTER(len=*), INTENT(IN) :: filename
|
||||
TYPE(c_ptr) :: str
|
||||
|
||||
str = f2c_string(filename)
|
||||
@ -1121,7 +1144,7 @@ CONTAINS
|
||||
! equivalent function to lammps_command()
|
||||
SUBROUTINE lmp_command(self, cmd)
|
||||
CLASS(lammps), INTENT(IN) :: self
|
||||
CHARACTER(len=*) :: cmd
|
||||
CHARACTER(len=*), INTENT(IN) :: cmd
|
||||
TYPE(c_ptr) :: str
|
||||
|
||||
str = f2c_string(cmd)
|
||||
@ -1155,7 +1178,7 @@ CONTAINS
|
||||
! equivalent function to lammps_commands_string()
|
||||
SUBROUTINE lmp_commands_string(self, str)
|
||||
CLASS(lammps), INTENT(IN) :: self
|
||||
CHARACTER(len=*) :: str
|
||||
CHARACTER(len=*), INTENT(IN) :: str
|
||||
TYPE(c_ptr) :: tmp
|
||||
|
||||
tmp = f2c_string(str)
|
||||
@ -1173,7 +1196,7 @@ CONTAINS
|
||||
! equivalent function to lammps_get_thermo
|
||||
REAL(c_double) FUNCTION lmp_get_thermo(self,name)
|
||||
CLASS(lammps), INTENT(IN) :: self
|
||||
CHARACTER(LEN=*) :: name
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name
|
||||
TYPE(c_ptr) :: Cname
|
||||
|
||||
Cname = f2c_string(name)
|
||||
@ -1185,7 +1208,7 @@ CONTAINS
|
||||
FUNCTION lmp_last_thermo(self,what,index) RESULT(thermo_data)
|
||||
CLASS(lammps), INTENT(IN), TARGET :: self
|
||||
CHARACTER(LEN=*), INTENT(IN) :: what
|
||||
INTEGER :: index
|
||||
INTEGER, INTENT(IN) :: index
|
||||
INTEGER(c_int) :: idx
|
||||
TYPE(lammps_data) :: thermo_data, type_data
|
||||
INTEGER(c_int) :: datatype
|
||||
|
||||
@ -23,7 +23,7 @@ KOKKOS_DEVICES ?= "OpenMP"
|
||||
# NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,Volta70,Volta72,Turing75,Ampere80,Ampere86,Ada89,Hopper90
|
||||
# ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2,A64FX,ARMv9-Grace
|
||||
# IBM: Power8,Power9
|
||||
# AMD-GPUS: AMD_GFX906,AMD_GFX908,AMD_GFX90A,AMD_GFX940,AMD_GFX942,AMD_GFX1030,AMD_GFX1100
|
||||
# AMD-GPUS: AMD_GFX906,AMD_GFX908,AMD_GFX90A,AMD_GFX940,AMD_GFX942,AMD_GFX1030,AMD_GFX1100,AMD_GFX1103
|
||||
# AMD-CPUS: AMDAVX,Zen,Zen2,Zen3
|
||||
# Intel-GPUs: Intel_Gen,Intel_Gen9,Intel_Gen11,Intel_Gen12LP,Intel_DG1,Intel_XeHP,Intel_PVC
|
||||
KOKKOS_ARCH ?= ""
|
||||
@ -465,6 +465,7 @@ KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100 := $(call kokkos_has_string,$(KOKKOS_ARCH),
|
||||
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100), 0)
|
||||
KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100 := $(call kokkos_has_string,$(KOKKOS_ARCH),NAVI1100)
|
||||
endif
|
||||
KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1103 := $(call kokkos_has_string,$(KOKKOS_ARCH),AMD_GFX1103)
|
||||
|
||||
# Any AVX?
|
||||
KOKKOS_INTERNAL_USE_ARCH_AVX := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_SNB) + $(KOKKOS_INTERNAL_USE_ARCH_AMDAVX))
|
||||
@ -1158,6 +1159,11 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1100), 1)
|
||||
tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GPU")
|
||||
KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx1100
|
||||
endif
|
||||
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AMD_GFX1103), 1)
|
||||
tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GFX1103")
|
||||
tmp := $(call kokkos_append_header,"$H""define KOKKOS_ARCH_AMD_GPU")
|
||||
KOKKOS_INTERNAL_HIP_ARCH_FLAG := --offload-arch=gfx1103
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1)
|
||||
|
||||
@ -120,6 +120,7 @@
|
||||
#cmakedefine KOKKOS_ARCH_AMD_GFX942
|
||||
#cmakedefine KOKKOS_ARCH_AMD_GFX1030
|
||||
#cmakedefine KOKKOS_ARCH_AMD_GFX1100
|
||||
#cmakedefine KOKKOS_ARCH_AMD_GFX1103
|
||||
#cmakedefine KOKKOS_ARCH_AMD_GPU
|
||||
#cmakedefine KOKKOS_ARCH_VEGA // deprecated
|
||||
#cmakedefine KOKKOS_ARCH_VEGA906 // deprecated
|
||||
|
||||
@ -103,9 +103,9 @@ LIST(APPEND CORRESPONDING_AMD_FLAGS gfx90a gfx90a gfx908 gfx908)
|
||||
LIST(APPEND SUPPORTED_AMD_GPUS MI50/60 MI50/60)
|
||||
LIST(APPEND SUPPORTED_AMD_ARCHS VEGA906 AMD_GFX906)
|
||||
LIST(APPEND CORRESPONDING_AMD_FLAGS gfx906 gfx906)
|
||||
LIST(APPEND SUPPORTED_AMD_GPUS RX7900XTX RX7900XTX V620/W6800 V620/W6800)
|
||||
LIST(APPEND SUPPORTED_AMD_ARCHS NAVI1100 AMD_GFX1100 NAVI1030 AMD_GFX1030)
|
||||
LIST(APPEND CORRESPONDING_AMD_FLAGS gfx1100 gfx1100 gfx1030 gfx1030)
|
||||
LIST(APPEND SUPPORTED_AMD_GPUS PHOENIX RX7900XTX V620/W6800 V620/W6800)
|
||||
LIST(APPEND SUPPORTED_AMD_ARCHS AMD_GFX1103 AMD_GFX1100 NAVI1030 AMD_GFX1030)
|
||||
LIST(APPEND CORRESPONDING_AMD_FLAGS gfx1103 gfx1100 gfx1030 gfx1030)
|
||||
|
||||
#FIXME CAN BE REPLACED WITH LIST_ZIP IN CMAKE 3.17
|
||||
FOREACH(ARCH IN LISTS SUPPORTED_AMD_ARCHS)
|
||||
|
||||
@ -35,7 +35,8 @@ struct HIPTraits {
|
||||
static constexpr int WarpSize = 64;
|
||||
static constexpr int WarpIndexMask = 0x003f; /* hexadecimal for 63 */
|
||||
static constexpr int WarpIndexShift = 6; /* WarpSize == 1 << WarpShift*/
|
||||
#elif defined(KOKKOS_ARCH_AMD_GFX1030) || defined(KOKKOS_ARCH_AMD_GFX1100)
|
||||
#elif defined(KOKKOS_ARCH_AMD_GFX1030) || defined(KOKKOS_ARCH_AMD_GFX1100) || \
|
||||
defined(KOKKOS_ARCH_AMD_GFX1103)
|
||||
static constexpr int WarpSize = 32;
|
||||
static constexpr int WarpIndexMask = 0x001f; /* hexadecimal for 31 */
|
||||
static constexpr int WarpIndexShift = 5; /* WarpSize == 1 << WarpShift*/
|
||||
|
||||
@ -143,7 +143,7 @@ class ParallelScan<FunctorType, Kokkos::RangePolicy<Traits...>,
|
||||
local_offset_value = element_values(team_id, i - 1);
|
||||
// FIXME_OPENMPTARGET We seem to access memory illegaly on AMD GPUs
|
||||
#if defined(KOKKOS_ARCH_AMD_GPU) && !defined(KOKKOS_ARCH_AMD_GFX1030) && \
|
||||
!defined(KOKKOS_ARCH_AMD_GFX1100)
|
||||
!defined(KOKKOS_ARCH_AMD_GFX1100) && !defined(KOKKOS_ARCH_AMD_GFX1103)
|
||||
if constexpr (Analysis::Reducer::has_join_member_function()) {
|
||||
if constexpr (std::is_void_v<WorkTag>)
|
||||
a_functor_reducer.get_functor().join(local_offset_value,
|
||||
|
||||
@ -752,6 +752,9 @@ void pre_initialize_internal(const Kokkos::InitializationSettings& settings) {
|
||||
#elif defined(KOKKOS_ARCH_AMD_GFX1100)
|
||||
declare_configuration_metadata("architecture", "GPU architecture",
|
||||
"AMD_GFX1100");
|
||||
#elif defined(KOKKOS_ARCH_AMD_GFX1103)
|
||||
declare_configuration_metadata("architecture", "GPU architecture",
|
||||
"AMD_GFX1103");
|
||||
|
||||
#else
|
||||
declare_configuration_metadata("architecture", "GPU architecture", "none");
|
||||
|
||||
@ -164,6 +164,7 @@ display_help_text() {
|
||||
echo " AMD_GFX942 = AMD GPU MI300 GFX942"
|
||||
echo " AMD_GFX1030 = AMD GPU V620/W6800 GFX1030"
|
||||
echo " AMD_GFX1100 = AMD GPU RX 7900 XT(X) GFX1100"
|
||||
echo " AMD_GFX1103 = AMD APU Radeon 740M/760M/780M/880M/890M GFX1103"
|
||||
echo " [ARM]"
|
||||
echo " ARMV80 = ARMv8.0 Compatible CPU"
|
||||
echo " ARMV81 = ARMv8.1 Compatible CPU"
|
||||
|
||||
@ -19,8 +19,8 @@ from __future__ import print_function
|
||||
import os
|
||||
import sys
|
||||
from ctypes import CDLL, POINTER, RTLD_GLOBAL, CFUNCTYPE, py_object, byref, cast, sizeof, \
|
||||
create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, pythonapi, \
|
||||
pointer
|
||||
create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, c_char, \
|
||||
pythonapi, pointer
|
||||
from os.path import dirname, abspath, join
|
||||
from inspect import getsourcefile
|
||||
|
||||
@ -178,6 +178,9 @@ class lammps(object):
|
||||
|
||||
self.lib.lammps_error.argtypes = [c_void_p, c_int, c_char_p]
|
||||
|
||||
self.lib.lammps_expand.argtypes = [c_void_p, c_char_p]
|
||||
self.lib.lammps_expand.restype = POINTER(c_char)
|
||||
|
||||
self.lib.lammps_file.argtypes = [c_void_p, c_char_p]
|
||||
self.lib.lammps_file.restype = None
|
||||
|
||||
@ -613,6 +616,37 @@ class lammps(object):
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def expand(self,line):
|
||||
"""Expand a single LAMMPS string like an input line
|
||||
|
||||
This is a wrapper around the :cpp:func:`lammps_expand`
|
||||
function of the C-library interface.
|
||||
|
||||
:param cmd: a single lammps line
|
||||
:type cmd: string
|
||||
:return: expanded string
|
||||
:rtype: string
|
||||
"""
|
||||
if line: newline = line.encode()
|
||||
else: return None
|
||||
|
||||
with ExceptionCheck(self):
|
||||
strptr = self.lib.lammps_expand(self.lmp, newline)
|
||||
rval = strptr[0]
|
||||
if rval == b'\0':
|
||||
rval = None
|
||||
else:
|
||||
i = 1
|
||||
while strptr[i] != b'\0':
|
||||
rval += strptr[i]
|
||||
i = i + 1
|
||||
self.lib.lammps_free(strptr)
|
||||
if rval:
|
||||
return rval.decode('utf-8')
|
||||
|
||||
return None
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def file(self, path):
|
||||
"""Read LAMMPS commands from a file.
|
||||
|
||||
|
||||
@ -918,15 +918,15 @@ int PairOxdnaExcv::pack_forward_comm(int n, int *list, double *buf,
|
||||
m = 0;
|
||||
for (i = 0; i < n; i++) {
|
||||
j = list[i];
|
||||
buf[m++] = nx[j][0];
|
||||
buf[m++] = nx[j][1];
|
||||
buf[m++] = nx[j][2];
|
||||
buf[m++] = ny[j][0];
|
||||
buf[m++] = ny[j][1];
|
||||
buf[m++] = ny[j][2];
|
||||
buf[m++] = nz[j][0];
|
||||
buf[m++] = nz[j][1];
|
||||
buf[m++] = nz[j][2];
|
||||
buf[m++] = nx[j][0];
|
||||
buf[m++] = nx[j][1];
|
||||
buf[m++] = nx[j][2];
|
||||
buf[m++] = ny[j][0];
|
||||
buf[m++] = ny[j][1];
|
||||
buf[m++] = ny[j][2];
|
||||
buf[m++] = nz[j][0];
|
||||
buf[m++] = nz[j][1];
|
||||
buf[m++] = nz[j][2];
|
||||
}
|
||||
return m;
|
||||
}
|
||||
@ -936,19 +936,18 @@ int PairOxdnaExcv::pack_forward_comm(int n, int *list, double *buf,
|
||||
void PairOxdnaExcv::unpack_forward_comm(int n, int first, double *buf)
|
||||
{
|
||||
int i,m,last;
|
||||
|
||||
m = 0;
|
||||
last = first + n;
|
||||
for (i = first; i < last; i++) {
|
||||
nx[i][0] = buf[m++];
|
||||
nx[i][1] = buf[m++];
|
||||
nx[i][2] = buf[m++];
|
||||
ny[i][0] = buf[m++];
|
||||
ny[i][1] = buf[m++];
|
||||
ny[i][2] = buf[m++];
|
||||
nz[i][0] = buf[m++];
|
||||
nz[i][1] = buf[m++];
|
||||
nz[i][2] = buf[m++];
|
||||
nx[i][0] = buf[m++];
|
||||
nx[i][1] = buf[m++];
|
||||
nx[i][2] = buf[m++];
|
||||
ny[i][0] = buf[m++];
|
||||
ny[i][1] = buf[m++];
|
||||
ny[i][2] = buf[m++];
|
||||
nz[i][0] = buf[m++];
|
||||
nz[i][1] = buf[m++];
|
||||
nz[i][2] = buf[m++];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Martin Svoboda (ICPF, UJEP), Martin Lísal (ICPF, UJEP)
|
||||
Contributing authors: Martin Svoboda (ICPF, UJEP), Martin Lisal (ICPF, UJEP)
|
||||
based on pair style dpd by: Kurt Smith (U Pittsburgh)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Martin Svoboda (ICPF, UJEP), Martin Lísal (ICPF, UJEP)
|
||||
Contributing authors: Martin Svoboda (ICPF, UJEP), Martin Lisal (ICPF, UJEP)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "pair_dpd_ext_tstat.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "boundary_correction.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_BOUNDARY_CORRECTION_H
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_KSPACE_H
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_MATH_H
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "electrode_matrix.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_MATRIX_H
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "electrode_vector.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_VECTOR_H
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "ewald_electrode.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef KSPACE_CLASS
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_electrode_conp.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_electrode_conq.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_electrode_thermo.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "pppm_electrode.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef KSPACE_CLASS
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "slab_2d.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_SLAB_2D_H
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "slab_dipole.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_SLAB_DIPOLE_H
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "wire_dipole.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meissner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_WIRE_DIPOLE_H
|
||||
|
||||
@ -163,13 +163,13 @@ FixTTM::FixTTM(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
FixTTM::~FixTTM()
|
||||
{
|
||||
delete [] infile;
|
||||
delete [] outfile;
|
||||
delete[] infile;
|
||||
delete[] outfile;
|
||||
|
||||
delete random;
|
||||
|
||||
delete [] gfactor1;
|
||||
delete [] gfactor2;
|
||||
delete[] gfactor1;
|
||||
delete[] gfactor2;
|
||||
|
||||
memory->destroy(flangevin);
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ class BondHarmonicShift : public Bond {
|
||||
void write_data(FILE *) override;
|
||||
double single(int, double, int, int, double &) override;
|
||||
void born_matrix(int, double, int, int, double &, double &) override;
|
||||
void *extract(const char *, int &);
|
||||
void *extract(const char *, int &) override;
|
||||
|
||||
protected:
|
||||
double *k, *r0, *r1;
|
||||
|
||||
@ -238,3 +238,16 @@ void BondHarmonicShiftCut::born_matrix(int type, double rsq, int /*i*/, int /*j*
|
||||
du2 = 2 * k[type];
|
||||
if (r > 0.0) du = du2 * dr;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
return ptr to internal members upon request
|
||||
------------------------------------------------------------------------ */
|
||||
|
||||
void *BondHarmonicShiftCut::extract(const char *str, int &dim)
|
||||
{
|
||||
dim = 1;
|
||||
if (strcmp(str, "k") == 0) return (void *) k;
|
||||
if (strcmp(str, "r0") == 0) return (void *) r0;
|
||||
if (strcmp(str, "r1") == 0) return (void *) r1;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@ class BondHarmonicShiftCut : public Bond {
|
||||
void write_data(FILE *) override;
|
||||
double single(int, double, int, int, double &) override;
|
||||
void born_matrix(int, double, int, int, double &, double &) override;
|
||||
void *extract(const char *, int &) override;
|
||||
|
||||
protected:
|
||||
double *k, *r0, *r1;
|
||||
|
||||
@ -563,7 +563,6 @@ void DomainKokkos::operator()(TagDomain_image_flip, const int &i) const {
|
||||
void DomainKokkos::lamda2x(int n)
|
||||
{
|
||||
atomKK->sync(Device,X_MASK);
|
||||
|
||||
x = atomKK->k_x.view<LMPDeviceType>();
|
||||
|
||||
copymode = 1;
|
||||
@ -573,6 +572,21 @@ void DomainKokkos::lamda2x(int n)
|
||||
atomKK->modified(Device,X_MASK);
|
||||
}
|
||||
|
||||
void DomainKokkos::lamda2x(int n, int groupbit_in)
|
||||
{
|
||||
atomKK->sync(Device,X_MASK);
|
||||
x = atomKK->k_x.view<LMPDeviceType>();
|
||||
mask = atomKK->k_mask.view<LMPDeviceType>();
|
||||
mask = atomKK->k_mask.view<LMPDeviceType>();
|
||||
groupbit = groupbit_in;
|
||||
|
||||
copymode = 1;
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_lamda2x_group>(0,n),*this);
|
||||
copymode = 0;
|
||||
|
||||
atomKK->modified(Device,X_MASK);
|
||||
}
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void DomainKokkos::operator()(TagDomain_lamda2x, const int &i) const {
|
||||
const double xi1 = x(i,1);
|
||||
@ -582,6 +596,17 @@ void DomainKokkos::operator()(TagDomain_lamda2x, const int &i) const {
|
||||
x(i,2) = h[2]*xi2 + boxlo[2];
|
||||
}
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void DomainKokkos::operator()(TagDomain_lamda2x_group, const int &i) const {
|
||||
if (mask[i] & groupbit) {
|
||||
const double xi1 = x(i,1);
|
||||
const double xi2 = x(i,2);
|
||||
x(i,0) = h[0]*x(i,0) + h[5]*xi1 + h[4]*xi2 + boxlo[0];
|
||||
x(i,1) = h[1]*xi1 + h[3]*xi2 + boxlo[1];
|
||||
x(i,2) = h[2]*xi2 + boxlo[2];
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
convert box coords to triclinic 0-1 lamda coords for all N atoms
|
||||
lamda = H^-1 (x - x0)
|
||||
@ -590,7 +615,6 @@ void DomainKokkos::operator()(TagDomain_lamda2x, const int &i) const {
|
||||
void DomainKokkos::x2lamda(int n)
|
||||
{
|
||||
atomKK->sync(Device,X_MASK);
|
||||
|
||||
x = atomKK->k_x.view<LMPDeviceType>();
|
||||
|
||||
copymode = 1;
|
||||
@ -600,6 +624,20 @@ void DomainKokkos::x2lamda(int n)
|
||||
atomKK->modified(Device,X_MASK);
|
||||
}
|
||||
|
||||
void DomainKokkos::x2lamda(int n, int groupbit_in)
|
||||
{
|
||||
atomKK->sync(Device,X_MASK);
|
||||
x = atomKK->k_x.view<LMPDeviceType>();
|
||||
mask = atomKK->k_mask.view<LMPDeviceType>();
|
||||
groupbit = groupbit_in;
|
||||
|
||||
copymode = 1;
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<LMPDeviceType, TagDomain_x2lamda_group>(0,n),*this);
|
||||
copymode = 0;
|
||||
|
||||
atomKK->modified(Device,X_MASK);
|
||||
}
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void DomainKokkos::operator()(TagDomain_x2lamda, const int &i) const {
|
||||
F_FLOAT delta[3];
|
||||
@ -612,3 +650,17 @@ void DomainKokkos::operator()(TagDomain_x2lamda, const int &i) const {
|
||||
x(i,2) = h_inv[2]*delta[2];
|
||||
}
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void DomainKokkos::operator()(TagDomain_x2lamda_group, const int &i) const {
|
||||
if (mask[i] & groupbit) {
|
||||
F_FLOAT delta[3];
|
||||
delta[0] = x(i,0) - boxlo[0];
|
||||
delta[1] = x(i,1) - boxlo[1];
|
||||
delta[2] = x(i,2) - boxlo[2];
|
||||
|
||||
x(i,0) = h_inv[0]*delta[0] + h_inv[5]*delta[1] + h_inv[4]*delta[2];
|
||||
x(i,1) = h_inv[1]*delta[1] + h_inv[3]*delta[2];
|
||||
x(i,2) = h_inv[2]*delta[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -24,7 +24,9 @@ namespace LAMMPS_NS {
|
||||
struct TagDomain_remap_all{};
|
||||
struct TagDomain_image_flip{};
|
||||
struct TagDomain_lamda2x{};
|
||||
struct TagDomain_lamda2x_group{};
|
||||
struct TagDomain_x2lamda{};
|
||||
struct TagDomain_x2lamda_group{};
|
||||
|
||||
class DomainKokkos : public Domain {
|
||||
public:
|
||||
@ -35,7 +37,9 @@ class DomainKokkos : public Domain {
|
||||
void remap_all();
|
||||
void image_flip(int, int, int);
|
||||
void x2lamda(int) override;
|
||||
void x2lamda(int,int) override;
|
||||
void lamda2x(int) override;
|
||||
void lamda2x(int,int) override;
|
||||
// forward remaining x2lamda() and lambda2x() variants to parent class
|
||||
void x2lamda(double *a, double *b) override { Domain::x2lamda(a,b); }
|
||||
void lamda2x(double *a, double *b) override { Domain::lamda2x(a,b); }
|
||||
@ -54,18 +58,26 @@ class DomainKokkos : public Domain {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagDomain_lamda2x, const int&) const;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagDomain_lamda2x_group, const int&) const;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagDomain_x2lamda, const int&) const;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagDomain_x2lamda_group, const int&) const;
|
||||
|
||||
static KOKKOS_INLINE_FUNCTION
|
||||
Few<double,3> unmap(Few<double,3> prd, Few<double,6> h, int triclinic,
|
||||
Few<double,3> x, imageint image);
|
||||
|
||||
private:
|
||||
int groupbit;
|
||||
double lo[3],hi[3],period[3];
|
||||
int n_flip, m_flip, p_flip;
|
||||
ArrayTypes<LMPDeviceType>::t_x_array x;
|
||||
ArrayTypes<LMPDeviceType>::t_imageint_1d image;
|
||||
ArrayTypes<LMPDeviceType>::t_int_1d mask;
|
||||
};
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
|
||||
@ -13,7 +13,8 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Pieter in 't Veld (SNL)
|
||||
Contributing author: Pieter in 't Veld (SNL)
|
||||
Refactoring (2024/08): Mitch Murphy (alphataubio@gmail.com)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_deform_kokkos.h"
|
||||
@ -21,31 +22,14 @@
|
||||
#include "atom_kokkos.h"
|
||||
#include "atom_masks.h"
|
||||
#include "domain_kokkos.h"
|
||||
#include "force.h"
|
||||
#include "input.h"
|
||||
#include "irregular.h"
|
||||
#include "kspace.h"
|
||||
#include "math_const.h"
|
||||
#include "modify.h"
|
||||
#include "update.h"
|
||||
#include "variable.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
using namespace MathConst;
|
||||
|
||||
enum{NONE=0,FINAL,DELTA,SCALE,VEL,ERATE,TRATE,VOLUME,WIGGLE,VARIABLE};
|
||||
enum{ONE_FROM_ONE,ONE_FROM_TWO,TWO_FROM_ONE};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixDeformKokkos::FixDeformKokkos(LAMMPS *lmp, int narg, char **arg) : FixDeform(lmp, narg, arg)
|
||||
{
|
||||
kokkosable = 1;
|
||||
domainKK = (DomainKokkos *) domain;
|
||||
|
||||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
}
|
||||
@ -62,308 +46,16 @@ FixDeformKokkos::FixDeformKokkos(LAMMPS *lmp, int narg, char **arg) : FixDeform(
|
||||
|
||||
void FixDeformKokkos::pre_exchange()
|
||||
{
|
||||
if (flip == 0) return;
|
||||
|
||||
domain->yz = set[3].tilt_target = set[3].tilt_flip;
|
||||
domain->xz = set[4].tilt_target = set[4].tilt_flip;
|
||||
domain->xy = set[5].tilt_target = set[5].tilt_flip;
|
||||
domain->set_global_box();
|
||||
domain->set_local_box();
|
||||
|
||||
domainKK->image_flip(flipxy,flipxz,flipyz);
|
||||
|
||||
domainKK->remap_all();
|
||||
|
||||
domainKK->x2lamda(atom->nlocal);
|
||||
atomKK->sync(Host,ALL_MASK);
|
||||
irregular->migrate_atoms();
|
||||
FixDeform::pre_exchange();
|
||||
atomKK->modified(Host,ALL_MASK);
|
||||
domainKK->lamda2x(atom->nlocal);
|
||||
|
||||
flip = 0;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixDeformKokkos::end_of_step()
|
||||
{
|
||||
int i;
|
||||
|
||||
double delta = update->ntimestep - update->beginstep;
|
||||
if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
||||
|
||||
// wrap variable evaluations with clear/add
|
||||
|
||||
if (varflag) modify->clearstep_compute();
|
||||
|
||||
// set new box size
|
||||
// for NONE, target is current box size
|
||||
// for TRATE, set target directly based on current time, also set h_rate
|
||||
// for WIGGLE, set target directly based on current time, also set h_rate
|
||||
// for VARIABLE, set target directly via variable eval, also set h_rate
|
||||
// for others except VOLUME, target is linear value between start and stop
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (set[i].style == NONE) {
|
||||
set[i].lo_target = domain->boxlo[i];
|
||||
set[i].hi_target = domain->boxhi[i];
|
||||
} else if (set[i].style == TRATE) {
|
||||
double delt = (update->ntimestep - update->beginstep) * update->dt;
|
||||
set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) -
|
||||
0.5*((set[i].hi_start-set[i].lo_start) * exp(set[i].rate*delt));
|
||||
set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) +
|
||||
0.5*((set[i].hi_start-set[i].lo_start) * exp(set[i].rate*delt));
|
||||
h_rate[i] = set[i].rate * domain->h[i];
|
||||
h_ratelo[i] = -0.5*h_rate[i];
|
||||
} else if (set[i].style == WIGGLE) {
|
||||
double delt = (update->ntimestep - update->beginstep) * update->dt;
|
||||
set[i].lo_target = set[i].lo_start -
|
||||
0.5*set[i].amplitude * sin(MY_2PI*delt/set[i].tperiod);
|
||||
set[i].hi_target = set[i].hi_start +
|
||||
0.5*set[i].amplitude * sin(MY_2PI*delt/set[i].tperiod);
|
||||
h_rate[i] = MY_2PI/set[i].tperiod * set[i].amplitude *
|
||||
cos(MY_2PI*delt/set[i].tperiod);
|
||||
h_ratelo[i] = -0.5*h_rate[i];
|
||||
} else if (set[i].style == VARIABLE) {
|
||||
double del = input->variable->compute_equal(set[i].hvar);
|
||||
set[i].lo_target = set[i].lo_start - 0.5*del;
|
||||
set[i].hi_target = set[i].hi_start + 0.5*del;
|
||||
h_rate[i] = input->variable->compute_equal(set[i].hratevar);
|
||||
h_ratelo[i] = -0.5*h_rate[i];
|
||||
} else if (set[i].style != VOLUME) {
|
||||
set[i].lo_target = set[i].lo_start +
|
||||
delta*(set[i].lo_stop - set[i].lo_start);
|
||||
set[i].hi_target = set[i].hi_start +
|
||||
delta*(set[i].hi_stop - set[i].hi_start);
|
||||
}
|
||||
}
|
||||
|
||||
// set new box size for VOLUME dims that are linked to other dims
|
||||
// NOTE: still need to set h_rate for these dims
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (set[i].style != VOLUME) continue;
|
||||
|
||||
if (set[i].substyle == ONE_FROM_ONE) {
|
||||
set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) -
|
||||
0.5*(set[i].vol_start /
|
||||
(set[set[i].dynamic1].hi_target -
|
||||
set[set[i].dynamic1].lo_target) /
|
||||
(set[set[i].fixed].hi_start-set[set[i].fixed].lo_start));
|
||||
set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) +
|
||||
0.5*(set[i].vol_start /
|
||||
(set[set[i].dynamic1].hi_target -
|
||||
set[set[i].dynamic1].lo_target) /
|
||||
(set[set[i].fixed].hi_start-set[set[i].fixed].lo_start));
|
||||
|
||||
} else if (set[i].substyle == ONE_FROM_TWO) {
|
||||
set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) -
|
||||
0.5*(set[i].vol_start /
|
||||
(set[set[i].dynamic1].hi_target -
|
||||
set[set[i].dynamic1].lo_target) /
|
||||
(set[set[i].dynamic2].hi_target -
|
||||
set[set[i].dynamic2].lo_target));
|
||||
set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) +
|
||||
0.5*(set[i].vol_start /
|
||||
(set[set[i].dynamic1].hi_target -
|
||||
set[set[i].dynamic1].lo_target) /
|
||||
(set[set[i].dynamic2].hi_target -
|
||||
set[set[i].dynamic2].lo_target));
|
||||
|
||||
} else if (set[i].substyle == TWO_FROM_ONE) {
|
||||
set[i].lo_target = 0.5*(set[i].lo_start+set[i].hi_start) -
|
||||
0.5*sqrt(set[i].vol_start /
|
||||
(set[set[i].dynamic1].hi_target -
|
||||
set[set[i].dynamic1].lo_target) /
|
||||
(set[set[i].fixed].hi_start -
|
||||
set[set[i].fixed].lo_start) *
|
||||
(set[i].hi_start - set[i].lo_start));
|
||||
set[i].hi_target = 0.5*(set[i].lo_start+set[i].hi_start) +
|
||||
0.5*sqrt(set[i].vol_start /
|
||||
(set[set[i].dynamic1].hi_target -
|
||||
set[set[i].dynamic1].lo_target) /
|
||||
(set[set[i].fixed].hi_start -
|
||||
set[set[i].fixed].lo_start) *
|
||||
(set[i].hi_start - set[i].lo_start));
|
||||
}
|
||||
}
|
||||
|
||||
// for triclinic, set new box shape
|
||||
// for NONE, target is current tilt
|
||||
// for TRATE, set target directly based on current time. also set h_rate
|
||||
// for WIGGLE, set target directly based on current time. also set h_rate
|
||||
// for VARIABLE, set target directly via variable eval. also set h_rate
|
||||
// for other styles, target is linear value between start and stop values
|
||||
|
||||
if (triclinic) {
|
||||
double *h = domain->h;
|
||||
|
||||
for (i = 3; i < 6; i++) {
|
||||
if (set[i].style == NONE) {
|
||||
if (i == 5) set[i].tilt_target = domain->xy;
|
||||
else if (i == 4) set[i].tilt_target = domain->xz;
|
||||
else if (i == 3) set[i].tilt_target = domain->yz;
|
||||
} else if (set[i].style == TRATE) {
|
||||
double delt = (update->ntimestep - update->beginstep) * update->dt;
|
||||
set[i].tilt_target = set[i].tilt_start * exp(set[i].rate*delt);
|
||||
h_rate[i] = set[i].rate * domain->h[i];
|
||||
} else if (set[i].style == WIGGLE) {
|
||||
double delt = (update->ntimestep - update->beginstep) * update->dt;
|
||||
set[i].tilt_target = set[i].tilt_start +
|
||||
set[i].amplitude * sin(MY_2PI*delt/set[i].tperiod);
|
||||
h_rate[i] = MY_2PI/set[i].tperiod * set[i].amplitude *
|
||||
cos(MY_2PI*delt/set[i].tperiod);
|
||||
} else if (set[i].style == VARIABLE) {
|
||||
double delta_tilt = input->variable->compute_equal(set[i].hvar);
|
||||
set[i].tilt_target = set[i].tilt_start + delta_tilt;
|
||||
h_rate[i] = input->variable->compute_equal(set[i].hratevar);
|
||||
} else {
|
||||
set[i].tilt_target = set[i].tilt_start +
|
||||
delta*(set[i].tilt_stop - set[i].tilt_start);
|
||||
}
|
||||
|
||||
// tilt_target can be large positive or large negative value
|
||||
// add/subtract box lengths until tilt_target is closest to current value
|
||||
|
||||
int idenom = 0;
|
||||
if (i == 5) idenom = 0;
|
||||
else if (i == 4) idenom = 0;
|
||||
else if (i == 3) idenom = 1;
|
||||
double denom = set[idenom].hi_target - set[idenom].lo_target;
|
||||
|
||||
double current = h[i]/h[idenom];
|
||||
|
||||
while (set[i].tilt_target/denom - current > 0.0)
|
||||
set[i].tilt_target -= denom;
|
||||
while (set[i].tilt_target/denom - current < 0.0)
|
||||
set[i].tilt_target += denom;
|
||||
if (fabs(set[i].tilt_target/denom - 1.0 - current) <
|
||||
fabs(set[i].tilt_target/denom - current))
|
||||
set[i].tilt_target -= denom;
|
||||
}
|
||||
}
|
||||
|
||||
if (varflag) modify->addstep_compute(update->ntimestep + nevery);
|
||||
|
||||
// if any tilt ratios exceed 0.5, set flip = 1 and compute new tilt values
|
||||
// do not flip in x or y if non-periodic (can tilt but not flip)
|
||||
// this is b/c the box length would be changed (dramatically) by flip
|
||||
// if yz tilt exceeded, adjust C vector by one B vector
|
||||
// if xz tilt exceeded, adjust C vector by one A vector
|
||||
// if xy tilt exceeded, adjust B vector by one A vector
|
||||
// check yz first since it may change xz, then xz check comes after
|
||||
// flip is performed on next timestep, before reneighboring in pre-exchange()
|
||||
|
||||
if (triclinic && flipflag) {
|
||||
double xprd = set[0].hi_target - set[0].lo_target;
|
||||
double yprd = set[1].hi_target - set[1].lo_target;
|
||||
double xprdinv = 1.0 / xprd;
|
||||
double yprdinv = 1.0 / yprd;
|
||||
if (set[3].tilt_target*yprdinv < -0.5 ||
|
||||
set[3].tilt_target*yprdinv > 0.5 ||
|
||||
set[4].tilt_target*xprdinv < -0.5 ||
|
||||
set[4].tilt_target*xprdinv > 0.5 ||
|
||||
set[5].tilt_target*xprdinv < -0.5 ||
|
||||
set[5].tilt_target*xprdinv > 0.5) {
|
||||
set[3].tilt_flip = set[3].tilt_target;
|
||||
set[4].tilt_flip = set[4].tilt_target;
|
||||
set[5].tilt_flip = set[5].tilt_target;
|
||||
|
||||
flipxy = flipxz = flipyz = 0;
|
||||
|
||||
if (domain->yperiodic) {
|
||||
if (set[3].tilt_flip*yprdinv < -0.5) {
|
||||
set[3].tilt_flip += yprd;
|
||||
set[4].tilt_flip += set[5].tilt_flip;
|
||||
flipyz = 1;
|
||||
} else if (set[3].tilt_flip*yprdinv > 0.5) {
|
||||
set[3].tilt_flip -= yprd;
|
||||
set[4].tilt_flip -= set[5].tilt_flip;
|
||||
flipyz = -1;
|
||||
}
|
||||
}
|
||||
if (domain->xperiodic) {
|
||||
if (set[4].tilt_flip*xprdinv < -0.5) {
|
||||
set[4].tilt_flip += xprd;
|
||||
flipxz = 1;
|
||||
}
|
||||
if (set[4].tilt_flip*xprdinv > 0.5) {
|
||||
set[4].tilt_flip -= xprd;
|
||||
flipxz = -1;
|
||||
}
|
||||
if (set[5].tilt_flip*xprdinv < -0.5) {
|
||||
set[5].tilt_flip += xprd;
|
||||
flipxy = 1;
|
||||
}
|
||||
if (set[5].tilt_flip*xprdinv > 0.5) {
|
||||
set[5].tilt_flip -= xprd;
|
||||
flipxy = -1;
|
||||
}
|
||||
}
|
||||
|
||||
flip = 0;
|
||||
if (flipxy || flipxz || flipyz) flip = 1;
|
||||
if (flip) next_reneighbor = update->ntimestep + 1;
|
||||
}
|
||||
}
|
||||
|
||||
// convert atoms and rigid bodies to lamda coords
|
||||
|
||||
if (remapflag == Domain::X_REMAP) {
|
||||
int nlocal = atom->nlocal;
|
||||
|
||||
domainKK->x2lamda(nlocal);
|
||||
|
||||
if (rfix.size() > 0) {
|
||||
atomKK->sync(Host,ALL_MASK);
|
||||
for (auto &ifix : rfix)
|
||||
ifix->deform(0);
|
||||
atomKK->modified(Host,ALL_MASK);
|
||||
}
|
||||
}
|
||||
|
||||
// reset global and local box to new size/shape
|
||||
// only if deform fix is controlling the dimension
|
||||
|
||||
if (set[0].style) {
|
||||
domain->boxlo[0] = set[0].lo_target;
|
||||
domain->boxhi[0] = set[0].hi_target;
|
||||
}
|
||||
if (set[1].style) {
|
||||
domain->boxlo[1] = set[1].lo_target;
|
||||
domain->boxhi[1] = set[1].hi_target;
|
||||
}
|
||||
if (set[2].style) {
|
||||
domain->boxlo[2] = set[2].lo_target;
|
||||
domain->boxhi[2] = set[2].hi_target;
|
||||
}
|
||||
if (triclinic) {
|
||||
if (set[3].style) domain->yz = set[3].tilt_target;
|
||||
if (set[4].style) domain->xz = set[4].tilt_target;
|
||||
if (set[5].style) domain->xy = set[5].tilt_target;
|
||||
}
|
||||
|
||||
domain->set_global_box();
|
||||
domain->set_local_box();
|
||||
|
||||
// convert atoms and rigid bodies back to box coords
|
||||
|
||||
if (remapflag == Domain::X_REMAP) {
|
||||
int nlocal = atom->nlocal;
|
||||
|
||||
domainKK->lamda2x(nlocal);
|
||||
|
||||
if (rfix.size() > 0) {
|
||||
atomKK->sync(Host,ALL_MASK);
|
||||
for (auto &ifix : rfix)
|
||||
ifix->deform(1);
|
||||
atomKK->modified(Host,ALL_MASK);
|
||||
}
|
||||
}
|
||||
|
||||
// redo KSpace coeffs since box has changed
|
||||
|
||||
if (kspace_flag) force->kspace->setup();
|
||||
atomKK->sync(Host,ALL_MASK);
|
||||
FixDeform::end_of_step();
|
||||
atomKK->modified(Host,ALL_MASK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -34,13 +34,9 @@ class FixDeformKokkos : public FixDeform {
|
||||
void pre_exchange() override;
|
||||
void end_of_step() override;
|
||||
|
||||
private:
|
||||
class DomainKokkos *domainKK;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@ -13,22 +13,23 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Trung Nguyen (U Chicago)
|
||||
Contributing authors: Trung Nguyen (U Chicago)
|
||||
Mitch Murphy (alphataubio at gmail)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_efield_kokkos.h"
|
||||
|
||||
#include "atom_kokkos.h"
|
||||
#include "update.h"
|
||||
#include "modify.h"
|
||||
#include "domain_kokkos.h"
|
||||
#include "region.h"
|
||||
#include "input.h"
|
||||
#include "variable.h"
|
||||
#include "memory_kokkos.h"
|
||||
#include "error.h"
|
||||
#include "atom_masks.h"
|
||||
#include "domain_kokkos.h"
|
||||
#include "error.h"
|
||||
#include "input.h"
|
||||
#include "kokkos_base.h"
|
||||
#include "memory_kokkos.h"
|
||||
#include "modify_kokkos.h"
|
||||
#include "region.h"
|
||||
#include "update.h"
|
||||
#include "variable.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
@ -44,12 +45,12 @@ FixEfieldKokkos<DeviceType>::FixEfieldKokkos(LAMMPS *lmp, int narg, char **arg)
|
||||
kokkosable = 1;
|
||||
atomKK = (AtomKokkos *) atom;
|
||||
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
|
||||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
datamask_read = X_MASK | F_MASK | TORQUE_MASK | Q_MASK | MU_MASK | IMAGE_MASK | MASK_MASK;
|
||||
datamask_modify = F_MASK | TORQUE_MASK;
|
||||
|
||||
memory->destroy(efield);
|
||||
memoryKK->create_kokkos(k_efield,efield,maxatom,4,"efield:efield");
|
||||
d_efield = k_efield.view<DeviceType>();
|
||||
d_efield = k_efield.template view<DeviceType>();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
@ -60,7 +61,7 @@ FixEfieldKokkos<DeviceType>::~FixEfieldKokkos()
|
||||
if (copymode) return;
|
||||
|
||||
memoryKK->destroy_kokkos(k_efield,efield);
|
||||
efield = nullptr;
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
@ -77,17 +78,30 @@ void FixEfieldKokkos<DeviceType>::init()
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void FixEfieldKokkos<DeviceType>::post_force(int /*vflag*/)
|
||||
void FixEfieldKokkos<DeviceType>::post_force(int vflag)
|
||||
{
|
||||
atomKK->sync(execution_space, X_MASK | F_MASK | Q_MASK | IMAGE_MASK | MASK_MASK);
|
||||
atomKK->sync(execution_space, datamask_read);
|
||||
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
f = atomKK->k_f.view<DeviceType>();
|
||||
q = atomKK->k_q.view<DeviceType>();
|
||||
image = atomKK->k_image.view<DeviceType>();
|
||||
mask = atomKK->k_mask.view<DeviceType>();
|
||||
d_x = atomKK->k_x.template view<DeviceType>();
|
||||
d_f = atomKK->k_f.template view<DeviceType>();
|
||||
d_q = atomKK->k_q.template view<DeviceType>();
|
||||
d_mu = atomKK->k_mu.template view<DeviceType>();
|
||||
d_torque = atomKK->k_torque.template view<DeviceType>();
|
||||
d_image = atomKK->k_image.template view<DeviceType>();
|
||||
d_mask = atomKK->k_mask.template view<DeviceType>();
|
||||
int nlocal = atomKK->nlocal;
|
||||
|
||||
int nlocal = atom->nlocal;
|
||||
// virial setup
|
||||
|
||||
v_init(vflag);
|
||||
|
||||
// reallocate per-atom arrays if necessary
|
||||
|
||||
if (vflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"efield:vatom");
|
||||
d_vatom = k_vatom.template view<DeviceType>();
|
||||
}
|
||||
|
||||
// update region if necessary
|
||||
|
||||
@ -111,53 +125,24 @@ void FixEfieldKokkos<DeviceType>::post_force(int /*vflag*/)
|
||||
d_efield = k_efield.view<DeviceType>();
|
||||
}
|
||||
|
||||
fsum[0] = fsum[1] = fsum[2] = fsum[3] = 0.0;
|
||||
double_4 fsum_kk;
|
||||
force_flag = 0;
|
||||
double result[10] = {0.0};
|
||||
|
||||
if (varflag == CONSTANT) {
|
||||
|
||||
prd = domain->prd;
|
||||
h = domain->h;
|
||||
triclinic = domain->triclinic;
|
||||
copymode = 1;
|
||||
|
||||
// It would be more concise to use the operators below, but there is still an issue with unwrap (TODO below)
|
||||
//Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant>(0,nlocal),*this,fsum_kk);
|
||||
|
||||
{
|
||||
// local variables for lambda capture
|
||||
auto prd = Few<double,3>(domain->prd);
|
||||
auto h = Few<double,6>(domain->h);
|
||||
auto triclinic = domain->triclinic;
|
||||
auto l_ex = ex;
|
||||
auto l_ey = ey;
|
||||
auto l_ez = ez;
|
||||
|
||||
auto l_x = x;
|
||||
auto l_q = q;
|
||||
auto l_f = f;
|
||||
auto l_mask = mask;
|
||||
auto l_image = image;
|
||||
auto l_groupbit = groupbit;
|
||||
|
||||
Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(const int& i, double_4& fsum_kk) {
|
||||
if (l_mask[i] & l_groupbit) {
|
||||
Few<double,3> x_i;
|
||||
x_i[0] = l_x(i,0);
|
||||
x_i[1] = l_x(i,1);
|
||||
x_i[2] = l_x(i,2);
|
||||
auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,l_image(i));
|
||||
auto qtmp = l_q(i);
|
||||
auto fx = qtmp * l_ex;
|
||||
auto fy = qtmp * l_ey;
|
||||
auto fz = qtmp * l_ez;
|
||||
l_f(i,0) += fx;
|
||||
l_f(i,1) += fy;
|
||||
l_f(i,2) += fz;
|
||||
fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2];
|
||||
fsum_kk.d1 += fx;
|
||||
fsum_kk.d2 += fy;
|
||||
fsum_kk.d3 += fz;
|
||||
}
|
||||
},fsum_kk);
|
||||
}
|
||||
if(qflag && muflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<1,1> >(0,nlocal),*this,result);
|
||||
else if(qflag && !muflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<1,0> >(0,nlocal),*this,result);
|
||||
else if(!qflag && muflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<0,1> >(0,nlocal),*this,result);
|
||||
else
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<0,0> >(0,nlocal),*this,result);
|
||||
|
||||
copymode = 0;
|
||||
|
||||
@ -167,19 +152,7 @@ void FixEfieldKokkos<DeviceType>::post_force(int /*vflag*/)
|
||||
|
||||
atomKK->sync(Host,ALL_MASK); // this can be removed when variable class is ported to Kokkos
|
||||
|
||||
modify->clearstep_compute();
|
||||
|
||||
if (xstyle == EQUAL) ex = input->variable->compute_equal(xvar);
|
||||
else if (xstyle == ATOM)
|
||||
input->variable->compute_atom(xvar,igroup,&efield[0][0],4,0);
|
||||
if (ystyle == EQUAL) ey = input->variable->compute_equal(yvar);
|
||||
else if (ystyle == ATOM)
|
||||
input->variable->compute_atom(yvar,igroup,&efield[0][1],4,0);
|
||||
if (zstyle == EQUAL) ez = input->variable->compute_equal(zvar);
|
||||
else if (zstyle == ATOM)
|
||||
input->variable->compute_atom(zvar,igroup,&efield[0][2],4,0);
|
||||
|
||||
modify->addstep_compute(update->ntimestep + 1);
|
||||
FixEfield::update_efield_variables();
|
||||
|
||||
if (varflag == ATOM) { // this can be removed when variable class is ported to Kokkos
|
||||
k_efield.modify<LMPHostType>();
|
||||
@ -187,121 +160,154 @@ void FixEfieldKokkos<DeviceType>::post_force(int /*vflag*/)
|
||||
}
|
||||
|
||||
copymode = 1;
|
||||
// It would be more concise to use the operators below, but there is still an issue with unwrap (TODO below)
|
||||
//Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant>(0,nlocal),*this,fsum_kk);
|
||||
{
|
||||
// local variables for lambda capture
|
||||
auto prd = Few<double,3>(domain->prd);
|
||||
auto h = Few<double,6>(domain->h);
|
||||
auto triclinic = domain->triclinic;
|
||||
auto l_ex = ex;
|
||||
auto l_ey = ey;
|
||||
auto l_ez = ez;
|
||||
auto l_d_efield = d_efield;
|
||||
|
||||
auto l_x = x;
|
||||
auto l_q = q;
|
||||
auto l_f = f;
|
||||
auto l_mask = mask;
|
||||
auto l_image = image;
|
||||
auto l_groupbit = groupbit;
|
||||
auto l_xstyle = xstyle;
|
||||
auto l_ystyle = ystyle;
|
||||
auto l_zstyle = zstyle;
|
||||
|
||||
Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(const int& i, double_4& fsum_kk) {
|
||||
if (l_mask[i] & l_groupbit) {
|
||||
Few<double,3> x_i;
|
||||
x_i[0] = l_x(i,0);
|
||||
x_i[1] = l_x(i,1);
|
||||
x_i[2] = l_x(i,2);
|
||||
auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,l_image(i));
|
||||
auto qtmp = l_q(i);
|
||||
auto fx = qtmp * l_ex;
|
||||
auto fy = qtmp * l_ey;
|
||||
auto fz = qtmp * l_ez;
|
||||
if (l_xstyle == ATOM) l_f(i,0) += qtmp * l_d_efield(i,0);
|
||||
else if (l_xstyle) l_f(i,0) += fx;
|
||||
if (l_ystyle == ATOM) l_f(i,1) += qtmp * l_d_efield(i,1);
|
||||
else if (l_ystyle) l_f(i,1) += fy;
|
||||
if (l_zstyle == ATOM) l_f(i,2) += qtmp * l_d_efield(i,2);
|
||||
else if (l_zstyle) l_f(i,2) += fz;
|
||||
fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2];
|
||||
fsum_kk.d1 += fx;
|
||||
fsum_kk.d2 += fy;
|
||||
fsum_kk.d3 += fz;
|
||||
}
|
||||
},fsum_kk);
|
||||
}
|
||||
if(qflag && muflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<1,1> >(0,nlocal),*this,result);
|
||||
else if(qflag && !muflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<1,0> >(0,nlocal),*this,result);
|
||||
else if(!qflag && muflag)
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<0,1> >(0,nlocal),*this,result);
|
||||
else
|
||||
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<0,0> >(0,nlocal),*this,result);
|
||||
|
||||
copymode = 0;
|
||||
|
||||
}
|
||||
|
||||
atomKK->modified(execution_space, F_MASK);
|
||||
atomKK->modified(execution_space, datamask_modify);
|
||||
|
||||
fsum[0] = fsum_kk.d0;
|
||||
fsum[1] = fsum_kk.d1;
|
||||
fsum[2] = fsum_kk.d2;
|
||||
fsum[3] = fsum_kk.d3;
|
||||
}
|
||||
fsum[0]=result[0];
|
||||
fsum[1]=result[1];
|
||||
fsum[2]=result[2];
|
||||
fsum[3]=result[3];
|
||||
|
||||
template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldConstant, const int &i, double_4& fsum_kk) const {
|
||||
if (mask[i] & groupbit) {
|
||||
if (region && !d_match[i]) return;
|
||||
if (vflag_global) {
|
||||
virial[0] += result[4];
|
||||
virial[1] += result[5];
|
||||
virial[2] += result[6];
|
||||
virial[3] += result[7];
|
||||
virial[4] += result[8];
|
||||
virial[5] += result[9];
|
||||
}
|
||||
|
||||
auto prd = Few<double,3>(domain->prd);
|
||||
auto h = Few<double,6>(domain->h);
|
||||
auto triclinic = domain->triclinic;
|
||||
Few<double,3> x_i;
|
||||
x_i[0] = x(i,0);
|
||||
x_i[1] = x(i,1);
|
||||
x_i[2] = x(i,2);
|
||||
auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i));
|
||||
const F_FLOAT qtmp = q(i);
|
||||
const F_FLOAT fx = qtmp * ex;
|
||||
const F_FLOAT fy = qtmp * ey;
|
||||
const F_FLOAT fz = qtmp * ez;
|
||||
f(i,0) += fx;
|
||||
f(i,1) += fy;
|
||||
f(i,2) += fz;
|
||||
// TODO: access to unwrap below crashes
|
||||
fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2];
|
||||
fsum_kk.d1 += fx;
|
||||
fsum_kk.d2 += fy;
|
||||
fsum_kk.d3 += fz;
|
||||
if (vflag_atom) {
|
||||
k_vatom.template modify<DeviceType>();
|
||||
k_vatom.template sync<LMPHostType>();
|
||||
}
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<int QFLAG, int MUFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldNonConstant, const int &i, double_4& fsum_kk) const {
|
||||
auto prd = Few<double,3>(domain->prd);
|
||||
auto h = Few<double,6>(domain->h);
|
||||
auto triclinic = domain->triclinic;
|
||||
if (mask[i] & groupbit) {
|
||||
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldConstant<QFLAG,MUFLAG>, const int &i, value_type result) const {
|
||||
if ( QFLAG && (d_mask(i) & groupbit)) {
|
||||
if (region && !d_match[i]) return;
|
||||
|
||||
Few<double,3> x_i;
|
||||
x_i[0] = x(i,0);
|
||||
x_i[1] = x(i,1);
|
||||
x_i[2] = x(i,2);
|
||||
auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i));
|
||||
const F_FLOAT qtmp = q[i];
|
||||
const F_FLOAT fx = qtmp * ex;
|
||||
const F_FLOAT fy = qtmp * ey;
|
||||
const F_FLOAT fz = qtmp * ez;
|
||||
if (xstyle == ATOM) f(i,0) += d_efield(i,0);
|
||||
else if (xstyle) f(i,0) += fx;
|
||||
if (ystyle == ATOM) f(i,1) += d_efield(i,1);
|
||||
else if (ystyle) f(i,1) += fy;
|
||||
if (zstyle == ATOM) f(i,2) += d_efield(i,2);
|
||||
else if (zstyle) f(i,2) += fz;
|
||||
// TODO: access to unwrap below crashes
|
||||
fsum_kk.d0 -= fx * unwrap[0] + fy * unwrap[1] + fz * unwrap[2];
|
||||
fsum_kk.d1 += fx;
|
||||
fsum_kk.d2 += fy;
|
||||
fsum_kk.d3 += fz;
|
||||
x_i[0] = d_x(i,0);
|
||||
x_i[1] = d_x(i,1);
|
||||
x_i[2] = d_x(i,2);
|
||||
auto unwrapKK = DomainKokkos::unmap(prd,h,triclinic,x_i,d_image(i));
|
||||
const F_FLOAT fx = d_q(i) * ex;
|
||||
const F_FLOAT fy = d_q(i) * ey;
|
||||
const F_FLOAT fz = d_q(i) * ez;
|
||||
d_f(i,0) += fx;
|
||||
d_f(i,1) += fy;
|
||||
d_f(i,2) += fz;
|
||||
result[0] -= fx * unwrapKK[0] + fy * unwrapKK[1] + fz * unwrapKK[2];
|
||||
result[1] += fx;
|
||||
result[2] += fy;
|
||||
result[3] += fz;
|
||||
|
||||
if (evflag) {
|
||||
double v[6];
|
||||
v[0] = fx * unwrapKK[0];
|
||||
v[1] = fy * unwrapKK[1];
|
||||
v[2] = fz * unwrapKK[2];
|
||||
v[3] = fx * unwrapKK[1];
|
||||
v[4] = fx * unwrapKK[2];
|
||||
v[5] = fy * unwrapKK[2];
|
||||
v_tally(result, i, v);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (MUFLAG && (d_mask(i) & groupbit)) {
|
||||
if (region && !d_match[i]) return;
|
||||
d_torque(i,0) += ez * d_mu(i,1) - ey * d_mu(i,2);
|
||||
d_torque(i,1) += ex * d_mu(i,2) - ez * d_mu(i,0);
|
||||
d_torque(i,2) += ey * d_mu(i,0) - ex * d_mu(i,1);
|
||||
result[0] -= d_mu(i,0) * ex + d_mu(i,1) * ey + d_mu(i,2) * ez;
|
||||
}
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<int QFLAG, int MUFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldNonConstant<QFLAG,MUFLAG>, const int &i, value_type result) const {
|
||||
if ( QFLAG && (d_mask(i) & groupbit)) {
|
||||
if (region && !d_match[i]) return;
|
||||
|
||||
F_FLOAT fx, fy, fz;
|
||||
|
||||
if (xstyle == ATOM) fx = qe2f * d_q(i) * d_efield(i,0);
|
||||
else fx = d_q(i) * ex;
|
||||
if (ystyle == ATOM) fy = qe2f * d_q(i) * d_efield(i,1);
|
||||
else fy = d_q(i) * ey;
|
||||
if (zstyle == ATOM) fz = qe2f * d_q(i) * d_efield(i,2);
|
||||
else fz = d_q(i) * ez;
|
||||
|
||||
d_f(i,0) += fx;
|
||||
d_f(i,1) += fy;
|
||||
d_f(i,2) += fz;
|
||||
result[1] += fx;
|
||||
result[2] += fy;
|
||||
result[3] += fz;
|
||||
|
||||
if (pstyle == ATOM) result[0] += qe2f * d_q(i) * d_efield(i,3);
|
||||
else if (estyle == ATOM) result[0] += d_efield(i,3);
|
||||
}
|
||||
|
||||
if (MUFLAG && (d_mask(i) & groupbit)) {
|
||||
if (region && !d_match[i]) return;
|
||||
d_torque(i,0) += ez * d_mu(i,1) - ey * d_mu(i,2);
|
||||
d_torque(i,1) += ex * d_mu(i,2) - ez * d_mu(i,0);
|
||||
d_torque(i,2) += ey * d_mu(i,0) - ex * d_mu(i,1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
tally virial into global and per-atom accumulators
|
||||
i = local index of atom
|
||||
v = total virial for the interaction
|
||||
increment global virial by v
|
||||
increment per-atom virial by v
|
||||
this method can be used when fix computes forces in post_force()
|
||||
and the force depends on a distance to some external object
|
||||
e.g. fix wall/lj93: compute virial only on owned atoms
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template <class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixEfieldKokkos<DeviceType>::v_tally(value_type result, int i, double *v) const
|
||||
{
|
||||
if (vflag_global) {
|
||||
result[4] += v[0];
|
||||
result[5] += v[1];
|
||||
result[6] += v[2];
|
||||
result[7] += v[3];
|
||||
result[8] += v[4];
|
||||
result[9] += v[5];
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
Kokkos::atomic_add(&(d_vatom(i,0)),v[0]);
|
||||
Kokkos::atomic_add(&(d_vatom(i,1)),v[1]);
|
||||
Kokkos::atomic_add(&(d_vatom(i,2)),v[2]);
|
||||
Kokkos::atomic_add(&(d_vatom(i,3)),v[3]);
|
||||
Kokkos::atomic_add(&(d_vatom(i,4)),v[4]);
|
||||
Kokkos::atomic_add(&(d_vatom(i,5)),v[5]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -311,4 +317,3 @@ template class FixEfieldKokkos<LMPDeviceType>;
|
||||
template class FixEfieldKokkos<LMPHostType>;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -25,35 +25,20 @@ FixStyle(efield/kk/host,FixEfieldKokkos<LMPHostType>);
|
||||
|
||||
#include "fix_efield.h"
|
||||
#include "kokkos_type.h"
|
||||
#include "kokkos_few.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
struct e_double_4 {
|
||||
double d0, d1, d2, d3;
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
e_double_4() {
|
||||
d0 = d1 = d2 = d3 = 0.0;
|
||||
}
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
e_double_4& operator+=(const e_double_4 &rhs) {
|
||||
d0 += rhs.d0;
|
||||
d1 += rhs.d1;
|
||||
d2 += rhs.d2;
|
||||
d3 += rhs.d3;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
typedef e_double_4 double_4;
|
||||
|
||||
template<int QFLAG, int MUFLAG>
|
||||
struct TagFixEfieldConstant{};
|
||||
|
||||
template<int QFLAG, int MUFLAG>
|
||||
struct TagFixEfieldNonConstant{};
|
||||
|
||||
template<class DeviceType>
|
||||
class FixEfieldKokkos : public FixEfield {
|
||||
public:
|
||||
typedef DeviceType device_type;
|
||||
typedef double_4 value_type;
|
||||
typedef ArrayTypes<DeviceType> AT;
|
||||
|
||||
FixEfieldKokkos(class LAMMPS *, int, char **);
|
||||
@ -61,22 +46,40 @@ class FixEfieldKokkos : public FixEfield {
|
||||
void init() override;
|
||||
void post_force(int) override;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagFixEfieldConstant, const int&, double_4&) const;
|
||||
typedef double value_type[];
|
||||
const int value_count = 10;
|
||||
|
||||
template<int QFLAG, int MUFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagFixEfieldNonConstant, const int&, double_4&) const;
|
||||
void operator()(TagFixEfieldConstant<QFLAG,MUFLAG>, const int&, value_type) const;
|
||||
|
||||
template<int QFLAG, int MUFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagFixEfieldNonConstant<QFLAG,MUFLAG>, const int&, value_type) const;
|
||||
|
||||
private:
|
||||
|
||||
DAT::tdual_ffloat_2d k_efield;
|
||||
typename AT::t_ffloat_2d_randomread d_efield;
|
||||
typename AT::t_int_1d d_match;
|
||||
|
||||
typename AT::t_x_array_randomread x;
|
||||
typename AT::t_float_1d_randomread q;
|
||||
typename AT::t_f_array f;
|
||||
typename AT::t_imageint_1d_randomread image;
|
||||
typename AT::t_int_1d_randomread mask;
|
||||
typename AT::t_x_array_randomread d_x;
|
||||
typename AT::t_float_1d_randomread d_q;
|
||||
typename AT::t_mu_array_randomread d_mu;
|
||||
typename AT::t_f_array d_f;
|
||||
typename AT::t_f_array d_torque;
|
||||
typename AT::t_imageint_1d_randomread d_image;
|
||||
typename AT::t_int_1d_randomread d_mask;
|
||||
|
||||
Few<double,3> prd;
|
||||
Few<double,6> h;
|
||||
int triclinic;
|
||||
|
||||
DAT::tdual_virial_array k_vatom;
|
||||
typename AT::t_virial_array d_vatom;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void v_tally(value_type, int, double*) const;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -13,7 +13,8 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Stan Moore (SNL)
|
||||
Contributing authors: Stan Moore (SNL)
|
||||
Mitch Murphy (alphataubio@gmail.com)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_nh_kokkos.h"
|
||||
@ -37,6 +38,7 @@ using namespace FixConst;
|
||||
|
||||
static constexpr double DELTAFLIP = 0.1;
|
||||
static constexpr double TILTMAX = 1.5;
|
||||
static constexpr double EPSILON = 1.0e-6;
|
||||
|
||||
enum{NOBIAS,BIAS};
|
||||
enum{NONE,XYZ,XY,YZ,XZ};
|
||||
@ -50,6 +52,7 @@ template<class DeviceType>
|
||||
FixNHKokkos<DeviceType>::FixNHKokkos(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg)
|
||||
{
|
||||
kokkosable = 1;
|
||||
atomKK = (AtomKokkos *)atom;
|
||||
domainKK = (DomainKokkos *) domain;
|
||||
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
|
||||
|
||||
@ -89,18 +92,21 @@ void FixNHKokkos<DeviceType>::setup(int /*vflag*/)
|
||||
} else if (pstat_flag) {
|
||||
|
||||
// t0 = reference temperature for masses
|
||||
// set equal to either ptemp or the current temperature
|
||||
// cannot be done in init() b/c temperature cannot be called there
|
||||
// is b/c Modify::init() inits computes after fixes due to dof dependence
|
||||
// guesstimate a unit-dependent t0 if actual T = 0.0
|
||||
// error if T less than 1e-6
|
||||
// if it was read in from a restart file, leave it be
|
||||
|
||||
if (t0 == 0.0) {
|
||||
atomKK->sync(temperature->execution_space,temperature->datamask_read);
|
||||
t0 = temperature->compute_scalar();
|
||||
atomKK->modified(temperature->execution_space,temperature->datamask_modify);
|
||||
if (t0 == 0.0) {
|
||||
if (strcmp(update->unit_style,"lj") == 0) t0 = 1.0;
|
||||
else t0 = 300.0;
|
||||
if (p_temp_flag) {
|
||||
t0 = p_temp;
|
||||
} else {
|
||||
atomKK->sync(temperature->execution_space,temperature->datamask_read);
|
||||
t0 = temperature->compute_scalar();
|
||||
atomKK->modified(temperature->execution_space,temperature->datamask_modify);
|
||||
if (t0 < EPSILON)
|
||||
error->all(FLERR,"Current temperature too close to zero, consider using ptemp keyword");
|
||||
}
|
||||
}
|
||||
t_target = t0;
|
||||
@ -298,13 +304,14 @@ void FixNHKokkos<DeviceType>::remap()
|
||||
|
||||
// convert pertinent atoms and rigid bodies to lamda coords
|
||||
|
||||
domainKK->x2lamda(nlocal);
|
||||
//if (allremap) domainKK->x2lamda(nlocal);
|
||||
//else {
|
||||
// for (i = 0; i < nlocal; i++)
|
||||
// if (mask[i] & dilate_group_bit)
|
||||
// domain->x2lamda(x[i],x[i]);
|
||||
//}
|
||||
x = atomKK->k_x.template view<DeviceType>();
|
||||
|
||||
if (allremap) domainKK->x2lamda(nlocal);
|
||||
else {
|
||||
for ( int i = 0; i < nlocal; i++)
|
||||
if (mask[i] & dilate_group_bit)
|
||||
domainKK->x2lamda(&x(i,0), &x(i,0));
|
||||
}
|
||||
|
||||
if (rfix.size() > 0)
|
||||
error->all(FLERR,"Cannot (yet) use rigid bodies with fix nh and Kokkos");
|
||||
@ -446,13 +453,12 @@ void FixNHKokkos<DeviceType>::remap()
|
||||
|
||||
// convert pertinent atoms and rigid bodies back to box coords
|
||||
|
||||
domainKK->lamda2x(nlocal);
|
||||
//if (allremap) domainKK->lamda2x(nlocal);
|
||||
//else {
|
||||
// for (i = 0; i < nlocal; i++)
|
||||
// if (mask[i] & dilate_group_bit)
|
||||
// domain->lamda2x(x[i],x[i]);
|
||||
//}
|
||||
if (allremap) domainKK->lamda2x(nlocal);
|
||||
else {
|
||||
for ( int i = 0; i < nlocal; i++)
|
||||
if (mask[i] & dilate_group_bit)
|
||||
domainKK->lamda2x(&x(i,0), &x(i,0));
|
||||
}
|
||||
|
||||
// for (auto &ifix : rfix) ifix->deform(1);
|
||||
}
|
||||
|
||||
@ -12,11 +12,19 @@
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Mitch Murphy (alphataubio@gmail.com)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_wall_lj93_kokkos.h"
|
||||
|
||||
#include "atom_masks.h"
|
||||
#include "atom_kokkos.h"
|
||||
#include "error.h"
|
||||
#include "atom_masks.h"
|
||||
#include "input.h"
|
||||
#include "memory_kokkos.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
@ -29,9 +37,91 @@ FixWallLJ93Kokkos<DeviceType>::FixWallLJ93Kokkos(LAMMPS *lmp, int narg, char **a
|
||||
kokkosable = 1;
|
||||
atomKK = (AtomKokkos *) atom;
|
||||
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
|
||||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
virial_global_flag = virial_peratom_flag = 0;
|
||||
datamask_read = X_MASK | V_MASK | MASK_MASK;
|
||||
datamask_modify = F_MASK;
|
||||
|
||||
memoryKK->create_kokkos(k_cutoff,6,"wall_lj93:cutoff");
|
||||
memoryKK->create_kokkos(k_coeff1,6,"wall_lj93:coeff1");
|
||||
memoryKK->create_kokkos(k_coeff2,6,"wall_lj93:coeff2");
|
||||
memoryKK->create_kokkos(k_coeff3,6,"wall_lj93:coeff3");
|
||||
memoryKK->create_kokkos(k_coeff4,6,"wall_lj93:coeff4");
|
||||
memoryKK->create_kokkos(k_offset,6,"wall_lj93:offset");
|
||||
|
||||
d_cutoff = k_cutoff.template view<DeviceType>();
|
||||
d_coeff1 = k_coeff1.template view<DeviceType>();
|
||||
d_coeff2 = k_coeff2.template view<DeviceType>();
|
||||
d_coeff3 = k_coeff3.template view<DeviceType>();
|
||||
d_coeff4 = k_coeff4.template view<DeviceType>();
|
||||
d_offset = k_offset.template view<DeviceType>();
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
FixWallLJ93Kokkos<DeviceType>::~FixWallLJ93Kokkos()
|
||||
{
|
||||
if (copymode) return;
|
||||
|
||||
memoryKK->destroy_kokkos(k_cutoff);
|
||||
memoryKK->destroy_kokkos(k_coeff1);
|
||||
memoryKK->destroy_kokkos(k_coeff2);
|
||||
memoryKK->destroy_kokkos(k_coeff3);
|
||||
memoryKK->destroy_kokkos(k_coeff4);
|
||||
memoryKK->destroy_kokkos(k_offset);
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template <class DeviceType>
|
||||
void FixWallLJ93Kokkos<DeviceType>::precompute(int m)
|
||||
{
|
||||
FixWallLJ93::precompute(m);
|
||||
|
||||
for( int i=0 ; i<6 ; i++ ) {
|
||||
k_cutoff.h_view(i) = cutoff[i];
|
||||
k_coeff1.h_view(i) = coeff1[i];
|
||||
k_coeff2.h_view(i) = coeff2[i];
|
||||
k_coeff3.h_view(i) = coeff3[i];
|
||||
k_coeff4.h_view(i) = coeff4[i];
|
||||
k_offset.h_view(i) = offset[i];
|
||||
}
|
||||
|
||||
k_cutoff.template modify<LMPHostType>();
|
||||
k_coeff1.template modify<LMPHostType>();
|
||||
k_coeff2.template modify<LMPHostType>();
|
||||
k_coeff3.template modify<LMPHostType>();
|
||||
k_coeff4.template modify<LMPHostType>();
|
||||
k_offset.template modify<LMPHostType>();
|
||||
|
||||
k_cutoff.template sync<DeviceType>();
|
||||
k_coeff1.template sync<DeviceType>();
|
||||
k_coeff2.template sync<DeviceType>();
|
||||
k_coeff3.template sync<DeviceType>();
|
||||
k_coeff4.template sync<DeviceType>();
|
||||
k_offset.template sync<DeviceType>();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template <class DeviceType>
|
||||
void FixWallLJ93Kokkos<DeviceType>::post_force(int vflag)
|
||||
{
|
||||
|
||||
// reallocate per-atom arrays if necessary
|
||||
|
||||
if (vflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"wall_lj93:vatom");
|
||||
d_vatom = k_vatom.template view<DeviceType>();
|
||||
}
|
||||
|
||||
FixWallLJ93::post_force(vflag);
|
||||
|
||||
if (vflag_atom) {
|
||||
k_vatom.template modify<DeviceType>();
|
||||
k_vatom.template sync<LMPHostType>();
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
@ -47,47 +137,89 @@ void FixWallLJ93Kokkos<DeviceType>::wall_particle(int m_in, int which, double co
|
||||
m = m_in;
|
||||
coord = coord_in;
|
||||
|
||||
atomKK->sync(execution_space, X_MASK|F_MASK|MASK_MASK);
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
f = atomKK->k_f.view<DeviceType>();
|
||||
mask = atomKK->k_mask.view<DeviceType>();
|
||||
|
||||
int nlocal = atom->nlocal;
|
||||
atomKK->sync(execution_space,datamask_read);
|
||||
d_x = atomKK->k_x.template view<DeviceType>();
|
||||
d_f = atomKK->k_f.template view<DeviceType>();
|
||||
d_mask = atomKK->k_mask.template view<DeviceType>();
|
||||
int nlocal = atomKK->nlocal;
|
||||
|
||||
dim = which / 2;
|
||||
side = which % 2;
|
||||
if (side == 0) side = -1;
|
||||
|
||||
double result[13] = {0.0};
|
||||
|
||||
copymode = 1;
|
||||
FixWallLJ93KokkosFunctor<DeviceType> wp_functor(this);
|
||||
Kokkos::parallel_reduce(nlocal,wp_functor,ewall);
|
||||
Kokkos::parallel_reduce(nlocal,*this,result);
|
||||
copymode = 0;
|
||||
|
||||
atomKK->modified(execution_space, F_MASK);
|
||||
ewall[0] += result[0];
|
||||
ewall[m+1] += result[m+1];
|
||||
atomKK->modified(execution_space,datamask_modify);
|
||||
|
||||
if (vflag_global) {
|
||||
virial[0] += result[7];
|
||||
virial[1] += result[8];
|
||||
virial[2] += result[9];
|
||||
virial[3] += result[10];
|
||||
virial[4] += result[11];
|
||||
virial[5] += result[12];
|
||||
}
|
||||
}
|
||||
|
||||
template <class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixWallLJ93Kokkos<DeviceType>::wall_particle_item(int i, value_type ewall) const {
|
||||
if (mask(i) & groupbit) {
|
||||
void FixWallLJ93Kokkos<DeviceType>::operator()(const int &i, value_type result) const {
|
||||
if (d_mask(i) & groupbit) {
|
||||
double delta;
|
||||
if (side < 0) delta = x(i,dim) - coord;
|
||||
else delta = coord - x(i,dim);
|
||||
if (delta >= cutoff[m]) return;
|
||||
if (side < 0) delta = d_x(i,dim) - coord;
|
||||
else delta = coord - d_x(i,dim);
|
||||
if (delta >= d_cutoff(m)) return;
|
||||
if (delta <= 0.0)
|
||||
Kokkos::abort("Particle on or inside fix wall surface");
|
||||
double rinv = 1.0/delta;
|
||||
double r2inv = rinv*rinv;
|
||||
double r4inv = r2inv*r2inv;
|
||||
double r10inv = r4inv*r4inv*r2inv;
|
||||
double fwall = side * (coeff1[m]*r10inv - coeff2[m]*r4inv);
|
||||
f(i,dim) -= fwall;
|
||||
ewall[0] += coeff3[m]*r4inv*r4inv*rinv -
|
||||
coeff4[m]*r2inv*rinv - offset[m];
|
||||
ewall[m+1] += fwall;
|
||||
double fwall = side * (d_coeff1(m)*r10inv - d_coeff2(m)*r4inv);
|
||||
d_f(i,dim) -= fwall;
|
||||
result[0] += d_coeff3(m)*r4inv*r4inv*rinv - d_coeff4(m)*r2inv*rinv - d_offset(m);
|
||||
result[m+1] += fwall;
|
||||
|
||||
if (evflag) {
|
||||
double vn;
|
||||
if (side < 0)
|
||||
vn = -fwall * delta;
|
||||
else
|
||||
vn = fwall * delta;
|
||||
v_tally(result, dim, i, vn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
tally virial component into global and per-atom accumulators
|
||||
n = index of virial component (0-5)
|
||||
i = local index of atom
|
||||
vn = nth component of virial for the interaction
|
||||
increment nth component of global virial by vn
|
||||
increment nth component of per-atom virial by vn
|
||||
this method can be used when fix computes forces in post_force()
|
||||
and the force depends on a distance to some external object
|
||||
e.g. fix wall/lj93: compute virial only on owned atoms
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template <class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixWallLJ93Kokkos<DeviceType>::v_tally(value_type result, int n, int i, double vn) const
|
||||
{
|
||||
if (vflag_global)
|
||||
result[n+7] += vn;
|
||||
|
||||
if (vflag_atom)
|
||||
Kokkos::atomic_add(&(d_vatom(i,n)),vn);
|
||||
}
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
template class FixWallLJ93Kokkos<LMPDeviceType>;
|
||||
#ifdef LMP_KOKKOS_GPU
|
||||
|
||||
@ -33,38 +33,37 @@ class FixWallLJ93Kokkos : public FixWallLJ93 {
|
||||
public:
|
||||
typedef DeviceType device_type;
|
||||
typedef ArrayTypes<DeviceType> AT;
|
||||
typedef double value_type[];
|
||||
|
||||
FixWallLJ93Kokkos(class LAMMPS *, int, char **);
|
||||
~FixWallLJ93Kokkos() override;
|
||||
void precompute(int) override;
|
||||
void post_force(int) override;
|
||||
void wall_particle(int, int, double) override;
|
||||
|
||||
int m;
|
||||
|
||||
typedef double value_type[];
|
||||
const int value_count = 13;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void wall_particle_item(int, value_type) const;
|
||||
void operator()(const int&, value_type) const;
|
||||
|
||||
private:
|
||||
int dim,side;
|
||||
double coord;
|
||||
|
||||
typename AT::t_x_array x;
|
||||
typename AT::t_f_array f;
|
||||
typename AT::t_int_1d mask;
|
||||
};
|
||||
typename AT::t_x_array d_x;
|
||||
typename AT::t_f_array d_f;
|
||||
typename AT::t_int_1d d_mask;
|
||||
|
||||
template <class DeviceType>
|
||||
struct FixWallLJ93KokkosFunctor {
|
||||
typedef DeviceType device_type ;
|
||||
typedef double value_type[];
|
||||
const int value_count;
|
||||
DAT::tdual_virial_array k_vatom;
|
||||
typename AT::t_virial_array d_vatom;
|
||||
|
||||
typename AT::tdual_ffloat_1d k_cutoff,k_coeff1,k_coeff2,k_coeff3,k_coeff4,k_offset;
|
||||
typename AT::t_ffloat_1d d_cutoff,d_coeff1,d_coeff2,d_coeff3,d_coeff4,d_offset;
|
||||
|
||||
FixWallLJ93Kokkos<DeviceType> c;
|
||||
FixWallLJ93KokkosFunctor(FixWallLJ93Kokkos<DeviceType>* c_ptr):
|
||||
value_count(c_ptr->m+1), c(*c_ptr) {}
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(const int i, value_type ewall) const {
|
||||
c.wall_particle_item(i,ewall);
|
||||
}
|
||||
void v_tally(value_type, int, int, double) const;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -23,10 +23,6 @@
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
enum{XLO=0,XHI=1,YLO=2,YHI=3,ZLO=4,ZHI=5};
|
||||
enum{NONE=0,EDGE,CONSTANT,VARIABLE};
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
|
||||
@ -18,7 +18,7 @@ using namespace LAMMPS_NS;
|
||||
*
|
||||
* Copyright:
|
||||
* (C) 2012 Massachusetts Institute of Technology
|
||||
* (C) 2013 Forschungszentrum Jülich GmbH
|
||||
* (C) 2013 Forschungszentrum Juelich GmbH
|
||||
*
|
||||
* Licence:
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
@ -42,7 +42,7 @@ using namespace LAMMPS_NS;
|
||||
*
|
||||
* Authors:
|
||||
* Steven G. Johnson, Massachusetts Institute of Technology, 2012, core author
|
||||
* Joachim Wuttke, Forschungszentrum Jülich, 2013, package maintainer
|
||||
* Joachim Wuttke, Forschungszentrum Juelich, 2013, package maintainer
|
||||
*
|
||||
* Website:
|
||||
* https://jugit.fz-juelich.de/mlz/libcerf
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Ajinkya Hire (Univ. of Florida),
|
||||
Hendrik Kraß (Univ. of Constance),
|
||||
Hendrik Krass (Univ. of Constance),
|
||||
Matthias Rupp (Luxembourg Institute of Science and Technology),
|
||||
Richard Hennig (Univ of Florida)
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Ajinkya Hire (Univ. of Florida),
|
||||
Hendrik Kraß (Univ. of Constance),
|
||||
Hendrik Krass (Univ. of Constance),
|
||||
Matthias Rupp (Luxembourg Institute of Science and Technology),
|
||||
Richard Hennig (Univ of Florida)
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Dominik Wójt (Wroclaw University of Technology)
|
||||
Contributing author: Dominik Wojt (Wroclaw University of Technology)
|
||||
based on pair_airebo by Ase Henry (MIT)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ FixAtomSwap::FixAtomSwap(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
memory->create(type_list, atom->ntypes, "atom/swap:type_list");
|
||||
memory->create(mu, atom->ntypes + 1, "atom/swap:mu");
|
||||
for (int i = 1; i <= atom->ntypes; i++) mu[i] = 0.0;
|
||||
for (int i = 0; i <= atom->ntypes; i++) mu[i] = 0.0;
|
||||
|
||||
// read options from end of input line
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Sebastian Hütter (OvGU)
|
||||
Contributing author: Sebastian Huetter (OvGU)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "meam.h"
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Sebastian Hütter (OvGU)
|
||||
Contributing author: Sebastian Huetter (OvGU)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "meam.h"
|
||||
|
||||
@ -829,7 +829,7 @@ void MEAM::get_densref(double r, int a, int b, double* rho01, double* rho11, dou
|
||||
case L12:
|
||||
*rho01 = 8 * rhoa01 + 4 * rhoa02;
|
||||
*rho02 = 12 * rhoa01;
|
||||
if (ialloy ==1){
|
||||
if (ialloy == 1) {
|
||||
*rho21 = 8. / 3. * MathSpecial::square(rhoa21 * t2_meam[a] - rhoa22 * t2_meam[b]);
|
||||
denom = 8 * rhoa01 * MathSpecial::square(t2_meam[a]) + 4 * rhoa02 * MathSpecial::square(t2_meam[b]);
|
||||
if (denom > 0.)
|
||||
@ -837,6 +837,7 @@ void MEAM::get_densref(double r, int a, int b, double* rho01, double* rho11, dou
|
||||
} else
|
||||
*rho21 = 8. / 3. * (rhoa21 - rhoa22) * (rhoa21 - rhoa22);
|
||||
if (msmeamflag) {
|
||||
*rho21 = 8. / 3. * (rhoa21 - rhoa22) * (rhoa21 - rhoa22);
|
||||
*rho2m1 = 8. / 3. * (rhoa2m1 - rhoa2m2) * (rhoa2m1 - rhoa2m2);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -547,9 +547,9 @@ void PairMEAM::read_user_meam_file(const std::string &userfile)
|
||||
|
||||
// open user param file on proc 0
|
||||
|
||||
std::shared_ptr<PotentialFileReader> reader;
|
||||
PotentialFileReader *reader = nullptr;
|
||||
|
||||
if (comm->me == 0) reader = std::make_shared<PotentialFileReader>(lmp, userfile, "MEAM");
|
||||
if (comm->me == 0) reader = new PotentialFileReader(lmp, userfile, "MEAM");
|
||||
|
||||
// read settings
|
||||
// pass them one at a time to MEAM package
|
||||
@ -623,6 +623,7 @@ void PairMEAM::read_user_meam_file(const std::string &userfile)
|
||||
keyword, descr[errorflag]);
|
||||
}
|
||||
}
|
||||
if (comm->me == 0) delete reader;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -40,7 +40,7 @@ using namespace FixConst;
|
||||
* Please cite:
|
||||
* Ceriotti, M., More, J., & Manolopoulos, D. E. (2014).
|
||||
* i-PI: A Python interface for ab initio path integral molecular dynamics simulations.
|
||||
* Computer Physics Communications, 185, 1019–1026. doi:10.1016/j.cpc.2013.10.027
|
||||
* Computer Physics Communications, 185, 1019-1026. doi:10.1016/j.cpc.2013.10.027
|
||||
* And see [https://github.com/i-pi/i-pi] to download a version of i-PI
|
||||
******************************************************************************************/
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Pedro Antonio Santos Flórez (UNLV)
|
||||
Contributing author: Pedro Antonio Santos Florez (UNLV)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "mliap_model_nn.h"
|
||||
|
||||
@ -1580,8 +1580,8 @@ double SNA::compute_dsfac(double r, double rcut, double sinner, double dinner)
|
||||
else if (r <= rmin0) sfac_outer = 1.0;
|
||||
else if (r > rcut) sfac_outer = 0.0;
|
||||
else {
|
||||
double rcutfac = MY_PI / (rcut - rmin0);
|
||||
sfac_outer = 0.5 * (cos((r - rmin0) * rcutfac) + 1.0);
|
||||
double rcutfac = MY_PI / (rcut - rmin0);
|
||||
sfac_outer = 0.5 * (cos((r - rmin0) * rcutfac) + 1.0);
|
||||
}
|
||||
|
||||
// calculate sfac_inner
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Ajinkya Hire (Univ. of Florida),
|
||||
Hendrik Kraß (Univ. of Constance),
|
||||
Hendrik Krass (Univ. of Constance),
|
||||
Matthias Rupp (Luxembourg Institute of Science and Technology),
|
||||
Richard Hennig (Univ of Florida)
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Ajinkya Hire (Univ. of Florida),
|
||||
Hendrik Kraß (Univ. of Constance),
|
||||
Hendrik Krass (Univ. of Constance),
|
||||
Matthias Rupp (Luxembourg Institute of Science and Technology),
|
||||
Richard Hennig (Univ of Florida)
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
@ -291,3 +291,15 @@ void AngleCosineSquared::born_matrix(int type, int i1, int i2, int i3, double &d
|
||||
du2 = 2 * k[type];
|
||||
du = du2 * dcostheta;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
return ptr to internal members upon request
|
||||
------------------------------------------------------------------------ */
|
||||
|
||||
void *AngleCosineSquared::extract(const char *str, int &dim)
|
||||
{
|
||||
dim = 1;
|
||||
if (strcmp(str, "k") == 0) return (void *) k;
|
||||
if (strcmp(str, "theta0") == 0) return (void *) theta0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@ class AngleCosineSquared : public Angle {
|
||||
void write_data(FILE *) override;
|
||||
double single(int, int, int, int) override;
|
||||
void born_matrix(int type, int i1, int i2, int i3, double &du, double &du2) override;
|
||||
void *extract(const char *, int &) override;
|
||||
|
||||
protected:
|
||||
double *k, *theta0;
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
// clang-format off
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
@ -49,36 +48,31 @@ static const char plumed_default_kernel[] = "PLUMED_KERNEL=" PLUMED_QUOTE(__PLUM
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
|
||||
FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) :
|
||||
Fix(lmp, narg, arg),
|
||||
p(nullptr), nlocal(0), gatindex(nullptr), masses(nullptr), charges(nullptr),
|
||||
id_pe(nullptr), id_press(nullptr)
|
||||
Fix(lmp, narg, arg), p(nullptr), nlocal(0), gatindex(nullptr), masses(nullptr),
|
||||
charges(nullptr), id_pe(nullptr), id_press(nullptr)
|
||||
{
|
||||
|
||||
if (!atom->tag_enable)
|
||||
error->all(FLERR,"Fix plumed requires atom tags");
|
||||
if (!atom->tag_enable) error->all(FLERR, "Fix plumed requires atom tags");
|
||||
|
||||
if (atom->tag_consecutive() == 0)
|
||||
error->all(FLERR,"Fix plumed requires consecutive atom IDs");
|
||||
if (atom->tag_consecutive() == 0) error->all(FLERR, "Fix plumed requires consecutive atom IDs");
|
||||
|
||||
if (igroup != 0 && comm->me == 0)
|
||||
error->warning(FLERR,"Fix group for fix plumed is not 'all'. "
|
||||
"Group will be ignored.");
|
||||
error->warning(FLERR, "Fix group for fix plumed is not 'all'. Group will be ignored.");
|
||||
|
||||
#if defined(__PLUMED_DEFAULT_KERNEL)
|
||||
if (getenv("PLUMED_KERNEL") == nullptr)
|
||||
platform::putenv(plumed_default_kernel);
|
||||
if (getenv("PLUMED_KERNEL") == nullptr) platform::putenv(plumed_default_kernel);
|
||||
#endif
|
||||
|
||||
p=new PLMD::Plumed;
|
||||
p = new PLMD::Plumed;
|
||||
|
||||
// Check API version
|
||||
|
||||
int api_version=0;
|
||||
p->cmd("getApiVersion",&api_version);
|
||||
int api_version = 0;
|
||||
p->cmd("getApiVersion", &api_version);
|
||||
if ((api_version < 5) || (api_version > 10))
|
||||
error->all(FLERR,"Incompatible API version for PLUMED in fix plumed. "
|
||||
error->all(FLERR,
|
||||
"Incompatible API version for PLUMED in fix plumed. "
|
||||
"Only Plumed 2.4.x, 2.5.x, 2.6.x, 2.7.x, 2.8.x, 2.9.x are tested and supported.");
|
||||
|
||||
#if !defined(MPI_STUBS)
|
||||
@ -86,21 +80,19 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) :
|
||||
// inter-partition communication
|
||||
|
||||
if (universe->existflag == 1) {
|
||||
int me;
|
||||
MPI_Comm inter_comm;
|
||||
MPI_Comm_rank(world,&me);
|
||||
|
||||
// Change MPI_COMM_WORLD to universe->uworld which seems more appropriate
|
||||
|
||||
MPI_Comm_split(universe->uworld,me,0,&inter_comm);
|
||||
p->cmd("GREX setMPIIntracomm",&world);
|
||||
if (me == 0) {
|
||||
MPI_Comm_split(universe->uworld, comm->me, 0, &inter_comm);
|
||||
p->cmd("GREX setMPIIntracomm", &world);
|
||||
if (comm->me == 0) {
|
||||
// The inter-partition communicator is only defined for the root in
|
||||
// each partition (a.k.a. world). This is due to the way in which
|
||||
// it is defined inside plumed.
|
||||
p->cmd("GREX setMPIIntercomm",&inter_comm);
|
||||
p->cmd("GREX setMPIIntercomm", &inter_comm);
|
||||
}
|
||||
p->cmd("GREX init",nullptr);
|
||||
p->cmd("GREX init", nullptr);
|
||||
}
|
||||
|
||||
// The general communicator is independent of the existence of partitions,
|
||||
@ -110,100 +102,103 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
// plumed does not know about LAMMPS using the MPI STUBS library and will
|
||||
// fail if this is called under these circumstances
|
||||
p->cmd("setMPIComm",&world);
|
||||
p->cmd("setMPIComm", &world);
|
||||
#endif
|
||||
|
||||
// Set up units
|
||||
// LAMMPS units wrt kj/mol - nm - ps
|
||||
// Set up units
|
||||
|
||||
if (strcmp(update->unit_style,"lj") == 0) {
|
||||
if (strcmp(update->unit_style, "lj") == 0) {
|
||||
// LAMMPS units lj
|
||||
p->cmd("setNaturalUnits");
|
||||
} else {
|
||||
|
||||
// Conversion factor from LAMMPS energy units to kJ/mol (units of PLUMED)
|
||||
|
||||
double energyUnits=1.0;
|
||||
double energyUnits = 1.0;
|
||||
|
||||
// LAMMPS units real :: kcal/mol;
|
||||
|
||||
if (strcmp(update->unit_style,"real") == 0) {
|
||||
energyUnits=4.184;
|
||||
if (strcmp(update->unit_style, "real") == 0) {
|
||||
energyUnits = 4.184;
|
||||
|
||||
// LAMMPS units metal :: eV;
|
||||
|
||||
} else if (strcmp(update->unit_style,"metal") == 0) {
|
||||
energyUnits=96.48530749925792;
|
||||
} else if (strcmp(update->unit_style, "metal") == 0) {
|
||||
energyUnits = 96.48530749925792;
|
||||
|
||||
// LAMMPS units si :: Joule;
|
||||
|
||||
} else if (strcmp(update->unit_style,"si") == 0) {
|
||||
energyUnits=0.001;
|
||||
} else if (strcmp(update->unit_style, "si") == 0) {
|
||||
energyUnits = 0.001;
|
||||
|
||||
// LAMMPS units cgs :: erg;
|
||||
|
||||
} else if (strcmp(update->unit_style,"cgs") == 0) {
|
||||
energyUnits=6.0221418e13;
|
||||
} else if (strcmp(update->unit_style, "cgs") == 0) {
|
||||
energyUnits = 6.0221418e13;
|
||||
|
||||
// LAMMPS units electron :: Hartree;
|
||||
|
||||
} else if (strcmp(update->unit_style,"electron") == 0) {
|
||||
energyUnits=2625.5257;
|
||||
} else if (strcmp(update->unit_style, "electron") == 0) {
|
||||
energyUnits = 2625.5257;
|
||||
|
||||
} else error->all(FLERR,"Fix plumed cannot handle your choice of units");
|
||||
} else
|
||||
error->all(FLERR, "Fix plumed cannot handle {} units", update->unit_style);
|
||||
|
||||
// Conversion factor from LAMMPS length units to nm (units of PLUMED)
|
||||
|
||||
double lengthUnits=0.1/force->angstrom;
|
||||
double lengthUnits = 0.1 / force->angstrom;
|
||||
|
||||
// Conversion factor from LAMMPS time unit to ps (units of PLUMED)
|
||||
|
||||
double timeUnits=0.001/force->femtosecond;
|
||||
double timeUnits = 0.001 / force->femtosecond;
|
||||
|
||||
p->cmd("setMDEnergyUnits",&energyUnits);
|
||||
p->cmd("setMDLengthUnits",&lengthUnits);
|
||||
p->cmd("setMDTimeUnits",&timeUnits);
|
||||
p->cmd("setMDEnergyUnits", &energyUnits);
|
||||
p->cmd("setMDLengthUnits", &lengthUnits);
|
||||
p->cmd("setMDTimeUnits", &timeUnits);
|
||||
}
|
||||
|
||||
// Read fix parameters:
|
||||
|
||||
int next=0;
|
||||
for (int i=3;i<narg;++i) {
|
||||
if (!strcmp(arg[i],"outfile")) {
|
||||
next=1;
|
||||
} else if (next==1) {
|
||||
int next = 0;
|
||||
for (int i = 3; i < narg; ++i) {
|
||||
if (!strcmp(arg[i], "outfile")) {
|
||||
next = 1;
|
||||
} else if (next == 1) {
|
||||
if (universe->existflag == 1) {
|
||||
// Each replica writes an independent log file
|
||||
// with suffix equal to the replica id
|
||||
p->cmd("setLogFile",fmt::format("{}.{}",arg[i],universe->iworld).c_str());
|
||||
next=0;
|
||||
p->cmd("setLogFile", fmt::format("{}.{}", arg[i], universe->iworld).c_str());
|
||||
next = 0;
|
||||
} else {
|
||||
// partition option not used
|
||||
p->cmd("setLogFile",arg[i]);
|
||||
next=0;
|
||||
p->cmd("setLogFile", arg[i]);
|
||||
next = 0;
|
||||
}
|
||||
} else if (!strcmp(arg[i],"plumedfile")) {
|
||||
next=2;
|
||||
} else if (next==2) {
|
||||
p->cmd("setPlumedDat",arg[i]);
|
||||
next=0;
|
||||
} else error->all(FLERR,"Syntax error - use 'fix <fix-ID> plumed "
|
||||
"plumedfile plumed.dat outfile plumed.out' ");
|
||||
} else if (!strcmp(arg[i], "plumedfile")) {
|
||||
next = 2;
|
||||
} else if (next == 2) {
|
||||
p->cmd("setPlumedDat", arg[i]);
|
||||
next = 0;
|
||||
} else
|
||||
error->all(FLERR,
|
||||
"Syntax error - use 'fix <fix-ID> plumed "
|
||||
"plumedfile plumed.dat outfile plumed.out' ");
|
||||
}
|
||||
if (next==1) error->all(FLERR,"missing argument for outfile option");
|
||||
if (next==2) error->all(FLERR,"missing argument for plumedfile option");
|
||||
if (next == 1) error->all(FLERR, "missing argument for outfile option");
|
||||
if (next == 2) error->all(FLERR, "missing argument for plumedfile option");
|
||||
|
||||
p->cmd("setMDEngine","LAMMPS");
|
||||
p->cmd("setMDEngine", "LAMMPS");
|
||||
|
||||
if (atom->natoms > MAXSMALLINT)
|
||||
error->all(FLERR,"Fix plumed can only handle up to 2.1 billion atoms");
|
||||
error->all(FLERR, "Fix plumed can only handle up to 2.1 billion atoms");
|
||||
|
||||
natoms=int(atom->natoms);
|
||||
p->cmd("setNatoms",&natoms);
|
||||
natoms = int(atom->natoms);
|
||||
p->cmd("setNatoms", &natoms);
|
||||
|
||||
double dt=update->dt;
|
||||
p->cmd("setTimestep",&dt);
|
||||
double dt = update->dt;
|
||||
p->cmd("setTimestep", &dt);
|
||||
|
||||
extscalar = 1;
|
||||
scalar_flag = 1;
|
||||
@ -224,27 +219,24 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) :
|
||||
id_press = utils::strdup("plmd_press");
|
||||
c_press = modify->add_compute(std::string(id_press) + " all pressure NULL virial");
|
||||
|
||||
for (int i = 0; i < modify->nfix; i++) {
|
||||
const char * const check_style = modify->fix[i]->style;
|
||||
for (const auto &fix : modify->get_fix_list()) {
|
||||
const char *const check_style = fix->style;
|
||||
|
||||
// There must be only one
|
||||
|
||||
if (strcmp(check_style,"plumed") == 0)
|
||||
error->all(FLERR,"There must be only one instance of fix plumed");
|
||||
if (strcmp(check_style, "plumed") == 0)
|
||||
error->all(FLERR, "There must be only one instance of fix plumed");
|
||||
|
||||
// Avoid conflict with fixes that define internal pressure computes.
|
||||
// See comment in the setup method
|
||||
|
||||
if (utils::strmatch(check_style,"^nph") ||
|
||||
utils::strmatch(check_style,"^npt") ||
|
||||
utils::strmatch(check_style,"^rigid/nph") ||
|
||||
utils::strmatch(check_style,"^rigid/npt") ||
|
||||
utils::strmatch(check_style,"^msst") ||
|
||||
utils::strmatch(check_style,"^nphug") ||
|
||||
utils::strmatch(check_style,"^ipi") ||
|
||||
utils::strmatch(check_style,"^press/berendsen") ||
|
||||
utils::strmatch(check_style,"^qbmsst"))
|
||||
error->all(FLERR,"Fix plumed must be defined before any other fixes, "
|
||||
if (utils::strmatch(check_style, "^nph") || utils::strmatch(check_style, "^npt") ||
|
||||
utils::strmatch(check_style, "^rigid/nph") || utils::strmatch(check_style, "^rigid/npt") ||
|
||||
utils::strmatch(check_style, "^msst") || utils::strmatch(check_style, "^nphug") ||
|
||||
utils::strmatch(check_style, "^ipi") || utils::strmatch(check_style, "^press/berendsen") ||
|
||||
utils::strmatch(check_style, "^qbmsst"))
|
||||
error->all(FLERR,
|
||||
"Fix plumed must be defined before any other fixes, "
|
||||
"that compute pressure internally");
|
||||
}
|
||||
}
|
||||
@ -273,13 +265,13 @@ int FixPlumed::setmask()
|
||||
|
||||
void FixPlumed::init()
|
||||
{
|
||||
if (utils::strmatch(update->integrate_style,"^respa"))
|
||||
if (utils::strmatch(update->integrate_style, "^respa"))
|
||||
nlevels_respa = ((Respa *) update->integrate)->nlevels;
|
||||
|
||||
// This avoids nan pressure if compute_pressure is called
|
||||
// in a setup method
|
||||
|
||||
for (int i=0;i<6;i++) virial[i] = 0.;
|
||||
for (int i = 0; i < 6; i++) virial[i] = 0.;
|
||||
}
|
||||
|
||||
void FixPlumed::setup(int vflag)
|
||||
@ -293,10 +285,10 @@ void FixPlumed::setup(int vflag)
|
||||
// has to be executed first. This creates a race condition with the
|
||||
// setup method of fix_nh. This is why in the constructor I check if
|
||||
// nh fixes have already been called.
|
||||
if (utils::strmatch(update->integrate_style,"^respa")) {
|
||||
((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1);
|
||||
post_force_respa(vflag,nlevels_respa-1,0);
|
||||
((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1);
|
||||
if (utils::strmatch(update->integrate_style, "^respa")) {
|
||||
((Respa *) update->integrate)->copy_flevel_f(nlevels_respa - 1);
|
||||
post_force_respa(vflag, nlevels_respa - 1, 0);
|
||||
((Respa *) update->integrate)->copy_f_flevel(nlevels_respa - 1);
|
||||
} else {
|
||||
post_force(vflag);
|
||||
}
|
||||
@ -312,11 +304,10 @@ void FixPlumed::min_setup(int vflag)
|
||||
void FixPlumed::post_force(int /* vflag */)
|
||||
{
|
||||
|
||||
int update_gatindex=0;
|
||||
int update_gatindex = 0;
|
||||
|
||||
if (natoms != int(atom->natoms))
|
||||
error->all(FLERR,"Fix plumed does not support simulations with varying "
|
||||
"numbers of atoms");
|
||||
error->all(FLERR, "Fix plumed does not support simulations with varying numbers of atoms");
|
||||
|
||||
// Try to find out if the domain decomposition has been updated:
|
||||
|
||||
@ -326,95 +317,97 @@ void FixPlumed::post_force(int /* vflag */)
|
||||
delete[] masses;
|
||||
delete[] gatindex;
|
||||
|
||||
nlocal=atom->nlocal;
|
||||
gatindex=new int [nlocal];
|
||||
masses=new double [nlocal];
|
||||
charges=new double [nlocal];
|
||||
update_gatindex=1;
|
||||
nlocal = atom->nlocal;
|
||||
gatindex = new int[nlocal];
|
||||
masses = new double[nlocal];
|
||||
charges = new double[nlocal];
|
||||
update_gatindex = 1;
|
||||
|
||||
} else {
|
||||
|
||||
for (int i=0;i<nlocal;i++) {
|
||||
if (gatindex[i]!=atom->tag[i]-1) {
|
||||
update_gatindex=1;
|
||||
for (int i = 0; i < nlocal; i++) {
|
||||
if (gatindex[i] != atom->tag[i] - 1) {
|
||||
update_gatindex = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
MPI_Allreduce(MPI_IN_PLACE,&update_gatindex,1,MPI_INT,MPI_SUM,world);
|
||||
MPI_Allreduce(MPI_IN_PLACE, &update_gatindex, 1, MPI_INT, MPI_SUM, world);
|
||||
|
||||
// In case it has been updated, rebuild the local mass/charges array
|
||||
// and tell plumed about the change:
|
||||
|
||||
if (update_gatindex) {
|
||||
for (int i=0;i<nlocal;i++) gatindex[i]=atom->tag[i]-1;
|
||||
for (int i = 0; i < nlocal; i++) gatindex[i] = atom->tag[i] - 1;
|
||||
// Get masses
|
||||
if (atom->rmass_flag) {
|
||||
for (int i=0;i<nlocal;i++) masses[i]=atom->rmass[i];
|
||||
for (int i = 0; i < nlocal; i++) masses[i] = atom->rmass[i];
|
||||
} else {
|
||||
for (int i=0;i<nlocal;i++) masses[i]=atom->mass[atom->type[i]];
|
||||
for (int i = 0; i < nlocal; i++) masses[i] = atom->mass[atom->type[i]];
|
||||
}
|
||||
// Get charges
|
||||
if (atom->q_flag) {
|
||||
for (int i=0;i<nlocal;i++) charges[i]=atom->q[i];
|
||||
for (int i = 0; i < nlocal; i++) charges[i] = atom->q[i];
|
||||
} else {
|
||||
for (int i=0;i<nlocal;i++) charges[i]=0.0;
|
||||
for (int i = 0; i < nlocal; i++) charges[i] = 0.0;
|
||||
}
|
||||
p->cmd("setAtomsNlocal",&nlocal);
|
||||
p->cmd("setAtomsGatindex",gatindex);
|
||||
p->cmd("setAtomsNlocal", &nlocal);
|
||||
p->cmd("setAtomsGatindex", gatindex);
|
||||
}
|
||||
|
||||
|
||||
// set up local virial/box. plumed uses full 3x3 matrices
|
||||
double plmd_virial[3][3];
|
||||
for (int i=0;i<3;i++) for (int j=0;j<3;j++) plmd_virial[i][j]=0.0;
|
||||
for (int i = 0; i < 3; i++)
|
||||
for (int j = 0; j < 3; j++) plmd_virial[i][j] = 0.0;
|
||||
double box[3][3];
|
||||
for (int i=0;i<3;i++) for (int j=0;j<3;j++) box[i][j]=0.0;
|
||||
box[0][0]=domain->h[0];
|
||||
box[1][1]=domain->h[1];
|
||||
box[2][2]=domain->h[2];
|
||||
box[2][1]=domain->h[3];
|
||||
box[2][0]=domain->h[4];
|
||||
box[1][0]=domain->h[5];
|
||||
for (int i = 0; i < 3; i++)
|
||||
for (int j = 0; j < 3; j++) box[i][j] = 0.0;
|
||||
box[0][0] = domain->h[0];
|
||||
box[1][1] = domain->h[1];
|
||||
box[2][2] = domain->h[2];
|
||||
box[2][1] = domain->h[3];
|
||||
box[2][0] = domain->h[4];
|
||||
box[1][0] = domain->h[5];
|
||||
|
||||
// Make initial of virial of this fix zero
|
||||
// The following line is very important, otherwise
|
||||
// the compute pressure will include
|
||||
for (int i=0;i<6;++i) virial[i] = 0.;
|
||||
for (int i = 0; i < 6; ++i) virial[i] = 0.;
|
||||
|
||||
// local variable with timestep:
|
||||
if (update->ntimestep > MAXSMALLINT)
|
||||
error->all(FLERR,"Fix plumed can only handle up to 2.1 billion timesteps");
|
||||
int step=int(update->ntimestep);
|
||||
error->all(FLERR, "Fix plumed can only handle up to 2.1 billion timesteps");
|
||||
int step = int(update->ntimestep);
|
||||
|
||||
// pass all pointers to plumed:
|
||||
p->cmd("setStep",&step);
|
||||
int plumedStopCondition=0;
|
||||
p->cmd("setStopFlag",&plumedStopCondition);
|
||||
p->cmd("setPositions",&atom->x[0][0]);
|
||||
p->cmd("setBox",&box[0][0]);
|
||||
p->cmd("setForces",&atom->f[0][0]);
|
||||
p->cmd("setMasses",&masses[0]);
|
||||
p->cmd("setCharges",&charges[0]);
|
||||
p->cmd("getBias",&bias);
|
||||
p->cmd("setStep", &step);
|
||||
int plumedStopCondition = 0;
|
||||
p->cmd("setStopFlag", &plumedStopCondition);
|
||||
p->cmd("setPositions", &atom->x[0][0]);
|
||||
p->cmd("setBox", &box[0][0]);
|
||||
p->cmd("setForces", &atom->f[0][0]);
|
||||
p->cmd("setMasses", &masses[0]);
|
||||
p->cmd("setCharges", &charges[0]);
|
||||
p->cmd("getBias", &bias);
|
||||
|
||||
// Pass virial to plumed
|
||||
// If energy is needed plmd_virial is equal to LAMMPS' virial
|
||||
// If energy is not needed plmd_virial is initialized to zero
|
||||
// In the first case the virial will be rescaled and an extra term will be added
|
||||
// In the latter case only an extra term will be added
|
||||
p->cmd("setVirial",&plmd_virial[0][0]);
|
||||
p->cmd("setVirial", &plmd_virial[0][0]);
|
||||
p->cmd("prepareCalc");
|
||||
|
||||
plumedNeedsEnergy=0;
|
||||
p->cmd("isEnergyNeeded",&plumedNeedsEnergy);
|
||||
plumedNeedsEnergy = 0;
|
||||
p->cmd("isEnergyNeeded", &plumedNeedsEnergy);
|
||||
|
||||
// Pass potential energy and virial if needed
|
||||
double *virial_lmp;
|
||||
if (plumedNeedsEnergy) {
|
||||
// Error if tail corrections are included
|
||||
if (force->pair && force->pair->tail_flag && comm->me == 0)
|
||||
error->warning(FLERR,"Tail corrections to the pair potential included."
|
||||
error->warning(FLERR,
|
||||
"Tail corrections to the pair potential included."
|
||||
" The energy cannot be biased correctly in this case."
|
||||
" Remove the tail corrections by removing the"
|
||||
" command: pair_modify tail yes");
|
||||
@ -426,20 +419,18 @@ void FixPlumed::post_force(int /* vflag */)
|
||||
|
||||
// Divide energy by number of processes
|
||||
// Plumed wants it this way
|
||||
int nprocs;
|
||||
MPI_Comm_size(world,&nprocs);
|
||||
pot_energy /= nprocs;
|
||||
p->cmd("setEnergy",&pot_energy);
|
||||
pot_energy /= comm->nprocs;
|
||||
p->cmd("setEnergy", &pot_energy);
|
||||
|
||||
// Compute pressure due to the virial (no kinetic energy term!)
|
||||
c_press->compute_vector();
|
||||
virial_lmp = c_press->vector;
|
||||
|
||||
// Check if pressure is finite
|
||||
if (!std::isfinite(virial_lmp[0]) || !std::isfinite(virial_lmp[1])
|
||||
|| !std::isfinite(virial_lmp[2]) || !std::isfinite(virial_lmp[3])
|
||||
|| !std::isfinite(virial_lmp[4]) || !std::isfinite(virial_lmp[5]))
|
||||
error->all(FLERR,"Non-numeric virial - Plumed cannot work with that");
|
||||
if (!std::isfinite(virial_lmp[0]) || !std::isfinite(virial_lmp[1]) ||
|
||||
!std::isfinite(virial_lmp[2]) || !std::isfinite(virial_lmp[3]) ||
|
||||
!std::isfinite(virial_lmp[4]) || !std::isfinite(virial_lmp[5]))
|
||||
error->all(FLERR, "Non-numeric virial - Plumed cannot work with that");
|
||||
|
||||
// Convert pressure to virial per number of MPI processes
|
||||
// From now on all virials are divided by the number of MPI processes
|
||||
@ -451,14 +442,14 @@ void FixPlumed::post_force(int /* vflag */)
|
||||
} else {
|
||||
inv_volume = 1.0 / (domain->xprd * domain->yprd);
|
||||
}
|
||||
for (int i=0;i<6;i++) virial_lmp[i] /= (inv_volume * nktv2p * nprocs);
|
||||
for (int i = 0; i < 6; i++) virial_lmp[i] /= (inv_volume * nktv2p * comm->nprocs);
|
||||
// Convert virial from lammps to plumed representation
|
||||
plmd_virial[0][0]=-virial_lmp[0];
|
||||
plmd_virial[1][1]=-virial_lmp[1];
|
||||
plmd_virial[2][2]=-virial_lmp[2];
|
||||
plmd_virial[0][1]=-virial_lmp[3];
|
||||
plmd_virial[0][2]=-virial_lmp[4];
|
||||
plmd_virial[1][2]=-virial_lmp[5];
|
||||
plmd_virial[0][0] = -virial_lmp[0];
|
||||
plmd_virial[1][1] = -virial_lmp[1];
|
||||
plmd_virial[2][2] = -virial_lmp[2];
|
||||
plmd_virial[0][1] = -virial_lmp[3];
|
||||
plmd_virial[0][2] = -virial_lmp[4];
|
||||
plmd_virial[1][2] = -virial_lmp[5];
|
||||
}
|
||||
// do the real calculation:
|
||||
p->cmd("performCalc");
|
||||
@ -472,12 +463,12 @@ void FixPlumed::post_force(int /* vflag */)
|
||||
// The calculation of the pressure will be done by a compute pressure
|
||||
// and will include this contribution.
|
||||
if (plumedNeedsEnergy) {
|
||||
virial[0] = -plmd_virial[0][0]-virial_lmp[0];
|
||||
virial[1] = -plmd_virial[1][1]-virial_lmp[1];
|
||||
virial[2] = -plmd_virial[2][2]-virial_lmp[2];
|
||||
virial[3] = -plmd_virial[0][1]-virial_lmp[3];
|
||||
virial[4] = -plmd_virial[0][2]-virial_lmp[4];
|
||||
virial[5] = -plmd_virial[1][2]-virial_lmp[5];
|
||||
virial[0] = -plmd_virial[0][0] - virial_lmp[0];
|
||||
virial[1] = -plmd_virial[1][1] - virial_lmp[1];
|
||||
virial[2] = -plmd_virial[2][2] - virial_lmp[2];
|
||||
virial[3] = -plmd_virial[0][1] - virial_lmp[3];
|
||||
virial[4] = -plmd_virial[0][2] - virial_lmp[4];
|
||||
virial[5] = -plmd_virial[1][2] - virial_lmp[5];
|
||||
} else {
|
||||
virial[0] = -plmd_virial[0][0];
|
||||
virial[1] = -plmd_virial[1][1];
|
||||
@ -491,13 +482,13 @@ void FixPlumed::post_force(int /* vflag */)
|
||||
// such that the virial and energy are tallied.
|
||||
// This should be changed to something that triggers the
|
||||
// calculation only if plumed needs it.
|
||||
c_pe->addstep(update->ntimestep+1);
|
||||
c_press->addstep(update->ntimestep+1);
|
||||
c_pe->addstep(update->ntimestep + 1);
|
||||
c_press->addstep(update->ntimestep + 1);
|
||||
}
|
||||
|
||||
void FixPlumed::post_force_respa(int vflag, int ilevel, int /* iloop */)
|
||||
{
|
||||
if (ilevel == nlevels_respa-1) post_force(vflag);
|
||||
if (ilevel == nlevels_respa - 1) post_force(vflag);
|
||||
}
|
||||
|
||||
void FixPlumed::min_post_force(int vflag)
|
||||
@ -507,7 +498,7 @@ void FixPlumed::min_post_force(int vflag)
|
||||
|
||||
void FixPlumed::reset_dt()
|
||||
{
|
||||
error->all(FLERR,"Cannot change the time step when fix plumed is active");
|
||||
error->all(FLERR, "Fix plumed is not compatible with changing the timestep");
|
||||
}
|
||||
|
||||
double FixPlumed::compute_scalar()
|
||||
@ -517,35 +508,36 @@ double FixPlumed::compute_scalar()
|
||||
|
||||
int FixPlumed::modify_param(int narg, char **arg)
|
||||
{
|
||||
if (strcmp(arg[0],"pe") == 0) {
|
||||
if (narg < 2) error->all(FLERR,"Illegal fix_modify command");
|
||||
if (strcmp(arg[0], "pe") == 0) {
|
||||
if (narg < 2) error->all(FLERR, "Fix_modify pe requires an argument");
|
||||
modify->delete_compute(id_pe);
|
||||
delete[] id_pe;
|
||||
id_pe = utils::strdup(arg[1]);
|
||||
|
||||
c_pe = modify->get_compute_by_id(id_pe);
|
||||
if (!c_pe) error->all(FLERR,"Could not find fix_modify potential energy ID {}", id_pe);
|
||||
if (!c_pe) error->all(FLERR, "Could not find fix_modify potential energy ID {}", id_pe);
|
||||
|
||||
if (c_pe->peflag == 0)
|
||||
error->all(FLERR,"Fix_modify compute pe ID {} does not compute potential energy", id_pe);
|
||||
error->all(FLERR, "Fix_modify compute pe ID {} does not compute potential energy", id_pe);
|
||||
if (c_pe->igroup != 0 && comm->me == 0)
|
||||
error->warning(FLERR,"Potential energy compute {} for fix PLUMED is not for group all", id_pe);
|
||||
error->warning(FLERR, "Potential energy compute {} for fix PLUMED is not for group all",
|
||||
id_pe);
|
||||
|
||||
return 2;
|
||||
|
||||
} else if (strcmp(arg[0],"press") == 0) {
|
||||
if (narg < 2) error->all(FLERR,"Illegal fix_modify command");
|
||||
} else if (strcmp(arg[0], "press") == 0) {
|
||||
if (narg < 2) error->all(FLERR, "Fix_modify press requires an argument");
|
||||
modify->delete_compute(id_press);
|
||||
delete[] id_press;
|
||||
id_press = utils::strdup(arg[1]);
|
||||
|
||||
c_press = modify->get_compute_by_id(id_press);
|
||||
if (!c_press) error->all(FLERR,"Could not find fix_modify compute pressure ID {}", id_press);
|
||||
if (!c_press) error->all(FLERR, "Could not find fix_modify compute pressure ID {}", id_press);
|
||||
|
||||
if (c_press->pressflag == 0)
|
||||
error->all(FLERR,"Fix_modify compute pressure ID {} does not compute pressure", id_press);
|
||||
error->all(FLERR, "Fix_modify compute pressure ID {} does not compute pressure", id_press);
|
||||
if (c_press->igroup != 0 && comm->me == 0)
|
||||
error->warning(FLERR,"Virial for fix PLUMED is not for group all");
|
||||
error->warning(FLERR, "Virial for fix PLUMED is not for group all");
|
||||
|
||||
return 2;
|
||||
}
|
||||
@ -554,5 +546,5 @@ int FixPlumed::modify_param(int narg, char **arg)
|
||||
|
||||
double FixPlumed::memory_usage()
|
||||
{
|
||||
return double((8+8+4)*atom->nlocal);
|
||||
return double((8 + 8 + 4) * atom->nlocal);
|
||||
}
|
||||
|
||||
@ -844,7 +844,7 @@ void FixBondReact::init_list(int /*id*/, NeighList *ptr)
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Identify all pairs of potentially reactive atoms for this time step.
|
||||
This function is modified from LAMMPS’ fix bond/create.
|
||||
This function is modified from LAMMPS' fix bond/create.
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
void FixBondReact::post_integrate()
|
||||
|
||||
@ -127,9 +127,9 @@ void ComputeRHEOSurface::compute_peratom()
|
||||
size_t nbytes = nmax_store * sizeof(double);
|
||||
memset(&divr[0], 0, nbytes);
|
||||
memset(&rsurface[0], 0, nbytes);
|
||||
memset(&nsurface[0][0], 0, dim * nbytes);
|
||||
memset(&gradC[0][0], 0, dim * dim * nbytes);
|
||||
memset(&B[0][0], 0, dim * dim * nbytes);
|
||||
memset(&nsurface[0][0], 0, nbytes * dim);
|
||||
memset(&gradC[0][0], 0, nbytes * dim * dim);
|
||||
memset(&B[0][0], 0, nbytes * dim * dim);
|
||||
|
||||
// loop over neighbors to calculate the average orientation of neighbors
|
||||
for (ii = 0; ii < inum; ii++) {
|
||||
|
||||
@ -55,7 +55,7 @@ static const char cite_rheo_oxide[] =
|
||||
FixRHEOOxidation::FixRHEOOxidation(LAMMPS *lmp, int narg, char **arg) :
|
||||
Fix(lmp, narg, arg), compute_surface(nullptr), fix_rheo(nullptr)
|
||||
{
|
||||
if (narg != 6) error->all(FLERR, "Illegal fix command");
|
||||
if (narg != 6) error->all(FLERR, "Illegal fix rheo/oxidation command");
|
||||
|
||||
force_reneighbor = 1;
|
||||
next_reneighbor = -1;
|
||||
@ -69,7 +69,7 @@ FixRHEOOxidation::FixRHEOOxidation(LAMMPS *lmp, int narg, char **arg) :
|
||||
error->all(FLERR, "Illegal value {} for bond type in fix rheo/oxidation", btype);
|
||||
|
||||
rsurf = utils::numeric(FLERR, arg[5], false, lmp);
|
||||
if (rsurf <= 0.0) error->all(FLERR, "Illegal surface distance {} in fix rheo/oxidation", cut);
|
||||
if (rsurf <= 0.0) error->all(FLERR, "Illegal surface distance {} in fix rheo/oxidation", rsurf);
|
||||
|
||||
cutsq = cut * cut;
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
The SMTBQ code has been developed with the financial support of CNRS and
|
||||
of the Regional Council of Burgundy (Convention n¡ 2010-9201AAO037S03129)
|
||||
of the Regional Council of Burgundy (Convention No 2010-9201AAO037S03129)
|
||||
|
||||
Copyright (2015)
|
||||
Universite de Bourgogne : Nicolas SALLES, Olivier POLITANO
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
Contact: Nicolas Salles <nsalles33@gmail.com>
|
||||
Olivier Politano <olivier.politano@u-bourgogne.fr>
|
||||
Robert Tétot <robert.tetot@universite-paris-saclay.fr>
|
||||
Robert Tetot <robert.tetot@universite-paris-saclay.fr>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@ -895,7 +895,7 @@ void PairSMTBQ::compute(int eflag, int vflag)
|
||||
3 -> Short int. Ox-Ox
|
||||
4 -> Short int. SMTB (repulsion)
|
||||
5 -> Covalent energy SMTB
|
||||
6 -> Somme des Q(i)²
|
||||
6 -> Sum over Q(i)**2
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* -------------- N-body forces Calcul --------------- */
|
||||
@ -2980,9 +2980,6 @@ void PairSMTBQ::groupQEqAllParallel_QEq()
|
||||
|
||||
ngp = igp = 0; nelt[ngp] = 0;
|
||||
|
||||
// On prend un oxygène
|
||||
// printf ("[me %d] On prend un oxygene\n",me);
|
||||
|
||||
for (ii = 0; ii < inum; ii++) {
|
||||
i = ilist[ii] ; itype = map[type[i]];
|
||||
if (itype != 0 || flag_QEq[i] == 0) continue;
|
||||
|
||||
@ -292,7 +292,7 @@ double PairSPHLJ::init_one(int i, int j)
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
/* Lennard-Jones EOS,
|
||||
Francis H. Ree
|
||||
"Analytic representation of thermodynamic data for the Lennard‐Jones fluid",
|
||||
Analytic representation of thermodynamic data for the Lennard-Jones fluid,
|
||||
Journal of Chemical Physics 73 pp. 5401-5403 (1980)
|
||||
*/
|
||||
|
||||
@ -331,7 +331,7 @@ void PairSPHLJ::LJEOS2(double rho, double e, double cv, double *p, double *c)
|
||||
|
||||
/* ------------------------------------------------------------------------------ */
|
||||
|
||||
/* Jirí Kolafa, Ivo Nezbeda
|
||||
/* Jiri Kolafa, Ivo Nezbeda
|
||||
* "The Lennard-Jones fluid: an accurate analytic and theoretically-based equation of state",
|
||||
* Fluid Phase Equilibria 100 pp. 1-34 (1994) */
|
||||
/*double PairSPHLJ::LJEOS2(double rho, double e, double cv) {
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
Contributing authors: Julien Tranchida (SNL)
|
||||
|
||||
Please cite the related publication:
|
||||
Bessarab, P. F., Uzdin, V. M., & Jónsson, H. (2015).
|
||||
Bessarab, P. F., Uzdin, V. M., & Jonsson, H. (2015).
|
||||
Method for finding mechanism and activation energy of magnetic transitions,
|
||||
applied to skyrmion and antivortex annihilation.
|
||||
Computer Physics Communications, 196, 335-347.
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
Julien Tranchida (SNL)
|
||||
|
||||
Please cite the related publication:
|
||||
Ivanov, A. V., Uzdin, V. M., & Jónsson, H. (2019). Fast and Robust
|
||||
Ivanov, A. V., Uzdin, V. M., & Jonsson, H. (2019). Fast and Robust
|
||||
Algorithm for the Minimisation of the Energy of Spin Systems. arXiv
|
||||
preprint arXiv:1904.02669.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
Julien Tranchida (SNL)
|
||||
|
||||
Please cite the related publication:
|
||||
Ivanov, A. V., Uzdin, V. M., & Jónsson, H. (2019). Fast and Robust
|
||||
Ivanov, A. V., Uzdin, V. M., & Jonsson, H. (2019). Fast and Robust
|
||||
Algorithm for the Minimisation of the Energy of Spin Systems. arXiv
|
||||
preprint arXiv:1904.02669.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
Contributing authors: Julien Tranchida (SNL)
|
||||
|
||||
Please cite the related publication:
|
||||
Bessarab, P. F., Uzdin, V. M., & Jónsson, H. (2015).
|
||||
Bessarab, P. F., Uzdin, V. M., & Jonsson, H. (2015).
|
||||
Method for finding mechanism and activation energy of magnetic transitions,
|
||||
applied to skyrmion and antivortex annihilation.
|
||||
Computer Physics Communications, 196, 335-347.
|
||||
|
||||
@ -1663,6 +1663,27 @@ void Domain::remap(double *x)
|
||||
if (triclinic) lamda2x(coord,x);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
remap all points into the periodic box no matter how far away
|
||||
adjust 3 image flags encoded in image accordingly
|
||||
resulting coord must satisfy lo <= coord < hi
|
||||
MAX is important since coord - prd < lo can happen when coord = hi
|
||||
for triclinic, point is converted to lamda coords (0-1) before doing remap
|
||||
image = 10 bits for each dimension
|
||||
increment/decrement in wrap-around fashion
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void Domain::remap_all()
|
||||
{
|
||||
double **x = atom->x;
|
||||
imageint *image = atom->image;
|
||||
int nlocal = atom->nlocal;
|
||||
|
||||
if (triclinic) x2lamda(nlocal);
|
||||
for (int i = 0; i < nlocal; i++) remap(x[i],image[i]);
|
||||
if (triclinic) lamda2x(nlocal);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
remap xnew to be within half box length of xold
|
||||
do it directly, not iteratively, in case is far away
|
||||
@ -2188,6 +2209,19 @@ void Domain::lamda2x(int n)
|
||||
}
|
||||
}
|
||||
|
||||
void Domain::lamda2x(int n, int groupbit)
|
||||
{
|
||||
double **x = atom->x;
|
||||
int *mask = atom->mask;
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
if (mask[i] & groupbit) {
|
||||
x[i][0] = h[0]*x[i][0] + h[5]*x[i][1] + h[4]*x[i][2] + boxlo[0];
|
||||
x[i][1] = h[1]*x[i][1] + h[3]*x[i][2] + boxlo[1];
|
||||
x[i][2] = h[2]*x[i][2] + boxlo[2];
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
convert box coords to triclinic 0-1 lamda coords for all N atoms
|
||||
lamda = H^-1 (x - x0)
|
||||
@ -2209,6 +2243,25 @@ void Domain::x2lamda(int n)
|
||||
}
|
||||
}
|
||||
|
||||
void Domain::x2lamda(int n, int groupbit)
|
||||
{
|
||||
double delta[3];
|
||||
double **x = atom->x;
|
||||
int *mask = atom->mask;
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
if (mask[i] & groupbit) {
|
||||
delta[0] = x[i][0] - boxlo[0];
|
||||
delta[1] = x[i][1] - boxlo[1];
|
||||
delta[2] = x[i][2] - boxlo[2];
|
||||
|
||||
x[i][0] = h_inv[0]*delta[0] + h_inv[5]*delta[1] + h_inv[4]*delta[2];
|
||||
x[i][1] = h_inv[1]*delta[1] + h_inv[3]*delta[2];
|
||||
x[i][2] = h_inv[2]*delta[2];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
convert triclinic 0-1 lamda coords to box coords for one atom
|
||||
x = H lamda + x0;
|
||||
|
||||
@ -136,6 +136,7 @@ class Domain : protected Pointers {
|
||||
void closest_image(const double *const, const double *const, double *const);
|
||||
void remap(double *, imageint &);
|
||||
void remap(double *);
|
||||
void remap_all();
|
||||
void remap_near(double *, double *);
|
||||
void unmap_inv(double *x, imageint);
|
||||
void unmap(double *, imageint);
|
||||
@ -166,7 +167,9 @@ class Domain : protected Pointers {
|
||||
void boundary_string(char *);
|
||||
|
||||
virtual void lamda2x(int);
|
||||
virtual void lamda2x(int, int);
|
||||
virtual void x2lamda(int);
|
||||
virtual void x2lamda(int, int);
|
||||
virtual void lamda2x(double *, double *);
|
||||
virtual void x2lamda(double *, double *);
|
||||
int inside(double *);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user