Merge branch 'develop' into dump-style-yaml
This commit is contained in:
@ -347,6 +347,10 @@ elseif(GPU_API STREQUAL "HIP")
|
||||
target_link_libraries(gpu PRIVATE hip::host)
|
||||
|
||||
if(HIP_USE_DEVICE_SORT)
|
||||
if(HIP_PLATFORM STREQUAL "amd")
|
||||
# newer version of ROCm (5.1+) require c++14 for rocprim
|
||||
set_property(TARGET gpu PROPERTY CXX_STANDARD 14)
|
||||
endif()
|
||||
# add hipCUB
|
||||
target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include)
|
||||
target_compile_definitions(gpu PRIVATE -DUSE_HIP_DEVICE_SORT)
|
||||
|
||||
15
cmake/presets/kokkos-sycl.cmake
Normal file
15
cmake/presets/kokkos-sycl.cmake
Normal file
@ -0,0 +1,15 @@
|
||||
# preset that enables KOKKOS and selects SYCL compilation with OpenMP
|
||||
# enabled as well. Also sets some performance related compiler flags.
|
||||
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
||||
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
||||
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
|
||||
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
|
||||
set(Kokkos_ENABLE_SYCL ON CACHE BOOL "" FORCE)
|
||||
set(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE)
|
||||
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
||||
|
||||
set(CMAKE_CXX_COMPILER clang++ CACHE STRING "" FORCE)
|
||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "-Xsycl-target-frontend -O3" CACHE STRING "" FORCE)
|
||||
set(CMAKE_TUNE_FLAGS "-fgpu-inline-threshold=100000 -Xsycl-target-frontend -O3 -Xsycl-target-frontend -ffp-contract=on -Wno-unknown-cuda-version" CACHE STRING "" FORCE)
|
||||
@ -638,13 +638,14 @@ This list was last updated for version 3.5.0 of the Kokkos library.
|
||||
|
||||
-D CMAKE_CXX_COMPILER=${HOME}/lammps/lib/kokkos/bin/nvcc_wrapper
|
||||
|
||||
To simplify compilation, three preset files are included in the
|
||||
To simplify compilation, four preset files are included in the
|
||||
``cmake/presets`` folder, ``kokkos-serial.cmake``,
|
||||
``kokkos-openmp.cmake``, and ``kokkos-cuda.cmake``. They will
|
||||
enable the KOKKOS package and enable some hardware choice. So to
|
||||
compile with OpenMP host parallelization, CUDA device
|
||||
parallelization (for GPUs with CC 5.0 and up) with some common
|
||||
packages enabled, you can do the following:
|
||||
``kokkos-openmp.cmake``, ``kokkos-cuda.cmake``, and
|
||||
``kokkos-sycl.cmake``. They will enable the KOKKOS package and
|
||||
enable some hardware choice. So to compile with OpenMP host
|
||||
parallelization, CUDA device parallelization (for GPUs with CC 5.0
|
||||
and up) with some common packages enabled, you can do the
|
||||
following:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
||||
@ -63,6 +63,7 @@ KOKKOS, o = OPENMP, t = OPT.
|
||||
* :doc:`event/displace <compute_event_displace>`
|
||||
* :doc:`fabric <compute_fabric>`
|
||||
* :doc:`fep <compute_fep>`
|
||||
* :doc:`fep/ta <compute_fep_ta>`
|
||||
* :doc:`force/tally <compute_tally>`
|
||||
* :doc:`fragment/atom <compute_cluster_atom>`
|
||||
* :doc:`global/atom <compute_global_atom>`
|
||||
|
||||
@ -88,12 +88,12 @@ OPT.
|
||||
* :doc:`coul/tt <pair_coul_tt>`
|
||||
* :doc:`coul/wolf (ko) <pair_coul>`
|
||||
* :doc:`coul/wolf/cs <pair_cs>`
|
||||
* :doc:`dpd (gio) <pair_dpd>`
|
||||
* :doc:`dpd (giko) <pair_dpd>`
|
||||
* :doc:`dpd/fdt <pair_dpd_fdt>`
|
||||
* :doc:`dpd/ext <pair_dpd_ext>`
|
||||
* :doc:`dpd/ext/tstat <pair_dpd_ext>`
|
||||
* :doc:`dpd/ext (k) <pair_dpd_ext>`
|
||||
* :doc:`dpd/ext/tstat (k) <pair_dpd_ext>`
|
||||
* :doc:`dpd/fdt/energy (k) <pair_dpd_fdt>`
|
||||
* :doc:`dpd/tstat (go) <pair_dpd>`
|
||||
* :doc:`dpd/tstat (gko) <pair_dpd>`
|
||||
* :doc:`dsmc <pair_dsmc>`
|
||||
* :doc:`e3b <pair_e3b>`
|
||||
* :doc:`drip <pair_drip>`
|
||||
|
||||
@ -82,7 +82,7 @@ This data can be extracted and parsed from a log file using python with:
|
||||
try:
|
||||
from yaml import CSafeLoader as Loader, CSafeDumper as Dumper
|
||||
except ImportError:
|
||||
from yaml import SafeLoader, SafeDumper
|
||||
from yaml import SafeLoader as Loader, SafeDumper as Dumper
|
||||
|
||||
docs = ""
|
||||
with open("log.lammps") as f:
|
||||
|
||||
@ -208,7 +208,8 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
|
||||
* :doc:`erotate/sphere/atom <compute_erotate_sphere_atom>` - rotational energy for each spherical particle
|
||||
* :doc:`event/displace <compute_event_displace>` - detect event on atom displacement
|
||||
* :doc:`fabric <compute_fabric>` - calculates fabric tensors from pair interactions
|
||||
* :doc:`fep <compute_fep>` -
|
||||
* :doc:`fep <compute_fep>` - compute free energies for alchemical transformation from perturbation theory
|
||||
* :doc:`fep/ta <compute_fep_ta>` - compute free energies for a test area perturbation
|
||||
* :doc:`force/tally <compute_tally>` - force between two groups of atoms via the tally callback mechanism
|
||||
* :doc:`fragment/atom <compute_cluster_atom>` - fragment ID for each atom
|
||||
* :doc:`global/atom <compute_global_atom>` -
|
||||
|
||||
99
doc/src/compute_fep_ta.rst
Normal file
99
doc/src/compute_fep_ta.rst
Normal file
@ -0,0 +1,99 @@
|
||||
.. index:: compute fep/ta
|
||||
|
||||
compute fep/ta command
|
||||
======================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
compute ID group-ID fep/ta temp plane scale_factor keyword value ...
|
||||
|
||||
* ID, group-ID are documented in the :doc:`compute <compute>` command
|
||||
* fep/ta = name of this compute command
|
||||
* temp = external temperature (as specified for constant-temperature run)
|
||||
* plane = *xy* or *xz* or *yz*
|
||||
* scale_factor = multiplicative factor for change in plane area
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *tail*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*tail* value = *no* or *yes*
|
||||
*no* = ignore tail correction to pair energies (usually small in fep)
|
||||
*yes* = include tail correction to pair energies
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute 1 all fep/ta 298 xy 1.0005
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Define a computation that calculates the change in the free energy due
|
||||
to a test-area (TA) perturbation :ref:`(Gloor) <Gloor>`. The test-area
|
||||
approach can be used to determine the interfacial tension of the system
|
||||
in a single simulation:
|
||||
|
||||
.. math::
|
||||
|
||||
\gamma = \lim_{\Delta \mathcal{A} \to 0} \left( \frac{\Delta A_{0 \to 1 }}{\Delta \mathcal{A}}\right)_{N,V,T}
|
||||
= - \frac{kT}{\Delta \mathcal{A}} \ln \left< \exp(-(U_1 - U_0)/kT) \right>_0
|
||||
|
||||
During the perturbation, both axes of *plane* are scaled by multiplying
|
||||
:math:`\sqrt{scale\_factor}`, while the other axis divided by
|
||||
*scale_factor* such that the overall volume of the system is maintained.
|
||||
|
||||
The *tail* keyword controls the calculation of the tail correction to
|
||||
"van der Waals" pair energies beyond the cutoff, if this has been
|
||||
activated via the :doc:`pair_modify <pair_modify>` command. If the
|
||||
perturbation is small, the tail contribution to the energy difference
|
||||
between the reference and perturbed systems should be negligible.
|
||||
|
||||
----------
|
||||
|
||||
Output info
|
||||
"""""""""""
|
||||
|
||||
This compute calculates a global vector of length 3 which contains the
|
||||
energy difference ( :math:`U_1-U_0` ) as c_ID[1], the Boltzmann factor
|
||||
:math:`\exp(-(U_1-U_0)/kT)`, as c_ID[2] and the change in the *plane*
|
||||
area :math:`\Delta \mathcal{A}` as c_ID[3]. :math:`U_1` is the potential
|
||||
energy of the perturbed state and :math:`U_0` is the potential energy of
|
||||
the reference state. The energies include kspace terms if these are
|
||||
used in the simulation.
|
||||
|
||||
These output results can be used by any command that uses a global
|
||||
scalar or vector from a compute as input. See the :doc:`Howto output
|
||||
<Howto_output>` page for an overview of LAMMPS output options. For
|
||||
example, the computed values can be averaged using :doc:`fix ave/time
|
||||
<fix_ave_time>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
Constraints, like fix shake, may lead to incorrect values for energy difference.
|
||||
|
||||
This compute is distributed as the FEP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute fep <compute_fep>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The option defaults are *tail* = *no*\ .
|
||||
|
||||
----------
|
||||
|
||||
.. _Gloor:
|
||||
|
||||
**(Gloor)** Gloor, J Chem Phys, 123, 134703 (2005)
|
||||
@ -1,20 +1,22 @@
|
||||
.. index:: pair_style dpd
|
||||
.. index:: pair_style dpd/gpu
|
||||
.. index:: pair_style dpd/intel
|
||||
.. index:: pair_style dpd/kk
|
||||
.. index:: pair_style dpd/omp
|
||||
.. index:: pair_style dpd/tstat
|
||||
.. index:: pair_style dpd/tstat/gpu
|
||||
.. index:: pair_style dpd/tstat/kk
|
||||
.. index:: pair_style dpd/tstat/omp
|
||||
|
||||
pair_style dpd command
|
||||
======================
|
||||
|
||||
Accelerator Variants: *dpd/gpu*, *dpd/intel*, *dpd/omp*
|
||||
Accelerator Variants: *dpd/gpu*, *dpd/intel*, *dpd/kk*, *dpd/omp*
|
||||
|
||||
pair_style dpd/tstat command
|
||||
============================
|
||||
|
||||
Accelerator Variants: *dpd/tstat/gpu*, *dpd/tstat/omp*
|
||||
Accelerator Variants: *dpd/tstat/gpu*, *dpd/tstat/kk*, *dpd/tstat/omp*
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
@ -1,12 +1,18 @@
|
||||
.. index:: pair_style dpd/ext
|
||||
.. index:: pair_style dpd/ext/kk
|
||||
.. index:: pair_style dpd/ext/tstat
|
||||
.. index:: pair_style dpd/ext/tstat/kk
|
||||
|
||||
pair_style dpd/ext command
|
||||
==========================
|
||||
|
||||
Accelerator Variants: dpd/ext/kk
|
||||
|
||||
pair_style dpd/ext/tstat command
|
||||
================================
|
||||
|
||||
Accelerator Variants: dpd/ext/tstat/kk
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
@ -137,6 +143,10 @@ except that A is not included.
|
||||
|
||||
----------
|
||||
|
||||
.. include:: accel_styles.rst
|
||||
|
||||
----------
|
||||
|
||||
|
||||
**Mixing, shift, table, tail correction, restart, rRESPA info**\ :
|
||||
|
||||
|
||||
@ -1180,6 +1180,7 @@ Gladky
|
||||
gld
|
||||
gle
|
||||
globbing
|
||||
Gloor
|
||||
Glosli
|
||||
Glotzer
|
||||
gmail
|
||||
@ -1428,6 +1429,7 @@ interal
|
||||
interatomic
|
||||
Interatomic
|
||||
interconvert
|
||||
interfacial
|
||||
interial
|
||||
interlayer
|
||||
intermolecular
|
||||
|
||||
@ -1,10 +1,16 @@
|
||||
Examples for Extended Dissipative Particle Dynamics (DPD)
|
||||
---------------------------------------------------------
|
||||
This directory contains examples for extended DPD simulations
|
||||
Examples for Basic Dissipative Particle Dynamics (DPD)
|
||||
------------------------------------------------------
|
||||
This directory contains examples for DPD simulations using
|
||||
pair styles from the DPD-BASIC package.
|
||||
|
||||
1) 'dpdext' - test case (DPD fluid) for 'dpdext' pair style (in.dpdext) and an initial
|
||||
configuration (dpdext.data)
|
||||
1) 'dpd' - simple example (DPD fluid) for 'dpd' pair style (in.dpd)
|
||||
|
||||
2) 'dpdext_tstat' - test case (coarse-grained SPC/E water) for 'dpdext/tstat' pair style
|
||||
(in.cg_spce), an initial configuration (dpdext.data) and tabulated potential
|
||||
2) 'dpd_tstat' - coarse-grained SPC/E water example for 'dpd/tstat' pair style
|
||||
(in.dpd_tstat), an initial configuration (dpdext.data) and tabulated potential
|
||||
(cg_spce_table.pot) obtained by bottom-up coarse-graining of the atomistic SPC/E water.
|
||||
|
||||
3) 'dpdext' - simple example (DPD fluid) for 'dpd/ext' pair style (in.dpdext)
|
||||
|
||||
4) 'dpdext_tstat' - coarse-grained SPC/E water example for 'dpd/ext/tstat' pair style
|
||||
(in.dpdext_tstat), an initial configuration (dpdext.data) and tabulated potential
|
||||
(cg_spce_table.pot) obtained by bottom-up coarse-graining of the atomistic SPC/E water.
|
||||
|
||||
43
examples/PACKAGES/dpd-basic/dpd/in.dpd
Normal file
43
examples/PACKAGES/dpd-basic/dpd/in.dpd
Normal file
@ -0,0 +1,43 @@
|
||||
# DPD Fluid
|
||||
|
||||
variable T equal 1.0
|
||||
variable rc equal 1.0
|
||||
variable rcD equal 1.2
|
||||
|
||||
units lj
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
### create box and configuration
|
||||
variable L equal 5.0
|
||||
lattice fcc 3.0
|
||||
region simBox block 0 ${L} 0 ${L} 0 ${L}
|
||||
create_box 2 simBox
|
||||
#create_atoms 1 region simBox
|
||||
create_atoms 1 random 100 12456 simBox
|
||||
create_atoms 2 random 100 13245 simBox
|
||||
mass 1 1.0
|
||||
mass 2 2.0
|
||||
###
|
||||
|
||||
pair_style dpd ${T} ${rc} 3854262
|
||||
|
||||
pair_coeff 1 1 25.0 4.5 1.2
|
||||
pair_coeff 1 2 25.1 4.51 1.21
|
||||
pair_coeff 2 2 25.2 4.52 1.22
|
||||
|
||||
timestep 0.01
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 5000
|
||||
|
||||
154
examples/PACKAGES/dpd-basic/dpd/log.5Apr22.dpd.g++.1
Normal file
154
examples/PACKAGES/dpd-basic/dpd/log.5Apr22.dpd.g++.1
Normal file
@ -0,0 +1,154 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# DPD Fluid
|
||||
|
||||
variable T equal 1.0
|
||||
variable rc equal 1.0
|
||||
variable rcD equal 1.2
|
||||
|
||||
units lj
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
### create box and configuration
|
||||
variable L equal 5.0
|
||||
lattice fcc 3.0
|
||||
Lattice spacing in x,y,z = 1.1006424 1.1006424 1.1006424
|
||||
region simBox block 0 ${L} 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 5 0 ${L}
|
||||
region simBox block 0 5 0 5 0 5
|
||||
create_box 2 simBox
|
||||
Created orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
#create_atoms 1 region simBox
|
||||
create_atoms 1 random 100 12456 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 random 100 13245 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
mass 1 1.0
|
||||
mass 2 2.0
|
||||
###
|
||||
|
||||
pair_style dpd ${T} ${rc} 3854262
|
||||
pair_style dpd 1 ${rc} 3854262
|
||||
pair_style dpd 1 1 3854262
|
||||
|
||||
pair_coeff 1 1 25.0 4.5 1.2
|
||||
pair_coeff 1 2 25.1 4.51 1.21
|
||||
pair_coeff 2 2 25.2 4.52 1.22
|
||||
|
||||
timestep 0.01
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 1 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 5000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 1.52
|
||||
ghost atom cutoff = 1.52
|
||||
binsize = 0.76, bins = 8 8 8
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair dpd, 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.083 | 3.083 | 3.083 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 1 9.5226009
|
||||
100 1 1.9913643 9.2036029
|
||||
200 2 1.6321732 9.2787957
|
||||
300 3 1.3533438 8.3081433
|
||||
400 4 1.2125884 8.0809065
|
||||
500 5 1.0682216 8.0877925
|
||||
600 6 0.99100473 8.1100319
|
||||
700 7 0.99731243 7.8225195
|
||||
800 8 1.0597693 7.8368218
|
||||
900 9 0.99038588 7.9450569
|
||||
1000 10 1.077129 7.5857015
|
||||
1100 11 0.99070336 7.5138128
|
||||
1200 12 1.013894 7.2794857
|
||||
1300 13 1.0433203 7.7439871
|
||||
1400 14 1.0285528 7.5662235
|
||||
1500 15 0.99180601 7.8376313
|
||||
1600 16 0.98059071 8.0243735
|
||||
1700 17 1.0070947 8.3186893
|
||||
1800 18 0.99507569 7.0786393
|
||||
1900 19 1.0040168 7.8120389
|
||||
2000 20 0.98636164 7.472185
|
||||
2100 21 0.95811165 7.7085985
|
||||
2200 22 0.93568327 6.9424246
|
||||
2300 23 0.92804144 8.1239435
|
||||
2400 24 0.94940276 7.6108611
|
||||
2500 25 1.0535153 8.0772721
|
||||
2600 26 1.0902144 7.5609768
|
||||
2700 27 1.0737336 7.8706755
|
||||
2800 28 0.93074581 7.3699993
|
||||
2900 29 1.0440705 7.6454988
|
||||
3000 30 0.93868164 7.841168
|
||||
3100 31 1.0172025 7.6856163
|
||||
3200 32 1.0405368 7.5325735
|
||||
3300 33 0.96721201 7.8262809
|
||||
3400 34 0.90430758 7.1693921
|
||||
3500 35 0.89938433 7.865845
|
||||
3600 36 0.9907178 7.3462971
|
||||
3700 37 1.0311879 7.8876401
|
||||
3800 38 0.98339132 7.3413929
|
||||
3900 39 1.2111264 8.0968408
|
||||
4000 40 1.062489 7.7315959
|
||||
4100 41 0.94737492 7.3386028
|
||||
4200 42 1.0453816 8.2017304
|
||||
4300 43 0.97024897 7.7379624
|
||||
4400 44 0.9553861 7.8047635
|
||||
4500 45 1.043252 7.7486215
|
||||
4600 46 0.98611474 8.1237053
|
||||
4700 47 0.98624285 8.5801642
|
||||
4800 48 0.97176754 7.1540299
|
||||
4900 49 1.0165401 7.3853841
|
||||
5000 50 0.88359115 7.5541592
|
||||
Loop time of 0.359916 on 1 procs for 5000 steps with 200 atoms
|
||||
|
||||
Performance: 12002788.048 tau/day, 13892.116 timesteps/s
|
||||
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.24932 | 0.24932 | 0.24932 | 0.0 | 69.27
|
||||
Neigh | 0.068726 | 0.068726 | 0.068726 | 0.0 | 19.10
|
||||
Comm | 0.028691 | 0.028691 | 0.028691 | 0.0 | 7.97
|
||||
Output | 0.00066318 | 0.00066318 | 0.00066318 | 0.0 | 0.18
|
||||
Modify | 0.0078062 | 0.0078062 | 0.0078062 | 0.0 | 2.17
|
||||
Other | | 0.004713 | | | 1.31
|
||||
|
||||
Nlocal: 200 ave 200 max 200 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 546 ave 546 max 546 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 1649 ave 1649 max 1649 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1649
|
||||
Ave neighs/atom = 8.245
|
||||
Neighbor list builds = 500
|
||||
Dangerous builds = 500
|
||||
|
||||
Total wall time: 0:00:00
|
||||
154
examples/PACKAGES/dpd-basic/dpd/log.5Apr22.dpd.g++.4
Normal file
154
examples/PACKAGES/dpd-basic/dpd/log.5Apr22.dpd.g++.4
Normal file
@ -0,0 +1,154 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# DPD Fluid
|
||||
|
||||
variable T equal 1.0
|
||||
variable rc equal 1.0
|
||||
variable rcD equal 1.2
|
||||
|
||||
units lj
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
### create box and configuration
|
||||
variable L equal 5.0
|
||||
lattice fcc 3.0
|
||||
Lattice spacing in x,y,z = 1.1006424 1.1006424 1.1006424
|
||||
region simBox block 0 ${L} 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 5 0 ${L}
|
||||
region simBox block 0 5 0 5 0 5
|
||||
create_box 2 simBox
|
||||
Created orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
#create_atoms 1 region simBox
|
||||
create_atoms 1 random 100 12456 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 random 100 13245 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
mass 1 1.0
|
||||
mass 2 2.0
|
||||
###
|
||||
|
||||
pair_style dpd ${T} ${rc} 3854262
|
||||
pair_style dpd 1 ${rc} 3854262
|
||||
pair_style dpd 1 1 3854262
|
||||
|
||||
pair_coeff 1 1 25.0 4.5 1.2
|
||||
pair_coeff 1 2 25.1 4.51 1.21
|
||||
pair_coeff 2 2 25.2 4.52 1.22
|
||||
|
||||
timestep 0.01
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 1 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 5000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 1.52
|
||||
ghost atom cutoff = 1.52
|
||||
binsize = 0.76, bins = 8 8 8
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair dpd, 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.064 | 3.064 | 3.064 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 1 8.603339
|
||||
100 1 1.8691059 8.9058297
|
||||
200 2 1.4500635 8.7420141
|
||||
300 3 1.3089453 8.3985981
|
||||
400 4 1.1647803 8.2948808
|
||||
500 5 1.1399445 7.7421817
|
||||
600 6 1.0297918 7.2040397
|
||||
700 7 1.046713 7.6115758
|
||||
800 8 0.93523712 7.6885563
|
||||
900 9 0.94701493 7.9662712
|
||||
1000 10 0.99302416 7.7606189
|
||||
1100 11 0.98975674 7.5207427
|
||||
1200 12 0.98661662 7.3565222
|
||||
1300 13 1.0289377 7.6110453
|
||||
1400 14 0.9982501 7.8065701
|
||||
1500 15 1.0043888 7.3957185
|
||||
1600 16 1.0175816 7.7885955
|
||||
1700 17 1.0252117 7.5076258
|
||||
1800 18 1.0275139 8.1052823
|
||||
1900 19 1.0021054 7.0385989
|
||||
2000 20 1.0489009 7.7138149
|
||||
2100 21 0.91250488 7.3540839
|
||||
2200 22 0.92470996 7.9600233
|
||||
2300 23 0.96932725 7.3106045
|
||||
2400 24 0.93443088 7.4594635
|
||||
2500 25 0.95596038 7.2544715
|
||||
2600 26 1.0368594 7.6229263
|
||||
2700 27 0.94639332 7.4869636
|
||||
2800 28 0.99917354 7.9806636
|
||||
2900 29 0.95048071 7.0086404
|
||||
3000 30 0.95226181 7.7807205
|
||||
3100 31 0.95864429 7.8059442
|
||||
3200 32 0.85678761 7.3416027
|
||||
3300 33 0.95951096 7.3467158
|
||||
3400 34 0.97665772 8.2900991
|
||||
3500 35 0.92885927 7.5385993
|
||||
3600 36 1.0455015 8.0627999
|
||||
3700 37 0.91911809 8.0371736
|
||||
3800 38 0.92022241 7.5803999
|
||||
3900 39 1.0465522 7.6920189
|
||||
4000 40 0.98568475 7.4529825
|
||||
4100 41 1.0389372 7.2273346
|
||||
4200 42 1.0257545 7.6081878
|
||||
4300 43 1.0937573 8.2158237
|
||||
4400 44 1.0908817 7.5021567
|
||||
4500 45 1.0482874 7.5924368
|
||||
4600 46 1.1468439 8.0285157
|
||||
4700 47 1.119683 8.3365123
|
||||
4800 48 1.0963877 7.51772
|
||||
4900 49 1.0766762 7.3137035
|
||||
5000 50 1.0359203 7.7354572
|
||||
Loop time of 0.148597 on 4 procs for 5000 steps with 200 atoms
|
||||
|
||||
Performance: 29071936.422 tau/day, 33648.075 timesteps/s
|
||||
98.8% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.059602 | 0.063397 | 0.068622 | 1.3 | 42.66
|
||||
Neigh | 0.017747 | 0.018193 | 0.018698 | 0.3 | 12.24
|
||||
Comm | 0.055145 | 0.061014 | 0.065369 | 1.5 | 41.06
|
||||
Output | 0.00042708 | 0.00050725 | 0.00071024 | 0.0 | 0.34
|
||||
Modify | 0.0023494 | 0.002532 | 0.0026434 | 0.2 | 1.70
|
||||
Other | | 0.002953 | | | 1.99
|
||||
|
||||
Nlocal: 50 ave 52 max 48 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
Nghost: 292.75 ave 299 max 287 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
Neighs: 413.5 ave 441 max 399 min
|
||||
Histogram: 2 0 0 1 0 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 1654
|
||||
Ave neighs/atom = 8.27
|
||||
Neighbor list builds = 500
|
||||
Dangerous builds = 500
|
||||
|
||||
Total wall time: 0:00:00
|
||||
@ -1,4 +1,4 @@
|
||||
DPD Fluid
|
||||
Coarse-Grained SPC/E Water
|
||||
|
||||
2180 atoms
|
||||
|
||||
354
examples/PACKAGES/dpd-basic/dpd_tstat/cg_spce_table.pot
Normal file
354
examples/PACKAGES/dpd-basic/dpd_tstat/cg_spce_table.pot
Normal file
@ -0,0 +1,354 @@
|
||||
VOTCA
|
||||
N 351 R 2.0 9.0
|
||||
|
||||
1 2.000000E+00 2.190202E+01 7.229762E+01
|
||||
2 2.020000E+00 2.048957E+01 6.887333E+01
|
||||
3 2.040000E+00 1.915004E+01 6.500604E+01
|
||||
4 2.060000E+00 1.789228E+01 6.069573E+01
|
||||
5 2.080000E+00 1.672516E+01 5.594242E+01
|
||||
6 2.100000E+00 1.565754E+01 5.074609E+01
|
||||
7 2.120000E+00 1.467088E+01 4.787307E+01
|
||||
8 2.140000E+00 1.374450E+01 4.471740E+01
|
||||
9 2.160000E+00 1.288407E+01 4.127908E+01
|
||||
10 2.180000E+00 1.209522E+01 3.755811E+01
|
||||
11 2.200000E+00 1.138363E+01 3.355449E+01
|
||||
12 2.220000E+00 1.072913E+01 3.188695E+01
|
||||
13 2.240000E+00 1.010845E+01 3.017359E+01
|
||||
14 2.260000E+00 9.522496E+00 2.841440E+01
|
||||
15 2.280000E+00 8.972182E+00 2.660938E+01
|
||||
16 2.300000E+00 8.458426E+00 2.475854E+01
|
||||
17 2.320000E+00 8.014166E+00 2.006698E+01
|
||||
18 2.340000E+00 7.639767E+00 1.777244E+01
|
||||
19 2.360000E+00 7.287288E+00 1.787493E+01
|
||||
20 2.380000E+00 6.908790E+00 2.037445E+01
|
||||
21 2.400000E+00 6.456330E+00 2.527099E+01
|
||||
22 2.420000E+00 5.858025E+00 3.384695E+01
|
||||
23 2.440000E+00 5.130955E+00 3.814748E+01
|
||||
24 2.460000E+00 4.360629E+00 3.817257E+01
|
||||
25 2.480000E+00 3.632555E+00 3.392224E+01
|
||||
26 2.500000E+00 3.032242E+00 2.539647E+01
|
||||
27 2.520000E+00 2.547993E+00 2.297813E+01
|
||||
28 2.540000E+00 2.115131E+00 2.025763E+01
|
||||
29 2.560000E+00 1.739702E+00 1.723497E+01
|
||||
30 2.580000E+00 1.427747E+00 1.391013E+01
|
||||
31 2.600000E+00 1.185311E+00 1.028314E+01
|
||||
32 2.620000E+00 9.860176E-01 9.578245E+00
|
||||
33 2.640000E+00 8.048986E-01 8.465708E+00
|
||||
34 2.660000E+00 6.501069E-01 6.945526E+00
|
||||
35 2.680000E+00 5.297952E-01 5.017699E+00
|
||||
36 2.700000E+00 4.521166E-01 2.682227E+00
|
||||
37 2.720000E+00 3.986447E-01 2.615311E+00
|
||||
38 2.740000E+00 3.494900E-01 2.250522E+00
|
||||
39 2.760000E+00 3.106097E-01 1.587859E+00
|
||||
40 2.780000E+00 2.879614E-01 6.273237E-01
|
||||
41 2.800000E+00 2.875026E-01 -6.310851E-01
|
||||
42 2.820000E+00 3.002733E-01 -6.543549E-01
|
||||
43 2.840000E+00 3.140112E-01 -7.277911E-01
|
||||
44 2.860000E+00 3.297194E-01 -8.513935E-01
|
||||
45 2.880000E+00 3.484014E-01 -1.025162E+00
|
||||
46 2.900000E+00 3.710604E-01 -1.249097E+00
|
||||
47 2.920000E+00 3.974884E-01 -1.380483E+00
|
||||
48 2.940000E+00 4.257507E-01 -1.432530E+00
|
||||
49 2.960000E+00 4.542607E-01 -1.405240E+00
|
||||
50 2.980000E+00 4.814314E-01 -1.298611E+00
|
||||
51 3.000000E+00 5.056762E-01 -1.112645E+00
|
||||
52 3.020000E+00 5.266502E-01 -9.832894E-01
|
||||
53 3.040000E+00 5.449492E-01 -8.451544E-01
|
||||
54 3.060000E+00 5.603978E-01 -6.982396E-01
|
||||
55 3.080000E+00 5.728203E-01 -5.425450E-01
|
||||
56 3.100000E+00 5.820411E-01 -3.780706E-01
|
||||
57 3.120000E+00 5.882509E-01 -2.409307E-01
|
||||
58 3.140000E+00 5.915991E-01 -9.190908E-02
|
||||
59 3.160000E+00 5.918481E-01 6.899430E-02
|
||||
60 3.180000E+00 5.887601E-01 2.417794E-01
|
||||
61 3.200000E+00 5.820977E-01 4.264463E-01
|
||||
62 3.220000E+00 5.733491E-01 4.528343E-01
|
||||
63 3.240000E+00 5.638075E-01 5.057356E-01
|
||||
64 3.260000E+00 5.529429E-01 5.851503E-01
|
||||
65 3.280000E+00 5.402248E-01 6.910784E-01
|
||||
66 3.300000E+00 5.251230E-01 8.235199E-01
|
||||
67 3.320000E+00 5.086524E-01 8.236482E-01
|
||||
68 3.340000E+00 4.921725E-01 8.244583E-01
|
||||
69 3.360000E+00 4.756696E-01 8.259503E-01
|
||||
70 3.380000E+00 4.591299E-01 8.281240E-01
|
||||
71 3.400000E+00 4.425400E-01 8.309796E-01
|
||||
72 3.420000E+00 4.259181E-01 8.311861E-01
|
||||
73 3.440000E+00 4.092937E-01 8.312292E-01
|
||||
74 3.460000E+00 3.926700E-01 8.311089E-01
|
||||
75 3.480000E+00 3.760504E-01 8.308252E-01
|
||||
76 3.500000E+00 3.594381E-01 8.303781E-01
|
||||
77 3.520000E+00 3.428394E-01 8.295412E-01
|
||||
78 3.540000E+00 3.262547E-01 8.289646E-01
|
||||
79 3.560000E+00 3.096790E-01 8.286483E-01
|
||||
80 3.580000E+00 2.931071E-01 8.285923E-01
|
||||
81 3.600000E+00 2.765336E-01 8.287966E-01
|
||||
82 3.620000E+00 2.599901E-01 8.254306E-01
|
||||
83 3.640000E+00 2.435212E-01 8.213359E-01
|
||||
84 3.660000E+00 2.271415E-01 8.165124E-01
|
||||
85 3.680000E+00 2.108656E-01 8.109603E-01
|
||||
86 3.700000E+00 1.947080E-01 8.046794E-01
|
||||
87 3.720000E+00 1.790243E-01 7.653050E-01
|
||||
88 3.740000E+00 1.640312E-01 7.356166E-01
|
||||
89 3.760000E+00 1.495351E-01 7.156143E-01
|
||||
90 3.780000E+00 1.353421E-01 7.052980E-01
|
||||
91 3.800000E+00 1.212586E-01 7.046676E-01
|
||||
92 3.820000E+00 1.072429E-01 6.965706E-01
|
||||
93 3.840000E+00 9.340878E-02 6.865180E-01
|
||||
94 3.860000E+00 7.979524E-02 6.745098E-01
|
||||
95 3.880000E+00 6.644142E-02 6.605462E-01
|
||||
96 3.900000E+00 5.338643E-02 6.446270E-01
|
||||
97 3.920000E+00 4.067486E-02 6.268536E-01
|
||||
98 3.940000E+00 2.829935E-02 6.110218E-01
|
||||
99 3.960000E+00 1.622105E-02 5.971317E-01
|
||||
100 3.980000E+00 4.401131E-03 5.851833E-01
|
||||
101 4.000000E+00 -7.199230E-03 5.751764E-01
|
||||
102 4.020000E+00 -1.856170E-02 5.611971E-01
|
||||
103 4.040000E+00 -2.965216E-02 5.479743E-01
|
||||
104 4.060000E+00 -4.048572E-02 5.355079E-01
|
||||
105 4.080000E+00 -5.107752E-02 5.237981E-01
|
||||
106 4.100000E+00 -6.144268E-02 5.128447E-01
|
||||
107 4.120000E+00 -7.151117E-02 4.939504E-01
|
||||
108 4.140000E+00 -8.119856E-02 4.747353E-01
|
||||
109 4.160000E+00 -9.049845E-02 4.551994E-01
|
||||
110 4.180000E+00 -9.940440E-02 4.353427E-01
|
||||
111 4.200000E+00 -1.079100E-01 4.151651E-01
|
||||
112 4.220000E+00 -1.159565E-01 3.900062E-01
|
||||
113 4.240000E+00 -1.235312E-01 3.679865E-01
|
||||
114 4.260000E+00 -1.306969E-01 3.491061E-01
|
||||
115 4.280000E+00 -1.375164E-01 3.333651E-01
|
||||
116 4.300000E+00 -1.440524E-01 3.207633E-01
|
||||
117 4.320000E+00 -1.503014E-01 3.040292E-01
|
||||
118 4.340000E+00 -1.562092E-01 2.866389E-01
|
||||
119 4.360000E+00 -1.617626E-01 2.685925E-01
|
||||
120 4.380000E+00 -1.669485E-01 2.498899E-01
|
||||
121 4.400000E+00 -1.717538E-01 2.305311E-01
|
||||
122 4.420000E+00 -1.760941E-01 2.036400E-01
|
||||
123 4.440000E+00 -1.799054E-01 1.776469E-01
|
||||
124 4.460000E+00 -1.832059E-01 1.525518E-01
|
||||
125 4.480000E+00 -1.860135E-01 1.283546E-01
|
||||
126 4.500000E+00 -1.883461E-01 1.050554E-01
|
||||
127 4.520000E+00 -1.902569E-01 8.558005E-02
|
||||
128 4.540000E+00 -1.917515E-01 6.344105E-02
|
||||
129 4.560000E+00 -1.927768E-01 3.863842E-02
|
||||
130 4.580000E+00 -1.932793E-01 1.117216E-02
|
||||
131 4.600000E+00 -1.932059E-01 -1.895774E-02
|
||||
132 4.620000E+00 -1.926829E-01 -3.331832E-02
|
||||
133 4.640000E+00 -1.918741E-01 -4.753697E-02
|
||||
134 4.660000E+00 -1.907824E-01 -6.161370E-02
|
||||
135 4.680000E+00 -1.894105E-01 -7.554851E-02
|
||||
136 4.700000E+00 -1.877614E-01 -8.934140E-02
|
||||
137 4.720000E+00 -1.859159E-01 -9.580751E-02
|
||||
138 4.740000E+00 -1.839049E-01 -1.058976E-01
|
||||
139 4.760000E+00 -1.816559E-01 -1.196116E-01
|
||||
140 4.780000E+00 -1.790963E-01 -1.369495E-01
|
||||
141 4.800000E+00 -1.761537E-01 -1.579114E-01
|
||||
142 4.820000E+00 -1.728280E-01 -1.744216E-01
|
||||
143 4.840000E+00 -1.691864E-01 -1.895036E-01
|
||||
144 4.860000E+00 -1.652574E-01 -2.031575E-01
|
||||
145 4.880000E+00 -1.610696E-01 -2.153832E-01
|
||||
146 4.900000E+00 -1.566516E-01 -2.261808E-01
|
||||
147 4.920000E+00 -1.521084E-01 -2.290714E-01
|
||||
148 4.940000E+00 -1.474515E-01 -2.375453E-01
|
||||
149 4.960000E+00 -1.425693E-01 -2.516026E-01
|
||||
150 4.980000E+00 -1.373502E-01 -2.712432E-01
|
||||
151 5.000000E+00 -1.316824E-01 -2.964672E-01
|
||||
152 5.020000E+00 -1.257009E-01 -3.016666E-01
|
||||
153 5.040000E+00 -1.196162E-01 -3.067953E-01
|
||||
154 5.060000E+00 -1.134296E-01 -3.118535E-01
|
||||
155 5.080000E+00 -1.071425E-01 -3.168409E-01
|
||||
156 5.100000E+00 -1.007564E-01 -3.217577E-01
|
||||
157 5.120000E+00 -9.430843E-02 -3.230025E-01
|
||||
158 5.140000E+00 -8.783782E-02 -3.240216E-01
|
||||
159 5.160000E+00 -8.134907E-02 -3.248150E-01
|
||||
160 5.180000E+00 -7.484672E-02 -3.253827E-01
|
||||
161 5.200000E+00 -6.833527E-02 -3.257248E-01
|
||||
162 5.220000E+00 -6.171989E-02 -3.350608E-01
|
||||
163 5.240000E+00 -5.496291E-02 -3.398853E-01
|
||||
164 5.260000E+00 -4.815456E-02 -3.401983E-01
|
||||
165 5.280000E+00 -4.138506E-02 -3.359997E-01
|
||||
166 5.300000E+00 -3.474465E-02 -3.272895E-01
|
||||
167 5.320000E+00 -2.866480E-02 -2.819209E-01
|
||||
168 5.340000E+00 -2.341879E-02 -2.439062E-01
|
||||
169 5.360000E+00 -1.885953E-02 -2.132454E-01
|
||||
170 5.380000E+00 -1.483994E-02 -1.899386E-01
|
||||
171 5.400000E+00 -1.121296E-02 -1.739857E-01
|
||||
172 5.420000E+00 -7.974056E-03 -1.497398E-01
|
||||
173 5.440000E+00 -5.229953E-03 -1.245058E-01
|
||||
174 5.460000E+00 -3.000413E-03 -9.828350E-02
|
||||
175 5.480000E+00 -1.305201E-03 -7.107305E-02
|
||||
176 5.500000E+00 -1.640790E-04 -4.287441E-02
|
||||
177 5.520000E+00 6.371635E-04 -3.612657E-02
|
||||
178 5.540000E+00 1.236053E-03 -2.263906E-02
|
||||
179 5.560000E+00 1.497795E-03 -2.411882E-03
|
||||
180 5.580000E+00 1.287597E-03 2.455496E-02
|
||||
181 5.600000E+00 4.706651E-04 5.826147E-02
|
||||
182 5.620000E+00 -7.026386E-04 5.910929E-02
|
||||
183 5.640000E+00 -1.895322E-03 6.019943E-02
|
||||
184 5.660000E+00 -3.112231E-03 6.153190E-02
|
||||
185 5.680000E+00 -4.358213E-03 6.310668E-02
|
||||
186 5.700000E+00 -5.638114E-03 6.492378E-02
|
||||
187 5.720000E+00 -6.949688E-03 6.610584E-02
|
||||
188 5.740000E+00 -8.277238E-03 6.652145E-02
|
||||
189 5.760000E+00 -9.605436E-03 6.617062E-02
|
||||
190 5.780000E+00 -1.091895E-02 6.505335E-02
|
||||
191 5.800000E+00 -1.220246E-02 6.316963E-02
|
||||
192 5.820000E+00 -1.341489E-02 5.820182E-02
|
||||
193 5.840000E+00 -1.453566E-02 5.400257E-02
|
||||
194 5.860000E+00 -1.558012E-02 5.057189E-02
|
||||
195 5.880000E+00 -1.656366E-02 4.790978E-02
|
||||
196 5.900000E+00 -1.750164E-02 4.601622E-02
|
||||
197 5.920000E+00 -1.840088E-02 4.358369E-02
|
||||
198 5.940000E+00 -1.923199E-02 3.920163E-02
|
||||
199 5.960000E+00 -1.995595E-02 3.287003E-02
|
||||
200 5.980000E+00 -2.053379E-02 2.458889E-02
|
||||
201 6.000000E+00 -2.092651E-02 1.435822E-02
|
||||
202 6.020000E+00 -2.120502E-02 1.352840E-02
|
||||
203 6.040000E+00 -2.146907E-02 1.291186E-02
|
||||
204 6.060000E+00 -2.172292E-02 1.250861E-02
|
||||
205 6.080000E+00 -2.197084E-02 1.231865E-02
|
||||
206 6.100000E+00 -2.221709E-02 1.234198E-02
|
||||
207 6.120000E+00 -2.246474E-02 1.237271E-02
|
||||
208 6.140000E+00 -2.270998E-02 1.210114E-02
|
||||
209 6.160000E+00 -2.294677E-02 1.152726E-02
|
||||
210 6.180000E+00 -2.316905E-02 1.065107E-02
|
||||
211 6.200000E+00 -2.337079E-02 9.472569E-03
|
||||
212 6.220000E+00 -2.332237E-02 -1.276224E-02
|
||||
213 6.240000E+00 -2.292243E-02 -2.567822E-02
|
||||
214 6.260000E+00 -2.235736E-02 -2.927535E-02
|
||||
215 6.280000E+00 -2.181354E-02 -2.355364E-02
|
||||
216 6.300000E+00 -2.147734E-02 -8.513096E-03
|
||||
217 6.320000E+00 -2.141633E-02 1.466366E-03
|
||||
218 6.340000E+00 -2.149820E-02 5.775798E-03
|
||||
219 6.360000E+00 -2.160956E-02 4.415202E-03
|
||||
220 6.380000E+00 -2.163701E-02 -2.615423E-03
|
||||
221 6.400000E+00 -2.146714E-02 -1.531608E-02
|
||||
222 6.420000E+00 -2.107402E-02 -2.337955E-02
|
||||
223 6.440000E+00 -2.055660E-02 -2.774728E-02
|
||||
224 6.460000E+00 -1.998877E-02 -2.841924E-02
|
||||
225 6.480000E+00 -1.944446E-02 -2.539546E-02
|
||||
226 6.500000E+00 -1.899759E-02 -1.867591E-02
|
||||
227 6.520000E+00 -1.869042E-02 -1.259095E-02
|
||||
228 6.540000E+00 -1.847196E-02 -9.804901E-03
|
||||
229 6.560000E+00 -1.827623E-02 -1.031775E-02
|
||||
230 6.580000E+00 -1.803726E-02 -1.412951E-02
|
||||
231 6.600000E+00 -1.768906E-02 -2.124018E-02
|
||||
232 6.620000E+00 -1.710949E-02 -3.551655E-02
|
||||
233 6.640000E+00 -1.631641E-02 -4.259122E-02
|
||||
234 6.660000E+00 -1.545385E-02 -4.246419E-02
|
||||
235 6.680000E+00 -1.466585E-02 -3.513545E-02
|
||||
236 6.700000E+00 -1.409644E-02 -2.060502E-02
|
||||
237 6.720000E+00 -1.374966E-02 -1.461056E-02
|
||||
238 6.740000E+00 -1.349054E-02 -1.183851E-02
|
||||
239 6.760000E+00 -1.325464E-02 -1.228886E-02
|
||||
240 6.780000E+00 -1.297750E-02 -1.596163E-02
|
||||
241 6.800000E+00 -1.259469E-02 -2.285680E-02
|
||||
242 6.820000E+00 -1.213049E-02 -2.349903E-02
|
||||
243 6.840000E+00 -1.165728E-02 -2.375897E-02
|
||||
244 6.860000E+00 -1.118268E-02 -2.363664E-02
|
||||
245 6.880000E+00 -1.071436E-02 -2.313203E-02
|
||||
246 6.900000E+00 -1.025995E-02 -2.224514E-02
|
||||
247 6.920000E+00 -9.817276E-03 -2.203990E-02
|
||||
248 6.940000E+00 -9.377653E-03 -2.193988E-02
|
||||
249 6.960000E+00 -8.938979E-03 -2.194508E-02
|
||||
250 6.980000E+00 -8.499148E-03 -2.205550E-02
|
||||
251 7.000000E+00 -8.056057E-03 -2.227113E-02
|
||||
252 7.020000E+00 -7.597830E-03 -2.345789E-02
|
||||
253 7.040000E+00 -7.121492E-03 -2.408210E-02
|
||||
254 7.060000E+00 -6.638296E-03 -2.414376E-02
|
||||
255 7.080000E+00 -6.159492E-03 -2.364288E-02
|
||||
256 7.100000E+00 -5.696331E-03 -2.257946E-02
|
||||
257 7.120000E+00 -5.301441E-03 -1.729553E-02
|
||||
258 7.140000E+00 -4.989070E-03 -1.432759E-02
|
||||
259 7.160000E+00 -4.712898E-03 -1.367562E-02
|
||||
260 7.180000E+00 -4.426605E-03 -1.533964E-02
|
||||
261 7.200000E+00 -4.083872E-03 -1.931964E-02
|
||||
262 7.220000E+00 -3.631995E-03 -2.538390E-02
|
||||
263 7.240000E+00 -3.087883E-03 -2.854317E-02
|
||||
264 7.260000E+00 -2.509635E-03 -2.879748E-02
|
||||
265 7.280000E+00 -1.955351E-03 -2.614680E-02
|
||||
266 7.300000E+00 -1.483130E-03 -2.059115E-02
|
||||
267 7.320000E+00 -1.113389E-03 -1.639767E-02
|
||||
268 7.340000E+00 -8.266321E-04 -1.229279E-02
|
||||
269 7.360000E+00 -6.210869E-04 -8.276492E-03
|
||||
270 7.380000E+00 -4.949818E-04 -4.348786E-03
|
||||
271 7.400000E+00 -4.465449E-04 -5.096684E-04
|
||||
272 7.420000E+00 -5.304321E-04 8.162452E-03
|
||||
273 7.440000E+00 -7.436056E-04 1.241897E-02
|
||||
274 7.460000E+00 -9.977534E-04 1.225988E-02
|
||||
275 7.480000E+00 -1.204563E-03 7.685191E-03
|
||||
276 7.500000E+00 -1.275724E-03 -1.305104E-03
|
||||
277 7.520000E+00 -1.199415E-03 -5.916706E-03
|
||||
278 7.540000E+00 -1.055417E-03 -8.074089E-03
|
||||
279 7.560000E+00 -8.928131E-04 -7.777253E-03
|
||||
280 7.580000E+00 -7.606883E-04 -5.026198E-03
|
||||
281 7.600000E+00 -7.081267E-04 1.790768E-04
|
||||
282 7.620000E+00 -7.213835E-04 1.157786E-03
|
||||
283 7.640000E+00 -7.548855E-04 2.203601E-03
|
||||
284 7.660000E+00 -8.099749E-04 3.316523E-03
|
||||
285 7.680000E+00 -8.879938E-04 4.496550E-03
|
||||
286 7.700000E+00 -9.902843E-04 5.743685E-03
|
||||
287 7.720000E+00 -1.122403E-03 7.421734E-03
|
||||
288 7.740000E+00 -1.285295E-03 8.820936E-03
|
||||
289 7.760000E+00 -1.473382E-03 9.941291E-03
|
||||
290 7.780000E+00 -1.681087E-03 1.078280E-02
|
||||
291 7.800000E+00 -1.902835E-03 1.134546E-02
|
||||
292 7.820000E+00 -2.225281E-03 2.008573E-02
|
||||
293 7.840000E+00 -2.673724E-03 2.394500E-02
|
||||
294 7.860000E+00 -3.150542E-03 2.292328E-02
|
||||
295 7.880000E+00 -3.558115E-03 1.702056E-02
|
||||
296 7.900000E+00 -3.798824E-03 6.236836E-03
|
||||
297 7.920000E+00 -3.844315E-03 -1.142168E-03
|
||||
298 7.940000E+00 -3.774961E-03 -5.247538E-03
|
||||
299 7.960000E+00 -3.656237E-03 -6.079274E-03
|
||||
300 7.980000E+00 -3.553615E-03 -3.637376E-03
|
||||
301 8.000000E+00 -3.532566E-03 2.078155E-03
|
||||
302 8.020000E+00 -3.611956E-03 5.494873E-03
|
||||
303 8.040000E+00 -3.737724E-03 6.716053E-03
|
||||
304 8.060000E+00 -3.865961E-03 5.741694E-03
|
||||
305 8.080000E+00 -3.952755E-03 2.571796E-03
|
||||
306 8.100000E+00 -3.954196E-03 -2.793640E-03
|
||||
307 8.120000E+00 -3.873685E-03 -5.086591E-03
|
||||
308 8.140000E+00 -3.757567E-03 -6.354313E-03
|
||||
309 8.160000E+00 -3.626347E-03 -6.596805E-03
|
||||
310 8.180000E+00 -3.500530E-03 -5.814068E-03
|
||||
311 8.200000E+00 -3.400620E-03 -4.006101E-03
|
||||
312 8.220000E+00 -3.334411E-03 -2.730570E-03
|
||||
313 8.240000E+00 -3.286762E-03 -2.150229E-03
|
||||
314 8.260000E+00 -3.243768E-03 -2.265076E-03
|
||||
315 8.280000E+00 -3.191524E-03 -3.075114E-03
|
||||
316 8.300000E+00 -3.116129E-03 -4.580340E-03
|
||||
317 8.320000E+00 -2.964210E-03 -1.014102E-02
|
||||
318 8.340000E+00 -2.729309E-03 -1.287854E-02
|
||||
319 8.360000E+00 -2.467889E-03 -1.279292E-02
|
||||
320 8.380000E+00 -2.236413E-03 -9.884157E-03
|
||||
321 8.400000E+00 -2.091344E-03 -4.152240E-03
|
||||
322 8.420000E+00 -2.034875E-03 -1.692189E-03
|
||||
323 8.440000E+00 -2.015752E-03 -4.177491E-04
|
||||
324 8.460000E+00 -2.010261E-03 -3.289192E-04
|
||||
325 8.480000E+00 -1.994691E-03 -1.425700E-03
|
||||
326 8.500000E+00 -1.945329E-03 -3.708091E-03
|
||||
327 8.520000E+00 -1.867098E-03 -4.115259E-03
|
||||
328 8.540000E+00 -1.780711E-03 -4.523663E-03
|
||||
329 8.560000E+00 -1.686143E-03 -4.933304E-03
|
||||
330 8.580000E+00 -1.583370E-03 -5.344181E-03
|
||||
331 8.600000E+00 -1.472368E-03 -5.756296E-03
|
||||
332 8.620000E+00 -1.328792E-03 -8.394009E-03
|
||||
333 8.640000E+00 -1.144899E-03 -9.787974E-03
|
||||
334 8.660000E+00 -9.455644E-04 -9.938189E-03
|
||||
335 8.680000E+00 -7.556630E-04 -8.844656E-03
|
||||
336 8.700000E+00 -6.000698E-04 -6.507373E-03
|
||||
337 8.720000E+00 -5.364035E-04 -3.286769E-04
|
||||
338 8.740000E+00 -5.681458E-04 3.033482E-03
|
||||
339 8.760000E+00 -6.389659E-04 3.579102E-03
|
||||
340 8.780000E+00 -6.925330E-04 1.308185E-03
|
||||
341 8.800000E+00 -6.725164E-04 -3.779270E-03
|
||||
342 8.820000E+00 -5.113768E-04 -1.169180E-02
|
||||
343 8.840000E+00 -2.305599E-04 -1.574700E-02
|
||||
344 8.860000E+00 9.278768E-05 -1.594487E-02
|
||||
345 8.880000E+00 3.815195E-04 -1.228542E-02
|
||||
346 8.900000E+00 5.584889E-04 -4.768636E-03
|
||||
347 8.920000E+00 6.079481E-04 -2.335309E-04
|
||||
348 8.940000E+00 5.700798E-04 3.964121E-03
|
||||
349 8.960000E+00 4.516330E-04 7.824320E-03
|
||||
350 8.980000E+00 2.593567E-04 1.134707E-02
|
||||
351 9.000000E+00 0.000000E+00 1.453236E-02
|
||||
31
examples/PACKAGES/dpd-basic/dpd_tstat/in.dpd_tstat
Normal file
31
examples/PACKAGES/dpd-basic/dpd_tstat/in.dpd_tstat
Normal file
@ -0,0 +1,31 @@
|
||||
# Coarse-Grained SPC/E Water
|
||||
|
||||
variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat ${T} ${T} ${rc} 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 dpd/tstat 10.0 ${rcD}
|
||||
|
||||
timestep 1.0
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 1000
|
||||
106
examples/PACKAGES/dpd-basic/dpd_tstat/log.5Apr22.dpd_tstat.g++.1
Normal file
106
examples/PACKAGES/dpd-basic/dpd_tstat/log.5Apr22.dpd_tstat.g++.1
Normal file
@ -0,0 +1,106 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Coarse-Grained SPC/E Water
|
||||
|
||||
variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (40.31 40.31 40.31)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
2180 atoms
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat ${T} ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat 300 ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat 300 300 ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat 300 300 9 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA 9
|
||||
WARNING: 16 of 351 force values in table VOTCA are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
pair_coeff 1 1 dpd/tstat 10.0 ${rcD}
|
||||
pair_coeff 1 1 dpd/tstat 10.0 10
|
||||
|
||||
timestep 1.0
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 300 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 1000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 7 7 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair dpd/tstat, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.38 | 5.38 | 5.38 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 300 7459.7935
|
||||
100 100 309.27219 6997.2438
|
||||
200 200 311.23318 9940.3922
|
||||
300 300 300.14145 7970.3486
|
||||
400 400 293.17924 8390.7272
|
||||
500 500 285.9647 7304.1147
|
||||
600 600 291.15512 6605.1675
|
||||
700 700 294.54557 7708.3815
|
||||
800 800 288.72442 8641.2675
|
||||
900 900 294.83288 7145.1684
|
||||
1000 1000 291.12446 8525.4556
|
||||
Loop time of 10.1894 on 1 procs for 1000 steps with 2180 atoms
|
||||
|
||||
Performance: 8.479 ns/day, 2.830 hours/ns, 98.141 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 10.02 | 10.02 | 10.02 | 0.0 | 98.34
|
||||
Neigh | 0.087623 | 0.087623 | 0.087623 | 0.0 | 0.86
|
||||
Comm | 0.055526 | 0.055526 | 0.055526 | 0.0 | 0.54
|
||||
Output | 0.00026505 | 0.00026505 | 0.00026505 | 0.0 | 0.00
|
||||
Modify | 0.013958 | 0.013958 | 0.013958 | 0.0 | 0.14
|
||||
Other | | 0.01163 | | | 0.11
|
||||
|
||||
Nlocal: 2180 ave 2180 max 2180 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6741 ave 6741 max 6741 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 261567 ave 261567 max 261567 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 261567
|
||||
Ave neighs/atom = 119.98486
|
||||
Neighbor list builds = 14
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:10
|
||||
106
examples/PACKAGES/dpd-basic/dpd_tstat/log.5Apr22.dpd_tstat.g++.4
Normal file
106
examples/PACKAGES/dpd-basic/dpd_tstat/log.5Apr22.dpd_tstat.g++.4
Normal file
@ -0,0 +1,106 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Coarse-Grained SPC/E Water
|
||||
|
||||
variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (40.31 40.31 40.31)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
2180 atoms
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat ${T} ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat 300 ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat 300 300 ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/tstat 300 300 9 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA 9
|
||||
WARNING: 16 of 351 force values in table VOTCA are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
pair_coeff 1 1 dpd/tstat 10.0 ${rcD}
|
||||
pair_coeff 1 1 dpd/tstat 10.0 10
|
||||
|
||||
timestep 1.0
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 300 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 1000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 7 7 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair dpd/tstat, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.695 | 3.696 | 3.697 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 300 7929.9249
|
||||
100 100 305.51763 8531.8105
|
||||
200 200 304.43334 8697.989
|
||||
300 300 292.42805 6865.4712
|
||||
400 400 300.66447 7606.6995
|
||||
500 500 298.43456 8713.2403
|
||||
600 600 298.10981 6913.5475
|
||||
700 700 297.39737 9121.8642
|
||||
800 800 298.23888 7833.1307
|
||||
900 900 293.91793 8423.8417
|
||||
1000 1000 299.65933 7974.9976
|
||||
Loop time of 2.82436 on 4 procs for 1000 steps with 2180 atoms
|
||||
|
||||
Performance: 30.591 ns/day, 0.785 hours/ns, 354.062 timesteps/s
|
||||
99.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 2.6238 | 2.644 | 2.6909 | 1.7 | 93.61
|
||||
Neigh | 0.021524 | 0.021958 | 0.022778 | 0.3 | 0.78
|
||||
Comm | 0.10035 | 0.1479 | 0.16842 | 7.2 | 5.24
|
||||
Output | 0.00019058 | 0.00021173 | 0.00026852 | 0.0 | 0.01
|
||||
Modify | 0.0041395 | 0.0041846 | 0.0042798 | 0.1 | 0.15
|
||||
Other | | 0.006091 | | | 0.22
|
||||
|
||||
Nlocal: 545 ave 559 max 536 min
|
||||
Histogram: 1 0 1 1 0 0 0 0 0 1
|
||||
Nghost: 3613.5 ave 3634 max 3604 min
|
||||
Histogram: 1 2 0 0 0 0 0 0 0 1
|
||||
Neighs: 65402 ave 68101 max 63621 min
|
||||
Histogram: 1 1 0 0 1 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 261608
|
||||
Ave neighs/atom = 120.00367
|
||||
Neighbor list builds = 14
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:02
|
||||
@ -4,9 +4,9 @@ variable T equal 1.0
|
||||
variable rc equal 1.0
|
||||
variable rcD equal 1.2
|
||||
|
||||
units lj
|
||||
units lj
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
@ -16,29 +16,27 @@ variable L equal 5.0
|
||||
lattice fcc 3.0
|
||||
region simBox block 0 ${L} 0 ${L} 0 ${L}
|
||||
create_box 2 simBox
|
||||
#create_atoms 1 region simBox
|
||||
create_atoms 1 random 100 132456 simBox
|
||||
create_atoms 2 random 100 132456 simBox
|
||||
create_atoms 1 random 100 12456 simBox
|
||||
create_atoms 2 random 100 13245 simBox
|
||||
mass 1 1.0
|
||||
mass 2 2.0
|
||||
###
|
||||
|
||||
pair_style dpd/ext ${T} ${rc} 3854262
|
||||
pair_style dpd/ext ${T} ${rc} 3854262
|
||||
|
||||
pair_coeff 1 1 25.0 4.5 4.53 0.5 0.53 1.2 #${rcD}
|
||||
pair_coeff 1 2 25.1 4.51 4.54 0.51 0.54 1.21 #${rcD}
|
||||
pair_coeff 2 2 25.2 4.52 4.55 0.52 0.55 1.22 #${rcD}
|
||||
|
||||
timestep 0.01
|
||||
timestep 0.01
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 500
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 50000
|
||||
run 5000
|
||||
|
||||
write_data final.data pair ij
|
||||
153
examples/PACKAGES/dpd-basic/dpdext/log.5Apr22.dpdext.g++.1
Normal file
153
examples/PACKAGES/dpd-basic/dpdext/log.5Apr22.dpdext.g++.1
Normal file
@ -0,0 +1,153 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# DPD Fluid
|
||||
|
||||
variable T equal 1.0
|
||||
variable rc equal 1.0
|
||||
variable rcD equal 1.2
|
||||
|
||||
units lj
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
### create box and configuration
|
||||
variable L equal 5.0
|
||||
lattice fcc 3.0
|
||||
Lattice spacing in x,y,z = 1.1006424 1.1006424 1.1006424
|
||||
region simBox block 0 ${L} 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 5 0 ${L}
|
||||
region simBox block 0 5 0 5 0 5
|
||||
create_box 2 simBox
|
||||
Created orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 random 100 12456 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 random 100 13245 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
mass 1 1.0
|
||||
mass 2 2.0
|
||||
###
|
||||
|
||||
pair_style dpd/ext ${T} ${rc} 3854262
|
||||
pair_style dpd/ext 1 ${rc} 3854262
|
||||
pair_style dpd/ext 1 1 3854262
|
||||
|
||||
pair_coeff 1 1 25.0 4.5 4.53 0.5 0.53 1.2 #${rcD}
|
||||
pair_coeff 1 2 25.1 4.51 4.54 0.51 0.54 1.21 #${rcD}
|
||||
pair_coeff 2 2 25.2 4.52 4.55 0.52 0.55 1.22 #${rcD}
|
||||
|
||||
timestep 0.01
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 1 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 5000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 1.52
|
||||
ghost atom cutoff = 1.52
|
||||
binsize = 0.76, bins = 8 8 8
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair dpd/ext, 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.083 | 3.083 | 3.083 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 1 10.864186
|
||||
100 1 1.1314376 7.1955963
|
||||
200 2 1.0058948 8.4574538
|
||||
300 3 0.93292241 7.7033353
|
||||
400 4 0.93599378 7.9649888
|
||||
500 5 1.0390423 7.9498546
|
||||
600 6 1.0750333 7.3594973
|
||||
700 7 1.119325 7.1843859
|
||||
800 8 0.96727219 6.8327896
|
||||
900 9 0.98826001 8.1974994
|
||||
1000 10 1.105819 7.8830702
|
||||
1100 11 0.99559202 7.8295372
|
||||
1200 12 0.9210428 8.2045593
|
||||
1300 13 0.96628584 8.6531905
|
||||
1400 14 1.1808689 7.7659964
|
||||
1500 15 0.96208743 7.9977415
|
||||
1600 16 1.0080123 7.6254557
|
||||
1700 17 0.96910957 8.3643075
|
||||
1800 18 1.0562621 7.5966268
|
||||
1900 19 0.93109173 7.7944606
|
||||
2000 20 1.1126085 9.3753501
|
||||
2100 21 1.1328553 7.6293793
|
||||
2200 22 0.8964042 7.5985061
|
||||
2300 23 1.0043044 8.0016943
|
||||
2400 24 1.0319521 8.1249684
|
||||
2500 25 0.95913468 7.2383318
|
||||
2600 26 0.99480311 7.6491295
|
||||
2700 27 0.9735191 7.5004628
|
||||
2800 28 0.96145308 8.222045
|
||||
2900 29 1.0131071 6.6390842
|
||||
3000 30 0.99463836 7.0147693
|
||||
3100 31 0.96803993 8.2738796
|
||||
3200 32 0.94066026 9.476403
|
||||
3300 33 0.97401823 6.409563
|
||||
3400 34 1.0548493 7.7301555
|
||||
3500 35 0.98567796 8.2949868
|
||||
3600 36 0.86621746 7.4759028
|
||||
3700 37 0.94934175 8.1189998
|
||||
3800 38 0.9626774 7.7986715
|
||||
3900 39 0.95728518 6.8669836
|
||||
4000 40 1.0866412 7.41281
|
||||
4100 41 0.98873564 6.4612262
|
||||
4200 42 0.9109925 7.1806331
|
||||
4300 43 1.0344723 8.4617679
|
||||
4400 44 0.98920584 7.3622901
|
||||
4500 45 0.99386139 6.8002442
|
||||
4600 46 1.0947487 6.8868352
|
||||
4700 47 0.98789482 7.8428621
|
||||
4800 48 1.0035907 8.3878628
|
||||
4900 49 1.0336467 8.1592349
|
||||
5000 50 1.0870964 8.217988
|
||||
Loop time of 0.907286 on 1 procs for 5000 steps with 200 atoms
|
||||
|
||||
Performance: 4761453.941 tau/day, 5510.942 timesteps/s
|
||||
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.79672 | 0.79672 | 0.79672 | 0.0 | 87.81
|
||||
Neigh | 0.066416 | 0.066416 | 0.066416 | 0.0 | 7.32
|
||||
Comm | 0.029801 | 0.029801 | 0.029801 | 0.0 | 3.28
|
||||
Output | 0.0010415 | 0.0010415 | 0.0010415 | 0.0 | 0.11
|
||||
Modify | 0.0078915 | 0.0078915 | 0.0078915 | 0.0 | 0.87
|
||||
Other | | 0.005414 | | | 0.60
|
||||
|
||||
Nlocal: 200 ave 200 max 200 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 563 ave 563 max 563 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 1624 ave 1624 max 1624 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 1624
|
||||
Ave neighs/atom = 8.12
|
||||
Neighbor list builds = 500
|
||||
Dangerous builds = 500
|
||||
|
||||
Total wall time: 0:00:00
|
||||
153
examples/PACKAGES/dpd-basic/dpdext/log.5Apr22.dpdext.g++.4
Normal file
153
examples/PACKAGES/dpd-basic/dpdext/log.5Apr22.dpdext.g++.4
Normal file
@ -0,0 +1,153 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# DPD Fluid
|
||||
|
||||
variable T equal 1.0
|
||||
variable rc equal 1.0
|
||||
variable rcD equal 1.2
|
||||
|
||||
units lj
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
### create box and configuration
|
||||
variable L equal 5.0
|
||||
lattice fcc 3.0
|
||||
Lattice spacing in x,y,z = 1.1006424 1.1006424 1.1006424
|
||||
region simBox block 0 ${L} 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 ${L} 0 ${L}
|
||||
region simBox block 0 5 0 5 0 ${L}
|
||||
region simBox block 0 5 0 5 0 5
|
||||
create_box 2 simBox
|
||||
Created orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
create_atoms 1 random 100 12456 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
create_atoms 2 random 100 13245 simBox
|
||||
Created 100 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (5.5032121 5.5032121 5.5032121)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
mass 1 1.0
|
||||
mass 2 2.0
|
||||
###
|
||||
|
||||
pair_style dpd/ext ${T} ${rc} 3854262
|
||||
pair_style dpd/ext 1 ${rc} 3854262
|
||||
pair_style dpd/ext 1 1 3854262
|
||||
|
||||
pair_coeff 1 1 25.0 4.5 4.53 0.5 0.53 1.2 #${rcD}
|
||||
pair_coeff 1 2 25.1 4.51 4.54 0.51 0.54 1.21 #${rcD}
|
||||
pair_coeff 2 2 25.2 4.52 4.55 0.52 0.55 1.22 #${rcD}
|
||||
|
||||
timestep 0.01
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 1 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 5000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 1.52
|
||||
ghost atom cutoff = 1.52
|
||||
binsize = 0.76, bins = 8 8 8
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair dpd/ext, 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.064 | 3.064 | 3.064 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 1 9.2729849
|
||||
100 1 1.1416138 7.7058466
|
||||
200 2 0.91696292 8.1601454
|
||||
300 3 0.96358166 6.7987934
|
||||
400 4 0.94726377 7.6196059
|
||||
500 5 1.0941462 7.5974711
|
||||
600 6 0.91469027 8.3921536
|
||||
700 7 1.0912559 7.362721
|
||||
800 8 0.96537861 9.2089379
|
||||
900 9 0.9986577 8.0072887
|
||||
1000 10 0.9580071 7.2399027
|
||||
1100 11 0.94763774 7.8075521
|
||||
1200 12 0.9942368 7.5215461
|
||||
1300 13 1.0312465 8.2684258
|
||||
1400 14 0.95133276 7.2734722
|
||||
1500 15 0.97273431 7.1831939
|
||||
1600 16 1.0052028 7.929104
|
||||
1700 17 0.93909435 8.2831308
|
||||
1800 18 1.0647294 8.850861
|
||||
1900 19 1.0268112 7.2828461
|
||||
2000 20 0.91293528 8.208191
|
||||
2100 21 0.94719411 8.3353929
|
||||
2200 22 0.90507637 9.1708397
|
||||
2300 23 1.0663386 7.1415871
|
||||
2400 24 1.0132089 9.2210634
|
||||
2500 25 1.0633849 8.3368039
|
||||
2600 26 0.95803955 8.8247976
|
||||
2700 27 0.95264552 7.3204561
|
||||
2800 28 0.93548595 7.290555
|
||||
2900 29 0.96876322 7.4969147
|
||||
3000 30 0.99554648 8.2055023
|
||||
3100 31 1.0190751 7.907751
|
||||
3200 32 1.0887502 7.7247246
|
||||
3300 33 1.0059692 7.4039814
|
||||
3400 34 1.0055991 7.3469353
|
||||
3500 35 1.0067689 7.2161248
|
||||
3600 36 1.1103667 8.4373236
|
||||
3700 37 1.0668979 7.1922528
|
||||
3800 38 0.97902043 5.5426601
|
||||
3900 39 1.0268733 6.7786635
|
||||
4000 40 1.0036613 7.8078466
|
||||
4100 41 1.0714377 7.4129166
|
||||
4200 42 0.99168608 6.0096099
|
||||
4300 43 1.084818 7.4932992
|
||||
4400 44 0.98348896 8.9950057
|
||||
4500 45 1.045253 6.1309568
|
||||
4600 46 1.0266723 6.3227645
|
||||
4700 47 1.0183525 8.1505786
|
||||
4800 48 1.0527309 8.2824928
|
||||
4900 49 0.96877903 7.6341751
|
||||
5000 50 1.0178917 7.5037327
|
||||
Loop time of 0.320182 on 4 procs for 5000 steps with 200 atoms
|
||||
|
||||
Performance: 13492326.176 tau/day, 15616.118 timesteps/s
|
||||
98.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.20185 | 0.21019 | 0.2166 | 1.4 | 65.65
|
||||
Neigh | 0.017652 | 0.018339 | 0.019085 | 0.5 | 5.73
|
||||
Comm | 0.076802 | 0.084707 | 0.094197 | 2.6 | 26.46
|
||||
Output | 0.00057039 | 0.00066408 | 0.00093301 | 0.0 | 0.21
|
||||
Modify | 0.0025036 | 0.0027709 | 0.0030403 | 0.5 | 0.87
|
||||
Other | | 0.003508 | | | 1.10
|
||||
|
||||
Nlocal: 50 ave 53 max 45 min
|
||||
Histogram: 1 0 0 0 0 0 1 0 1 1
|
||||
Nghost: 288.5 ave 300 max 279 min
|
||||
Histogram: 1 1 0 0 0 0 1 0 0 1
|
||||
Neighs: 418.25 ave 438 max 384 min
|
||||
Histogram: 1 0 0 0 0 1 0 0 0 2
|
||||
|
||||
Total # of neighbors = 1673
|
||||
Ave neighs/atom = 8.365
|
||||
Neighbor list builds = 500
|
||||
Dangerous builds = 500
|
||||
|
||||
Total wall time: 0:00:00
|
||||
File diff suppressed because it is too large
Load Diff
1
examples/PACKAGES/dpd-basic/dpdext_tstat/cg_spce.data
Symbolic link
1
examples/PACKAGES/dpd-basic/dpdext_tstat/cg_spce.data
Symbolic link
@ -0,0 +1 @@
|
||||
../dpd_tstat/cg_spce.data
|
||||
@ -1,354 +0,0 @@
|
||||
VOTCA
|
||||
N 351 R 2.0 9.0
|
||||
|
||||
1 2.000000E+00 2.190202E+01 7.229762E+01
|
||||
2 2.020000E+00 2.048957E+01 6.887333E+01
|
||||
3 2.040000E+00 1.915004E+01 6.500604E+01
|
||||
4 2.060000E+00 1.789228E+01 6.069573E+01
|
||||
5 2.080000E+00 1.672516E+01 5.594242E+01
|
||||
6 2.100000E+00 1.565754E+01 5.074609E+01
|
||||
7 2.120000E+00 1.467088E+01 4.787307E+01
|
||||
8 2.140000E+00 1.374450E+01 4.471740E+01
|
||||
9 2.160000E+00 1.288407E+01 4.127908E+01
|
||||
10 2.180000E+00 1.209522E+01 3.755811E+01
|
||||
11 2.200000E+00 1.138363E+01 3.355449E+01
|
||||
12 2.220000E+00 1.072913E+01 3.188695E+01
|
||||
13 2.240000E+00 1.010845E+01 3.017359E+01
|
||||
14 2.260000E+00 9.522496E+00 2.841440E+01
|
||||
15 2.280000E+00 8.972182E+00 2.660938E+01
|
||||
16 2.300000E+00 8.458426E+00 2.475854E+01
|
||||
17 2.320000E+00 8.014166E+00 2.006698E+01
|
||||
18 2.340000E+00 7.639767E+00 1.777244E+01
|
||||
19 2.360000E+00 7.287288E+00 1.787493E+01
|
||||
20 2.380000E+00 6.908790E+00 2.037445E+01
|
||||
21 2.400000E+00 6.456330E+00 2.527099E+01
|
||||
22 2.420000E+00 5.858025E+00 3.384695E+01
|
||||
23 2.440000E+00 5.130955E+00 3.814748E+01
|
||||
24 2.460000E+00 4.360629E+00 3.817257E+01
|
||||
25 2.480000E+00 3.632555E+00 3.392224E+01
|
||||
26 2.500000E+00 3.032242E+00 2.539647E+01
|
||||
27 2.520000E+00 2.547993E+00 2.297813E+01
|
||||
28 2.540000E+00 2.115131E+00 2.025763E+01
|
||||
29 2.560000E+00 1.739702E+00 1.723497E+01
|
||||
30 2.580000E+00 1.427747E+00 1.391013E+01
|
||||
31 2.600000E+00 1.185311E+00 1.028314E+01
|
||||
32 2.620000E+00 9.860176E-01 9.578245E+00
|
||||
33 2.640000E+00 8.048986E-01 8.465708E+00
|
||||
34 2.660000E+00 6.501069E-01 6.945526E+00
|
||||
35 2.680000E+00 5.297952E-01 5.017699E+00
|
||||
36 2.700000E+00 4.521166E-01 2.682227E+00
|
||||
37 2.720000E+00 3.986447E-01 2.615311E+00
|
||||
38 2.740000E+00 3.494900E-01 2.250522E+00
|
||||
39 2.760000E+00 3.106097E-01 1.587859E+00
|
||||
40 2.780000E+00 2.879614E-01 6.273237E-01
|
||||
41 2.800000E+00 2.875026E-01 -6.310851E-01
|
||||
42 2.820000E+00 3.002733E-01 -6.543549E-01
|
||||
43 2.840000E+00 3.140112E-01 -7.277911E-01
|
||||
44 2.860000E+00 3.297194E-01 -8.513935E-01
|
||||
45 2.880000E+00 3.484014E-01 -1.025162E+00
|
||||
46 2.900000E+00 3.710604E-01 -1.249097E+00
|
||||
47 2.920000E+00 3.974884E-01 -1.380483E+00
|
||||
48 2.940000E+00 4.257507E-01 -1.432530E+00
|
||||
49 2.960000E+00 4.542607E-01 -1.405240E+00
|
||||
50 2.980000E+00 4.814314E-01 -1.298611E+00
|
||||
51 3.000000E+00 5.056762E-01 -1.112645E+00
|
||||
52 3.020000E+00 5.266502E-01 -9.832894E-01
|
||||
53 3.040000E+00 5.449492E-01 -8.451544E-01
|
||||
54 3.060000E+00 5.603978E-01 -6.982396E-01
|
||||
55 3.080000E+00 5.728203E-01 -5.425450E-01
|
||||
56 3.100000E+00 5.820411E-01 -3.780706E-01
|
||||
57 3.120000E+00 5.882509E-01 -2.409307E-01
|
||||
58 3.140000E+00 5.915991E-01 -9.190908E-02
|
||||
59 3.160000E+00 5.918481E-01 6.899430E-02
|
||||
60 3.180000E+00 5.887601E-01 2.417794E-01
|
||||
61 3.200000E+00 5.820977E-01 4.264463E-01
|
||||
62 3.220000E+00 5.733491E-01 4.528343E-01
|
||||
63 3.240000E+00 5.638075E-01 5.057356E-01
|
||||
64 3.260000E+00 5.529429E-01 5.851503E-01
|
||||
65 3.280000E+00 5.402248E-01 6.910784E-01
|
||||
66 3.300000E+00 5.251230E-01 8.235199E-01
|
||||
67 3.320000E+00 5.086524E-01 8.236482E-01
|
||||
68 3.340000E+00 4.921725E-01 8.244583E-01
|
||||
69 3.360000E+00 4.756696E-01 8.259503E-01
|
||||
70 3.380000E+00 4.591299E-01 8.281240E-01
|
||||
71 3.400000E+00 4.425400E-01 8.309796E-01
|
||||
72 3.420000E+00 4.259181E-01 8.311861E-01
|
||||
73 3.440000E+00 4.092937E-01 8.312292E-01
|
||||
74 3.460000E+00 3.926700E-01 8.311089E-01
|
||||
75 3.480000E+00 3.760504E-01 8.308252E-01
|
||||
76 3.500000E+00 3.594381E-01 8.303781E-01
|
||||
77 3.520000E+00 3.428394E-01 8.295412E-01
|
||||
78 3.540000E+00 3.262547E-01 8.289646E-01
|
||||
79 3.560000E+00 3.096790E-01 8.286483E-01
|
||||
80 3.580000E+00 2.931071E-01 8.285923E-01
|
||||
81 3.600000E+00 2.765336E-01 8.287966E-01
|
||||
82 3.620000E+00 2.599901E-01 8.254306E-01
|
||||
83 3.640000E+00 2.435212E-01 8.213359E-01
|
||||
84 3.660000E+00 2.271415E-01 8.165124E-01
|
||||
85 3.680000E+00 2.108656E-01 8.109603E-01
|
||||
86 3.700000E+00 1.947080E-01 8.046794E-01
|
||||
87 3.720000E+00 1.790243E-01 7.653050E-01
|
||||
88 3.740000E+00 1.640312E-01 7.356166E-01
|
||||
89 3.760000E+00 1.495351E-01 7.156143E-01
|
||||
90 3.780000E+00 1.353421E-01 7.052980E-01
|
||||
91 3.800000E+00 1.212586E-01 7.046676E-01
|
||||
92 3.820000E+00 1.072429E-01 6.965706E-01
|
||||
93 3.840000E+00 9.340878E-02 6.865180E-01
|
||||
94 3.860000E+00 7.979524E-02 6.745098E-01
|
||||
95 3.880000E+00 6.644142E-02 6.605462E-01
|
||||
96 3.900000E+00 5.338643E-02 6.446270E-01
|
||||
97 3.920000E+00 4.067486E-02 6.268536E-01
|
||||
98 3.940000E+00 2.829935E-02 6.110218E-01
|
||||
99 3.960000E+00 1.622105E-02 5.971317E-01
|
||||
100 3.980000E+00 4.401131E-03 5.851833E-01
|
||||
101 4.000000E+00 -7.199230E-03 5.751764E-01
|
||||
102 4.020000E+00 -1.856170E-02 5.611971E-01
|
||||
103 4.040000E+00 -2.965216E-02 5.479743E-01
|
||||
104 4.060000E+00 -4.048572E-02 5.355079E-01
|
||||
105 4.080000E+00 -5.107752E-02 5.237981E-01
|
||||
106 4.100000E+00 -6.144268E-02 5.128447E-01
|
||||
107 4.120000E+00 -7.151117E-02 4.939504E-01
|
||||
108 4.140000E+00 -8.119856E-02 4.747353E-01
|
||||
109 4.160000E+00 -9.049845E-02 4.551994E-01
|
||||
110 4.180000E+00 -9.940440E-02 4.353427E-01
|
||||
111 4.200000E+00 -1.079100E-01 4.151651E-01
|
||||
112 4.220000E+00 -1.159565E-01 3.900062E-01
|
||||
113 4.240000E+00 -1.235312E-01 3.679865E-01
|
||||
114 4.260000E+00 -1.306969E-01 3.491061E-01
|
||||
115 4.280000E+00 -1.375164E-01 3.333651E-01
|
||||
116 4.300000E+00 -1.440524E-01 3.207633E-01
|
||||
117 4.320000E+00 -1.503014E-01 3.040292E-01
|
||||
118 4.340000E+00 -1.562092E-01 2.866389E-01
|
||||
119 4.360000E+00 -1.617626E-01 2.685925E-01
|
||||
120 4.380000E+00 -1.669485E-01 2.498899E-01
|
||||
121 4.400000E+00 -1.717538E-01 2.305311E-01
|
||||
122 4.420000E+00 -1.760941E-01 2.036400E-01
|
||||
123 4.440000E+00 -1.799054E-01 1.776469E-01
|
||||
124 4.460000E+00 -1.832059E-01 1.525518E-01
|
||||
125 4.480000E+00 -1.860135E-01 1.283546E-01
|
||||
126 4.500000E+00 -1.883461E-01 1.050554E-01
|
||||
127 4.520000E+00 -1.902569E-01 8.558005E-02
|
||||
128 4.540000E+00 -1.917515E-01 6.344105E-02
|
||||
129 4.560000E+00 -1.927768E-01 3.863842E-02
|
||||
130 4.580000E+00 -1.932793E-01 1.117216E-02
|
||||
131 4.600000E+00 -1.932059E-01 -1.895774E-02
|
||||
132 4.620000E+00 -1.926829E-01 -3.331832E-02
|
||||
133 4.640000E+00 -1.918741E-01 -4.753697E-02
|
||||
134 4.660000E+00 -1.907824E-01 -6.161370E-02
|
||||
135 4.680000E+00 -1.894105E-01 -7.554851E-02
|
||||
136 4.700000E+00 -1.877614E-01 -8.934140E-02
|
||||
137 4.720000E+00 -1.859159E-01 -9.580751E-02
|
||||
138 4.740000E+00 -1.839049E-01 -1.058976E-01
|
||||
139 4.760000E+00 -1.816559E-01 -1.196116E-01
|
||||
140 4.780000E+00 -1.790963E-01 -1.369495E-01
|
||||
141 4.800000E+00 -1.761537E-01 -1.579114E-01
|
||||
142 4.820000E+00 -1.728280E-01 -1.744216E-01
|
||||
143 4.840000E+00 -1.691864E-01 -1.895036E-01
|
||||
144 4.860000E+00 -1.652574E-01 -2.031575E-01
|
||||
145 4.880000E+00 -1.610696E-01 -2.153832E-01
|
||||
146 4.900000E+00 -1.566516E-01 -2.261808E-01
|
||||
147 4.920000E+00 -1.521084E-01 -2.290714E-01
|
||||
148 4.940000E+00 -1.474515E-01 -2.375453E-01
|
||||
149 4.960000E+00 -1.425693E-01 -2.516026E-01
|
||||
150 4.980000E+00 -1.373502E-01 -2.712432E-01
|
||||
151 5.000000E+00 -1.316824E-01 -2.964672E-01
|
||||
152 5.020000E+00 -1.257009E-01 -3.016666E-01
|
||||
153 5.040000E+00 -1.196162E-01 -3.067953E-01
|
||||
154 5.060000E+00 -1.134296E-01 -3.118535E-01
|
||||
155 5.080000E+00 -1.071425E-01 -3.168409E-01
|
||||
156 5.100000E+00 -1.007564E-01 -3.217577E-01
|
||||
157 5.120000E+00 -9.430843E-02 -3.230025E-01
|
||||
158 5.140000E+00 -8.783782E-02 -3.240216E-01
|
||||
159 5.160000E+00 -8.134907E-02 -3.248150E-01
|
||||
160 5.180000E+00 -7.484672E-02 -3.253827E-01
|
||||
161 5.200000E+00 -6.833527E-02 -3.257248E-01
|
||||
162 5.220000E+00 -6.171989E-02 -3.350608E-01
|
||||
163 5.240000E+00 -5.496291E-02 -3.398853E-01
|
||||
164 5.260000E+00 -4.815456E-02 -3.401983E-01
|
||||
165 5.280000E+00 -4.138506E-02 -3.359997E-01
|
||||
166 5.300000E+00 -3.474465E-02 -3.272895E-01
|
||||
167 5.320000E+00 -2.866480E-02 -2.819209E-01
|
||||
168 5.340000E+00 -2.341879E-02 -2.439062E-01
|
||||
169 5.360000E+00 -1.885953E-02 -2.132454E-01
|
||||
170 5.380000E+00 -1.483994E-02 -1.899386E-01
|
||||
171 5.400000E+00 -1.121296E-02 -1.739857E-01
|
||||
172 5.420000E+00 -7.974056E-03 -1.497398E-01
|
||||
173 5.440000E+00 -5.229953E-03 -1.245058E-01
|
||||
174 5.460000E+00 -3.000413E-03 -9.828350E-02
|
||||
175 5.480000E+00 -1.305201E-03 -7.107305E-02
|
||||
176 5.500000E+00 -1.640790E-04 -4.287441E-02
|
||||
177 5.520000E+00 6.371635E-04 -3.612657E-02
|
||||
178 5.540000E+00 1.236053E-03 -2.263906E-02
|
||||
179 5.560000E+00 1.497795E-03 -2.411882E-03
|
||||
180 5.580000E+00 1.287597E-03 2.455496E-02
|
||||
181 5.600000E+00 4.706651E-04 5.826147E-02
|
||||
182 5.620000E+00 -7.026386E-04 5.910929E-02
|
||||
183 5.640000E+00 -1.895322E-03 6.019943E-02
|
||||
184 5.660000E+00 -3.112231E-03 6.153190E-02
|
||||
185 5.680000E+00 -4.358213E-03 6.310668E-02
|
||||
186 5.700000E+00 -5.638114E-03 6.492378E-02
|
||||
187 5.720000E+00 -6.949688E-03 6.610584E-02
|
||||
188 5.740000E+00 -8.277238E-03 6.652145E-02
|
||||
189 5.760000E+00 -9.605436E-03 6.617062E-02
|
||||
190 5.780000E+00 -1.091895E-02 6.505335E-02
|
||||
191 5.800000E+00 -1.220246E-02 6.316963E-02
|
||||
192 5.820000E+00 -1.341489E-02 5.820182E-02
|
||||
193 5.840000E+00 -1.453566E-02 5.400257E-02
|
||||
194 5.860000E+00 -1.558012E-02 5.057189E-02
|
||||
195 5.880000E+00 -1.656366E-02 4.790978E-02
|
||||
196 5.900000E+00 -1.750164E-02 4.601622E-02
|
||||
197 5.920000E+00 -1.840088E-02 4.358369E-02
|
||||
198 5.940000E+00 -1.923199E-02 3.920163E-02
|
||||
199 5.960000E+00 -1.995595E-02 3.287003E-02
|
||||
200 5.980000E+00 -2.053379E-02 2.458889E-02
|
||||
201 6.000000E+00 -2.092651E-02 1.435822E-02
|
||||
202 6.020000E+00 -2.120502E-02 1.352840E-02
|
||||
203 6.040000E+00 -2.146907E-02 1.291186E-02
|
||||
204 6.060000E+00 -2.172292E-02 1.250861E-02
|
||||
205 6.080000E+00 -2.197084E-02 1.231865E-02
|
||||
206 6.100000E+00 -2.221709E-02 1.234198E-02
|
||||
207 6.120000E+00 -2.246474E-02 1.237271E-02
|
||||
208 6.140000E+00 -2.270998E-02 1.210114E-02
|
||||
209 6.160000E+00 -2.294677E-02 1.152726E-02
|
||||
210 6.180000E+00 -2.316905E-02 1.065107E-02
|
||||
211 6.200000E+00 -2.337079E-02 9.472569E-03
|
||||
212 6.220000E+00 -2.332237E-02 -1.276224E-02
|
||||
213 6.240000E+00 -2.292243E-02 -2.567822E-02
|
||||
214 6.260000E+00 -2.235736E-02 -2.927535E-02
|
||||
215 6.280000E+00 -2.181354E-02 -2.355364E-02
|
||||
216 6.300000E+00 -2.147734E-02 -8.513096E-03
|
||||
217 6.320000E+00 -2.141633E-02 1.466366E-03
|
||||
218 6.340000E+00 -2.149820E-02 5.775798E-03
|
||||
219 6.360000E+00 -2.160956E-02 4.415202E-03
|
||||
220 6.380000E+00 -2.163701E-02 -2.615423E-03
|
||||
221 6.400000E+00 -2.146714E-02 -1.531608E-02
|
||||
222 6.420000E+00 -2.107402E-02 -2.337955E-02
|
||||
223 6.440000E+00 -2.055660E-02 -2.774728E-02
|
||||
224 6.460000E+00 -1.998877E-02 -2.841924E-02
|
||||
225 6.480000E+00 -1.944446E-02 -2.539546E-02
|
||||
226 6.500000E+00 -1.899759E-02 -1.867591E-02
|
||||
227 6.520000E+00 -1.869042E-02 -1.259095E-02
|
||||
228 6.540000E+00 -1.847196E-02 -9.804901E-03
|
||||
229 6.560000E+00 -1.827623E-02 -1.031775E-02
|
||||
230 6.580000E+00 -1.803726E-02 -1.412951E-02
|
||||
231 6.600000E+00 -1.768906E-02 -2.124018E-02
|
||||
232 6.620000E+00 -1.710949E-02 -3.551655E-02
|
||||
233 6.640000E+00 -1.631641E-02 -4.259122E-02
|
||||
234 6.660000E+00 -1.545385E-02 -4.246419E-02
|
||||
235 6.680000E+00 -1.466585E-02 -3.513545E-02
|
||||
236 6.700000E+00 -1.409644E-02 -2.060502E-02
|
||||
237 6.720000E+00 -1.374966E-02 -1.461056E-02
|
||||
238 6.740000E+00 -1.349054E-02 -1.183851E-02
|
||||
239 6.760000E+00 -1.325464E-02 -1.228886E-02
|
||||
240 6.780000E+00 -1.297750E-02 -1.596163E-02
|
||||
241 6.800000E+00 -1.259469E-02 -2.285680E-02
|
||||
242 6.820000E+00 -1.213049E-02 -2.349903E-02
|
||||
243 6.840000E+00 -1.165728E-02 -2.375897E-02
|
||||
244 6.860000E+00 -1.118268E-02 -2.363664E-02
|
||||
245 6.880000E+00 -1.071436E-02 -2.313203E-02
|
||||
246 6.900000E+00 -1.025995E-02 -2.224514E-02
|
||||
247 6.920000E+00 -9.817276E-03 -2.203990E-02
|
||||
248 6.940000E+00 -9.377653E-03 -2.193988E-02
|
||||
249 6.960000E+00 -8.938979E-03 -2.194508E-02
|
||||
250 6.980000E+00 -8.499148E-03 -2.205550E-02
|
||||
251 7.000000E+00 -8.056057E-03 -2.227113E-02
|
||||
252 7.020000E+00 -7.597830E-03 -2.345789E-02
|
||||
253 7.040000E+00 -7.121492E-03 -2.408210E-02
|
||||
254 7.060000E+00 -6.638296E-03 -2.414376E-02
|
||||
255 7.080000E+00 -6.159492E-03 -2.364288E-02
|
||||
256 7.100000E+00 -5.696331E-03 -2.257946E-02
|
||||
257 7.120000E+00 -5.301441E-03 -1.729553E-02
|
||||
258 7.140000E+00 -4.989070E-03 -1.432759E-02
|
||||
259 7.160000E+00 -4.712898E-03 -1.367562E-02
|
||||
260 7.180000E+00 -4.426605E-03 -1.533964E-02
|
||||
261 7.200000E+00 -4.083872E-03 -1.931964E-02
|
||||
262 7.220000E+00 -3.631995E-03 -2.538390E-02
|
||||
263 7.240000E+00 -3.087883E-03 -2.854317E-02
|
||||
264 7.260000E+00 -2.509635E-03 -2.879748E-02
|
||||
265 7.280000E+00 -1.955351E-03 -2.614680E-02
|
||||
266 7.300000E+00 -1.483130E-03 -2.059115E-02
|
||||
267 7.320000E+00 -1.113389E-03 -1.639767E-02
|
||||
268 7.340000E+00 -8.266321E-04 -1.229279E-02
|
||||
269 7.360000E+00 -6.210869E-04 -8.276492E-03
|
||||
270 7.380000E+00 -4.949818E-04 -4.348786E-03
|
||||
271 7.400000E+00 -4.465449E-04 -5.096684E-04
|
||||
272 7.420000E+00 -5.304321E-04 8.162452E-03
|
||||
273 7.440000E+00 -7.436056E-04 1.241897E-02
|
||||
274 7.460000E+00 -9.977534E-04 1.225988E-02
|
||||
275 7.480000E+00 -1.204563E-03 7.685191E-03
|
||||
276 7.500000E+00 -1.275724E-03 -1.305104E-03
|
||||
277 7.520000E+00 -1.199415E-03 -5.916706E-03
|
||||
278 7.540000E+00 -1.055417E-03 -8.074089E-03
|
||||
279 7.560000E+00 -8.928131E-04 -7.777253E-03
|
||||
280 7.580000E+00 -7.606883E-04 -5.026198E-03
|
||||
281 7.600000E+00 -7.081267E-04 1.790768E-04
|
||||
282 7.620000E+00 -7.213835E-04 1.157786E-03
|
||||
283 7.640000E+00 -7.548855E-04 2.203601E-03
|
||||
284 7.660000E+00 -8.099749E-04 3.316523E-03
|
||||
285 7.680000E+00 -8.879938E-04 4.496550E-03
|
||||
286 7.700000E+00 -9.902843E-04 5.743685E-03
|
||||
287 7.720000E+00 -1.122403E-03 7.421734E-03
|
||||
288 7.740000E+00 -1.285295E-03 8.820936E-03
|
||||
289 7.760000E+00 -1.473382E-03 9.941291E-03
|
||||
290 7.780000E+00 -1.681087E-03 1.078280E-02
|
||||
291 7.800000E+00 -1.902835E-03 1.134546E-02
|
||||
292 7.820000E+00 -2.225281E-03 2.008573E-02
|
||||
293 7.840000E+00 -2.673724E-03 2.394500E-02
|
||||
294 7.860000E+00 -3.150542E-03 2.292328E-02
|
||||
295 7.880000E+00 -3.558115E-03 1.702056E-02
|
||||
296 7.900000E+00 -3.798824E-03 6.236836E-03
|
||||
297 7.920000E+00 -3.844315E-03 -1.142168E-03
|
||||
298 7.940000E+00 -3.774961E-03 -5.247538E-03
|
||||
299 7.960000E+00 -3.656237E-03 -6.079274E-03
|
||||
300 7.980000E+00 -3.553615E-03 -3.637376E-03
|
||||
301 8.000000E+00 -3.532566E-03 2.078155E-03
|
||||
302 8.020000E+00 -3.611956E-03 5.494873E-03
|
||||
303 8.040000E+00 -3.737724E-03 6.716053E-03
|
||||
304 8.060000E+00 -3.865961E-03 5.741694E-03
|
||||
305 8.080000E+00 -3.952755E-03 2.571796E-03
|
||||
306 8.100000E+00 -3.954196E-03 -2.793640E-03
|
||||
307 8.120000E+00 -3.873685E-03 -5.086591E-03
|
||||
308 8.140000E+00 -3.757567E-03 -6.354313E-03
|
||||
309 8.160000E+00 -3.626347E-03 -6.596805E-03
|
||||
310 8.180000E+00 -3.500530E-03 -5.814068E-03
|
||||
311 8.200000E+00 -3.400620E-03 -4.006101E-03
|
||||
312 8.220000E+00 -3.334411E-03 -2.730570E-03
|
||||
313 8.240000E+00 -3.286762E-03 -2.150229E-03
|
||||
314 8.260000E+00 -3.243768E-03 -2.265076E-03
|
||||
315 8.280000E+00 -3.191524E-03 -3.075114E-03
|
||||
316 8.300000E+00 -3.116129E-03 -4.580340E-03
|
||||
317 8.320000E+00 -2.964210E-03 -1.014102E-02
|
||||
318 8.340000E+00 -2.729309E-03 -1.287854E-02
|
||||
319 8.360000E+00 -2.467889E-03 -1.279292E-02
|
||||
320 8.380000E+00 -2.236413E-03 -9.884157E-03
|
||||
321 8.400000E+00 -2.091344E-03 -4.152240E-03
|
||||
322 8.420000E+00 -2.034875E-03 -1.692189E-03
|
||||
323 8.440000E+00 -2.015752E-03 -4.177491E-04
|
||||
324 8.460000E+00 -2.010261E-03 -3.289192E-04
|
||||
325 8.480000E+00 -1.994691E-03 -1.425700E-03
|
||||
326 8.500000E+00 -1.945329E-03 -3.708091E-03
|
||||
327 8.520000E+00 -1.867098E-03 -4.115259E-03
|
||||
328 8.540000E+00 -1.780711E-03 -4.523663E-03
|
||||
329 8.560000E+00 -1.686143E-03 -4.933304E-03
|
||||
330 8.580000E+00 -1.583370E-03 -5.344181E-03
|
||||
331 8.600000E+00 -1.472368E-03 -5.756296E-03
|
||||
332 8.620000E+00 -1.328792E-03 -8.394009E-03
|
||||
333 8.640000E+00 -1.144899E-03 -9.787974E-03
|
||||
334 8.660000E+00 -9.455644E-04 -9.938189E-03
|
||||
335 8.680000E+00 -7.556630E-04 -8.844656E-03
|
||||
336 8.700000E+00 -6.000698E-04 -6.507373E-03
|
||||
337 8.720000E+00 -5.364035E-04 -3.286769E-04
|
||||
338 8.740000E+00 -5.681458E-04 3.033482E-03
|
||||
339 8.760000E+00 -6.389659E-04 3.579102E-03
|
||||
340 8.780000E+00 -6.925330E-04 1.308185E-03
|
||||
341 8.800000E+00 -6.725164E-04 -3.779270E-03
|
||||
342 8.820000E+00 -5.113768E-04 -1.169180E-02
|
||||
343 8.840000E+00 -2.305599E-04 -1.574700E-02
|
||||
344 8.860000E+00 9.278768E-05 -1.594487E-02
|
||||
345 8.880000E+00 3.815195E-04 -1.228542E-02
|
||||
346 8.900000E+00 5.584889E-04 -4.768636E-03
|
||||
347 8.920000E+00 6.079481E-04 -2.335309E-04
|
||||
348 8.940000E+00 5.700798E-04 3.964121E-03
|
||||
349 8.960000E+00 4.516330E-04 7.824320E-03
|
||||
350 8.980000E+00 2.593567E-04 1.134707E-02
|
||||
351 9.000000E+00 0.000000E+00 1.453236E-02
|
||||
1
examples/PACKAGES/dpd-basic/dpdext_tstat/cg_spce_table.pot
Symbolic link
1
examples/PACKAGES/dpd-basic/dpdext_tstat/cg_spce_table.pot
Symbolic link
@ -0,0 +1 @@
|
||||
../dpd_tstat/cg_spce_table.pot
|
||||
@ -4,7 +4,7 @@ variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
@ -13,7 +13,7 @@ comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat ${T} ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat ${T} ${T} ${rc} 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 ${rcD}
|
||||
@ -24,8 +24,8 @@ run_style verlet
|
||||
velocity all create ${T} 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 10
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 2000
|
||||
run 1000
|
||||
@ -1,293 +0,0 @@
|
||||
LAMMPS (8 Apr 2021)
|
||||
# Coarse-Grained SPC/E Water
|
||||
|
||||
variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
Reading data file ...
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (40.310000 40.310000 40.310000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
2180 atoms
|
||||
read_data CPU = 0.020 seconds
|
||||
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat ${T} ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat 300 ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat 300 300 ${rc} 385262
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat 300 300 9 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA 9
|
||||
WARNING: 16 of 351 force values in table VOTCA are inconsistent with -dE/dr.
|
||||
Should only be flagged at inflection points (../pair_table.cpp:461)
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 ${rcD}
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 10
|
||||
|
||||
timestep 1.0
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 300 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 10
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 7 7 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
(2) pair dpd/ext/tstat, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.380 | 5.380 | 5.380 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 300 7368.7186
|
||||
10 10 298.34842 6443.6033
|
||||
20 20 303.36187 9303.0158
|
||||
30 30 301.59356 7533.7912
|
||||
40 40 300.97217 5623.9089
|
||||
50 50 300.31652 9105.8093
|
||||
60 60 296.92173 9213.304
|
||||
70 70 294.36593 12701.327
|
||||
80 80 295.30077 6098.4732
|
||||
90 90 296.35396 8051.719
|
||||
100 100 293.72532 5555.983
|
||||
110 110 290.95711 9001.8346
|
||||
120 120 290.91972 10264.241
|
||||
130 130 294.14911 11450.959
|
||||
140 140 299.11994 7244.1639
|
||||
150 150 301.20082 7675.7516
|
||||
160 160 300.71883 9718.1901
|
||||
170 170 295.47176 8931.1414
|
||||
180 180 290.45284 7381.7674
|
||||
190 190 291.66922 11028.436
|
||||
200 200 294.0543 11897.269
|
||||
210 210 299.17955 8939.2171
|
||||
220 220 298.45193 8047.038
|
||||
230 230 300.48548 10033.64
|
||||
240 240 299.24752 6310.7247
|
||||
250 250 304.51487 8710.5626
|
||||
260 260 303.6513 5230.8162
|
||||
270 270 300.76074 12164.773
|
||||
280 280 302.60275 11145.98
|
||||
290 290 297.22957 9521.4384
|
||||
300 300 297.1365 7446.9006
|
||||
310 310 292.18323 8021.8344
|
||||
320 320 295.03958 9130.8594
|
||||
330 330 293.9622 4647.512
|
||||
340 340 290.77751 8001.486
|
||||
350 350 292.34687 11887.668
|
||||
360 360 295.95968 9262.148
|
||||
370 370 293.50476 4181.549
|
||||
380 380 288.69498 7632.071
|
||||
390 390 289.63957 5130.0205
|
||||
400 400 295.02212 5643.5024
|
||||
410 410 296.3944 7267.235
|
||||
420 420 299.22019 7149.9305
|
||||
430 430 298.36689 8384.595
|
||||
440 440 295.33149 10515.75
|
||||
450 450 294.76959 11569.389
|
||||
460 460 300.141 7272.4453
|
||||
470 470 299.14431 7792.5419
|
||||
480 480 302.3697 5837.8675
|
||||
490 490 301.94692 6999.1059
|
||||
500 500 300.25929 4885.3948
|
||||
510 510 302.50013 8231.0438
|
||||
520 520 300.76412 8445.0349
|
||||
530 530 298.5016 9110.432
|
||||
540 540 301.14513 9348.6421
|
||||
550 550 297.36425 10753.314
|
||||
560 560 296.50046 10476.823
|
||||
570 570 300.57267 9889.7968
|
||||
580 580 300.4868 8377.423
|
||||
590 590 296.65103 6859.32
|
||||
600 600 298.50013 7080.5995
|
||||
610 610 300.28274 9502.5438
|
||||
620 620 298.45508 8819.7846
|
||||
630 630 300.24859 6291.4944
|
||||
640 640 299.38719 7430.2366
|
||||
650 650 297.91915 9435.3218
|
||||
660 660 300.61208 6287.9931
|
||||
670 670 303.59291 8357.7639
|
||||
680 680 301.85511 1697.3038
|
||||
690 690 298.96873 5210.2286
|
||||
700 700 298.09035 7510.4359
|
||||
710 710 303.11692 10129.526
|
||||
720 720 302.65473 10488.388
|
||||
730 730 300.15444 7118.5953
|
||||
740 740 300.19245 10582.032
|
||||
750 750 296.73618 6538.0363
|
||||
760 760 299.72857 7588.9487
|
||||
770 770 299.00347 6633.9983
|
||||
780 780 301.38129 8053.5347
|
||||
790 790 298.54819 8711.4965
|
||||
800 800 305.54197 9717.9727
|
||||
810 810 302.96497 7582.0444
|
||||
820 820 306.81537 9433.6446
|
||||
830 830 309.16373 10088.582
|
||||
840 840 313.53881 9509.8624
|
||||
850 850 310.82992 5366.015
|
||||
860 860 306.49798 8499.9157
|
||||
870 870 308.93421 5690.3242
|
||||
880 880 302.56668 5526.3636
|
||||
890 890 306.72501 7380.8469
|
||||
900 900 308.87199 10388.13
|
||||
910 910 312.7367 6613.0734
|
||||
920 920 308.34508 5903.4291
|
||||
930 930 306.39924 8615.6622
|
||||
940 940 310.37544 6849.4694
|
||||
950 950 310.13051 6188.7605
|
||||
960 960 308.68049 7637.532
|
||||
970 970 302.85465 6448.7926
|
||||
980 980 307.40719 8763.0959
|
||||
990 990 304.02815 8373.6518
|
||||
1000 1000 300.69539 5682.6678
|
||||
1010 1010 299.16385 6012.246
|
||||
1020 1020 305.118 7913.4144
|
||||
1030 1030 304.20382 10580.788
|
||||
1040 1040 302.91134 7698.4548
|
||||
1050 1050 298.08593 8952.6724
|
||||
1060 1060 302.56196 10602.997
|
||||
1070 1070 305.98211 12174.358
|
||||
1080 1080 305.70253 12288.219
|
||||
1090 1090 303.22805 7922.7166
|
||||
1100 1100 301.54879 5031.3836
|
||||
1110 1110 302.57611 8547.4189
|
||||
1120 1120 302.00845 12966.595
|
||||
1130 1130 296.10912 4514.1707
|
||||
1140 1140 295.11601 6543.7239
|
||||
1150 1150 287.29188 6453.3386
|
||||
1160 1160 284.83881 7168.9427
|
||||
1170 1170 289.77871 7895.7434
|
||||
1180 1180 293.48011 7680.6885
|
||||
1190 1190 295.69035 8609.6593
|
||||
1200 1200 296.0653 7343.68
|
||||
1210 1210 302.72922 6973.6048
|
||||
1220 1220 304.11805 7322.7664
|
||||
1230 1230 300.24647 6418.2612
|
||||
1240 1240 293.24074 9039.1214
|
||||
1250 1250 300.56214 7877.4055
|
||||
1260 1260 308.03086 5644.2135
|
||||
1270 1270 311.12289 6875.5126
|
||||
1280 1280 307.83182 7204.9894
|
||||
1290 1290 309.58491 9993.2255
|
||||
1300 1300 305.36536 8626.859
|
||||
1310 1310 304.35084 3471.1205
|
||||
1320 1320 304.40125 2149.2701
|
||||
1330 1330 295.74547 6252.9592
|
||||
1340 1340 293.16034 3407.4408
|
||||
1350 1350 298.6302 10139.977
|
||||
1360 1360 300.46627 7312.9011
|
||||
1370 1370 298.00367 2780.8886
|
||||
1380 1380 300.97807 9403.3451
|
||||
1390 1390 294.32612 12005.453
|
||||
1400 1400 296.13403 5569.4907
|
||||
1410 1410 297.86152 9558.6064
|
||||
1420 1420 303.01992 8678.345
|
||||
1430 1430 298.53849 5544.6316
|
||||
1440 1440 293.60633 12879.765
|
||||
1450 1450 296.28813 9312.4229
|
||||
1460 1460 292.64466 8344.5877
|
||||
1470 1470 295.28975 7689.9396
|
||||
1480 1480 300.10761 7436.7346
|
||||
1490 1490 291.6152 8909.6757
|
||||
1500 1500 286.644 9756.5014
|
||||
1510 1510 294.52064 10383.164
|
||||
1520 1520 297.49618 4972.89
|
||||
1530 1530 295.63379 6192.5729
|
||||
1540 1540 295.04528 4987.7191
|
||||
1550 1550 290.41403 7013.6076
|
||||
1560 1560 295.62326 7222.5009
|
||||
1570 1570 299.90584 4282.5688
|
||||
1580 1580 299.04532 7885.433
|
||||
1590 1590 300.03907 5508.0652
|
||||
1600 1600 298.05683 9262.3744
|
||||
1610 1610 297.50015 9544.6913
|
||||
1620 1620 303.21217 6393.6756
|
||||
1630 1630 304.44383 9674.6583
|
||||
1640 1640 302.68977 9065.4408
|
||||
1650 1650 303.62415 6851.1575
|
||||
1660 1660 306.11103 8592.0481
|
||||
1670 1670 300.84566 8483.551
|
||||
1680 1680 303.92882 10113.096
|
||||
1690 1690 305.02534 7389.9402
|
||||
1700 1700 303.52902 5541.9256
|
||||
1710 1710 299.27905 9547.7344
|
||||
1720 1720 294.14366 7269.2402
|
||||
1730 1730 299.49977 8086.0601
|
||||
1740 1740 298.66942 7026.6067
|
||||
1750 1750 296.94428 9595.2435
|
||||
1760 1760 297.36921 6268.7436
|
||||
1770 1770 299.88423 10598.189
|
||||
1780 1780 293.76868 7405.7641
|
||||
1790 1790 297.19444 10837.102
|
||||
1800 1800 296.46054 8345.699
|
||||
1810 1810 299.06801 5256.5992
|
||||
1820 1820 294.17725 5510.7529
|
||||
1830 1830 286.78527 6310.8881
|
||||
1840 1840 284.89686 8249.1144
|
||||
1850 1850 293.79389 4578.9263
|
||||
1860 1860 298.31279 8752.305
|
||||
1870 1870 295.31087 8401.2736
|
||||
1880 1880 298.13297 4354.8694
|
||||
1890 1890 298.90786 11454.088
|
||||
1900 1900 299.1416 9121.4138
|
||||
1910 1910 296.43134 12157.884
|
||||
1920 1920 292.05445 8613.1522
|
||||
1930 1930 300.3421 7898.3626
|
||||
1940 1940 304.55746 6311.259
|
||||
1950 1950 304.03899 8789.3537
|
||||
1960 1960 305.08259 7243.5622
|
||||
1970 1970 304.0858 8712.4796
|
||||
1980 1980 299.14574 5166.3501
|
||||
1990 1990 300.07254 10019.769
|
||||
2000 2000 301.78176 8789.7968
|
||||
Loop time of 91.2059 on 1 procs for 2000 steps with 2180 atoms
|
||||
|
||||
Performance: 1.895 ns/day, 12.667 hours/ns, 21.928 timesteps/s
|
||||
99.8% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 90.668 | 90.668 | 90.668 | 0.0 | 99.41
|
||||
Neigh | 0.23231 | 0.23231 | 0.23231 | 0.0 | 0.25
|
||||
Comm | 0.20819 | 0.20819 | 0.20819 | 0.0 | 0.23
|
||||
Output | 0.0049558 | 0.0049558 | 0.0049558 | 0.0 | 0.01
|
||||
Modify | 0.052906 | 0.052906 | 0.052906 | 0.0 | 0.06
|
||||
Other | | 0.03904 | | | 0.04
|
||||
|
||||
Nlocal: 2180.00 ave 2180 max 2180 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6693.00 ave 6693 max 6693 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 261496.0 ave 261496 max 261496 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 261496
|
||||
Ave neighs/atom = 119.95229
|
||||
Neighbor list builds = 25
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:01:31
|
||||
@ -1,293 +0,0 @@
|
||||
LAMMPS (8 Apr 2021)
|
||||
# Coarse-Grained SPC/E Water
|
||||
|
||||
variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
Reading data file ...
|
||||
orthogonal box = (0.0000000 0.0000000 0.0000000) to (40.310000 40.310000 40.310000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
2180 atoms
|
||||
read_data CPU = 0.005 seconds
|
||||
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat ${T} ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat 300 ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat 300 300 ${rc} 385262
|
||||
pair_style hybrid/overlay table linear 1000 dpd/ext/tstat 300 300 9 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA 9
|
||||
WARNING: 16 of 351 force values in table VOTCA are inconsistent with -dE/dr.
|
||||
Should only be flagged at inflection points (../pair_table.cpp:461)
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 ${rcD}
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 10
|
||||
|
||||
timestep 1.0
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 300 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 10
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 7 7 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
(2) pair dpd/ext/tstat, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.695 | 3.696 | 3.697 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 300 5965.5396
|
||||
10 10 303.16391 8779.1574
|
||||
20 20 306.9014 8268.573
|
||||
30 30 305.84291 9976.0547
|
||||
40 40 301.20527 8832.3902
|
||||
50 50 305.72012 8041.0146
|
||||
60 60 305.1676 7118.8042
|
||||
70 70 305.01132 9423.9307
|
||||
80 80 308.10236 10781.423
|
||||
90 90 309.18703 3637.9961
|
||||
100 100 305.11814 7726.7672
|
||||
110 110 298.37346 8575.1602
|
||||
120 120 304.79786 8910.8048
|
||||
130 130 309.05401 6351.4839
|
||||
140 140 304.28367 4805.137
|
||||
150 150 300.28903 7412.6411
|
||||
160 160 299.39358 10183.593
|
||||
170 170 296.80729 5437.1054
|
||||
180 180 295.2755 8317.0414
|
||||
190 190 303.25949 8338.3453
|
||||
200 200 303.24607 9636.5224
|
||||
210 210 298.56684 10288.264
|
||||
220 220 293.42999 9001.0482
|
||||
230 230 293.12497 9083.5194
|
||||
240 240 291.92847 9659.3388
|
||||
250 250 299.2202 6328.759
|
||||
260 260 297.45209 10405.677
|
||||
270 270 292.12257 7273.9369
|
||||
280 280 289.81113 8957.8747
|
||||
290 290 299.06683 6695.3776
|
||||
300 300 300.75468 6298.5705
|
||||
310 310 296.26524 7432.4815
|
||||
320 320 294.21403 9941.7038
|
||||
330 330 293.01776 4750.2993
|
||||
340 340 295.22553 4968.3595
|
||||
350 350 293.95589 9224.5496
|
||||
360 360 297.94278 8792.0395
|
||||
370 370 298.99075 5453.7814
|
||||
380 380 302.1188 6229.2283
|
||||
390 390 298.48943 8517.5273
|
||||
400 400 295.3701 11328.394
|
||||
410 410 287.74238 4058.0382
|
||||
420 420 288.83732 5706.6773
|
||||
430 430 298.8242 6178.7142
|
||||
440 440 304.42682 10138.321
|
||||
450 450 300.28695 9731.3417
|
||||
460 460 300.34539 9249.4691
|
||||
470 470 303.32231 11638.718
|
||||
480 480 301.46777 4186.402
|
||||
490 490 292.56069 9184.8386
|
||||
500 500 297.26162 11766.733
|
||||
510 510 295.34018 6436.33
|
||||
520 520 300.16314 9325.3669
|
||||
530 530 305.00513 5947.6408
|
||||
540 540 300.88805 5222.7384
|
||||
550 550 301.56707 6669.1808
|
||||
560 560 304.89854 10730.053
|
||||
570 570 299.50424 7956.1042
|
||||
580 580 301.23382 10192.246
|
||||
590 590 298.81222 6017.2125
|
||||
600 600 300.57891 4575.433
|
||||
610 610 301.95936 6309.7515
|
||||
620 620 301.09393 5993.6489
|
||||
630 630 300.47565 4388.7137
|
||||
640 640 299.31886 9535.6093
|
||||
650 650 295.06025 7954.5811
|
||||
660 660 298.72666 8630.7466
|
||||
670 670 302.53833 5636.1305
|
||||
680 680 306.32833 12539.149
|
||||
690 690 296.1951 11345.293
|
||||
700 700 297.00325 6352.1448
|
||||
710 710 298.51181 6922.4379
|
||||
720 720 293.80125 4849.4922
|
||||
730 730 296.52677 11141.583
|
||||
740 740 294.15306 3527.8677
|
||||
750 750 294.74737 8454.0815
|
||||
760 760 292.53913 8187.9032
|
||||
770 770 294.37078 7487.5703
|
||||
780 780 297.50085 9198.7697
|
||||
790 790 298.37773 8969.0024
|
||||
800 800 293.29879 6506.6479
|
||||
810 810 296.58266 8805.7872
|
||||
820 820 290.85616 5248.8123
|
||||
830 830 292.29488 5123.8203
|
||||
840 840 292.77623 8263.5675
|
||||
850 850 297.88225 6777.7444
|
||||
860 860 300.01913 10439.087
|
||||
870 870 295.79578 7318.1322
|
||||
880 880 301.5994 8242.4774
|
||||
890 890 306.63208 8090.6106
|
||||
900 900 303.53759 6831.2666
|
||||
910 910 300.70481 3811.0498
|
||||
920 920 299.96274 8351.1573
|
||||
930 930 299.67435 7046.0534
|
||||
940 940 310.81742 6887.6925
|
||||
950 950 305.09984 4811.088
|
||||
960 960 301.33039 4184.851
|
||||
970 970 301.19205 6417.6542
|
||||
980 980 299.6491 7738.2233
|
||||
990 990 297.33655 9264.0874
|
||||
1000 1000 302.33418 7166.2751
|
||||
1010 1010 300.08402 9121.0882
|
||||
1020 1020 302.82225 6405.7109
|
||||
1030 1030 304.01683 6944.0839
|
||||
1040 1040 305.82618 6160.3838
|
||||
1050 1050 308.12518 4356.0931
|
||||
1060 1060 307.64811 6954.7245
|
||||
1070 1070 313.70509 5558.9804
|
||||
1080 1080 316.09239 7250.6147
|
||||
1090 1090 310.2845 5441.3722
|
||||
1100 1100 300.18899 4417.8774
|
||||
1110 1110 304.02471 5609.1668
|
||||
1120 1120 303.46016 10355.031
|
||||
1130 1130 305.68165 6400.913
|
||||
1140 1140 308.78348 7235.1894
|
||||
1150 1150 299.30025 9246.4856
|
||||
1160 1160 302.70799 9866.9536
|
||||
1170 1170 302.0977 8643.5532
|
||||
1180 1180 307.15407 8866.4664
|
||||
1190 1190 305.78146 7562.4911
|
||||
1200 1200 302.54605 7974.9973
|
||||
1210 1210 306.14264 9554.2381
|
||||
1220 1220 308.89843 6219.5361
|
||||
1230 1230 305.71844 7633.9105
|
||||
1240 1240 306.51911 7705.4795
|
||||
1250 1250 304.78473 8590.5595
|
||||
1260 1260 300.82969 9281.5964
|
||||
1270 1270 305.9271 4951.1323
|
||||
1280 1280 310.32728 9446.3989
|
||||
1290 1290 318.27879 9102.5544
|
||||
1300 1300 310.45777 5931.5457
|
||||
1310 1310 304.81268 1214.4291
|
||||
1320 1320 307.08811 10315.961
|
||||
1330 1330 306.86917 8584.9658
|
||||
1340 1340 307.26912 7254.864
|
||||
1350 1350 310.02754 8508.6256
|
||||
1360 1360 306.12763 4912.6641
|
||||
1370 1370 301.67924 6715.8196
|
||||
1380 1380 298.37239 6149.8821
|
||||
1390 1390 299.62894 8181.4761
|
||||
1400 1400 301.60395 6714.4244
|
||||
1410 1410 297.65752 7035.6575
|
||||
1420 1420 297.02817 7510.2637
|
||||
1430 1430 303.59177 10361.937
|
||||
1440 1440 300.10771 8473.2311
|
||||
1450 1450 291.21837 6097.9954
|
||||
1460 1460 291.58663 7729.0841
|
||||
1470 1470 292.52447 6555.8661
|
||||
1480 1480 294.48264 6960.0201
|
||||
1490 1490 298.34869 8044.2321
|
||||
1500 1500 296.8193 11731.289
|
||||
1510 1510 296.52073 5452.8935
|
||||
1520 1520 294.54819 9591.7969
|
||||
1530 1530 297.36394 5148.5383
|
||||
1540 1540 289.08137 6057.0981
|
||||
1550 1550 288.27007 8965.1965
|
||||
1560 1560 294.84398 8316.9487
|
||||
1570 1570 299.79573 8760.7322
|
||||
1580 1580 295.66745 5045.5322
|
||||
1590 1590 298.14356 7161.1834
|
||||
1600 1600 297.10402 6529.9938
|
||||
1610 1610 299.69137 7741.6027
|
||||
1620 1620 304.93043 11222.109
|
||||
1630 1630 302.01322 10893.107
|
||||
1640 1640 295.47422 8400.3124
|
||||
1650 1650 301.93122 7190.2609
|
||||
1660 1660 305.02639 6140.5552
|
||||
1670 1670 302.86047 8651.5366
|
||||
1680 1680 304.82151 9909.407
|
||||
1690 1690 300.48426 8428.8845
|
||||
1700 1700 293.06643 5333.8144
|
||||
1710 1710 295.43687 9103.4353
|
||||
1720 1720 298.77208 8162.1053
|
||||
1730 1730 300.08189 9603.4371
|
||||
1740 1740 303.16004 10693.291
|
||||
1750 1750 303.54199 9151.023
|
||||
1760 1760 300.99281 4641.2985
|
||||
1770 1770 297.36657 3888.5753
|
||||
1780 1780 298.32969 7286.2299
|
||||
1790 1790 297.34183 8975.8956
|
||||
1800 1800 295.83042 6366.7607
|
||||
1810 1810 295.92044 9308.4953
|
||||
1820 1820 298.10087 7117.2369
|
||||
1830 1830 296.13936 4849.3739
|
||||
1840 1840 296.5869 8321.4011
|
||||
1850 1850 296.74513 9530.6806
|
||||
1860 1860 298.57398 8788.0603
|
||||
1870 1870 299.12825 6015.4777
|
||||
1880 1880 301.91639 11706.441
|
||||
1890 1890 309.85968 10909.493
|
||||
1900 1900 302.64998 8779.8967
|
||||
1910 1910 301.62919 9176.3902
|
||||
1920 1920 300.66238 5369.8681
|
||||
1930 1930 297.64499 8185.09
|
||||
1940 1940 296.47852 10188.803
|
||||
1950 1950 297.802 6679.4466
|
||||
1960 1960 299.78754 7316.8198
|
||||
1970 1970 300.09083 6008.9414
|
||||
1980 1980 297.94119 5615.6403
|
||||
1990 1990 298.37687 9727.308
|
||||
2000 2000 296.08394 6400.2746
|
||||
Loop time of 41.5171 on 4 procs for 2000 steps with 2180 atoms
|
||||
|
||||
Performance: 4.162 ns/day, 5.766 hours/ns, 48.173 timesteps/s
|
||||
99.5% CPU use with 4 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 38.667 | 38.954 | 39.453 | 4.8 | 93.83
|
||||
Neigh | 0.10947 | 0.11039 | 0.11153 | 0.3 | 0.27
|
||||
Comm | 1.8661 | 2.3644 | 2.652 | 19.6 | 5.70
|
||||
Output | 0.0082644 | 0.0094232 | 0.01281 | 2.0 | 0.02
|
||||
Modify | 0.024678 | 0.025206 | 0.025888 | 0.3 | 0.06
|
||||
Other | | 0.05335 | | | 0.13
|
||||
|
||||
Nlocal: 545.000 ave 559 max 531 min
|
||||
Histogram: 1 0 0 0 1 1 0 0 0 1
|
||||
Nghost: 3619.00 ave 3655 max 3594 min
|
||||
Histogram: 1 1 0 0 1 0 0 0 0 1
|
||||
Neighs: 65415.5 ave 66835 max 64310 min
|
||||
Histogram: 1 0 0 2 0 0 0 0 0 1
|
||||
|
||||
Total # of neighbors = 261662
|
||||
Ave neighs/atom = 120.02844
|
||||
Neighbor list builds = 26
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:41
|
||||
@ -0,0 +1,106 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Coarse-Grained SPC/E Water
|
||||
|
||||
variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (40.31 40.31 40.31)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
2180 atoms
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat ${T} ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat 300 ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat 300 300 ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat 300 300 9 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA 9
|
||||
WARNING: 16 of 351 force values in table VOTCA are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 ${rcD}
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 10
|
||||
|
||||
timestep 1.0
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 300 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 1000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 7 7 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair dpd/ext/tstat, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.38 | 5.38 | 5.38 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 300 7353.4129
|
||||
100 100 303.74025 4964.013
|
||||
200 200 298.35396 8007.7802
|
||||
300 300 298.28547 6291.5807
|
||||
400 400 298.01797 6252.1041
|
||||
500 500 299.88984 3489.931
|
||||
600 600 302.5718 9092.203
|
||||
700 700 305.38722 5909.02
|
||||
800 800 294.81401 10282.286
|
||||
900 900 292.40724 8338.6878
|
||||
1000 1000 293.64788 6951.569
|
||||
Loop time of 28.1058 on 1 procs for 1000 steps with 2180 atoms
|
||||
|
||||
Performance: 3.074 ns/day, 7.807 hours/ns, 35.580 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 27.948 | 27.948 | 27.948 | 0.0 | 99.44
|
||||
Neigh | 0.071647 | 0.071647 | 0.071647 | 0.0 | 0.25
|
||||
Comm | 0.058215 | 0.058215 | 0.058215 | 0.0 | 0.21
|
||||
Output | 0.00026724 | 0.00026724 | 0.00026724 | 0.0 | 0.00
|
||||
Modify | 0.014429 | 0.014429 | 0.014429 | 0.0 | 0.05
|
||||
Other | | 0.01283 | | | 0.05
|
||||
|
||||
Nlocal: 2180 ave 2180 max 2180 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 6643 ave 6643 max 6643 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 261826 ave 261826 max 261826 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 261826
|
||||
Ave neighs/atom = 120.10367
|
||||
Neighbor list builds = 12
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:28
|
||||
@ -0,0 +1,106 @@
|
||||
LAMMPS (24 Mar 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# Coarse-Grained SPC/E Water
|
||||
|
||||
variable T equal 300.0
|
||||
variable rc equal 9.0
|
||||
variable rcD equal 10.0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
dimension 3
|
||||
newton on
|
||||
comm_modify vel yes
|
||||
|
||||
read_data cg_spce.data
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (40.31 40.31 40.31)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
2180 atoms
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat ${T} ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat 300 ${T} ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat 300 300 ${rc} 385262
|
||||
pair_style hybrid/overlay table spline 1000 dpd/ext/tstat 300 300 9 385262
|
||||
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA ${rc}
|
||||
pair_coeff 1 1 table cg_spce_table.pot VOTCA 9
|
||||
WARNING: 16 of 351 force values in table VOTCA are inconsistent with -dE/dr.
|
||||
WARNING: Should only be flagged at inflection points (src/pair_table.cpp:465)
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 ${rcD}
|
||||
pair_coeff 1 1 dpd/ext/tstat 20.0 10.0 0.5 0.5 10
|
||||
|
||||
timestep 1.0
|
||||
run_style verlet
|
||||
|
||||
velocity all create ${T} 68768932
|
||||
velocity all create 300 68768932
|
||||
|
||||
thermo_style custom step time temp press
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
|
||||
run 1000
|
||||
generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 12
|
||||
ghost atom cutoff = 12
|
||||
binsize = 6, bins = 7 7 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair table, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
(2) pair dpd/ext/tstat, perpetual, copy from (1)
|
||||
attributes: half, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.695 | 3.696 | 3.697 Mbytes
|
||||
Step Time Temp Press
|
||||
0 0 300 5950.2338
|
||||
100 100 301.15012 9090.2244
|
||||
200 200 301.28795 10589.557
|
||||
300 300 293.61974 5971.7781
|
||||
400 400 310.4217 8198.7972
|
||||
500 500 299.89888 9140.3132
|
||||
600 600 305.56607 7783.4481
|
||||
700 700 295.99415 6276.9444
|
||||
800 800 296.50051 5058.1115
|
||||
900 900 288.68499 8637.0269
|
||||
1000 1000 291.17292 6516.4192
|
||||
Loop time of 7.57429 on 4 procs for 1000 steps with 2180 atoms
|
||||
|
||||
Performance: 11.407 ns/day, 2.104 hours/ns, 132.026 timesteps/s
|
||||
99.8% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 7.2745 | 7.3674 | 7.4316 | 2.1 | 97.27
|
||||
Neigh | 0.01863 | 0.018866 | 0.019429 | 0.2 | 0.25
|
||||
Comm | 0.1123 | 0.17708 | 0.27025 | 13.8 | 2.34
|
||||
Output | 0.00019274 | 0.00021224 | 0.00026504 | 0.0 | 0.00
|
||||
Modify | 0.0041691 | 0.0042729 | 0.0043136 | 0.1 | 0.06
|
||||
Other | | 0.006464 | | | 0.09
|
||||
|
||||
Nlocal: 545 ave 552 max 531 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 2 1
|
||||
Nghost: 3620.5 ave 3656 max 3584 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
Neighs: 65419 ave 66338 max 64104 min
|
||||
Histogram: 1 0 0 0 1 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 261676
|
||||
Ave neighs/atom = 120.03486
|
||||
Neighbor list builds = 12
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:07
|
||||
@ -23,3 +23,5 @@ to the final states.
|
||||
|
||||
* `quicktests` -- very short runs with charged Lennard-Jones atoms to test
|
||||
*compute fep*, *fix adapt/fep* and *pair lj/cut/coul/long/soft*.
|
||||
|
||||
* `ta` -- surface tension of SPCE water without constraints. Test-area method.
|
||||
|
||||
6174
examples/PACKAGES/fep/ta/data.spce
Normal file
6174
examples/PACKAGES/fep/ta/data.spce
Normal file
File diff suppressed because it is too large
Load Diff
49
examples/PACKAGES/fep/ta/in.spce.lmp
Normal file
49
examples/PACKAGES/fep/ta/in.spce.lmp
Normal file
@ -0,0 +1,49 @@
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
|
||||
atom_style full
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
|
||||
special_bonds lj/coul 0.0 0.0 0.5
|
||||
|
||||
pair_style lj/cut/coul/long 12.0 12.0
|
||||
pair_modify tail no
|
||||
kspace_style pppm 1.0e-5
|
||||
|
||||
read_data data.spce # 8x8x16 SPCE molecules in a 30x30x100 box
|
||||
|
||||
bond_coeff 1 517.630258 1.0
|
||||
angle_coeff 1 37.950526 109.47
|
||||
pair_coeff 1 1 0.1553 3.166 # O O
|
||||
pair_coeff 1 2 0.0 1.0 # O H
|
||||
pair_coeff 2 2 0.0 1.0 # H H
|
||||
|
||||
# don't use fix shake with compute fep/ta
|
||||
# fix SHAKE all shake 0.0001 20 0 b 1
|
||||
|
||||
neighbor 2.0 bin
|
||||
# neigh_modify delay 0 every 1 check yes
|
||||
|
||||
timestep 1.0
|
||||
|
||||
variable TK equal 300.0
|
||||
compute TA all fep/ta ${TK} xy 1.0005
|
||||
|
||||
velocity all create ${TK} 12345
|
||||
|
||||
thermo_style custom step temp press etotal pe c_TA[*]
|
||||
thermo 5000
|
||||
|
||||
fix NVT all nvt temp ${TK} ${TK} 100
|
||||
run 300000
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
variable gamma_v equal 100*(pzz-0.5*(pxx+pyy))/2/100 # surface tension via the mechanical route
|
||||
|
||||
fix FEP all ave/time 100 1000 100000 c_TA[*] v_gamma_v ave running file spce.fep.ta
|
||||
|
||||
run 2000000
|
||||
|
||||
689
examples/PACKAGES/fep/ta/log.spce
Normal file
689
examples/PACKAGES/fep/ta/log.spce
Normal file
@ -0,0 +1,689 @@
|
||||
LAMMPS (17 Feb 2022)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
package gpu 0
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
|
||||
atom_style full
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
|
||||
special_bonds lj/coul 0.0 0.0 0.5
|
||||
|
||||
pair_style lj/cut/coul/long 12.0 12.0
|
||||
pair_modify tail no
|
||||
kspace_style pppm 1.0e-5
|
||||
|
||||
read_data data.spce # 8x8x16 SPCE molecules in a 30x30x100 box
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (30 30 100)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
3072 atoms
|
||||
scanning bonds ...
|
||||
2 = max bonds/atom
|
||||
scanning angles ...
|
||||
1 = max angles/atom
|
||||
reading bonds ...
|
||||
2048 bonds
|
||||
reading angles ...
|
||||
1024 angles
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0 0 0.5
|
||||
special bond factors coul: 0 0 0.5
|
||||
2 = max # of 1-2 neighbors
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
2 = max # of special neighbors
|
||||
special bonds CPU = 0.001 seconds
|
||||
read_data CPU = 0.006 seconds
|
||||
|
||||
bond_coeff 1 517.630258 1.0
|
||||
angle_coeff 1 37.950526 109.47
|
||||
pair_coeff 1 1 0.1553 3.166 # O O
|
||||
pair_coeff 1 2 0.0 1.0 # O H
|
||||
pair_coeff 2 2 0.0 1.0 # H H
|
||||
|
||||
# don't use fix shake with compute fep/ta
|
||||
# fix SHAKE all shake 0.0001 20 0 b 1
|
||||
|
||||
neighbor 2.0 bin
|
||||
# neigh_modify delay 0 every 1 check yes
|
||||
|
||||
timestep 1.0
|
||||
|
||||
variable TK equal 300.0
|
||||
compute TA all fep/ta ${TK} xy 1.0005
|
||||
compute TA all fep/ta 300 xy 1.0005
|
||||
|
||||
velocity all create ${TK} 12345
|
||||
velocity all create 300 12345
|
||||
|
||||
thermo_style custom step temp press etotal pe c_TA[*]
|
||||
thermo 5000
|
||||
|
||||
fix NVT all nvt temp ${TK} ${TK} 100
|
||||
fix NVT all nvt temp 300 ${TK} 100
|
||||
fix NVT all nvt temp 300 300 100
|
||||
run 300000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- GPU package (short-range, long-range and three-body potentials):
|
||||
|
||||
@Article{Brown11,
|
||||
author = {W. M. Brown, P. Wang, S. J. Plimpton, A. N. Tharrington},
|
||||
title = {Implementing Molecular Dynamics on Hybrid High Performance Computers - Short Range Forces},
|
||||
journal = {Comp.~Phys.~Comm.},
|
||||
year = 2011,
|
||||
volume = 182,
|
||||
pages = {898--911}
|
||||
}
|
||||
|
||||
@Article{Brown12,
|
||||
author = {W. M. Brown, A. Kohlmeyer, S. J. Plimpton, A. N. Tharrington},
|
||||
title = {Implementing Molecular Dynamics on Hybrid High Performance Computers - Particle-Particle Particle-Mesh},
|
||||
journal = {Comp.~Phys.~Comm.},
|
||||
year = 2012,
|
||||
volume = 183,
|
||||
pages = {449--459}
|
||||
}
|
||||
|
||||
@Article{Brown13,
|
||||
author = {W. M. Brown, Y. Masako},
|
||||
title = {Implementing Molecular Dynamics on Hybrid High Performance Computers – Three-Body Potentials},
|
||||
journal = {Comp.~Phys.~Comm.},
|
||||
year = 2013,
|
||||
volume = 184,
|
||||
pages = {2785--2793}
|
||||
}
|
||||
|
||||
@Article{Trung15,
|
||||
author = {T. D. Nguyen, S. J. Plimpton},
|
||||
title = {Accelerating dissipative particle dynamics simulations for soft matter systems},
|
||||
journal = {Comput.~Mater.~Sci.},
|
||||
year = 2015,
|
||||
volume = 100,
|
||||
pages = {173--180}
|
||||
}
|
||||
|
||||
@Article{Trung17,
|
||||
author = {T. D. Nguyen},
|
||||
title = {GPU-accelerated Tersoff potentials for massively parallel Molecular Dynamics simulations},
|
||||
journal = {Comp.~Phys.~Comm.},
|
||||
year = 2017,
|
||||
volume = 212,
|
||||
pages = {113--122}
|
||||
}
|
||||
|
||||
@Article{Nikolskiy19,
|
||||
author = {V. Nikolskiy, V. Stegailov},
|
||||
title = {GPU acceleration of four-site water models in LAMMPS},
|
||||
journal = {Proceeding of the International Conference on Parallel Computing (ParCo 2019), Prague, Czech Republic},
|
||||
year = 2019
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
PPPM initialization ...
|
||||
using 12-bit tables for long-range coulomb (src/kspace.cpp:340)
|
||||
G vector (1/distance) = 0.24270009
|
||||
grid = 20 20 50
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.0037271514
|
||||
estimated relative force accuracy = 1.1224206e-05
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 40824 20000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
FEP/TA settings ...
|
||||
temperature = 300.000000
|
||||
scale factor = 1.000500
|
||||
tail no
|
||||
Per MPI rank memory allocation (min/avg/max) = 10.59 | 10.59 | 10.59 Mbytes
|
||||
Step Temp Press TotEng PotEng c_TA[1] c_TA[2] c_TA[3]
|
||||
0 300 5742.8831 8061.6965 5315.4762 -10.940045 93249708 0.45
|
||||
5000 301.43029 -118.64017 -7888.4723 -10647.786 -0.13617205 1.2566061 0.45
|
||||
10000 294.49018 -301.44062 -8063.3808 -10759.164 -0.14897537 1.2838851 0.45
|
||||
15000 294.36123 -407.07728 -8189.2912 -10883.894 0.34568257 0.55998421 0.45
|
||||
20000 300.95171 111.50248 -8104.1193 -10859.052 0.11293291 0.82742794 0.45
|
||||
25000 300.28473 388.00598 -8147.8655 -10896.692 0.11270184 0.82774872 0.45
|
||||
30000 306.62229 -113.93849 -8191.7529 -10998.594 0.26068823 0.6457922 0.45
|
||||
35000 303.66349 -426.81556 -8269.8364 -11049.593 0.78191631 0.26939311 0.45
|
||||
40000 291.70214 -50.50854 -8368.0775 -11038.339 0.20120788 0.71354814 0.45
|
||||
45000 299.74326 -289.18081 -8346.2716 -11090.142 0.4163404 0.49739645 0.45
|
||||
50000 300.53193 36.834691 -8367.5726 -11118.662 0.20517137 0.70881996 0.45
|
||||
55000 298.20207 -107.76906 -8274.386 -11004.148 0.7409946 0.2885342 0.45
|
||||
60000 298.32558 -65.20542 -8433.4884 -11164.381 0.16210976 0.76191344 0.45
|
||||
65000 297.3149 -102.87381 -8379.2515 -11100.892 0.21193701 0.70082127 0.45
|
||||
70000 300.78423 -463.75811 -8381.3317 -11134.731 0.32109349 0.58356406 0.45
|
||||
75000 299.53099 -53.264996 -8495.159 -11237.086 0.44828935 0.47144212 0.45
|
||||
80000 295.55879 -590.1244 -8432.3435 -11137.909 0.28788374 0.61699451 0.45
|
||||
85000 298.73289 -234.73297 -8473.8721 -11208.493 -0.11723275 1.2173128 0.45
|
||||
90000 307.02709 -264.9035 -8303.7625 -11114.309 -0.098959935 1.1805672 0.45
|
||||
95000 304.79112 199.8891 -8364.2553 -11154.334 0.036986735 0.93984396 0.45
|
||||
100000 295.49748 -743.18974 -8453.8066 -11158.811 0.249981 0.65749559 0.45
|
||||
105000 303.11352 -163.70166 -8324.4846 -11099.206 -0.012286442 1.0208231 0.45
|
||||
110000 294.30278 -33.731015 -8512.8168 -11206.884 -0.0129379 1.0219392 0.45
|
||||
115000 293.65421 393.24871 -8481.1933 -11169.324 0.75255277 0.28299408 0.45
|
||||
120000 300.56448 16.832298 -8507.3819 -11258.769 0.13389897 0.79883437 0.45
|
||||
125000 297.92506 -398.77893 -8576.4403 -11303.666 0.07292658 0.88485917 0.45
|
||||
130000 303.007 -589.11865 -8560.7259 -11334.472 0.42876446 0.48713794 0.45
|
||||
135000 310.82674 -203.4991 -8565.3181 -11410.647 0.075268046 0.88139064 0.45
|
||||
140000 303.68345 -710.20709 -8570.895 -11350.834 -0.1023741 1.1873476 0.45
|
||||
145000 293.86825 129.05781 -8457.0747 -11147.165 0.39475138 0.51573896 0.45
|
||||
150000 296.93136 -734.03863 -8577.2763 -11295.406 0.73600373 0.29095985 0.45
|
||||
155000 296.67522 -290.20206 -8631.0579 -11346.843 -0.30049664 1.6554154 0.45
|
||||
160000 301.5685 -656.03394 -8646.3196 -11406.898 0.08494101 0.86720512 0.45
|
||||
165000 295.8808 342.45206 -8602.0309 -11310.544 -0.30873864 1.6784606 0.45
|
||||
170000 303.33048 -64.144957 -8580.8446 -11357.552 0.13622456 0.79572423 0.45
|
||||
175000 300.75245 -908.44969 -8566.8005 -11319.909 0.15795135 0.76724659 0.45
|
||||
180000 301.34603 -350.00512 -8489.0111 -11247.553 0.21089487 0.70204744 0.45
|
||||
185000 305.96254 62.840515 -8458.0542 -11258.856 -0.050029338 1.0875408 0.45
|
||||
190000 300.14392 256.935 -8684.6591 -11432.197 0.40144188 0.50998337 0.45
|
||||
195000 299.32366 -218.70113 -8505.3328 -11245.362 -0.19428451 1.3852659 0.45
|
||||
200000 307.89424 -569.89954 -8615.1541 -11433.639 0.55121888 0.39668508 0.45
|
||||
205000 299.34873 334.69765 -8657.6353 -11397.894 0.17751997 0.74247109 0.45
|
||||
210000 298.54619 -261.12193 -8601.2439 -11334.156 0.74219016 0.28795615 0.45
|
||||
215000 304.02395 -306.81112 -8531.9913 -11315.047 0.86987192 0.23244073 0.45
|
||||
220000 299.95916 278.60921 -8682.394 -11428.24 -0.26474202 1.559051 0.45
|
||||
225000 302.839 -226.36906 -8515.0815 -11287.29 0.060381353 0.90367684 0.45
|
||||
230000 299.54085 240.08589 -8636.8991 -11378.916 -0.46699438 2.1887589 0.45
|
||||
235000 297.62792 -138.20813 -8627.0888 -11351.595 -0.035013312 1.0604901 0.45
|
||||
240000 299.15558 442.88999 -8749.2731 -11487.763 0.14696819 0.78151268 0.45
|
||||
245000 291.76323 174.70322 -8597.8808 -11268.701 -0.3979188 1.9492946 0.45
|
||||
250000 308.21961 37.282506 -8603.7127 -11425.176 0.021882894 0.96395922 0.45
|
||||
255000 307.18484 -493.77408 -8459.5942 -11271.585 0.16914044 0.75298079 0.45
|
||||
260000 294.17364 -238.05366 -8677.8379 -11370.723 -0.35710078 1.8202968 0.45
|
||||
265000 289.14461 -304.12454 -8727.2613 -11374.111 0.18045129 0.73882932 0.45
|
||||
270000 301.51228 -255.75558 -8640.9577 -11401.022 0.49252861 0.43772444 0.45
|
||||
275000 294.98349 -351.00974 -8678.3965 -11378.695 -0.31576914 1.6983718 0.45
|
||||
280000 294.37376 279.87325 -8668.9575 -11363.675 0.26328091 0.64298978 0.45
|
||||
285000 295.68351 249.3086 -8748.533 -11455.24 0.6820904 0.31849899 0.45
|
||||
290000 298.74266 -749.43024 -8583.8679 -11318.578 0.030414997 0.95026156 0.45
|
||||
295000 292.67215 -573.39647 -8713.3223 -11392.463 0.25656615 0.65027291 0.45
|
||||
300000 302.48853 186.71329 -8655.8918 -11424.892 0.20319721 0.71117107 0.45
|
||||
Loop time of 706.805 on 1 procs for 300000 steps with 3072 atoms
|
||||
|
||||
Performance: 36.672 ns/day, 0.654 hours/ns, 424.445 timesteps/s
|
||||
95.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 | 149.88 | 149.88 | 149.88 | 0.0 | 21.21
|
||||
Bond | 17.824 | 17.824 | 17.824 | 0.0 | 2.52
|
||||
Kspace | 517.46 | 517.46 | 517.46 | 0.0 | 73.21
|
||||
Neigh | 1.3789 | 1.3789 | 1.3789 | 0.0 | 0.20
|
||||
Comm | 9.412 | 9.412 | 9.412 | 0.0 | 1.33
|
||||
Output | 0.092 | 0.092 | 0.092 | 0.0 | 0.01
|
||||
Modify | 8.3026 | 8.3026 | 8.3026 | 0.0 | 1.17
|
||||
Other | | 2.458 | | | 0.35
|
||||
|
||||
Nlocal: 3072 ave 3072 max 3072 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 8370 ave 8370 max 8370 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = -1
|
||||
Ave neighs/atom = -0.00032552083
|
||||
Ave special neighs/atom = 2
|
||||
Neighbor list builds = 14698
|
||||
Dangerous builds = 21
|
||||
|
||||
reset_timestep 0
|
||||
|
||||
variable gamma_v equal 100*(pzz-0.5*(pxx+pyy))/2/100 # surface tension via the mechanical route
|
||||
|
||||
fix FEP all ave/time 100 1000 100000 c_TA[*] v_gamma_v ave running file spce.fep.ta
|
||||
|
||||
run 2000000
|
||||
PPPM initialization ...
|
||||
using 12-bit tables for long-range coulomb (src/kspace.cpp:340)
|
||||
G vector (1/distance) = 0.24270009
|
||||
grid = 20 20 50
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.0037271514
|
||||
estimated relative force accuracy = 1.1224206e-05
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 40824 20000
|
||||
generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||
Per MPI rank memory allocation (min/avg/max) = 10.61 | 10.61 | 10.61 Mbytes
|
||||
Step Temp Press TotEng PotEng c_TA[1] c_TA[2] c_TA[3]
|
||||
0 302.48853 186.71327 -8655.8918 -11424.892 0.20325452 0.71110271 0.45
|
||||
5000 296.71986 -573.544 -8510.0832 -11226.277 0.43636365 0.48096787 0.45
|
||||
10000 302.58189 314.36295 -8636.8139 -11406.669 0.005932853 0.99009761 0.45
|
||||
15000 296.98096 -950.66627 -8635.9066 -11354.49 0.48058674 0.44658101 0.45
|
||||
20000 297.11923 -474.65836 -8666.9864 -11386.836 0.27933535 0.62590536 0.45
|
||||
25000 302.26474 -621.83271 -8655.4227 -11422.375 0.01931686 0.96811729 0.45
|
||||
30000 300.37645 -358.95128 -8568.7732 -11318.44 0.25415456 0.65290873 0.45
|
||||
35000 296.5436 179.71411 -8665.0335 -11379.614 0.1911473 0.72569185 0.45
|
||||
40000 300.79459 92.193193 -8617.7807 -11371.275 0.27587113 0.629553 0.45
|
||||
45000 298.87827 220.06674 -8695.83 -11431.782 0.28715816 0.61774591 0.45
|
||||
50000 304.4095 -375.31266 -8614.4396 -11401.025 -0.18683272 1.3680584 0.45
|
||||
55000 305.11287 128.51602 -8559.8245 -11352.848 0.24122754 0.66722084 0.45
|
||||
60000 296.56241 302.30371 -8725.6357 -11440.388 -0.27104279 1.5756158 0.45
|
||||
65000 295.78468 -393.18931 -8716.4616 -11424.095 0.39132466 0.51871194 0.45
|
||||
70000 297.67504 155.75977 -8641.2451 -11366.182 0.031194864 0.94901929 0.45
|
||||
75000 298.81381 -207.51201 -8622.9859 -11358.348 -0.11330086 1.2093106 0.45
|
||||
80000 296.17928 -360.65589 -8679.0048 -11390.25 0.68794433 0.31538684 0.45
|
||||
85000 303.90294 488.01134 -8643.2028 -11425.151 0.41330713 0.49993365 0.45
|
||||
90000 296.49425 14.901201 -8636.0539 -11350.182 -0.21538319 1.4351695 0.45
|
||||
95000 308.63505 137.10659 -8570.395 -11395.661 0.51407684 0.42218544 0.45
|
||||
100000 302.56638 -402.80803 -8635.0157 -11404.729 0.1552006 0.77079493 0.45
|
||||
105000 293.79289 -417.74599 -8626.2538 -11315.654 -0.13491963 1.253969 0.45
|
||||
110000 293.52504 -808.94658 -8684.9259 -11371.874 0.20573374 0.70815164 0.45
|
||||
115000 307.6821 132.78071 -8639.817 -11456.36 -0.67060193 3.0798018 0.45
|
||||
120000 303.22974 121.87128 -8714.7295 -11490.515 0.3675961 0.5397742 0.45
|
||||
125000 303.8202 -34.518279 -8625.1384 -11406.329 0.17151619 0.74998608 0.45
|
||||
130000 294.5718 -508.86133 -8684.9608 -11381.491 0.23323323 0.67622827 0.45
|
||||
135000 302.79866 -445.99091 -8627.6163 -11399.456 0.3300839 0.57482965 0.45
|
||||
140000 297.84052 -78.442467 -8621.5234 -11347.976 0.39157424 0.51849484 0.45
|
||||
145000 303.64247 463.89678 -8673.8591 -11453.423 0.39692857 0.51385891 0.45
|
||||
150000 288.38239 28.567607 -8789.6464 -11429.518 -0.045509865 1.0793274 0.45
|
||||
155000 296.02581 -111.35664 -8674.295 -11384.135 0.23313764 0.67633671 0.45
|
||||
160000 307.72004 -410.73956 -8578.8169 -11395.707 0.28485416 0.62013794 0.45
|
||||
165000 300.42279 -483.56039 -8598.0354 -11348.126 0.38342507 0.52563101 0.45
|
||||
170000 302.51326 -150.99512 -8626.2426 -11395.469 0.2439355 0.66419697 0.45
|
||||
175000 295.41161 -554.9058 -8760.0201 -11464.238 0.38186652 0.52700696 0.45
|
||||
180000 296.21987 -194.97724 -8645.4143 -11357.031 0.098453456 0.84777037 0.45
|
||||
185000 296.52352 -186.85833 -8690.0538 -11404.45 0.6348999 0.34473516 0.45
|
||||
190000 304.72799 -60.2868 -8667.2005 -11456.701 0.1885985 0.72880108 0.45
|
||||
195000 306.65221 -871.17267 -8679.3434 -11486.458 0.56138735 0.38997638 0.45
|
||||
200000 301.07509 362.96369 -8616.9867 -11373.048 -0.53126323 2.4379049 0.45
|
||||
205000 303.65587 -216.8767 -8564.3182 -11344.005 0.11046546 0.83085967 0.45
|
||||
210000 296.20891 -474.08356 -8698.3778 -11409.894 -0.11237476 1.2074335 0.45
|
||||
215000 295.37276 422.46284 -8714.4636 -11418.326 0.042757549 0.93079022 0.45
|
||||
220000 301.20663 -202.20616 -8577.1827 -11334.449 0.30387837 0.60066105 0.45
|
||||
225000 306.20481 -90.566175 -8503.5134 -11306.533 0.29188403 0.6128683 0.45
|
||||
230000 303.54253 -24.255163 -8641.8724 -11420.521 -0.38522168 1.9082173 0.45
|
||||
235000 300.29265 -572.08074 -8664.2779 -11413.177 0.48055356 0.44660587 0.45
|
||||
240000 302.90712 -226.88617 -8636.6962 -11409.528 -0.15295452 1.2924832 0.45
|
||||
245000 305.05222 -68.241521 -8591.0885 -11383.557 -0.19850824 1.3951152 0.45
|
||||
250000 300.27784 -46.680162 -8746.7288 -11495.492 -0.0098493376 1.0166585 0.45
|
||||
255000 308.23091 -424.64171 -8573.7405 -11395.307 0.1366107 0.79520901 0.45
|
||||
260000 296.11619 4.6901264 -8742.1916 -11452.859 -0.12450429 1.2322516 0.45
|
||||
265000 301.62359 134.42152 -8565.5323 -11326.615 -0.028534957 1.0490284 0.45
|
||||
270000 306.71999 -62.484213 -8690.7983 -11498.534 0.28432443 0.62068922 0.45
|
||||
275000 292.91982 532.15442 -8779.2684 -11460.676 -0.40898808 1.9858264 0.45
|
||||
280000 306.88024 -339.05165 -8557.2761 -11366.479 0.12573772 0.80984534 0.45
|
||||
285000 303.38798 617.66326 -8630.5787 -11407.813 -0.1310487 1.2458532 0.45
|
||||
290000 299.66094 302.90333 -8692.267 -11435.383 0.65063395 0.33575584 0.45
|
||||
295000 304.49009 656.72392 -8710.7918 -11498.115 -0.16849302 1.3266137 0.45
|
||||
300000 303.80861 -221.66912 -8688.9465 -11470.031 -0.24985266 1.5205954 0.45
|
||||
305000 300.67136 -498.92059 -8669.6648 -11422.031 0.19219443 0.72441833 0.45
|
||||
310000 305.7021 -521.59218 -8505.6751 -11304.093 0.52013748 0.4179152 0.45
|
||||
315000 302.66313 -359.25677 -8682.4925 -11453.091 -0.26135382 1.5502155 0.45
|
||||
320000 304.5646 441.04962 -8610.9569 -11398.962 0.41662005 0.49716319 0.45
|
||||
325000 300.04934 -142.59053 -8698.3246 -11444.997 -0.23029219 1.4715132 0.45
|
||||
330000 305.55522 -212.47771 -8576.3678 -11373.441 0.091594168 0.85758093 0.45
|
||||
335000 294.79439 -151.62761 -8762.4565 -11461.024 0.14345357 0.78613362 0.45
|
||||
340000 302.4373 463.41717 -8643.2588 -11411.79 0.36279978 0.54413438 0.45
|
||||
345000 295.91624 -272.3623 -8678.9725 -11387.81 0.1032874 0.84092407 0.45
|
||||
350000 300.60829 62.418773 -8633.2343 -11385.023 -0.040578988 1.0704371 0.45
|
||||
355000 301.41802 -860.82496 -8573.5867 -11332.788 0.04947461 0.9203617 0.45
|
||||
360000 298.03103 -265.05516 -8619.4232 -11347.619 -0.20903224 1.4199617 0.45
|
||||
365000 298.08727 -359.76277 -8612.4898 -11341.201 0.040109682 0.93493354 0.45
|
||||
370000 301.55162 -339.05976 -8687.3746 -11447.799 0.1705358 0.75122045 0.45
|
||||
375000 299.3933 -290.38029 -8723.9515 -11464.618 -0.1476 1.2809266 0.45
|
||||
380000 303.02442 -1104.7914 -8626.7252 -11400.631 0.3211992 0.58346059 0.45
|
||||
385000 301.49421 -613.53228 -8662.2479 -11422.146 -0.42642873 2.0447796 0.45
|
||||
390000 302.01134 -351.23257 -8662.4664 -11427.099 0.23747904 0.67142935 0.45
|
||||
395000 307.32962 -443.86959 -8624.8646 -11438.181 0.17359502 0.74737541 0.45
|
||||
400000 301.67955 -253.92045 -8690.6143 -11452.209 -0.43779134 2.0841261 0.45
|
||||
405000 302.60773 -97.544471 -8646.8281 -11416.92 0.071259831 0.88733652 0.45
|
||||
410000 302.48853 -630.99507 -8710.4497 -11479.45 0.28763517 0.61725182 0.45
|
||||
415000 296.46562 -443.33457 -8763.0661 -11476.932 0.088532948 0.86199583 0.45
|
||||
420000 295.37803 -70.515081 -8720.0027 -11423.913 0.06359365 0.89882065 0.45
|
||||
425000 299.31069 -48.284153 -8678.6115 -11418.522 0.063520704 0.89893064 0.45
|
||||
430000 296.37918 -651.48627 -8784.4246 -11497.5 -0.0094249768 1.0159351 0.45
|
||||
435000 303.07145 -284.10404 -8558.3149 -11332.651 0.034731239 0.94340646 0.45
|
||||
440000 293.1823 -280.18182 -8707.2432 -11391.054 0.14151034 0.78870025 0.45
|
||||
445000 305.55617 -286.4858 -8646.9315 -11444.013 0.26166889 0.64473078 0.45
|
||||
450000 300.67206 102.89156 -8705.2376 -11457.61 0.88202179 0.2277515 0.45
|
||||
455000 304.23258 9.5792632 -8571.8771 -11356.843 -0.42835558 2.0513992 0.45
|
||||
460000 292.30355 265.8009 -8707.4453 -11383.212 0.20592758 0.70792142 0.45
|
||||
465000 297.62746 193.66269 -8716.5132 -11441.015 0.36938368 0.53815813 0.45
|
||||
470000 292.53483 -75.549804 -8728.3188 -11406.202 0.49993961 0.43231669 0.45
|
||||
475000 296.10181 -202.26042 -8657.5804 -11368.116 -0.29829888 1.6493239 0.45
|
||||
480000 300.24953 249.20038 -8688.6705 -11437.175 0.4372485 0.48025452 0.45
|
||||
485000 296.41241 -73.46156 -8558.9344 -11272.314 -0.15947631 1.3067001 0.45
|
||||
490000 302.51379 -654.60188 -8571.28 -11340.512 0.36608136 0.54114742 0.45
|
||||
495000 300.50497 -127.55361 -8724.7069 -11475.55 0.029571506 0.95160701 0.45
|
||||
500000 303.60879 183.79306 -8568.3539 -11347.609 0.050255275 0.91915729 0.45
|
||||
505000 303.19721 -181.45226 -8614.403 -11389.891 0.32941264 0.57547725 0.45
|
||||
510000 296.74554 -22.844257 -8659.5977 -11376.026 0.017555998 0.97098101 0.45
|
||||
515000 304.94785 184.89151 -8657.5502 -11449.063 0.36892431 0.53857296 0.45
|
||||
520000 297.55996 -618.66865 -8737.5039 -11461.388 0.0057510291 0.99039963 0.45
|
||||
525000 301.79028 298.59479 -8629.0889 -11391.698 0.34316268 0.56235619 0.45
|
||||
530000 309.73127 127.43322 -8551.5448 -11386.846 0.76278829 0.27817682 0.45
|
||||
535000 296.10155 231.50902 -8700.9183 -11411.452 0.44398766 0.47485618 0.45
|
||||
540000 299.71005 -102.1096 -8655.905 -11399.471 0.76085637 0.27907974 0.45
|
||||
545000 300.14982 -206.19313 -8714.8486 -11462.44 0.22627441 0.68416793 0.45
|
||||
550000 294.79885 -643.7432 -8605.2486 -11303.857 -0.057557071 1.1013603 0.45
|
||||
555000 294.17638 -19.930168 -8726.0381 -11418.949 0.40954478 0.50309869 0.45
|
||||
560000 297.03199 -369.45853 -8470.404 -11189.455 -0.6540448 2.9954437 0.45
|
||||
565000 291.48707 -349.3956 -8714.1576 -11382.45 0.16175418 0.76236802 0.45
|
||||
570000 310.66906 -63.356318 -8637.4971 -11481.383 0.025729917 0.95775884 0.45
|
||||
575000 300.62447 -741.10788 -8620.5725 -11372.509 0.16003059 0.76457532 0.45
|
||||
580000 303.7169 -69.625554 -8649.3106 -11429.556 0.13011667 0.80391862 0.45
|
||||
585000 296.8583 22.033506 -8781.0388 -11498.5 0.05826221 0.9068948 0.45
|
||||
590000 295.12104 251.36802 -8661.2354 -11362.793 0.0042041083 0.99297285 0.45
|
||||
595000 291.91551 264.01646 -8784.286 -11456.5 -0.3176707 1.7037977 0.45
|
||||
600000 299.51751 -425.6209 -8680.4016 -11422.205 0.063170047 0.89945954 0.45
|
||||
605000 296.04489 -702.56187 -8648.8336 -11358.848 0.44150563 0.47683729 0.45
|
||||
610000 293.08062 387.21018 -8636.9022 -11319.782 0.430424 0.48578377 0.45
|
||||
615000 300.1062 -406.07366 -8651.5383 -11398.731 0.16393273 0.75958719 0.45
|
||||
620000 304.45492 -717.77411 -8466.6335 -11253.634 0.14754207 0.78076073 0.45
|
||||
625000 300.25467 394.44177 -8545.7468 -11294.298 -0.098814662 1.1802796 0.45
|
||||
630000 301.25687 315.97468 -8555.4413 -11313.167 -0.30209606 1.6598626 0.45
|
||||
635000 296.62552 -313.8236 -8661.4264 -11376.756 0.82351209 0.25123759 0.45
|
||||
640000 300.49659 458.65236 -8648.2545 -11399.021 -0.2575 1.5402266 0.45
|
||||
645000 299.08458 -40.905776 -8589.4621 -11327.303 0.07180479 0.88652576 0.45
|
||||
650000 299.78807 286.71966 -8663.8862 -11408.166 -0.10586303 1.1943167 0.45
|
||||
655000 300.2646 175.76273 -8685.9588 -11434.601 -0.4131303 1.9996722 0.45
|
||||
660000 296.01304 69.482635 -8722.0849 -11431.808 0.65234529 0.33479341 0.45
|
||||
665000 307.08179 -192.78965 -8554.9636 -11366.011 0.37228163 0.53554848 0.45
|
||||
670000 298.81489 46.512873 -8651.3386 -11386.71 -0.34071772 1.7709545 0.45
|
||||
675000 298.09695 -320.42123 -8744.4868 -11473.286 0.21787637 0.6938739 0.45
|
||||
680000 291.73582 -346.08326 -8809.3602 -11479.93 0.35114775 0.55487414 0.45
|
||||
685000 299.8583 -53.573198 -8742.9543 -11487.877 -0.032502983 1.056034 0.45
|
||||
690000 299.56857 -129.53024 -8600.751 -11343.022 0.11604588 0.82311864 0.45
|
||||
695000 287.63895 77.534045 -8889.5114 -11522.578 0.16150699 0.76268419 0.45
|
||||
700000 294.71917 -187.77101 -8824.4116 -11522.291 0.33093056 0.57401387 0.45
|
||||
705000 301.78978 -269.32554 -8594.7858 -11357.39 -0.098783804 1.1802185 0.45
|
||||
710000 305.58313 -214.43945 -8518.1241 -11315.453 -0.03149037 1.0542418 0.45
|
||||
715000 306.30354 -121.41526 -8617.5112 -11421.435 0.10640694 0.83653526 0.45
|
||||
720000 304.94559 91.460869 -8587.9126 -11379.405 -0.4078455 1.982024 0.45
|
||||
725000 295.36839 -505.69412 -8724.4826 -11428.305 0.71800645 0.29987744 0.45
|
||||
730000 298.79826 -9.9970862 -8716.023 -11451.242 0.59730469 0.36717499 0.45
|
||||
735000 300.95964 286.58072 -8641.7744 -11396.779 0.23910326 0.66960256 0.45
|
||||
740000 298.32007 -198.81619 -8685.7142 -11416.556 0.16840724 0.75390743 0.45
|
||||
745000 296.06461 157.22083 -8605.3591 -11315.555 0.3149783 0.58958082 0.45
|
||||
750000 297.27956 -277.36948 -8673.9548 -11395.272 0.058965185 0.90582605 0.45
|
||||
755000 296.79569 203.4854 -8671.4835 -11388.371 0.097863507 0.84860972 0.45
|
||||
760000 296.34981 -296.05791 -8699.7009 -11412.507 0.34644945 0.55926433 0.45
|
||||
765000 302.19536 -657.32604 -8674.9726 -11441.289 -0.25940717 1.5451618 0.45
|
||||
770000 301.91884 -775.45423 -8695.1619 -11458.947 -0.12199652 1.227079 0.45
|
||||
775000 299.9563 -211.10367 -8637.8471 -11383.667 0.3478892 0.55791532 0.45
|
||||
780000 296.00862 -396.64708 -8721.8097 -11431.493 0.25358512 0.65353267 0.45
|
||||
785000 295.12431 -24.44772 -8734.6065 -11436.194 -0.19904079 1.396362 0.45
|
||||
790000 308.18585 -171.55104 -8659.2474 -11480.402 0.30853408 0.59598847 0.45
|
||||
795000 296.45675 -137.73831 -8648.3419 -11362.127 -0.32469954 1.7240046 0.45
|
||||
800000 301.11214 53.405034 -8663.3832 -11419.784 0.1323728 0.800882 0.45
|
||||
805000 305.74305 -320.69662 -8642.7722 -11441.565 0.15136393 0.77577146 0.45
|
||||
810000 305.37725 -264.53003 -8671.4307 -11466.875 0.3113551 0.59317494 0.45
|
||||
815000 304.38239 -240.94118 -8474.7091 -11261.046 -0.080564405 1.1446952 0.45
|
||||
820000 296.05915 -369.13085 -8698.3399 -11408.485 -0.028085872 1.0482385 0.45
|
||||
825000 299.79549 123.66824 -8712.0882 -11456.436 -0.36082461 1.8317026 0.45
|
||||
830000 296.0201 231.08408 -8726.975 -11436.763 -0.22224484 1.4517833 0.45
|
||||
835000 294.90197 -293.4635 -8750.8202 -11450.373 -0.13935283 1.2633285 0.45
|
||||
840000 301.79184 -18.424101 -8689.643 -11452.266 0.19065717 0.72628873 0.45
|
||||
845000 303.63406 232.88156 -8607.7816 -11387.268 0.16521847 0.75795075 0.45
|
||||
850000 300.78823 -301.92537 -8697.521 -11450.957 0.043047914 0.93033698 0.45
|
||||
855000 300.26171 -407.09613 -8617.7866 -11366.403 0.30989277 0.59463173 0.45
|
||||
860000 303.77064 192.13208 -8630.0944 -11410.831 0.44012319 0.47794432 0.45
|
||||
865000 300.12867 323.6738 -8735.2213 -11482.619 0.098660075 0.8474766 0.45
|
||||
870000 299.40232 -213.89349 -8642.3645 -11383.114 0.1478115 0.78040795 0.45
|
||||
875000 300.46794 23.703316 -8624.9835 -11375.487 0.021260277 0.96496648 0.45
|
||||
880000 298.40697 20.053507 -8834.9602 -11566.598 0.25906036 0.647558 0.45
|
||||
885000 299.89193 -56.830889 -8726.8039 -11472.035 -0.14632707 1.2781945 0.45
|
||||
890000 297.49341 -718.63083 -8683.0987 -11406.373 0.017721028 0.97071226 0.45
|
||||
895000 293.34825 -483.14011 -8698.5638 -11383.894 -0.34844876 1.7940698 0.45
|
||||
900000 303.8984 71.405143 -8703.2466 -11485.153 -0.0040127852 1.0067537 0.45
|
||||
905000 296.96955 99.337161 -8644.502 -11362.981 0.29986926 0.60471403 0.45
|
||||
910000 294.13396 -276.63831 -8661.5829 -11354.105 -0.24102928 1.4982558 0.45
|
||||
915000 303.26417 -43.876545 -8575.252 -11351.353 0.013417579 0.97774479 0.45
|
||||
920000 305.27911 -346.57544 -8582.8329 -11377.379 -0.20901843 1.4199288 0.45
|
||||
925000 307.27639 482.10278 -8628.8226 -11441.652 -0.26779925 1.5670667 0.45
|
||||
930000 305.11633 324.47709 -8579.3587 -11372.414 0.68253083 0.31826378 0.45
|
||||
935000 300.11916 -9.8766723 -8780.2986 -11527.61 -0.13402188 1.2520821 0.45
|
||||
940000 295.78408 -67.021801 -8735.3706 -11442.998 0.46658388 0.45719462 0.45
|
||||
945000 300.211 161.55245 -8703.5002 -11451.652 0.062310593 0.90075717 0.45
|
||||
950000 302.51856 -145.81508 -8539.9241 -11309.199 0.019344642 0.96807218 0.45
|
||||
955000 297.23872 14.140867 -8682.9686 -11403.912 -0.30285941 1.6619893 0.45
|
||||
960000 296.19195 158.66375 -8772.8876 -11484.249 0.3298895 0.57501712 0.45
|
||||
965000 293.56726 -302.80176 -8807.9639 -11495.298 0.16057514 0.76387726 0.45
|
||||
970000 307.76289 234.82705 -8569.0805 -11386.363 0.40582434 0.50624817 0.45
|
||||
975000 302.4391 -372.66289 -8569.3448 -11337.893 1.1335506 0.14935733 0.45
|
||||
980000 292.59861 191.50447 -8796.4307 -11474.898 0.82080866 0.25237947 0.45
|
||||
985000 301.61407 97.625218 -8720.889 -11481.885 0.12835918 0.80629208 0.45
|
||||
990000 303.38224 -380.86284 -8666.6015 -11443.783 0.29943962 0.60514999 0.45
|
||||
995000 299.25364 -139.10643 -8631.5948 -11370.983 0.033070141 0.94603876 0.45
|
||||
1000000 295.67561 -191.48596 -8566.021 -11272.656 0.34200535 0.56344895 0.45
|
||||
1005000 304.80384 39.665031 -8603.3665 -11393.562 0.75244137 0.28304697 0.45
|
||||
1010000 298.87735 -181.49155 -8699.7359 -11435.679 0.23524427 0.67395098 0.45
|
||||
1015000 289.92007 -182.58369 -8652.9669 -11306.915 -0.61857139 2.8224052 0.45
|
||||
1020000 300.13923 106.07213 -8618.1949 -11365.69 0.15241071 0.77441051 0.45
|
||||
1025000 307.39589 -312.91975 -8613.3088 -11427.232 0.44069144 0.47748897 0.45
|
||||
1030000 298.41225 441.04111 -8696.1929 -11427.879 -0.1456028 1.2766425 0.45
|
||||
1035000 306.71758 -95.739338 -8471.0526 -11278.766 0.69089513 0.31382964 0.45
|
||||
1040000 302.24132 -415.80447 -8608.0891 -11374.827 0.0090309238 0.98496572 0.45
|
||||
1045000 305.58772 -150.58406 -8563.9959 -11361.367 0.062478239 0.90050391 0.45
|
||||
1050000 303.60025 21.785837 -8623.6613 -11402.839 0.18503623 0.73316896 0.45
|
||||
1055000 293.38734 613.83617 -8606.7635 -11292.451 -0.2195833 1.4453164 0.45
|
||||
1060000 305.11418 -29.208186 -8589.4319 -11382.468 -0.095889014 1.1745016 0.45
|
||||
1065000 294.13176 470.07703 -8724.8028 -11417.305 0.28934127 0.61548789 0.45
|
||||
1070000 309.64471 -634.00961 -8534.3395 -11368.848 -0.048186981 1.0841851 0.45
|
||||
1075000 300.56742 -209.29645 -8615.1904 -11366.605 -0.26336339 1.5554498 0.45
|
||||
1080000 297.94855 218.48741 -8697.7569 -11425.198 -0.0401787 1.0697186 0.45
|
||||
1085000 308.40523 -177.4101 -8681.0198 -11504.182 0.32537753 0.57938558 0.45
|
||||
1090000 295.63403 117.27818 -8609.1285 -11315.382 0.27576906 0.62966079 0.45
|
||||
1095000 300.09566 635.58958 -8552.5989 -11299.695 -0.056458656 1.0993329 0.45
|
||||
1100000 300.68272 375.84619 -8709.6822 -11462.152 0.28519281 0.61978578 0.45
|
||||
1105000 303.34279 -980.64631 -8585.6781 -11362.499 0.34352221 0.56201715 0.45
|
||||
1110000 304.45088 84.082657 -8606.3018 -11393.266 0.019454666 0.96789353 0.45
|
||||
1115000 296.03894 543.18998 -8568.9408 -11278.901 0.38977572 0.5200614 0.45
|
||||
1120000 307.38628 -200.46817 -8619.8059 -11433.641 -0.21765351 1.4406454 0.45
|
||||
1125000 303.36463 -96.322086 -8596.6485 -11373.669 -0.050201944 1.0878558 0.45
|
||||
1130000 295.03081 19.554539 -8820.2191 -11520.951 0.24816885 0.65949722 0.45
|
||||
1135000 297.2534 -452.18389 -8614.3296 -11335.407 0.47102824 0.45379893 0.45
|
||||
1140000 298.03519 -102.40026 -8663.5539 -11391.788 0.42591169 0.48947459 0.45
|
||||
1145000 295.38879 -444.99161 -8629.1445 -11333.153 0.39655669 0.51417955 0.45
|
||||
1150000 303.8409 -236.98919 -8595.3972 -11376.777 0.64097267 0.34124136 0.45
|
||||
1155000 306.07517 -215.50846 -8588.4969 -11390.33 0.036055871 0.94131261 0.45
|
||||
1160000 294.9636 -931.69596 -8675.0022 -11375.119 0.19752892 0.71796511 0.45
|
||||
1165000 294.72276 -192.71028 -8637.3451 -11335.257 -0.00048188528 1.0008086 0.45
|
||||
1170000 301.23614 -213.88646 -8482.7135 -11240.25 0.71933969 0.29920755 0.45
|
||||
1175000 300.44993 375.9896 -8633.2248 -11383.564 0.30232015 0.60223308 0.45
|
||||
1180000 300.16377 118.10917 -8654.5233 -11402.243 0.12296714 0.81361774 0.45
|
||||
1185000 293.70358 210.30955 -8646.4181 -11335.001 0.30210616 0.6024493 0.45
|
||||
1190000 304.75915 -651.08053 -8575.2958 -11365.082 -0.02759447 1.0473748 0.45
|
||||
1195000 297.70391 95.378065 -8731.319 -11456.521 0.52250206 0.41626089 0.45
|
||||
1200000 293.90642 -733.78695 -8697.185 -11387.624 0.13079675 0.80300207 0.45
|
||||
1205000 303.05224 -511.38179 -8632.6207 -11406.781 -0.20143249 1.4019752 0.45
|
||||
1210000 293.80664 245.08881 -8756.1441 -11445.67 0.37969913 0.52892642 0.45
|
||||
1215000 296.59811 308.46776 -8624.2865 -11339.366 0.14440905 0.78487467 0.45
|
||||
1220000 303.74266 188.84272 -8605.9211 -11386.402 -0.092746405 1.1683266 0.45
|
||||
1225000 299.9013 -466.73438 -8576.203 -11321.52 0.27417371 0.63134804 0.45
|
||||
1230000 299.66611 -174.43092 -8604.5105 -11347.674 0.47991062 0.44708777 0.45
|
||||
1235000 295.89844 394.40733 -8789.3714 -11498.046 0.088629157 0.86185673 0.45
|
||||
1240000 298.78384 419.34789 -8688.5635 -11423.651 0.22218371 0.68887865 0.45
|
||||
1245000 299.90866 183.59906 -8698.2559 -11443.64 1.1590193 0.143111 0.45
|
||||
1250000 296.01051 196.22426 -8831.5506 -11541.251 -0.04226137 1.0734621 0.45
|
||||
1255000 292.09199 -163.44863 -8711.8649 -11385.695 0.57648767 0.38022263 0.45
|
||||
1260000 298.83471 -194.96215 -8646.8698 -11382.423 0.10966149 0.83198091 0.45
|
||||
1265000 302.24158 163.34413 -8653.0984 -11419.838 0.51878502 0.41886437 0.45
|
||||
1270000 298.29186 -765.77064 -8697.9423 -11428.526 -0.40185995 1.9622238 0.45
|
||||
1275000 300.55952 -162.42423 -8614.8996 -11366.242 -0.43706076 2.0815736 0.45
|
||||
1280000 294.52892 156.17026 -8718.8337 -11414.971 0.010263439 0.98293149 0.45
|
||||
1285000 301.40565 -778.44393 -8670.527 -11429.615 0.025111338 0.95875312 0.45
|
||||
1290000 294.20057 -918.07774 -8683.4672 -11376.599 0.046386022 0.92514227 0.45
|
||||
1295000 301.09196 -665.75324 -8687.0149 -11443.231 0.11169829 0.82914327 0.45
|
||||
1300000 294.16167 -297.06724 -8708.7055 -11401.481 0.11765896 0.82089447 0.45
|
||||
1305000 303.07886 -538.32897 -8514.6586 -11289.063 -0.047420749 1.0827925 0.45
|
||||
1310000 302.36674 -40.952458 -8536.8784 -11304.764 -0.42539639 2.0412418 0.45
|
||||
1315000 302.05477 -60.391628 -8662.9591 -11427.989 0.13452485 0.79799615 0.45
|
||||
1320000 303.48158 71.63406 -8661.3057 -11439.397 -0.039130791 1.0678399 0.45
|
||||
1325000 296.35737 -261.05768 -8561.6568 -11274.532 0.44670407 0.47269742 0.45
|
||||
1330000 296.29207 -147.71061 -8543.8084 -11256.086 0.2909439 0.61383553 0.45
|
||||
1335000 301.48737 453.77169 -8648.236 -11408.072 0.078354877 0.87683873 0.45
|
||||
1340000 300.90975 -596.76946 -8621.8298 -11376.378 0.49429189 0.43643168 0.45
|
||||
1345000 295.08431 -540.90158 -8694.8895 -11396.111 0.17025999 0.75156807 0.45
|
||||
1350000 296.63006 -197.97304 -8632.9441 -11348.316 -0.29504955 1.6403589 0.45
|
||||
1355000 305.25857 -242.97453 -8473.9923 -11268.35 0.069838933 0.88945392 0.45
|
||||
1360000 296.22833 -151.24398 -8660.529 -11372.223 -0.28031505 1.6003133 0.45
|
||||
1365000 301.25457 -383.71973 -8610.3716 -11368.076 -0.18330657 1.3599906 0.45
|
||||
1370000 300.8142 -179.49364 -8641.5538 -11395.227 0.23629239 0.67276715 0.45
|
||||
1375000 307.62118 -82.315057 -8464.9289 -11280.914 0.024560511 0.95963938 0.45
|
||||
1380000 303.12816 -335.58742 -8512.0211 -11286.877 0.30238814 0.60216441 0.45
|
||||
1385000 304.36118 711.2159 -8577.0597 -11363.203 0.34444857 0.56114453 0.45
|
||||
1390000 294.15072 406.74931 -8678.8526 -11371.528 0.29195829 0.61279196 0.45
|
||||
1395000 300.50629 -164.22554 -8592.1543 -11343.009 0.098759052 0.84733591 0.45
|
||||
1400000 297.37345 -98.001104 -8741.5121 -11463.689 0.27444766 0.63105799 0.45
|
||||
1405000 294.17572 -86.526127 -8712.3447 -11405.249 0.4297415 0.48634023 0.45
|
||||
1410000 310.48104 141.84417 -8647.4854 -11489.65 0.86645808 0.23377559 0.45
|
||||
1415000 310.06801 -433.29574 -8486.7744 -11325.158 -0.21510676 1.4345042 0.45
|
||||
1420000 303.98547 -69.701496 -8551.8036 -11334.507 0.16419779 0.75924955 0.45
|
||||
1425000 301.40096 -115.67827 -8639.4818 -11398.527 0.20161321 0.71306316 0.45
|
||||
1430000 299.1258 -79.769416 -8721.6844 -11459.902 0.36298014 0.54396978 0.45
|
||||
1435000 298.45349 180.92871 -8700.7025 -11432.766 0.43843749 0.47929766 0.45
|
||||
1440000 299.14006 146.72026 -8675.5643 -11413.913 0.50244279 0.43050527 0.45
|
||||
1445000 299.98035 -404.81666 -8725.6961 -11471.737 0.49995597 0.43230482 0.45
|
||||
1450000 295.10222 59.166328 -8728.5327 -11429.918 0.04154017 0.93269286 0.45
|
||||
1455000 292.52514 144.30376 -8743.1245 -11420.919 0.04910241 0.92093649 0.45
|
||||
1460000 303.68948 -264.34132 -8631.6334 -11411.627 0.23528019 0.67391039 0.45
|
||||
1465000 302.97467 98.874471 -8689.2883 -11462.739 0.21805801 0.69366252 0.45
|
||||
1470000 294.50716 133.30708 -8625.4721 -11321.411 0.98143982 0.19276882 0.45
|
||||
1475000 302.04729 -120.74445 -8637.7677 -11402.729 0.4707242 0.45403042 0.45
|
||||
1480000 305.16876 -436.598 -8614.8793 -11408.415 0.27111226 0.63459852 0.45
|
||||
1485000 297.20205 -166.62152 -8598.691 -11319.299 -0.24681532 1.5128679 0.45
|
||||
1490000 299.73617 -126.47006 -8649.4834 -11393.289 0.47833671 0.44826968 0.45
|
||||
1495000 295.64416 481.3869 -8697.4378 -11403.784 0.1128182 0.82758717 0.45
|
||||
1500000 301.34876 -64.948239 -8570.0291 -11328.596 0.10524924 0.83816132 0.45
|
||||
1505000 297.45753 538.92423 -8678.9073 -11401.854 0.15764246 0.76764423 0.45
|
||||
1510000 304.47978 -609.79308 -8491.9652 -11279.194 0.40940159 0.50321953 0.45
|
||||
1515000 301.26466 -130.2245 -8572.0691 -11329.866 0.89811777 0.22168463 0.45
|
||||
1520000 306.33064 472.83128 -8553.0557 -11357.227 -0.3949103 1.9394824 0.45
|
||||
1525000 303.77309 446.96086 -8658.8797 -11439.639 0.23907939 0.66962936 0.45
|
||||
1530000 305.94257 -462.96121 -8683.4501 -11484.069 -0.29365623 1.6365296 0.45
|
||||
1535000 296.45268 -725.6647 -8564.4464 -11278.194 0.031785638 0.94807932 0.45
|
||||
1540000 297.90338 -418.20316 -8566.3092 -11293.337 0.50491901 0.42872083 0.45
|
||||
1545000 304.3796 -281.11491 -8571.3965 -11357.708 0.26286914 0.64343405 0.45
|
||||
1550000 296.71481 -62.772449 -8680.9078 -11397.055 0.15669974 0.76885909 0.45
|
||||
1555000 297.50225 148.74592 -8754.0913 -11477.447 0.14286636 0.78690833 0.45
|
||||
1560000 300.52393 373.85791 -8638.4601 -11389.477 0.089292836 0.8608978 0.45
|
||||
1565000 295.18741 -197.82529 -8603.6291 -11305.795 0.36113621 0.54565489 0.45
|
||||
1570000 295.50662 -297.43989 -8727.7936 -11432.881 0.24895806 0.65862474 0.45
|
||||
1575000 306.12787 745.92559 -8609.3706 -11411.686 0.42705392 0.48853767 0.45
|
||||
1580000 300.84367 544.00229 -8635.6029 -11389.546 -0.20268104 1.4049145 0.45
|
||||
1585000 293.01964 208.25986 -8624.1146 -11306.436 -0.013645123 1.0231522 0.45
|
||||
1590000 304.09 110.80761 -8602.177 -11385.837 -0.39136115 1.9279703 0.45
|
||||
1595000 289.74205 -521.57012 -8666.417 -11318.735 0.30601242 0.59851474 0.45
|
||||
1600000 297.3494 368.04946 -8684.986 -11406.943 0.079346518 0.87538143 0.45
|
||||
1605000 301.19957 -293.44562 -8521.9202 -11279.121 0.49408391 0.43658396 0.45
|
||||
1610000 299.66627 -592.72965 -8750.1489 -11493.314 -0.20726596 1.415761 0.45
|
||||
1615000 301.32181 329.96166 -8575.077 -11333.397 0.21514479 0.69706049 0.45
|
||||
1620000 297.46259 -575.7077 -8604.3396 -11327.332 0.051950054 0.91654801 0.45
|
||||
1625000 301.143 -578.27016 -8622.6936 -11379.377 0.33929754 0.566014 0.45
|
||||
1630000 301.9449 119.02272 -8744.8752 -11508.899 0.25690123 0.64990753 0.45
|
||||
1635000 292.31769 -256.96526 -8729.3974 -11405.293 0.2041501 0.71003527 0.45
|
||||
1640000 305.17316 -224.04815 -8619.2426 -11412.818 0.61612842 0.35576261 0.45
|
||||
1645000 299.82547 -453.0871 -8601.8345 -11346.457 0.44515417 0.47392794 0.45
|
||||
1650000 300.70213 -184.15313 -8604.5269 -11357.175 0.40413562 0.50768423 0.45
|
||||
1655000 298.34797 241.12842 -8736.9407 -11468.038 0.2219039 0.68920205 0.45
|
||||
1660000 305.65546 522.2866 -8702.2765 -11500.267 -0.093142651 1.1691034 0.45
|
||||
1665000 296.92311 -22.202256 -8648.9808 -11367.035 0.21695848 0.69494306 0.45
|
||||
1670000 293.71721 -216.98365 -8726.8596 -11415.567 0.062675713 0.90020567 0.45
|
||||
1675000 302.06866 69.039243 -8665.567 -11430.724 0.0012561112 0.99789522 0.45
|
||||
1680000 292.51483 -764.83087 -8759.3069 -11437.007 0.0022259364 0.99627318 0.45
|
||||
1685000 300.70748 -239.98915 -8682.5295 -11435.226 0.21854685 0.69309397 0.45
|
||||
1690000 303.31754 36.443117 -8554.7105 -11331.3 0.18904617 0.72825402 0.45
|
||||
1695000 300.96783 -365.40002 -8606.9996 -11362.08 0.21317894 0.69936284 0.45
|
||||
1700000 301.78038 -460.56572 -8703.0763 -11465.594 -0.074311844 1.1327524 0.45
|
||||
1705000 299.08328 224.74817 -8680.6969 -11418.526 0.14954235 0.77814547 0.45
|
||||
1710000 303.24064 298.73582 -8637.4191 -11413.304 -0.11628651 1.2153822 0.45
|
||||
1715000 299.1988 535.86954 -8722.2318 -11461.118 0.51289768 0.42302132 0.45
|
||||
1720000 300.88716 -11.654893 -8624.0905 -11378.432 0.62281958 0.35179195 0.45
|
||||
1725000 306.59581 -286.69581 -8574.7957 -11381.394 0.3964476 0.51427364 0.45
|
||||
1730000 302.58784 590.55523 -8670.9964 -11440.906 -0.28655798 1.6171597 0.45
|
||||
1735000 295.17235 -60.036989 -8631.671 -11333.699 0.72231294 0.29771902 0.45
|
||||
1740000 290.06228 -254.79282 -8715.6619 -11370.912 0.35583392 0.55052961 0.45
|
||||
1745000 306.47487 418.58552 -8590.4226 -11395.914 -0.04975774 1.0870455 0.45
|
||||
1750000 296.74674 -73.367187 -8727.0183 -11443.458 -0.27066543 1.5746188 0.45
|
||||
1755000 299.03541 551.77198 -8712.6905 -11450.081 -0.35865936 1.8250619 0.45
|
||||
1760000 288.98684 -380.17132 -8775.8546 -11421.26 -0.17754854 1.3469184 0.45
|
||||
1765000 300.76459 -662.80282 -8671.5414 -11424.761 0.078118597 0.87718632 0.45
|
||||
1770000 301.47287 -498.34628 -8675.582 -11435.285 0.57886218 0.37871122 0.45
|
||||
1775000 307.18565 -70.676548 -8554.9531 -11366.951 0.38766498 0.52190597 0.45
|
||||
1780000 302.58164 -329.49774 -8638.9781 -11408.831 0.53149245 0.41003059 0.45
|
||||
1785000 307.4086 294.59322 -8586.4793 -11400.518 0.34963097 0.55628768 0.45
|
||||
1790000 295.81491 -366.57154 -8756.8143 -11464.724 0.61653346 0.35552098 0.45
|
||||
1795000 296.46712 18.92361 -8640.9928 -11354.873 0.21158778 0.70123194 0.45
|
||||
1800000 290.9851 -805.74081 -8636.1049 -11299.802 0.36361854 0.54338759 0.45
|
||||
1805000 291.6313 -58.207903 -8707.0768 -11376.689 0.2659117 0.6401586 0.45
|
||||
1810000 299.14324 327.45026 -8613.3385 -11351.716 0.58264334 0.37631684 0.45
|
||||
1815000 295.3441 37.594139 -8747.5577 -11451.158 0.10312363 0.84115511 0.45
|
||||
1820000 297.19616 596.87014 -8601.4315 -11321.985 0.11690702 0.82193051 0.45
|
||||
1825000 305.23709 -229.45704 -8586.9328 -11381.094 -0.070794327 1.1260885 0.45
|
||||
1830000 308.48265 -50.225625 -8595.8609 -11419.732 0.28577292 0.61918297 0.45
|
||||
1835000 301.67215 30.600339 -8561.9509 -11323.478 0.67464985 0.32249901 0.45
|
||||
1840000 297.44022 -46.915689 -8760.5329 -11483.321 0.20308399 0.71130615 0.45
|
||||
1845000 294.56439 121.7989 -8819.2766 -11515.739 -0.13859762 1.2617292 0.45
|
||||
1850000 303.92475 63.511256 -8655.7131 -11437.861 -0.064617898 1.1144821 0.45
|
||||
1855000 302.36347 -403.0262 -8663.1963 -11431.052 0.63223295 0.34628081 0.45
|
||||
1860000 292.88227 124.53259 -8622.4528 -11303.517 0.21782313 0.69393587 0.45
|
||||
1865000 299.49141 1.3922328 -8592.8243 -11334.389 0.024359522 0.95996296 0.45
|
||||
1870000 295.36403 -1.848842 -8534.7607 -11238.543 0.53331666 0.40877784 0.45
|
||||
1875000 299.5254 -303.35635 -8642.4199 -11384.296 0.12049946 0.8169925 0.45
|
||||
1880000 302.15027 -233.4192 -8607.1984 -11373.102 0.42967343 0.48639576 0.45
|
||||
1885000 293.78387 -312.31798 -8576.6303 -11265.948 0.62050206 0.35316217 0.45
|
||||
1890000 296.33987 227.42925 -8675.0988 -11387.814 -0.2387251 1.4924762 0.45
|
||||
1895000 296.4116 -297.41585 -8695.6693 -11409.041 0.1899345 0.72716967 0.45
|
||||
1900000 305.04631 -744.8928 -8495.6073 -11288.022 -0.092917858 1.1686627 0.45
|
||||
1905000 299.13767 -233.05542 -8771.8955 -11510.222 -0.053515786 1.0939196 0.45
|
||||
1910000 301.18529 391.32364 -8594.238 -11351.309 0.17761387 0.74235415 0.45
|
||||
1915000 304.53139 -205.26743 -8615.1863 -11402.887 -0.65441918 2.9973254 0.45
|
||||
1920000 304.46794 75.506851 -8696.0461 -11483.166 0.28757039 0.6173189 0.45
|
||||
1925000 295.83229 -40.226799 -8677.0683 -11385.137 0.34338584 0.56214572 0.45
|
||||
1930000 298.91694 72.305481 -8662.7622 -11399.068 -0.45255095 2.1363683 0.45
|
||||
1935000 297.28693 -277.78411 -8678.223 -11399.608 0.32165864 0.58301111 0.45
|
||||
1940000 295.22194 -153.48885 -8737.0529 -11439.534 0.47753767 0.4488709 0.45
|
||||
1945000 298.41366 0.98105216 -8615.733 -11347.432 0.061208942 0.90242323 0.45
|
||||
1950000 298.47932 -461.39566 -8587.8993 -11320.199 0.41883297 0.49532116 0.45
|
||||
1955000 293.30456 -530.72887 -8712.242 -11397.172 -0.052983042 1.0929425 0.45
|
||||
1960000 307.27812 -609.68084 -8563.1295 -11375.974 0.10863685 0.83341209 0.45
|
||||
1965000 309.21876 -661.65884 -8619.5376 -11450.147 -0.00074060514 1.0012431 0.45
|
||||
1970000 294.16474 130.9219 -8662.5966 -11355.4 -0.048761848 1.0852311 0.45
|
||||
1975000 293.87023 -652.42226 -8587.2681 -11277.376 -0.42701916 2.0468057 0.45
|
||||
1980000 302.66906 -396.94893 -8576.3291 -11346.982 0.55938449 0.39128874 0.45
|
||||
1985000 304.00863 167.22102 -8525.9503 -11308.866 -0.12417188 1.2315647 0.45
|
||||
1990000 299.53376 -234.11494 -8528.8821 -11270.834 0.58392743 0.37550715 0.45
|
||||
1995000 296.20959 -99.022727 -8599.3854 -11310.908 0.10920765 0.83261451 0.45
|
||||
2000000 307.40367 -179.44965 -8545.6064 -11359.6 0.485016 0.44327537 0.45
|
||||
Loop time of 4787.7 on 1 procs for 2000000 steps with 3072 atoms
|
||||
|
||||
Performance: 36.092 ns/day, 0.665 hours/ns, 417.737 timesteps/s
|
||||
95.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 | 1015.1 | 1015.1 | 1015.1 | 0.0 | 21.20
|
||||
Bond | 121.19 | 121.19 | 121.19 | 0.0 | 2.53
|
||||
Kspace | 3455.1 | 3455.1 | 3455.1 | 0.0 | 72.17
|
||||
Neigh | 8.7475 | 8.7475 | 8.7475 | 0.0 | 0.18
|
||||
Comm | 58.679 | 58.679 | 58.679 | 0.0 | 1.23
|
||||
Output | 0.60209 | 0.60209 | 0.60209 | 0.0 | 0.01
|
||||
Modify | 81.328 | 81.328 | 81.328 | 0.0 | 1.70
|
||||
Other | | 46.88 | | | 0.98
|
||||
|
||||
Nlocal: 3072 ave 3072 max 3072 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 8395 ave 8395 max 8395 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = -1
|
||||
Ave neighs/atom = -0.00032552083
|
||||
Ave special neighs/atom = 2
|
||||
Neighbor list builds = 93794
|
||||
Dangerous builds = 0
|
||||
|
||||
Total wall time: 1:31:34
|
||||
22
examples/PACKAGES/fep/ta/spce.fep.ta
Normal file
22
examples/PACKAGES/fep/ta/spce.fep.ta
Normal file
@ -0,0 +1,22 @@
|
||||
# Time-averaged data for fix FEP
|
||||
# TimeStep c_TA[1] c_TA[2] c_TA[3] v_gamma_v
|
||||
100000 0.168677 0.863546 0.45 65.7437
|
||||
200000 0.169722 0.861354 0.45 66.6859
|
||||
300000 0.165507 0.868407 0.45 63.1899
|
||||
400000 0.162311 0.875704 0.45 60.7859
|
||||
500000 0.165468 0.872729 0.45 63.2053
|
||||
600000 0.165267 0.873825 0.45 63.1828
|
||||
700000 0.167824 0.869356 0.45 65.1722
|
||||
800000 0.170332 0.866538 0.45 67.0749
|
||||
900000 0.164396 0.875043 0.45 62.4639
|
||||
1000000 0.164738 0.87663 0.45 62.5659
|
||||
1100000 0.168395 0.870496 0.45 65.415
|
||||
1200000 0.170147 0.867104 0.45 66.7132
|
||||
1300000 0.170509 0.866709 0.45 66.9833
|
||||
1400000 0.171152 0.865294 0.45 67.5598
|
||||
1500000 0.172363 0.863433 0.45 68.547
|
||||
1600000 0.171538 0.864062 0.45 67.8359
|
||||
1700000 0.171662 0.864029 0.45 67.9145
|
||||
1800000 0.170202 0.866069 0.45 66.7697
|
||||
1900000 0.171403 0.864162 0.45 67.6313
|
||||
2000000 0.170962 0.864753 0.45 67.2314
|
||||
@ -28,6 +28,11 @@ HIP_HOST_INCLUDE += -I./
|
||||
# path to hipcub
|
||||
HIP_HOST_INCLUDE += -I$(HIP_PATH)/../include
|
||||
|
||||
ifeq (amd,$(HIP_PLATFORM))
|
||||
# newer version of ROCm (5.1+) require c++14 for rocprim
|
||||
HIP_OPTS += -std=c++14
|
||||
endif
|
||||
|
||||
# use mpi
|
||||
HIP_HOST_OPTS += -DMPI_GERYON -DUCL_NO_EXIT
|
||||
# this settings should match LAMMPS Makefile
|
||||
|
||||
@ -5,7 +5,14 @@
|
||||
import sysconfig
|
||||
import ctypes
|
||||
library = sysconfig.get_config_vars('INSTSONAME')[0]
|
||||
pylib = ctypes.CDLL(library)
|
||||
try:
|
||||
pylib = ctypes.CDLL(library)
|
||||
except OSError as e:
|
||||
if pylib.endswith(".a"):
|
||||
pylib.strip(".a") + ".so"
|
||||
pylib = ctypes.CDLL(library)
|
||||
else:
|
||||
raise e
|
||||
if not pylib.Py_IsInitialized():
|
||||
raise RuntimeError("This interpreter is not compatible with python-based mliap for LAMMPS.")
|
||||
del sysconfig, ctypes, library, pylib
|
||||
|
||||
@ -19,10 +19,75 @@ import numpy as np
|
||||
import torch
|
||||
|
||||
def calc_n_params(model):
|
||||
"""
|
||||
Returns the sum of two decimal numbers in binary digits.
|
||||
|
||||
Parameters:
|
||||
model (torch.nn.Module): Network model that maps descriptors to a per atom attribute
|
||||
|
||||
Returns:
|
||||
n_params (int): Number of NN model parameters
|
||||
"""
|
||||
return sum(p.nelement() for p in model.parameters())
|
||||
|
||||
class TorchWrapper(torch.nn.Module):
|
||||
def __init__(self, model,n_descriptors,n_elements,n_params=None,device=None,dtype=torch.float64):
|
||||
"""
|
||||
A class to wrap Modules to ensure lammps mliap compatability.
|
||||
|
||||
...
|
||||
|
||||
Attributes
|
||||
----------
|
||||
model : torch.nn.Module
|
||||
Network model that maps descriptors to a per atom attribute
|
||||
|
||||
device : torch.nn.Module (None)
|
||||
Accelerator device
|
||||
|
||||
dtype : torch.dtype (torch.float64)
|
||||
Dtype to use on device
|
||||
|
||||
n_params : torch.nn.Module (None)
|
||||
Number of NN model parameters
|
||||
|
||||
n_descriptors : int
|
||||
Max number of per atom descriptors
|
||||
|
||||
n_elements : int
|
||||
Max number of elements
|
||||
|
||||
|
||||
Methods
|
||||
-------
|
||||
forward(descriptors, elems):
|
||||
Feeds descriptors to network model to produce per atom energies and forces.
|
||||
"""
|
||||
|
||||
def __init__(self, model, n_descriptors, n_elements, n_params=None, device=None, dtype=torch.float64):
|
||||
"""
|
||||
Constructs all the necessary attributes for the network module.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
model : torch.nn.Module
|
||||
Network model that maps descriptors to a per atom attribute
|
||||
|
||||
n_descriptors : int
|
||||
Max number of per atom descriptors
|
||||
|
||||
n_elements : int
|
||||
Max number of elements
|
||||
|
||||
n_params : torch.nn.Module (None)
|
||||
Number of NN model parameters
|
||||
|
||||
device : torch.nn.Module (None)
|
||||
Accelerator device
|
||||
|
||||
dtype : torch.dtype (torch.float64)
|
||||
Dtype to use on device
|
||||
"""
|
||||
|
||||
super().__init__()
|
||||
|
||||
self.model = model
|
||||
@ -40,26 +105,222 @@ class TorchWrapper(torch.nn.Module):
|
||||
self.n_descriptors = n_descriptors
|
||||
self.n_elements = n_elements
|
||||
|
||||
def forward(self, elems, bispectrum, beta, energy):
|
||||
def forward(self, elems, descriptors, beta, energy):
|
||||
"""
|
||||
Takes element types and descriptors calculated via lammps and
|
||||
calculates the per atom energies and forces.
|
||||
|
||||
bispectrum = torch.from_numpy(bispectrum).to(dtype=self.dtype, device=self.device).requires_grad_(True)
|
||||
Parameters
|
||||
----------
|
||||
elems : numpy.array
|
||||
Per atom element types
|
||||
|
||||
descriptors : numpy.array
|
||||
Per atom descriptors
|
||||
|
||||
beta : numpy.array
|
||||
Expired beta array to be filled with new betas
|
||||
|
||||
energy : numpy.array
|
||||
Expired per atom energy array to be filled with new per atom energy
|
||||
(Note: This is a pointer to the lammps per atom energies)
|
||||
|
||||
|
||||
Returns
|
||||
-------
|
||||
None
|
||||
"""
|
||||
|
||||
descriptors = torch.from_numpy(descriptors).to(dtype=self.dtype, device=self.device).requires_grad_(True)
|
||||
elems = torch.from_numpy(elems).to(dtype=torch.long, device=self.device) - 1
|
||||
|
||||
with torch.autograd.enable_grad():
|
||||
|
||||
energy_nn = self.model(bispectrum, elems)
|
||||
energy_nn = self.model(descriptors, elems)
|
||||
if energy_nn.ndim > 1:
|
||||
energy_nn = energy_nn.flatten()
|
||||
|
||||
beta_nn = torch.autograd.grad(energy_nn.sum(), bispectrum)[0]
|
||||
beta_nn = torch.autograd.grad(energy_nn.sum(), descriptors)[0]
|
||||
|
||||
beta[:] = beta_nn.detach().cpu().numpy().astype(np.float64)
|
||||
energy[:] = energy_nn.detach().cpu().numpy().astype(np.float64)
|
||||
|
||||
|
||||
class IgnoreElems(torch.nn.Module):
|
||||
def __init__(self,subnet):
|
||||
"""
|
||||
A class to represent a NN model agnostic of element typing.
|
||||
|
||||
...
|
||||
|
||||
Attributes
|
||||
----------
|
||||
subnet : torch.nn.Module
|
||||
Network model that maps descriptors to a per atom attribute
|
||||
|
||||
Methods
|
||||
-------
|
||||
forward(descriptors, elems):
|
||||
Feeds descriptors to network model
|
||||
"""
|
||||
|
||||
def __init__(self, subnet):
|
||||
"""
|
||||
Constructs all the necessary attributes for the network module.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subnet : torch.nn.Module
|
||||
Network model that maps descriptors to a per atom attribute
|
||||
"""
|
||||
|
||||
super().__init__()
|
||||
self.subnet = subnet
|
||||
|
||||
def forward(self,bispectrum,elems):
|
||||
return self.subnet(bispectrum)
|
||||
def forward(self, descriptors, elems):
|
||||
"""
|
||||
Feeds descriptors to network model
|
||||
|
||||
Parameters
|
||||
----------
|
||||
descriptors : torch.tensor
|
||||
Per atom descriptors
|
||||
|
||||
elems : torch.tensor
|
||||
Per atom element types
|
||||
|
||||
Returns
|
||||
-------
|
||||
self.subnet(descriptors) : torch.tensor
|
||||
Per atom attribute computed by the network model
|
||||
"""
|
||||
|
||||
return self.subnet(descriptors)
|
||||
|
||||
|
||||
class UnpackElems(torch.nn.Module):
|
||||
"""
|
||||
A class to represent a NN model pseudo-agnostic of element typing for
|
||||
systems with multiple element typings.
|
||||
|
||||
...
|
||||
|
||||
Attributes
|
||||
----------
|
||||
subnet : torch.nn.Module
|
||||
Network model that maps descriptors to a per atom attribute
|
||||
|
||||
n_types : int
|
||||
Number of atom types used in training the NN model.
|
||||
|
||||
Methods
|
||||
-------
|
||||
forward(descriptors, elems):
|
||||
Feeds descriptors to network model after adding zeros into
|
||||
descriptor columns relating to different atom types
|
||||
"""
|
||||
|
||||
def __init__(self, subnet, n_types):
|
||||
"""
|
||||
Constructs all the necessary attributes for the network module.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subnet : torch.nn.Module
|
||||
Network model that maps descriptors to a per atom attribute.
|
||||
|
||||
n_types : int
|
||||
Number of atom types used in training the NN model.
|
||||
"""
|
||||
super().__init__()
|
||||
self.subnet = subnet
|
||||
self.n_types = n_types
|
||||
|
||||
def forward(self, descriptors, elems):
|
||||
"""
|
||||
Feeds descriptors to network model after adding zeros into
|
||||
descriptor columns relating to different atom types
|
||||
|
||||
Parameters
|
||||
----------
|
||||
descriptors : torch.tensor
|
||||
Per atom descriptors
|
||||
|
||||
elems : torch.tensor
|
||||
Per atom element types
|
||||
|
||||
Returns
|
||||
-------
|
||||
self.subnet(descriptors) : torch.tensor
|
||||
Per atom attribute computed by the network model
|
||||
"""
|
||||
|
||||
unpacked_descriptors = torch.zeros(elems.shape[0], self.n_types, descriptors.shape[1], dtype=torch.float64)
|
||||
for i, ind in enumerate(elems):
|
||||
unpacked_descriptors[i, ind, :] = descriptors[i]
|
||||
return self.subnet(torch.reshape(unpacked_descriptors, (elems.shape[0], -1)), elems)
|
||||
|
||||
|
||||
class ElemwiseModels(torch.nn.Module):
|
||||
"""
|
||||
A class to represent a NN model dependent on element typing.
|
||||
|
||||
...
|
||||
|
||||
Attributes
|
||||
----------
|
||||
subnets : list of torch.nn.Modules
|
||||
Per element type network models that maps per element type
|
||||
descriptors to a per atom attribute.
|
||||
|
||||
n_types : int
|
||||
Number of atom types used in training the NN model.
|
||||
|
||||
Methods
|
||||
-------
|
||||
forward(descriptors, elems):
|
||||
Feeds descriptors to network model after adding zeros into
|
||||
descriptor columns relating to different atom types
|
||||
"""
|
||||
|
||||
def __init__(self, subnets, n_types):
|
||||
"""
|
||||
Constructs all the necessary attributes for the network module.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subnets : list of torch.nn.Modules
|
||||
Per element type network models that maps per element
|
||||
type descriptors to a per atom attribute.
|
||||
|
||||
n_types : int
|
||||
Number of atom types used in training the NN model.
|
||||
"""
|
||||
|
||||
super().__init__()
|
||||
self.subnets = subnets
|
||||
self.n_types = n_types
|
||||
|
||||
def forward(self, descriptors, elems):
|
||||
"""
|
||||
Feeds descriptors to network model after adding zeros into
|
||||
descriptor columns relating to different atom types
|
||||
|
||||
Parameters
|
||||
----------
|
||||
descriptors : torch.tensor
|
||||
Per atom descriptors
|
||||
|
||||
elems : torch.tensor
|
||||
Per atom element types
|
||||
|
||||
Returns
|
||||
-------
|
||||
self.subnets(descriptors) : torch.tensor
|
||||
Per atom attribute computed by the network model
|
||||
"""
|
||||
|
||||
per_atom_attributes = torch.zeros(elems.size[0])
|
||||
given_elems, elem_indices = torch.unique(elems, return_inverse=True)
|
||||
for i, elem in enumerate(given_elems):
|
||||
per_atom_attribute[elem_indices == i] = self.subnets[elem](descriptors[elem_indices == i])
|
||||
return per_atom_attributes
|
||||
|
||||
2
src/.gitignore
vendored
2
src/.gitignore
vendored
@ -460,6 +460,8 @@
|
||||
/compute_fabric.h
|
||||
/compute_fep.cpp
|
||||
/compute_fep.h
|
||||
/compute_fep_ta.cpp
|
||||
/compute_fep_ta.h
|
||||
/compute_force_tally.cpp
|
||||
/compute_force_tally.h
|
||||
/compute_gyration_shape.cpp
|
||||
|
||||
@ -46,6 +46,8 @@ PairDPD::PairDPD(LAMMPS *lmp) : Pair(lmp)
|
||||
|
||||
PairDPD::~PairDPD()
|
||||
{
|
||||
if (copymode) return;
|
||||
|
||||
if (allocated) {
|
||||
memory->destroy(setflag);
|
||||
memory->destroy(cutsq);
|
||||
|
||||
@ -49,7 +49,7 @@ class PairDPD : public Pair {
|
||||
double **sigma;
|
||||
class RanMars *random;
|
||||
|
||||
void allocate();
|
||||
virtual void allocate();
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
@ -47,6 +47,8 @@ PairDPDExt::PairDPDExt(LAMMPS *lmp) : Pair(lmp)
|
||||
|
||||
PairDPDExt::~PairDPDExt()
|
||||
{
|
||||
if (copymode) return;
|
||||
|
||||
if (allocated) {
|
||||
memory->destroy(setflag);
|
||||
memory->destroy(cutsq);
|
||||
|
||||
@ -45,12 +45,12 @@ class PairDPDExt : public Pair {
|
||||
double cut_global, temperature;
|
||||
int seed;
|
||||
double **cut;
|
||||
double **a0, **gamma, **gammaII, **gammaT;
|
||||
double **a0, **gamma, **gammaT;
|
||||
double **sigma, **sigmaT;
|
||||
double **ws, **wsT;
|
||||
class RanMars *random;
|
||||
|
||||
void allocate();
|
||||
virtual void allocate();
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
@ -73,6 +73,7 @@ fi
|
||||
|
||||
if (test $1 = "DPD-BASIC") then
|
||||
depend GPU
|
||||
depend KOKKOS
|
||||
depend OPENMP
|
||||
depend INTEL
|
||||
fi
|
||||
|
||||
@ -30,6 +30,8 @@ action () {
|
||||
|
||||
action compute_fep.cpp
|
||||
action compute_fep.h
|
||||
action compute_fep_ta.cpp
|
||||
action compute_fep_ta.h
|
||||
action fix_adapt_fep.cpp
|
||||
action fix_adapt_fep.h
|
||||
action pair_coul_cut_soft.cpp
|
||||
|
||||
517
src/FEP/compute_fep_ta.cpp
Normal file
517
src/FEP/compute_fep_ta.cpp
Normal file
@ -0,0 +1,517 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Shifeng Ke (Zhejiang University)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "compute_fep_ta.h"
|
||||
|
||||
#include "angle.h"
|
||||
#include "atom.h"
|
||||
#include "bond.h"
|
||||
#include "comm.h"
|
||||
#include "dihedral.h"
|
||||
#include "domain.h"
|
||||
#include "error.h"
|
||||
#include "fix.h"
|
||||
#include "force.h"
|
||||
#include "improper.h"
|
||||
#include "kspace.h"
|
||||
#include "memory.h"
|
||||
#include "modify.h"
|
||||
#include "neighbor.h"
|
||||
#include "pair.h"
|
||||
#include "timer.h"
|
||||
#include "update.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
enum { X, Y, Z };
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ComputeFEPTA::ComputeFEPTA(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg)
|
||||
{
|
||||
if (narg < 6) error->all(FLERR, "Illegal number of arguments in compute fep/ta");
|
||||
|
||||
scalar_flag = 0;
|
||||
vector_flag = 1;
|
||||
size_vector = 3;
|
||||
extvector = 0;
|
||||
|
||||
vector = new double[size_vector];
|
||||
|
||||
fepinitflag = 0; // avoid init to run entirely when called by write_data
|
||||
|
||||
temp_fep = utils::numeric(FLERR, arg[3], false, lmp);
|
||||
|
||||
if (strcmp(arg[4], "xy") == 0) {
|
||||
tan_axis1 = X;
|
||||
tan_axis2 = Y;
|
||||
norm_axis = Z;
|
||||
} else if (strcmp(arg[4], "xz") == 0) {
|
||||
tan_axis1 = X;
|
||||
tan_axis2 = Z;
|
||||
norm_axis = Y;
|
||||
} else if (strcmp(arg[4], "yz") == 0) {
|
||||
tan_axis1 = Y;
|
||||
tan_axis2 = Z;
|
||||
norm_axis = X;
|
||||
} else
|
||||
error->all(FLERR, "Illegal arguments in compute fep/ta");
|
||||
|
||||
scale_factor = utils::numeric(FLERR, arg[5], false, lmp);
|
||||
|
||||
// optional keywords
|
||||
|
||||
tailflag = 0;
|
||||
|
||||
int iarg = 6;
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg], "tail") == 0) {
|
||||
if (iarg + 2 > narg) error->all(FLERR, "Illegal optional keyword in compute fep/ta");
|
||||
tailflag = utils::logical(FLERR, arg[iarg + 1], false, lmp);
|
||||
iarg += 2;
|
||||
} else
|
||||
error->all(FLERR, "Illegal optional keyword in compute fep/ta");
|
||||
}
|
||||
|
||||
// allocate space for position, force, energy, virial arrays
|
||||
|
||||
x_orig = nullptr;
|
||||
f_orig = nullptr;
|
||||
peatom_orig = keatom_orig = nullptr;
|
||||
pvatom_orig = kvatom_orig = nullptr;
|
||||
|
||||
allocate_storage();
|
||||
|
||||
fixgpu = nullptr;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ComputeFEPTA::~ComputeFEPTA()
|
||||
{
|
||||
delete[] vector;
|
||||
|
||||
deallocate_storage();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::init()
|
||||
{
|
||||
int i, j;
|
||||
|
||||
if (!fepinitflag) // avoid init to run entirely when called by write_data
|
||||
fepinitflag = 1;
|
||||
else
|
||||
return;
|
||||
|
||||
// setup and error checks
|
||||
|
||||
if (domain->dimension == 2) { error->all(FLERR, "Cannot compute fep/ta in 2d simulation"); }
|
||||
|
||||
if (tailflag) {
|
||||
if (force->pair->tail_flag == 0)
|
||||
error->all(FLERR,
|
||||
"Compute fep/ta tail when pair style does not "
|
||||
"compute tail corrections");
|
||||
}
|
||||
|
||||
// detect if package gpu is present
|
||||
|
||||
int ifixgpu = modify->find_fix("package_gpu");
|
||||
if (ifixgpu >= 0) fixgpu = modify->fix[ifixgpu];
|
||||
|
||||
if (comm->me == 0) {
|
||||
auto mesg = fmt::format("FEP/TA settings ...\n temperature = {:f}\n", temp_fep);
|
||||
mesg += fmt::format(" scale factor = {:f}\n", scale_factor);
|
||||
mesg += fmt::format(" tail {}\n", (tailflag ? "yes" : "no"));
|
||||
utils::logmesg(lmp, mesg);
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::compute_vector()
|
||||
{
|
||||
double pe0, pe1;
|
||||
|
||||
eflag = 1;
|
||||
vflag = 0;
|
||||
|
||||
invoked_vector = update->ntimestep;
|
||||
|
||||
if (atom->nmax > nmax) { // reallocate working arrays if necessary
|
||||
deallocate_storage();
|
||||
allocate_storage();
|
||||
}
|
||||
|
||||
backup_xfev(); // backup position, force, energy, virial array values
|
||||
backup_box(); // backup box size
|
||||
|
||||
timer->stamp();
|
||||
if (force->pair && force->pair->compute_flag) {
|
||||
force->pair->compute(eflag, vflag);
|
||||
timer->stamp(Timer::PAIR);
|
||||
}
|
||||
|
||||
if (atom->molecular != Atom::ATOMIC) {
|
||||
if (force->bond) force->bond->compute(eflag, vflag);
|
||||
if (force->angle) force->angle->compute(eflag, vflag);
|
||||
if (force->dihedral) force->dihedral->compute(eflag, vflag);
|
||||
if (force->improper) force->improper->compute(eflag, vflag);
|
||||
timer->stamp(Timer::BOND);
|
||||
}
|
||||
|
||||
if (force->kspace && force->kspace->compute_flag) {
|
||||
force->kspace->compute(eflag, vflag);
|
||||
timer->stamp(Timer::KSPACE);
|
||||
}
|
||||
|
||||
// accumulate force/energy/virial from /gpu pair styles
|
||||
// this is required as to empty the answer queue,
|
||||
// otherwise the force compute on the GPU in the next step would be incorrect
|
||||
if (fixgpu) fixgpu->post_force(vflag);
|
||||
|
||||
pe0 = compute_pe();
|
||||
|
||||
change_box();
|
||||
|
||||
timer->stamp();
|
||||
if (force->pair && force->pair->compute_flag) {
|
||||
force->pair->compute(eflag, vflag);
|
||||
timer->stamp(Timer::PAIR);
|
||||
}
|
||||
|
||||
if (atom->molecular != Atom::ATOMIC) {
|
||||
if (force->bond) force->bond->compute(eflag, vflag);
|
||||
if (force->angle) force->angle->compute(eflag, vflag);
|
||||
if (force->dihedral) force->dihedral->compute(eflag, vflag);
|
||||
if (force->improper) force->improper->compute(eflag, vflag);
|
||||
timer->stamp(Timer::BOND);
|
||||
}
|
||||
|
||||
if (force->kspace && force->kspace->compute_flag) {
|
||||
force->kspace->compute(eflag, vflag);
|
||||
timer->stamp(Timer::KSPACE);
|
||||
}
|
||||
|
||||
// accumulate force/energy/virial from /gpu pair styles
|
||||
// this is required as to empty the answer queue,
|
||||
// otherwise the force compute on the GPU in the next step would be incorrect
|
||||
if (fixgpu) fixgpu->post_force(vflag);
|
||||
|
||||
pe1 = compute_pe();
|
||||
|
||||
restore_xfev(); // restore position, force, energy, virial array values
|
||||
restore_box(); // restore box size
|
||||
|
||||
vector[0] = pe1 - pe0;
|
||||
vector[1] = exp(-(pe1 - pe0) / (force->boltz * temp_fep));
|
||||
vector[2] = area_orig * (scale_factor - 1.0);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
obtain potential energy from lammps accumulators
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double ComputeFEPTA::compute_pe()
|
||||
{
|
||||
double eng, eng_potential;
|
||||
|
||||
eng = 0.0;
|
||||
if (force->pair) eng = force->pair->eng_vdwl + force->pair->eng_coul;
|
||||
|
||||
if (atom->molecular != Atom::ATOMIC) {
|
||||
if (force->bond) eng += force->bond->energy;
|
||||
if (force->angle) eng += force->angle->energy;
|
||||
if (force->dihedral) eng += force->dihedral->energy;
|
||||
if (force->improper) eng += force->improper->energy;
|
||||
}
|
||||
|
||||
MPI_Allreduce(&eng, &eng_potential, 1, MPI_DOUBLE, MPI_SUM, world);
|
||||
|
||||
if (tailflag) {
|
||||
double volume = domain->xprd * domain->yprd * domain->zprd;
|
||||
eng_potential += force->pair->etail / volume;
|
||||
}
|
||||
|
||||
if (force->kspace) eng_potential += force->kspace->energy;
|
||||
|
||||
return eng_potential;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
apply changes to box
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::change_box()
|
||||
{
|
||||
int i;
|
||||
double **x = atom->x;
|
||||
int natom = atom->nlocal + atom->nghost;
|
||||
|
||||
for (i = 0; i < natom; i++) domain->x2lamda(x[i], x[i]);
|
||||
|
||||
domain->boxhi[tan_axis1] *= sqrt(scale_factor);
|
||||
domain->boxlo[tan_axis1] *= sqrt(scale_factor);
|
||||
domain->boxhi[tan_axis2] *= sqrt(scale_factor);
|
||||
domain->boxlo[tan_axis2] *= sqrt(scale_factor);
|
||||
domain->boxhi[norm_axis] /= scale_factor;
|
||||
domain->boxlo[norm_axis] /= scale_factor;
|
||||
|
||||
domain->set_global_box();
|
||||
domain->set_local_box();
|
||||
|
||||
// remap atom position
|
||||
for (i = 0; i < natom; i++) domain->lamda2x(x[i], x[i]);
|
||||
|
||||
if (force->kspace) force->kspace->setup();
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
backup box size
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::backup_box()
|
||||
{
|
||||
for (int i = 0; i < domain->dimension; i++) {
|
||||
boxhi_orig[i] = domain->boxhi[i];
|
||||
boxlo_orig[i] = domain->boxlo[i];
|
||||
}
|
||||
|
||||
area_orig = domain->prd[tan_axis1] * domain->prd[tan_axis2];
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
restore box size to original values
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::restore_box()
|
||||
{
|
||||
for (int i = 0; i < domain->dimension; i++) {
|
||||
domain->boxhi[i] = boxhi_orig[i];
|
||||
domain->boxlo[i] = boxlo_orig[i];
|
||||
}
|
||||
|
||||
domain->set_global_box();
|
||||
domain->set_local_box();
|
||||
|
||||
if (force->kspace) force->kspace->setup();
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
manage storage for position, force, energy, virial arrays
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::allocate_storage()
|
||||
{
|
||||
nmax = atom->nmax;
|
||||
memory->create(x_orig, nmax, 3, "fep:x_orig");
|
||||
memory->create(f_orig, nmax, 3, "fep:f_orig");
|
||||
memory->create(peatom_orig, nmax, "fep:peatom_orig");
|
||||
memory->create(pvatom_orig, nmax, 6, "fep:pvatom_orig");
|
||||
if (force->kspace) {
|
||||
memory->create(keatom_orig, nmax, "fep:keatom_orig");
|
||||
memory->create(kvatom_orig, nmax, 6, "fep:kvatom_orig");
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::deallocate_storage()
|
||||
{
|
||||
memory->destroy(x_orig);
|
||||
memory->destroy(f_orig);
|
||||
memory->destroy(peatom_orig);
|
||||
memory->destroy(pvatom_orig);
|
||||
memory->destroy(keatom_orig);
|
||||
memory->destroy(kvatom_orig);
|
||||
|
||||
x_orig = nullptr;
|
||||
f_orig = nullptr;
|
||||
peatom_orig = keatom_orig = nullptr;
|
||||
pvatom_orig = kvatom_orig = nullptr;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
backup and restore arrays with position, force, energy, virial
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::backup_xfev()
|
||||
{
|
||||
int i;
|
||||
|
||||
int natom = atom->nlocal + atom->nghost;
|
||||
|
||||
double **x = atom->x;
|
||||
for (i = 0; i < natom; i++) {
|
||||
x_orig[i][0] = x[i][0];
|
||||
x_orig[i][1] = x[i][1];
|
||||
x_orig[i][2] = x[i][2];
|
||||
}
|
||||
|
||||
double **f = atom->f;
|
||||
for (i = 0; i < natom; i++) {
|
||||
f_orig[i][0] = f[i][0];
|
||||
f_orig[i][1] = f[i][1];
|
||||
f_orig[i][2] = f[i][2];
|
||||
}
|
||||
|
||||
eng_vdwl_orig = force->pair->eng_vdwl;
|
||||
eng_coul_orig = force->pair->eng_coul;
|
||||
|
||||
if (atom->molecular != Atom::ATOMIC) {
|
||||
if (force->bond) eng_bond_orig = force->bond->energy;
|
||||
if (force->angle) eng_angle_orig = force->angle->energy;
|
||||
if (force->dihedral) eng_dihedral_orig = force->dihedral->energy;
|
||||
if (force->improper) eng_improper_orig = force->improper->energy;
|
||||
}
|
||||
|
||||
pvirial_orig[0] = force->pair->virial[0];
|
||||
pvirial_orig[1] = force->pair->virial[1];
|
||||
pvirial_orig[2] = force->pair->virial[2];
|
||||
pvirial_orig[3] = force->pair->virial[3];
|
||||
pvirial_orig[4] = force->pair->virial[4];
|
||||
pvirial_orig[5] = force->pair->virial[5];
|
||||
|
||||
if (update->eflag_atom) {
|
||||
double *peatom = force->pair->eatom;
|
||||
for (i = 0; i < natom; i++) peatom_orig[i] = peatom[i];
|
||||
}
|
||||
if (update->vflag_atom) {
|
||||
double **pvatom = force->pair->vatom;
|
||||
for (i = 0; i < natom; i++) {
|
||||
pvatom_orig[i][0] = pvatom[i][0];
|
||||
pvatom_orig[i][1] = pvatom[i][1];
|
||||
pvatom_orig[i][2] = pvatom[i][2];
|
||||
pvatom_orig[i][3] = pvatom[i][3];
|
||||
pvatom_orig[i][4] = pvatom[i][4];
|
||||
pvatom_orig[i][5] = pvatom[i][5];
|
||||
}
|
||||
}
|
||||
|
||||
if (force->kspace) {
|
||||
energy_orig = force->kspace->energy;
|
||||
kvirial_orig[0] = force->kspace->virial[0];
|
||||
kvirial_orig[1] = force->kspace->virial[1];
|
||||
kvirial_orig[2] = force->kspace->virial[2];
|
||||
kvirial_orig[3] = force->kspace->virial[3];
|
||||
kvirial_orig[4] = force->kspace->virial[4];
|
||||
kvirial_orig[5] = force->kspace->virial[5];
|
||||
|
||||
if (update->eflag_atom) {
|
||||
double *keatom = force->kspace->eatom;
|
||||
for (i = 0; i < natom; i++) keatom_orig[i] = keatom[i];
|
||||
}
|
||||
if (update->vflag_atom) {
|
||||
double **kvatom = force->kspace->vatom;
|
||||
for (i = 0; i < natom; i++) {
|
||||
kvatom_orig[i][0] = kvatom[i][0];
|
||||
kvatom_orig[i][1] = kvatom[i][1];
|
||||
kvatom_orig[i][2] = kvatom[i][2];
|
||||
kvatom_orig[i][3] = kvatom[i][3];
|
||||
kvatom_orig[i][4] = kvatom[i][4];
|
||||
kvatom_orig[i][5] = kvatom[i][5];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ComputeFEPTA::restore_xfev()
|
||||
{
|
||||
int i;
|
||||
|
||||
int natom = atom->nlocal + atom->nghost;
|
||||
|
||||
double **x = atom->x;
|
||||
for (i = 0; i < natom; i++) {
|
||||
x[i][0] = x_orig[i][0];
|
||||
x[i][1] = x_orig[i][1];
|
||||
x[i][2] = x_orig[i][2];
|
||||
}
|
||||
|
||||
double **f = atom->f;
|
||||
for (i = 0; i < natom; i++) {
|
||||
f[i][0] = f_orig[i][0];
|
||||
f[i][1] = f_orig[i][1];
|
||||
f[i][2] = f_orig[i][2];
|
||||
}
|
||||
|
||||
force->pair->eng_vdwl = eng_vdwl_orig;
|
||||
force->pair->eng_coul = eng_coul_orig;
|
||||
|
||||
if (atom->molecular != Atom::ATOMIC) {
|
||||
if (force->bond) force->bond->energy = eng_bond_orig;
|
||||
if (force->angle) force->angle->energy = eng_angle_orig;
|
||||
if (force->dihedral) force->dihedral->energy = eng_dihedral_orig;
|
||||
if (force->improper) force->improper->energy = eng_improper_orig;
|
||||
}
|
||||
|
||||
force->pair->virial[0] = pvirial_orig[0];
|
||||
force->pair->virial[1] = pvirial_orig[1];
|
||||
force->pair->virial[2] = pvirial_orig[2];
|
||||
force->pair->virial[3] = pvirial_orig[3];
|
||||
force->pair->virial[4] = pvirial_orig[4];
|
||||
force->pair->virial[5] = pvirial_orig[5];
|
||||
|
||||
if (update->eflag_atom) {
|
||||
double *peatom = force->pair->eatom;
|
||||
for (i = 0; i < natom; i++) peatom[i] = peatom_orig[i];
|
||||
}
|
||||
if (update->vflag_atom) {
|
||||
double **pvatom = force->pair->vatom;
|
||||
for (i = 0; i < natom; i++) {
|
||||
pvatom[i][0] = pvatom_orig[i][0];
|
||||
pvatom[i][1] = pvatom_orig[i][1];
|
||||
pvatom[i][2] = pvatom_orig[i][2];
|
||||
pvatom[i][3] = pvatom_orig[i][3];
|
||||
pvatom[i][4] = pvatom_orig[i][4];
|
||||
pvatom[i][5] = pvatom_orig[i][5];
|
||||
}
|
||||
}
|
||||
|
||||
if (force->kspace) {
|
||||
force->kspace->energy = energy_orig;
|
||||
force->kspace->virial[0] = kvirial_orig[0];
|
||||
force->kspace->virial[1] = kvirial_orig[1];
|
||||
force->kspace->virial[2] = kvirial_orig[2];
|
||||
force->kspace->virial[3] = kvirial_orig[3];
|
||||
force->kspace->virial[4] = kvirial_orig[4];
|
||||
force->kspace->virial[5] = kvirial_orig[5];
|
||||
|
||||
if (update->eflag_atom) {
|
||||
double *keatom = force->kspace->eatom;
|
||||
for (i = 0; i < natom; i++) keatom[i] = keatom_orig[i];
|
||||
}
|
||||
if (update->vflag_atom) {
|
||||
double **kvatom = force->kspace->vatom;
|
||||
for (i = 0; i < natom; i++) {
|
||||
kvatom[i][0] = kvatom_orig[i][0];
|
||||
kvatom[i][1] = kvatom_orig[i][1];
|
||||
kvatom[i][2] = kvatom_orig[i][2];
|
||||
kvatom[i][3] = kvatom_orig[i][3];
|
||||
kvatom[i][4] = kvatom_orig[i][4];
|
||||
kvatom[i][5] = kvatom_orig[i][5];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
89
src/FEP/compute_fep_ta.h
Normal file
89
src/FEP/compute_fep_ta.h
Normal file
@ -0,0 +1,89 @@
|
||||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Shifeng Ke (Zhejiang University)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef COMPUTE_CLASS
|
||||
// clang-format off
|
||||
ComputeStyle(fep/ta,ComputeFEPTA);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef COMPUTE_FEP_TA_H
|
||||
#define COMPUTE_FEP_TA_H
|
||||
|
||||
#include "compute.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class ComputeFEPTA : public Compute {
|
||||
public:
|
||||
ComputeFEPTA(class LAMMPS *, int, char **); // compute ID groupID fep/ta temp xy/xz/yz scale_factor
|
||||
~ComputeFEPTA() override;
|
||||
void init() override;
|
||||
void compute_vector() override;
|
||||
|
||||
private:
|
||||
int tailflag;
|
||||
int fepinitflag;
|
||||
int eflag, vflag;
|
||||
double temp_fep;
|
||||
double scale_factor;
|
||||
int tan_axis1, tan_axis2, norm_axis;
|
||||
|
||||
double boxlo_orig[3], boxhi_orig[3];
|
||||
double area_orig;
|
||||
|
||||
int nmax;
|
||||
double **x_orig;
|
||||
double **f_orig;
|
||||
double eng_vdwl_orig, eng_coul_orig;
|
||||
double eng_bond_orig, eng_angle_orig, eng_dihedral_orig, eng_improper_orig;
|
||||
double pvirial_orig[6];
|
||||
double *peatom_orig, **pvatom_orig;
|
||||
double energy_orig;
|
||||
double kvirial_orig[6];
|
||||
double *keatom_orig, **kvatom_orig;
|
||||
|
||||
class Fix *fixgpu;
|
||||
|
||||
double compute_pe();
|
||||
void change_box();
|
||||
void backup_box();
|
||||
void restore_box();
|
||||
void allocate_storage();
|
||||
void deallocate_storage();
|
||||
void backup_xfev();
|
||||
void restore_xfev();
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ERROR/WARNING messages:
|
||||
|
||||
E: Illegal ... command
|
||||
|
||||
Self-explanatory. Check the input script syntax and compare to the
|
||||
documentation for the command. You can use -echo screen as a
|
||||
command-line option when running LAMMPS to see the offending line.
|
||||
|
||||
E: Cannot compute fep/ta in 2d simulation
|
||||
|
||||
Self-explanatory.
|
||||
|
||||
*/
|
||||
@ -230,6 +230,14 @@ action pair_coul_long_kokkos.cpp pair_coul_long.cpp
|
||||
action pair_coul_long_kokkos.h pair_coul_long.h
|
||||
action pair_coul_wolf_kokkos.cpp
|
||||
action pair_coul_wolf_kokkos.h
|
||||
action pair_dpd_kokkos.h pair_dpd.h
|
||||
action pair_dpd_kokkos.cpp pair_dpd.cpp
|
||||
action pair_dpd_ext_kokkos.cpp pair_dpd_ext.cpp
|
||||
action pair_dpd_ext_kokkos.h pair_dpd_ext.h
|
||||
action pair_dpd_ext_tstat_kokkos.h pair_dpd_ext_tstat.h
|
||||
action pair_dpd_ext_tstat_kokkos.cpp pair_dpd_ext_tstat.cpp
|
||||
action pair_dpd_tstat_kokkos.h pair_dpd_tstat.h
|
||||
action pair_dpd_tstat_kokkos.cpp pair_dpd_tstat.cpp
|
||||
action pair_dpd_fdt_energy_kokkos.cpp pair_dpd_fdt_energy.cpp
|
||||
action pair_dpd_fdt_energy_kokkos.h pair_dpd_fdt_energy.h
|
||||
action pair_eam_kokkos.cpp pair_eam.cpp
|
||||
|
||||
@ -205,7 +205,6 @@ void FixACKS2ReaxFFKokkos<DeviceType>::pre_force(int vflag)
|
||||
type = atomKK->k_type.view<DeviceType>();
|
||||
mask = atomKK->k_mask.view<DeviceType>();
|
||||
nlocal = atomKK->nlocal;
|
||||
nall = atom->nlocal + atom->nghost;
|
||||
newton_pair = force->newton_pair;
|
||||
|
||||
k_params.template sync<DeviceType>();
|
||||
@ -219,7 +218,7 @@ void FixACKS2ReaxFFKokkos<DeviceType>::pre_force(int vflag)
|
||||
d_ilist = k_list->d_ilist;
|
||||
|
||||
nn = list->inum;
|
||||
NN = list->inum + list->gnum;
|
||||
NN = atom->nlocal + atom->nghost;
|
||||
|
||||
copymode = 1;
|
||||
|
||||
@ -526,7 +525,7 @@ void FixACKS2ReaxFFKokkos<DeviceType>::allocate_array()
|
||||
if (efield) get_chi_field();
|
||||
|
||||
// init_storage
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagACKS2Zero>(0,NN),*this);
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagACKS2Zero>(0,nn),*this);
|
||||
|
||||
}
|
||||
|
||||
@ -1377,9 +1376,6 @@ int FixACKS2ReaxFFKokkos<DeviceType>::bicgstab_solve()
|
||||
template<class DeviceType>
|
||||
void FixACKS2ReaxFFKokkos<DeviceType>::calculate_Q()
|
||||
{
|
||||
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagACKS2CalculateQ1>(0,nn),*this);
|
||||
|
||||
pack_flag = 2;
|
||||
//comm->forward_comm( this ); //Dist_vector( s );
|
||||
k_s.modify<DeviceType>();
|
||||
@ -1388,8 +1384,7 @@ void FixACKS2ReaxFFKokkos<DeviceType>::calculate_Q()
|
||||
k_s.modify<LMPHostType>();
|
||||
k_s.sync<DeviceType>();
|
||||
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagACKS2CalculateQ2>(0,NN),*this);
|
||||
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagACKS2CalculateQ>(0,NN),*this);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
@ -1822,22 +1817,25 @@ void FixACKS2ReaxFFKokkos<DeviceType>::operator() (TagACKS2Norm3, const int &ii,
|
||||
|
||||
template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixACKS2ReaxFFKokkos<DeviceType>::operator() (TagACKS2CalculateQ1, const int &ii) const
|
||||
void FixACKS2ReaxFFKokkos<DeviceType>::operator() (TagACKS2CalculateQ, const int &i) const
|
||||
{
|
||||
const int i = d_ilist[ii];
|
||||
if (mask[i] & groupbit) {
|
||||
|
||||
/* backup s */
|
||||
for (int k = nprev-1; k > 0; --k) {
|
||||
d_s_hist(i,k) = d_s_hist(i,k-1);
|
||||
d_s_hist_X(i,k) = d_s_hist_X(i,k-1);
|
||||
q(i) = d_s(i);
|
||||
|
||||
if (i < nlocal) {
|
||||
/* backup s */
|
||||
for (int k = nprev-1; k > 0; --k) {
|
||||
d_s_hist(i,k) = d_s_hist(i,k-1);
|
||||
d_s_hist_X(i,k) = d_s_hist_X(i,k-1);
|
||||
}
|
||||
d_s_hist(i,0) = d_s[i];
|
||||
d_s_hist_X(i,0) = d_s[NN+i];
|
||||
}
|
||||
d_s_hist(i,0) = d_s[i];
|
||||
d_s_hist_X(i,0) = d_s[NN+i];
|
||||
}
|
||||
|
||||
// last two rows
|
||||
if (last_rows_flag && ii == 0) {
|
||||
if (last_rows_flag && i == 0) {
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
for (int k = nprev-1; k > 0; --k)
|
||||
d_s_hist_last(i,k) = d_s_hist_last(i,k-1);
|
||||
@ -1848,17 +1846,6 @@ void FixACKS2ReaxFFKokkos<DeviceType>::operator() (TagACKS2CalculateQ1, const in
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void FixACKS2ReaxFFKokkos<DeviceType>::operator() (TagACKS2CalculateQ2, const int &ii) const
|
||||
{
|
||||
const int i = d_ilist[ii];
|
||||
if (mask[i] & groupbit)
|
||||
q(i) = d_s(i);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void FixACKS2ReaxFFKokkos<DeviceType>::cleanup_copy()
|
||||
{
|
||||
|
||||
@ -54,8 +54,7 @@ struct TagACKS2Precon1B{};
|
||||
struct TagACKS2Precon2{};
|
||||
struct TagACKS2Add{};
|
||||
struct TagACKS2ZeroQGhosts{};
|
||||
struct TagACKS2CalculateQ1{};
|
||||
struct TagACKS2CalculateQ2{};
|
||||
struct TagACKS2CalculateQ{};
|
||||
|
||||
template<class DeviceType>
|
||||
class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF {
|
||||
@ -152,10 +151,7 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF {
|
||||
void operator()(TagACKS2ZeroQGhosts, const int&) const;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagACKS2CalculateQ1, const int&) const;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()(TagACKS2CalculateQ2, const int&) const;
|
||||
void operator()(TagACKS2CalculateQ, const int&) const;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
double calculate_H_k(const F_FLOAT &r, const F_FLOAT &shld) const;
|
||||
|
||||
@ -208,7 +208,6 @@ void FixQEqReaxFFKokkos<DeviceType>::pre_force(int /*vflag*/)
|
||||
d_neighbors = k_list->d_neighbors;
|
||||
d_ilist = k_list->d_ilist;
|
||||
nn = list->inum;
|
||||
NN = list->inum + list->gnum;
|
||||
|
||||
copymode = 1;
|
||||
|
||||
@ -375,7 +374,7 @@ void FixQEqReaxFFKokkos<DeviceType>::allocate_array()
|
||||
|
||||
if (efield) get_chi_field();
|
||||
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagQEqZero>(0,NN),*this);
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagQEqZero>(0,nn),*this);
|
||||
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
@ -872,7 +871,8 @@ void FixQEqReaxFFKokkos<DeviceType>::sparse_matvec_kokkos(typename AT::t_ffloat2
|
||||
}
|
||||
|
||||
if (neighflag != FULL) {
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagQEqZeroQGhosts>(nn,NN),*this);
|
||||
int nall = nlocal + atomKK->nghost;
|
||||
Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagQEqZeroQGhosts>(atom->nlocal,nall),*this);
|
||||
|
||||
if (need_dup)
|
||||
dup_o.reset_except(d_o);
|
||||
|
||||
463
src/KOKKOS/pair_dpd_ext_kokkos.cpp
Normal file
463
src/KOKKOS/pair_dpd_ext_kokkos.cpp
Normal file
@ -0,0 +1,463 @@
|
||||
// clang-format off
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Matt Bettencourt (NVIDIA)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "pair_dpd_ext_kokkos.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "atom_kokkos.h"
|
||||
#include "memory_kokkos.h"
|
||||
#include "comm.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "memory.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "random_mars.h"
|
||||
#include "update.h"
|
||||
#include "atom_masks.h"
|
||||
#include "kokkos.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
#define EPSILON 1.0e-10
|
||||
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDExtKokkos<DeviceType>::PairDPDExtKokkos(class LAMMPS *lmp) :
|
||||
PairDPDExt(lmp) ,
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool(0 /* unused */, lmp)
|
||||
#else
|
||||
rand_pool()
|
||||
#endif
|
||||
{
|
||||
kokkosable = 1;
|
||||
atomKK = (AtomKokkos *) atom;
|
||||
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
|
||||
|
||||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDExtKokkos<DeviceType>::~PairDPDExtKokkos() {
|
||||
if (copymode) return;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.destroy();
|
||||
#endif
|
||||
|
||||
memoryKK->destroy_kokkos(k_eatom,eatom);
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
|
||||
memoryKK->destroy_kokkos(k_cutsq,cutsq);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDExtKokkos<DeviceType>::init_style()
|
||||
{
|
||||
PairDPDExt::init_style();
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.init(random,seed);
|
||||
#else
|
||||
typedef Kokkos::Experimental::UniqueToken<
|
||||
DeviceType, Kokkos::Experimental::UniqueTokenScope::Global> unique_token_type;
|
||||
unique_token_type unique_token;
|
||||
rand_pool.init(seed + comm->me,unique_token.size());
|
||||
#endif
|
||||
|
||||
neighflag = lmp->kokkos->neighflag;
|
||||
|
||||
if (force->newton_pair == 0 || neighflag == FULL)
|
||||
error->all(FLERR,"Must use half neighbor list style and newton on with pair dpd/ext/kk");
|
||||
|
||||
auto request = neighbor->find_request(this);
|
||||
request->set_kokkos_host(std::is_same<DeviceType,LMPHostType>::value &&
|
||||
!std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
request->set_kokkos_device(std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDExtKokkos<DeviceType>::compute(int eflagin, int vflagin)
|
||||
{
|
||||
eflag = eflagin; vflag = vflagin;
|
||||
|
||||
ev_init(eflag,vflag,0);
|
||||
|
||||
if (eflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_eatom,eatom);
|
||||
memoryKK->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom");
|
||||
d_eatom = k_eatom.template view<DeviceType>();
|
||||
}
|
||||
if (vflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"pair:vatom");
|
||||
d_vatom = k_vatom.template view<DeviceType>();
|
||||
}
|
||||
|
||||
atomKK->sync(execution_space,X_MASK | V_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
v = atomKK->k_v.view<DeviceType>();
|
||||
f = atomKK->k_f.view<DeviceType>();
|
||||
type = atomKK->k_type.view<DeviceType>();
|
||||
|
||||
k_cutsq.template sync<DeviceType>();
|
||||
k_params.template sync<DeviceType>();
|
||||
|
||||
special_lj[0] = force->special_lj[0];
|
||||
special_lj[1] = force->special_lj[1];
|
||||
special_lj[2] = force->special_lj[2];
|
||||
special_lj[3] = force->special_lj[3];
|
||||
|
||||
nlocal = atom->nlocal;
|
||||
dtinvsqrt = 1.0/sqrt(update->dt);
|
||||
|
||||
NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
|
||||
d_numneigh = k_list->d_numneigh;
|
||||
d_neighbors = k_list->d_neighbors;
|
||||
d_ilist = k_list->d_ilist;
|
||||
|
||||
need_dup = lmp->kokkos->need_dup<DeviceType>();
|
||||
if (need_dup) {
|
||||
dup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(f);
|
||||
dup_eatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(d_eatom);
|
||||
dup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(d_vatom);
|
||||
} else {
|
||||
ndup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(f);
|
||||
ndup_eatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(d_eatom);
|
||||
ndup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(d_vatom);
|
||||
}
|
||||
|
||||
// loop over neighbors of my atoms
|
||||
|
||||
int inum = list->inum;
|
||||
EV_FLOAT ev;
|
||||
copymode = 1;
|
||||
if (neighflag == HALF) {
|
||||
if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDExtKokkos<HALF,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDExtKokkos<HALF,0> >(0,inum),*this);
|
||||
} else if (neighflag == HALFTHREAD) {
|
||||
if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDExtKokkos<HALFTHREAD,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDExtKokkos<HALFTHREAD,0> >(0,inum),*this);
|
||||
}
|
||||
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(f, dup_f);
|
||||
|
||||
if (eflag_global) eng_vdwl += ev.evdwl;
|
||||
if (vflag_global) {
|
||||
virial[0] += ev.v[0];
|
||||
virial[1] += ev.v[1];
|
||||
virial[2] += ev.v[2];
|
||||
virial[3] += ev.v[3];
|
||||
virial[4] += ev.v[4];
|
||||
virial[5] += ev.v[5];
|
||||
}
|
||||
|
||||
if (vflag_fdotr) pair_virial_fdotr_compute(this);
|
||||
|
||||
if (eflag_atom) {
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(d_eatom, dup_eatom);
|
||||
k_eatom.template modify<DeviceType>();
|
||||
k_eatom.template sync<LMPHostType>();
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(d_vatom, dup_vatom);
|
||||
k_vatom.template modify<DeviceType>();
|
||||
k_vatom.template sync<LMPHostType>();
|
||||
}
|
||||
|
||||
copymode = 0;
|
||||
|
||||
if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
else atomKK->modified(execution_space,F_MASK);
|
||||
|
||||
// free duplicated memory
|
||||
if (need_dup) {
|
||||
dup_f = decltype(dup_f)();
|
||||
dup_eatom = decltype(dup_eatom)();
|
||||
dup_vatom = decltype(dup_vatom)();
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDExtKokkos<DeviceType>::operator() (TagDPDExtKokkos<NEIGHFLAG,EVFLAG>, const int &ii) const {
|
||||
EV_FLOAT ev;
|
||||
this->template operator()<NEIGHFLAG,EVFLAG>(TagDPDExtKokkos<NEIGHFLAG,EVFLAG>(), ii, ev);
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDExtKokkos<DeviceType>::operator() (TagDPDExtKokkos<NEIGHFLAG,EVFLAG>, const int &ii, EV_FLOAT &ev) const {
|
||||
|
||||
// The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_f = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f);
|
||||
auto a_f = v_f.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
int i,j,jj,jnum,itype,jtype;
|
||||
double xtmp,ytmp,ztmp,delx,dely,delz,fpairx,fpairy,fpairz,fpair;
|
||||
double vxtmp,vytmp,vztmp,delvx,delvy,delvz;
|
||||
double rsq,r,rinv,dot,wd,wdPar,wdPerp,randnum,randnumx,randnumy,randnumz,factor_dpd;
|
||||
double fx = 0,fy = 0,fz = 0;
|
||||
double evdwl = 0;
|
||||
i = d_ilist[ii];
|
||||
xtmp = x(i,0);
|
||||
ytmp = x(i,1);
|
||||
ztmp = x(i,2);
|
||||
vxtmp = v(i,0);
|
||||
vytmp = v(i,1);
|
||||
vztmp = v(i,2);
|
||||
itype = type(i);
|
||||
jnum = d_numneigh[i];
|
||||
rand_type rand_gen = rand_pool.get_state();
|
||||
for (jj = 0; jj < jnum; jj++) {
|
||||
double P[3][3];
|
||||
j = d_neighbors(i,jj);
|
||||
factor_dpd = special_lj[sbmask(j)];
|
||||
j &= NEIGHMASK;
|
||||
|
||||
delx = xtmp - x(j,0);
|
||||
dely = ytmp - x(j,1);
|
||||
delz = ztmp - x(j,2);
|
||||
rsq = delx*delx + dely*dely + delz*delz;
|
||||
jtype = type(j);
|
||||
if (rsq < d_cutsq(itype,jtype)) {
|
||||
r = sqrt(rsq);
|
||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||
rinv = 1.0/r;
|
||||
delvx = vxtmp - v(j,0);
|
||||
delvy = vytmp - v(j,1);
|
||||
delvz = vztmp - v(j,2);
|
||||
dot = delx*delvx + dely*delvy + delz*delvz;
|
||||
|
||||
P[0][0] = 1.0 - delx*delx*rinv*rinv;
|
||||
P[0][1] = - delx*dely*rinv*rinv;
|
||||
P[0][2] = - delx*delz*rinv*rinv;
|
||||
|
||||
P[1][0] = P[0][1];
|
||||
P[1][1] = 1.0 - dely*dely*rinv*rinv;
|
||||
P[1][2] = - dely*delz*rinv*rinv;
|
||||
|
||||
P[2][0] = P[0][2];
|
||||
P[2][1] = P[1][2];
|
||||
P[2][2] = 1.0 - delz*delz*rinv*rinv;
|
||||
|
||||
wd = 1.0 - r/params(itype,jtype).cut;
|
||||
wdPar = pow(wd,params(itype,jtype).ws);
|
||||
wdPerp = pow(wd,params(itype,jtype).wsT);
|
||||
|
||||
randnum = rand_gen.normal();
|
||||
randnumx = rand_gen.normal();
|
||||
randnumy = rand_gen.normal();
|
||||
randnumz = rand_gen.normal();
|
||||
|
||||
// conservative force
|
||||
fpair = params(itype,jtype).a0*wd;
|
||||
|
||||
// drag force - parallel
|
||||
fpair -= params(itype,jtype).gamma*wdPar*wdPar*dot*rinv;
|
||||
|
||||
// random force - parallel
|
||||
fpair += params(itype,jtype).sigma*wdPar*randnum*dtinvsqrt;
|
||||
|
||||
fpairx = fpair*rinv*delx;
|
||||
fpairy = fpair*rinv*dely;
|
||||
fpairz = fpair*rinv*delz;
|
||||
|
||||
// drag force - perpendicular
|
||||
fpairx -= params(itype,jtype).gammaT*wdPerp*wdPerp*
|
||||
(P[0][0]*delvx + P[0][1]*delvy + P[0][2]*delvz);
|
||||
fpairy -= params(itype,jtype).gammaT*wdPerp*wdPerp*
|
||||
(P[1][0]*delvx + P[1][1]*delvy + P[1][2]*delvz);
|
||||
fpairz -= params(itype,jtype).gammaT*wdPerp*wdPerp*
|
||||
(P[2][0]*delvx + P[2][1]*delvy + P[2][2]*delvz);
|
||||
|
||||
// random force - perpendicular
|
||||
fpairx += params(itype,jtype).sigmaT*wdPerp*
|
||||
(P[0][0]*randnumx + P[0][1]*randnumy + P[0][2]*randnumz)*dtinvsqrt;
|
||||
fpairy += params(itype,jtype).sigmaT*wdPerp*
|
||||
(P[1][0]*randnumx + P[1][1]*randnumy + P[1][2]*randnumz)*dtinvsqrt;
|
||||
fpairz += params(itype,jtype).sigmaT*wdPerp*
|
||||
(P[2][0]*randnumx + P[2][1]*randnumy + P[2][2]*randnumz)*dtinvsqrt;
|
||||
|
||||
fpairx *= factor_dpd;
|
||||
fpairy *= factor_dpd;
|
||||
fpairz *= factor_dpd;
|
||||
|
||||
fx += fpairx;
|
||||
fy += fpairy;
|
||||
fz += fpairz;
|
||||
a_f(j,0) -= fpairx;
|
||||
a_f(j,1) -= fpairy;
|
||||
a_f(j,2) -= fpairz;
|
||||
|
||||
if (EVFLAG && eflag) {
|
||||
// unshifted eng of conservative term:
|
||||
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
||||
// eng shifted to 0.0 at cutoff
|
||||
evdwl = 0.5*params(itype,jtype).a0*params(itype,jtype).cut* wd*wd;
|
||||
evdwl *= factor_dpd;
|
||||
if (EVFLAG && eflag_global)
|
||||
ev.evdwl += evdwl;
|
||||
}
|
||||
if (EVFLAG && (eflag_atom || vflag_either))
|
||||
this->template ev_tally_xyz<NEIGHFLAG>(ev,i,j,evdwl,fpairx,fpairy,fpairz,delx,dely,delz);
|
||||
}
|
||||
}
|
||||
a_f(i,0) += fx;
|
||||
a_f(i,1) += fy;
|
||||
a_f(i,2) += fz;
|
||||
rand_pool.free_state(rand_gen);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDExtKokkos<DeviceType>::ev_tally_xyz(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &epair,
|
||||
const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz,
|
||||
const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const
|
||||
{
|
||||
// The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_eatom = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom);
|
||||
auto a_eatom = v_eatom.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
auto v_vatom = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom);
|
||||
auto a_vatom = v_vatom.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
if (eflag_atom) {
|
||||
const E_FLOAT epairhalf = 0.5 * epair;
|
||||
a_eatom[i] += epairhalf;
|
||||
a_eatom[j] += epairhalf;
|
||||
}
|
||||
|
||||
if (vflag_either) {
|
||||
const E_FLOAT v0 = delx*fx;
|
||||
const E_FLOAT v1 = dely*fy;
|
||||
const E_FLOAT v2 = delz*fz;
|
||||
const E_FLOAT v3 = delx*fy;
|
||||
const E_FLOAT v4 = delx*fz;
|
||||
const E_FLOAT v5 = dely*fz;
|
||||
|
||||
if (vflag_global) {
|
||||
ev.v[0] += v0;
|
||||
ev.v[1] += v1;
|
||||
ev.v[2] += v2;
|
||||
ev.v[3] += v3;
|
||||
ev.v[4] += v4;
|
||||
ev.v[5] += v5;
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
a_vatom(i,0) += 0.5*v0;
|
||||
a_vatom(i,1) += 0.5*v1;
|
||||
a_vatom(i,2) += 0.5*v2;
|
||||
a_vatom(i,3) += 0.5*v3;
|
||||
a_vatom(i,4) += 0.5*v4;
|
||||
a_vatom(i,5) += 0.5*v5;
|
||||
a_vatom(j,0) += 0.5*v0;
|
||||
a_vatom(j,1) += 0.5*v1;
|
||||
a_vatom(j,2) += 0.5*v2;
|
||||
a_vatom(j,3) += 0.5*v3;
|
||||
a_vatom(j,4) += 0.5*v4;
|
||||
a_vatom(j,5) += 0.5*v5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDExtKokkos<DeviceType>::allocate()
|
||||
{
|
||||
PairDPDExt::allocate();
|
||||
int n = atom->ntypes;
|
||||
|
||||
memory->destroy(cutsq);
|
||||
memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq");
|
||||
d_cutsq = k_cutsq.template view<DeviceType>();
|
||||
|
||||
k_params = Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType>("PairDPDExt::params",n+1,n+1);
|
||||
params = k_params.template view<DeviceType>();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int PairDPDExtKokkos<DeviceType>::sbmask(const int& j) const {
|
||||
return j >> SBBITS & 3;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
init for one type pair i,j and corresponding j,i
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
double PairDPDExtKokkos<DeviceType>::init_one(int i, int j)
|
||||
{
|
||||
double cutone = PairDPDExt::init_one(i,j);
|
||||
|
||||
k_params.h_view(i,j).cut = cut[i][j];
|
||||
k_params.h_view(i,j).ws = ws[i][j];
|
||||
k_params.h_view(i,j).wsT = wsT[i][j];
|
||||
k_params.h_view(i,j).a0 = a0[i][j];
|
||||
k_params.h_view(i,j).gamma = gamma[i][j];
|
||||
k_params.h_view(i,j).sigma = sigma[i][j];
|
||||
k_params.h_view(i,j).gammaT = gammaT[i][j];
|
||||
k_params.h_view(i,j).sigmaT = sigmaT[i][j];
|
||||
k_params.h_view(j,i) = k_params.h_view(i,j);
|
||||
|
||||
k_params.template modify<LMPHostType>();
|
||||
|
||||
k_cutsq.h_view(i,j) = cutone*cutone;
|
||||
k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j);
|
||||
k_cutsq.template modify<LMPHostType>();
|
||||
|
||||
return cutone;
|
||||
}
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
template class PairDPDExtKokkos<LMPDeviceType>;
|
||||
#ifdef LMP_KOKKOS_GPU
|
||||
template class PairDPDExtKokkos<LMPHostType>;
|
||||
#endif
|
||||
}
|
||||
143
src/KOKKOS/pair_dpd_ext_kokkos.h
Normal file
143
src/KOKKOS/pair_dpd_ext_kokkos.h
Normal file
@ -0,0 +1,143 @@
|
||||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef PAIR_CLASS
|
||||
// clang-format off
|
||||
PairStyle(dpd/ext/kk,PairDPDExtKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/ext/kk/device,PairDPDExtKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/ext/kk/host,PairDPDExtKokkos<LMPHostType>);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_PAIR_DPD_EXT_KOKKOS_H
|
||||
#define LMP_PAIR_DPD_EXT_KOKKOS_H
|
||||
|
||||
#include "pair_dpd_ext.h"
|
||||
#include "pair_kokkos.h"
|
||||
#include "kokkos_type.h"
|
||||
|
||||
#if !defined(DPD_USE_RAN_MARS) && !defined(DPD_USE_Random_XorShift64) && !defined(Random_XorShift1024)
|
||||
#define DPD_USE_Random_XorShift64
|
||||
#endif
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
#include "rand_pool_wrap_kokkos.h"
|
||||
#else
|
||||
#include "Kokkos_Random.hpp"
|
||||
#endif
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
template<class DeviceType>
|
||||
class PairDPDExtKokkos : public PairDPDExt {
|
||||
public:
|
||||
typedef DeviceType device_type;
|
||||
typedef ArrayTypes<DeviceType> AT;
|
||||
typedef EV_FLOAT value_type;
|
||||
|
||||
PairDPDExtKokkos(class LAMMPS*);
|
||||
~PairDPDExtKokkos() override;
|
||||
|
||||
void allocate() override;
|
||||
|
||||
void init_style() override;
|
||||
double init_one(int i, int j) override;
|
||||
void compute(int, int) override;
|
||||
|
||||
struct params_dpd {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd() {cut=ws=wsT=a0=gamma=sigma=gammaT=sigmaT=0;}
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd(int /*i*/) {cut=ws=wsT=a0=gamma=sigma=gammaT=sigmaT=0;}
|
||||
F_FLOAT cut,ws,wsT,a0,gamma,sigma,gammaT,sigmaT;
|
||||
};
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
struct TagDPDExtKokkos{};
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDExtKokkos<NEIGHFLAG,EVFLAG>, const int &i) const;
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDExtKokkos<NEIGHFLAG,EVFLAG>, const int &i, EV_FLOAT&) const;
|
||||
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void ev_tally_xyz(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &epair,
|
||||
const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz,
|
||||
const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const;
|
||||
private:
|
||||
double special_lj[4];
|
||||
int eflag,vflag;
|
||||
int neighflag,nlocal;
|
||||
double dtinvsqrt;
|
||||
|
||||
int need_dup;
|
||||
|
||||
using KKDeviceType = typename KKDevice<DeviceType>::value;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using DupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterDuplicated>;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using NonDupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterNonDuplicated>;
|
||||
|
||||
DupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> dup_f;
|
||||
DupScatterView<E_FLOAT*, typename DAT::t_efloat_1d::array_layout> dup_eatom;
|
||||
DupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> dup_vatom;
|
||||
NonDupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> ndup_f;
|
||||
NonDupScatterView<E_FLOAT*, typename DAT::t_efloat_1d::array_layout> ndup_eatom;
|
||||
NonDupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> ndup_vatom;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
RandPoolWrap rand_pool;
|
||||
typedef RandWrap rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift64)
|
||||
Kokkos::Random_XorShift64_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift64_Pool<DeviceType>::generator_type rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift1024)
|
||||
Kokkos::Random_XorShift1024_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift1024_Pool<DeviceType>::generator_type rand_type;
|
||||
#endif
|
||||
typename AT::t_x_array_randomread x;
|
||||
typename AT::t_x_array_randomread v;
|
||||
typename AT::t_f_array f;
|
||||
typename AT::t_int_1d_randomread type;
|
||||
|
||||
typename AT::t_neighbors_2d d_neighbors;
|
||||
typename AT::t_int_1d_randomread d_ilist;
|
||||
typename AT::t_int_1d_randomread d_numneigh;
|
||||
|
||||
typename AT::tdual_ffloat_2d k_cutsq;
|
||||
typename AT::t_ffloat_2d d_cutsq;
|
||||
|
||||
Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType> k_params;
|
||||
typename Kokkos::DualView<params_dpd**,
|
||||
Kokkos::LayoutRight,DeviceType>::t_dev_const_um params;
|
||||
|
||||
DAT::tdual_efloat_1d k_eatom;
|
||||
DAT::tdual_virial_array k_vatom;
|
||||
typename AT::t_efloat_1d d_eatom;
|
||||
typename AT::t_virial_array d_vatom;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int sbmask(const int& j) const;
|
||||
friend void pair_virial_fdotr_compute<PairDPDExtKokkos>(PairDPDExtKokkos*);
|
||||
|
||||
};
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
444
src/KOKKOS/pair_dpd_ext_tstat_kokkos.cpp
Normal file
444
src/KOKKOS/pair_dpd_ext_tstat_kokkos.cpp
Normal file
@ -0,0 +1,444 @@
|
||||
// clang-format off
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Matt Bettencourt (NVIDIA)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "pair_dpd_ext_tstat_kokkos.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "atom_kokkos.h"
|
||||
#include "memory_kokkos.h"
|
||||
#include "comm.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "memory.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "random_mars.h"
|
||||
#include "update.h"
|
||||
#include "atom_masks.h"
|
||||
#include "kokkos.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
#define EPSILON 1.0e-10
|
||||
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDExtTstatKokkos<DeviceType>::PairDPDExtTstatKokkos(class LAMMPS *lmp) :
|
||||
PairDPDExtTstat(lmp) ,
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool(0 /* unused */, lmp)
|
||||
#else
|
||||
rand_pool()
|
||||
#endif
|
||||
{
|
||||
kokkosable = 1;
|
||||
atomKK = (AtomKokkos *) atom;
|
||||
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
|
||||
|
||||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDExtTstatKokkos<DeviceType>::~PairDPDExtTstatKokkos() {
|
||||
if (copymode) return;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.destroy();
|
||||
#endif
|
||||
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
|
||||
memoryKK->destroy_kokkos(k_cutsq,cutsq);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDExtTstatKokkos<DeviceType>::init_style()
|
||||
{
|
||||
PairDPDExt::init_style();
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.init(random,seed);
|
||||
#else
|
||||
typedef Kokkos::Experimental::UniqueToken<
|
||||
DeviceType, Kokkos::Experimental::UniqueTokenScope::Global> unique_token_type;
|
||||
unique_token_type unique_token;
|
||||
rand_pool.init(seed + comm->me,unique_token.size());
|
||||
#endif
|
||||
|
||||
neighflag = lmp->kokkos->neighflag;
|
||||
|
||||
if (force->newton_pair == 0 || neighflag == FULL )
|
||||
error->all(FLERR,"Must use half neighbor list style and newton on with pair dpd/ext/kk");
|
||||
|
||||
auto request = neighbor->find_request(this);
|
||||
request->set_kokkos_host(std::is_same<DeviceType,LMPHostType>::value &&
|
||||
!std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
request->set_kokkos_device(std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDExtTstatKokkos<DeviceType>::compute(int eflagin, int vflagin)
|
||||
{
|
||||
eflag = eflagin; vflag = vflagin;
|
||||
|
||||
ev_init(eflag,vflag,0);
|
||||
|
||||
// adjust sigma if target T is changing
|
||||
if (t_start != t_stop) {
|
||||
double delta = update->ntimestep - update->beginstep;
|
||||
if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
||||
temperature = t_start + delta * (t_stop-t_start);
|
||||
double boltz = force->boltz;
|
||||
for (int i = 1; i <= atom->ntypes; i++)
|
||||
for (int j = i; j <= atom->ntypes; j++) {
|
||||
k_params.h_view(i,j).sigma = k_params.h_view(j,i).sigma =
|
||||
sqrt(2.0*boltz*temperature*gamma[i][j]);
|
||||
}
|
||||
}
|
||||
k_params.template modify<LMPHostType>();
|
||||
|
||||
if (eflag_atom) {
|
||||
maxeatom = atom->nmax;
|
||||
memory->destroy(eatom);
|
||||
memory->create(eatom,maxeatom,"pair:eatom");
|
||||
memset(&eatom[0], 0, maxeatom * sizeof(double));
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"pair:vatom");
|
||||
d_vatom = k_vatom.template view<DeviceType>();
|
||||
}
|
||||
|
||||
atomKK->sync(execution_space,X_MASK | V_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
v = atomKK->k_v.view<DeviceType>();
|
||||
f = atomKK->k_f.view<DeviceType>();
|
||||
type = atomKK->k_type.view<DeviceType>();
|
||||
|
||||
k_cutsq.template sync<DeviceType>();
|
||||
k_params.template sync<DeviceType>();
|
||||
|
||||
special_lj[0] = force->special_lj[0];
|
||||
special_lj[1] = force->special_lj[1];
|
||||
special_lj[2] = force->special_lj[2];
|
||||
special_lj[3] = force->special_lj[3];
|
||||
|
||||
nlocal = atom->nlocal;
|
||||
dtinvsqrt = 1.0/sqrt(update->dt);
|
||||
|
||||
NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
|
||||
d_numneigh = k_list->d_numneigh;
|
||||
d_neighbors = k_list->d_neighbors;
|
||||
d_ilist = k_list->d_ilist;
|
||||
|
||||
need_dup = lmp->kokkos->need_dup<DeviceType>();
|
||||
if (need_dup) {
|
||||
dup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(f);
|
||||
dup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(d_vatom);
|
||||
} else {
|
||||
ndup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(f);
|
||||
ndup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(d_vatom);
|
||||
}
|
||||
|
||||
// loop over neighbors of my atoms
|
||||
|
||||
int inum = list->inum;
|
||||
EV_FLOAT ev;
|
||||
copymode = 1;
|
||||
if (neighflag == HALF) {
|
||||
if (vflag_either) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDExtTstatKokkos<HALF,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDExtTstatKokkos<HALF,0> >(0,inum),*this);
|
||||
} else if (neighflag == HALFTHREAD) {
|
||||
if (vflag_either) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDExtTstatKokkos<HALFTHREAD,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDExtTstatKokkos<HALFTHREAD,0> >(0,inum),*this);
|
||||
}
|
||||
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(f, dup_f);
|
||||
|
||||
if (vflag_global) {
|
||||
virial[0] += ev.v[0];
|
||||
virial[1] += ev.v[1];
|
||||
virial[2] += ev.v[2];
|
||||
virial[3] += ev.v[3];
|
||||
virial[4] += ev.v[4];
|
||||
virial[5] += ev.v[5];
|
||||
}
|
||||
|
||||
if (vflag_fdotr) pair_virial_fdotr_compute(this);
|
||||
|
||||
if (vflag_atom) {
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(d_vatom, dup_vatom);
|
||||
k_vatom.template modify<DeviceType>();
|
||||
k_vatom.template sync<LMPHostType>();
|
||||
}
|
||||
|
||||
copymode = 0;
|
||||
|
||||
if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
else atomKK->modified(execution_space,F_MASK);
|
||||
|
||||
// free duplicated memory
|
||||
if (need_dup) {
|
||||
dup_f = decltype(dup_f)();
|
||||
dup_vatom = decltype(dup_vatom)();
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDExtTstatKokkos<DeviceType>::operator() (TagDPDExtTstatKokkos<NEIGHFLAG,VFLAG>, const int &ii) const {
|
||||
EV_FLOAT ev;
|
||||
this->template operator()<NEIGHFLAG,VFLAG>(TagDPDExtTstatKokkos<NEIGHFLAG,VFLAG>(), ii, ev);
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDExtTstatKokkos<DeviceType>::operator() (TagDPDExtTstatKokkos<NEIGHFLAG,VFLAG>, const int &ii, EV_FLOAT &ev) const {
|
||||
|
||||
// The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_f = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f);
|
||||
auto a_f = v_f.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
|
||||
int i,j,jj,jnum,itype,jtype;
|
||||
double xtmp,ytmp,ztmp,delx,dely,delz,fpairx,fpairy,fpairz,fpair;
|
||||
double vxtmp,vytmp,vztmp,delvx,delvy,delvz;
|
||||
double rsq,r,rinv,dot,wd,wdPar,wdPerp,randnum,randnumx,randnumy,randnumz,factor_dpd;
|
||||
double fx = 0,fy = 0,fz = 0;
|
||||
|
||||
i = d_ilist[ii];
|
||||
xtmp = x(i,0);
|
||||
ytmp = x(i,1);
|
||||
ztmp = x(i,2);
|
||||
vxtmp = v(i,0);
|
||||
vytmp = v(i,1);
|
||||
vztmp = v(i,2);
|
||||
itype = type(i);
|
||||
jnum = d_numneigh[i];
|
||||
rand_type rand_gen = rand_pool.get_state();
|
||||
for (jj = 0; jj < jnum; jj++) {
|
||||
double P[3][3];
|
||||
j = d_neighbors(i,jj);
|
||||
factor_dpd = special_lj[sbmask(j)];
|
||||
j &= NEIGHMASK;
|
||||
|
||||
delx = xtmp - x(j,0);
|
||||
dely = ytmp - x(j,1);
|
||||
delz = ztmp - x(j,2);
|
||||
rsq = delx*delx + dely*dely + delz*delz;
|
||||
jtype = type(j);
|
||||
if (rsq < d_cutsq(itype,jtype)) {
|
||||
r = sqrt(rsq);
|
||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||
rinv = 1.0/r;
|
||||
delvx = vxtmp - v(j,0);
|
||||
delvy = vytmp - v(j,1);
|
||||
delvz = vztmp - v(j,2);
|
||||
dot = delx*delvx + dely*delvy + delz*delvz;
|
||||
|
||||
P[0][0] = 1.0 - delx*delx*rinv*rinv;
|
||||
P[0][1] = - delx*dely*rinv*rinv;
|
||||
P[0][2] = - delx*delz*rinv*rinv;
|
||||
|
||||
P[1][0] = P[0][1];
|
||||
P[1][1] = 1.0 - dely*dely*rinv*rinv;
|
||||
P[1][2] = - dely*delz*rinv*rinv;
|
||||
|
||||
P[2][0] = P[0][2];
|
||||
P[2][1] = P[1][2];
|
||||
P[2][2] = 1.0 - delz*delz*rinv*rinv;
|
||||
|
||||
wd = 1.0 - r/params(itype,jtype).cut;
|
||||
wdPar = pow(wd,params(itype,jtype).ws);
|
||||
wdPerp = pow(wd,params(itype,jtype).wsT);
|
||||
|
||||
randnum = rand_gen.normal();
|
||||
randnumx = rand_gen.normal();
|
||||
randnumy = rand_gen.normal();
|
||||
randnumz = rand_gen.normal();
|
||||
|
||||
// drag force - parallel
|
||||
fpair = -params(itype,jtype).gamma*wdPar*wdPar*dot*rinv;
|
||||
|
||||
// random force - parallel
|
||||
fpair += params(itype,jtype).sigma*wdPar*randnum*dtinvsqrt;
|
||||
|
||||
fpairx = fpair*rinv*delx;
|
||||
fpairy = fpair*rinv*dely;
|
||||
fpairz = fpair*rinv*delz;
|
||||
|
||||
// drag force - perpendicular
|
||||
fpairx -= params(itype,jtype).gammaT*wdPerp*wdPerp*
|
||||
(P[0][0]*delvx + P[0][1]*delvy + P[0][2]*delvz);
|
||||
fpairy -= params(itype,jtype).gammaT*wdPerp*wdPerp*
|
||||
(P[1][0]*delvx + P[1][1]*delvy + P[1][2]*delvz);
|
||||
fpairz -= params(itype,jtype).gammaT*wdPerp*wdPerp*
|
||||
(P[2][0]*delvx + P[2][1]*delvy + P[2][2]*delvz);
|
||||
|
||||
// random force - perpendicular
|
||||
fpairx += params(itype,jtype).sigmaT*wdPerp*
|
||||
(P[0][0]*randnumx + P[0][1]*randnumy + P[0][2]*randnumz)*dtinvsqrt;
|
||||
fpairy += params(itype,jtype).sigmaT*wdPerp*
|
||||
(P[1][0]*randnumx + P[1][1]*randnumy + P[1][2]*randnumz)*dtinvsqrt;
|
||||
fpairz += params(itype,jtype).sigmaT*wdPerp*
|
||||
(P[2][0]*randnumx + P[2][1]*randnumy + P[2][2]*randnumz)*dtinvsqrt;
|
||||
|
||||
fpairx *= factor_dpd;
|
||||
fpairy *= factor_dpd;
|
||||
fpairz *= factor_dpd;
|
||||
|
||||
fx += fpairx;
|
||||
fy += fpairy;
|
||||
fz += fpairz;
|
||||
a_f(j,0) -= fpairx;
|
||||
a_f(j,1) -= fpairy;
|
||||
a_f(j,2) -= fpairz;
|
||||
|
||||
if (VFLAG)
|
||||
this->template v_tally_xyz<NEIGHFLAG>(ev,i,j,fpairx,fpairy,fpairz,delx,dely,delz);
|
||||
}
|
||||
}
|
||||
a_f(i,0) += fx;
|
||||
a_f(i,1) += fy;
|
||||
a_f(i,2) += fz;
|
||||
rand_pool.free_state(rand_gen);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDExtTstatKokkos<DeviceType>::v_tally_xyz(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &fx, const F_FLOAT &fy, const F_FLOAT &fz,
|
||||
const F_FLOAT &delx, const F_FLOAT &dely, const F_FLOAT &delz) const
|
||||
{
|
||||
|
||||
// The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_vatom = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom);
|
||||
auto a_vatom = v_vatom.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
const E_FLOAT v0 = delx*fx;
|
||||
const E_FLOAT v1 = dely*fy;
|
||||
const E_FLOAT v2 = delz*fz;
|
||||
const E_FLOAT v3 = delx*fy;
|
||||
const E_FLOAT v4 = delx*fz;
|
||||
const E_FLOAT v5 = dely*fz;
|
||||
|
||||
if (vflag_global) {
|
||||
ev.v[0] += v0;
|
||||
ev.v[1] += v1;
|
||||
ev.v[2] += v2;
|
||||
ev.v[3] += v3;
|
||||
ev.v[4] += v4;
|
||||
ev.v[5] += v5;
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
a_vatom(i,0) += 0.5*v0;
|
||||
a_vatom(i,1) += 0.5*v1;
|
||||
a_vatom(i,2) += 0.5*v2;
|
||||
a_vatom(i,3) += 0.5*v3;
|
||||
a_vatom(i,4) += 0.5*v4;
|
||||
a_vatom(i,5) += 0.5*v5;
|
||||
a_vatom(j,0) += 0.5*v0;
|
||||
a_vatom(j,1) += 0.5*v1;
|
||||
a_vatom(j,2) += 0.5*v2;
|
||||
a_vatom(j,3) += 0.5*v3;
|
||||
a_vatom(j,4) += 0.5*v4;
|
||||
a_vatom(j,5) += 0.5*v5;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDExtTstatKokkos<DeviceType>::allocate()
|
||||
{
|
||||
PairDPDExt::allocate();
|
||||
int n = atom->ntypes;
|
||||
|
||||
memory->destroy(cutsq);
|
||||
memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq");
|
||||
d_cutsq = k_cutsq.template view<DeviceType>();
|
||||
|
||||
k_params = Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType>("PairDPDExt::params",n+1,n+1);
|
||||
params = k_params.template view<DeviceType>();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int PairDPDExtTstatKokkos<DeviceType>::sbmask(const int& j) const {
|
||||
return j >> SBBITS & 3;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
init for one type pair i,j and corresponding j,i
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
double PairDPDExtTstatKokkos<DeviceType>::init_one(int i, int j)
|
||||
{
|
||||
double cutone = PairDPDExt::init_one(i,j);
|
||||
|
||||
k_params.h_view(i,j).cut = cut[i][j];
|
||||
k_params.h_view(i,j).ws = ws[i][j];
|
||||
k_params.h_view(i,j).wsT = wsT[i][j];
|
||||
k_params.h_view(i,j).gamma = gamma[i][j];
|
||||
k_params.h_view(i,j).sigma = sigma[i][j];
|
||||
k_params.h_view(i,j).gammaT = gammaT[i][j];
|
||||
k_params.h_view(i,j).sigmaT = sigmaT[i][j];
|
||||
k_params.h_view(j,i) = k_params.h_view(i,j);
|
||||
|
||||
k_params.template modify<LMPHostType>();
|
||||
|
||||
k_cutsq.h_view(i,j) = cutone*cutone;
|
||||
k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j);
|
||||
k_cutsq.template modify<LMPHostType>();
|
||||
|
||||
return cutone;
|
||||
}
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
template class PairDPDExtTstatKokkos<LMPDeviceType>;
|
||||
#ifdef LMP_KOKKOS_GPU
|
||||
template class PairDPDExtTstatKokkos<LMPHostType>;
|
||||
#endif
|
||||
}
|
||||
138
src/KOKKOS/pair_dpd_ext_tstat_kokkos.h
Normal file
138
src/KOKKOS/pair_dpd_ext_tstat_kokkos.h
Normal file
@ -0,0 +1,138 @@
|
||||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef PAIR_CLASS
|
||||
// clang-format off
|
||||
PairStyle(dpd/ext/tstat/kk,PairDPDExtTstatKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/ext/tstat/kk/device,PairDPDExtTstatKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/ext/tstat/kk/host,PairDPDExtTstatKokkos<LMPHostType>);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_PAIR_DPD_EXT_TSTAT_KOKKOS_H
|
||||
#define LMP_PAIR_DPD_EXT_TSTAT_KOKKOS_H
|
||||
|
||||
#include "pair_dpd_ext_tstat.h"
|
||||
#include "pair_kokkos.h"
|
||||
#include "kokkos_type.h"
|
||||
|
||||
#if !defined(DPD_USE_RAN_MARS) && !defined(DPD_USE_Random_XorShift64) && !defined(Random_XorShift1024)
|
||||
#define DPD_USE_Random_XorShift64
|
||||
#endif
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
#include "rand_pool_wrap_kokkos.h"
|
||||
#else
|
||||
#include "Kokkos_Random.hpp"
|
||||
#endif
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
template<class DeviceType>
|
||||
class PairDPDExtTstatKokkos : public PairDPDExtTstat {
|
||||
public:
|
||||
typedef DeviceType device_type;
|
||||
typedef ArrayTypes<DeviceType> AT;
|
||||
typedef EV_FLOAT value_type;
|
||||
|
||||
PairDPDExtTstatKokkos(class LAMMPS*);
|
||||
~PairDPDExtTstatKokkos() override;
|
||||
|
||||
void allocate() override;
|
||||
|
||||
void init_style() override;
|
||||
double init_one(int i, int j) override;
|
||||
void compute(int, int) override;
|
||||
|
||||
struct params_dpd {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd() {cut=ws=wsT=gamma=sigma=gammaT=sigmaT=0;}
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd(int /*i*/) {cut=ws=wsT=gamma=sigma=gammaT=sigmaT=0;}
|
||||
F_FLOAT cut,ws,wsT,gamma,sigma,gammaT,sigmaT;
|
||||
};
|
||||
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
struct TagDPDExtTstatKokkos{};
|
||||
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDExtTstatKokkos<NEIGHFLAG,VFLAG>, const int &i) const;
|
||||
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDExtTstatKokkos<NEIGHFLAG,VFLAG>, const int &i, EV_FLOAT&) const;
|
||||
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void v_tally_xyz(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &fx,const F_FLOAT &fy, const F_FLOAT &fz,
|
||||
const F_FLOAT &delx,const F_FLOAT &dely, const F_FLOAT &delz) const;
|
||||
private:
|
||||
double special_lj[4];
|
||||
int eflag,vflag;
|
||||
int neighflag,nlocal;
|
||||
double dtinvsqrt;
|
||||
|
||||
int need_dup;
|
||||
|
||||
using KKDeviceType = typename KKDevice<DeviceType>::value;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using DupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterDuplicated>;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using NonDupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterNonDuplicated>;
|
||||
|
||||
DupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> dup_f;
|
||||
DupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> dup_vatom;
|
||||
NonDupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> ndup_f;
|
||||
NonDupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> ndup_vatom;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
RandPoolWrap rand_pool;
|
||||
typedef RandWrap rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift64)
|
||||
Kokkos::Random_XorShift64_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift64_Pool<DeviceType>::generator_type rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift1024)
|
||||
Kokkos::Random_XorShift1024_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift1024_Pool<DeviceType>::generator_type rand_type;
|
||||
#endif
|
||||
typename AT::t_x_array_randomread x;
|
||||
typename AT::t_x_array_randomread v;
|
||||
typename AT::t_f_array f;
|
||||
typename AT::t_int_1d_randomread type;
|
||||
|
||||
typename AT::t_neighbors_2d d_neighbors;
|
||||
typename AT::t_int_1d_randomread d_ilist;
|
||||
typename AT::t_int_1d_randomread d_numneigh;
|
||||
|
||||
typename AT::tdual_ffloat_2d k_cutsq;
|
||||
typename AT::t_ffloat_2d d_cutsq;
|
||||
|
||||
Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType> k_params;
|
||||
typename Kokkos::DualView<params_dpd**,
|
||||
Kokkos::LayoutRight,DeviceType>::t_dev_const_um params;
|
||||
|
||||
DAT::tdual_virial_array k_vatom;
|
||||
typename AT::t_virial_array d_vatom;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int sbmask(const int& j) const;
|
||||
friend void pair_virial_fdotr_compute<PairDPDExtTstatKokkos>(PairDPDExtTstatKokkos*);
|
||||
|
||||
};
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -729,21 +729,19 @@ void PairDPDfdtEnergyKokkos<DeviceType>::ev_tally(EV_FLOAT &ev, const int &i, co
|
||||
|
||||
if (vflag_atom) {
|
||||
if (NEIGHFLAG!=FULL) {
|
||||
if (NEWTON_PAIR || i < nlocal) {
|
||||
v_vatom(i,0) += 0.5*v0;
|
||||
v_vatom(i,1) += 0.5*v1;
|
||||
v_vatom(i,2) += 0.5*v2;
|
||||
v_vatom(i,3) += 0.5*v3;
|
||||
v_vatom(i,4) += 0.5*v4;
|
||||
v_vatom(i,5) += 0.5*v5;
|
||||
}
|
||||
v_vatom(i,0) += 0.5*v0;
|
||||
v_vatom(i,1) += 0.5*v1;
|
||||
v_vatom(i,2) += 0.5*v2;
|
||||
v_vatom(i,3) += 0.5*v3;
|
||||
v_vatom(i,4) += 0.5*v4;
|
||||
v_vatom(i,5) += 0.5*v5;
|
||||
if (NEWTON_PAIR || j < nlocal) {
|
||||
v_vatom(j,0) += 0.5*v0;
|
||||
v_vatom(j,1) += 0.5*v1;
|
||||
v_vatom(j,2) += 0.5*v2;
|
||||
v_vatom(j,3) += 0.5*v3;
|
||||
v_vatom(j,4) += 0.5*v4;
|
||||
v_vatom(j,5) += 0.5*v5;
|
||||
v_vatom(j,0) += 0.5*v0;
|
||||
v_vatom(j,1) += 0.5*v1;
|
||||
v_vatom(j,2) += 0.5*v2;
|
||||
v_vatom(j,3) += 0.5*v3;
|
||||
v_vatom(j,4) += 0.5*v4;
|
||||
v_vatom(j,5) += 0.5*v5;
|
||||
}
|
||||
} else {
|
||||
v_vatom(i,0) += 0.5*v0;
|
||||
|
||||
417
src/KOKKOS/pair_dpd_kokkos.cpp
Normal file
417
src/KOKKOS/pair_dpd_kokkos.cpp
Normal file
@ -0,0 +1,417 @@
|
||||
// clang-format off
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Matt Bettencourt (NVIDIA)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "pair_dpd_kokkos.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "atom_kokkos.h"
|
||||
#include "memory_kokkos.h"
|
||||
#include "comm.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "memory.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "random_mars.h"
|
||||
#include "update.h"
|
||||
#include "atom_masks.h"
|
||||
#include "kokkos.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
#define EPSILON 1.0e-10
|
||||
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDKokkos<DeviceType>::PairDPDKokkos(class LAMMPS *lmp) :
|
||||
PairDPD(lmp) ,
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool(0 /* unused */, lmp)
|
||||
#else
|
||||
rand_pool()
|
||||
#endif
|
||||
{
|
||||
kokkosable = 1;
|
||||
atomKK = (AtomKokkos *) atom;
|
||||
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
|
||||
|
||||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDKokkos<DeviceType>::~PairDPDKokkos() {
|
||||
if (copymode) return;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.destroy();
|
||||
#endif
|
||||
|
||||
memoryKK->destroy_kokkos(k_eatom,eatom);
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
|
||||
memoryKK->destroy_kokkos(k_cutsq,cutsq);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDKokkos<DeviceType>::init_style()
|
||||
{
|
||||
PairDPD::init_style();
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.init(random,seed);
|
||||
#else
|
||||
typedef Kokkos::Experimental::UniqueToken<
|
||||
DeviceType, Kokkos::Experimental::UniqueTokenScope::Global> unique_token_type;
|
||||
unique_token_type unique_token;
|
||||
rand_pool.init(seed + comm->me,unique_token.size());
|
||||
#endif
|
||||
|
||||
neighflag = lmp->kokkos->neighflag;
|
||||
|
||||
if (force->newton_pair == 0 || neighflag == FULL)
|
||||
error->all(FLERR,"Must use half neighbor list style and newton on with pair dpd/kk");
|
||||
|
||||
auto request = neighbor->find_request(this);
|
||||
request->set_kokkos_host(std::is_same<DeviceType,LMPHostType>::value &&
|
||||
!std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
request->set_kokkos_device(std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDKokkos<DeviceType>::compute(int eflagin, int vflagin)
|
||||
{
|
||||
eflag = eflagin; vflag = vflagin;
|
||||
|
||||
ev_init(eflag,vflag,0);
|
||||
|
||||
if (eflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_eatom,eatom);
|
||||
memoryKK->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom");
|
||||
d_eatom = k_eatom.template view<DeviceType>();
|
||||
}
|
||||
if (vflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"pair:vatom");
|
||||
d_vatom = k_vatom.template view<DeviceType>();
|
||||
}
|
||||
|
||||
atomKK->sync(execution_space,X_MASK | V_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
v = atomKK->k_v.view<DeviceType>();
|
||||
f = atomKK->k_f.view<DeviceType>();
|
||||
type = atomKK->k_type.view<DeviceType>();
|
||||
|
||||
k_cutsq.template sync<DeviceType>();
|
||||
k_params.template sync<DeviceType>();
|
||||
|
||||
special_lj[0] = force->special_lj[0];
|
||||
special_lj[1] = force->special_lj[1];
|
||||
special_lj[2] = force->special_lj[2];
|
||||
special_lj[3] = force->special_lj[3];
|
||||
|
||||
nlocal = atom->nlocal;
|
||||
dtinvsqrt = 1.0/sqrt(update->dt);
|
||||
|
||||
NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
|
||||
d_numneigh = k_list->d_numneigh;
|
||||
d_neighbors = k_list->d_neighbors;
|
||||
d_ilist = k_list->d_ilist;
|
||||
|
||||
need_dup = lmp->kokkos->need_dup<DeviceType>();
|
||||
if (need_dup) {
|
||||
dup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(f);
|
||||
dup_eatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(d_eatom);
|
||||
dup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(d_vatom);
|
||||
} else {
|
||||
ndup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(f);
|
||||
ndup_eatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(d_eatom);
|
||||
ndup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(d_vatom);
|
||||
}
|
||||
|
||||
// loop over neighbors of my atoms
|
||||
|
||||
int inum = list->inum;
|
||||
EV_FLOAT ev;
|
||||
copymode = 1;
|
||||
if (neighflag == HALF) {
|
||||
if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDKokkos<HALF,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDKokkos<HALF,0> >(0,inum),*this);
|
||||
} else if (neighflag == HALFTHREAD) {
|
||||
if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDKokkos<HALFTHREAD,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDKokkos<HALFTHREAD,0> >(0,inum),*this);
|
||||
}
|
||||
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(f, dup_f);
|
||||
|
||||
if (eflag_global) eng_vdwl += ev.evdwl;
|
||||
if (vflag_global) {
|
||||
virial[0] += ev.v[0];
|
||||
virial[1] += ev.v[1];
|
||||
virial[2] += ev.v[2];
|
||||
virial[3] += ev.v[3];
|
||||
virial[4] += ev.v[4];
|
||||
virial[5] += ev.v[5];
|
||||
}
|
||||
|
||||
if (vflag_fdotr) pair_virial_fdotr_compute(this);
|
||||
|
||||
if (eflag_atom) {
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(d_eatom, dup_eatom);
|
||||
k_eatom.template modify<DeviceType>();
|
||||
k_eatom.template sync<LMPHostType>();
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(d_vatom, dup_vatom);
|
||||
k_vatom.template modify<DeviceType>();
|
||||
k_vatom.template sync<LMPHostType>();
|
||||
}
|
||||
|
||||
copymode = 0;
|
||||
|
||||
if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
else atomKK->modified(execution_space,F_MASK);
|
||||
|
||||
// free duplicated memory
|
||||
if (need_dup) {
|
||||
dup_f = decltype(dup_f)();
|
||||
dup_eatom = decltype(dup_eatom)();
|
||||
dup_vatom = decltype(dup_vatom)();
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDKokkos<DeviceType>::operator() (TagDPDKokkos<NEIGHFLAG,EVFLAG>, const int &ii) const {
|
||||
EV_FLOAT ev;
|
||||
this->template operator()<NEIGHFLAG,EVFLAG>(TagDPDKokkos<NEIGHFLAG,EVFLAG>(), ii, ev);
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDKokkos<DeviceType>::operator() (TagDPDKokkos<NEIGHFLAG,EVFLAG>, const int &ii, EV_FLOAT &ev) const {
|
||||
|
||||
// The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_f = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f);
|
||||
auto a_f = v_f.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
int i,j,jj,jnum,itype,jtype;
|
||||
double xtmp,ytmp,ztmp,delx,dely,delz,fpair;
|
||||
double vxtmp,vytmp,vztmp,delvx,delvy,delvz;
|
||||
double rsq,r,rinv,dot,wd,randnum,factor_dpd;
|
||||
double fx = 0,fy = 0,fz = 0;
|
||||
double evdwl = 0;
|
||||
i = d_ilist[ii];
|
||||
xtmp = x(i,0);
|
||||
ytmp = x(i,1);
|
||||
ztmp = x(i,2);
|
||||
vxtmp = v(i,0);
|
||||
vytmp = v(i,1);
|
||||
vztmp = v(i,2);
|
||||
itype = type(i);
|
||||
jnum = d_numneigh[i];
|
||||
rand_type rand_gen = rand_pool.get_state();
|
||||
for (jj = 0; jj < jnum; jj++) {
|
||||
j = d_neighbors(i,jj);
|
||||
factor_dpd = special_lj[sbmask(j)];
|
||||
j &= NEIGHMASK;
|
||||
|
||||
delx = xtmp - x(j,0);
|
||||
dely = ytmp - x(j,1);
|
||||
delz = ztmp - x(j,2);
|
||||
rsq = delx*delx + dely*dely + delz*delz;
|
||||
jtype = type(j);
|
||||
if (rsq < d_cutsq(itype,jtype)) {
|
||||
r = sqrt(rsq);
|
||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||
rinv = 1.0/r;
|
||||
delvx = vxtmp - v(j,0);
|
||||
delvy = vytmp - v(j,1);
|
||||
delvz = vztmp - v(j,2);
|
||||
dot = delx*delvx + dely*delvy + delz*delvz;
|
||||
|
||||
wd = 1.0 - r/params(itype,jtype).cut;
|
||||
|
||||
randnum = rand_gen.normal();
|
||||
|
||||
// conservative force
|
||||
fpair = params(itype,jtype).a0*wd;
|
||||
|
||||
// drag force - parallel
|
||||
fpair -= params(itype,jtype).gamma*wd*wd*dot*rinv;
|
||||
|
||||
// random force - parallel
|
||||
fpair += params(itype,jtype).sigma*wd*randnum*dtinvsqrt;
|
||||
fpair *= factor_dpd*rinv;
|
||||
|
||||
fx += fpair*delx;
|
||||
fy += fpair*dely;
|
||||
fz += fpair*delz;
|
||||
|
||||
a_f(j,0) -= fpair*delx;
|
||||
a_f(j,1) -= fpair*dely;
|
||||
a_f(j,2) -= fpair*delz;
|
||||
|
||||
if (EVFLAG && eflag_global) {
|
||||
// unshifted eng of conservative term:
|
||||
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
||||
// eng shifted to 0.0 at cutoff
|
||||
evdwl = 0.5*params(itype,jtype).a0*params(itype,jtype).cut* wd*wd;
|
||||
evdwl *= factor_dpd;
|
||||
ev.evdwl += evdwl;
|
||||
}
|
||||
if (EVFLAG && (eflag_atom || vflag_either))
|
||||
this->template ev_tally<NEIGHFLAG>(ev,i,j,evdwl,fpair,delx,dely,delz);
|
||||
}
|
||||
}
|
||||
a_f(i,0) += fx;
|
||||
a_f(i,1) += fy;
|
||||
a_f(i,2) += fz;
|
||||
rand_pool.free_state(rand_gen);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDKokkos<DeviceType>::ev_tally(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx,
|
||||
const F_FLOAT &dely, const F_FLOAT &delz) const
|
||||
{
|
||||
// The eatom and vatom arrays are duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_eatom = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_eatom),decltype(ndup_eatom)>::get(dup_eatom,ndup_eatom);
|
||||
auto a_eatom = v_eatom.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
auto v_vatom = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom);
|
||||
auto a_vatom = v_vatom.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
if (eflag_atom) {
|
||||
const E_FLOAT epairhalf = 0.5 * epair;
|
||||
a_eatom[i] += epairhalf;
|
||||
a_eatom[j] += epairhalf;
|
||||
}
|
||||
|
||||
if (vflag_either) {
|
||||
const E_FLOAT v0 = delx*delx*fpair;
|
||||
const E_FLOAT v1 = dely*dely*fpair;
|
||||
const E_FLOAT v2 = delz*delz*fpair;
|
||||
const E_FLOAT v3 = delx*dely*fpair;
|
||||
const E_FLOAT v4 = delx*delz*fpair;
|
||||
const E_FLOAT v5 = dely*delz*fpair;
|
||||
|
||||
if (vflag_global) {
|
||||
ev.v[0] += v0;
|
||||
ev.v[1] += v1;
|
||||
ev.v[2] += v2;
|
||||
ev.v[3] += v3;
|
||||
ev.v[4] += v4;
|
||||
ev.v[5] += v5;
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
a_vatom(i,0) += 0.5*v0;
|
||||
a_vatom(i,1) += 0.5*v1;
|
||||
a_vatom(i,2) += 0.5*v2;
|
||||
a_vatom(i,3) += 0.5*v3;
|
||||
a_vatom(i,4) += 0.5*v4;
|
||||
a_vatom(i,5) += 0.5*v5;
|
||||
a_vatom(j,0) += 0.5*v0;
|
||||
a_vatom(j,1) += 0.5*v1;
|
||||
a_vatom(j,2) += 0.5*v2;
|
||||
a_vatom(j,3) += 0.5*v3;
|
||||
a_vatom(j,4) += 0.5*v4;
|
||||
a_vatom(j,5) += 0.5*v5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDKokkos<DeviceType>::allocate()
|
||||
{
|
||||
PairDPD::allocate();
|
||||
int n = atom->ntypes;
|
||||
|
||||
memory->destroy(cutsq);
|
||||
memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq");
|
||||
d_cutsq = k_cutsq.template view<DeviceType>();
|
||||
|
||||
k_params = Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType>("PairDPD::params",n+1,n+1);
|
||||
params = k_params.template view<DeviceType>();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int PairDPDKokkos<DeviceType>::sbmask(const int& j) const {
|
||||
return j >> SBBITS & 3;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
init for one type pair i,j and corresponding j,i
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
double PairDPDKokkos<DeviceType>::init_one(int i, int j)
|
||||
{
|
||||
double cutone = PairDPD::init_one(i,j);
|
||||
|
||||
k_params.h_view(i,j).cut = cut[i][j];
|
||||
k_params.h_view(i,j).a0 = a0[i][j];
|
||||
k_params.h_view(i,j).gamma = gamma[i][j];
|
||||
k_params.h_view(i,j).sigma = sigma[i][j];
|
||||
k_params.h_view(j,i) = k_params.h_view(i,j);
|
||||
|
||||
k_params.template modify<LMPHostType>();
|
||||
|
||||
k_cutsq.h_view(i,j) = cutone*cutone;
|
||||
k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j);
|
||||
k_cutsq.template modify<LMPHostType>();
|
||||
|
||||
return cutone;
|
||||
}
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
template class PairDPDKokkos<LMPDeviceType>;
|
||||
#ifdef LMP_KOKKOS_GPU
|
||||
template class PairDPDKokkos<LMPHostType>;
|
||||
#endif
|
||||
}
|
||||
142
src/KOKKOS/pair_dpd_kokkos.h
Normal file
142
src/KOKKOS/pair_dpd_kokkos.h
Normal file
@ -0,0 +1,142 @@
|
||||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef PAIR_CLASS
|
||||
// clang-format off
|
||||
PairStyle(dpd/kk,PairDPDKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/kk/device,PairDPDKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/kk/host,PairDPDKokkos<LMPHostType>);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_PAIR_DPD_KOKKOS_H
|
||||
#define LMP_PAIR_DPD_KOKKOS_H
|
||||
|
||||
#include "pair_dpd.h"
|
||||
#include "pair_kokkos.h"
|
||||
#include "kokkos_type.h"
|
||||
|
||||
#if !defined(DPD_USE_RAN_MARS) && !defined(DPD_USE_Random_XorShift64) && !defined(Random_XorShift1024)
|
||||
#define DPD_USE_Random_XorShift64
|
||||
#endif
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
#include "rand_pool_wrap_kokkos.h"
|
||||
#else
|
||||
#include "Kokkos_Random.hpp"
|
||||
#endif
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
template<class DeviceType>
|
||||
class PairDPDKokkos : public PairDPD {
|
||||
public:
|
||||
typedef DeviceType device_type;
|
||||
typedef ArrayTypes<DeviceType> AT;
|
||||
typedef EV_FLOAT value_type;
|
||||
|
||||
PairDPDKokkos(class LAMMPS*);
|
||||
~PairDPDKokkos() override;
|
||||
|
||||
void allocate() override;
|
||||
|
||||
void init_style() override;
|
||||
double init_one(int i, int j) override;
|
||||
void compute(int, int) override;
|
||||
|
||||
struct params_dpd {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd() {cut=a0=gamma=sigma=0;}
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd(int /*i*/) {cut=a0=gamma=sigma=0;}
|
||||
F_FLOAT cut,a0,gamma,sigma;
|
||||
};
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
struct TagDPDKokkos{};
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDKokkos<NEIGHFLAG,EVFLAG>, const int &i) const;
|
||||
|
||||
template<int NEIGHFLAG, int EVFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDKokkos<NEIGHFLAG,EVFLAG>, const int &i, EV_FLOAT&) const;
|
||||
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void ev_tally(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx,
|
||||
const F_FLOAT &dely, const F_FLOAT &delz) const;
|
||||
private:
|
||||
double special_lj[4];
|
||||
int eflag,vflag;
|
||||
int neighflag,nlocal;
|
||||
double dtinvsqrt;
|
||||
|
||||
int need_dup;
|
||||
|
||||
using KKDeviceType = typename KKDevice<DeviceType>::value;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using DupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterDuplicated>;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using NonDupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterNonDuplicated>;
|
||||
|
||||
DupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> dup_f;
|
||||
DupScatterView<E_FLOAT*, typename DAT::t_efloat_1d::array_layout> dup_eatom;
|
||||
DupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> dup_vatom;
|
||||
NonDupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> ndup_f;
|
||||
NonDupScatterView<E_FLOAT*, typename DAT::t_efloat_1d::array_layout> ndup_eatom;
|
||||
NonDupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> ndup_vatom;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
RandPoolWrap rand_pool;
|
||||
typedef RandWrap rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift64)
|
||||
Kokkos::Random_XorShift64_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift64_Pool<DeviceType>::generator_type rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift1024)
|
||||
Kokkos::Random_XorShift1024_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift1024_Pool<DeviceType>::generator_type rand_type;
|
||||
#endif
|
||||
typename AT::t_x_array_randomread x;
|
||||
typename AT::t_x_array_randomread v;
|
||||
typename AT::t_f_array f;
|
||||
typename AT::t_int_1d_randomread type;
|
||||
|
||||
typename AT::t_neighbors_2d d_neighbors;
|
||||
typename AT::t_int_1d_randomread d_ilist;
|
||||
typename AT::t_int_1d_randomread d_numneigh;
|
||||
|
||||
typename AT::tdual_ffloat_2d k_cutsq;
|
||||
typename AT::t_ffloat_2d d_cutsq;
|
||||
|
||||
Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType> k_params;
|
||||
typename Kokkos::DualView<params_dpd**,
|
||||
Kokkos::LayoutRight,DeviceType>::t_dev_const_um params;
|
||||
|
||||
DAT::tdual_efloat_1d k_eatom;
|
||||
DAT::tdual_virial_array k_vatom;
|
||||
typename AT::t_efloat_1d d_eatom;
|
||||
typename AT::t_virial_array d_vatom;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int sbmask(const int& j) const;
|
||||
friend void pair_virial_fdotr_compute<PairDPDKokkos>(PairDPDKokkos*);
|
||||
|
||||
};
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
399
src/KOKKOS/pair_dpd_tstat_kokkos.cpp
Normal file
399
src/KOKKOS/pair_dpd_tstat_kokkos.cpp
Normal file
@ -0,0 +1,399 @@
|
||||
// clang-format off
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing author: Matt Bettencourt (NVIDIA)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "pair_dpd_tstat_kokkos.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "atom_kokkos.h"
|
||||
#include "memory_kokkos.h"
|
||||
#include "comm.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "memory.h"
|
||||
#include "neigh_list.h"
|
||||
#include "neigh_request.h"
|
||||
#include "neighbor.h"
|
||||
#include "random_mars.h"
|
||||
#include "update.h"
|
||||
#include "atom_masks.h"
|
||||
#include "kokkos.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
#define EPSILON 1.0e-10
|
||||
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDTstatKokkos<DeviceType>::PairDPDTstatKokkos(class LAMMPS *lmp) :
|
||||
PairDPDTstat(lmp) ,
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool(0 /* unused */, lmp)
|
||||
#else
|
||||
rand_pool()
|
||||
#endif
|
||||
{
|
||||
kokkosable = 1;
|
||||
atomKK = (AtomKokkos *) atom;
|
||||
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
|
||||
|
||||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
PairDPDTstatKokkos<DeviceType>::~PairDPDTstatKokkos() {
|
||||
if (copymode) return;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.destroy();
|
||||
#endif
|
||||
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
|
||||
memoryKK->destroy_kokkos(k_cutsq,cutsq);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDTstatKokkos<DeviceType>::init_style()
|
||||
{
|
||||
PairDPD::init_style();
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
rand_pool.init(random,seed);
|
||||
#else
|
||||
typedef Kokkos::Experimental::UniqueToken<
|
||||
DeviceType, Kokkos::Experimental::UniqueTokenScope::Global> unique_token_type;
|
||||
unique_token_type unique_token;
|
||||
rand_pool.init(seed + comm->me,unique_token.size());
|
||||
#endif
|
||||
|
||||
neighflag = lmp->kokkos->neighflag;
|
||||
|
||||
if (force->newton_pair == 0 || neighflag == FULL )
|
||||
error->all(FLERR,"Must use half neighbor list style and newton on with pair dpd/kk");
|
||||
|
||||
auto request = neighbor->find_request(this);
|
||||
request->set_kokkos_host(std::is_same<DeviceType,LMPHostType>::value &&
|
||||
!std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
request->set_kokkos_device(std::is_same<DeviceType,LMPDeviceType>::value);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDTstatKokkos<DeviceType>::compute(int eflagin, int vflagin)
|
||||
{
|
||||
eflag = eflagin; vflag = vflagin;
|
||||
|
||||
ev_init(eflag,vflag,0);
|
||||
|
||||
// adjust sigma if target T is changing
|
||||
if (t_start != t_stop) {
|
||||
double delta = update->ntimestep - update->beginstep;
|
||||
if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
||||
temperature = t_start + delta * (t_stop-t_start);
|
||||
double boltz = force->boltz;
|
||||
for (int i = 1; i <= atom->ntypes; i++)
|
||||
for (int j = i; j <= atom->ntypes; j++) {
|
||||
k_params.h_view(i,j).sigma = k_params.h_view(j,i).sigma =
|
||||
sqrt(2.0*boltz*temperature*gamma[i][j]);
|
||||
}
|
||||
}
|
||||
k_params.template modify<LMPHostType>();
|
||||
|
||||
if (eflag_atom) {
|
||||
maxeatom = atom->nmax;
|
||||
memory->destroy(eatom);
|
||||
memory->create(eatom,maxeatom,"pair:eatom");
|
||||
memset(&eatom[0], 0, maxeatom * sizeof(double));
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
memoryKK->destroy_kokkos(k_vatom,vatom);
|
||||
memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"pair:vatom");
|
||||
d_vatom = k_vatom.template view<DeviceType>();
|
||||
}
|
||||
|
||||
atomKK->sync(execution_space,X_MASK | V_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
|
||||
x = atomKK->k_x.view<DeviceType>();
|
||||
v = atomKK->k_v.view<DeviceType>();
|
||||
f = atomKK->k_f.view<DeviceType>();
|
||||
type = atomKK->k_type.view<DeviceType>();
|
||||
|
||||
k_cutsq.template sync<DeviceType>();
|
||||
k_params.template sync<DeviceType>();
|
||||
|
||||
special_lj[0] = force->special_lj[0];
|
||||
special_lj[1] = force->special_lj[1];
|
||||
special_lj[2] = force->special_lj[2];
|
||||
special_lj[3] = force->special_lj[3];
|
||||
|
||||
nlocal = atom->nlocal;
|
||||
dtinvsqrt = 1.0/sqrt(update->dt);
|
||||
|
||||
NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
|
||||
d_numneigh = k_list->d_numneigh;
|
||||
d_neighbors = k_list->d_neighbors;
|
||||
d_ilist = k_list->d_ilist;
|
||||
|
||||
need_dup = lmp->kokkos->need_dup<DeviceType>();
|
||||
if (need_dup) {
|
||||
dup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(f);
|
||||
dup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated>(d_vatom);
|
||||
} else {
|
||||
ndup_f = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(f);
|
||||
ndup_vatom = Kokkos::Experimental::create_scatter_view<Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated>(d_vatom);
|
||||
}
|
||||
|
||||
// loop over neighbors of my atoms
|
||||
|
||||
int inum = list->inum;
|
||||
EV_FLOAT ev;
|
||||
copymode = 1;
|
||||
if (neighflag == HALF) {
|
||||
if (vflag_either) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDTstatKokkos<HALF,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDTstatKokkos<HALF,0> >(0,inum),*this);
|
||||
} else if (neighflag == HALFTHREAD) {
|
||||
if (vflag_either) Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagDPDTstatKokkos<HALFTHREAD,1> >(0,inum),*this,ev);
|
||||
else Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType, TagDPDTstatKokkos<HALFTHREAD,0> >(0,inum),*this);
|
||||
}
|
||||
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(f, dup_f);
|
||||
|
||||
if (vflag_global) {
|
||||
virial[0] += ev.v[0];
|
||||
virial[1] += ev.v[1];
|
||||
virial[2] += ev.v[2];
|
||||
virial[3] += ev.v[3];
|
||||
virial[4] += ev.v[4];
|
||||
virial[5] += ev.v[5];
|
||||
}
|
||||
|
||||
if (vflag_fdotr) pair_virial_fdotr_compute(this);
|
||||
|
||||
if (vflag_atom) {
|
||||
if (need_dup)
|
||||
Kokkos::Experimental::contribute(d_vatom, dup_vatom);
|
||||
k_vatom.template modify<DeviceType>();
|
||||
k_vatom.template sync<LMPHostType>();
|
||||
}
|
||||
|
||||
copymode = 0;
|
||||
|
||||
if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK);
|
||||
else atomKK->modified(execution_space,F_MASK);
|
||||
|
||||
// free duplicated memory
|
||||
if (need_dup) {
|
||||
dup_f = decltype(dup_f)();
|
||||
dup_vatom = decltype(dup_vatom)();
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDTstatKokkos<DeviceType>::operator() (TagDPDTstatKokkos<NEIGHFLAG,VFLAG>, const int &ii) const {
|
||||
EV_FLOAT ev;
|
||||
this->template operator()<NEIGHFLAG,VFLAG>(TagDPDTstatKokkos<NEIGHFLAG,VFLAG>(), ii, ev);
|
||||
}
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDTstatKokkos<DeviceType>::operator() (TagDPDTstatKokkos<NEIGHFLAG,VFLAG>, const int &ii, EV_FLOAT &ev) const {
|
||||
|
||||
// The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_f = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f);
|
||||
auto a_f = v_f.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
int i,j,jj,jnum,itype,jtype;
|
||||
double xtmp,ytmp,ztmp,delx,dely,delz,fpair;
|
||||
double vxtmp,vytmp,vztmp,delvx,delvy,delvz;
|
||||
double rsq,r,rinv,dot,wd,randnum,factor_dpd;
|
||||
double fx = 0,fy = 0,fz = 0;
|
||||
|
||||
i = d_ilist[ii];
|
||||
xtmp = x(i,0);
|
||||
ytmp = x(i,1);
|
||||
ztmp = x(i,2);
|
||||
vxtmp = v(i,0);
|
||||
vytmp = v(i,1);
|
||||
vztmp = v(i,2);
|
||||
itype = type(i);
|
||||
jnum = d_numneigh[i];
|
||||
rand_type rand_gen = rand_pool.get_state();
|
||||
for (jj = 0; jj < jnum; jj++) {
|
||||
j = d_neighbors(i,jj);
|
||||
factor_dpd = special_lj[sbmask(j)];
|
||||
j &= NEIGHMASK;
|
||||
|
||||
delx = xtmp - x(j,0);
|
||||
dely = ytmp - x(j,1);
|
||||
delz = ztmp - x(j,2);
|
||||
rsq = delx*delx + dely*dely + delz*delz;
|
||||
jtype = type(j);
|
||||
if (rsq < d_cutsq(itype,jtype)) {
|
||||
r = sqrt(rsq);
|
||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||
rinv = 1.0/r;
|
||||
delvx = vxtmp - v(j,0);
|
||||
delvy = vytmp - v(j,1);
|
||||
delvz = vztmp - v(j,2);
|
||||
dot = delx*delvx + dely*delvy + delz*delvz;
|
||||
|
||||
wd = 1.0 - r/params(itype,jtype).cut;
|
||||
|
||||
randnum = rand_gen.normal();
|
||||
|
||||
// drag force - parallel
|
||||
fpair = -params(itype,jtype).gamma*wd*wd*dot*rinv;
|
||||
|
||||
// random force - parallel
|
||||
fpair += params(itype,jtype).sigma*wd*randnum*dtinvsqrt;
|
||||
fpair *= factor_dpd*rinv;
|
||||
|
||||
fx += fpair*delx;
|
||||
fy += fpair*dely;
|
||||
fz += fpair*delz;
|
||||
|
||||
a_f(j,0) -= fpair*delx;
|
||||
a_f(j,1) -= fpair*dely;
|
||||
a_f(j,2) -= fpair*delz;
|
||||
|
||||
if (VFLAG)
|
||||
this->template v_tally<NEIGHFLAG>(ev,i,j,fpair,delx,dely,delz);
|
||||
}
|
||||
}
|
||||
a_f(i,0) += fx;
|
||||
a_f(i,1) += fy;
|
||||
a_f(i,2) += fz;
|
||||
rand_pool.free_state(rand_gen);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void PairDPDTstatKokkos<DeviceType>::v_tally(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &fpair, const F_FLOAT &delx,
|
||||
const F_FLOAT &dely, const F_FLOAT &delz) const
|
||||
{
|
||||
|
||||
// The vatom array is duplicated for OpenMP, atomic for CUDA, and neither for Serial
|
||||
|
||||
auto v_vatom = ScatterViewHelper<NeedDup_v<NEIGHFLAG,DeviceType>,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom);
|
||||
auto a_vatom = v_vatom.template access<AtomicDup_v<NEIGHFLAG,DeviceType>>();
|
||||
|
||||
const E_FLOAT v0 = delx*delx*fpair;
|
||||
const E_FLOAT v1 = dely*dely*fpair;
|
||||
const E_FLOAT v2 = delz*delz*fpair;
|
||||
const E_FLOAT v3 = delx*dely*fpair;
|
||||
const E_FLOAT v4 = delx*delz*fpair;
|
||||
const E_FLOAT v5 = dely*delz*fpair;
|
||||
|
||||
if (vflag_global) {
|
||||
ev.v[0] += v0;
|
||||
ev.v[1] += v1;
|
||||
ev.v[2] += v2;
|
||||
ev.v[3] += v3;
|
||||
ev.v[4] += v4;
|
||||
ev.v[5] += v5;
|
||||
}
|
||||
|
||||
if (vflag_atom) {
|
||||
a_vatom(i,0) += 0.5*v0;
|
||||
a_vatom(i,1) += 0.5*v1;
|
||||
a_vatom(i,2) += 0.5*v2;
|
||||
a_vatom(i,3) += 0.5*v3;
|
||||
a_vatom(i,4) += 0.5*v4;
|
||||
a_vatom(i,5) += 0.5*v5;
|
||||
a_vatom(j,0) += 0.5*v0;
|
||||
a_vatom(j,1) += 0.5*v1;
|
||||
a_vatom(j,2) += 0.5*v2;
|
||||
a_vatom(j,3) += 0.5*v3;
|
||||
a_vatom(j,4) += 0.5*v4;
|
||||
a_vatom(j,5) += 0.5*v5;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
void PairDPDTstatKokkos<DeviceType>::allocate()
|
||||
{
|
||||
PairDPD::allocate();
|
||||
int n = atom->ntypes;
|
||||
|
||||
memory->destroy(cutsq);
|
||||
memoryKK->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq");
|
||||
d_cutsq = k_cutsq.template view<DeviceType>();
|
||||
|
||||
k_params = Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType>("PairDPD::params",n+1,n+1);
|
||||
params = k_params.template view<DeviceType>();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int PairDPDTstatKokkos<DeviceType>::sbmask(const int& j) const {
|
||||
return j >> SBBITS & 3;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
init for one type pair i,j and corresponding j,i
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
template<class DeviceType>
|
||||
double PairDPDTstatKokkos<DeviceType>::init_one(int i, int j)
|
||||
{
|
||||
double cutone = PairDPD::init_one(i,j);
|
||||
|
||||
k_params.h_view(i,j).cut = cut[i][j];
|
||||
k_params.h_view(i,j).gamma = gamma[i][j];
|
||||
k_params.h_view(i,j).sigma = sigma[i][j];
|
||||
k_params.h_view(j,i) = k_params.h_view(i,j);
|
||||
|
||||
k_params.template modify<LMPHostType>();
|
||||
|
||||
k_cutsq.h_view(i,j) = cutone*cutone;
|
||||
k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j);
|
||||
k_cutsq.template modify<LMPHostType>();
|
||||
|
||||
return cutone;
|
||||
}
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
template class PairDPDTstatKokkos<LMPDeviceType>;
|
||||
#ifdef LMP_KOKKOS_GPU
|
||||
template class PairDPDTstatKokkos<LMPHostType>;
|
||||
#endif
|
||||
}
|
||||
138
src/KOKKOS/pair_dpd_tstat_kokkos.h
Normal file
138
src/KOKKOS/pair_dpd_tstat_kokkos.h
Normal file
@ -0,0 +1,138 @@
|
||||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef PAIR_CLASS
|
||||
// clang-format off
|
||||
PairStyle(dpd/tstat/kk,PairDPDTstatKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/tstat/kk/device,PairDPDTstatKokkos<LMPDeviceType>);
|
||||
PairStyle(dpd/tstat/kk/host,PairDPDTstatKokkos<LMPHostType>);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_PAIR_DPD_TSTAT_KOKKOS_H
|
||||
#define LMP_PAIR_DPD_TSTAT_KOKKOS_H
|
||||
|
||||
#include "pair_dpd_tstat.h"
|
||||
#include "pair_kokkos.h"
|
||||
#include "kokkos_type.h"
|
||||
|
||||
#if !defined(DPD_USE_RAN_MARS) && !defined(DPD_USE_Random_XorShift64) && !defined(Random_XorShift1024)
|
||||
#define DPD_USE_Random_XorShift64
|
||||
#endif
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
#include "rand_pool_wrap_kokkos.h"
|
||||
#else
|
||||
#include "Kokkos_Random.hpp"
|
||||
#endif
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
template<class DeviceType>
|
||||
class PairDPDTstatKokkos : public PairDPDTstat {
|
||||
public:
|
||||
typedef DeviceType device_type;
|
||||
typedef ArrayTypes<DeviceType> AT;
|
||||
typedef EV_FLOAT value_type;
|
||||
|
||||
PairDPDTstatKokkos(class LAMMPS*);
|
||||
~PairDPDTstatKokkos() override;
|
||||
|
||||
void allocate() override;
|
||||
|
||||
void init_style() override;
|
||||
double init_one(int i, int j) override;
|
||||
void compute(int, int) override;
|
||||
|
||||
struct params_dpd {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd() {cut=gamma=sigma=0;}
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
params_dpd(int /*i*/) {cut=gamma=sigma=0;}
|
||||
F_FLOAT cut,gamma,sigma;
|
||||
};
|
||||
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
struct TagDPDTstatKokkos{};
|
||||
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDTstatKokkos<NEIGHFLAG,VFLAG>, const int &i) const;
|
||||
|
||||
template<int NEIGHFLAG, int VFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator () (TagDPDTstatKokkos<NEIGHFLAG,VFLAG>, const int &i, EV_FLOAT&) const;
|
||||
|
||||
template<int NEIGHFLAG>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void v_tally(EV_FLOAT &ev, const int &i, const int &j,
|
||||
const F_FLOAT &fpair, const F_FLOAT &delx,
|
||||
const F_FLOAT &dely, const F_FLOAT &delz) const;
|
||||
private:
|
||||
double special_lj[4];
|
||||
int eflag,vflag;
|
||||
int neighflag,nlocal;
|
||||
double dtinvsqrt;
|
||||
|
||||
int need_dup;
|
||||
|
||||
using KKDeviceType = typename KKDevice<DeviceType>::value;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using DupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterDuplicated>;
|
||||
|
||||
template<typename DataType, typename Layout>
|
||||
using NonDupScatterView = KKScatterView<DataType, Layout, KKDeviceType, KKScatterSum, KKScatterNonDuplicated>;
|
||||
|
||||
DupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> dup_f;
|
||||
DupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> dup_vatom;
|
||||
NonDupScatterView<F_FLOAT*[3], typename DAT::t_f_array::array_layout> ndup_f;
|
||||
NonDupScatterView<F_FLOAT*[6], typename DAT::t_virial_array::array_layout> ndup_vatom;
|
||||
|
||||
#ifdef DPD_USE_RAN_MARS
|
||||
RandPoolWrap rand_pool;
|
||||
typedef RandWrap rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift64)
|
||||
Kokkos::Random_XorShift64_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift64_Pool<DeviceType>::generator_type rand_type;
|
||||
#elif defined(DPD_USE_Random_XorShift1024)
|
||||
Kokkos::Random_XorShift1024_Pool<DeviceType> rand_pool;
|
||||
typedef typename Kokkos::Random_XorShift1024_Pool<DeviceType>::generator_type rand_type;
|
||||
#endif
|
||||
typename AT::t_x_array_randomread x;
|
||||
typename AT::t_x_array_randomread v;
|
||||
typename AT::t_f_array f;
|
||||
typename AT::t_int_1d_randomread type;
|
||||
|
||||
typename AT::t_neighbors_2d d_neighbors;
|
||||
typename AT::t_int_1d_randomread d_ilist;
|
||||
typename AT::t_int_1d_randomread d_numneigh;
|
||||
|
||||
typename AT::tdual_ffloat_2d k_cutsq;
|
||||
typename AT::t_ffloat_2d d_cutsq;
|
||||
|
||||
Kokkos::DualView<params_dpd**,Kokkos::LayoutRight,DeviceType> k_params;
|
||||
typename Kokkos::DualView<params_dpd**,
|
||||
Kokkos::LayoutRight,DeviceType>::t_dev_const_um params;
|
||||
|
||||
DAT::tdual_virial_array k_vatom;
|
||||
typename AT::t_virial_array d_vatom;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int sbmask(const int& j) const;
|
||||
friend void pair_virial_fdotr_compute<PairDPDTstatKokkos>(PairDPDTstatKokkos*);
|
||||
|
||||
};
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -694,7 +694,7 @@ void PairReaxFFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
eflag = eflag_in;
|
||||
vflag = vflag_in;
|
||||
|
||||
ev_init(eflag,vflag);
|
||||
ev_init(eflag,vflag,0);
|
||||
|
||||
atomKK->sync(execution_space,datamask_read);
|
||||
k_params_sing.template sync<DeviceType>();
|
||||
@ -715,7 +715,7 @@ void PairReaxFFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
newton_pair = force->newton_pair;
|
||||
|
||||
nn = list->inum;
|
||||
NN = list->inum + list->gnum;
|
||||
NN = atom->nlocal + atom->nghost;
|
||||
|
||||
const int inum = list->inum;
|
||||
const int ignum = inum + list->gnum;
|
||||
@ -958,9 +958,9 @@ void PairReaxFFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
|
||||
count_angular = h_count_angular_torsion(0);
|
||||
count_torsion = h_count_angular_torsion(1);
|
||||
|
||||
if (count_angular > d_angular_pack.extent(0))
|
||||
if (count_angular > (int)d_angular_pack.extent(0))
|
||||
d_angular_pack = t_reax_int4_2d("reaxff:angular_pack",(int)(count_angular * 1.1),2);
|
||||
if (count_torsion > d_torsion_pack.extent(0))
|
||||
if (count_torsion > (int)d_torsion_pack.extent(0))
|
||||
d_torsion_pack = t_reax_int4_2d("reaxff:torsion_pack",(int)(count_torsion * 1.1),2);
|
||||
|
||||
// need to zero to re-count
|
||||
@ -2584,8 +2584,6 @@ void PairReaxFFKokkos<DeviceType>::compute_angular_sbo(int i, int itype, int j_s
|
||||
const F_FLOAT p_val8 = gp[33];
|
||||
const F_FLOAT p_val9 = gp[16];
|
||||
|
||||
const F_FLOAT Delta_val = d_total_bo[i] - paramssing(itype).valency_val;
|
||||
|
||||
F_FLOAT SBOp = 0.0;
|
||||
F_FLOAT prod_SBO = 1.0;
|
||||
|
||||
@ -2710,7 +2708,7 @@ int PairReaxFFKokkos<DeviceType>::preprocess_angular(int i, int itype, int j_sta
|
||||
template<class DeviceType>
|
||||
template<bool POPULATE>
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int PairReaxFFKokkos<DeviceType>::preprocess_torsion(int i, int itype, int itag,
|
||||
int PairReaxFFKokkos<DeviceType>::preprocess_torsion(int i, int /*itype*/, int itag,
|
||||
F_FLOAT xtmp, F_FLOAT ytmp, F_FLOAT ztmp, int j_start, int j_end, int location_torsion) const {
|
||||
|
||||
// in reaxff_torsion_angles: j = i, k = j, i = k;
|
||||
@ -2721,7 +2719,6 @@ int PairReaxFFKokkos<DeviceType>::preprocess_torsion(int i, int itype, int itag,
|
||||
int j = d_bo_list[jj];
|
||||
j &= NEIGHMASK;
|
||||
const tagint jtag = tag(j);
|
||||
const int jtype = type(j);
|
||||
const int j_index = jj - j_start;
|
||||
|
||||
// skip half of the interactions
|
||||
|
||||
@ -237,7 +237,7 @@ void FixQEqReaxFFOMP::init_storage()
|
||||
#if defined(_OPENMP)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#endif
|
||||
for (int i = 0; i < NN; i++) {
|
||||
for (int i = 0; i < nn; i++) {
|
||||
Hdia_inv[i] = 1. / eta[atom->type[i]];
|
||||
b_s[i] = -chi[atom->type[i]];
|
||||
if (efield) b_s[i] -= chi_field[i];
|
||||
@ -254,17 +254,13 @@ void FixQEqReaxFFOMP::pre_force(int /* vflag */)
|
||||
{
|
||||
if (update->ntimestep % nevery) return;
|
||||
|
||||
int n = atom->nlocal;
|
||||
|
||||
if (reaxff) {
|
||||
nn = reaxff->list->inum;
|
||||
NN = reaxff->list->inum + reaxff->list->gnum;
|
||||
ilist = reaxff->list->ilist;
|
||||
numneigh = reaxff->list->numneigh;
|
||||
firstneigh = reaxff->list->firstneigh;
|
||||
} else {
|
||||
nn = list->inum;
|
||||
NN = list->inum + list->gnum;
|
||||
ilist = list->ilist;
|
||||
numneigh = list->numneigh;
|
||||
firstneigh = list->firstneigh;
|
||||
@ -274,7 +270,7 @@ void FixQEqReaxFFOMP::pre_force(int /* vflag */)
|
||||
// need to be atom->nmax in length
|
||||
|
||||
if (atom->nmax > nmax) reallocate_storage();
|
||||
if (n > n_cap*DANGER_ZONE || m_fill > m_cap*DANGER_ZONE)
|
||||
if (atom->nlocal > n_cap*DANGER_ZONE || m_fill > m_cap*DANGER_ZONE)
|
||||
reallocate_matrix();
|
||||
|
||||
if (efield) get_chi_field();
|
||||
@ -487,6 +483,9 @@ void FixQEqReaxFFOMP::sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
{
|
||||
int i, j, itr_j;
|
||||
int ii;
|
||||
int nlocal = atom->nlocal;
|
||||
int nall = atom->nlocal + atom->nghost;
|
||||
|
||||
int nthreads = comm->nthreads;
|
||||
#if defined(_OPENMP)
|
||||
int tid = omp_get_thread_num();
|
||||
@ -505,15 +504,14 @@ void FixQEqReaxFFOMP::sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
#if defined(_OPENMP)
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (ii = nn; ii < NN; ++ii) {
|
||||
i = ilist[ii];
|
||||
for (i = nlocal; i < nall; ++i) {
|
||||
if (atom->mask[i] & groupbit) b[i] = 0;
|
||||
}
|
||||
|
||||
#if defined(_OPENMP)
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (i = 0; i < NN; ++i)
|
||||
for (i = 0; i < nall; ++i)
|
||||
for (int t=0; t<nthreads; t++) b_temp[t][i] = 0.0;
|
||||
|
||||
// Wait for b accumulated and b_temp zeroed.
|
||||
@ -538,7 +536,7 @@ void FixQEqReaxFFOMP::sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
#pragma omp barrier
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (i = 0; i < NN; ++i)
|
||||
for (i = 0; i < nall; ++i)
|
||||
for (int t = 0; t < nthreads; ++t) b[i] += b_temp[t][i];
|
||||
|
||||
} //end omp parallel
|
||||
@ -815,6 +813,8 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x1, double *x
|
||||
int i, j, itr_j;
|
||||
int ii;
|
||||
int indxI, indxJ;
|
||||
int nlocal = atom->nlocal;
|
||||
int nall = atom->nlocal + atom->nghost;
|
||||
|
||||
int nthreads = comm->nthreads;
|
||||
#if defined(_OPENMP)
|
||||
@ -838,8 +838,7 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x1, double *x
|
||||
#if defined(_OPENMP)
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (ii = nn; ii < NN; ++ii) {
|
||||
i = ilist[ii];
|
||||
for (i = nlocal; i < nall; ++i) {
|
||||
if (atom->mask[i] & groupbit) {
|
||||
indxI = 2 * i;
|
||||
b[indxI] = 0;
|
||||
@ -850,7 +849,7 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x1, double *x
|
||||
#if defined(_OPENMP)
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (i = 0; i < NN; ++i) {
|
||||
for (i = 0; i < nall; ++i) {
|
||||
indxI = 2 * i;
|
||||
for (int t=0; t<nthreads; t++) {
|
||||
b_temp[t][indxI] = 0.0;
|
||||
@ -884,7 +883,7 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x1, double *x
|
||||
#pragma omp barrier
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (i = 0; i < NN; ++i) {
|
||||
for (i = 0; i < nall; ++i) {
|
||||
indxI = 2 * i;
|
||||
for (int t = 0; t < nthreads; ++t) {
|
||||
b[indxI] += b_temp[t][indxI];
|
||||
@ -906,6 +905,8 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
int i, j, itr_j;
|
||||
int ii;
|
||||
int indxI, indxJ;
|
||||
int nlocal = atom->nlocal;
|
||||
int nall = atom->nlocal + atom->nghost;
|
||||
|
||||
int nthreads = comm->nthreads;
|
||||
#if defined(_OPENMP)
|
||||
@ -929,8 +930,7 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
#if defined(_OPENMP)
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (ii = nn; ii < NN; ++ii) {
|
||||
i = ilist[ii];
|
||||
for (i = nlocal; i < nall; ++i) {
|
||||
if (atom->mask[i] & groupbit) {
|
||||
indxI = 2 * i;
|
||||
b[indxI] = 0;
|
||||
@ -941,7 +941,7 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
#if defined(_OPENMP)
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (i = 0; i < NN; ++i) {
|
||||
for (i = 0; i < nall; ++i) {
|
||||
indxI = 2 * i;
|
||||
for (int t=0; t<nthreads; t++) {
|
||||
b_temp[t][indxI] = 0.0;
|
||||
@ -975,7 +975,7 @@ void FixQEqReaxFFOMP::dual_sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
#pragma omp barrier
|
||||
#pragma omp for schedule(dynamic,50)
|
||||
#endif
|
||||
for (i = 0; i < NN; ++i) {
|
||||
for (i = 0; i < nall; ++i) {
|
||||
indxI = 2 * i;
|
||||
for (int t = 0; t < nthreads; ++t) {
|
||||
b[indxI] += b_temp[t][indxI];
|
||||
|
||||
@ -356,7 +356,9 @@ void FixPOEMS::init()
|
||||
for (auto ifix : modify->get_fix_list()) {
|
||||
if (utils::strmatch(ifix->style, "^poems")) pflag = true;
|
||||
if (pflag && (ifix->setmask() & POST_FORCE) && !ifix->rigid_flag)
|
||||
if (comm->me == 0) error->warning(FLERR, "Fix {} alters forces after fix poems", ifix->id);
|
||||
if (comm->me == 0)
|
||||
error->warning(FLERR,"Fix {} with ID {} alters forces after fix poems",
|
||||
ifix->style, ifix->id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -203,7 +203,8 @@ void FixACKS2ReaxFF::pertype_parameters(char *arg)
|
||||
void FixACKS2ReaxFF::allocate_storage()
|
||||
{
|
||||
nmax = atom->nmax;
|
||||
int size = nmax*2 + 2;
|
||||
NN = atom->nlocal + atom->nghost;
|
||||
const int size = nmax*2 + 2;
|
||||
|
||||
// 0 to nn-1: owned atoms related to H matrix
|
||||
// nn to NN-1: ghost atoms related to H matrix
|
||||
@ -329,17 +330,15 @@ void FixACKS2ReaxFF::pre_force(int /*vflag*/)
|
||||
{
|
||||
if (update->ntimestep % nevery) return;
|
||||
|
||||
int n = atom->nlocal;
|
||||
NN = atom->nlocal + atom->nghost;
|
||||
|
||||
if (reaxff) {
|
||||
nn = reaxff->list->inum;
|
||||
NN = reaxff->list->inum + reaxff->list->gnum;
|
||||
ilist = reaxff->list->ilist;
|
||||
numneigh = reaxff->list->numneigh;
|
||||
firstneigh = reaxff->list->firstneigh;
|
||||
} else {
|
||||
nn = list->inum;
|
||||
NN = list->inum + list->gnum;
|
||||
ilist = list->ilist;
|
||||
numneigh = list->numneigh;
|
||||
firstneigh = list->firstneigh;
|
||||
@ -349,7 +348,7 @@ void FixACKS2ReaxFF::pre_force(int /*vflag*/)
|
||||
// need to be atom->nmax in length
|
||||
|
||||
if (atom->nmax > nmax) reallocate_storage();
|
||||
if (n > n_cap*DANGER_ZONE || m_fill > m_cap*DANGER_ZONE)
|
||||
if (atom->nlocal > n_cap*DANGER_ZONE || m_fill > m_cap*DANGER_ZONE)
|
||||
reallocate_matrix();
|
||||
|
||||
if (efield) get_chi_field();
|
||||
@ -626,8 +625,7 @@ void FixACKS2ReaxFF::sparse_matvec_acks2(sparse_matrix *H, sparse_matrix *X, dou
|
||||
}
|
||||
}
|
||||
|
||||
for (ii = nn; ii < NN; ++ii) {
|
||||
i = ilist[ii];
|
||||
for (i = atom->nlocal; i < NN; ++i) {
|
||||
if (atom->mask[i] & groupbit) {
|
||||
b[i] = 0;
|
||||
b[NN + i] = 0;
|
||||
@ -674,38 +672,34 @@ void FixACKS2ReaxFF::sparse_matvec_acks2(sparse_matrix *H, sparse_matrix *X, dou
|
||||
|
||||
void FixACKS2ReaxFF::calculate_Q()
|
||||
{
|
||||
int i, k;
|
||||
pack_flag = 2;
|
||||
comm->forward_comm(this); //Dist_vector(s);
|
||||
|
||||
for (int ii = 0; ii < nn; ++ii) {
|
||||
i = ilist[ii];
|
||||
for (int i = 0; i < NN; ++i) {
|
||||
if (atom->mask[i] & groupbit) {
|
||||
|
||||
/* backup s */
|
||||
for (k = nprev-1; k > 0; --k) {
|
||||
s_hist[i][k] = s_hist[i][k-1];
|
||||
s_hist_X[i][k] = s_hist_X[i][k-1];
|
||||
atom->q[i] = s[i];
|
||||
|
||||
if (i < atom->nlocal) {
|
||||
|
||||
/* backup s */
|
||||
for (int k = nprev-1; k > 0; --k) {
|
||||
s_hist[i][k] = s_hist[i][k-1];
|
||||
s_hist_X[i][k] = s_hist_X[i][k-1];
|
||||
}
|
||||
s_hist[i][0] = s[i];
|
||||
s_hist_X[i][0] = s[NN+i];
|
||||
}
|
||||
s_hist[i][0] = s[i];
|
||||
s_hist_X[i][0] = s[NN+i];
|
||||
}
|
||||
}
|
||||
// last two rows
|
||||
if (last_rows_flag) {
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
for (k = nprev-1; k > 0; --k)
|
||||
for (int k = nprev-1; k > 0; --k)
|
||||
s_hist_last[i][k] = s_hist_last[i][k-1];
|
||||
s_hist_last[i][0] = s[2*NN+i];
|
||||
}
|
||||
}
|
||||
|
||||
pack_flag = 2;
|
||||
comm->forward_comm(this); //Dist_vector(s);
|
||||
|
||||
for (int ii = 0; ii < NN; ++ii) {
|
||||
i = ilist[ii];
|
||||
if (atom->mask[i] & groupbit)
|
||||
atom->q[i] = s[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -37,7 +37,7 @@ class FixACKS2ReaxFF : public FixQEqReaxFF {
|
||||
double *get_s() { return s; }
|
||||
|
||||
protected:
|
||||
int last_rows_rank, last_rows_flag;
|
||||
int NN, last_rows_rank, last_rows_flag;
|
||||
|
||||
double **s_hist_X, **s_hist_last;
|
||||
double *bcut_acks2, bond_softness, **bcut; // acks2 parameters
|
||||
|
||||
@ -104,7 +104,7 @@ FixQEqReaxFF::FixQEqReaxFF(LAMMPS *lmp, int narg, char **arg) :
|
||||
shld = nullptr;
|
||||
|
||||
nn = n_cap = 0;
|
||||
NN = nmax = 0;
|
||||
nmax = 0;
|
||||
m_fill = m_cap = 0;
|
||||
pack_flag = 0;
|
||||
s = nullptr;
|
||||
@ -319,7 +319,7 @@ void FixQEqReaxFF::reallocate_storage()
|
||||
|
||||
void FixQEqReaxFF::allocate_matrix()
|
||||
{
|
||||
int i,ii,n,m;
|
||||
int i,ii,m;
|
||||
|
||||
int mincap;
|
||||
double safezone;
|
||||
@ -332,8 +332,7 @@ void FixQEqReaxFF::allocate_matrix()
|
||||
safezone = REAX_SAFE_ZONE;
|
||||
}
|
||||
|
||||
n = atom->nlocal;
|
||||
n_cap = MAX((int)(n * safezone), mincap);
|
||||
n_cap = MAX((int)(atom->nlocal * safezone), mincap);
|
||||
|
||||
// determine the total space for the H matrix
|
||||
|
||||
@ -493,13 +492,11 @@ void FixQEqReaxFF::setup_pre_force(int vflag)
|
||||
{
|
||||
if (reaxff) {
|
||||
nn = reaxff->list->inum;
|
||||
NN = reaxff->list->inum + reaxff->list->gnum;
|
||||
ilist = reaxff->list->ilist;
|
||||
numneigh = reaxff->list->numneigh;
|
||||
firstneigh = reaxff->list->firstneigh;
|
||||
} else {
|
||||
nn = list->inum;
|
||||
NN = list->inum + list->gnum;
|
||||
ilist = list->ilist;
|
||||
numneigh = list->numneigh;
|
||||
firstneigh = list->firstneigh;
|
||||
@ -537,7 +534,7 @@ void FixQEqReaxFF::init_storage()
|
||||
{
|
||||
if (efield) get_chi_field();
|
||||
|
||||
for (int ii = 0; ii < NN; ii++) {
|
||||
for (int ii = 0; ii < nn; ii++) {
|
||||
int i = ilist[ii];
|
||||
if (atom->mask[i] & groupbit) {
|
||||
Hdia_inv[i] = 1. / eta[atom->type[i]];
|
||||
@ -561,13 +558,11 @@ void FixQEqReaxFF::pre_force(int /*vflag*/)
|
||||
|
||||
if (reaxff) {
|
||||
nn = reaxff->list->inum;
|
||||
NN = reaxff->list->inum + reaxff->list->gnum;
|
||||
ilist = reaxff->list->ilist;
|
||||
numneigh = reaxff->list->numneigh;
|
||||
firstneigh = reaxff->list->firstneigh;
|
||||
} else {
|
||||
nn = list->inum;
|
||||
NN = list->inum + list->gnum;
|
||||
ilist = list->ilist;
|
||||
numneigh = list->numneigh;
|
||||
firstneigh = list->firstneigh;
|
||||
@ -791,11 +786,9 @@ void FixQEqReaxFF::sparse_matvec(sparse_matrix *A, double *x, double *b)
|
||||
b[i] = eta[atom->type[i]] * x[i];
|
||||
}
|
||||
|
||||
for (ii = nn; ii < NN; ++ii) {
|
||||
i = ilist[ii];
|
||||
if (atom->mask[i] & groupbit)
|
||||
int nall = atom->nlocal + atom->nghost;
|
||||
for (i = atom->nlocal; i < nall; ++i)
|
||||
b[i] = 0;
|
||||
}
|
||||
|
||||
for (ii = 0; ii < nn; ++ii) {
|
||||
i = ilist[ii];
|
||||
|
||||
@ -59,7 +59,7 @@ class FixQEqReaxFF : public Fix {
|
||||
protected:
|
||||
int nevery, reaxflag;
|
||||
int matvecs;
|
||||
int nn, NN, m_fill;
|
||||
int nn, m_fill;
|
||||
int n_cap, nmax, m_cap;
|
||||
int pack_flag;
|
||||
int nlevels_respa;
|
||||
|
||||
@ -693,7 +693,8 @@ void FixRigid::init()
|
||||
for (auto ifix : modify->get_fix_list()) {
|
||||
if (ifix->rigid_flag) rflag = true;
|
||||
if ((comm->me == 0) && rflag && (ifix->setmask() & POST_FORCE) && !ifix->rigid_flag)
|
||||
error->warning(FLERR,"Fix {} alters forces after fix rigid", ifix->id);
|
||||
error->warning(FLERR,"Fix {} with ID {} alters forces after fix rigid",
|
||||
ifix->style, ifix->id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -538,7 +538,8 @@ void FixRigidSmall::init()
|
||||
for (auto ifix : modify->get_fix_list()) {
|
||||
if (ifix->rigid_flag) rflag = true;
|
||||
if ((comm->me == 0) && rflag && (ifix->setmask() & POST_FORCE) && !ifix->rigid_flag)
|
||||
error->warning(FLERR,"Fix {} alters forces after fix rigid", ifix->id);
|
||||
error->warning(FLERR,"Fix {} with ID {} alters forces after fix rigid/small",
|
||||
ifix->style, ifix->id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1916,7 +1916,12 @@ void DumpVTK::identify_vectors()
|
||||
name.count(vector3_starts[v3s]+2) )
|
||||
{
|
||||
std::string vectorName = name[vector3_starts[v3s]];
|
||||
vectorName.erase(vectorName.find_first_of('x'));
|
||||
std::string::size_type erase_start = vectorName.find_first_of('x');
|
||||
if (erase_start == 0) {
|
||||
vectorName.erase(0,1);
|
||||
} else {
|
||||
vectorName.erase(erase_start);
|
||||
}
|
||||
name[vector3_starts[v3s]] = vectorName;
|
||||
vector_set.insert(vector3_starts[v3s]);
|
||||
}
|
||||
|
||||
@ -249,11 +249,11 @@ void Modify::init()
|
||||
|
||||
for (i = 0; i < nfix; i++)
|
||||
if (!fix[i]->dynamic_group_allow && group->dynamic[fix[i]->igroup])
|
||||
error->all(FLERR, "Fix {} does not allow use with a dynamic group", fix[i]->id);
|
||||
error->all(FLERR, "Fix {} does not allow use with a dynamic group", fix[i]->style);
|
||||
|
||||
for (i = 0; i < ncompute; i++)
|
||||
if (!compute[i]->dynamic_group_allow && group->dynamic[compute[i]->igroup])
|
||||
error->all(FLERR, "Compute {} does not allow use with a dynamic group", compute[i]->id);
|
||||
error->all(FLERR, "Compute {} does not allow use with a dynamic group", compute[i]->style);
|
||||
|
||||
// warn if any particle is time integrated more than once
|
||||
|
||||
|
||||
Reference in New Issue
Block a user