Merge branch 'develop' into fix_wall_flow

This commit is contained in:
Axel Kohlmeyer
2024-02-08 17:52:16 -05:00
49 changed files with 1149 additions and 453 deletions

View File

@ -1,7 +1,7 @@
.TH LAMMPS "1" "21 November 2023" "2023-11-21" .TH LAMMPS "1" "7 February 2024" "2024-02-07"
.SH NAME .SH NAME
.B LAMMPS .B LAMMPS
\- Molecular Dynamics Simulator. Version 21 November 2023 \- Molecular Dynamics Simulator. Version 7 February 2024
.SH SYNOPSIS .SH SYNOPSIS
.B lmp .B lmp

View File

@ -44,7 +44,7 @@ require use of an FFT library to compute 1d FFTs. The KISS FFT
library is included with LAMMPS, but other libraries can be faster. library is included with LAMMPS, but other libraries can be faster.
LAMMPS can use them if they are available on your system. LAMMPS can use them if they are available on your system.
.. versionadded:: TBD .. versionadded:: 7Feb2024
Alternatively, LAMMPS can use the `heFFTe Alternatively, LAMMPS can use the `heFFTe
<https://icl-utk-edu.github.io/heffte/>`_ library for the MPI <https://icl-utk-edu.github.io/heffte/>`_ library for the MPI

View File

@ -129,7 +129,7 @@ USER-REAXC.
USER-REAXC package USER-REAXC package
------------------ ------------------
.. deprecated:: TBD .. deprecated:: 7Feb2024
The USER-REAXC package has been renamed to :ref:`REAXFF <PKG-REAXFF>`. The USER-REAXC package has been renamed to :ref:`REAXFF <PKG-REAXFF>`.
In the process also the pair style and related fixes were renamed to use In the process also the pair style and related fixes were renamed to use

View File

@ -1402,7 +1402,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
Set the value of a string-style variable. Set the value of a string-style variable.
.. deprecated:: TBD .. deprecated:: 7Feb2024
This function assigns a new value from the string *str* to the string-style This function assigns a new value from the string *str* to the string-style
variable *name*\ . If *name* does not exist or is not a string-style variable *name*\ . If *name* does not exist or is not a string-style
@ -1423,7 +1423,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
Set the value of a string-style variable. Set the value of a string-style variable.
.. versionadded:: TBD .. versionadded:: 7Feb2024
This function assigns a new value from the string *str* to the string-style This function assigns a new value from the string *str* to the string-style
variable *name*\ . If *name* does not exist or is not a string-style variable *name*\ . If *name* does not exist or is not a string-style
@ -1439,7 +1439,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
Set the value of a internal-style variable. Set the value of a internal-style variable.
.. versionadded:: TBD .. versionadded:: 7Feb2024
This function assigns a new value from the floating-point number *val* to This function assigns a new value from the floating-point number *val* to
the internal-style variable *name*\ . If *name* does not exist or is not the internal-style variable *name*\ . If *name* does not exist or is not

View File

@ -51,7 +51,7 @@ angle coefficient. For example `"200.0*theta^2"` represents a
U_{angle,i} = K (\theta_i - \theta_0)^2 = K \theta^2 \qquad \theta = \theta_i - \theta_0 U_{angle,i} = K (\theta_i - \theta_0)^2 = K \theta^2 \qquad \theta = \theta_i - \theta_0
.. versionchanged:: TBD .. versionchanged:: 7Feb2024
By default the potential energy U is shifted so that the value U is 0.0 By default the potential energy U is shifted so that the value U is 0.0
for $theta = theta_0$. This is equivalent to using the optional keyword for $theta = theta_0$. This is equivalent to using the optional keyword

View File

@ -50,7 +50,7 @@ constant *K* of 200.0 energy units:
U_{bond,i} = K (r_i - r_0)^2 = K r^2 \qquad r = r_i - r_0 U_{bond,i} = K (r_i - r_0)^2 = K r^2 \qquad r = r_i - r_0
.. versionchanged:: TBD .. versionchanged:: 7Feb2024
By default the potential energy U is shifted so that he value U is 0.0 By default the potential energy U is shifted so that he value U is 0.0
for $r = r_0$. This is equivalent to using the optional keyword for $r = r_0$. This is equivalent to using the optional keyword

View File

@ -36,7 +36,7 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: TBD .. versionadded:: 7Feb2024
This compute calculates a set of quantities related to the atomic This compute calculates a set of quantities related to the atomic
cluster expansion (ACE) descriptors of the atoms in a group. ACE cluster expansion (ACE) descriptors of the atoms in a group. ACE

View File

@ -32,7 +32,7 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: TBD .. versionadded:: 7Feb2024
Define a compute that identifies rattlers in a system. Rattlers are often Define a compute that identifies rattlers in a system. Rattlers are often
identified in granular or glassy packings as under-coordinated atoms that identified in granular or glassy packings as under-coordinated atoms that

View File

@ -40,7 +40,7 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: TBD .. versionadded:: 7Feb2024
Define a computation that extracts bond information computed by the ReaxFF Define a computation that extracts bond information computed by the ReaxFF
potential specified by :doc:`pair_style reaxff <pair_reaxff>`. potential specified by :doc:`pair_style reaxff <pair_reaxff>`.

View File

@ -32,7 +32,7 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: TBD .. versionadded:: 7Feb2024
Define a computation that performs the Supervised Learning Crystal Define a computation that performs the Supervised Learning Crystal
Structure Analysis (SL-CSA) from :ref:`(Lafourcade) <Lafourcade2023_1>` Structure Analysis (SL-CSA) from :ref:`(Lafourcade) <Lafourcade2023_1>`

View File

@ -44,7 +44,7 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: TBD .. versionadded:: 7Feb2024
This fix computes different metrics of the nonaffine displacement of This fix computes different metrics of the nonaffine displacement of
particles. The first metric, *d2min* calculates the :math:`D^2_\mathrm{min}` particles. The first metric, *d2min* calculates the :math:`D^2_\mathrm{min}`

View File

@ -92,7 +92,7 @@ The *accelerator* category prints out information about compile time
settings of included accelerator support for the GPU, KOKKOS, INTEL, settings of included accelerator support for the GPU, KOKKOS, INTEL,
and OPENMP packages. and OPENMP packages.
.. versionadded:: TBD .. versionadded:: 7Feb2024
The *fft* category prints out information about the included 3d-FFT The *fft* category prints out information about the included 3d-FFT
support. This lists the 3d-FFT engine, FFT precision, FFT library support. This lists the 3d-FFT engine, FFT precision, FFT library

View File

@ -376,7 +376,7 @@ not listed, the default diameter of each atom in the molecule is 1.0.
---------- ----------
.. versionadded:: TBD .. versionadded:: 7Feb2024
*Dipoles* section: *Dipoles* section:

View File

