Merge branch 'develop' into fix_wall_flow
This commit is contained in:
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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>`.
|
||||||
|
|||||||
@ -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>`
|
||||||
|
|||||||
@ -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}`
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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:
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
134
examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.1
Normal file
134
examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.1
Normal 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
|
||||||
134
examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.4
Normal file
134
examples/PACKAGES/mgpt/log.7Feb24.bcc0.g++.4
Normal 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
|
||||||
144
examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.1
Normal file
144
examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.1
Normal 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
|
||||||
144
examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.4
Normal file
144
examples/PACKAGES/mgpt/log.7Feb24.vac0-bcc.g++.4
Normal 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
|
||||||
162
examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.1
Normal file
162
examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.1
Normal 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
|
||||||
162
examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.4
Normal file
162
examples/PACKAGES/mgpt/log.7Feb24.vacmin-bcc.g++.4
Normal 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
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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];
|
||||||
|
|||||||
@ -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];
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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];
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -1,2 +1 @@
|
|||||||
#define LAMMPS_VERSION "21 Nov 2023"
|
#define LAMMPS_VERSION "7 Feb 2024"
|
||||||
#define LAMMPS_UPDATE "Development"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user