Merge branch 'develop' into plumed-plugin
This commit is contained in:
@ -5,9 +5,9 @@ dimension 3
|
||||
atom_style full
|
||||
processors * * 1
|
||||
|
||||
pair_style lj/sdk/coul/long 15.0 # compatible with "lj/spica/coul/long"
|
||||
pair_style lj/spica/coul/long 15.0
|
||||
bond_style harmonic
|
||||
angle_style sdk # compatible with "spica"
|
||||
angle_style spica
|
||||
special_bonds lj/coul 0.0 0.0 1.0
|
||||
|
||||
read_data data.sds.gz
|
||||
|
||||
@ -1,2 +1,3 @@
|
||||
*.csv
|
||||
*.txt
|
||||
*.lammpstrj
|
||||
|
||||
@ -17,14 +17,22 @@ q_ref = float(ref_line[3])
|
||||
inv11_ref = float(ref_line[4])
|
||||
inv12_ref = float(ref_line[5])
|
||||
b1_ref = float(ref_line[6])
|
||||
felec1_ref = float(ref_line[8])
|
||||
felyt1_ref = float(ref_line[10])
|
||||
press_ref = float(ref_line[12])
|
||||
|
||||
# out.csv
|
||||
with open(sys.argv[2]) as f:
|
||||
out_line = f.readlines()[-1].split(", ")
|
||||
e_out = float(out_line[0])
|
||||
q_out = float(out_line[1])
|
||||
press_out = float(out_line[2])
|
||||
|
||||
out_lines = [("energy", e_ref, e_out), ("charge", q_ref, q_out)]
|
||||
out_lines = [
|
||||
("energy", e_ref, e_out),
|
||||
("charge", q_ref, q_out),
|
||||
("pressure", press_ref, press_out),
|
||||
]
|
||||
|
||||
# vec.csv
|
||||
vec_file = "vec.csv"
|
||||
@ -44,6 +52,14 @@ if op.isfile(inv_file):
|
||||
inv12_out = float(inv_line[1])
|
||||
out_lines.append(("inv11", inv11_ref, inv11_out))
|
||||
|
||||
# forces.lammpstrj
|
||||
force_file = "forces.lammpstrj"
|
||||
with open(force_file) as f:
|
||||
lines = f.readlines()[9:]
|
||||
for name, i, f_ref in [("felec1", "1", felec1_ref), ("felyt1", "3", felyt1_ref)]:
|
||||
f_out = next(float(y[3]) for x in lines if (y := x.split()) and y[0] == i)
|
||||
out_lines.append((name, f_ref, f_out))
|
||||
|
||||
lines = []
|
||||
for label, ref, out in out_lines:
|
||||
error = rel_error(out, ref)
|
||||
|
||||
@ -8,7 +8,7 @@ thermo_style custom step pe c_qbot c_qtop
|
||||
fix feta all property/atom d_eta ghost on
|
||||
set group bot d_eta 0.5
|
||||
set group top d_eta 3.0
|
||||
fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta algo cg 1e-6
|
||||
fix conp bot electrode/conp 0 NULL couple top 1 symm on eta d_eta algo cg 1e-6
|
||||
|
||||
run 0
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ thermo_style custom step pe c_qbot c_qtop
|
||||
fix feta all property/atom d_eta ghost on
|
||||
set group bot d_eta 0.5
|
||||
set group top d_eta 3.0
|
||||
fix conp bot electrode/conp 0 2 couple top 1 symm on eta d_eta write_inv inv.csv write_vec vec.csv
|
||||
fix conp bot electrode/conp 0 NULL couple top 1 symm on eta d_eta write_inv inv.csv write_vec vec.csv
|
||||
|
||||
run 0
|
||||
|
||||
|
||||
@ -1,12 +1,17 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import time
|
||||
|
||||
import numpy as np
|
||||
from scipy.special import erf
|
||||
|
||||
SQRT2 = np.sqrt(2)
|
||||
SQRTPI_INV = 1 / np.sqrt(np.pi)
|
||||
COULOMB = 332.06371 # Coulomb constant in Lammps 'real' units
|
||||
QE2F = 23.060549
|
||||
NKTV2P = 68568.415 # pressure in 'real' units
|
||||
LENGTH = 10000 # convergence parameter
|
||||
LZ = 20
|
||||
|
||||
|
||||
def lattice(length):
|
||||
@ -26,6 +31,25 @@ def b_element(r, q, eta):
|
||||
return q * erf(eta * r) / r
|
||||
|
||||
|
||||
def force_gauss(r, qq, eta):
|
||||
etar = eta * r
|
||||
return (qq / np.square(r)) * (
|
||||
erf(etar) - 2 * etar * SQRTPI_INV * np.exp(-np.square(etar))
|
||||
)
|
||||
|
||||
|
||||
def force_point(r, qq):
|
||||
return qq / np.square(r)
|
||||
|
||||
|
||||
def force_component(dx, d, qq, eta=None):
|
||||
if eta:
|
||||
return np.sum(dx / d * force_gauss(d, qq, eta))
|
||||
else:
|
||||
return np.sum(dx / d * force_point(d, qq))
|
||||
|
||||
|
||||
time_start = time.perf_counter()
|
||||
a = 1 # nearest neighbor distance i.e. lattice constant / sqrt(2)
|
||||
x_elec = [-2, 2]
|
||||
x_elyt = [-1, 1]
|
||||
@ -36,8 +60,20 @@ v = np.array([-0.5, 0.5]) * (QE2F / COULOMB)
|
||||
# distances to images within electrode and to opposite electrode
|
||||
distances = a * np.linalg.norm(lattice(LENGTH), axis=1)
|
||||
opposite_distances = np.sqrt(np.square(distances) + distance_plates**2)
|
||||
image_distances = []
|
||||
for x in x_elec:
|
||||
image_distances.append([])
|
||||
for y in x_elyt:
|
||||
image_distances[-1].append(np.sqrt(np.square(distances) + np.abs(y - x) ** 2))
|
||||
image_elyt_distances = [[None for _ in range(len(x_elyt))] for _ in range(len(x_elyt))]
|
||||
for i, (xi, qi) in enumerate(zip(x_elyt, q_elyt)):
|
||||
for j, (xj, qj) in list(enumerate(zip(x_elyt, q_elyt)))[i + 1 :]:
|
||||
image_elyt_distances[i][j] = np.sqrt(
|
||||
np.square(distances) + np.abs(xj - xi) ** 2
|
||||
)
|
||||
|
||||
for name, eta_elec in [("", [2.0, 2.0]), ("_eta_mix", [0.5, 3.0])]:
|
||||
# for name, eta_elec in [("", [2.0, 2.0])]:
|
||||
eta_mix = np.prod(eta_elec) / np.sqrt(np.sum(np.square(eta_elec)))
|
||||
# self interaction and within original box
|
||||
A_11 = np.sqrt(2 / np.pi) * eta_elec[0]
|
||||
@ -55,22 +91,18 @@ for name, eta_elec in [("", [2.0, 2.0]), ("_eta_mix", [0.5, 3.0])]:
|
||||
|
||||
# electrode-electrolyte interaction
|
||||
b = []
|
||||
for x, eta in zip(x_elec, eta_elec):
|
||||
for i, (x, eta) in enumerate(zip(x_elec, eta_elec)):
|
||||
bi = 0
|
||||
for y, q in zip(x_elyt, q_elyt):
|
||||
d = abs(y - x)
|
||||
bi += b_element(d, q, eta)
|
||||
image_distances = np.sqrt(np.square(distances) + d**2)
|
||||
bi += 4 * np.sum(b_element(image_distances, q, eta))
|
||||
for j, (y, q) in enumerate(zip(x_elyt, q_elyt)):
|
||||
bi += b_element(np.abs(y - x), q, eta)
|
||||
bi += 4 * np.sum(b_element(image_distances[i][j], q, eta))
|
||||
b.append(bi)
|
||||
b = np.array(b)
|
||||
|
||||
# electrolyte-electrolyte energy
|
||||
elyt_11 = 4 * np.sum(1 / distances)
|
||||
distance_elyt = x_elyt[1] - x_elyt[0]
|
||||
elyt_12 = 1 / distance_elyt + 4 * np.sum(
|
||||
1 / np.sqrt(np.square(distances) + distance_elyt**2)
|
||||
)
|
||||
elyt_12 = 1 / distance_elyt + 4 * np.sum(1 / image_elyt_distances[0][1])
|
||||
elyt = np.array([[elyt_11, elyt_12], [elyt_12, elyt_11]])
|
||||
energy_elyt = 0.5 * np.dot(q_elyt, np.dot(elyt, q_elyt))
|
||||
|
||||
@ -78,9 +110,48 @@ for name, eta_elec in [("", [2.0, 2.0]), ("_eta_mix", [0.5, 3.0])]:
|
||||
q = np.dot(inv, v - b)
|
||||
energy = COULOMB * (0.5 * np.dot(q, np.dot(A, q)) + np.dot(b, q) + energy_elyt)
|
||||
|
||||
# forces in out-of-plane direction
|
||||
f_elec = np.zeros(len(x_elec))
|
||||
f_elyt = np.zeros(len(x_elyt))
|
||||
# electrode-electrode
|
||||
dx = x_elec[1] - x_elec[0]
|
||||
fij_box = force_component(dx, np.abs(dx), q[0] * q[1], eta_mix)
|
||||
fij_img = 4 * force_component(dx, opposite_distances, q[0] * q[1], eta_mix)
|
||||
f_elec[0] -= fij_box + fij_img
|
||||
f_elec[1] += fij_box + fij_img
|
||||
# electrode-electrolyte
|
||||
for i, (xi, qi, etai) in enumerate(zip(x_elec, q, eta_elec)):
|
||||
for j, (xj, qj) in enumerate(zip(x_elyt, q_elyt)):
|
||||
dx = xj - xi
|
||||
fij_box = force_component(dx, np.abs(dx), qi * qj, etai)
|
||||
fij_img = 4 * force_component(dx, image_distances[i][j], qi * qj, etai)
|
||||
f_elec[i] -= fij_box + fij_img
|
||||
f_elyt[j] += fij_box + fij_img
|
||||
# electrolyte-electrolyte
|
||||
for i, (xi, qi) in enumerate(zip(x_elyt, q_elyt)):
|
||||
for j, (xj, qj) in list(enumerate(zip(x_elyt, q_elyt)))[i + 1 :]:
|
||||
dx = xj - xi
|
||||
fij_box = force_component(dx, np.abs(dx), qi * qj)
|
||||
fij_img = 4 * force_component(dx, image_elyt_distances[i][j], qi * qj)
|
||||
f_elyt[i] -= fij_img + fij_box
|
||||
f_elyt[j] += fij_img + fij_box
|
||||
# force units
|
||||
assert np.abs(np.sum(f_elec) + np.sum(f_elyt)) < 1e-8
|
||||
f_elec *= COULOMB
|
||||
f_elyt *= COULOMB
|
||||
|
||||
# Virial
|
||||
volume = a**2 * LZ
|
||||
virial = 0.0
|
||||
for x, f in [(x_elec, f_elec), (x_elyt, f_elyt)]:
|
||||
virial += np.dot(x, f)
|
||||
pressure = NKTV2P * virial / volume
|
||||
|
||||
with open(f"plate_cap{name}.csv", "w") as f:
|
||||
f.write(
|
||||
"length, energy / kcal/mol, q1 / e, q2 / e, inv11 / A, inv12 / A, b1 / e/A, b2 / e/A\n"
|
||||
"length, energy / kcal/mol, q1 / e, q2 / e, inv11 / A, inv12 / A"
|
||||
+ ", b1 / e/A, b2 / e/A, felec1 / kcal/mol/A, felec2 / kcal/mol/A"
|
||||
+ ", felyt1 / kcal/mol/A, felyt2 / kcal/mol/A, press\n"
|
||||
)
|
||||
f.write(
|
||||
", ".join(
|
||||
@ -93,7 +164,14 @@ for name, eta_elec in [("", [2.0, 2.0]), ("_eta_mix", [0.5, 3.0])]:
|
||||
f"{inv[0, 1]:.10f}",
|
||||
f"{b[0]:.8f}",
|
||||
f"{b[1]:.8f}",
|
||||
f"{f_elec[0]:.5f}",
|
||||
f"{f_elec[1]:.5f}",
|
||||
f"{f_elyt[0]:.5f}",
|
||||
f"{f_elyt[1]:.5f}",
|
||||
f"{pressure:.2f}",
|
||||
]
|
||||
)
|
||||
+ "\n"
|
||||
)
|
||||
time_end = time.perf_counter()
|
||||
print(f"{time_end - time_start:0.4f} seconds")
|
||||
|
||||
@ -19,4 +19,8 @@ compute qtop top reduce sum v_q
|
||||
compute compute_pe all pe
|
||||
variable vpe equal c_compute_pe
|
||||
variable charge equal c_qtop
|
||||
fix fxprint all print 1 "${vpe}, ${charge}" file "out.csv"
|
||||
compute press all pressure NULL virial
|
||||
variable p3 equal c_press[3]
|
||||
fix fxprint all print 1 "${vpe}, ${charge}, ${p3}" file "out.csv"
|
||||
|
||||
dump dump_forces all custom 1 forces.lammpstrj id fx fy fz
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -42,7 +42,11 @@ fix fxforce_au gold setforce 0.0 0.0 0.0
|
||||
|
||||
# equilibrate z-coordinate of upper electrode while keeping the electrode rigid
|
||||
fix fxforce_wa wall setforce 0.0 0.0 NULL
|
||||
fix fxpressure wall aveforce 0 0 -0.005246 # atomspheric pressure: area/force->nktv2p
|
||||
variable atm equal 1/68568.415 # 1/force->nktv2p
|
||||
variable area equal (xhi-xlo)*(yhi-ylo)
|
||||
variable wall_force equal -v_atm*v_area/count(wall)
|
||||
print "Wall force per atom: ${wall_force}"
|
||||
fix fxpressure wall aveforce 0 0 ${wall_force} # atomspheric pressure: area/force->nktv2p
|
||||
fix fxdrag wall viscous 100
|
||||
fix fxrigid wall rigid/nve single
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
LAMMPS (3 Nov 2022)
|
||||
LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-217-g1909233c69-modified)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# The intention is to find the average position of one wall at atmospheric
|
||||
# pressure. The output is the wall position over time which can be used to
|
||||
# find the average position for a run with fixed wall position.
|
||||
@ -40,8 +41,8 @@ Finding 1-2 1-3 1-4 neighbors ...
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
2 = max # of special neighbors
|
||||
special bonds CPU = 0.001 seconds
|
||||
read_data CPU = 0.011 seconds
|
||||
special bonds CPU = 0.000 seconds
|
||||
read_data CPU = 0.012 seconds
|
||||
|
||||
# ----------------- Settings Section -----------------
|
||||
|
||||
@ -77,7 +78,13 @@ fix fxforce_au gold setforce 0.0 0.0 0.0
|
||||
|
||||
# equilibrate z-coordinate of upper electrode while keeping the electrode rigid
|
||||
fix fxforce_wa wall setforce 0.0 0.0 NULL
|
||||
fix fxpressure wall aveforce 0 0 -0.005246 # atomspheric pressure: area/force->nktv2p
|
||||
variable atm equal 1/68568.415 # 1/force->nktv2p
|
||||
variable area equal (xhi-xlo)*(yhi-ylo)
|
||||
variable wall_force equal -v_atm*v_area/count(wall)
|
||||
print "Wall force per atom: ${wall_force}"
|
||||
Wall force per atom: -0.000109285996244287
|
||||
fix fxpressure wall aveforce 0 0 ${wall_force} # atomspheric pressure: area/force->nktv2p
|
||||
fix fxpressure wall aveforce 0 0 -0.000109285996244287
|
||||
fix fxdrag wall viscous 100
|
||||
fix fxrigid wall rigid/nve single
|
||||
1 rigid bodies with 48 atoms
|
||||
@ -134,7 +141,7 @@ PPPM/electrode initialization ...
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.02930901
|
||||
estimated relative force accuracy = 8.8263214e-05
|
||||
using double precision MKL FFT
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 15884 6480
|
||||
Generated 6 of 6 mixed pair_coeff terms from arithmetic mixing rule
|
||||
Neighbor list info ...
|
||||
@ -157,54 +164,54 @@ Neighbor list info ...
|
||||
Per MPI rank memory allocation (min/avg/max) = 11.7 | 11.7 | 11.7 Mbytes
|
||||
Step c_temp_mobile c_qwa c_qau v_top_wall
|
||||
0 303.38967 -0.042963484 0.042963484 21.4018
|
||||
5000 285.08828 -0.26105255 0.26105255 25.155629
|
||||
10000 323.19176 -0.26264003 0.26264003 24.541676
|
||||
15000 310.479 -0.27318148 0.27318148 23.141522
|
||||
20000 295.18544 -0.11313444 0.11313444 23.828735
|
||||
25000 295.38607 -0.25433086 0.25433086 23.673314
|
||||
30000 288.0613 -0.30099901 0.30099901 23.438086
|
||||
35000 278.5591 -0.15823576 0.15823576 24.311915
|
||||
40000 303.95751 -0.19941381 0.19941381 23.69594
|
||||
45000 279.026 -0.1659962 0.1659962 23.588604
|
||||
50000 298.79278 -0.28866703 0.28866703 23.372508
|
||||
55000 301.03353 -0.078370381 0.078370381 23.192985
|
||||
60000 306.77965 -0.12807205 0.12807205 23.968574
|
||||
65000 309.86008 -0.27162663 0.27162663 23.616704
|
||||
70000 287.31116 -0.029751882 0.029751882 23.667495
|
||||
75000 312.48654 -0.10759866 0.10759866 23.504105
|
||||
80000 309.94267 -0.2558548 0.2558548 23.810576
|
||||
85000 328.04389 -0.1575471 0.1575471 24.013437
|
||||
90000 302.9806 -0.032002164 0.032002164 24.264432
|
||||
95000 294.20804 -0.27797238 0.27797238 23.291758
|
||||
100000 307.63019 -0.19047448 0.19047448 23.632147
|
||||
Loop time of 530.844 on 1 procs for 100000 steps with 726 atoms
|
||||
5000 311.85363 0.03543775 -0.03543775 24.79665
|
||||
10000 285.91321 -0.16873703 0.16873703 23.103088
|
||||
15000 295.39476 -0.44424612 0.44424612 23.767107
|
||||
20000 296.12969 -0.14120993 0.14120993 23.96361
|
||||
25000 306.59629 -0.29333182 0.29333182 23.884488
|
||||
30000 297.98559 -0.10749684 0.10749684 23.73316
|
||||
35000 297.98503 -0.11809975 0.11809975 23.984669
|
||||
40000 300.26292 -0.32784184 0.32784184 23.462748
|
||||
45000 295.68441 -0.25940165 0.25940165 23.516403
|
||||
50000 315.12883 -0.36037614 0.36037614 23.627879
|
||||
55000 290.55151 -0.0032838106 0.0032838106 23.684931
|
||||
60000 316.4625 -0.17245368 0.17245368 24.126883
|
||||
65000 296.79343 -0.054061851 0.054061851 23.695094
|
||||
70000 305.99923 -0.11363801 0.11363801 23.55476
|
||||
75000 297.40131 -0.27054153 0.27054153 23.928994
|
||||
80000 306.54811 -0.25409719 0.25409719 23.869448
|
||||
85000 303.95231 -0.17895561 0.17895561 23.658833
|
||||
90000 313.43739 -0.059036514 0.059036514 23.36056
|
||||
95000 290.3077 -0.31394478 0.31394478 23.885538
|
||||
100000 297.5156 -0.30730083 0.30730083 23.511674
|
||||
Loop time of 1586.06 on 1 procs for 100000 steps with 726 atoms
|
||||
|
||||
Performance: 32.552 ns/day, 0.737 hours/ns, 188.379 timesteps/s, 136.763 katom-step/s
|
||||
100.0% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
Performance: 10.895 ns/day, 2.203 hours/ns, 63.049 timesteps/s, 45.774 katom-step/s
|
||||
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 190.47 | 190.47 | 190.47 | 0.0 | 35.88
|
||||
Bond | 0.10754 | 0.10754 | 0.10754 | 0.0 | 0.02
|
||||
Kspace | 73.179 | 73.179 | 73.179 | 0.0 | 13.79
|
||||
Neigh | 24.209 | 24.209 | 24.209 | 0.0 | 4.56
|
||||
Comm | 1.6857 | 1.6857 | 1.6857 | 0.0 | 0.32
|
||||
Output | 0.0016861 | 0.0016861 | 0.0016861 | 0.0 | 0.00
|
||||
Modify | 240.23 | 240.23 | 240.23 | 0.0 | 45.26
|
||||
Other | | 0.9595 | | | 0.18
|
||||
Pair | 460.91 | 460.91 | 460.91 | 0.0 | 29.06
|
||||
Bond | 0.047873 | 0.047873 | 0.047873 | 0.0 | 0.00
|
||||
Kspace | 341.4 | 341.4 | 341.4 | 0.0 | 21.53
|
||||
Neigh | 52.868 | 52.868 | 52.868 | 0.0 | 3.33
|
||||
Comm | 5.2321 | 5.2321 | 5.2321 | 0.0 | 0.33
|
||||
Output | 0.00099102 | 0.00099102 | 0.00099102 | 0.0 | 0.00
|
||||
Modify | 724.63 | 724.63 | 724.63 | 0.0 | 45.69
|
||||
Other | | 0.9741 | | | 0.06
|
||||
|
||||
Nlocal: 726 ave 726 max 726 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 2335 ave 2335 max 2335 min
|
||||
Nghost: 2336 ave 2336 max 2336 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 120271 ave 120271 max 120271 min
|
||||
Neighs: 120321 ave 120321 max 120321 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 120271
|
||||
Ave neighs/atom = 165.66253
|
||||
Total # of neighbors = 120321
|
||||
Ave neighs/atom = 165.7314
|
||||
Ave special neighs/atom = 1.7355372
|
||||
Neighbor list builds = 7722
|
||||
Neighbor list builds = 7670
|
||||
Dangerous builds = 0
|
||||
write_data "data.piston.final"
|
||||
System init for write_data ...
|
||||
@ -213,11 +220,11 @@ PPPM/electrode initialization ...
|
||||
G vector (1/distance) = 0.32814871
|
||||
grid = 12 15 36
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.029311365
|
||||
estimated relative force accuracy = 8.8270304e-05
|
||||
using double precision MKL FFT
|
||||
estimated absolute RMS force accuracy = 0.029311329
|
||||
estimated relative force accuracy = 8.8270197e-05
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 15884 6480
|
||||
Generated 6 of 6 mixed pair_coeff terms from arithmetic mixing rule
|
||||
|
||||
Average conjugate gradient steps: 1.981
|
||||
Total wall time: 0:08:50
|
||||
Total wall time: 0:26:26
|
||||
@ -1,4 +1,5 @@
|
||||
LAMMPS (3 Nov 2022)
|
||||
LAMMPS (7 Feb 2024 - Development - patch_7Feb2024_update1-217-g1909233c69-modified)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# The intention is to find the average position of one wall at atmospheric
|
||||
# pressure. The output is the wall position over time which can be used to
|
||||
# find the average position for a run with fixed wall position.
|
||||
@ -41,8 +42,8 @@ Finding 1-2 1-3 1-4 neighbors ...
|
||||
1 = max # of 1-3 neighbors
|
||||
1 = max # of 1-4 neighbors
|
||||
2 = max # of special neighbors
|
||||
special bonds CPU = 0.001 seconds
|
||||
read_data CPU = 0.017 seconds
|
||||
special bonds CPU = 0.000 seconds
|
||||
read_data CPU = 0.012 seconds
|
||||
|
||||
# ----------------- Settings Section -----------------
|
||||
|
||||
@ -66,7 +67,7 @@ Finding SHAKE clusters ...
|
||||
0 = # of size 3 clusters
|
||||
0 = # of size 4 clusters
|
||||
210 = # of frozen angles
|
||||
find clusters CPU = 0.002 seconds
|
||||
find clusters CPU = 0.000 seconds
|
||||
pair_modify mix arithmetic
|
||||
|
||||
# ----------------- Run Section -----------------
|
||||
@ -78,7 +79,13 @@ fix fxforce_au gold setforce 0.0 0.0 0.0
|
||||
|
||||
# equilibrate z-coordinate of upper electrode while keeping the electrode rigid
|
||||
fix fxforce_wa wall setforce 0.0 0.0 NULL
|
||||
fix fxpressure wall aveforce 0 0 -0.005246 # atomspheric pressure: area/force->nktv2p
|
||||
variable atm equal 1/68568.415 # 1/force->nktv2p
|
||||
variable area equal (xhi-xlo)*(yhi-ylo)
|
||||
variable wall_force equal -v_atm*v_area/count(wall)
|
||||
print "Wall force per atom: ${wall_force}"
|
||||
Wall force per atom: -0.000109285996244287
|
||||
fix fxpressure wall aveforce 0 0 ${wall_force} # atomspheric pressure: area/force->nktv2p
|
||||
fix fxpressure wall aveforce 0 0 -0.000109285996244287
|
||||
fix fxdrag wall viscous 100
|
||||
fix fxrigid wall rigid/nve single
|
||||
1 rigid bodies with 48 atoms
|
||||
@ -135,7 +142,7 @@ PPPM/electrode initialization ...
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.02930901
|
||||
estimated relative force accuracy = 8.8263214e-05
|
||||
using double precision MKL FFT
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 8512 2880
|
||||
Generated 6 of 6 mixed pair_coeff terms from arithmetic mixing rule
|
||||
Neighbor list info ...
|
||||
@ -158,54 +165,54 @@ Neighbor list info ...
|
||||
Per MPI rank memory allocation (min/avg/max) = 10.06 | 10.22 | 10.41 Mbytes
|
||||
Step c_temp_mobile c_qwa c_qau v_top_wall
|
||||
0 303.38967 -0.042963484 0.042963484 21.4018
|
||||
5000 292.03027 -0.19040435 0.19040435 24.581338
|
||||
10000 309.52764 -0.48308301 0.48308301 23.776985
|
||||
15000 295.00243 -0.16591109 0.16591109 23.672038
|
||||
20000 293.5536 -0.086669084 0.086669084 23.426455
|
||||
25000 303.0079 -0.16488112 0.16488112 23.862966
|
||||
30000 306.31463 -0.23192653 0.23192653 23.819882
|
||||
35000 303.66268 -0.2317907 0.2317907 23.495344
|
||||
40000 301.39435 -0.34661329 0.34661329 23.657835
|
||||
45000 291.61205 -0.30539427 0.30539427 23.437303
|
||||
50000 298.65319 -0.096107034 0.096107034 23.57809
|
||||
55000 282.65069 -0.14943539 0.14943539 23.823728
|
||||
60000 310.64182 -0.17418813 0.17418813 23.286959
|
||||
65000 308.47141 -0.02075662 0.02075662 23.91313
|
||||
70000 292.5186 -0.080163162 0.080163162 23.96283
|
||||
75000 270.13928 -0.029528648 0.029528648 23.488972
|
||||
80000 322.10914 0.030761045 -0.030761045 23.47592
|
||||
85000 310.60347 -0.24069996 0.24069996 23.987091
|
||||
90000 294.35695 -0.070458235 0.070458235 23.397929
|
||||
95000 308.69043 -0.2652581 0.2652581 23.473813
|
||||
100000 318.71883 0.024035956 -0.024035956 23.449863
|
||||
Loop time of 590.232 on 4 procs for 100000 steps with 726 atoms
|
||||
5000 291.6303 -0.1820085 0.1820085 24.641399
|
||||
10000 299.42886 -0.19823095 0.19823095 23.820522
|
||||
15000 288.23071 -0.065261869 0.065261869 23.360845
|
||||
20000 299.4644 -0.042993777 0.042993777 23.987554
|
||||
25000 304.26497 -0.15665293 0.15665293 23.729006
|
||||
30000 292.29674 -0.25142779 0.25142779 23.960725
|
||||
35000 295.57492 -0.01269228 0.01269228 23.445383
|
||||
40000 303.38438 -0.13941727 0.13941727 23.517483
|
||||
45000 302.211 -0.19589892 0.19589892 23.704043
|
||||
50000 281.64939 -0.18057298 0.18057298 23.542137
|
||||
55000 274.90565 -0.15453379 0.15453379 23.734347
|
||||
60000 290.70459 -0.27977436 0.27977436 23.835365
|
||||
65000 293.42241 -0.2454241 0.2454241 23.59269
|
||||
70000 295.20229 -0.041314995 0.041314995 23.73856
|
||||
75000 297.79519 -0.11231755 0.11231755 23.57262
|
||||
80000 285.17858 -0.070796508 0.070796508 23.817135
|
||||
85000 311.71609 -0.068920177 0.068920177 23.861127
|
||||
90000 287.80446 -0.19183387 0.19183387 23.369393
|
||||
95000 309.43345 -0.15238671 0.15238671 23.597792
|
||||
100000 294.12422 -0.14284353 0.14284353 23.526286
|
||||
Loop time of 876.546 on 4 procs for 100000 steps with 726 atoms
|
||||
|
||||
Performance: 29.277 ns/day, 0.820 hours/ns, 169.425 timesteps/s, 123.003 katom-step/s
|
||||
72.5% CPU use with 4 MPI tasks x no OpenMP threads
|
||||
Performance: 19.714 ns/day, 1.217 hours/ns, 114.084 timesteps/s, 82.825 katom-step/s
|
||||
98.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 57.391 | 75.867 | 96.292 | 212.1 | 12.85
|
||||
Bond | 0.10177 | 0.11042 | 0.12415 | 2.7 | 0.02
|
||||
Kspace | 102.79 | 123.16 | 141.5 | 165.7 | 20.87
|
||||
Neigh | 12.808 | 12.895 | 12.982 | 2.3 | 2.18
|
||||
Comm | 18.885 | 19.973 | 21.064 | 24.0 | 3.38
|
||||
Output | 0.0022573 | 0.0022749 | 0.0023225 | 0.1 | 0.00
|
||||
Modify | 355.89 | 356.74 | 357.61 | 4.2 | 60.44
|
||||
Other | | 1.478 | | | 0.25
|
||||
Pair | 123.63 | 171.23 | 215.73 | 336.6 | 19.53
|
||||
Bond | 0.068261 | 0.075883 | 0.081822 | 1.9 | 0.01
|
||||
Kspace | 187.59 | 231.71 | 279.01 | 287.1 | 26.43
|
||||
Neigh | 29.28 | 29.462 | 29.637 | 2.5 | 3.36
|
||||
Comm | 12.544 | 13.731 | 14.929 | 29.1 | 1.57
|
||||
Output | 0.0010182 | 0.0014585 | 0.0016071 | 0.7 | 0.00
|
||||
Modify | 428.74 | 429.25 | 429.74 | 2.3 | 48.97
|
||||
Other | | 1.092 | | | 0.12
|
||||
|
||||
Nlocal: 181.5 ave 207 max 169 min
|
||||
Histogram: 2 0 1 0 0 0 0 0 0 1
|
||||
Nghost: 1961.5 ave 1984 max 1926 min
|
||||
Histogram: 1 0 0 0 0 0 1 0 1 1
|
||||
Neighs: 30051 ave 41646 max 20775 min
|
||||
Histogram: 1 1 0 0 0 0 1 0 0 1
|
||||
Nlocal: 181.5 ave 195 max 166 min
|
||||
Histogram: 1 1 0 0 0 0 0 0 0 2
|
||||
Nghost: 1955.5 ave 1978 max 1931 min
|
||||
Histogram: 1 0 0 0 1 0 1 0 0 1
|
||||
Neighs: 30343 ave 39847 max 20428 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
|
||||
Total # of neighbors = 120204
|
||||
Ave neighs/atom = 165.57025
|
||||
Total # of neighbors = 121372
|
||||
Ave neighs/atom = 167.17906
|
||||
Ave special neighs/atom = 1.7355372
|
||||
Neighbor list builds = 7663
|
||||
Neighbor list builds = 7698
|
||||
Dangerous builds = 0
|
||||
write_data "data.piston.final"
|
||||
System init for write_data ...
|
||||
@ -214,11 +221,11 @@ PPPM/electrode initialization ...
|
||||
G vector (1/distance) = 0.32814871
|
||||
grid = 12 15 36
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.029311028
|
||||
estimated relative force accuracy = 8.8269289e-05
|
||||
using double precision MKL FFT
|
||||
estimated absolute RMS force accuracy = 0.029310954
|
||||
estimated relative force accuracy = 8.8269069e-05
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 8512 2880
|
||||
Generated 6 of 6 mixed pair_coeff terms from arithmetic mixing rule
|
||||
|
||||
Average conjugate gradient steps: 1.982
|
||||
Total wall time: 0:09:50
|
||||
Average conjugate gradient steps: 1.981
|
||||
Total wall time: 0:14:36
|
||||
Reference in New Issue
Block a user