@ -706,7 +706,7 @@ library. Ceil() is the smallest integer not less than its argument.
Floor() if the largest integer not greater than its argument. Round() Floor() if the largest integer not greater than its argument. Round()
is the nearest integer to its argument. is the nearest integer to its argument.
.. versionadded:: TBD .. versionadded:: 7Feb2024
The ternary(x,y,z) function is the equivalent of the ternary operator The ternary(x,y,z) function is the equivalent of the ternary operator
(? and :) in C or C++. It takes 3 arguments. The first argument is a (? and :) in C or C++. It takes 3 arguments. The first argument is a
@ -1155,7 +1155,7 @@ variable by using the :doc:`compute property/atom
Custom atom properties Custom atom properties
---------------------- ----------------------
.. versionadded:: TBD .. versionadded:: 7Feb2024
Custom atom properties refer to per-atom integer and floating point Custom atom properties refer to per-atom integer and floating point
vectors or arrays that have been added via the :doc:`fix property/atom vectors or arrays that have been added via the :doc:`fix property/atom

View File

@ -1,7 +1,5 @@
# script for mgpt t=0 eos in bulk bcc structure # script for mgpt t=0 eos in bulk bcc structure
echo screen
units electron units electron
atom_style atomic atom_style atomic
@ -36,7 +34,7 @@ neigh_modify every 1 delay 0 check yes
fix 1 all nve fix 1 all nve
# Dump coordinates to file every 50 timesteps # Dump coordinates to file every 50 timesteps
dump id all atom 50 dump.bcc0 #dump id all atom 50 dump.bcc0
# Output thermodynamical data every 10 timesteps # Output thermodynamical data every 10 timesteps
thermo 10 thermo 10

View File

@ -1,8 +1,6 @@
# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice: # script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice:
# input for unrelaxed vacancy formation energy at constant atomic volume # input for unrelaxed vacancy formation energy at constant atomic volume
echo screen
units electron units electron
atom_style atomic atom_style atomic
@ -44,7 +42,7 @@ neigh_modify every 1 delay 0 check yes
fix 1 all nve fix 1 all nve
# Dump coordinates to file every 50 timesteps # Dump coordinates to file every 50 timesteps
dump id all atom 50 dump.vac0-bcc # dump id all atom 50 dump.vac0-bcc
# Output thermodynamical data every 10 timesteps # Output thermodynamical data every 10 timesteps
thermo 10 thermo 10

View File

@ -1,8 +1,6 @@
# script for mgpt t=0 eos with relaxed vacancy in bcc structure: # script for mgpt t=0 eos with relaxed vacancy in bcc structure:
# input for relaxed vacancy formation energy at constant pressure # input for relaxed vacancy formation energy at constant pressure
echo screen
units electron units electron
atom_style atomic atom_style atomic
@ -38,7 +36,7 @@ neighbor 0.1 bin
neigh_modify every 1 delay 0 check yes neigh_modify every 1 delay 0 check yes
# Dump coordinates to file every 50 timesteps # Dump coordinates to file every 50 timesteps
dump id all atom 50 dump.vacmin-bcc # dump id all atom 50 dump.vacmin-bcc
# Output thermodynamical data every 10 timesteps # Output thermodynamical data every 10 timesteps
thermo 10 thermo 10

View File

@ -0,0 +1,134 @@
LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# script for mgpt t=0 eos in bulk bcc structure
units electron
atom_style atomic
# Atomic volume for MGPT potential in a.u.
variable atomic_vol equal 121.6
# Derive lattice constant from volume
variable lattice_constant equal (${atomic_vol}*2.0)^(1.0/3.0)
variable lattice_constant equal (121.6*2.0)^(1.0/3.0)
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
lattice bcc ${lattice_constant}
lattice bcc 6.24196300283154
Lattice spacing in x,y,z = 6.241963 6.241963 6.241963
region box block 0 5 0 5 0 5
create_box 1 box
Created orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 250 atoms
using lattice units in orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815)
create_atoms CPU = 0.000 seconds
# Define potential for use in simulation
pair_style mgpt
# Set parameters for potential:
# parameter files atomic volume
#pair_coeff * * parmin potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
# Create velocities at 0 K
velocity all create 0.0 87287
# Set neighbor list parameters
neighbor 0.1 bin
neigh_modify every 1 delay 0 check yes
# Set up microcanonical integrator
fix 1 all nve
# Dump coordinates to file every 50 timesteps
#dump id all atom 50 dump.bcc0
# Output thermodynamical data every 10 timesteps
thermo 10
# Set output quantities and output format
thermo_style custom step vol temp pe etotal press
## Example: Output floating point number with 5 digits exponential notation.
#thermo_modify format float %15.5e
# Run 0 timesteps
run 0
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 = 13.161827
ghost atom cutoff = 13.161827
binsize = 6.5809134, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair mgpt, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) pair mgpt, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.755 | 3.755 | 3.755 Mbytes
Step Volume Temp PotEng TotEng Press
0 30400 0 -74.412503 -74.412503 -1.1594626e+09
Loop time of 1.019e-06 on 1 procs for 0 steps with 250 atoms
98.1% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.019e-06 | | |100.00
Nlocal: 250 ave 250 max 250 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1479 ave 1479 max 1479 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 8000 ave 8000 max 8000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 16000 ave 16000 max 16000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 16000
Ave neighs/atom = 64
Neighbor list builds = 0
Dangerous builds = 0
# Convert energy to rydbergs and pressure to gpa
variable natoms equal "count(all)"
variable voltot equal "vol"
variable atvol equal "v_voltot/v_natoms"
variable etot equal "2.0*pe"
variable etotry equal "v_etot/v_natoms"
variable ptot equal "press"
variable ptotgpa equal "v_ptot/1.0e+09"
print "number of atoms = ${natoms}"
number of atoms = 250
print "atomic volume (a.u.) = ${atvol}"
atomic volume (a.u.) = 121.6
print "total energy (ry/atom) = ${etotry}"
total energy (ry/atom) = -0.59530002488734
print "pressure (gpa) = ${ptotgpa}"
pressure (gpa) = -1.15946260887554
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
250 121.6 -148.825006221835 -1.15946260887554
print "${atvol} ${etotry} ${ptotgpa}"
121.6 -0.59530002488734 -1.15946260887554
Total wall time: 0:00:00

View File

@ -0,0 +1,134 @@
LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# script for mgpt t=0 eos in bulk bcc structure
units electron
atom_style atomic
# Atomic volume for MGPT potential in a.u.
variable atomic_vol equal 121.6
# Derive lattice constant from volume
variable lattice_constant equal (${atomic_vol}*2.0)^(1.0/3.0)
variable lattice_constant equal (121.6*2.0)^(1.0/3.0)
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
lattice bcc ${lattice_constant}
lattice bcc 6.24196300283154
Lattice spacing in x,y,z = 6.241963 6.241963 6.241963
region box block 0 5 0 5 0 5
create_box 1 box
Created orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 250 atoms
using lattice units in orthogonal box = (0 0 0) to (31.209815 31.209815 31.209815)
create_atoms CPU = 0.000 seconds
# Define potential for use in simulation
pair_style mgpt
# Set parameters for potential:
# parameter files atomic volume
#pair_coeff * * parmin potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
# Create velocities at 0 K
velocity all create 0.0 87287
# Set neighbor list parameters
neighbor 0.1 bin
neigh_modify every 1 delay 0 check yes
# Set up microcanonical integrator
fix 1 all nve
# Dump coordinates to file every 50 timesteps
#dump id all atom 50 dump.bcc0
# Output thermodynamical data every 10 timesteps
thermo 10
# Set output quantities and output format
thermo_style custom step vol temp pe etotal press
## Example: Output floating point number with 5 digits exponential notation.
#thermo_modify format float %15.5e
# Run 0 timesteps
run 0
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 = 13.161827
ghost atom cutoff = 13.161827
binsize = 6.5809134, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair mgpt, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) pair mgpt, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.73 | 3.73 | 3.73 Mbytes
Step Volume Temp PotEng TotEng Press
0 30400 0 -74.412503 -74.412503 -1.1594626e+09
Loop time of 3.56525e-06 on 4 procs for 0 steps with 250 atoms
119.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 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 3.565e-06 | | |100.00
Nlocal: 62.5 ave 65 max 60 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 868.5 ave 871 max 866 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Neighs: 2000 ave 2110 max 1890 min
Histogram: 2 0 0 0 0 0 0 0 0 2
FullNghs: 4000 ave 4160 max 3840 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 16000
Ave neighs/atom = 64
Neighbor list builds = 0
Dangerous builds = 0
# Convert energy to rydbergs and pressure to gpa
variable natoms equal "count(all)"
variable voltot equal "vol"
variable atvol equal "v_voltot/v_natoms"
variable etot equal "2.0*pe"
variable etotry equal "v_etot/v_natoms"
variable ptot equal "press"
variable ptotgpa equal "v_ptot/1.0e+09"
print "number of atoms = ${natoms}"
number of atoms = 250
print "atomic volume (a.u.) = ${atvol}"
atomic volume (a.u.) = 121.6
print "total energy (ry/atom) = ${etotry}"
total energy (ry/atom) = -0.595300024887348
print "pressure (gpa) = ${ptotgpa}"
pressure (gpa) = -1.15946260887575
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
250 121.6 -148.825006221837 -1.15946260887575
print "${atvol} ${etotry} ${ptotgpa}"
121.6 -0.595300024887348 -1.15946260887575
Total wall time: 0:00:00

View File

@ -0,0 +1,144 @@
LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice:
# input for unrelaxed vacancy formation energy at constant atomic volume
units electron
atom_style atomic
# Atomic volume for MGPT potential in a.u.
variable atomic_vol equal 121.6
# Derive effective lattice volume from atomic volume for 249-site cell
variable lat_vol equal ${atomic_vol}*249/250
variable lat_vol equal 121.6*249/250
# Derive lattice constant from lattice volume
variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0)
variable lattice_constant equal (121.1136*2.0)^(1.0/3.0)
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
lattice bcc ${lattice_constant}
lattice bcc 6.23362926394575
Lattice spacing in x,y,z = 6.2336293 6.2336293 6.2336293
region box block 0 5 0 5 0 5
create_box 1 box
Created orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 250 atoms
using lattice units in orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146)
create_atoms CPU = 0.000 seconds
# Remove central atom from bcc lattice to create vacancy
region vacancy sphere 2.5 2.5 2.5 0.1 units lattice
delete_atoms region vacancy
Deleted 1 atoms, new total = 249
# Define potential for use in simulation
pair_style mgpt
# Set parameters for potential:
# parameter files atomic volume
#pair_coeff * * parmin potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
# Create velocities at 0 K
velocity all create 0.0 87287
# Set neighbor list parameters
neighbor 0.1 bin
neigh_modify every 1 delay 0 check yes
# Set up microcanonical integrator
fix 1 all nve
# Dump coordinates to file every 50 timesteps
# dump id all atom 50 dump.vac0-bcc
# Output thermodynamical data every 10 timesteps
thermo 10
# Set output quantities and output format
thermo_style custom step vol temp pe etotal press
## Example: Output floating point number with 5 digits exponential notation.
#thermo_modify format float %15.5e
# Run 0 timesteps
run 0
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 = 13.161827
ghost atom cutoff = 13.161827
binsize = 6.5809134, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair mgpt, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) pair mgpt, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.755 | 3.755 | 3.755 Mbytes
Step Volume Temp PotEng TotEng Press
0 30278.4 0 -73.996387 -73.996387 -6.3426731e+08
Loop time of 1.016e-06 on 1 procs for 0 steps with 249 atoms
98.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 | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.016e-06 | | |100.00
Nlocal: 249 ave 249 max 249 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1479 ave 1479 max 1479 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 7936 ave 7936 max 7936 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 15872 ave 15872 max 15872 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 15872
Ave neighs/atom = 63.742972
Neighbor list builds = 0
Dangerous builds = 0
# Convert energy to rydbergs and pressure to gpa
variable natoms equal "count(all)"
variable voltot equal "vol"
variable atvol equal "v_voltot/v_natoms"
variable etot equal "2.0*pe"
variable etotry equal "v_etot/v_natoms"
variable ptot equal "press"
variable ptotgpa equal "v_ptot/1.0e+09"
print "number of atoms = ${natoms}"
number of atoms = 249
print "atomic volume (a.u.) = ${atvol}"
atomic volume (a.u.) = 121.6
print "total energy (ry/atom) = ${etotry}"
total energy (ry/atom) = -0.594348488796036
print "pressure (gpa) = ${ptotgpa}"
pressure (gpa) = -0.634267307139553
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
249 121.6 -147.992773710213 -0.634267307139553
print "${atvol} ${etotry} ${ptotgpa}"
121.6 -0.594348488796036 -0.634267307139553
Total wall time: 0:00:00

View File

@ -0,0 +1,144 @@
LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice:
# input for unrelaxed vacancy formation energy at constant atomic volume
units electron
atom_style atomic
# Atomic volume for MGPT potential in a.u.
variable atomic_vol equal 121.6
# Derive effective lattice volume from atomic volume for 249-site cell
variable lat_vol equal ${atomic_vol}*249/250
variable lat_vol equal 121.6*249/250
# Derive lattice constant from lattice volume
variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0)
variable lattice_constant equal (121.1136*2.0)^(1.0/3.0)
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
lattice bcc ${lattice_constant}
lattice bcc 6.23362926394575
Lattice spacing in x,y,z = 6.2336293 6.2336293 6.2336293
region box block 0 5 0 5 0 5
create_box 1 box
Created orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 250 atoms
using lattice units in orthogonal box = (0 0 0) to (31.168146 31.168146 31.168146)
create_atoms CPU = 0.000 seconds
# Remove central atom from bcc lattice to create vacancy
region vacancy sphere 2.5 2.5 2.5 0.1 units lattice
delete_atoms region vacancy
Deleted 1 atoms, new total = 249
# Define potential for use in simulation
pair_style mgpt
# Set parameters for potential:
# parameter files atomic volume
#pair_coeff * * parmin potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.6
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
# Create velocities at 0 K
velocity all create 0.0 87287
# Set neighbor list parameters
neighbor 0.1 bin
neigh_modify every 1 delay 0 check yes
# Set up microcanonical integrator
fix 1 all nve
# Dump coordinates to file every 50 timesteps
# dump id all atom 50 dump.vac0-bcc
# Output thermodynamical data every 10 timesteps
thermo 10
# Set output quantities and output format
thermo_style custom step vol temp pe etotal press
## Example: Output floating point number with 5 digits exponential notation.
#thermo_modify format float %15.5e
# Run 0 timesteps
run 0
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 = 13.161827
ghost atom cutoff = 13.161827
binsize = 6.5809134, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair mgpt, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) pair mgpt, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 3.73 | 3.73 | 3.73 Mbytes
Step Volume Temp PotEng TotEng Press
0 30278.4 0 -73.996387 -73.996387 -6.3426731e+08
Loop time of 2.64725e-06 on 4 procs for 0 steps with 249 atoms
37.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 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 2.647e-06 | | |100.00
Nlocal: 62.25 ave 65 max 60 min
Histogram: 2 0 0 0 0 0 0 0 1 1
Nghost: 867.75 ave 870 max 865 min
Histogram: 1 0 1 0 0 0 0 0 0 2
Neighs: 1984 ave 2099 max 1875 min
Histogram: 2 0 0 0 0 0 0 0 0 2
FullNghs: 3968 ave 4149 max 3825 min
Histogram: 2 0 0 0 0 0 0 1 0 1
Total # of neighbors = 15872
Ave neighs/atom = 63.742972
Neighbor list builds = 0
Dangerous builds = 0
# Convert energy to rydbergs and pressure to gpa
variable natoms equal "count(all)"
variable voltot equal "vol"
variable atvol equal "v_voltot/v_natoms"
variable etot equal "2.0*pe"
variable etotry equal "v_etot/v_natoms"
variable ptot equal "press"
variable ptotgpa equal "v_ptot/1.0e+09"
print "number of atoms = ${natoms}"
number of atoms = 249
print "atomic volume (a.u.) = ${atvol}"
atomic volume (a.u.) = 121.6
print "total energy (ry/atom) = ${etotry}"
total energy (ry/atom) = -0.594348488795831
print "pressure (gpa) = ${ptotgpa}"
pressure (gpa) = -0.634267307088164
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
249 121.6 -147.992773710162 -0.634267307088164
print "${atvol} ${etotry} ${ptotgpa}"
121.6 -0.594348488795831 -0.634267307088164
Total wall time: 0:00:00

View File

@ -0,0 +1,162 @@
LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# script for mgpt t=0 eos with relaxed vacancy in bcc structure:
# input for relaxed vacancy formation energy at constant pressure
units electron
atom_style atomic
# Atomic volume for MGPT potential
variable atomic_vol equal 121.863
# Derive effective lattice volume from atomic volume for 249-site cell
variable lat_vol equal ${atomic_vol}*249/250
variable lat_vol equal 121.863*249/250
# Derive lattice constant from lattice volume
variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0)
variable lattice_constant equal (121.375548*2.0)^(1.0/3.0)
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
lattice bcc ${lattice_constant}
lattice bcc 6.23812011912273
Lattice spacing in x,y,z = 6.2381201 6.2381201 6.2381201
region box block 0 5 0 5 0 5
create_box 1 box
Created orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 250 atoms
using lattice units in orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601)
create_atoms CPU = 0.000 seconds
# Remove central atom from bcc lattice to create vacancy
region vacancy sphere 2.5 2.5 2.5 0.1 units lattice
delete_atoms region vacancy
Deleted 1 atoms, new total = 249
# Define potential for use in simulation
pair_style mgpt
# Set parameters for potential:
# parameter files atomic volume
#pair_coeff * * parmin potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.863
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
# Set neighbor list parameters
neighbor 0.1 bin
neigh_modify every 1 delay 0 check yes
# Dump coordinates to file every 50 timesteps
# dump id all atom 50 dump.vacmin-bcc
# Output thermodynamical data every 10 timesteps
thermo 10
# Set output quantities and output format
thermo_style custom step vol temp pe etotal press
## Example: Output floating point number with 5 digits exponential notation.
#thermo_modify format float %15.5e
# minimize total energy
min_style cg
minimize 1.0e-10 1.0e-10 5000 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 = 13.171237
ghost atom cutoff = 13.171237
binsize = 6.5856184, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair mgpt, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) pair mgpt, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.88 | 4.88 | 4.88 Mbytes
Step Volume Temp PotEng TotEng Press
0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09
10 30343.887 0 -74.002332 -74.002332 -1.107516e+09
20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09
30 30343.887 0 -74.005762 -74.005762 -1.143304e+09
40 30343.887 0 -74.006116 -74.006116 -1.149395e+09
50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09
60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09
70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09
80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09
90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09
100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09
110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09
120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09
130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09
139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09
Loop time of 2.58636 on 1 procs for 139 steps with 249 atoms
90.5% CPU use with 1 MPI tasks x 1 OpenMP threads
Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-73.9945109564338 -74.0063705487283 -74.0063705557007
Force two-norm initial, final = 0.036622686 8.090814e-05
Force max component initial, final = 0.0073094815 8.0524205e-06
Final line search alpha, max atom move = 1 8.0524205e-06
Iterations, force evaluations = 139 139
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.5671 | 2.5671 | 2.5671 | 0.0 | 99.26
Neigh | 0.015241 | 0.015241 | 0.015241 | 0.0 | 0.59
Comm | 0.001446 | 0.001446 | 0.001446 | 0.0 | 0.06
Output | 0.00038428 | 0.00038428 | 0.00038428 | 0.0 | 0.01
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.002161 | | | 0.08
Nlocal: 249 ave 249 max 249 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1479 ave 1479 max 1479 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 7936 ave 7936 max 7936 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 15872 ave 15872 max 15872 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 15872
Ave neighs/atom = 63.742972
Neighbor list builds = 4
Dangerous builds = 0
# Convert energy to rydbergs and pressure to gpa
variable natoms equal "count(all)"
variable voltot equal "vol"
variable atvol equal "v_voltot/v_natoms"
variable etot equal "2.0*pe"
variable etotry equal "v_etot/v_natoms"
variable ptot equal "press"
variable ptotgpa equal "v_ptot/1.0e+09"
print "number of atoms = ${natoms}"
number of atoms = 249
print "atomic volume (a.u.) = ${atvol}"
atomic volume (a.u.) = 121.863
print "total energy (ry/atom) = ${etotry}"
total energy (ry/atom) = -0.594428679162253
print "pressure (gpa) = ${ptotgpa}"
pressure (gpa) = -1.15783109516516
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
249 121.863 -148.012741111401 -1.15783109516516
print "${atvol} ${etotry} ${ptotgpa}"
121.863 -0.594428679162253 -1.15783109516516
Total wall time: 0:00:02

View File

@ -0,0 +1,162 @@
LAMMPS (21 Nov 2023 - Development - patch_21Nov2023-744-g031cef558e-modified)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# script for mgpt t=0 eos with relaxed vacancy in bcc structure:
# input for relaxed vacancy formation energy at constant pressure
units electron
atom_style atomic
# Atomic volume for MGPT potential
variable atomic_vol equal 121.863
# Derive effective lattice volume from atomic volume for 249-site cell
variable lat_vol equal ${atomic_vol}*249/250
variable lat_vol equal 121.863*249/250
# Derive lattice constant from lattice volume
variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0)
variable lattice_constant equal (121.375548*2.0)^(1.0/3.0)
# Create bcc lattice with 5x5x5 unit cells (250 atoms)
lattice bcc ${lattice_constant}
lattice bcc 6.23812011912273
Lattice spacing in x,y,z = 6.2381201 6.2381201 6.2381201
region box block 0 5 0 5 0 5
create_box 1 box
Created orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 250 atoms
using lattice units in orthogonal box = (0 0 0) to (31.190601 31.190601 31.190601)
create_atoms CPU = 0.000 seconds
# Remove central atom from bcc lattice to create vacancy
region vacancy sphere 2.5 2.5 2.5 0.1 units lattice
delete_atoms region vacancy
Deleted 1 atoms, new total = 249
# Define potential for use in simulation
pair_style mgpt
# Set parameters for potential:
# parameter files atomic volume
#pair_coeff * * parmin potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol}
pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin 121.863
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
# Set neighbor list parameters
neighbor 0.1 bin
neigh_modify every 1 delay 0 check yes
# Dump coordinates to file every 50 timesteps
# dump id all atom 50 dump.vacmin-bcc
# Output thermodynamical data every 10 timesteps
thermo 10
# Set output quantities and output format
thermo_style custom step vol temp pe etotal press
## Example: Output floating point number with 5 digits exponential notation.
#thermo_modify format float %15.5e
# minimize total energy
min_style cg
minimize 1.0e-10 1.0e-10 5000 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 = 13.171237
ghost atom cutoff = 13.171237
binsize = 6.5856184, bins = 5 5 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair mgpt, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) pair mgpt, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.855 | 4.855 | 4.855 Mbytes
Step Volume Temp PotEng TotEng Press
0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09
10 30343.887 0 -74.002332 -74.002332 -1.107516e+09
20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09
30 30343.887 0 -74.005762 -74.005762 -1.143304e+09
40 30343.887 0 -74.006116 -74.006116 -1.149395e+09
50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09
60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09
70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09
80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09
90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09
100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09
110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09
120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09
130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09
139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09
Loop time of 0.972735 on 4 procs for 139 steps with 249 atoms
89.3% CPU use with 4 MPI tasks x 1 OpenMP threads
Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-73.9945109564331 -74.0063705487423 -74.0063705556773
Force two-norm initial, final = 0.036622686 8.090814e-05
Force max component initial, final = 0.0073094815 8.0524207e-06
Final line search alpha, max atom move = 1 8.0524207e-06
Iterations, force evaluations = 139 139
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.9418 | 0.94514 | 0.9488 | 0.3 | 97.16
Neigh | 0.0083827 | 0.0084423 | 0.0085002 | 0.0 | 0.87
Comm | 0.011833 | 0.015482 | 0.01882 | 2.0 | 1.59
Output | 0.0002579 | 0.00029089 | 0.000389 | 0.0 | 0.03
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.003376 | | | 0.35
Nlocal: 62.25 ave 68 max 59 min
Histogram: 1 1 0 1 0 0 0 0 0 1
Nghost: 867.75 ave 871 max 862 min
Histogram: 1 0 0 0 0 0 1 0 1 1
Neighs: 1984 ave 2211 max 1853 min
Histogram: 1 1 1 0 0 0 0 0 0 1
FullNghs: 3968 ave 4334 max 3761 min
Histogram: 1 1 0 1 0 0 0 0 0 1
Total # of neighbors = 15872
Ave neighs/atom = 63.742972
Neighbor list builds = 4
Dangerous builds = 0
# Convert energy to rydbergs and pressure to gpa
variable natoms equal "count(all)"
variable voltot equal "vol"
variable atvol equal "v_voltot/v_natoms"
variable etot equal "2.0*pe"
variable etotry equal "v_etot/v_natoms"
variable ptot equal "press"
variable ptotgpa equal "v_ptot/1.0e+09"
print "number of atoms = ${natoms}"
number of atoms = 249
print "atomic volume (a.u.) = ${atvol}"
atomic volume (a.u.) = 121.863
print "total energy (ry/atom) = ${etotry}"
total energy (ry/atom) = -0.594428679162068
print "pressure (gpa) = ${ptotgpa}"
pressure (gpa) = -1.15783109519336
print "${natoms} ${atvol} ${etot} ${ptotgpa}"
249 121.863 -148.012741111355 -1.15783109519336
print "${atvol} ${etotry} ${ptotgpa}"
121.863 -0.594428679162068 -1.15783109519336
Total wall time: 0:00:00

View File

@ -1,53 +0,0 @@
LAMMPS (23 Oct 2015)
# script for mgpt t=0 eos in bulk bcc structure
echo screen
Lattice spacing in x,y,z = 6.24196 6.24196 6.24196
Created orthogonal box = (0 0 0) to (31.2098 31.2098 31.2098)
1 by 1 by 1 MPI processor grid
Created 250 atoms
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 13.1618
ghost atom cutoff = 13.1618
binsize = 6.58091 -> bins = 5 5 5
Memory usage per processor = 3.54482 Mbytes
Step Volume Temp PotEng TotEng Press
0 30400 0 -74.412503 -74.412503 -1.1594626e+09
Loop time of 1.90735e-06 on 1 procs for 0 steps with 250 atoms
0.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.907e-06 | | |100.00
Nlocal: 250 ave 250 max 250 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1479 ave 1479 max 1479 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 8000 ave 8000 max 8000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 16000 ave 16000 max 16000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 16000
Ave neighs/atom = 64
Neighbor list builds = 0
Dangerous builds = 0
number of atoms = 250
atomic volume (a.u.) = 121.6
total energy (ry/atom) = -0.59530002488734
pressure (gpa) = -1.15946260887556
250 121.6 -148.825006221835 -1.15946260887556
121.6 -0.59530002488734 -1.15946260887556
Total wall time: 0:00:00

View File

@ -1,55 +0,0 @@
LAMMPS (23 Oct 2015)
# script for mgpt t=0 eos with unrelaxed vacancy in bcc lattice:
# input for unrelaxed vacancy formation energy at constant atomic volume
echo screen
Lattice spacing in x,y,z = 6.23363 6.23363 6.23363
Created orthogonal box = (0 0 0) to (31.1681 31.1681 31.1681)
1 by 1 by 1 MPI processor grid
Created 250 atoms
Deleted 1 atoms, new total = 249
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 13.1618
ghost atom cutoff = 13.1618
binsize = 6.58091 -> bins = 5 5 5
Memory usage per processor = 3.54478 Mbytes
Step Volume Temp PotEng TotEng Press
0 30278.4 0 -73.996387 -73.996387 -6.3426731e+08
Loop time of 1.90735e-06 on 1 procs for 0 steps with 249 atoms
0.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.907e-06 | | |100.00
Nlocal: 249 ave 249 max 249 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1479 ave 1479 max 1479 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 7936 ave 7936 max 7936 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 15872 ave 15872 max 15872 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 15872
Ave neighs/atom = 63.743
Neighbor list builds = 0
Dangerous builds = 0
number of atoms = 249
atomic volume (a.u.) = 121.6
total energy (ry/atom) = -0.594348488796036
pressure (gpa) = -0.634267307139601
249 121.6 -147.992773710213 -0.634267307139601
121.6 -0.594348488796036 -0.634267307139601
Total wall time: 0:00:00

View File

@ -1,78 +0,0 @@
LAMMPS (23 Oct 2015)
# script for mgpt t=0 eos with relaxed vacancy in bcc structure:
# input for relaxed vacancy formation energy at constant pressure
echo screen
Lattice spacing in x,y,z = 6.23812 6.23812 6.23812
Created orthogonal box = (0 0 0) to (31.1906 31.1906 31.1906)
1 by 1 by 1 MPI processor grid
Created 250 atoms
Deleted 1 atoms, new total = 249
Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 13.1712
ghost atom cutoff = 13.1712
binsize = 6.58562 -> bins = 5 5 5
Memory usage per processor = 4.66978 Mbytes
Step Volume Temp PotEng TotEng Press
0 30343.887 0 -73.994511 -73.994511 -1.0504398e+09
10 30343.887 0 -74.002332 -74.002332 -1.107516e+09
20 30343.887 0 -74.00485 -74.00485 -1.1316373e+09
30 30343.887 0 -74.005762 -74.005762 -1.143304e+09
40 30343.887 0 -74.006116 -74.006116 -1.149395e+09
50 30343.887 0 -74.006262 -74.006262 -1.1527914e+09
60 30343.887 0 -74.006323 -74.006323 -1.1547677e+09
70 30343.887 0 -74.00635 -74.00635 -1.1559529e+09
80 30343.887 0 -74.006361 -74.006361 -1.1566763e+09
90 30343.887 0 -74.006366 -74.006366 -1.1571256e+09
100 30343.887 0 -74.006369 -74.006369 -1.1574093e+09
110 30343.887 0 -74.00637 -74.00637 -1.1575908e+09
120 30343.887 0 -74.00637 -74.00637 -1.1577083e+09
130 30343.887 0 -74.00637 -74.00637 -1.1577849e+09
139 30343.887 0 -74.006371 -74.006371 -1.1578311e+09
Loop time of 4.22107 on 1 procs for 139 steps with 249 atoms
92.1% CPU use with 1 MPI tasks x no OpenMP threads
Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-73.9945109564 -74.0063705487 -74.0063705557
Force two-norm initial, final = 0.0366227 8.09081e-05
Force max component initial, final = 0.00730948 8.05242e-06
Final line search alpha, max atom move = 1 8.05242e-06
Iterations, force evaluations = 139 139
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 4.1973 | 4.1973 | 4.1973 | 0.0 | 99.44
Neigh | 0.018799 | 0.018799 | 0.018799 | 0.0 | 0.45
Comm | 0.0017059 | 0.0017059 | 0.0017059 | 0.0 | 0.04
Output | 0.00080252 | 0.00080252 | 0.00080252 | 0.0 | 0.02
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.002477 | | | 0.06
Nlocal: 249 ave 249 max 249 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1479 ave 1479 max 1479 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 7936 ave 7936 max 7936 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 15872 ave 15872 max 15872 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 15872
Ave neighs/atom = 63.743
Neighbor list builds = 4
Dangerous builds = 0
number of atoms = 249
atomic volume (a.u.) = 121.863
total energy (ry/atom) = -0.594428679162064
pressure (gpa) = -1.15783109519801
249 121.863 -148.012741111354 -1.15783109519801
121.863 -0.594428679162064 -1.15783109519801
Total wall time: 0:00:04

View File

@ -491,17 +491,17 @@ template<int mem1, int mem2> struct _ucl_memcpy;
// Both are images // Both are images
template<> struct _ucl_memcpy<2,2> { template<> struct _ucl_memcpy<2,2> {
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const p2 &src, const size_t n, static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/,
cl_command_queue &cq, const cl_bool block, cl_command_queue &/*cq*/, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/,
const size_t spitch, const size_t cols, const size_t /*spitch*/, const size_t /*cols*/,
const size_t rows, cl_command_queue &cq, const size_t /*rows*/, cl_command_queue &/*cq*/,
const cl_bool block, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
}; };
@ -509,17 +509,17 @@ template<> struct _ucl_memcpy<2,2> {
// Destination is texture, source on device // Destination is texture, source on device
template<> struct _ucl_memcpy<2,0> { template<> struct _ucl_memcpy<2,0> {
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const p2 &src, const size_t n, static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/,
cl_command_queue &cq, const cl_bool block, cl_command_queue &/*cq*/, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/,
const size_t spitch, const size_t cols, const size_t /*spitch*/, const size_t /*cols*/,
const size_t rows, cl_command_queue &cq, const size_t /*rows*/, cl_command_queue &/*cq*/,
const cl_bool block, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
}; };
@ -527,17 +527,17 @@ template<> struct _ucl_memcpy<2,0> {
// Destination is texture, source on host // Destination is texture, source on host
template<> struct _ucl_memcpy<2,1> { template<> struct _ucl_memcpy<2,1> {
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const p2 &src, const size_t n, static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/,
cl_command_queue &cq, const cl_bool block, cl_command_queue &/*cq*/, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/,
const size_t spitch, const size_t cols, const size_t /*spitch*/, const size_t /*cols*/,
const size_t rows, cl_command_queue &cq, const size_t /*rows*/, cl_command_queue &/*cq*/,
const cl_bool block, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
}; };
@ -545,17 +545,17 @@ template<> struct _ucl_memcpy<2,1> {
// Source is texture, dest on device // Source is texture, dest on device
template<> struct _ucl_memcpy<0,2> { template<> struct _ucl_memcpy<0,2> {
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const p2 &src, const size_t n, static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/,
cl_command_queue &cq, const cl_bool block, cl_command_queue &/*cq*/, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/,
const size_t spitch, const size_t cols, const size_t /*spitch*/, const size_t /*cols*/,
const size_t rows, cl_command_queue &cq, const size_t /*rows*/, cl_command_queue &/*cq*/,
const cl_bool block, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
}; };
@ -563,17 +563,17 @@ template<> struct _ucl_memcpy<0,2> {
// Source is texture, dest on host // Source is texture, dest on host
template<> struct _ucl_memcpy<1,2> { template<> struct _ucl_memcpy<1,2> {
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const p2 &src, const size_t n, static inline void mc(p1 &/*dst*/, const p2 &/*src*/, const size_t /*n*/,
cl_command_queue &cq, const cl_bool block, cl_command_queue &/*cq*/, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
template <class p1, class p2> template <class p1, class p2>
static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, static inline void mc(p1 &/*dst*/, const size_t /*dpitch*/, const p2 &/*src*/,
const size_t spitch, const size_t cols, const size_t /*spitch*/, const size_t /*cols*/,
const size_t rows, cl_command_queue &cq, const size_t /*rows*/, cl_command_queue &/*cq*/,
const cl_bool block, const cl_bool /*block*/,
const size_t dst_offset, const size_t src_offset) { const size_t /*dst_offset*/, const size_t /*src_offset*/) {
assert(0==1); assert(0==1);
} }
}; };

View File

@ -507,7 +507,7 @@ template <> struct _ucl_cast_copy<0,0> {
} }
template <class mat1, class mat2, class mat3> template <class mat1, class mat2, class mat3>
static inline void cc(mat1 & /*dst*/, const mat2 & /*src*/, const size_t /*rows*/, static inline void cc(mat1 & /*dst*/, const mat2 & /*src*/, const size_t /*rows*/,
const size_t cols, mat3 & /*cast_buffer*/, command_queue & /*cq*/) { const size_t /*cols*/, mat3 & /*cast_buffer*/, command_queue & /*cq*/) {
assert(0==1); assert(0==1);
} }
}; };

View File

@ -156,7 +156,7 @@ class UCL_D_Vec : public UCL_BaseMat {
* \param stride Number of _elements_ between the start of each row **/ * \param stride Number of _elements_ between the start of each row **/
template <class ucl_type> template <class ucl_type>
inline void view(ucl_type &input, const size_t rows, const size_t cols, inline void view(ucl_type &input, const size_t rows, const size_t cols,
const size_t stride) { view(input,rows,cols); } const size_t /*stride*/) { view(input,rows,cols); }
/// Do not allocate memory, instead use an existing allocation from Geryon /// Do not allocate memory, instead use an existing allocation from Geryon
/** This function must be passed a Geryon vector or matrix container. /** This function must be passed a Geryon vector or matrix container.
@ -185,7 +185,7 @@ class UCL_D_Vec : public UCL_BaseMat {
* - The view does not prevent the memory from being freed by the * - The view does not prevent the memory from being freed by the
* allocating container when using CUDA APIs **/ * allocating container when using CUDA APIs **/
template <class ptr_type> template <class ptr_type>
inline void view(ptr_type input, const size_t rows, const size_t cols, inline void view(ptr_type input, const size_t /*rows*/, const size_t cols,
UCL_Device &dev) { UCL_Device &dev) {
#ifdef UCL_DEBUG #ifdef UCL_DEBUG
assert(rows==1); assert(rows==1);
@ -213,7 +213,7 @@ class UCL_D_Vec : public UCL_BaseMat {
* \param stride Number of _elements_ between the start of each row **/ * \param stride Number of _elements_ between the start of each row **/
template <class ptr_type> template <class ptr_type>
inline void view(ptr_type input, const size_t rows, const size_t cols, inline void view(ptr_type input, const size_t rows, const size_t cols,
const size_t stride, UCL_Device &dev) const size_t stride, UCL_Device &/*dev*/)
{ view(input,rows,cols,stride); } { view(input,rows,cols,stride); }
/// Do not allocate memory, instead use an existing allocation /// Do not allocate memory, instead use an existing allocation
@ -262,7 +262,7 @@ class UCL_D_Vec : public UCL_BaseMat {
* \param stride Number of _elements_ between the start of each row **/ * \param stride Number of _elements_ between the start of each row **/
template <class ucl_type> template <class ucl_type>
inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, inline void view_offset(const size_t offset,ucl_type &input,const size_t rows,
const size_t cols, const size_t stride) const size_t cols, const size_t /*stride*/)
{ view_offset(offset,input,rows,cols); } { view_offset(offset,input,rows,cols); }
/// Do not allocate memory, instead use an existing allocation from Geryon /// Do not allocate memory, instead use an existing allocation from Geryon
@ -292,7 +292,7 @@ class UCL_D_Vec : public UCL_BaseMat {
* - The view does not prevent the memory from being freed by the * - The view does not prevent the memory from being freed by the
* allocating container when using CUDA APIs **/ * allocating container when using CUDA APIs **/
template <class ptr_type> template <class ptr_type>
inline void view_offset(const size_t offset,ptr_type input,const size_t rows, inline void view_offset(const size_t offset,ptr_type input,const size_t /*rows*/,
const size_t cols, UCL_Device &dev) { const size_t cols, UCL_Device &dev) {
#ifdef UCL_DEBUG #ifdef UCL_DEBUG
assert(rows==1); assert(rows==1);
@ -328,7 +328,7 @@ class UCL_D_Vec : public UCL_BaseMat {
* \param stride Number of _elements_ between the start of each row **/ * \param stride Number of _elements_ between the start of each row **/
template <class ptr_type> template <class ptr_type>
inline void view_offset(const size_t offset,ptr_type input,const size_t rows, inline void view_offset(const size_t offset,ptr_type input,const size_t rows,
const size_t cols,const size_t stride,UCL_Device &dev) const size_t cols,const size_t stride,UCL_Device &/*dev*/)
{ view_offset(offset,input,rows,cols,stride); } { view_offset(offset,input,rows,cols,stride); }
/// Do not allocate memory, instead use an existing allocation /// Do not allocate memory, instead use an existing allocation

View File

@ -156,7 +156,7 @@ class UCL_H_Vec : public UCL_BaseMat {
* \param stride Number of _elements_ between the start of each row **/ * \param stride Number of _elements_ between the start of each row **/
template <class ucl_type> template <class ucl_type>
inline void view(ucl_type &input, const size_t rows, const size_t cols, inline void view(ucl_type &input, const size_t rows, const size_t cols,
const size_t stride) { view(input,rows,cols); } const size_t /*stride*/) { view(input,rows,cols); }
/// Do not allocate memory, instead use an existing allocation from Geryon /// Do not allocate memory, instead use an existing allocation from Geryon
/** This function must be passed a Geryon vector or matrix container. /** This function must be passed a Geryon vector or matrix container.
@ -214,7 +214,7 @@ class UCL_H_Vec : public UCL_BaseMat {
* \param stride Number of _elements_ between the start of each row **/ * \param stride Number of _elements_ between the start of each row **/
template <class ptr_type> template <class ptr_type>
inline void view(ptr_type *input, const size_t rows, const size_t cols, inline void view(ptr_type *input, const size_t rows, const size_t cols,
const size_t stride, UCL_Device &dev) const size_t stride, UCL_Device &/*dev*/)
{ view(input,rows,cols,stride); } { view(input,rows,cols,stride); }
/// Do not allocate memory, instead use an existing allocation /// Do not allocate memory, instead use an existing allocation
@ -259,7 +259,7 @@ class UCL_H_Vec : public UCL_BaseMat {
* \param stride Number of _elements_ between the start of each row **/ * \param stride Number of _elements_ between the start of each row **/
template <class ucl_type> template <class ucl_type>
inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, inline void view_offset(const size_t offset,ucl_type &input,const size_t rows,
const size_t cols, const size_t stride) const size_t cols, const size_t /*stride*/)
{ view_offset(offset,input,rows,cols); } { view_offset(offset,input,rows,cols); }
/// Do not allocate memory, instead use an existing allocation from Geryon /// Do not allocate memory, instead use an existing allocation from Geryon
@ -382,10 +382,10 @@ class UCL_H_Vec : public UCL_BaseMat {
/// Get element at index i /// Get element at index i
inline const numtyp & operator[](const int i) const { return _array[i]; } inline const numtyp & operator[](const int i) const { return _array[i]; }
/// 2D access (row should always be 0) /// 2D access (row should always be 0)
inline numtyp & operator()(const int row, const int col) inline numtyp & operator()(const int /*row*/, const int col)
{ return _array[col]; } { return _array[col]; }
/// 2D access (row should always be 0) /// 2D access (row should always be 0)
inline const numtyp & operator()(const int row, const int col) const inline const numtyp & operator()(const int /*row*/, const int col) const
{ return _array[col]; } { return _array[col]; }
/// Returns pointer to memory pointer for allocation on host /// Returns pointer to memory pointer for allocation on host

View File

@ -35,7 +35,7 @@ template <> struct _ucl_print<1> {
} }
template <class mat_type> template <class mat_type>
static inline void p(const mat_type &mat, const size_t n, std::ostream &out, static inline void p(const mat_type &mat, const size_t n, std::ostream &out,
const std::string delim, UCL_Device &dev) { const std::string delim, UCL_Device &/*dev*/) {
p(mat,n,out,delim); p(mat,n,out,delim);
} }
template <class mat_type> template <class mat_type>
@ -59,7 +59,7 @@ template <> struct _ucl_print<1> {
template <class mat_type> template <class mat_type>
static inline void p(const mat_type &mat,const size_t rows,const size_t cols, static inline void p(const mat_type &mat,const size_t rows,const size_t cols,
std::ostream &out,const std::string delim, std::ostream &out,const std::string delim,
const std::string row_delim, UCL_Device &dev) { const std::string row_delim, UCL_Device &/*dev*/) {
p(mat,rows,cols,out,delim,row_delim); p(mat,rows,cols,out,delim,row_delim);
} }
}; };

View File

@ -53,7 +53,7 @@ template <> struct _ucl_s_obj_help<1> {
} }
template <class t1, class t2, class t3, class mat_type> template <class t1, class t2, class t3, class mat_type>
static inline int alloc(t1 &host, t2 &device, t3 &_buffer, static inline int alloc(t1 &host, t2 &device, t3 &/*_buffer*/,
const int cols, mat_type &cq, const int cols, mat_type &cq,
const enum UCL_MEMOPT kind1, const enum UCL_MEMOPT kind1,
const enum UCL_MEMOPT kind2) { const enum UCL_MEMOPT kind2) {
@ -79,7 +79,7 @@ template <> struct _ucl_s_obj_help<1> {
} }
template <class t1, class t2, class t3> template <class t1, class t2, class t3>
static inline int alloc(t1 &host, t2 &device, t3 &_buffer, static inline int alloc(t1 &host, t2 &device, t3 &/*_buffer*/,
const int rows, const int cols, UCL_Device &acc, const int rows, const int cols, UCL_Device &acc,
const enum UCL_MEMOPT kind1, const enum UCL_MEMOPT kind1,
const enum UCL_MEMOPT kind2) { const enum UCL_MEMOPT kind2) {
@ -105,7 +105,7 @@ template <> struct _ucl_s_obj_help<1> {
} }
template <class t1, class t2, class t3, class mat_type> template <class t1, class t2, class t3, class mat_type>
static inline int alloc(t1 &host, t2 &device, t3 &_buffer, static inline int alloc(t1 &host, t2 &device, t3 &/*_buffer*/,
const int rows, const int cols, mat_type &cq, const int rows, const int cols, mat_type &cq,
const enum UCL_MEMOPT kind1, const enum UCL_MEMOPT kind1,
const enum UCL_MEMOPT kind2) { const enum UCL_MEMOPT kind2) {
@ -177,7 +177,7 @@ template <> struct _ucl_s_obj_help<1> {
} }
template <class t1, class t2, class t3> template <class t1, class t2, class t3>
static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, static inline int dev_resize(t1 &device, t2 &host, t3 &/*buff*/, const int rows,
const int cols) { const int cols) {
if (device.kind()==UCL_VIEW) { if (device.kind()==UCL_VIEW) {
device.view(host); device.view(host);
@ -369,7 +369,7 @@ template <int st> struct _ucl_s_obj_help {
} }
template <class t1, class t2, class t3> template <class t1, class t2, class t3>
static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, static inline int dev_resize(t1 &device, t2 &/*host*/, t3 &buff, const int rows,
const int cols) { const int cols) {
int err=buff.resize(rows,cols); int err=buff.resize(rows,cols);
if (err!=UCL_SUCCESS) if (err!=UCL_SUCCESS)

View File

@ -147,10 +147,10 @@ class UCL_Vector {
/// Get element at index i /// Get element at index i
inline const hosttype & operator[](const int i) const { return host[i]; } inline const hosttype & operator[](const int i) const { return host[i]; }
/// 2D access (row should always be 0) /// 2D access (row should always be 0)
inline hosttype & operator()(const int row, const int col) inline hosttype & operator()(const int /*row*/, const int col)
{ return host[col]; } { return host[col]; }
/// 2D access (row should always be 0) /// 2D access (row should always be 0)
inline const hosttype & operator()(const int row, const int col) const inline const hosttype & operator()(const int /*row*/, const int col) const
{ return host[col]; } { return host[col]; }
/// Returns pointer to memory pointer for allocation on host /// Returns pointer to memory pointer for allocation on host

View File

@ -1254,7 +1254,7 @@ class lammps(object):
def set_variable(self,name,value): def set_variable(self,name,value):
"""Set a new value for a LAMMPS string style variable """Set a new value for a LAMMPS string style variable
.. deprecated:: TBD .. deprecated:: 7Feb2024
This is a wrapper around the :cpp:func:`lammps_set_variable` This is a wrapper around the :cpp:func:`lammps_set_variable`
function of the C-library interface. function of the C-library interface.
@ -1278,7 +1278,7 @@ class lammps(object):
def set_string_variable(self,name,value): def set_string_variable(self,name,value):
"""Set a new value for a LAMMPS string style variable """Set a new value for a LAMMPS string style variable
.. versionadded:: TBD .. versionadded:: 7Feb2024
This is a wrapper around the :cpp:func:`lammps_set_string_variable` This is a wrapper around the :cpp:func:`lammps_set_string_variable`
function of the C-library interface. function of the C-library interface.
@ -1302,7 +1302,7 @@ class lammps(object):
def set_internal_variable(self,name,value): def set_internal_variable(self,name,value):
"""Set a new value for a LAMMPS internal style variable """Set a new value for a LAMMPS internal style variable
.. versionadded:: TBD .. versionadded:: 7Feb2024
This is a wrapper around the :cpp:func:`lammps_set_internal_variable` This is a wrapper around the :cpp:func:`lammps_set_internal_variable`
function of the C-library interface. function of the C-library interface.

View File

@ -50,6 +50,7 @@
#include "npair_half_bin_newton_ssa.h" #include "npair_half_bin_newton_ssa.h"
#include "pair_dpd_fdt.h" #include "pair_dpd_fdt.h"
#include "pair_dpd_fdt_energy.h" #include "pair_dpd_fdt_energy.h"
#include "random_external_state.h"
#include "update.h" #include "update.h"
#include <cstring> #include <cstring>
@ -84,8 +85,8 @@ static const char cite_fix_shardlow[] =
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) : FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg), pairDPD(nullptr), pairDPDE(nullptr), v_t0(nullptr) Fix(lmp, narg, arg), pairDPD(nullptr), pairDPDE(nullptr), v_t0(nullptr),
,rand_state(nullptr) rand_state(nullptr)
{ {
if (lmp->citeme) lmp->citeme->add(cite_fix_shardlow); if (lmp->citeme) lmp->citeme->add(cite_fix_shardlow);

View File

@ -21,7 +21,10 @@ FixStyle(shardlow,FixShardlow);
#define LMP_FIX_SHARDLOW_H #define LMP_FIX_SHARDLOW_H
#include "fix.h" #include "fix.h"
#include "random_external_state.h"
namespace random_external_state {
using es_RNG_t = uint64_t;
}
namespace LAMMPS_NS { namespace LAMMPS_NS {

View File

@ -76,7 +76,7 @@
// A replacement for the Kokkos Random_XorShift64 class that uses // A replacement for the Kokkos Random_XorShift64 class that uses
// an external state variable, instead of a class member variable. // an external state variable, instead of a class member variable.
namespace random_external_state { namespace random_external_state {
typedef uint64_t es_RNG_t; using es_RNG_t = uint64_t;
constexpr uint32_t MAX_URAND = 0xffffffffU; constexpr uint32_t MAX_URAND = 0xffffffffU;
constexpr uint64_t MAX_URAND64 = 0xffffffffffffffffULL - 1; constexpr uint64_t MAX_URAND64 = 0xffffffffffffffffULL - 1;

View File

@ -1602,9 +1602,6 @@ void ref_torsion_single_interaction(KernelArgsAIREBOT<flt_t,acc_t> * ka, int i,
flt_t thmin = ka->params.thmin; flt_t thmin = ka->params.thmin;
flt_t thmax = ka->params.thmax; flt_t thmax = ka->params.thmax;
int itype = map[x[i].w]; int itype = map[x[i].w];
flt_t xtmp = x[i].x;
flt_t ytmp = x[i].y;
flt_t ztmp = x[i].z;
int * REBO_neighs_i = &ka->neigh_rebo.entries[ka->neigh_rebo.offset[i]]; int * REBO_neighs_i = &ka->neigh_rebo.entries[ka->neigh_rebo.offset[i]];
int jnum = ka->neigh_rebo.num[i]; int jnum = ka->neigh_rebo.num[i];
int jtype = map[x[j].w]; int jtype = map[x[j].w];

View File

@ -131,8 +131,7 @@ void PairLJCharmmCoulCharmmIntel::eval(const int offload, const int vflag,
int nlocal, nall, minlocal; int nlocal, nall, minlocal;
fix->get_buffern(offload, nlocal, nall, minlocal); fix->get_buffern(offload, nlocal, nall, minlocal);
const int ago = neighbor->ago; IP_PRE_pack_separate_buffers(fix, buffers, neighbor->ago, offload, nlocal, nall);
IP_PRE_pack_separate_buffers(fix, buffers, ago, offload, nlocal, nall);
ATOM_T * _noalias const x = buffers->get_x(offload); ATOM_T * _noalias const x = buffers->get_x(offload);
flt_t * _noalias const q = buffers->get_q(offload); flt_t * _noalias const q = buffers->get_q(offload);
@ -231,7 +230,6 @@ void PairLJCharmmCoulCharmmIntel::eval(const int offload, const int vflag,
else foff = -minlocal; else foff = -minlocal;
FORCE_T * _noalias const f = f_start + foff; FORCE_T * _noalias const f = f_start + foff;
if (NEWTON_PAIR) memset(f + minlocal, 0, f_stride * sizeof(FORCE_T)); if (NEWTON_PAIR) memset(f + minlocal, 0, f_stride * sizeof(FORCE_T));
flt_t cutboth = cut_coulsq;
const int toffs = tid * ccache_stride; const int toffs = tid * ccache_stride;
flt_t * _noalias const tdelx = ccachex + toffs; flt_t * _noalias const tdelx = ccachex + toffs;
@ -246,7 +244,6 @@ void PairLJCharmmCoulCharmmIntel::eval(const int offload, const int vflag,
const int itype = x[i].w; const int itype = x[i].w;
const int ptr_off = itype * ntypes; const int ptr_off = itype * ntypes;
const flt_t * _noalias const cutsqi = cutsq + ptr_off;
const LJ_T * _noalias const lji = lj + ptr_off; const LJ_T * _noalias const lji = lj + ptr_off;
const int * _noalias const jlist = firstneigh[i]; const int * _noalias const jlist = firstneigh[i];

View File

@ -26,9 +26,6 @@
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
#define MIN(A,B) ((A) < (B) ? (A) : (B))
#define MAX(A,B) ((A) > (B) ? (A) : (B))
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
template<class DeviceType> template<class DeviceType>

View File

@ -18,15 +18,78 @@
#define LMP_FFT_DATA_KOKKOS_H #define LMP_FFT_DATA_KOKKOS_H
#include "kokkos_type.h" #include "kokkos_type.h"
#ifndef MAX
#define MAX(A,B) ((A) > (B) ? (A) : (B))
#endif
#include "lmpfftsettings.h" #include "lmpfftsettings.h"
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// if a user sets FFTW, it means FFTW3
#ifdef LMP_KOKKOS
# ifdef FFT_KOKKOS_FFTW
# undef FFT_KOKKOS_FFTW
# define FFT_KOKKOS_FFTW3
# endif
# ifdef FFT_KOKKOS_FFTW_THREADS
# if !defined(FFT_KOKKOS_FFTW3)
# error "Must use -DFFT_KOKKOS_FFTW3 with -DFFT_KOKKOS_FFTW_THREADS"
# endif
# endif
#endif
// with KOKKOS in CUDA or HIP mode we can only have
// CUFFT/HIPFFT or KISS, thus undefine all other
// FFTs here
#ifdef KOKKOS_ENABLE_CUDA
# if defined(FFT_KOKKOS_FFTW)
# undef FFT_KOKKOS_FFTW
# endif
# if defined(FFT_KOKKOS_FFTW3)
# undef FFT_KOKKOS_FFTW3
# endif
# if defined(FFT_KOKKOS_MKL)
# undef FFT_KOKKOS_MKL
# endif
# if !defined(FFT_KOKKOS_CUFFT) && !defined(FFT_KOKKOS_KISS)
# define FFT_KOKKOS_KISS
# endif
#elif defined(KOKKOS_ENABLE_HIP)
# if defined(FFT_KOKKOS_FFTW)
# undef FFT_KOKKOS_FFTW
# endif
# if defined(FFT_KOKKOS_FFTW3)
# undef FFT_KOKKOS_FFTW3
# endif
# if defined(FFT_KOKKOS_MKL)
# undef FFT_KOKKOS_MKL
# endif
# if !defined(FFT_KOKKOS_HIPFFT) && !defined(FFT_KOKKOS_KISS)
# define FFT_KOKKOS_KISS
# endif
#else
# if defined(FFT_KOKKOS_CUFFT)
# error "Must enable CUDA with KOKKOS to use -DFFT_KOKKOS_CUFFT"
# endif
# if defined(FFT_KOKKOS_HIPFFT)
# error "Must enable HIP with KOKKOS to use -DFFT_KOKKOS_HIPFFT"
# endif
#endif
// set strings for library info output
#if defined(FFT_KOKKOS_CUFFT)
#define LMP_FFT_KOKKOS_LIB "cuFFT"
#elif defined(FFT_KOKKOS_HIPFFT)
#define LMP_FFT_KOKKOS_LIB "hipFFT"
#elif defined(FFT_KOKKOS_FFTW3)
#define LMP_FFT_KOKKOS_LIB "FFTW3"
#elif defined(FFT_KOKKOS_MKL)
#define LMP_FFT_KOKKOS_LIB "MKL FFT"
#else
#define LMP_FFT_KOKKOS_LIB "KISS FFT"
#endif
#if defined(FFT_KOKKOS_MKL) #if defined(FFT_KOKKOS_MKL)
#include "mkl_dfti.h" #include "mkl_dfti.h"
#if defined(FFT_SINGLE) #if defined(FFT_SINGLE)

View File

@ -49,6 +49,7 @@
#include "neighbor.h" #include "neighbor.h"
#include "npair_ssa_kokkos.h" #include "npair_ssa_kokkos.h"
#include "pair_dpd_fdt_energy_kokkos.h" #include "pair_dpd_fdt_energy_kokkos.h"
#include "random_external_state.h"
#include "update.h" #include "update.h"
#include <cmath> #include <cmath>

View File

@ -19,9 +19,6 @@
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
#define MIN(A,B) ((A) < (B) ? (A) : (B))
#define MAX(A,B) ((A) > (B) ? (A) : (B))
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
template<class DeviceType> template<class DeviceType>

View File

@ -156,7 +156,7 @@ static void getparmindata(const char *potin_file,int nvol[1],double vol0[1],doub
void potdata::readpot(const char *parmin_file,const char *potin_file,const double vol) { void potdata::readpot(const char *parmin_file,const char *potin_file,const double vol) {
FILE *in; FILE *in;
double x0,x1,dx,dr; double x0,x1,dx;
int nx; int nx;
double r0x,r1x,drx; double r0x,r1x,drx;
@ -348,7 +348,7 @@ void potdata::readpot(const char *parmin_file,const char *potin_file,const doubl
nrx = (int) ((r1x-r0x)/drx + 1.1); /* Really: 1+round((r1-r0)/dr) */ nrx = (int) ((r1x-r0x)/drx + 1.1); /* Really: 1+round((r1-r0)/dr) */
if (ii == 0) { if (ii == 0) {
r0 = r0x; r1 = r1x; dr = drx; nr = nrx; r0 = r0x; r1 = r1x; nr = nrx;
vpairtab = new double[nx*nr]; vpairtab = new double[nx*nr];
} else { } else {
/* Check that {r0,r1,dr,nr}x == {r0,r1,dr,nr} */ /* Check that {r0,r1,dr,nr}x == {r0,r1,dr,nr} */
@ -373,15 +373,12 @@ void potdata::readpot(const char *parmin_file,const char *potin_file,const doubl
double r0rws = r0rwstab[i]; double r0rws = r0rwstab[i];
double r00 = r0rws*rws,rp = 1.8*rws; double r00 = r0rws*rws,rp = 1.8*rws;
if (bscreen == 0) r0rws = 10.0; if (bscreen == 0) r0rws = 10.0;
double alp = al,alm = al; double alp = al;
if (mode == 2 || mode == 4 || mode == 6) alm = 125.0;
al = alp; al = alp;
double r = r0 + j*(r1-r0)/(nr-1); double r = r0 + j*(r1-r0)/(nr-1);
double rrws = r/rws; double rrws = r/rws;
//double rsqr = r*r;
// double fl(double r,int mode,double rp,double p1,double al,double r0)
double flr = fl(r,mode,rp,p1,al,r00,pn); double flr = fl(r,mode,rp,p1,al,r00,pn);
double fl2 = flr*flr; double fl2 = flr*flr;
double v2a = vatab[i]*fl2*fl2; double v2a = vatab[i]*fl2*fl2;
@ -392,15 +389,11 @@ void potdata::readpot(const char *parmin_file,const char *potin_file,const doubl
double arg = rrws/r0rwstab[i]; double arg = rrws/r0rwstab[i];
double arg1 = arg - 1.0; double arg1 = arg - 1.0;
double arg12 = arg1*arg1; double arg12 = arg1*arg1;
double f,dp; double f;
if (mode <= 2) { if (mode <= 2) {
f = fgauss(arg,al); f = fgauss(arg,al);
dp=2.*al*arg*arg1; } else {
}
else {
f = hgauss(arg,al); f = hgauss(arg,al);
double arg13 = arg1*arg12;
dp=2.0*al*al*arg*arg13/(1.+al*arg12);
} }
fscr = f*f; fscr = f*f;
} }

View File

@ -39,7 +39,7 @@
using namespace LAMMPS_NS; using namespace LAMMPS_NS;
//#define TIMING_ON // #define TIMING_ON
#ifdef TIMING_ON #ifdef TIMING_ON
#include <sys/time.h> #include <sys/time.h>
@ -49,13 +49,11 @@ using namespace LAMMPS_NS;
#include <hwi/include/bqc/A2_inlines.h> #include <hwi/include/bqc/A2_inlines.h>
#endif #endif
static double gettime(int x = 0) { static double gettime() {
if (1) { if (1) {
/*
struct timeval tv; struct timeval tv;
gettimeofday(&tv,nullptr); gettimeofday(&tv,nullptr);
return tv.tv_sec + 1e-6 * tv.tv_usec; return tv.tv_sec + 1e-6 * tv.tv_usec;
*/
/* /*
const double x = 1.0 / CLOCKS_PER_SEC; const double x = 1.0 / CLOCKS_PER_SEC;
return clock() * x; return clock() * x;
@ -68,16 +66,17 @@ static double gettime(int x = 0) {
return x*invfreq; return x*invfreq;
*/ */
/*
const double invfreq = 1.0 / 1.6e9; const double invfreq = 1.0 / 1.6e9;
unsigned long long int x = GetTimeBase(); unsigned long long int x = GetTimeBase();
return x*invfreq; return x*invfreq;
*/
} else } else
return 0.0; return 0.0;
} }
#else #else
static double gettime(int /*x*/ = 0) { return 0.0; } static double gettime() { return 0.0; }
#endif #endif
@ -569,6 +568,7 @@ void PairMGPT::force_debug_4(double xx[][3],
#ifdef __bg__ #ifdef __bg__
#define const #define const
#endif #endif
#ifdef TIMING_ON
static int ntr_calls = 0; static int ntr_calls = 0;
static trtrace3_fun tr_internal; static trtrace3_fun tr_internal;
static void tr_count(const double * restrict A, static void tr_count(const double * restrict A,
@ -578,6 +578,7 @@ static void tr_count(const double * restrict A,
tr_internal(A,B1,t1,B2,t2,B3,t3); tr_internal(A,B1,t1,B2,t2,B3,t3);
ntr_calls++; ntr_calls++;
} }
#endif
#ifdef __bg__ #ifdef __bg__
#undef const #undef const
#endif #endif
@ -589,34 +590,33 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
double *e_s,double *e_p,double *e_t,double *e_q, double *e_s,double *e_p,double *e_t,double *e_q,
int evflag,int newton_pair) { int evflag,int newton_pair) {
Hash<bond_data,Doublet> bond_hash(100000); Hash<bond_data,Doublet> bond_hash(100000);
int i,j,k,m,ix,jx,kx,mx,p; int i,j,k,m,ix,jx,kx,p;
double e_single,e_pair,e_triplet,e_triplet_c,e_quad; double e_single,e_pair,e_triplet,e_triplet_c,e_quad;
double volvir2; double volvir2;
#ifdef TIMING_ON
double nbc = 0.0,tbl = 0.0,tbm = 0.0; double nbc = 0.0,tbl = 0.0,tbm = 0.0;
const int lmax_local = lmax; #endif
//if(evflag) printf("##### ev flag is set... wasting cycles...\n");
*e_s = -99.0; *e_s = -99.0;
*e_p = -99.0; *e_p = -99.0;
*e_t = -99.0; *e_t = -99.0;
*e_q = -99.0; *e_q = -99.0;
double t0,t1; #ifdef TIMING_ON
double t0 = gettime();
t0 = gettime(1); #endif
e_single = e_pair = e_triplet = e_triplet_c = e_quad = 0.0; e_single = e_pair = e_triplet = e_triplet_c = e_quad = 0.0;
volvir2 = 0.0; volvir2 = 0.0;
t_make_t = t_make_b = t_make_b2 = t_trace = 0.0; t_make_t = t_make_b = t_make_b2 = t_trace = 0.0;
n_make = n_make_b2 = n_trace = 0.0; n_make = n_make_b2 = n_trace = 0.0;
double tx0,tx1,tsort = 0.0,tpair = 0.0,tlookup = 0.0; #ifdef TIMING_ON
double tsort = 0.0, tpair = 0.0,tlookup = 0.0;
double ttriplet = 0.0,tquad = 0.0,tmem = 0.0; double ttriplet = 0.0,tquad = 0.0,tmem = 0.0;
double ntsort = 0.0,ntpair = 0.0,ntlookup = 0.0; double ntsort = 0.0,ntpair = 0.0,ntlookup = 0.0;
double nttriplet = 0.0,ntquad = 0.0,ntmem = 0.0,ntquaditer = 0.0; double nttriplet = 0.0,ntquad = 0.0,ntmem = 0.0,ntquaditer = 0.0;
double mcount = 0.0,mcount2 = 0.0, qcount = 0.0; double mcount = 0.0,mcount2 = 0.0, qcount = 0.0;
#endif
double fix,fjx,fkx,fmx,dfix,dfjx,dfkx,dfmx; double fix,fjx,fkx,fmx,dfix,dfjx,dfkx,dfmx;
double fiy,fjy,fky,fmy,dfiy,dfjy,dfky,dfmy; double fiy,fjy,fky,fmy,dfiy,dfjy,dfky,dfmy;
@ -670,8 +670,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
double trd1y,trd2y,trd3y,trd4y; double trd1y,trd2y,trd3y,trd4y;
double trd1z,trd2z,trd3z,trd4z; double trd1z,trd2z,trd3z,trd4z;
#ifdef TIMING_ON
tx0 = gettime(); double tx0 = gettime();
#endif
double rhoinv; double rhoinv;
{ {
@ -751,9 +752,11 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
first = (int *) memory->smalloc(sizeof(int) * (ntot+1),"mgpt: first"); first = (int *) memory->smalloc(sizeof(int) * (ntot+1),"mgpt: first");
nlist_short = (int *) memory->smalloc(sizeof(int) * nneitot,"mgpt: nlist_short"); nlist_short = (int *) memory->smalloc(sizeof(int) * nneitot,"mgpt: nlist_short");
tx1 = gettime(); #ifdef TIMING_ON
double tx1 = gettime();
tmem += tx1-tx0; tmem += tx1-tx0;
ntmem++; ntmem++;
#endif
//printf("[%3d] Starting calculation...\n",comm->me); //printf("[%3d] Starting calculation...\n",comm->me);
@ -762,7 +765,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
fiy = fjy = fky = fmy = 0.0; fiy = fjy = fky = fmy = 0.0;
fiz = fjz = fkz = fmz = 0.0; fiz = fjz = fkz = fmz = 0.0;
#ifdef TIMING_ON
int c_p = 0, c_t = 0, c_q = 0; int c_p = 0, c_t = 0, c_q = 0;
#endif
if (false) if (false)
if (domain->triclinic) { if (domain->triclinic) {
@ -786,7 +791,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
const int c1 = c1_outside(ss[i],triclinic,alpha); const int c1 = c1_outside(ss[i],triclinic,alpha);
#ifdef TIMING_ON
tx0 = gettime(); tx0 = gettime();
#endif
for (jx = 0; jx<nnei[i]; jx++) { for (jx = 0; jx<nnei[i]; jx++) {
fjx = fjy = fjz = 0.0; fjx = fjy = fjz = 0.0;
@ -814,8 +821,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
if (pair_energies == 0) de_pair = 0.0; if (pair_energies == 0) de_pair = 0.0;
e_pair = e_pair + de_pair; e_pair = e_pair + de_pair;
#ifdef TIMING_ON
c_p++; c_p++;
#endif
if (pair_forces == 0) df = 0.0; if (pair_forces == 0) df = 0.0;
if (volpres_flag && pair_energies) { if (volpres_flag && pair_energies) {
@ -885,9 +893,11 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
ff[i][1] += fiy * e_scale; ff[i][1] += fiy * e_scale;
ff[i][2] += fiz * e_scale; ff[i][2] += fiz * e_scale;
#ifdef TIMING_ON
tx1 = gettime(); tx1 = gettime();
tpair += tx1-tx0; tpair += tx1-tx0;
ntpair += nnei[i]; ntpair += nnei[i];
#endif
} }
for (i = 0; i<ntot; i++) { for (i = 0; i<ntot; i++) {
@ -950,7 +960,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
c_jk = 0; c_jk = 0;
} }
#ifdef TIMING_ON
tx0 = gettime(); tx0 = gettime();
#endif
w3 = get_weight(triclinic,ss[i],ss[j],ss[k]); w3 = get_weight(triclinic,ss[i],ss[j],ss[k]);
@ -989,8 +1001,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
vir3t = vir3t + dvir; vir3t = vir3t + dvir;
xvir3t = xvir3t + dvir; xvir3t = xvir3t + dvir;
} }
#ifdef TIMING_ON
mcount2++; mcount2++;
#endif
{ {
const double vc = splinepot.vc; const double vc = splinepot.vc;
tr_trace3(&(bki->H.m[1][0]), tr_trace3(&(bki->H.m[1][0]),
@ -1042,8 +1055,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
} }
if (T12 != nullptr) { if (T12 != nullptr) {
//printf("T12 i,j,k = %d,%d,%d\n",i,j,k); #ifdef TIMING_ON
mcount++; mcount++;
#endif
if (three_body_energies && evflag) { if (three_body_energies && evflag) {
tr1 = transtrace(T12->H1H2,T12->H1H2); tr1 = transtrace(T12->H1H2,T12->H1H2);
double dvir = (2.0*(dvir_ij + dvir_jk)*splinepot.vd + double dvir = (2.0*(dvir_ij + dvir_jk)*splinepot.vd +
@ -1098,8 +1112,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
} }
if (T23 != nullptr) { if (T23 != nullptr) {
//printf("T23 i,j,k = %d,%d,%d\n",i,j,k); #ifdef TIMING_ON
mcount++; mcount++;
#endif
if (three_body_energies && evflag) { if (three_body_energies && evflag) {
tr2 = transtrace(T23->H1H2,T23->H1H2); tr2 = transtrace(T23->H1H2,T23->H1H2);
double dvir = (2.0*(dvir_jk + dvir_ki)*splinepot.vd + double dvir = (2.0*(dvir_jk + dvir_ki)*splinepot.vd +
@ -1154,8 +1169,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
} }
if (T31 != nullptr) { if (T31 != nullptr) {
//printf("T31 i,j,k = %d,%d,%d\n",i,j,k); #ifdef TIMING_ON
mcount++; mcount++;
#endif
if (three_body_energies && evflag) { if (three_body_energies && evflag) {
tr3 = transtrace(T31->H1H2,T31->H1H2); tr3 = transtrace(T31->H1H2,T31->H1H2);
double dvir = (2.0*(dvir_ki + dvir_ij)*splinepot.vd + double dvir = (2.0*(dvir_ki + dvir_ij)*splinepot.vd +
@ -1214,8 +1230,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
double de_triplet = (splinepot.vc*v33 + splinepot.vd*v43) * e_scale * w3; double de_triplet = (splinepot.vc*v33 + splinepot.vd*v43) * e_scale * w3;
e_triplet = e_triplet + de_triplet; e_triplet = e_triplet + de_triplet;
e_triplet_c = e_triplet_c + splinepot.vc*v33 * e_scale * w3; e_triplet_c = e_triplet_c + splinepot.vc*v33 * e_scale * w3;
#ifdef TIMING_ON
c_t++; c_t++;
#endif
//printf("xxxx %6d %6d %6d :: %20.10e\n",1,2,3,de_triplet); //printf("xxxx %6d %6d %6d :: %20.10e\n",1,2,3,de_triplet);
if (evflag) { if (evflag) {
@ -1246,16 +1263,20 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
fkx = fkx+fsave[2][0]; fky = fky+fsave[2][1]; fkz = fkz+fsave[2][2]; fkx = fkx+fsave[2][0]; fky = fky+fsave[2][1]; fkz = fkz+fsave[2][2];
} }
#ifdef TIMING_ON
tx1 = gettime(); tx1 = gettime();
ttriplet += tx1 - tx0; ttriplet += tx1 - tx0;
nttriplet++; nttriplet++;
#endif
} else { } else {
triplet_defer = 1; triplet_defer = 1;
} }
if (four_body_energies || four_body_forces) if (four_body_energies || four_body_forces)
if (j < i) { /* Search for quadruplet */ if (j < i) { /* Search for quadruplet */
#ifdef TIMING_ON
tx0 = gettime(); tx0 = gettime();
#endif
mj = first[j]; mj = first[j];
mk = first[k]; mk = first[k];
@ -1342,8 +1363,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
vir4 = vir4 + dvir; vir4 = vir4 + dvir;
xvir4 = xvir4 + dvir; xvir4 = xvir4 + dvir;
} }
#ifdef TIMING_ON
qcount++; qcount++;
#endif
{ {
const double ve = splinepot.ve; const double ve = splinepot.ve;
@ -1371,8 +1393,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
vir4 = vir4 + dvir; vir4 = vir4 + dvir;
xvir4 = xvir4 + dvir; xvir4 = xvir4 + dvir;
} }
#ifdef TIMING_ON
qcount++; qcount++;
#endif
{ {
const double ve = splinepot.ve; const double ve = splinepot.ve;
@ -1401,8 +1424,9 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
vir4 = vir4 + dvir; vir4 = vir4 + dvir;
xvir4 = xvir4 + dvir; xvir4 = xvir4 + dvir;
} }
#ifdef TIMING_ON
qcount++; qcount++;
#endif
{ {
const double ve = splinepot.ve; const double ve = splinepot.ve;
@ -1425,11 +1449,13 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
double de_quad = splinepot.ve*(tr1 + tr2 + tr3)/anorm4 * e_scale * w4; double de_quad = splinepot.ve*(tr1 + tr2 + tr3)/anorm4 * e_scale * w4;
e_quad = e_quad + de_quad; e_quad = e_quad + de_quad;
#ifdef TIMING_ON
if ((T12 && T45) || if ((T12 && T45) ||
(T23 && T56) || (T23 && T56) ||
(T31 && T64)) { (T31 && T64)) {
c_q++; c_q++;
} }
#endif
if (evflag) { if (evflag) {
double drim[3],drjm[3],drkm[3]; double drim[3],drjm[3],drkm[3];
@ -1479,10 +1505,12 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
} }
} }
#ifdef TIMING_ON
tx1 = gettime(); tx1 = gettime();
tquad += tx1 - tx0; tquad += tx1 - tx0;
ntquad++; ntquad++;
ntquaditer++; ntquaditer++;
#endif
} }
@ -1514,12 +1542,12 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
for (int pp = 0; pp<3; pp++) for (int pp = 0; pp<3; pp++)
vatom[i][pp] = vatom[i][pp] - rhoinv*splinepot.devol0*e_scale; vatom[i][pp] = vatom[i][pp] - rhoinv*splinepot.devol0*e_scale;
} }
}
}
} }
#ifdef TIMING_ON
tx0 = gettime(); tx0 = gettime();
#endif
for (i = 0; i<ntot; i++) for (i = 0; i<ntot; i++)
for (p = 0; p<3; p++) for (p = 0; p<3; p++)
atom->f[i][p] = atom->f[i][p] + ff[i][p]; atom->f[i][p] = atom->f[i][p] + ff[i][p];
@ -1529,20 +1557,16 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist,
if (ss != xx) memory->sfree(ss); if (ss != xx) memory->sfree(ss);
memory->sfree(ff); memory->sfree(ff);
memory->sfree(xx); memory->sfree(xx);
#ifdef TIMING_ON
tx1 = gettime(); tx1 = gettime();
tmem += tx1-tx0; tmem += tx1-tx0;
ntmem++; ntmem++;
t1 = gettime(1); double t1 = gettime();
//printf("compute_x: c_p = %d c_t = %d c_q = %d\n",c_p,c_t,c_q);
#ifdef TIMING_ON
if (comm->me == 0) { if (comm->me == 0) {
double tsum = (tmem+tsort+tpair+tlookup+ttriplet+tquad); double tsum = (tmem+tsort+tpair+tlookup+ttriplet+tquad);
double nsum = (ntmem+ntsort+ntpair+ntlookup+nttriplet+ntquad); double nsum = (ntmem+ntsort+ntpair+ntlookup+nttriplet+ntquad);
//double adj = ((t1-t0)-tsum)/nsum;
/* Use adj = 6ns for RDTSC, and 58ns for gettimeofday, /* Use adj = 6ns for RDTSC, and 58ns for gettimeofday,
on monkfish.llnl.gov, 2.4GHz Intel on monkfish.llnl.gov, 2.4GHz Intel
@ -1832,7 +1856,7 @@ void PairMGPT::coeff(int narg, char **arg)
single_precision = 0; single_precision = 0;
/* Parse arguments */ { /* Parse arguments */ {
int volpres_tag = 0,precision_tag = 0,nbody_tag = 0; int nbody_tag = 0;
int iarg = 5; int iarg = 5;
while (iarg < narg) { while (iarg < narg) {
@ -1848,7 +1872,6 @@ void PairMGPT::coeff(int narg, char **arg)
"The value is \"%s\".\n",FLERR,arg[iarg+1]); "The value is \"%s\".\n",FLERR,arg[iarg+1]);
error->all(FLERR,line); error->all(FLERR,line);
} }
volpres_tag = 1;
iarg += 2; iarg += 2;
if (comm->me == 0) printf("* volpress: volpres_flag = %d [%s %s]\n",volpres_flag,arg[iarg-2],arg[iarg-1]); if (comm->me == 0) printf("* volpress: volpres_flag = %d [%s %s]\n",volpres_flag,arg[iarg-2],arg[iarg-1]);
} else if (strcmp(arg[iarg],"nbody") == 0) { } else if (strcmp(arg[iarg],"nbody") == 0) {
@ -1884,7 +1907,6 @@ void PairMGPT::coeff(int narg, char **arg)
"The value is \"%s\".\n",FLERR,arg[iarg+1]); "The value is \"%s\".\n",FLERR,arg[iarg+1]);
error->all(FLERR,line); error->all(FLERR,line);
} }
precision_tag = 1;
iarg += 2; iarg += 2;
if (comm->me == 0) printf("* precision: single_flag = %d [%s %s]\n",single_precision,arg[iarg-2],arg[iarg-1]); if (comm->me == 0) printf("* precision: single_flag = %d [%s %s]\n",single_precision,arg[iarg-2],arg[iarg-1]);
} else { } else {

View File

@ -273,6 +273,8 @@ public:
void allocate(); void allocate();
struct Matrix { struct Matrix {
Matrix() = default;
Matrix(const Matrix &) = default;
static int sz; static int sz;
double m[8][8]; double m[8][8];

View File

@ -2455,7 +2455,7 @@ static int set_variable_deprecated_flag = 1;
/** Set the value of a string-style variable. /** Set the value of a string-style variable.
\verbatim embed:rst \verbatim embed:rst
.. deprecated:: TBD .. deprecated:: 7Feb2024
This function assigns a new value from the string str to the This function assigns a new value from the string str to the
string-style variable *name*. This is a way to directly change the string-style variable *name*. This is a way to directly change the
@ -2493,7 +2493,7 @@ int lammps_set_variable(void *handle, const char *name, const char *str)
/** Set the value of a string-style variable. /** Set the value of a string-style variable.
\verbatim embed:rst \verbatim embed:rst
.. versionadded:: TBD .. versionadded:: 7Feb2024
This function assigns a new value from the string str to the This function assigns a new value from the string str to the
string-style variable *name*. This is a way to directly change the string-style variable *name*. This is a way to directly change the
@ -2531,6 +2531,8 @@ int lammps_set_string_variable(void *handle, const char *name, const char *str)
* *
\verbatim embed:rst \verbatim embed:rst
.. versionadded:: 7Feb2024
This function assigns a new value from the floating point number *value* This function assigns a new value from the floating point number *value*
to the internal-style variable *name*. This is a way to directly change to the internal-style variable *name*. This is a way to directly change
the numerical value of such a LAMMPS variable that was previous defined the numerical value of such a LAMMPS variable that was previous defined

View File

@ -25,18 +25,6 @@
#endif #endif
#endif #endif
#ifdef LMP_KOKKOS
# ifdef FFT_KOKKOS_FFTW
# undef FFT_KOKKOS_FFTW
# define FFT_KOKKOS_FFTW3
# endif
# ifdef FFT_KOKKOS_FFTW_THREADS
# if !defined(FFT_KOKKOS_FFTW3)
# error "Must use -DFFT_KOKKOS_FFTW3 with -DFFT_KOKKOS_FFTW_THREADS"
# endif
# endif
#endif
// set strings for library info output // set strings for library info output
#if defined(FFT_HEFFTE) #if defined(FFT_HEFFTE)
@ -59,60 +47,6 @@
#define LMP_FFT_LIB "KISS FFT" #define LMP_FFT_LIB "KISS FFT"
#endif #endif
#ifdef LMP_KOKKOS
// with KOKKOS in CUDA or HIP mode we can only have
// CUFFT/HIPFFT or KISS, thus undefine all other
// FFTs here
#ifdef KOKKOS_ENABLE_CUDA
# if defined(FFT_KOKKOS_FFTW)
# undef FFT_KOKKOS_FFTW
# endif
# if defined(FFT_KOKKOS_FFTW3)
# undef FFT_KOKKOS_FFTW3
# endif
# if defined(FFT_KOKKOS_MKL)
# undef FFT_KOKKOS_MKL
# endif
# if !defined(FFT_KOKKOS_CUFFT) && !defined(FFT_KOKKOS_KISS)
# define FFT_KOKKOS_KISS
# endif
#elif defined(KOKKOS_ENABLE_HIP)
# if defined(FFT_KOKKOS_FFTW)
# undef FFT_KOKKOS_FFTW
# endif
# if defined(FFT_KOKKOS_FFTW3)
# undef FFT_KOKKOS_FFTW3
# endif
# if defined(FFT_KOKKOS_MKL)
# undef FFT_KOKKOS_MKL
# endif
# if !defined(FFT_KOKKOS_HIPFFT) && !defined(FFT_KOKKOS_KISS)
# define FFT_KOKKOS_KISS
# endif
#else
# if defined(FFT_KOKKOS_CUFFT)
# error "Must enable CUDA with KOKKOS to use -DFFT_KOKKOS_CUFFT"
# endif
# if defined(FFT_KOKKOS_HIPFFT)
# error "Must enable HIP with KOKKOS to use -DFFT_KOKKOS_HIPFFT"
# endif
#endif
#if defined(FFT_KOKKOS_CUFFT)
#define LMP_FFT_KOKKOS_LIB "cuFFT"
#elif defined(FFT_KOKKOS_HIPFFT)
#define LMP_FFT_KOKKOS_LIB "hipFFT"
#elif defined(FFT_KOKKOS_FFTW3)
#define LMP_FFT_KOKKOS_LIB "FFTW3"
#elif defined(FFT_KOKKOS_MKL)
#define LMP_FFT_KOKKOS_LIB "MKL FFT"
#else
#define LMP_FFT_KOKKOS_LIB "KISS FFT"
#endif
#endif
#ifdef FFT_SINGLE #ifdef FFT_SINGLE
typedef float FFT_SCALAR; typedef float FFT_SCALAR;
#define FFT_PRECISION 1 #define FFT_PRECISION 1

View File

@ -1,2 +1 @@
#define LAMMPS_VERSION "21 Nov 2023" #define LAMMPS_VERSION "7 Feb 2024"
#define LAMMPS_UPDATE "Development"