Merge pull request #3198 from bathmatt/pair-dpd
DPD-BASIC kokkosification
This commit is contained in:
@ -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>`
|
||||
|
||||
@ -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**\ :
|
||||
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
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>();
|
||||
|
||||
Reference in New Issue
Block a user