Merge remote-tracking branch 'github/develop' into feature-create-atoms-exclude

This commit is contained in:
Axel Kohlmeyer
2022-05-05 21:09:39 -04:00
267 changed files with 52836 additions and 1234 deletions

View File

@ -209,6 +209,7 @@ set(STANDARD_PACKAGES
DPD-SMOOTH
DRUDE
EFF
ELECTRODE
EXTRA-COMPUTE
EXTRA-DUMP
EXTRA-FIX
@ -352,6 +353,7 @@ pkg_depends(DIELECTRIC KSPACE)
pkg_depends(DIELECTRIC EXTRA-PAIR)
pkg_depends(CG-DNA MOLECULE)
pkg_depends(CG-DNA ASPHERE)
pkg_depends(ELECTRODE KSPACE)
# detect if we may enable OpenMP support by default
set(BUILD_OMP_DEFAULT OFF)
@ -389,7 +391,7 @@ if(BUILD_OMP)
target_link_libraries(lmp PRIVATE OpenMP::OpenMP_CXX)
endif()
if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_LATTE)
if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_LATTE OR PKG_ELECTRODE)
enable_language(C)
find_package(LAPACK)
find_package(BLAS)
@ -593,6 +595,10 @@ foreach(PKG_LIB POEMS ATC AWPMD H5MD MESONT)
endif()
endforeach()
if(PKG_ELECTRODE)
target_link_libraries(lammps PRIVATE ${LAPACK_LIBRARIES})
endif()
if(PKG_AWPMD)
target_link_libraries(awpmd PRIVATE ${LAPACK_LIBRARIES})
endif()
@ -941,6 +947,12 @@ if(PKG_KSPACE)
else()
message(STATUS "Kokkos FFT: cuFFT")
endif()
elseif(Kokkos_ENABLE_HIP)
if(FFT STREQUAL "KISS")
message(STATUS "Kokkos FFT: KISS")
else()
message(STATUS "Kokkos FFT: hipFFT")
endif()
else()
message(STATUS "Kokkos FFT: ${FFT}")
endif()

View File

@ -112,5 +112,9 @@ if(PKG_KSPACE)
RegisterIntegrateStyle(${INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
endif()
if(PKG_ELECTRODE)
list(APPEND INTEL_SOURCES ${INTEL_SOURCES_DIR}/electrode_accel_intel.cpp)
endif()
target_sources(lammps PRIVATE ${INTEL_SOURCES})
target_include_directories(lammps PRIVATE ${INTEL_SOURCES_DIR})

View File

@ -130,6 +130,11 @@ if(PKG_KSPACE)
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
target_link_libraries(lammps PRIVATE cufft)
endif()
elseif(Kokkos_ENABLE_HIP)
if(NOT (FFT STREQUAL "KISS"))
target_compile_definitions(lammps PRIVATE -DFFT_HIPFFT)
target_link_libraries(lammps PRIVATE hipfft)
endif()
endif()
endif()

View File

@ -25,6 +25,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP

View File

@ -27,6 +27,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP

View File

@ -21,6 +21,7 @@ set(WIN_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP

View File

@ -23,6 +23,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP

View File

@ -6,6 +6,7 @@ set(PACKAGES_WITH_LIB
ATC
AWPMD
COMPRESS
ELECTRODE
GPU
H5MD
KIM

View File

@ -2,7 +2,7 @@
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "LAMMPS Programmer's Guide"
PROJECT_NUMBER = "24 August 2020"
PROJECT_NUMBER = "4 May 2022"
PROJECT_BRIEF = "Documentation of the LAMMPS library interface and Python wrapper"
PROJECT_LOGO = lammps-logo.png
CREATE_SUBDIRS = NO
@ -437,6 +437,8 @@ INPUT = @LAMMPS_SOURCE_DIR@/utils.cpp \
@LAMMPS_SOURCE_DIR@/math_eigen.h \
@LAMMPS_SOURCE_DIR@/platform.h \
@LAMMPS_SOURCE_DIR@/platform.cpp \
@LAMMPS_SOURCE_DIR@/math_special.h \
@LAMMPS_SOURCE_DIR@/math_special.cpp \
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded

View File

@ -1,4 +1,4 @@
.TH LAMMPS "1" "24 March 2022" "2022-3-24"
.TH LAMMPS "1" "4 May 2022" "2022-5-4"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator. Version 24 March 2022

View File

@ -641,6 +641,20 @@ This list was last updated for version 3.5.0 of the Kokkos library.
-D CMAKE_CXX_COMPILER=${HOME}/lammps/lib/kokkos/bin/nvcc_wrapper
For AMD or NVIDIA GPUs using HIP, set these variables:
.. code-block:: bash
-D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above
-D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above
-D Kokkos_ENABLE_HIP=yes
-D Kokkos_ENABLE_OPENMP=yes
This will enable FFTs on the GPU, either by the internal KISSFFT library
or with the hipFFT wrapper library, which will call out to the
platform-appropriate vendor library: rocFFT on AMD GPUs or cuFFT on
NVIDIA GPUs.
To simplify compilation, four preset files are included in the
``cmake/presets`` folder, ``kokkos-serial.cmake``,
``kokkos-openmp.cmake``, ``kokkos-cuda.cmake``, and
@ -707,6 +721,15 @@ This list was last updated for version 3.5.0 of the Kokkos library.
KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd)
CC = mpicxx -cxx=$(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper
For AMD or NVIDIA GPUs using HIP:
.. code-block:: make
KOKKOS_DEVICES = HIP
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU
# GPUARCH = GPU from list above
FFT_INC = -DFFT_HIPFFT # enable use of hipFFT (optional)
FFT_LIB = -lhipfft # link to hipFFT library
Advanced KOKKOS compilation settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -1252,6 +1275,41 @@ be built for the most part with all major versions of the C++ language.
----------
.. _electrode:
ELECTRODE package
-----------------
This package depends on the KSPACE package.
.. tabs::
.. tab:: CMake build
No additional settings are needed besides ``-D PKG_KSPACE=yes`` and ``-D
PKG_ELECTRODE=yes``.
.. tab:: Traditional make
The package is activated with ``make yes-KSPACE`` and ``make
yes-ELECTRODE``
Note that the ``Makefile.lammps`` file has settings for the BLAS and
LAPACK linear algebra libraries. As explained in ``lib/awpmd/README``
these can either exist on your system, or you can use the files provided
in ``lib/linalg``. In the latter case you also need to build the library
in ``lib/linalg`` with a command like these:
.. code-block:: bash
$ make lib-linalg # print help message
$ make lib-linalg args="-m serial" # build with GNU Fortran compiler (settings as with "make serial")
$ make lib-linalg args="-m mpi" # build with default MPI Fortran compiler (settings as with "make mpi")
$ make lib-linalg args="-m gfortran" # build with GNU Fortran compiler
----------
.. _ml-pace:
ML-PACE package

View File

@ -66,6 +66,9 @@ OPT.
* :doc:`edpd/source <fix_dpd_source>`
* :doc:`efield <fix_efield>`
* :doc:`ehex <fix_ehex>`
* :doc:`electrode/conp (i) <fix_electrode_conp>`
* :doc:`electrode/conq (i) <fix_electrode_conp>`
* :doc:`electrode/thermo (i) <fix_electrode_conp>`
* :doc:`electron/stopping <fix_electron_stopping>`
* :doc:`electron/stopping/fit <fix_electron_stopping>`
* :doc:`enforce2d (k) <fix_enforce2d>`

View File

@ -27,6 +27,7 @@ OPT.
* :doc:`ewald/disp/dipole <kspace_style>`
* :doc:`ewald/dipole <kspace_style>`
* :doc:`ewald/dipole/spin <kspace_style>`
* :doc:`ewald/electrode <kspace_style>`
* :doc:`msm (o) <kspace_style>`
* :doc:`msm/cg (o) <kspace_style>`
* :doc:`msm/dielectric <kspace_style>`
@ -41,4 +42,5 @@ OPT.
* :doc:`pppm/stagger <kspace_style>`
* :doc:`pppm/tip4p (o) <kspace_style>`
* :doc:`pppm/dielectric <kspace_style>`
* :doc:`pppm/electrode (i) <kspace_style>`
* :doc:`scafacos <kspace_style>`

View File

@ -34,7 +34,7 @@ OPT.
*
*
*
* :doc:`adp (o) <pair_adp>`
* :doc:`adp (ko) <pair_adp>`
* :doc:`agni (o) <pair_agni>`
* :doc:`airebo (io) <pair_airebo>`
* :doc:`airebo/morse (io) <pair_airebo>`
@ -125,7 +125,7 @@ OPT.
* :doc:`hbond/dreiding/morse (o) <pair_hbond_dreiding>`
* :doc:`hdnnp <pair_hdnnp>`
* :doc:`ilp/graphene/hbn (t) <pair_ilp_graphene_hbn>`
* :doc:`ilp/tmd <pair_ilp_tmd>`
* :doc:`ilp/tmd (t) <pair_ilp_tmd>`
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>`
* :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>`
* :doc:`lcbop <pair_lcbop>`
@ -243,8 +243,10 @@ OPT.
* :doc:`reaxff (ko) <pair_reaxff>`
* :doc:`rebo (io) <pair_airebo>`
* :doc:`resquared (go) <pair_resquared>`
* :doc:`saip/metal <pair_saip_metal>`
* :doc:`saip/metal (t) <pair_saip_metal>`
* :doc:`sdpd/taitwater/isothermal <pair_sdpd_taitwater_isothermal>`
* :doc:`smatb <pair_smatb>`
* :doc:`smatb/single <pair_smatb>`
* :doc:`smd/hertz <pair_smd_hertz>`
* :doc:`smd/tlsph <pair_smd_tlsph>`
* :doc:`smd/tri_surface <pair_smd_triangulated_surface>`

View File

@ -246,6 +246,44 @@ Customized standard functions
---------------------------
Special Math functions
----------------------
The ``MathSpecial`` namespace implements a selection of custom and optimized
mathematical functions for a variety of applications.
.. doxygenfunction:: factorial
:project: progguide
.. doxygenfunction:: exp2_x86
:project: progguide
.. doxygenfunction:: fm_exp
:project: progguide
.. doxygenfunction:: my_erfcx
:project: progguide
.. doxygenfunction:: expmsq
:project: progguide
.. doxygenfunction:: square
:project: progguide
.. doxygenfunction:: cube
:project: progguide
.. doxygenfunction:: powsign
:project: progguide
.. doxygenfunction:: powint
:project: progguide
.. doxygenfunction:: powsinxx
:project: progguide
---------------------------
Tokenizer classes
-----------------

View File

@ -55,6 +55,9 @@ JSON
YAML format thermo_style output
===============================
Extracting data from log file
-----------------------------
.. versionadded:: 24Mar2022
LAMMPS supports the thermo style "yaml" and for "custom" style
@ -66,7 +69,7 @@ the following style:
.. code-block:: yaml
---
keywords: [Step, Temp, E_pair, E_mol, TotEng, Press, ]
keywords: ['Step', 'Temp', 'E_pair', 'E_mol', 'TotEng', 'Press', ]
data:
- [100, 0.757453103239935, -5.7585054860159, 0, -4.62236133677021, 0.207261053624721, ]
- [110, 0.759322359337036, -5.7614668389562, 0, -4.62251889318624, 0.194314975399602, ]
@ -80,9 +83,9 @@ This data can be extracted and parsed from a log file using python with:
import re, yaml
try:
from yaml import CSafeLoader as Loader, CSafeDumper as Dumper
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader, SafeDumper as Dumper
from yaml import SafeLoader as Loader
docs = ""
with open("log.lammps") as f:
@ -109,6 +112,135 @@ of that run:
Number of runs: 2
TotEng = -4.62140097780047
.. versionadded:: 4May2022
YAML format output has been added to multiple commands in LAMMPS,
for example :doc:`dump yaml <dump>` or :doc:`fix ave/time <fix_ave_time>`
Depending on the kind of data being written, organization of the data
or the specific syntax used may change, but the principles are very
similar and all files should be readable with a suitable YAML parser.
Processing scalar data with Python
----------------------------------
.. figure:: JPG/thermo_bondeng.png
:figwidth: 33%
:align: right
After reading and parsing the YAML format data, it can be easily
imported for further processing and visualization with the `pandas
<https://pandas.pydata.org/>`_ and `matplotlib
<https://matplotlib.org/>`_ Python modules. Because of the organization
of the data in the YAML format thermo output, it needs to be told to
process only the 'data' part of the imported data to create a pandas
data frame, and one needs to set the column names from the 'keywords'
entry. The following Python script code example demonstrates this, and
creates the image shown on the right of a simple plot of various bonded
energy contributions versus the timestep from a run of the 'peptide'
example input after changing the :doc:`thermo style <thermo_style>` to
'yaml'. The properties to be used for x and y values can be
conveniently selected through the keywords. Please note that those
keywords can be changed to custom strings with the :doc:`thermo_modify
colname <thermo_modify>` command.
.. code-block:: python
import re, yaml
import pandas as pd
import matplotlib.pyplot as plt
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
docs = ""
with open("log.lammps") as f:
for line in f:
m = re.search(r"^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)", line)
if m: docs += m.group(0) + '\n'
thermo = list(yaml.load_all(docs, Loader=Loader))
df = pd.DataFrame(data=thermo[0]['data'], columns=thermo[0]['keywords'])
fig = df.plot(x='Step', y=['E_bond', 'E_angle', 'E_dihed', 'E_impro'], ylabel='Energy in kcal/mol')
plt.savefig('thermo_bondeng.png')
Processing vector data with Python
----------------------------------
Global *vector* data as produced by :doc:`fix ave/time <fix_ave_time>`
uses a slightly different organization of the data. You still have the
dictionary keys 'keywords' and 'data' for the column headers and the
data. But the data is a dictionary indexed by the time step and for
each step there are multiple rows of values each with a list of the
averaged properties. This requires a slightly different processing,
since the entire data cannot be directly imported into a single pandas
DataFrame class instance. The following Python script example
demonstrates how to read such data. The result will combine the data
for the different steps into one large "multi-index" table. The pandas
IndexSlice class can then be used to select data from this combined data
frame.
.. code-block:: python
import re, yaml
import pandas as pd
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
with open("ave.yaml") as f:
ave = yaml.load(docs, Loader=Loader)
keys = ave['keywords']
df = {}
for k in ave['data'].keys():
df[k] = pd.DataFrame(data=ave['data'][k], columns=keys)
# create multi-index data frame
df = pd.concat(df)
# output only the first 3 value for steps 200 to 300 of the column Pressure
idx = pd.IndexSlice
print(df['Pressure'].loc[idx[200:300, 0:2]])
Processing scalar data with Perl
--------------------------------
The ease of processing YAML data is not limited to Python. Here is an
example for extracting and processing a LAMMPS log file with Perl instead.
.. code-block:: perl
use YAML::XS;
open(LOG, "log.lammps") or die("could not open log.lammps: $!");
my $file = "";
while(my $line = <LOG>) {
if ($line =~ /^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)/) {
$file .= $line;
}
}
close(LOG);
# convert YAML to perl as nested hash and array references
my $thermo = Load $file;
# convert references to real arrays
my @keywords = @{$thermo->{'keywords'}};
my @data = @{$thermo->{'data'}};
# print first two columns
print("$keywords[0] $keywords[1]\n");
foreach (@data) {
print("${$_}[0] ${$_}[1]\n");
}
Writing continuous data during a simulation
===========================================

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -250,9 +250,9 @@ on` comments around that block.
Error or warning messages and explanations (preferred)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 27Apr2022
.. versionchanged:: 4May2022
Starting with LAMMPS version 27 April 2022 the LAMMPS developers have
Starting with LAMMPS version 4 May 2022 the LAMMPS developers have
agreed on a new policy for error and warning messages.
Previously, all error and warning strings were supposed to be listed in

View File

@ -50,6 +50,7 @@ page gives those details.
* :ref:`DPD-SMOOTH <PKG-DPD-SMOOTH>`
* :ref:`DRUDE <PKG-DRUDE>`
* :ref:`EFF <PKG-EFF>`
* :ref:`ELECTRODE <PKG-ELECTRODE>`
* :ref:`EXTRA-COMPUTE <PKG-EXTRA-COMPUTE>`
* :ref:`EXTRA-DUMP <PKG-EXTRA-DUMP>`
* :ref:`EXTRA-FIX <PKG-EXTRA-FIX>`
@ -809,6 +810,31 @@ tools/eff; see its README file.
-------------------
.. _PKG-ELECTRODE:
ELECTRODE package
-----------------
**Contents:**
The ELECTRODE package allows the user to enforce a constant potential method for
groups of atoms that interact with the remaining atoms as electrolyte.
**Authors:** The ELECTRODE library is written and maintained by Ludwig
Ahrens-Iwers (TUHH, Hamburg, Germany), Shern Tee (UQ, Brisbane, Australia) and
Robert Meissner (TUHH, Hamburg, Germany).
**Install:**
This package has :ref:`specific installation instructions <electrode>` on the
:doc:`Build extras <Build_extras>` page.
**Supporting info:**
* :doc:`fix electrode/conp <fix_electrode_conp>`
----------
.. _PKG-EXTRA-COMPUTE:
EXTRA-COMPUTE package
@ -2578,18 +2604,20 @@ SMTBQ package
**Contents:**
A pair style which implements a Second Moment Tight Binding model with
QEq charge equilibration (SMTBQ) potential for the description of
ionocovalent bonds in oxides.
Pair styles which implement Second Moment Tight Binding models.
One with QEq charge equilibration (SMTBQ) for the description of
ionocovalent bonds in oxides, and two more as plain SMATB models.
**Authors:** Nicolas Salles, Emile Maras, Olivier Politano, and Robert
Tetot (LAAS-CNRS, France).
**Authors:** SMTBQ: Nicolas Salles, Emile Maras, Olivier Politano, and Robert
Tetot (LAAS-CNRS, France);
SMATB: Daniele Rapetti (Politecnico di Torino)
**Supporting info:**
* src/SMTBQ: filenames -> commands
* src/SMTBQ/README
* :doc:`pair_style smtbq <pair_smtbq>`
* :doc:`pair_style smatb <pair_smatb>`, :doc:`pair_style smatb/single <pair_smatb>`
* examples/PACKAGES/smtbq
----------

View File

@ -148,6 +148,11 @@ whether an extra library is needed to build and use the package:
- :doc:`pair_style eff/cut <pair_eff>`
- PACKAGES/eff
- no
* - :ref:`ELECTRODE <PKG-ELECTRODE>`
- electrode charges to match potential
- :doc:`fix electrode/conp <fix_electrode_conp>`
- PACKAGES/electrode
- no
* - :ref:`EXTRA-COMPUTE <PKG-EXTRA-COMPUTE>`
- additional compute styles
- :doc:`compute <compute>`
@ -429,8 +434,8 @@ whether an extra library is needed to build and use the package:
- n/a
- no
* - :ref:`SMTBQ <PKG-SMTBQ>`
- second moment tight binding potential
- :doc:`pair_style smtbq <pair_smtbq>`
- second moment tight binding potentials
- :doc:`pair_style smtbq <pair_smtbq>` :doc:`pair_style smatb <pair_smatb>`
- PACKAGES/smtbq
- no
* - :ref:`SPH <PKG-SPH>`

View File

@ -23,7 +23,7 @@ Syntax
*reduce/region* arg = region-ID
region-ID = ID of region to use for choosing atoms
* mode = *sum* or *min* or *max* or *ave* or *sumsq* or *avesq*
* mode = *sum* or *min* or *max* or *ave* or *sumsq* or *avesq* or *sumabs* or *aveabs*
* one or more inputs can be listed
* input = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name
@ -77,7 +77,10 @@ option sums the square of the values in the vector into a global
total. The *avesq* setting does the same as *sumsq*, then divides the
sum of squares by the number of values. The last two options can be
useful for calculating the variance of some quantity, e.g. variance =
sumsq - ave\^2.
sumsq - ave\^2. The *sumabs* option sums the absolute values in the
vector into a global total. The *aveabs* setting does the same as
*sumabs*, then divides the sum of absolute values by the number of
values.
Each listed input is operated on independently. For per-atom inputs,
the group specified with this command means only atoms within the
@ -189,7 +192,7 @@ value. If multiple inputs are specified, this compute produces a
global vector of values, the length of which is equal to the number of
inputs specified.
As discussed below, for the *sum* and *sumsq* modes, the value(s)
As discussed below, for the *sum*, *sumabs* and *sumsq* modes, the value(s)
produced by this compute are all "extensive", meaning their value
scales linearly with the number of atoms involved. If normalized
values are desired, this compute can be accessed by the :doc:`thermo_style custom <thermo_style>` command with :doc:`thermo_modify norm yes <thermo_modify>` set as an option. Or it can be accessed by a
@ -208,7 +211,7 @@ compute as input. See the :doc:`Howto output <Howto_output>` doc page
for an overview of LAMMPS output options.
All the scalar or vector values calculated by this compute are
"intensive", except when the *sum* or *sumsq* modes are used on
"intensive", except when the *sum*, *sumabs* or *sumsq* modes are used on
per-atom or local vectors, in which case the calculated values are
"extensive".

View File

@ -33,7 +33,7 @@ Syntax
* R_1, R_2,... = list of cutoff radii, one for each type (distance units)
* w_1, w_2,... = list of neighbor weights, one for each type
* zero or more keyword/value pairs may be appended
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag*
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag* or *sinner* or *dinner*
.. parsed-literal::
@ -59,9 +59,13 @@ Syntax
*bikflag* value = *0* or *1* (only implemented for compute snap)
*0* = per-atom bispectrum descriptors are summed over atoms
*1* = per-atom bispectrum descriptors are not summed over atoms
*switchinnerflag* values = *rinnerlist* *drinnerlist*
*rinnerlist* = *ntypes* values of rinner (distance units)
*drinnerlist* = *ntypes* values of drinner (distance units)
*switchinnerflag* value = *0* or *1*
*0* = do not use inner switching function
*1* = use inner switching function
*sinner* values = *sinnerlist*
*sinnerlist* = *ntypes* values of *Sinner* (distance units)
*dinner* values = *dinnerlist*
*dinnerlist* = *ntypes* values of *Dinner* (distance units)
Examples
""""""""
@ -73,7 +77,7 @@ Examples
compute vb all sna/atom 1.4 0.95 6 2.0 1.0
compute snap all snap 1.4 0.95 6 2.0 1.0
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 chem 2 0 1
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 switchinnerflag 1.1 1.3 0.5 0.6
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 switchinnerflag 1 sinner 1.35 1.6 dinner 0.25 0.3
Description
"""""""""""
@ -312,25 +316,29 @@ the resulting bispectrum rows are :math:`B_{i,k}` instead of just
:math:`B_k`. In this case, the entries in the final column for these rows
are set to zero.
The keyword *switchinnerflag* activates an additional radial switching
The keyword *switchinnerflag* with value 1
activates an additional radial switching
function similar to :math:`f_c(r)` above, but acting to switch off
smoothly contributions from neighbor atoms at short separation distances.
This is useful when SNAP is used in combination with a simple
repulsive potential. The keyword is followed by the *ntypes*
values for :math:`r_{inner}` and the *ntypes*
values for :math:`\Delta r_{inner}`. For a neighbor atom at
repulsive potential. For a neighbor atom at
distance :math:`r`, its contribution is scaled by a multiplicative
factor :math:`f_{inner}(r)` defined as follows:
.. math::
= & 0, r \leq r_{inner} \\
f_{inner}(r) = & \frac{1}{2}(1 - \cos(\pi \frac{r-r_{inner}}{\Delta r_{inner}})), r_{inner} < r \leq r_{inner} + \Delta r_{inner} \\
= & 1, r > r_{inner} + \Delta r_{inner}
= & 0, r \leq S_{inner} - D_{inner} \\
f_{inner}(r) = & \frac{1}{2}(1 - \cos(\frac{\pi}{2} (1 + \frac{r-S_{inner}}{D_{inner}})), S_{inner} - D_{inner} < r \leq S_{inner} + D_{inner} \\
= & 1, r > S_{inner} + D_{inner}
The values of :math:`r_{inner}` and :math:`\Delta r_{inner}` are
the arithmetic means of the values for the central atom of type I
and the neighbor atom of type J.
where the switching region is centered at :math:`S_{inner}` and it extends a distance :math:`D_{inner}`
to the left and to the right of this.
With this option, additional keywords *sinner* and *dinner* must be used,
each followed by *ntypes*
values for :math:`S_{inner}` and :math:`D_{inner}`, respectively.
When the central atom and the neighbor atom have different types,
the values of :math:`S_{inner}` and :math:`D_{inner}` are
the arithmetic means of the values for both types.
.. note::
@ -450,7 +458,7 @@ Default
The optional keyword defaults are *rmin0* = 0,
*switchflag* = 1, *bzeroflag* = 1, *quadraticflag* = 0,
*bnormflag* = 0, *wselfallflag* = 0
*bnormflag* = 0, *wselfallflag* = 0, *switchinnerflag* = 0,
----------

View File

@ -198,7 +198,9 @@ potentials only include the pair potential portion of the EAM
interaction when used by this compute, not the embedding term. Also
bonded or Kspace interactions do not contribute to this compute.
The computes in this package are not compatible with dynamic groups.
When used with dynamic groups, a :doc:`run 0 <run>` command needs to
be inserted in order to initialize the dynamic groups before accessing
the computes.
Related commands
""""""""""""""""

View File

@ -21,12 +21,13 @@ Examples
.. code-block:: LAMMPS
units real
compute cos all viscosity/cos
variable V equal c_cos[7]
variable A equal 0.02E-5
variable A equal 0.02E-5 # A/fs^2
variable density equal density
variable lz equal lz
variable reciprocalViscosity equal v_V/${A}/v_density*39.4784/v_lz/v_lz*100
variable reciprocalViscosity equal v_V/${A}/v_density*39.4784/v_lz/v_lz*100 # 1/(Pa*s)
Description
"""""""""""

View File

@ -10,7 +10,7 @@ Syntax
delete_atoms style args keyword value ...
* style = *group* or *region* or *overlap* or *porosity*
* style = *group* or *region* or *overlap* or *porosity* or *variable*
.. parsed-literal::
@ -26,6 +26,7 @@ Syntax
or NULL to only impose the group criterion
fraction = delete this fraction of atoms
seed = random number seed (positive integer)
*variable* args = variable-name
* zero or more keyword/value pairs may be appended
* keyword = *compress* or *bond* or *mol*
@ -47,6 +48,7 @@ Examples
delete_atoms overlap 0.5 solvent colloid
delete_atoms porosity all cube 0.1 482793 bond yes
delete_atoms porosity polymer cube 0.1 482793 bond yes
detele_atoms variable checkers
Description
"""""""""""
@ -91,6 +93,13 @@ guarantee that the exact fraction of atoms will be deleted, or that
the same atoms will be deleted when running on different numbers of
processors.
For style *variable*, all atoms for which the atom-style variable with
the given name evaluates to non-zero will be deleted. Additional atoms
can be deleted if they are in a molecule for which one or more atoms
were deleted within the region; see the *mol* keyword discussion below.
This option allows complex selections of atoms not covered by the
other options listed above.
If the *compress* keyword is set to *yes*, then after atoms are
deleted, then atom IDs are re-assigned so that they run from 1 to the
number of atoms in the system. Note that this is not done for

View File

@ -209,6 +209,9 @@ accelerated styles exist.
* :doc:`edpd/source <fix_dpd_source>` - add heat source to eDPD simulations
* :doc:`efield <fix_efield>` - impose electric field on system
* :doc:`ehex <fix_ehex>` - enhanced heat exchange algorithm
* :doc:`electrode/conp <fix_electrode_conp>` - impose electric potential
* :doc:`electrode/conq <fix_electrode_conp>` - impose total electric charge
* :doc:`electrode/thermo <fix_electrode_conp>` - apply thermo-potentiostat
* :doc:`electron/stopping <fix_electron_stopping>` - electronic stopping power as a friction force
* :doc:`electron/stopping/fit <fix_electron_stopping>` - electronic stopping power as a friction force
* :doc:`enforce2d <fix_enforce2d>` - zero out z-dimension velocity and force

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`fix <fix>` command
* accelerate/cos = style name of this fix command
* value = amplitude of acceleration (in unit of force/mass)
* value = amplitude of acceleration (in unit of velocity/time)
Examples

View File

@ -25,7 +25,7 @@ Syntax
f_ID = global scalar calculated by a fix with ID
f_ID[I] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below)
v_name = global value calculated by an equal-style variable with name
v_name[I] = Ith component of a vector-style variable with name
v_name[I] = Ith component of a vector-style variable with name, I can include wildcard (see below)
* zero or more keyword/arg pairs may be appended
* keyword = *type* or *ave* or *start* or *prefactor* or *file* or *overwrite* or *title1* or *title2* or *title3*
@ -105,20 +105,21 @@ individual fixes for info on which ones produce such values.
ones that can be used with this fix. Variables of style *atom* cannot
be used, since they produce per-atom values.
Note that for values from a compute or fix, the bracketed index I can
be specified using a wildcard asterisk with the index to effectively
specify multiple values. This takes the form "\*" or "\*n" or "n\*" or
"m\*n". If N = the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to N. A leading
asterisk means all indices from 1 to n (inclusive). A trailing
asterisk means all indices from n to N (inclusive). A middle asterisk
means all indices from m to n (inclusive).
----------
For input values from a compute or fix or variable , the bracketed
index I can be specified using a wildcard asterisk with the index to
effectively specify multiple values. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If N = the size of the vector, then an
asterisk with no numeric values means all indices from 1 to N. A
leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to N (inclusive). A middle
asterisk means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the
vector had been listed one by one. E.g. these 2 fix ave/correlate
commands are equivalent, since the :doc:`compute pressure <compute_pressure>` command creates a global vector with 6
values.
commands are equivalent, since the :doc:`compute pressure
<compute_pressure>` command creates a global vector with 6 values.
.. code-block:: LAMMPS
@ -128,6 +129,14 @@ values.
c_myPress[1] c_myPress[2] c_myPress[3] &
c_myPress[4] c_myPress[5] c_myPress[6]
.. note::
For a vector-style variable, only the wildcard forms "\*n" or
"m\*n" are allowed. You must specify the upper bound, because
vector-style variable lengths are not determined until the variable
is evaluated. If n is specified larger than the vector length
turns out to be, zeroes are output for missing vector values.
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what

View File

@ -32,7 +32,7 @@ Syntax
f_ID = scalar or vector calculated by a fix with ID
f_ID[I] = Ith component of vector or Ith column of array calculated by a fix with ID, I can include wildcard (see below)
v_name = value(s) calculated by an equal-style or vector-style or atom-style variable with name
v_name[I] = value calculated by a vector-style variable with name
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
* zero or more keyword/arg pairs may be appended
* keyword = *mode* or *file* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3*
@ -120,27 +120,6 @@ If *mode* = vector, then the input values must be vectors, or arrays
with a bracketed term appended, indicating the Ith column of the array
is used.
Note that for values from a compute or fix, the bracketed index I can
be specified using a wildcard asterisk with the index to effectively
specify multiple values. This takes the form "\*" or "\*n" or "n\*" or
"m\*n". If N = the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to N. A leading
asterisk means all indices from 1 to n (inclusive). A trailing
asterisk means all indices from n to N (inclusive). A middle asterisk
means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the
vector or columns of the array had been listed one by one. E.g. these
2 fix ave/histo commands are equivalent, since the :doc:`compute com/chunk <compute_com_chunk>` command creates a global array with
3 columns:
.. code-block:: LAMMPS
compute myCOM all com/chunk
fix 1 all ave/histo 100 1 100 -10.0 10.0 100 c_myCOM[*] file tmp1.com mode vector
fix 2 all ave/histo 100 1 100 -10.0 10.0 100 c_myCOM[1] c_myCOM[2] c_myCOM[3] file tmp2.com mode vector
If the fix ave/histo/weight command is used, exactly two values must
be specified. If the values are vectors, they must be the same
length. The first value (a scalar or vector) is what is histogrammed
@ -153,6 +132,38 @@ the first vector.
----------
For input values from a compute or fix or variable, the bracketed
index I can be specified using a wildcard asterisk with the index to
effectively specify multiple values. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If N = the size of the vector (for *mode* =
scalar) or the number of columns in the array (for *mode* = vector),
then an asterisk with no numeric values means all indices from 1 to N.
A leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to N (inclusive). A middle
asterisk means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the
vector or columns of the array had been listed one by one. E.g. these
2 fix ave/histo commands are equivalent, since the :doc:`compute
com/chunk <compute_com_chunk>` command creates a global array with 3
columns:
.. code-block:: LAMMPS
compute myCOM all com/chunk
fix 1 all ave/histo 100 1 100 -10.0 10.0 100 c_myCOM[*] file tmp1.com mode vector
fix 2 all ave/histo 100 1 100 -10.0 10.0 100 c_myCOM[1] c_myCOM[2] c_myCOM[3] file tmp2.com mode vector
.. note::
For a vector-style variable, only the wildcard forms "\*n" or
"m\*n" are allowed. You must specify the upper bound, because
vector-style variable lengths are not determined until the variable
is evaluated. If n is specified larger than the vector length
turns out to be, zeroes are output for missing vector values.
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
timesteps the input values will be used in order to contribute to the
histogram. The final histogram is generated on timesteps that are

View File

@ -25,7 +25,7 @@ Syntax
f_ID = global scalar or vector calculated by a fix with ID
f_ID[I] = Ith component of global vector or Ith column of global array calculated by a fix with ID, I can include wildcard (see below)
v_name = value(s) calculated by an equal-style or vector-style variable with name
v_name[I] = value calculated by a vector-style variable with name
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
* zero or more keyword/arg pairs may be appended
* keyword = *mode* or *file* or *ave* or *start* or *off* or *overwrite* or *title1* or *title2* or *title3*
@ -113,20 +113,23 @@ with a bracketed term appended, indicating the Ith column of the array
is used. All vectors must be the same length, which is the length of
the vector or number of rows in the array.
Note that for values from a compute or fix, the bracketed index I can
be specified using a wildcard asterisk with the index to effectively
specify multiple values. This takes the form "\*" or "\*n" or "n\*" or
"m\*n". If N = the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to N. A leading
asterisk means all indices from 1 to n (inclusive). A trailing
asterisk means all indices from n to N (inclusive). A middle asterisk
means all indices from m to n (inclusive).
----------
For input values from a compute or fix or variable, the bracketed
index I can be specified using a wildcard asterisk with the index to
effectively specify multiple values. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If N = the size of the vector (for *mode* =
scalar) or the number of columns in the array (for *mode* = vector),
then an asterisk with no numeric values means all indices from 1 to N.
A leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to N (inclusive). A middle
asterisk means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the
vector or columns of the array had been listed one by one. E.g. these
2 fix ave/time commands are equivalent, since the :doc:`compute rdf <compute_rdf>` command creates, in this case, a global array
with 3 columns, each of length 50:
2 fix ave/time commands are equivalent, since the :doc:`compute rdf
<compute_rdf>` command creates, in this case, a global array with 3
columns, each of length 50:
.. code-block:: LAMMPS
@ -134,6 +137,14 @@ with 3 columns, each of length 50:
fix 1 all ave/time 100 1 100 c_myRDF[*] file tmp1.rdf mode vector
fix 2 all ave/time 100 1 100 c_myRDF[1] c_myRDF[2] c_myRDF[3] file tmp2.rdf mode vector
.. note::
For a vector-style variable, only the wildcard forms "\*n" or
"m\*n" are allowed. You must specify the upper bound, because
vector-style variable lengths are not determined until the variable
is evaluated. If n is specified larger than the vector length
turns out to be, zeroes are output for missing vector values.
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
@ -169,9 +180,12 @@ asterisk to effectively specify multiple values.
Note that there is a :doc:`compute reduce <compute_reduce>` command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/time. Or it can be a compute defined
not in your input script, but by :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or :doc:`fix temp/rescale <fix_temp_rescale>`. See
the doc pages for these commands which give the IDs of these computes.
Users can also write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`.
not in your input script, but by :doc:`thermodynamic output
<thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or
:doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for
these commands which give the IDs of these computes. Users can also
write code for their own compute styles and :doc:`add them to LAMMPS
<Modify>`.
If a value begins with "f\_", a fix ID must follow which has been
previously defined in the input script. If *mode* = scalar, then if
@ -258,10 +272,18 @@ each input value specified in the fix ave/time command. For *mode* =
scalar, this means a single line is written each time output is
performed. Thus the file ends up to be a series of lines, i.e. one
column of numbers for each input value. For *mode* = vector, an array
of numbers is written each time output is performed. The number of
rows is the length of the input vectors, and the number of columns is
the number of values. Thus the file ends up to be a series of these
array sections.
of numbers is written each time output is performed. The number of rows
is the length of the input vectors, and the number of columns is the
number of values. Thus the file ends up to be a series of these array
sections.
If the filename ends in '.yaml' or '.yml' then the output format
conforms to the `YAML standard <https://yaml.org/>`_ which allows
easy import that data into tools and scripts that support reading YAML
files. The :doc:`structured data Howto <Howto_structured_data>` contains
examples for parsing and plotting such data with very little programming
effort in Python using the *pyyaml*, *pandas*, and *matplotlib*
packages.
The *overwrite* keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
@ -307,8 +329,10 @@ appropriate fields from the fix ave/time command.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix.
No information about this fix is written to :doc:`binary restart files
<restart>`. The :doc:`fix_modify colname <fix_modify>` option can be
used to change the name of the column in the output file. When writing
a YAML format file this name will be in the list of keywords.
This fix produces a global scalar or global vector or global array
which can be accessed by various :doc:`output commands <Howto_output>`.

View File

@ -0,0 +1,221 @@
.. index:: fix electrode/conp
.. index:: fix electrode/conq
.. index:: fix electrode/thermo
.. index:: fix electrode/conp/intel
.. index:: fix electrode/conq/intel
.. index:: fix electrode/thermo/intel
fix electrode/conp command
==========================
Accelerator Variant: *electrode/conp/intel*
fix electrode/conq command
==========================
Accelerator Variant: *electrode/conq/intel*
fix electrode/thermo command
============================
Accelerator Variant: *electrode/thermo/intel*
Syntax
""""""
.. parsed-literal::
fix ID group-ID electrode/conp potential eta keyword values ...
fix ID group-ID electrode/conq charge eta keyword values ...
fix ID group-ID electrode/thermo potential eta temp T_v tau_v rng_v keyword values ...
* ID, group-ID are documented in fix command
* mode = electrode/conp or electrode/conq or electrode/thermo
* potential = electrode potential
* charge = electrode charge
* eta = reciprocal width of electrode charge smearing
* T_v = temperature of thermo-potentiostat
* tau_v = time constant of thermo-potentiostat
* rng_v = integer used to initialize random number generator
.. parsed-literal::
*symm(etry) on/off*
turn on/off charge neutrality constraint for the electrodes
*couple group-ID value*
group-ID = group of atoms treated as additional electrode
value = electric potential or charge on this electrode
*etypes values = atom types*
specify atom types exclusive to the electrode for optimized neighbor lists
*ffield on/off*
turn on/off finite-field implementation
*write_mat filename*
write elastance matrix to file
*write_inv filename*
write inverted matrix to file
*read_mat filename*
read elastance matrix from file
*read_inv filename*
read inverted matrix from file
Examples
""""""""
.. code-block:: LAMMPS
fix fxconp bot electrode/conp -1.0 1.805 couple top 1.0 couple ref 0.0 write_inv inv.csv symm on
fix fxconp electrodes electrode/conq 0.0 1.805
fix fxconp bot electrode/thermo -1.0 1.805 temp 298 100 couple top 1.0
Description
"""""""""""
fix electrode/conp mode implements a constant potential method (CPM)
(:ref:`Siepmann <Siepmann>`, :ref:`Reed <Reed3>`). Charges of groups specified
via group-ID and optionally with the `couple` keyword are adapted to meet their respective
potential at every time step. An arbitrary number of electrodes can be set but
the respective groups may not overlap. Electrode charges have a Gaussian charge
distribution with reciprocal width eta. The energy minimization is achieved via
matrix inversion :ref:`(Wang) <Wang5>`.
fix electrode/conq enforces a total charge specified in the input on each electrode. The energy is
minimized w.r.t. the charge distribution within the electrode.
fix electrode/thermo implements a thermo-potentiostat :ref:`(Deissenbeck)
<Deissenbeck>`. Temperature and time constant of the thermo-potentiostat need
to be specified using the temp keyword. Currently, only two electrodes are possible with
this style.
This fix necessitates the use of a long range solver that calculates and provides the matrix
of electrode-electrode interactions and a vector of electrode-electrolyte
interactions. The Kspace styles *ewald/electrode*, *pppm/electrode* and
*pppm/electrode/intel* are created specifically for this task
:ref:`(Ahrens-Iwers) <Ahrens-Iwers>`.
For systems with non-periodic boundaries in one or two directions dipole
corrections are available with the :doc:`kspace_modify <kspace_modify>`. For
ewald/electrode a two-dimensional Ewald summation :ref:`(Hu) <Hu>` can be used
by setting "slab ew2d":
.. code-block:: LAMMPS
kspace_modify slab <slab_factor>
kspace_modify wire <wire_factor>
kspace_modify slab ew2d
Two implementations for the calculation of the elastance matrix are available
with pppm and can be selected using the *amat onestep/twostep* keyword.
*onestep* is the default; *twostep* can be faster for large electrodes and a
moderate mesh size but requires more memory.
.. code-block:: LAMMPS
kspace_modify amat onestep/twostep
The *fix_modify tf* option enables the Thomas-Fermi metallicity model
(:ref:`Scalfi <Scalfi>`) and allows parameters to be set for each atom type.
.. code-block:: LAMMPS
fix_modify ID tf type length voronoi
If this option is used parameters must be set for all atom types of the electrode.
The *fix_modify timer* option turns on (off) additional timer outputs in the log
file, for code developers to track optimization.
.. code-block:: LAMMPS
fix_modify ID timer on/off
The *fix_modify set* options allow calculated quantities to be accessed via
internal variables. Currently four types of quantities can be accessed:
.. code-block:: LAMMPS
fix-modify ID set v group-ID variablename
fix-modify ID set qsb group-ID variablename
fix-modify ID set mc group-ID1 group-ID2 variablename
fix-modify ID set me group-ID1 group-ID2 variablename
One use case is to output the potential that is internally calculated and
applied to each electrode group by *fix electrode/conq* or *fix electrode/thermo*.
For that case the *v* option makes *fix electrode* update the variable
*variablename* with the potential applied to group *group-ID*, where *group-ID*
must be a group whose charges are updated by *fix electrode* and *variablename*
must be an internal-style variable:
.. code-block:: LAMMPS
fix conq bot electrode/conq -1.0 1.979 couple top 1.0
variable vbot internal 0.0
fix_modify conq set v bot vbot
The *qsb* option similarly outputs the total updated charge of the group if its
potential were 0.0V. The *mc* option requires two *group-IDs*, and outputs the
entry \{*group-ID1*, *group-ID2*\} of the (symmetric) *macro-capacitance* matrix
(MC) which relates the electrodes' applied potentials (V), total charges (Q), and
total charges at 0.0 V (Qsb):
.. math::
\mathbf{Q} = \mathbf{Q}_{SB} + \mathbf{MC} \cdot \mathbf{V}
Lastly, the *me* option also requires two *group-IDs* and outputs the entry
\{*group-ID1*, *group-ID2*\} of the *macro-elastance* matrix, which is the
inverse of the macro-capacitance matrix. (As the names denote, the
macro-capacitance matrix gives electrode charges from potentials, and the
macro-elastance matrix gives electrode potentials from charges).
.. warning::
Positions of electrode particles have to be immobilized at all times.
The parallelization for the fix works best if electrode atoms are evenly
distributed across processors. For a system with two electrodes at the bottom
and top of the cell this can be achieved with *processors * * 2*, or with the
line
.. code-block:: LAMMPS
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
which avoids an error if the script is run on an odd number of processors (such
as on just one processor for testing).
----------
.. include:: accel_styles.rst
----------
.. _Siepmann:
**(Siepmann)** Siepmann and Sprik, J. Chem. Phys. 102, 511 (1995).
.. _Reed3:
**(Reed)** Reed *et al.*, J. Chem. Phys. 126, 084704 (2007).
.. _Wang5:
**(Wang)** Wang *et al.*, J. Chem. Phys. 141, 184102 (2014).
.. _Deissenbeck:
**(Deissenbeck)** Deissenbeck *et al.*, Phys. Rev. Letters 126, 136803 (2021).
.. _Ahrens-Iwers:
**(Ahrens-Iwers)** Ahrens-Iwers and Meissner, J. Chem. Phys. 155, 104104 (2021).
.. _Hu:
**(Hu)** Hu, J. Chem. Theory Comput. 10, 5254 (2014).
.. _Scalfi:
**(Scalfi)** Scalfi *et al.*, J. Chem. Phys., 153, 174704 (2020).

View File

@ -12,19 +12,23 @@ Syntax
* fix-ID = ID of the fix to modify
* one or more keyword/value pairs may be appended
* keyword = *temp* or *press* or *energy* or *virial* or *respa* or *dynamic/dof* or *bodyforces*
* keyword = *bodyforces* or *colname* or *dynamic/dof* or *energy* or *press* or *respa* or *temp* or *virial*
.. parsed-literal::
*temp* value = compute ID that calculates a temperature
*press* value = compute ID that calculates a pressure
*energy* value = *yes* or *no*
*virial* value = *yes* or *no*
*respa* value = *1* to *max respa level* or *0* (for outermost level)
*dynamic/dof* value = *yes* or *no*
yes/no = do or do not re-compute the number of degrees of freedom (DOF) contributing to the temperature
*bodyforces* value = *early* or *late*
early/late = compute rigid-body forces/torques early or late in the timestep
*colname* values = ID string
string = new column header name
ID = integer from 1 to N, or integer from -1 to -N, where N = # of quantities being output
*or* a fix output property keyword or reference to compute, fix, property or variable.
*dynamic/dof* value = *yes* or *no*
yes/no = do or do not re-compute the number of degrees of freedom (DOF) contributing to the temperature
*energy* value = *yes* or *no*
*press* value = compute ID that calculates a pressure
*respa* value = *1* to *max respa level* or *0* (for outermost level)
*temp* value = compute ID that calculates a temperature
*virial* value = *yes* or *no*
Examples
""""""""
@ -34,6 +38,7 @@ Examples
fix_modify 3 temp myTemp press myPress
fix_modify 1 energy yes
fix_modify tether respa 2
fix_modify ave colname c_thermo_press Pressure colname 1 Temperature
Description
"""""""""""
@ -165,6 +170,20 @@ will have no effect on the motion of the rigid bodies if they are
specified in the input script after the fix rigid command. LAMMPS
will give a warning if that is the case.
The *colname* keyword can be used to change the default header keywords
in output files of fix styles that support it: currently only :doc:`fix
ave/time <fix_ave_time>` is supported. The setting for *ID string*
replaces the default text with the provided string. *ID* can be a
positive integer when it represents the column number counting from the
left, a negative integer when it represents the column number from the
right (i.e. -1 is the last column/keyword), or a custom fix output
keyword (or compute, fix, property, or variable reference) and then it
replaces the string for that specific keyword. The *colname* keyword can
be used multiple times. If multiple *colname* settings refer to the same
keyword, the last setting has precedence.
Restrictions
""""""""""""
none
@ -172,7 +191,8 @@ none
Related commands
""""""""""""""""
:doc:`fix <fix>`, :doc:`compute temp <compute_temp>`, :doc:`compute pressure <compute_pressure>`, :doc:`thermo_style <thermo_style>`
:doc:`fix <fix>`, :doc:`compute temp <compute_temp>`,
:doc:`compute pressure <compute_pressure>`, :doc:`thermo_style <thermo_style>`
Default
"""""""

View File

@ -51,9 +51,13 @@ Syntax
*slab* value = volfactor or *nozforce*
volfactor = ratio of the total extended volume used in the
2d approximation compared with the volume of the simulation domain
*ew2d* EW2D correction (available with ELECTRODE package)
*nozforce* turns off kspace forces in the z direction
*splittol* value = tol
tol = relative size of two eigenvalues (see discussion below)
*wire* value = volfactor (available with ELECTRODE package)
volfactor = ratio of the total extended dimension used in the 1d
approximation compared with the dimension of the simulation domain
Examples
""""""""

View File

@ -4,6 +4,7 @@
.. index:: kspace_style ewald/disp
.. index:: kspace_style ewald/disp/dipole
.. index:: kspace_style ewald/omp
.. index:: kspace_style ewald/electrode
.. index:: kspace_style pppm
.. index:: kspace_style pppm/kk
.. index:: kspace_style pppm/omp
@ -23,6 +24,8 @@
.. index:: kspace_style pppm/stagger
.. index:: kspace_style pppm/tip4p
.. index:: kspace_style pppm/tip4p/omp
.. index:: kspace_style pppm/electrode
.. index:: kspace_style pppm/electrode/intel
.. index:: kspace_style msm
.. index:: kspace_style msm/omp
.. index:: kspace_style msm/cg
@ -40,7 +43,7 @@ Syntax
kspace_style style value
* style = *none* or *ewald* or *ewald/dipole* or *ewald/dipole/spin* or *ewald/disp* or *ewald/disp/dipole* or *ewald/omp* or *pppm* or *pppm/cg* or *pppm/disp* or *pppm/tip4p* or *pppm/stagger* or *pppm/disp/tip4p* or *pppm/gpu* or *pppm/intel* or *pppm/disp/intel* or *pppm/kk* or *pppm/omp* or *pppm/cg/omp* or *pppm/disp/tip4p/omp* or *pppm/tip4p/omp* or *pppm/dielectic* or *pppm/disp/dielectric* or *msm* or *msm/cg* or *msm/omp* or *msm/cg/omp* or *msm/dielectric* or *scafacos*
* style = *none* or *ewald* or *ewald/dipole* or *ewald/dipole/spin* or *ewald/disp* or *ewald/disp/dipole* or *ewald/omp* or *ewald/electrode* or *pppm* or *pppm/cg* or *pppm/disp* or *pppm/tip4p* or *pppm/stagger* or *pppm/disp/tip4p* or *pppm/gpu* or *pppm/intel* or *pppm/disp/intel* or *pppm/kk* or *pppm/omp* or *pppm/cg/omp* or *pppm/disp/tip4p/omp* or *pppm/tip4p/omp* or *pppm/dielectic* or *pppm/disp/dielectric* or *pppm/electrode* or *pppm/electrode/intel* or *msm* or *msm/cg* or *msm/omp* or *msm/cg/omp* or *msm/dielectric* or *scafacos*
.. parsed-literal::
@ -57,6 +60,8 @@ Syntax
accuracy = desired relative error in forces
*ewald/omp* value = accuracy
accuracy = desired relative error in forces
*ewald/electrode* value = accuracy
accuracy = desired relative error in forces
*pppm* value = accuracy
accuracy = desired relative error in forces
*pppm/cg* values = accuracy (smallq)
@ -97,6 +102,10 @@ Syntax
accuracy = desired relative error in forces
*pppm/disp/dielectric* value = accuracy
accuracy = desired relative error in forces
*pppm/electrode* value = accuracy
accuracy = desired relative error in forces
*pppm/electrode/intel* value = accuracy
accuracy = desired relative error in forces
*msm* value = accuracy
accuracy = desired relative error in forces
*msm/cg* value = accuracy (smallq)
@ -273,6 +282,13 @@ parameters and how to choose them is described in
----------
The *electrode* styles add methods that are required for the constant potential
method implemented in :doc:`fix electrode/* <fix_electrode_conp>`. The styles
*ewald/electrode*, *pppm/electrode* and *pppm/electrode/intel* are available.
These styles do not support the `kspace_modify slab nozforce` command.
----------
The *msm* style invokes a multi-level summation method MSM solver,
:ref:`(Hardy) <Hardy2006>` or :ref:`(Hardy2) <Hardy2009>`, which maps atom charge
to a 3d mesh, and uses a multi-level hierarchy of coarser and coarser

View File

@ -1,10 +1,11 @@
.. index:: pair_style adp
.. index:: pair_style adp/kk
.. index:: pair_style adp/omp
pair_style adp command
======================
Accelerator Variants: *adp/omp*
Accelerator Variants: *adp/kk*, *adp/omp*
Syntax
""""""

View File

@ -1,8 +1,11 @@
.. index:: pair_style ilp/tmd
.. index:: pair_style ilp/tmd/opt
pair_style ilp/tmd command
===================================
Accelerator Variant: *ilp/tmd/opt*
Syntax
""""""
@ -103,6 +106,10 @@ headings) the following commands could be included in an input script:
----------
.. include:: accel_styles.rst
----------
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

View File

@ -1,8 +1,11 @@
.. index:: pair_style saip/metal
.. index:: pair_style saip/metal/opt
pair_style saip/metal command
===================================
Accelerator Variant: *saip/metal/opt*
Syntax
""""""
@ -102,6 +105,10 @@ headings) the following commands could be included in an input script:
----------
.. include:: accel_styles.rst
----------
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

131
doc/src/pair_smatb.rst Normal file
View File

@ -0,0 +1,131 @@
.. index:: pair_style smatb
.. index:: pair_style smatb/single
pair_style smatb command
=========================
pair_style smatb/single command
===============================
Syntax
""""""
.. code-block:: LAMMPS
pair_style style args
* style = *smatb*
* args = none
.. parsed-literal::
*smatb*
Examples
""""""""
.. code-block:: LAMMPS
pair_style smatb
pair_coeff 1 1 2.88 10.35 4.178 0.210 1.818 4.07293506 4.9883063257983666
Description
"""""""""""
The *smatb* styles compute the Second Moment Approximation to the Tight Binding
:ref:`(Cyrot) <Cyrot>`, :ref:`(Gupta) <Gupta>`, :ref:`(Rosato) <Rosato>`,
given by
.. math::
E_{i} = \sum_{j,R_{ij}\leq R_{c}} \alpha(R_{ij}) - \sqrt{\sum_{j,R_{ij}\leq R_{c}}\Xi^2(R_{ij})}
:math:`R_{ij}` is the distance between the atom :math:`i` and :math:`j`.
And the two functions :math:`\alpha\left(r\right)` and :math:`\Xi\left(r\right)` are:
.. math::
\alpha\left(r\right)=\left\lbrace\begin{array}{ll}
A e^{-p \left(\frac{r}{R_{0}}-1\right)} & r < R_{sc}\\
a_3\left(r-R_{c}\right)^3+a_4\left(r-R_{c}\right)^4
+a_5\left(r-R_{c}\right)^5& R_{sc} < r < R_{c}
\end{array}
\right.
.. math::
\Xi\left(r\right)=\left\lbrace\begin{array}{ll}
\xi e^{-q \left(\frac{r}{R_{0}}-1\right)} & r < R_{sc}\\
x_3\left(r-R_{c}\right)^3+x_4\left(r-R_{c}\right)^4
+x_5\left(r-R_{c}\right)^5& R_{sc} < r < R_{c}
\end{array}
\right.
The polynomial coefficients :math:`a_3`, :math:`a_4`, :math:`a_5`,
:math:`x_3`, :math:`x_4`, :math:`x_5` are computed by LAMMPS: the two
exponential terms and their first and second derivatives are smoothly
reduced to zero, from the inner cutoff :math:`R_{sc}` to the outer
cutoff :math:`R_{c}`.
Coefficients
""""""""""""
The following coefficients must be defined for each pair of atoms types via the
:doc:`pair_coeff <pair_coeff>` command as in the examples above, or in the data
file or restart files read by the :doc:`read_data <read_data>` or
:doc:`read_restart <read_restart>` commands, or by mixing as described below:
* :math:`R_{0}` (distance units)
* :math:`p` (dimensionless)
* :math:`q` (dimensionless)
* :math:`A` (energy units)
* :math:`\xi` (energy units)
* :math:`R_{cs}` (distance units)
* :math:`R_{c}` (distance units)
Note that: :math:`R_{0}` is the nearest neighbor distance, usually coincides
with the diameter of the atoms
See the :doc:`run_style <run_style>` command for details.
----------
Mixing info
"""""""""""
For atom type pairs I,J and I != J the coefficients are not automatically mixed.
----------
Restrictions
""""""""""""
This pair style is part of the SMTBQ package and is only enabled
if LAMMPS is built with that package. See the :doc:`Build package <Build_package>` page for more info.
These pair potentials require the :doc:`newton <newton>` setting to be "on" for pair interactions.
Related commands
""""""""""""""""
* :doc:`pair_coeff <pair_coeff>`
Default
"""""""
none
----------
.. _Cyrot:
**(Cyrot)** Cyrot-Lackmann and Ducastelle, Phys Rev. B, 4, 2406-2412 (1971).
.. _Gupta:
**(Gupta)** Gupta ,Phys Rev. B, 23, 6265-6270 (1981).
.. _Rosato:
**(Rosato)** Rosato and Guillope and Legrand, Philosophical Magazine A, 59.2, 321-336 (1989).

View File

@ -136,7 +136,7 @@ keyword/value pair. The required keywords are *rcutfac* and
*twojmax*\ . Optional keywords are *rfac0*, *rmin0*,
*switchflag*, *bzeroflag*, *quadraticflag*, *chemflag*,
*bnormflag*, *wselfallflag*, *switchinnerflag*,
*rinner*, *drinner*, *chunksize*, and *parallelthresh*\ .
*sinner*, *dinner*, *chunksize*, and *parallelthresh*\ .
The default values for these keywords are
@ -152,6 +152,9 @@ The default values for these keywords are
* *chunksize* = 32768
* *parallelthresh* = 8192
For detailed definitions of all of these keywords,
see the :doc:`compute sna/atom <compute_sna_atom>` doc page.
If *quadraticflag* is set to 1, then the SNAP energy expression includes
additional quadratic terms that have been shown to increase the overall
accuracy of the potential without much increase in computational cost
@ -194,7 +197,7 @@ pair_coeff command, to avoid ambiguity in the number of coefficients.
The keyword *switchinnerflag* activates an additional switching function
that smoothly turns off contributions to the SNAP potential from neighbor
atoms at short separations. If *switchinnerflag* is set to 1 then
the additional keywords *rinner* and *drinner* must also be provided.
the additional keywords *sinner* and *dinner* must also be provided.
Each of these is followed by *nelements* values, where *nelements*
is the number of unique elements appearing in appearing in the LAMMPS
pair_coeff command. The element order should correspond to the order
@ -217,9 +220,6 @@ already large enough to saturate the GPU threads. Extra parallelism
will be performed if the *chunksize* (or total number of atoms per GPU)
is smaller than *parallelthresh*.
Detailed definitions for all the other keywords
are given on the :doc:`compute sna/atom <compute_sna_atom>` doc page.
.. note::
The previously used *diagonalstyle* keyword was removed in 2019,

View File

@ -323,6 +323,8 @@ accelerated styles exist.
* :doc:`resquared <pair_resquared>` - Everaers RE-Squared ellipsoidal potential
* :doc:`saip/metal <pair_saip_metal>` - interlayer potential for hetero-junctions formed with hexagonal 2D materials and metal surfaces
* :doc:`sdpd/taitwater/isothermal <pair_sdpd_taitwater_isothermal>` - smoothed dissipative particle dynamics for water at isothermal conditions
* :doc:`smatb <pair_smatb>` - Second Moment Approximation to the Tight Binding
* :doc:`smatb/single <pair_smatb>` - Second Moment Approximation to the Tight Binding for single-element systems
* :doc:`smd/hertz <pair_smd_hertz>` -
* :doc:`smd/tlsph <pair_smd_tlsph>` -
* :doc:`smd/tri_surface <pair_smd_triangulated_surface>` -

View File

@ -11,7 +11,7 @@ Syntax
region ID style args keyword arg ...
* ID = user-assigned name for the region
* style = *delete* or *block* or *cone* or *cylinder* or *plane* or *prism* or *sphere* or *union* or *intersect*
* style = *delete* or *block* or *cone* or *cylinder* or *ellipsoid* or *plane* or *prism* or *sphere* or *union* or *intersect*
.. parsed-literal::
@ -29,6 +29,10 @@ Syntax
radius = cylinder radius (distance units)
c1,c2, and radius can be a variable (see below)
lo,hi = bounds of cylinder in dim (distance units)
*ellipsoid* args = x y z a b c
x,y,z = center of ellipsoid (distance units)
a,b,c = half the length of the principal axes of the ellipsoid (distance units)
x,y,z,a,b and c can be a variable (see below)
*plane* args = px py pz nx ny nz
px,py,pz = point on the plane (distance units)
nx,ny,nz = direction normal to plane (distance units)
@ -60,7 +64,7 @@ Syntax
*lattice* = the geometry is defined in lattice units
*box* = the geometry is defined in simulation box units
*move* args = v_x v_y v_z
v_x,v_y,v_z = equal-style variables for x,y,z displacement of region over time
v_x,v_y,v_z = equal-style variables for x,y,z displacement of region over time (distance units)
*rotate* args = v_theta Px Py Pz Rx Ry Rz
v_theta = equal-style variable for rotaton of region over time (in radians)
Px,Py,Pz = origin for axis of rotation (distance units)
@ -158,6 +162,12 @@ Thus the third example above specifies a cylinder with its axis in the
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
extending in the y-direction from -5.0 to the upper box boundary.
For style *ellipsoid*, an axis-aligned ellipsoid is defined. The
ellipsoid has its center at (x,y,z) and is defined by 3 axis-aligned
vectors given by A = (a,0,0); B = (0,b,0); C = (0,0,c). Note that
although the ellipsoid is specified as axis-aligned it can be rotated
via the optional *rotate* keyword.
For style *plane*, a plane is defined which contain the point
(px,py,pz) and has a normal vector (nx,ny,nz). The normal vector does
not have to be of unit length. The "inside" of the plane is the
@ -184,15 +194,21 @@ since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
geometrically equivalent.
The *radius* value for style *sphere* and *cylinder* can be specified
as an equal-style :doc:`variable <variable>`. If the value is a
variable, it should be specified as v_name, where name is the variable
name. In this case, the variable will be evaluated each timestep, and
its value used to determine the radius of the region. For style *sphere*
also the x-, y-, and z- coordinate of the center of the sphere and for
style *cylinder* the two center positions c1 and c2 for the location of
the cylinder axes can be a variable with the same kind of effect and
requirements than for the radius.
For style *sphere*, a sphere is defined with its center at (x,y,z)
and with radius as its radius.
The *radius* value for styles *sphere* and *cylinder*, and the
parameters a,b,c for style *ellipsoid*, can each be specified as an
equal-style :doc:`variable <variable>`. Likewise, for style *sphere*
and *ellipsoid* the x-, y-, and z- coordinates of the center of the
sphere/ellipsoid can be specified as an equal-style variable. And for
style *cylinder* the two center positions c1 and c2 for the location
of the cylinder axes can be specified as a equal-style variable.
If the value is a variable, it should be specified as v_name, where
name is the variable name. In this case, the variable will be
evaluated each timestep, and its value used to determine the radius of
the region.
Equal-style variables can specify formulas with various mathematical
functions, and include :doc:`thermo_style <thermo_style>` command
@ -250,6 +266,9 @@ define the lattice spacings which are used as follows:
to lo and hi. The spacings in the two radial dimensions are applied
to c1 and c2. The cylinder radius is scaled by the lattice
spacing in the dimension corresponding to c1.
* For style *ellipsoid*, the lattice spacing in dimensions x,y,z are
applied to the ellipsoid center x,y,z. The spacing in dimensions
x,y,z are applied to the ellipsoid radii a,b,c respectively.
* For style *plane*, the lattice spacing in dimension x is applied to
px and nx, similarly the spacings in dimensions y,z are applied to
py/ny and pz/nz.

View File

@ -8,9 +8,16 @@ Syntax
.. code-block:: LAMMPS
reset_timestep N
reset_timestep N keyword values ...
* N = timestep number
* zero or more keyword/value pairs may be appended
* keyword = *time*
.. parsed-literal::
*time* value = atime
atime = accumulated simulation time
Examples
""""""""
@ -19,48 +26,56 @@ Examples
reset_timestep 0
reset_timestep 4000000
reset_timestep 1000 time 100.0
Description
"""""""""""
Set the timestep counter to the specified value. This command
normally comes after the timestep has been set by reading a restart
usually comes after the timestep has been set by reading a restart
file via the :doc:`read_restart <read_restart>` command, or a previous
simulation advanced the timestep.
simulation run or minimization advanced the timestep.
The optional *time* keyword allows to also set the accumulated
simulation time. This is usually the number of timesteps times
the size of the timestep, but when using variable size timesteps
with :doc:`fix dt/reset <fix_dt_reset>` it can differ.
The :doc:`read_data <read_data>` and :doc:`create_box <create_box>`
commands set the timestep to 0; the :doc:`read_restart <read_restart>`
command sets the timestep to the value it had when the restart file
was written.
was written. The same applies to the accumulated simulation time.
Restrictions
""""""""""""
none
This command cannot be used when any fixes are defined that keep track
of elapsed time to perform certain kinds of time-dependent operations.
Examples are the :doc:`fix deposit <fix_deposit>` and :doc:`fix dt/reset <fix_dt_reset>` commands. The former adds atoms on
specific timesteps. The latter keeps track of accumulated time.
Examples are the :doc:`fix deposit <fix_deposit>` and :doc:`fix dt/reset
<fix_dt_reset>` commands. The former adds atoms on specific timesteps.
The latter keeps track of accumulated time.
Various fixes use the current timestep to calculate related
quantities. If the timestep is reset, this may produce unexpected
behavior, but LAMMPS allows the fixes to be defined even if the
timestep is reset. For example, commands which thermostat the system,
e.g. :doc:`fix nvt <fix_nh>`, allow you to specify a target temperature
which ramps from Tstart to Tstop which may persist over several runs.
If you change the timestep, you may induce an instantaneous change in
the target temperature.
Various fixes use the current timestep to calculate related quantities.
If the timestep is reset, this may produce unexpected behavior, but
LAMMPS allows the fixes to be defined even if the timestep is reset.
For example, commands which thermostat the system, e.g. :doc:`fix nvt
<fix_nh>`, allow you to specify a target temperature which ramps from
Tstart to Tstop which may persist over several runs. If you change the
timestep, you may induce an instantaneous change in the target
temperature.
Resetting the timestep clears flags for :doc:`computes <compute>` that
may have calculated some quantity from a previous run. This means
these quantity cannot be accessed by a variable in between runs until
a new run is performed. See the :doc:`variable <variable>` command for
more details.
may have calculated some quantity from a previous run. This means these
quantity cannot be accessed by a variable in between runs until a new
run is performed. See the :doc:`variable <variable>` command for more
details.
Related commands
""""""""""""""""
:doc:`rerun <rerun>`
:doc:`rerun <rerun>`, :doc:`timestep <timestep>`,
:doc:`fix dt/reset <fix_dt_reset>`
Default
"""""""

View File

@ -85,7 +85,7 @@ Syntax
f_ID[I] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below)
f_ID[I][J] = I,J component of global array calculated by a fix with ID
v_name = value calculated by an equal-style variable with name
v_name[I] = value calculated by a vector-style variable with name
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
Examples
""""""""
@ -348,16 +348,15 @@ dimensions *lx*, *ly*, *lz*, *yz*, *xz*, *xy*\ .
----------
For output values from a compute or fix, the bracketed index I used to
index a vector, as in *c_ID[I]* or *f_ID[I]*, can be specified
using a wildcard asterisk with the index to effectively specify
multiple values. This takes the form "\*" or "\*n" or "n\*" or "m\*n".
If N = the size of the vector (for *mode* = scalar) or the number of
columns in the array (for *mode* = vector), then an asterisk with no
numeric values means all indices from 1 to N. A leading asterisk
means all indices from 1 to n (inclusive). A trailing asterisk means
all indices from n to N (inclusive). A middle asterisk means all
indices from m to n (inclusive).
For output values from a compute or fix or variable, the bracketed
index I used to index a vector, as in *c_ID[I]* or *f_ID[I]* or
*v_name[I]*, can be specified using a wildcard asterisk with the index
to effectively specify multiple values. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If N = the size of the vector, then an
asterisk with no numeric values means all indices from 1 to N. A
leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to N (inclusive). A middle
asterisk means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the
vector had been listed one by one. E.g. these 2 thermo_style commands
@ -372,6 +371,15 @@ creates a global vector with 6 values.
c_myTemp[1] c_myTemp[2] c_myTemp[3] &
c_myTemp[4] c_myTemp[5] c_myTemp[6]
.. note::
For a vector-style variable, only the wildcard forms "\*n" or
"m\*n" are allowed. You must specify the upper bound, because
vector-style variable lengths are not determined until the variable
is evaluated. If n is specified larger than the vector length
turns out to be, zeroes are output for missing vector values.
----------
The *c_ID* and *c_ID[I]* and *c_ID[I][J]* keywords allow global values

View File

@ -39,8 +39,9 @@ Description
Calculate the third order force constant tensor by finite difference of the selected group,
.. image:: JPG/third_order_force_constant.png
:align: center
.. math::
\Phi^{\alpha\beta\gamma}_{ijk} = \frac{\partial^3 U}{\partial x_{i,\alpha} \partial x_{j,\beta} \partial x_{k, \gamma}}
where Phi is the third order force constant tensor.

View File

@ -48,6 +48,7 @@ agilio
Agilio
agni
Agnolin
Ahrens
Ai
Aidan
aij
@ -512,6 +513,8 @@ configfile
configurational
conformational
Connor
conp
conq
ConstMatrix
Contrib
cooperativity
@ -650,6 +653,7 @@ deepskyblue
defgrad
defn
deformable
Deissenbeck
del
delaystep
deleteIDs
@ -693,6 +697,7 @@ DFT
dftb
dh
dhex
di
dia
diag
diagonalization
@ -784,6 +789,7 @@ dtheta
dtshrink
du
dU
Ducastelle
Dudarev
Duin
Dullweber
@ -867,6 +873,7 @@ Eisenforschung
Ejtehadi
El
elaplong
elastance
Electroneg
electronegative
electronegativity
@ -890,6 +897,7 @@ Embt
emi
emol
eN
endian
energetics
energyCorr
eng
@ -979,6 +987,7 @@ evector
Everaers
Evgeny
evirials
ew
ewald
Ewald
excitations
@ -1067,6 +1076,7 @@ fld
floralwhite
Florez
flv
fm
fmackay
fmag
fmass
@ -1246,6 +1256,7 @@ Gubbins
Guenole
Guericke
gui
Guillope
Gumbsch
Gunsteren
Gunzenmuller
@ -1489,6 +1500,7 @@ iva
Ivanov
Ivector
Iw
Iwers
iwyu
ixcm
ixx
@ -1722,6 +1734,7 @@ lebedeva
Lebedeva
Lebold
Lechman
Legrand
Lehoucq
Leimkuhler
Leite
@ -1973,6 +1986,7 @@ mediumvioletred
Mees
Mehl
Mei
Meissner
Melchor
Meloni
Melrose
@ -2001,6 +2015,7 @@ mesoscopic
metadata
metadynamics
Metadynamics
metallicity
Methfessel
methine
Metin
@ -2636,6 +2651,7 @@ Polarizable
polarizables
polarizer
Politano
Politecnico
polyA
polybond
polydisperse
@ -2656,6 +2672,7 @@ postfixed
postfixes
Postma
Potapkin
potentiostat
potin
Pourtois
powderblue
@ -2759,6 +2776,7 @@ qopenmp
qoverride
qqr
qqrd
Qsb
qtb
quadratically
quadrupolar
@ -2794,6 +2812,7 @@ Randisi
randomizations
rann
RANN
Rapetti
Raphson
Rappe
Ravelo
@ -2929,6 +2948,7 @@ Rmin
RMS
rmsd
rnage
rng
rNEMD
ro
Rochus
@ -2939,6 +2959,7 @@ Rohart
Ronchetti
Ronevich
Rosati
Rosato
Rosenberger
Rossky
rosybrown
@ -3003,6 +3024,7 @@ Scalable
scalexy
scalexz
scaleyz
Scalfi
Schaik
Schilfgarde
Schimansky
@ -3115,6 +3137,7 @@ smallbig
smallint
Smallint
smallsmall
smatb
smd
SMD
smi
@ -3150,6 +3173,7 @@ SPH
Spickermann
splined
spparks
Sprik
Springer
springgreen
spx
@ -3383,6 +3407,7 @@ toolchain
topologies
Toporov
Torder
Torino
torsions
Tosi
Toukmaji
@ -3754,6 +3779,7 @@ ylat
ylo
ymax
ymin
yml
Yoshida
ys
ysu

View File

@ -136,5 +136,6 @@ variable C46 equal v_F46+v_B[20]
variable C56 equal v_F56+v_B[21]
thermo ${nthermo}
thermo_style custom step temp pe press density f_avt f_avp f_avpe v_F11 v_F22 v_F33 v_F44 v_F55 v_F66 v_F12 v_F13 v_F23 v_B[1] v_B[2] v_B[3] v_B[4] v_B[5] v_B[6] v_B[7] v_B[8] v_B[12]
thermo_style custom step temp pe press density f_avt f_avp f_avpe v_F11 v_F22 v_F33 v_F44 v_F55 v_F66 v_F12 v_F13 v_F23 v_B[*8] v_B[12]
thermo_modify norm no

View File

@ -0,0 +1,27 @@
These examples demonstrate the use of the ELECTRODE package for constant potential molecular dynamics.
planar/
au-vac.data -- gold electrodes with vacuum
in.planar* -- comparison of gold electrodes with vacuum to theoretical capacitance of planar capacitor
-- 5x, further labeled by long-range solver (ewald / pppm) and boundary correction (ew2d / ew3dc / ffield)
-- the pppm-ew2d combination would not give correct results and will throw an error if selected
test.sh -- run all in.planar files and check charge at 1.2V and %difference from theoretical (last column)
graph-il/
graph-il.data -- graphene electrodes with electrolyte (coarse-grained BMIm-PF6)
in.conp -- reference run at constant potential
in.etypes -- type-based smart neighborlists
in.ffield -- finite field method with fully periodic cell
in.ramp -- equal-style ramping potential difference
in.conq -- constrained electrode total charges
in.conq2 -- constrained electrode total charges via dynamically-set potentials
in.thermo -- thermalize electrolyte with thermopotentiostat instead of NVT
au-aq/
au-aq.data -- gold electrodes with electrolyte (SPC water + NaCl)
in.ffield -- finite field method with fully periodic cell
in.tf -- Thomas-Fermi metallicity model with more delocalized charges
# future work:
# in.cylinder -- comparison of carbon nanotube to theoretical induced charge for charge near circular conductor

View File

@ -0,0 +1 @@
log.lammps*

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
# electrodes with constant potential using finite field
# for z-periodic gold-saline electrochemical cell
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot
run 500

View File

@ -0,0 +1,15 @@
# electrodes with constant potential using finite field
# for z-periodic gold-saline electrochemical cell
# using Thomas-Fermi metallicity model: electrode q and qz will be
# smaller because of more delocalized charge
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7
fix_modify conp tf 6 1.0 18.1715745
fix_modify conp tf 7 1.0 18.1715745
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot
run 500

View File

@ -0,0 +1,150 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential using finite field
# for z-periodic gold-saline electrochemical cell
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 15
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
read_data "data.au-aq"
Reading data file ...
orthogonal box = (0 0 0) to (36.629993 36.629993 107.95213)
1 by 1 by 1 MPI processor grid
reading atoms ...
9798 atoms
reading velocities ...
9798 velocities
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
4320 bonds
reading angles ...
2160 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.002 seconds
read_data CPU = 0.051 seconds
group bot type 6
1620 atoms in group bot
group top type 7
1620 atoms in group top
group SPC type 1 2 3
6480 atoms in group SPC
group electrolyte type 1 2 3 4 5
6558 atoms in group electrolyte
fix nvt electrolyte nvt temp 298.0 298.0 241
fix shake SPC shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
2160 = # of frozen angles
find clusters CPU = 0.002 seconds
variable q atom q
variable qz atom q*(z-lz/2)
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute qztop top reduce sum v_qz
compute qzbot bot reduce sum v_qz
compute ctemp electrolyte temp
fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7
3240 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.24017705
grid = 54 54 120
stencil order = 5
estimated absolute RMS force accuracy = 3.6312561e-05
estimated relative force accuracy = 1.093542e-07
using double precision MKL FFT
3d grid and FFT values/proc = 472567 349920
generated 21 of 21 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 = 17
ghost atom cutoff = 17
binsize = 8.5, bins = 5 5 13
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 194.6 | 194.6 | 194.6 Mbytes
Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot
0 171.61215 298.06731 -39212.819 -35306.164 4.1391573 -4.1391573 78.718381 131.56372
50 147.03139 255.37383 -39870.139 -36523.051 4.1312167 -4.1312167 78.563872 131.30255
100 149.89027 260.33932 -39878.859 -36466.689 4.0217834 -4.0217834 76.482548 127.82573
150 151.7382 263.54893 -39873.178 -36418.942 4.0469977 -4.0469977 76.967548 128.59855
200 151.7508 263.57081 -39827.015 -36372.492 4.1830375 -4.1830375 79.554159 132.93925
250 152.61146 265.06566 -39791.293 -36317.177 4.1835865 -4.1835865 79.56665 132.97185
300 153.51486 266.63475 -39751.841 -36257.16 4.1571861 -4.1571861 79.061431 132.12905
350 156.35115 271.561 -39754.955 -36195.708 4.3498059 -4.3498059 82.720202 138.28678
400 156.26118 271.40474 -39690.781 -36133.582 4.3444079 -4.3444079 82.619396 138.11873
450 158.54164 275.36558 -39681.083 -36071.97 4.2020488 -4.2020488 79.912674 133.55185
500 161.40138 280.33258 -39684.185 -36009.972 4.3021924 -4.3021924 81.807527 136.7464
Loop time of 246.197 on 1 procs for 500 steps with 9798 atoms
Performance: 0.175 ns/day, 136.776 hours/ns, 2.031 timesteps/s
356.3% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 105.64 | 105.64 | 105.64 | 0.0 | 42.91
Bond | 0.0010592 | 0.0010592 | 0.0010592 | 0.0 | 0.00
Kspace | 37.643 | 37.643 | 37.643 | 0.0 | 15.29
Neigh | 5.8827 | 5.8827 | 5.8827 | 0.0 | 2.39
Comm | 0.18181 | 0.18181 | 0.18181 | 0.0 | 0.07
Output | 0.0055762 | 0.0055762 | 0.0055762 | 0.0 | 0.00
Modify | 96.78 | 96.78 | 96.78 | 0.0 | 39.31
Other | | 0.06346 | | | 0.03
Nlocal: 9798 ave 9798 max 9798 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 31695 ave 31695 max 31695 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 8.25614e+06 ave 8.25614e+06 max 8.25614e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 8256142
Ave neighs/atom = 842.63544
Ave special neighs/atom = 1.3227189
Neighbor list builds = 22
Dangerous builds = 0
Total wall time: 0:19:39

View File

@ -0,0 +1,151 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential using finite field
# for z-periodic gold-saline electrochemical cell
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 15
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
read_data "data.au-aq"
Reading data file ...
orthogonal box = (0 0 0) to (36.629993 36.629993 107.95213)
2 by 1 by 2 MPI processor grid
reading atoms ...
9798 atoms
reading velocities ...
9798 velocities
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
4320 bonds
reading angles ...
2160 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.002 seconds
read_data CPU = 0.149 seconds
group bot type 6
1620 atoms in group bot
group top type 7
1620 atoms in group top
group SPC type 1 2 3
6480 atoms in group SPC
group electrolyte type 1 2 3 4 5
6558 atoms in group electrolyte
fix nvt electrolyte nvt temp 298.0 298.0 241
fix shake SPC shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
2160 = # of frozen angles
find clusters CPU = 0.003 seconds
variable q atom q
variable qz atom q*(z-lz/2)
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute qztop top reduce sum v_qz
compute qzbot bot reduce sum v_qz
compute ctemp electrolyte temp
fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7
3240 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.24017705
grid = 54 54 120
stencil order = 5
estimated absolute RMS force accuracy = 3.6312561e-05
estimated relative force accuracy = 1.093542e-07
using double precision MKL FFT
3d grid and FFT values/proc = 138958 87480
generated 21 of 21 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 = 17
ghost atom cutoff = 17
binsize = 8.5, bins = 5 5 13
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 118.1 | 120.6 | 123.1 Mbytes
Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot
0 171.61215 298.06731 -39212.819 -35306.164 4.1391573 -4.1391573 78.718381 131.56372
50 147.03139 255.37383 -39870.139 -36523.051 4.1312167 -4.1312167 78.563872 131.30255
100 149.89027 260.33932 -39878.859 -36466.689 4.0217834 -4.0217834 76.482548 127.82573
150 151.7382 263.54893 -39873.178 -36418.942 4.0469977 -4.0469977 76.967548 128.59855
200 151.7508 263.57081 -39827.015 -36372.492 4.1830375 -4.1830375 79.554159 132.93925
250 152.61146 265.06566 -39791.293 -36317.177 4.1835865 -4.1835865 79.56665 132.97185
300 153.51486 266.63475 -39751.841 -36257.16 4.1571861 -4.1571861 79.061431 132.12905
350 156.35115 271.561 -39754.955 -36195.708 4.3498059 -4.3498059 82.7202 138.28678
400 156.26118 271.40474 -39690.781 -36133.582 4.3444079 -4.3444079 82.619398 138.11873
450 158.54163 275.36558 -39681.083 -36071.97 4.2020488 -4.2020488 79.912675 133.55185
500 161.40138 280.33257 -39684.185 -36009.972 4.3021924 -4.3021924 81.807527 136.7464
Loop time of 111.902 on 4 procs for 500 steps with 9798 atoms
Performance: 0.386 ns/day, 62.168 hours/ns, 4.468 timesteps/s
97.2% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 21.816 | 31.136 | 40.866 | 166.5 | 27.82
Bond | 0.00073413 | 0.00080346 | 0.00084203 | 0.0 | 0.00
Kspace | 29.546 | 39.137 | 48.326 | 146.4 | 34.97
Neigh | 2.5867 | 2.5872 | 2.5877 | 0.0 | 2.31
Comm | 0.33289 | 0.33603 | 0.33791 | 0.3 | 0.30
Output | 0.0022537 | 0.0030028 | 0.005192 | 2.3 | 0.00
Modify | 38.498 | 38.635 | 38.77 | 2.2 | 34.53
Other | | 0.06679 | | | 0.06
Nlocal: 2449.5 ave 2908 max 2012 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 19345.5 ave 20244 max 18492 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Neighs: 2.06404e+06 ave 2.7528e+06 max 1.40672e+06 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 8256142
Ave neighs/atom = 842.63544
Ave special neighs/atom = 1.3227189
Neighbor list builds = 22
Dangerous builds = 0
Total wall time: 0:07:48

View File

@ -0,0 +1,154 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential using finite field
# for z-periodic gold-saline electrochemical cell
# using Thomas-Fermi metallicity model: electrode q and qz will be
# smaller because of more delocalized charge
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 15
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
read_data "data.au-aq"
Reading data file ...
orthogonal box = (0 0 0) to (36.629993 36.629993 107.95213)
1 by 1 by 1 MPI processor grid
reading atoms ...
9798 atoms
reading velocities ...
9798 velocities
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
4320 bonds
reading angles ...
2160 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.010 seconds
read_data CPU = 0.115 seconds
group bot type 6
1620 atoms in group bot
group top type 7
1620 atoms in group top
group SPC type 1 2 3
6480 atoms in group SPC
group electrolyte type 1 2 3 4 5
6558 atoms in group electrolyte
fix nvt electrolyte nvt temp 298.0 298.0 241
fix shake SPC shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
2160 = # of frozen angles
find clusters CPU = 0.010 seconds
variable q atom q
variable qz atom q*(z-lz/2)
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute qztop top reduce sum v_qz
compute qzbot bot reduce sum v_qz
compute ctemp electrolyte temp
fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7
3240 atoms in group conp_group
fix_modify conp tf 6 1.0 18.1715745
fix_modify conp tf 7 1.0 18.1715745
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.24017705
grid = 54 54 120
stencil order = 5
estimated absolute RMS force accuracy = 3.6312561e-05
estimated relative force accuracy = 1.093542e-07
using double precision MKL FFT
3d grid and FFT values/proc = 472567 349920
generated 21 of 21 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 = 17
ghost atom cutoff = 17
binsize = 8.5, bins = 5 5 13
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 194.6 | 194.6 | 194.6 Mbytes
Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot
0 171.61215 298.06731 -39190.106 -35283.45 4.0804484 -4.0804484 79.075127 131.20697
50 147.14308 255.56782 -39849.964 -36500.334 3.9990346 -3.9990346 77.497181 128.57759
100 149.94935 260.44194 -39857.533 -36444.019 3.8613914 -3.8613914 74.82985 124.15315
150 151.95924 263.93285 -39855.567 -36396.299 3.8677064 -3.8677064 74.957279 124.33201
200 151.66737 263.42591 -39802.585 -36349.961 3.99842 -3.99842 77.491015 128.54496
250 152.36874 264.64408 -39763.306 -36294.716 3.9925863 -3.9925863 77.379445 128.37226
300 153.83916 267.19802 -39737.075 -36235.012 3.94995 -3.94995 76.553896 127.00395
350 155.88897 270.75827 -39722.265 -36173.539 4.0598524 -4.0598524 78.679643 130.5394
400 156.51993 271.85415 -39674.759 -36111.669 4.1312899 -4.1312899 80.060369 132.83599
450 160.21339 278.26919 -39697.962 -36050.793 3.9068098 -3.9068098 75.713484 125.59216
500 161.63639 280.74075 -39669.412 -35989.849 3.9261656 -3.9261656 76.0806 126.22255
Loop time of 280.183 on 1 procs for 500 steps with 9798 atoms
Performance: 0.154 ns/day, 155.657 hours/ns, 1.785 timesteps/s
341.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 119.69 | 119.69 | 119.69 | 0.0 | 42.72
Bond | 0.0010952 | 0.0010952 | 0.0010952 | 0.0 | 0.00
Kspace | 42.137 | 42.137 | 42.137 | 0.0 | 15.04
Neigh | 6.5403 | 6.5403 | 6.5403 | 0.0 | 2.33
Comm | 0.19411 | 0.19411 | 0.19411 | 0.0 | 0.07
Output | 0.0053644 | 0.0053644 | 0.0053644 | 0.0 | 0.00
Modify | 111.54 | 111.54 | 111.54 | 0.0 | 39.81
Other | | 0.07244 | | | 0.03
Nlocal: 9798 ave 9798 max 9798 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 31718 ave 31718 max 31718 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 8.25685e+06 ave 8.25685e+06 max 8.25685e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 8256852
Ave neighs/atom = 842.7079
Ave special neighs/atom = 1.3227189
Neighbor list builds = 23
Dangerous builds = 0
Total wall time: 0:21:11

View File

@ -0,0 +1,155 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential using finite field
# for z-periodic gold-saline electrochemical cell
# using Thomas-Fermi metallicity model: electrode q and qz will be
# smaller because of more delocalized charge
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 15
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
read_data "data.au-aq"
Reading data file ...
orthogonal box = (0 0 0) to (36.629993 36.629993 107.95213)
2 by 1 by 2 MPI processor grid
reading atoms ...
9798 atoms
reading velocities ...
9798 velocities
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
4320 bonds
reading angles ...
2160 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.002 seconds
read_data CPU = 0.091 seconds
group bot type 6
1620 atoms in group bot
group top type 7
1620 atoms in group top
group SPC type 1 2 3
6480 atoms in group SPC
group electrolyte type 1 2 3 4 5
6558 atoms in group electrolyte
fix nvt electrolyte nvt temp 298.0 298.0 241
fix shake SPC shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
2160 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
variable qz atom q*(z-lz/2)
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute qztop top reduce sum v_qz
compute qzbot bot reduce sum v_qz
compute ctemp electrolyte temp
fix conp bot electrode/conp -1.0 1.805132 couple top 1.0 symm on ffield yes etypes 6*7
3240 atoms in group conp_group
fix_modify conp tf 6 1.0 18.1715745
fix_modify conp tf 7 1.0 18.1715745
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qtop c_qbot c_qztop c_qzbot
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.24017705
grid = 54 54 120
stencil order = 5
estimated absolute RMS force accuracy = 3.6312561e-05
estimated relative force accuracy = 1.093542e-07
using double precision MKL FFT
3d grid and FFT values/proc = 138958 87480
generated 21 of 21 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 = 17
ghost atom cutoff = 17
binsize = 8.5, bins = 5 5 13
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 118.1 | 120.6 | 123.1 Mbytes
Step Temp c_ctemp E_pair TotEng c_qtop c_qbot c_qztop c_qzbot
0 171.61215 298.06731 -39190.106 -35283.45 4.0804484 -4.0804484 79.075127 131.20697
50 147.14308 255.56782 -39849.964 -36500.334 3.9990346 -3.9990346 77.497181 128.57759
100 149.94935 260.44194 -39857.533 -36444.019 3.8613914 -3.8613914 74.82985 124.15315
150 151.95924 263.93285 -39855.567 -36396.299 3.8677064 -3.8677064 74.957279 124.33201
200 151.66737 263.42591 -39802.585 -36349.961 3.99842 -3.99842 77.491015 128.54496
250 152.36874 264.64408 -39763.306 -36294.716 3.9925863 -3.9925863 77.379445 128.37226
300 153.83916 267.19802 -39737.075 -36235.012 3.94995 -3.94995 76.553896 127.00395
350 155.88897 270.75827 -39722.265 -36173.539 4.0598524 -4.0598524 78.679643 130.5394
400 156.51993 271.85415 -39674.759 -36111.669 4.1312899 -4.1312899 80.060369 132.83599
450 160.21339 278.26919 -39697.962 -36050.793 3.9068098 -3.9068098 75.713485 125.59216
500 161.63639 280.74075 -39669.412 -35989.849 3.9261654 -3.9261654 76.080597 126.22255
Loop time of 110.716 on 4 procs for 500 steps with 9798 atoms
Performance: 0.390 ns/day, 61.509 hours/ns, 4.516 timesteps/s
97.2% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 21.17 | 30.449 | 39.65 | 164.9 | 27.50
Bond | 0.0007313 | 0.00077537 | 0.00081477 | 0.0 | 0.00
Kspace | 29.854 | 38.911 | 48.058 | 143.8 | 35.14
Neigh | 2.7206 | 2.7213 | 2.722 | 0.0 | 2.46
Comm | 0.33023 | 0.33225 | 0.33384 | 0.2 | 0.30
Output | 0.0024528 | 0.0027565 | 0.0035754 | 0.9 | 0.00
Modify | 38.091 | 38.233 | 38.365 | 2.1 | 34.53
Other | | 0.06636 | | | 0.06
Nlocal: 2449.5 ave 2908 max 2017 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 19351.2 ave 20266 max 18479 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Neighs: 2.06421e+06 ave 2.7551e+06 max 1.40237e+06 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 8256853
Ave neighs/atom = 842.708
Ave special neighs/atom = 1.3227189
Neighbor list builds = 23
Dangerous builds = 0
Total wall time: 0:08:22

View File

@ -0,0 +1,29 @@
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 15
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
read_data "data.au-aq"
group bot type 6
group top type 7
group SPC type 1 2 3
group electrolyte type 1 2 3 4 5
fix nvt electrolyte nvt temp 298.0 298.0 241
fix shake SPC shake 1e-4 20 0 b 1 2 a 1
variable q atom q
variable qz atom q*(z-lz/2)
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute qztop top reduce sum v_qz
compute qzbot bot reduce sum v_qz
compute ctemp electrolyte temp

View File

@ -0,0 +1 @@
log.lammps*

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
# electrodes with constant potential
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
kspace_modify slab 3.0
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500

View File

@ -0,0 +1,18 @@
# electrodes with constrained total charges
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
kspace_modify slab 3.0
fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes 5 # conq doesn't take symm option
# ask fix conq to output electrode potentials to internal variables
variable vbot internal 0.0
variable vtop internal 0.0
fix_modify conq set v bot vbot
fix_modify conq set v top vtop
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop
run 500

View File

@ -0,0 +1,35 @@
# electrodes with constrained total charges imposed from dynamically computed potentials
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
kspace_modify slab 3.0
fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes 5
# get the four entries of electrode elastance matrix
variable me00 internal 0.0
variable me01 internal 0.0
variable me10 internal 0.0
variable me11 internal 0.0
fix_modify conp set me bot bot me00
fix_modify conp set me bot top me01
fix_modify conp set me top bot me10
fix_modify conp set me top top me11
# get the 0V charges (qsb), and excess charge required to reach preset total charges
variable qsb_bot internal 0.0
variable qsb_top internal 0.0
fix_modify conp set qsb bot qsb_bot
fix_modify conp set qsb top qsb_top
variable qex_bot equal -1.0-v_qsb_bot # difference between desired and 0V charge
variable qex_top equal 1.0-v_qsb_top # difference between desired and 0V charge
# calculate imposed potential as elastance * excess charge
# note: fix will wait until the run setup to look for its potential variables
variable vbot equal v_me00*v_qex_bot+v_me01*v_qex_top
variable vtop equal v_me10*v_qex_bot+v_me11*v_qex_top
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop
run 500

View File

@ -0,0 +1,12 @@
# electrodes with constant potential and smart neighborlists
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
kspace_modify slab 3.0
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500

View File

@ -0,0 +1,11 @@
# electrodes with constant potential using finite field
# for z-periodic graphene-ionic liquid supercapacitor
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 ffield yes
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500

View File

@ -0,0 +1,13 @@
# electrodes with equal-style ramped (electrode-)constant potential
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
kspace_modify slab 3.0
variable v equal ramp(2,4)
fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes 5
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_v
run 500

View File

@ -0,0 +1,19 @@
# electrodes with thermopotentiostat
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
kspace_modify slab 3.0
unfix nvt # remove NVT thermostat included from "settings.mod"
fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes 5 temp 500 100 7 # temp tau rng
# to compare to regular constant potential, switch previous line to this:
#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes 5 symm on
fix nve electrolyte nve
# note ionic liquid does not reach 500K immediately
# because its thermal response time is finite
# run this about 10k steps (10ps) to reach preset temperature
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500

View File

@ -0,0 +1,142 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 1 by 1 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.036 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 307242 204800
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 57.15 | 57.15 | 57.15 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137191 25137191 0.0085142912 -0.0085142912
50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944
100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517
150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005
200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175
250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257
300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784
350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799
400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435
450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365
500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535
Loop time of 103.439 on 1 procs for 500 steps with 3776 atoms
Performance: 0.418 ns/day, 57.466 hours/ns, 4.834 timesteps/s
393.6% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 19.309 | 19.309 | 19.309 | 0.0 | 18.67
Bond | 0.0018867 | 0.0018867 | 0.0018867 | 0.0 | 0.00
Kspace | 23.047 | 23.047 | 23.047 | 0.0 | 22.28
Neigh | 0.25707 | 0.25707 | 0.25707 | 0.0 | 0.25
Comm | 0.070734 | 0.070734 | 0.070734 | 0.0 | 0.07
Output | 0.0023085 | 0.0023085 | 0.0023085 | 0.0 | 0.00
Modify | 60.73 | 60.73 | 60.73 | 0.0 | 58.71
Other | | 0.01994 | | | 0.02
Nlocal: 3776 ave 3776 max 3776 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 12509 ave 12509 max 12509 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.72633e+06 ave 1.72633e+06 max 1.72633e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1726328
Ave neighs/atom = 457.18432
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:03:10

View File

@ -0,0 +1,143 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 2 by 2 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.014 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 151593 85504
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 23.13 | 26.96 | 30.79 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137191 25137191 0.0085142912 -0.0085142912
50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944
100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517
150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005
200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175
250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257
300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784
350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799
400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435
450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365
500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535
Loop time of 49.6656 on 4 procs for 500 steps with 3776 atoms
Performance: 0.870 ns/day, 27.592 hours/ns, 10.067 timesteps/s
95.1% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 5.968 | 6.1677 | 6.382 | 6.5 | 12.42
Bond | 0.00071151 | 0.00078617 | 0.00090387 | 0.0 | 0.00
Kspace | 17.345 | 17.558 | 17.755 | 3.8 | 35.35
Neigh | 0.10939 | 0.10945 | 0.10948 | 0.0 | 0.22
Comm | 0.15295 | 0.15474 | 0.15699 | 0.4 | 0.31
Output | 0.00074458 | 0.0010336 | 0.0018799 | 1.5 | 0.00
Modify | 25.634 | 25.641 | 25.645 | 0.1 | 51.63
Other | | 0.03276 | | | 0.07
Nlocal: 944 ave 951 max 941 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Nghost: 5923.25 ave 5941 max 5906 min
Histogram: 1 0 0 1 0 0 1 0 0 1
Neighs: 431582 ave 442090 max 419903 min
Histogram: 1 1 0 0 0 0 0 0 0 2
Total # of neighbors = 1726328
Ave neighs/atom = 457.18432
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:01:11

View File

@ -0,0 +1,153 @@
LAMMPS (24 Mar 2022)
# electrodes with constrained total charges
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 1 by 1 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.012 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.000 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes 5 # conq doesn't take symm option
832 atoms in group conp_group
# ask fix conq to output electrode potentials to internal variables
variable vbot internal 0.0
variable vtop internal 0.0
fix_modify conq set v bot vbot
fix_modify conq set v top vtop
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 307242 204800
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conq, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conq, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop
0 0 0 25136984 25136984 -1 1 -9.931852 10.097344
50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514
100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787
150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114
200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694
250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475
300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115
350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811
400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657
450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959
500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261
Loop time of 48.9361 on 1 procs for 500 steps with 3776 atoms
Performance: 0.883 ns/day, 27.187 hours/ns, 10.217 timesteps/s
393.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 17.652 | 17.652 | 17.652 | 0.0 | 36.07
Bond | 0.0010418 | 0.0010418 | 0.0010418 | 0.0 | 0.00
Kspace | 16.566 | 16.566 | 16.566 | 0.0 | 33.85
Neigh | 0.21584 | 0.21584 | 0.21584 | 0.0 | 0.44
Comm | 0.04167 | 0.04167 | 0.04167 | 0.0 | 0.09
Output | 0.0014585 | 0.0014585 | 0.0014585 | 0.0 | 0.00
Modify | 14.445 | 14.445 | 14.445 | 0.0 | 29.52
Other | | 0.0134 | | | 0.03
Nlocal: 3776 ave 3776 max 3776 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 12510 ave 12510 max 12510 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.72559e+06 ave 1.72559e+06 max 1.72559e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1725588
Ave neighs/atom = 456.98835
Ave special neighs/atom = 0.50847458
Neighbor list builds = 6
Dangerous builds = 0
Total wall time: 0:01:43

View File

@ -0,0 +1,154 @@
LAMMPS (24 Mar 2022)
# electrodes with constrained total charges
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 2 by 2 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.020 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conq bot electrode/conq -1.0 1.979 couple top 1.0 etypes 5 # conq doesn't take symm option
832 atoms in group conp_group
# ask fix conq to output electrode potentials to internal variables
variable vbot internal 0.0
variable vtop internal 0.0
fix_modify conq set v bot vbot
fix_modify conq set v top vtop
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 151593 85504
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conq, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conq, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop
0 0 0 25136984 25136984 -1 1 -9.931852 10.097344
50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514
100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787
150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114
200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694
250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475
300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115
350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811
400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657
450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959
500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261
Loop time of 28.8336 on 4 procs for 500 steps with 3776 atoms
Performance: 1.498 ns/day, 16.019 hours/ns, 17.341 timesteps/s
94.1% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 5.7721 | 5.9353 | 6.144 | 6.0 | 20.58
Bond | 0.00057855 | 0.00067043 | 0.00074793 | 0.0 | 0.00
Kspace | 13.485 | 13.694 | 13.857 | 4.0 | 47.49
Neigh | 0.092021 | 0.092044 | 0.092068 | 0.0 | 0.32
Comm | 0.11486 | 0.11638 | 0.11801 | 0.4 | 0.40
Output | 0.00090452 | 0.001109 | 0.0017097 | 1.0 | 0.00
Modify | 8.974 | 8.9761 | 8.978 | 0.1 | 31.13
Other | | 0.01837 | | | 0.06
Nlocal: 944 ave 948 max 940 min
Histogram: 1 0 0 1 0 0 1 0 0 1
Nghost: 5920.5 ave 5941 max 5899 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Neighs: 431397 ave 442329 max 421103 min
Histogram: 2 0 0 0 0 0 0 0 1 1
Total # of neighbors = 1725588
Ave neighs/atom = 456.98835
Ave special neighs/atom = 0.50847458
Neighbor list builds = 6
Dangerous builds = 0
Total wall time: 0:00:51

View File

@ -0,0 +1,170 @@
LAMMPS (24 Mar 2022)
# electrodes with constrained total charges imposed from dynamically computed potentials
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 1 by 1 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.031 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes 5
832 atoms in group conp_group
# get the four entries of electrode elastance matrix
variable me00 internal 0.0
variable me01 internal 0.0
variable me10 internal 0.0
variable me11 internal 0.0
fix_modify conp set me bot bot me00
fix_modify conp set me bot top me01
fix_modify conp set me top bot me10
fix_modify conp set me top top me11
# get the 0V charges (qsb), and excess charge required to reach preset total charges
variable qsb_bot internal 0.0
variable qsb_top internal 0.0
fix_modify conp set qsb bot qsb_bot
fix_modify conp set qsb top qsb_top
variable qex_bot equal -1.0-v_qsb_bot # difference between desired and 0V charge
variable qex_top equal 1.0-v_qsb_top # difference between desired and 0V charge
# calculate imposed potential as elastance * excess charge
# note: fix will wait until the run setup to look for its potential variables
variable vbot equal v_me00*v_qex_bot+v_me01*v_qex_top
variable vtop equal v_me10*v_qex_bot+v_me11*v_qex_top
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 307242 204800
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop
0 0 0 25136984 25136984 -1 1 -9.931852 10.097344
50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514
100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787
150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114
200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694
250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475
300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115
350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811
400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657
450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959
500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261
Loop time of 62.9692 on 1 procs for 500 steps with 3776 atoms
Performance: 0.686 ns/day, 34.983 hours/ns, 7.940 timesteps/s
393.7% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 20.307 | 20.307 | 20.307 | 0.0 | 32.25
Bond | 0.0020074 | 0.0020074 | 0.0020074 | 0.0 | 0.00
Kspace | 23.562 | 23.562 | 23.562 | 0.0 | 37.42
Neigh | 0.26149 | 0.26149 | 0.26149 | 0.0 | 0.42
Comm | 0.059436 | 0.059436 | 0.059436 | 0.0 | 0.09
Output | 0.0023888 | 0.0023888 | 0.0023888 | 0.0 | 0.00
Modify | 18.756 | 18.756 | 18.756 | 0.0 | 29.79
Other | | 0.01897 | | | 0.03
Nlocal: 3776 ave 3776 max 3776 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 12510 ave 12510 max 12510 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.72559e+06 ave 1.72559e+06 max 1.72559e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1725588
Ave neighs/atom = 456.98835
Ave special neighs/atom = 0.50847458
Neighbor list builds = 6
Dangerous builds = 0
Total wall time: 0:02:26

View File

@ -0,0 +1,171 @@
LAMMPS (24 Mar 2022)
# electrodes with constrained total charges imposed from dynamically computed potentials
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 2 by 2 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.019 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conp bot electrode/conp v_vbot 1.979 couple top v_vtop etypes 5
832 atoms in group conp_group
# get the four entries of electrode elastance matrix
variable me00 internal 0.0
variable me01 internal 0.0
variable me10 internal 0.0
variable me11 internal 0.0
fix_modify conp set me bot bot me00
fix_modify conp set me bot top me01
fix_modify conp set me top bot me10
fix_modify conp set me top top me11
# get the 0V charges (qsb), and excess charge required to reach preset total charges
variable qsb_bot internal 0.0
variable qsb_top internal 0.0
fix_modify conp set qsb bot qsb_bot
fix_modify conp set qsb top qsb_top
variable qex_bot equal -1.0-v_qsb_bot # difference between desired and 0V charge
variable qex_top equal 1.0-v_qsb_top # difference between desired and 0V charge
# calculate imposed potential as elastance * excess charge
# note: fix will wait until the run setup to look for its potential variables
variable vbot equal v_me00*v_qex_bot+v_me01*v_qex_top
variable vtop equal v_me10*v_qex_bot+v_me11*v_qex_top
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_vbot v_vtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 151593 85504
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_vbot v_vtop
0 0 0 25136984 25136984 -1 1 -9.931852 10.097344
50 20.206425 72.797911 25136825 25137033 -1 1 -9.4359366 9.5964514
100 55.931663 201.50563 25136587 25137163 -1 1 -8.0440112 8.1861787
150 81.389273 293.22204 25136533 25137371 -1 1 -6.1113109 6.2267114
200 92.867946 334.57639 25136646 25137603 -1 1 -4.1857807 4.2740694
250 97.518304 351.33028 25136809 25137814 -1 1 -2.8383703 2.9101475
300 102.36577 368.79431 25136933 25137987 -1 1 -2.3831643 2.4461115
350 113.66597 409.50566 25136960 25138131 -1 1 -2.7083563 2.7457811
400 122.8443 442.57252 25136991 25138256 -1 1 -3.4311003 3.3941657
450 128.63713 463.44243 25137048 25138373 -1 1 -4.132871 3.9852959
500 131.18361 472.61665 25137142 25138493 -1 1 -4.5104095 4.2567261
Loop time of 33.4031 on 4 procs for 500 steps with 3776 atoms
Performance: 1.293 ns/day, 18.557 hours/ns, 14.969 timesteps/s
94.3% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 7.1262 | 7.3913 | 7.611 | 6.8 | 22.13
Bond | 0.0007191 | 0.00079089 | 0.00087005 | 0.0 | 0.00
Kspace | 15.139 | 15.358 | 15.623 | 4.7 | 45.98
Neigh | 0.10374 | 0.10377 | 0.10383 | 0.0 | 0.31
Comm | 0.14245 | 0.14353 | 0.14563 | 0.3 | 0.43
Output | 0.0012987 | 0.0015671 | 0.0022434 | 1.0 | 0.00
Modify | 10.381 | 10.383 | 10.384 | 0.0 | 31.08
Other | | 0.02134 | | | 0.06
Nlocal: 944 ave 948 max 940 min
Histogram: 1 0 0 1 0 0 1 0 0 1
Nghost: 5920.5 ave 5941 max 5899 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Neighs: 431397 ave 442329 max 421103 min
Histogram: 2 0 0 0 0 0 0 0 1 1
Total # of neighbors = 1725588
Ave neighs/atom = 456.98835
Ave special neighs/atom = 0.50847458
Neighbor list builds = 6
Dangerous builds = 0
Total wall time: 0:01:01

View File

@ -0,0 +1,147 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential and smart neighborlists
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 1 by 1 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.024 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 307242 204800
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137191 25137191 0.0085142912 -0.0085142912
50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944
100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517
150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005
200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175
250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257
300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784
350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799
400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435
450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365
500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535
Loop time of 63.497 on 1 procs for 500 steps with 3776 atoms
Performance: 0.680 ns/day, 35.276 hours/ns, 7.874 timesteps/s
393.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 20.628 | 20.628 | 20.628 | 0.0 | 32.49
Bond | 0.0019309 | 0.0019309 | 0.0019309 | 0.0 | 0.00
Kspace | 23.61 | 23.61 | 23.61 | 0.0 | 37.18
Neigh | 0.28156 | 0.28156 | 0.28156 | 0.0 | 0.44
Comm | 0.061191 | 0.061191 | 0.061191 | 0.0 | 0.10
Output | 0.0022666 | 0.0022666 | 0.0022666 | 0.0 | 0.00
Modify | 18.891 | 18.891 | 18.891 | 0.0 | 29.75
Other | | 0.02047 | | | 0.03
Nlocal: 3776 ave 3776 max 3776 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 12509 ave 12509 max 12509 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.72633e+06 ave 1.72633e+06 max 1.72633e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1726328
Ave neighs/atom = 457.18432
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:02:24

View File

@ -0,0 +1,148 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential and smart neighborlists
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 2 by 2 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.016 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 151593 85504
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137191 25137191 0.0085142912 -0.0085142912
50 17.83755 64.26354 25137031 25137214 0.0045923944 -0.0045923944
100 48.393682 174.34846 25136774 25137273 -0.009514517 0.009514517
150 70.421272 253.7075 25136655 25137380 -0.033017005 0.033017005
200 82.204844 296.16031 25136667 25137514 -0.063668175 0.063668175
250 87.54223 315.38937 25136757 25137659 -0.096776257 0.096776257
300 91.704746 330.38571 25136865 25137810 -0.1283784 0.1283784
350 100.36017 361.56871 25136934 25137968 -0.15649799 0.15649799
400 111.37575 401.25467 25136986 25138133 -0.18065435 0.18065435
450 121.79848 438.80476 25137043 25138298 -0.19979365 0.19979365
500 126.95916 457.39718 25137145 25138453 -0.21037535 0.21037535
Loop time of 30.7883 on 4 procs for 500 steps with 3776 atoms
Performance: 1.403 ns/day, 17.105 hours/ns, 16.240 timesteps/s
94.1% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 6.5102 | 6.7303 | 6.9362 | 7.6 | 21.86
Bond | 0.00064504 | 0.00071061 | 0.000779 | 0.0 | 0.00
Kspace | 14.081 | 14.287 | 14.507 | 5.2 | 46.40
Neigh | 0.11831 | 0.11841 | 0.11851 | 0.0 | 0.38
Comm | 0.12216 | 0.12434 | 0.12651 | 0.6 | 0.40
Output | 0.00083347 | 0.0010533 | 0.0017069 | 1.2 | 0.00
Modify | 9.5052 | 9.5071 | 9.5093 | 0.1 | 30.88
Other | | 0.01927 | | | 0.06
Nlocal: 944 ave 951 max 941 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Nghost: 5923.25 ave 5941 max 5906 min
Histogram: 1 0 0 1 0 0 1 0 0 1
Neighs: 431582 ave 442090 max 419903 min
Histogram: 1 1 0 0 0 0 0 0 0 2
Total # of neighbors = 1726328
Ave neighs/atom = 457.18432
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:00:56

View File

@ -0,0 +1,146 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential using finite field
# for z-periodic graphene-ionic liquid supercapacitor
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 1 by 1 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.022 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 ffield yes
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20949995
grid = 32 32 90
stencil order = 5
estimated absolute RMS force accuracy = 3.5014341e-05
estimated relative force accuracy = 1.0544465e-07
using double precision MKL FFT
3d grid and FFT values/proc = 147537 92160
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 49.5 | 49.5 | 49.5 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137187 25137187 0.0085209384 -0.0085209384
50 17.837642 64.263873 25137027 25137211 0.0045513522 -0.0045513522
100 48.393984 174.34955 25136771 25137269 -0.0097291786 0.0097291786
150 70.421823 253.70949 25136651 25137377 -0.033522793 0.033522793
200 82.205535 296.1628 25136664 25137510 -0.064555648 0.064555648
250 87.542843 315.39158 25136754 25137655 -0.098075546 0.098075546
300 91.705733 330.38927 25136862 25137806 -0.13006751 0.13006751
350 100.36128 361.5727 25136930 25137964 -0.15852814 0.15852814
400 111.37586 401.25505 25136982 25138129 -0.18297207 0.18297207
450 121.79814 438.80351 25137039 25138294 -0.2023394 0.2023394
500 126.95882 457.39597 25137142 25138449 -0.21305221 0.21305221
Loop time of 36.7618 on 1 procs for 500 steps with 3776 atoms
Performance: 1.175 ns/day, 20.423 hours/ns, 13.601 timesteps/s
393.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 19.737 | 19.737 | 19.737 | 0.0 | 53.69
Bond | 0.00092668 | 0.00092668 | 0.00092668 | 0.0 | 0.00
Kspace | 6.5854 | 6.5854 | 6.5854 | 0.0 | 17.91
Neigh | 0.33914 | 0.33914 | 0.33914 | 0.0 | 0.92
Comm | 0.090124 | 0.090124 | 0.090124 | 0.0 | 0.25
Output | 0.0013975 | 0.0013975 | 0.0013975 | 0.0 | 0.00
Modify | 9.9834 | 9.9834 | 9.9834 | 0.0 | 27.16
Other | | 0.02455 | | | 0.07
Nlocal: 3776 ave 3776 max 3776 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 23654 ave 23654 max 23654 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.86369e+06 ave 1.86369e+06 max 1.86369e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1863691
Ave neighs/atom = 493.56224
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:01:39

View File

@ -0,0 +1,147 @@
LAMMPS (24 Mar 2022)
# electrodes with constant potential using finite field
# for z-periodic graphene-ionic liquid supercapacitor
boundary p p p # ffield uses periodic z-boundary and no slab
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 2 by 2 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.016 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
fix conp bot electrode/conp -1.0 1.979 couple top 1.0 symm on etypes 5 ffield yes
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20949995
grid = 32 32 90
stencil order = 5
estimated absolute RMS force accuracy = 3.5014341e-05
estimated relative force accuracy = 1.0544465e-07
using double precision MKL FFT
3d grid and FFT values/proc = 46644 23552
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 21.96 | 22.27 | 22.77 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137187 25137187 0.0085209384 -0.0085209384
50 17.837642 64.263873 25137027 25137211 0.0045513522 -0.0045513522
100 48.393984 174.34955 25136771 25137269 -0.0097291786 0.0097291786
150 70.421823 253.70949 25136651 25137377 -0.033522793 0.033522793
200 82.205535 296.1628 25136664 25137510 -0.064555648 0.064555648
250 87.542843 315.39158 25136754 25137655 -0.098075546 0.098075546
300 91.705733 330.38927 25136862 25137806 -0.13006751 0.13006751
350 100.36128 361.5727 25136930 25137964 -0.15852814 0.15852814
400 111.37586 401.25505 25136982 25138129 -0.18297207 0.18297207
450 121.79814 438.80351 25137039 25138294 -0.2023394 0.2023394
500 126.95882 457.39597 25137142 25138449 -0.21305221 0.21305221
Loop time of 19.3932 on 4 procs for 500 steps with 3776 atoms
Performance: 2.228 ns/day, 10.774 hours/ns, 25.782 timesteps/s
96.3% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 7.1247 | 7.6399 | 8.1323 | 13.3 | 39.39
Bond | 0.00072445 | 0.00077581 | 0.00085933 | 0.0 | 0.00
Kspace | 5.098 | 5.5905 | 6.1036 | 15.6 | 28.83
Neigh | 0.145 | 0.14517 | 0.14532 | 0.0 | 0.75
Comm | 0.24683 | 0.25127 | 0.25907 | 1.0 | 1.30
Output | 0.00084146 | 0.0011298 | 0.0019741 | 1.5 | 0.01
Modify | 5.6957 | 5.7129 | 5.729 | 0.6 | 29.46
Other | | 0.05153 | | | 0.27
Nlocal: 944 ave 951 max 941 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Nghost: 10122.8 ave 10136 max 10101 min
Histogram: 1 0 0 0 0 0 1 0 1 1
Neighs: 465923 ave 510116 max 422901 min
Histogram: 1 0 1 0 0 0 0 1 0 1
Total # of neighbors = 1863691
Ave neighs/atom = 493.56224
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:00:44

View File

@ -0,0 +1,148 @@
LAMMPS (24 Mar 2022)
# electrodes with equal-style ramped (electrode-)constant potential
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 1 by 1 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.014 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
variable v equal ramp(2,4)
fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes 5
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_v
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 307242 204800
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_v
0 0 0 25137191 25137191 0.0085142912 -0.0085142912 2
50 17.839699 64.271283 25137031 25137214 -0.0067894391 0.0067894391 2.2
100 48.411618 174.41308 25136774 25137273 -0.033422174 0.033422174 2.4
150 70.478909 253.91515 25136654 25137380 -0.071583953 0.071583953 2.6
200 82.322716 296.58497 25136666 25137513 -0.11962095 0.11962095 2.8
250 87.739905 316.10153 25136754 25137658 -0.17281469 0.17281469 3
300 91.974584 331.35786 25136861 25137808 -0.22657123 0.22657123 3.2
350 100.73048 362.90284 25136928 25137965 -0.27817429 0.27817429 3.4
400 111.78597 402.73256 25136977 25138129 -0.32659395 0.32659395 3.6
450 122.14181 440.04167 25137033 25138291 -0.37054363 0.37054363 3.8
500 127.32331 458.70912 25137133 25138444 -0.40653009 0.40653009 4
Loop time of 50.8569 on 1 procs for 500 steps with 3776 atoms
Performance: 0.849 ns/day, 28.254 hours/ns, 9.831 timesteps/s
393.5% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 18.166 | 18.166 | 18.166 | 0.0 | 35.72
Bond | 0.00091918 | 0.00091918 | 0.00091918 | 0.0 | 0.00
Kspace | 17.267 | 17.267 | 17.267 | 0.0 | 33.95
Neigh | 0.27635 | 0.27635 | 0.27635 | 0.0 | 0.54
Comm | 0.044714 | 0.044714 | 0.044714 | 0.0 | 0.09
Output | 0.0018345 | 0.0018345 | 0.0018345 | 0.0 | 0.00
Modify | 15.086 | 15.086 | 15.086 | 0.0 | 29.66
Other | | 0.01409 | | | 0.03
Nlocal: 3776 ave 3776 max 3776 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 12511 ave 12511 max 12511 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.72628e+06 ave 1.72628e+06 max 1.72628e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1726280
Ave neighs/atom = 457.17161
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:01:50

View File

@ -0,0 +1,149 @@
LAMMPS (24 Mar 2022)
# electrodes with equal-style ramped (electrode-)constant potential
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 2 by 2 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.024 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
variable v equal ramp(2,4)
fix conp bot electrode/conp 0.0 1.979 couple top v_v symm on etypes 5
832 atoms in group conp_group
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop v_v
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 151593 85504
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/conp, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop v_v
0 0 0 25137191 25137191 0.0085142912 -0.0085142912 2
50 17.839699 64.271283 25137031 25137214 -0.0067894391 0.0067894391 2.2
100 48.411618 174.41308 25136774 25137273 -0.033422174 0.033422174 2.4
150 70.478909 253.91515 25136654 25137380 -0.071583953 0.071583953 2.6
200 82.322716 296.58497 25136666 25137513 -0.11962095 0.11962095 2.8
250 87.739905 316.10153 25136754 25137658 -0.17281469 0.17281469 3
300 91.974584 331.35786 25136861 25137808 -0.22657123 0.22657123 3.2
350 100.73048 362.90284 25136928 25137965 -0.27817429 0.27817429 3.4
400 111.78597 402.73256 25136977 25138129 -0.32659395 0.32659395 3.6
450 122.14181 440.04167 25137033 25138291 -0.37054363 0.37054363 3.8
500 127.32331 458.70912 25137133 25138444 -0.40653009 0.40653009 4
Loop time of 31.7642 on 4 procs for 500 steps with 3776 atoms
Performance: 1.360 ns/day, 17.647 hours/ns, 15.741 timesteps/s
94.1% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 6.7949 | 7.0359 | 7.3092 | 7.9 | 22.15
Bond | 0.00069874 | 0.00073747 | 0.00077928 | 0.0 | 0.00
Kspace | 14.375 | 14.648 | 14.89 | 5.5 | 46.12
Neigh | 0.12057 | 0.1206 | 0.12062 | 0.0 | 0.38
Comm | 0.13412 | 0.13439 | 0.13483 | 0.1 | 0.42
Output | 0.0010019 | 0.0013088 | 0.0020937 | 1.3 | 0.00
Modify | 9.8017 | 9.8025 | 9.8031 | 0.0 | 30.86
Other | | 0.02036 | | | 0.06
Nlocal: 944 ave 951 max 941 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Nghost: 5924.75 ave 5941 max 5910 min
Histogram: 1 0 0 1 0 1 0 0 0 1
Neighs: 431570 ave 442073 max 419253 min
Histogram: 1 1 0 0 0 0 0 0 0 2
Total # of neighbors = 1726280
Ave neighs/atom = 457.17161
Ave special neighs/atom = 0.50847458
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:00:58

View File

@ -0,0 +1,154 @@
LAMMPS (24 Mar 2022)
# electrodes with thermopotentiostat
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 1 by 1 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.002 seconds
read_data CPU = 0.024 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.000 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
unfix nvt # remove NVT thermostat included from "settings.mod"
fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes 5 temp 500 100 7 # temp tau rng
832 atoms in group conp_group
# to compare to regular constant potential, switch previous line to this:
#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes 5 symm on
fix nve electrolyte nve
# note ionic liquid does not reach 500K immediately
# because its thermal response time is finite
# run this about 10k steps (10ps) to reach preset temperature
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 307242 204800
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/thermo, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/thermo, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 56.89 | 56.89 | 56.89 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137187 25137187 0.12767613 -0.12767613
50 16.63971 59.94807 25137031 25137203 0.11714714 -0.11714714
100 40.785523 146.93846 25136782 25137202 0.1278358 -0.1278358
150 53.394067 192.3634 25136654 25137204 0.080257143 -0.080257143
200 56.419019 203.26143 25136624 25137205 0.024756489 -0.024756489
250 54.922935 197.87147 25136640 25137205 -0.024533719 0.024533719
300 52.884861 190.52888 25136660 25137205 -0.066341094 0.066341094
350 52.41676 188.84244 25136666 25137206 -0.089546252 0.089546252
400 54.366979 195.86852 25136646 25137206 -0.10239753 0.10239753
450 54.906542 197.81241 25136642 25137208 -0.099987401 0.099987401
500 54.33841 195.7656 25136642 25137201 -0.21295942 0.21295942
Loop time of 49.9831 on 1 procs for 500 steps with 3776 atoms
Performance: 0.864 ns/day, 27.768 hours/ns, 10.003 timesteps/s
393.3% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 17.01 | 17.01 | 17.01 | 0.0 | 34.03
Bond | 0.0010374 | 0.0010374 | 0.0010374 | 0.0 | 0.00
Kspace | 18.096 | 18.096 | 18.096 | 0.0 | 36.20
Neigh | 0.1828 | 0.1828 | 0.1828 | 0.0 | 0.37
Comm | 0.043856 | 0.043856 | 0.043856 | 0.0 | 0.09
Output | 0.0018373 | 0.0018373 | 0.0018373 | 0.0 | 0.00
Modify | 14.632 | 14.632 | 14.632 | 0.0 | 29.27
Other | | 0.01548 | | | 0.03
Nlocal: 3776 ave 3776 max 3776 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 12504 ave 12504 max 12504 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.72597e+06 ave 1.72597e+06 max 1.72597e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1725966
Ave neighs/atom = 457.08845
Ave special neighs/atom = 0.50847458
Neighbor list builds = 5
Dangerous builds = 0
Total wall time: 0:01:50

View File

@ -0,0 +1,155 @@
LAMMPS (24 Mar 2022)
# electrodes with thermopotentiostat
# for graphene-ionic liquid supercapacitor
boundary p p f # slab calculation
include settings.mod # styles, groups, computes and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
Reading data file ...
orthogonal box = (0 0 -68) to (32.2 34.4 68)
1 by 2 by 2 MPI processor grid
reading atoms ...
3776 atoms
scanning bonds ...
2 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
640 bonds
reading angles ...
320 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
1 = max # of 1-3 neighbors
1 = max # of 1-4 neighbors
2 = max # of special neighbors
special bonds CPU = 0.002 seconds
read_data CPU = 0.025 seconds
group bot molecule 641
416 atoms in group bot
group top molecule 642
416 atoms in group top
group bmi type 1 2 3
960 atoms in group bmi
group electrolyte type 1 2 3 4
1280 atoms in group electrolyte
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
0 = # of size 2 clusters
0 = # of size 3 clusters
0 = # of size 4 clusters
320 = # of frozen angles
find clusters CPU = 0.001 seconds
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp
kspace_modify slab 3.0
unfix nvt # remove NVT thermostat included from "settings.mod"
fix conpthermo bot electrode/thermo -1.0 1.979 couple top 1.0 etypes 5 temp 500 100 7 # temp tau rng
832 atoms in group conp_group
# to compare to regular constant potential, switch previous line to this:
#fix conp bot electrode/conp -1.0 1.979 couple top 1.0 etypes 5 symm on
fix nve electrolyte nve
# note ionic liquid does not reach 500K immediately
# because its thermal response time is finite
# run this about 10k steps (10ps) to reach preset temperature
thermo 50
thermo_style custom step temp c_ctemp epair etotal c_qbot c_qtop
run 500
PPPM/electrode initialization ...
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.20904498
grid = 32 32 200
stencil order = 5
estimated absolute RMS force accuracy = 3.7023506e-05
estimated relative force accuracy = 1.1149519e-07
using double precision MKL FFT
3d grid and FFT values/proc = 151593 85504
generated 10 of 10 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 = 18
ghost atom cutoff = 18
binsize = 9, bins = 4 4 16
3 neighbor lists, perpetual/occasional/extra = 2 1 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/thermo, occasional, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(3) fix electrode/thermo, perpetual, skip from (1)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 23.63 | 27.46 | 31.29 Mbytes
Step Temp c_ctemp E_pair TotEng c_qbot c_qtop
0 0 0 25137187 25137187 0.12767613 -0.12767613
50 16.63971 59.94807 25137031 25137203 0.11714714 -0.11714714
100 40.785523 146.93846 25136782 25137202 0.1278358 -0.1278358
150 53.394067 192.3634 25136654 25137204 0.080257143 -0.080257143
200 56.419019 203.26143 25136624 25137205 0.024756489 -0.024756489
250 54.922935 197.87147 25136640 25137205 -0.024533719 0.024533719
300 52.884861 190.52888 25136660 25137205 -0.066341094 0.066341094
350 52.41676 188.84244 25136666 25137206 -0.089546252 0.089546252
400 54.366979 195.86852 25136646 25137206 -0.10239753 0.10239753
450 54.906542 197.81241 25136642 25137208 -0.099987401 0.099987401
500 54.33841 195.7656 25136642 25137201 -0.21295942 0.21295942
Loop time of 27.6772 on 4 procs for 500 steps with 3776 atoms
Performance: 1.561 ns/day, 15.376 hours/ns, 18.065 timesteps/s
91.7% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 4.6214 | 4.8032 | 4.9546 | 6.5 | 17.35
Bond | 0.0005324 | 0.00060509 | 0.00069468 | 0.0 | 0.00
Kspace | 13.883 | 14.034 | 14.216 | 3.8 | 50.71
Neigh | 0.061704 | 0.061727 | 0.06176 | 0.0 | 0.22
Comm | 0.10101 | 0.10374 | 0.10645 | 0.8 | 0.37
Output | 0.00086818 | 0.0010909 | 0.001715 | 1.1 | 0.00
Modify | 8.65 | 8.6524 | 8.6545 | 0.1 | 31.26
Other | | 0.02055 | | | 0.07
Nlocal: 944 ave 951 max 940 min
Histogram: 1 1 1 0 0 0 0 0 0 1
Nghost: 5918.5 ave 5940 max 5899 min
Histogram: 1 0 1 0 0 0 1 0 0 1
Neighs: 431492 ave 442132 max 419533 min
Histogram: 1 1 0 0 0 0 0 0 0 2
Total # of neighbors = 1725966
Ave neighs/atom = 457.08845
Ave special neighs/atom = 0.50847458
Neighbor list builds = 5
Dangerous builds = 0
Total wall time: 0:00:50

View File

@ -0,0 +1,27 @@
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 16
bond_style harmonic
angle_style harmonic
kspace_style pppm/electrode 1e-7
# kspace_modify in main script because ffield is periodic
read_data "data.graph-il"
group bot molecule 641
group top molecule 642
group bmi type 1 2 3
group electrolyte type 1 2 3 4
fix nvt electrolyte nvt temp 500.0 500.0 100
fix shake bmi shake 1e-4 20 0 b 1 2 a 1
variable q atom q
compute qtop top reduce sum v_q
compute qbot bot reduce sum v_q
compute ctemp electrolyte temp

View File

@ -0,0 +1 @@
log.lammps*

View File

@ -0,0 +1,600 @@
LAMMPS data file via write_data, version 24 Dec 2020, timestep = 0
288 atoms
2 atom types
0.285001 25.325067 xlo xhi
-0.368323 24.671743 ylo yhi
-1.043333 43.303354 zlo zhi
Masses
1 196.966553
2 196.966553
Pair Coeffs # lj/cut/coul/long
1 0 0
2 0 0
Atoms # full
2 1 1 -0.002921 2.086672 2.086672 8 0 0 0
3 1 1 -0.04033 2.086672 0 10.086673 0 1 0
5 1 1 -0.000757 4.173345 0 8 0 1 0
6 1 1 -0.000483 6.260016 2.086672 8 0 0 0
7 1 1 -0.02377 6.260016 0 10.086673 0 1 0
8 1 1 -0.031311 4.173345 2.086672 10.086673 0 0 0
9 1 1 -0.002302 8.346689 0 8 0 1 0
12 1 1 -0.03014 8.346689 2.086672 10.086673 0 0 0
26 1 1 -3e-05 2.086672 6.260016 8 0 0 0
27 1 1 -0.011104 2.086672 4.173345 10.086673 0 0 0
29 1 1 0.000807 4.173345 4.173345 8 0 0 0
30 1 1 -0.000974 6.260016 6.260016 8 0 0 0
31 1 1 -0.017105 6.260016 4.173345 10.086673 0 0 0
32 1 1 -0.010937 4.173345 6.260016 10.086673 0 0 0
33 1 1 0.001587 8.346689 4.173345 8 0 0 0
36 1 1 0.004269 8.346689 6.260016 10.086673 0 0 0
10 1 1 -0.000534 10.433361 2.086672 8 0 0 0
11 1 1 -0.006246 10.433361 0 10.086673 0 1 0
13 1 1 0.000222 12.520033 0 8 0 1 0
14 1 1 -0.000958 14.606705 2.086672 8 0 0 0
15 1 1 -0.024586 14.606705 0 10.086673 0 1 0
16 1 1 -0.032305 12.520033 2.086672 10.086673 0 0 0
17 1 1 -0.001102 16.693378 0 8 0 1 0
20 1 1 -0.015815 16.693378 2.086672 10.086673 0 0 0
34 1 1 0.001733 10.433361 6.260016 8 0 0 0
35 1 1 -0.001065 10.433361 4.173345 10.086673 0 0 0
37 1 1 -0.000623 12.520033 4.173345 8 0 0 0
38 1 1 -0.003876 14.606705 6.260016 8 0 0 0
39 1 1 -0.030292 14.606705 4.173345 10.086673 0 0 0
40 1 1 -0.024863 12.520033 6.260016 10.086673 0 0 0
41 1 1 -0.000446 16.693378 4.173345 8 0 0 0
44 1 1 -0.044616 16.693378 6.260016 10.086673 0 0 0
1 1 1 -0.00023 25.040066 0 8 0 1 0
4 1 1 -0.012754 25.040066 2.086672 10.086673 0 0 0
18 1 1 0.00046 18.780048 2.086672 8 0 0 0
19 1 1 -0.011993 18.780048 0 10.086673 0 1 0
21 1 1 0.001654 20.86672 0 8 0 1 0
22 1 1 0.000999 22.953394 2.086672 8 0 0 0
23 1 1 -0.010485 22.953394 0 10.086673 0 1 0
24 1 1 -0.038444 20.86672 2.086672 10.086673 0 0 0
25 1 1 3.8e-05 25.040066 4.173345 8 0 0 0
28 1 1 -0.032472 25.040066 6.260016 10.086673 0 0 0
42 1 1 -0.002036 18.780048 6.260016 8 0 0 0
43 1 1 -0.031052 18.780048 4.173345 10.086673 0 0 0
45 1 1 -0.001031 20.86672 4.173345 8 0 0 0
46 1 1 -0.00021 22.953394 6.260016 8 0 0 0
47 1 1 -0.004291 22.953394 4.173345 10.086673 0 0 0
48 1 1 -0.020295 20.86672 6.260016 10.086673 0 0 0
50 1 1 -0.00328 2.086672 10.433361 8 0 0 0
51 1 1 -0.037649 2.086672 8.346689 10.086673 0 0 0
53 1 1 -0.000151 4.173345 8.346689 8 0 0 0
54 1 1 -0.000508 6.260016 10.433361 8 0 0 0
55 1 1 -0.014809 6.260016 8.346689 10.086673 0 0 0
56 1 1 -0.016074 4.173345 10.433361 10.086673 0 0 0
57 1 1 0.00092 8.346689 8.346689 8 0 0 0
60 1 1 -0.037118 8.346689 10.433361 10.086673 0 0 0
74 1 1 -0.000342 2.086672 14.606705 8 0 0 0
75 1 1 -0.027442 2.086672 12.520033 10.086673 0 0 0
77 1 1 0.000536 4.173345 12.520033 8 0 0 0
78 1 1 -0.000368 6.260016 14.606705 8 0 0 0
79 1 1 -0.022015 6.260016 12.520033 10.086673 0 0 0
80 1 1 0.003048 4.173345 14.606705 10.086673 0 0 0
81 1 1 -0.002516 8.346689 12.520033 8 0 0 0
84 1 1 -0.004673 8.346689 14.606705 10.086673 0 0 0
58 1 1 -0.003585 10.433361 10.433361 8 0 0 0
59 1 1 -0.015447 10.433361 8.346689 10.086673 0 0 0
61 1 1 -0.000856 12.520033 8.346689 8 0 0 0
62 1 1 0.001309 14.606705 10.433361 8 0 0 0
63 1 1 -0.034936 14.606705 8.346689 10.086673 0 0 0
64 1 1 -0.022444 12.520033 10.433361 10.086673 0 0 0
65 1 1 -0.00144 16.693378 8.346689 8 0 0 0
68 1 1 -0.008916 16.693378 10.433361 10.086673 0 0 0
82 1 1 0.002034 10.433361 14.606705 8 0 0 0
83 1 1 -0.012341 10.433361 12.520033 10.086673 0 0 0
85 1 1 0.000168 12.520033 12.520033 8 0 0 0
86 1 1 0.000653 14.606705 14.606705 8 0 0 0
87 1 1 0.007996 14.606705 12.520033 10.086673 0 0 0
88 1 1 0.015522 12.520033 14.606705 10.086673 0 0 0
89 1 1 -2.2e-05 16.693378 12.520033 8 0 0 0
92 1 1 -0.001057 16.693378 14.606705 10.086673 0 0 0
49 1 1 -0.006345 25.040066 8.346689 8 0 0 0
52 1 1 -0.05504 25.040066 10.433361 10.086673 0 0 0
66 1 1 -0.004359 18.780048 10.433361 8 0 0 0
67 1 1 -0.02956 18.780048 8.346689 10.086673 0 0 0
69 1 1 0.0004 20.86672 8.346689 8 0 0 0
70 1 1 0.000209 22.953394 10.433361 8 0 0 0
71 1 1 -0.017199 22.953394 8.346689 10.086673 0 0 0
72 1 1 -0.03354 20.86672 10.433361 10.086673 0 0 0
73 1 1 -8e-05 25.040066 12.520033 8 0 0 0
76 1 1 -0.025027 25.040066 14.606705 10.086673 0 0 0
90 1 1 0.000716 18.780048 14.606705 8 0 0 0
91 1 1 -0.013279 18.780048 12.520033 10.086673 0 0 0
93 1 1 -0.000971 20.86672 12.520033 8 0 0 0
94 1 1 -0.000871 22.953394 14.606705 8 0 0 0
95 1 1 -0.014468 22.953394 12.520033 10.086673 0 0 0
96 1 1 -0.028593 20.86672 14.606705 10.086673 0 0 0
98 1 1 -0.001941 2.086672 18.780048 8 0 0 0
99 1 1 -0.015815 2.086672 16.693378 10.086673 0 0 0
101 1 1 0.000289 4.173345 16.693378 8 0 0 0
102 1 1 7.1e-05 6.260016 18.780048 8 0 0 0
103 1 1 -0.03149 6.260016 16.693378 10.086673 0 0 0
104 1 1 -0.033754 4.173345 18.780048 10.086673 0 0 0
105 1 1 -0.003025 8.346689 16.693378 8 0 0 0
108 1 1 -0.025007 8.346689 18.780048 10.086673 0 0 0
122 1 1 0.000623 2.086672 22.953394 8 0 0 0
123 1 1 -0.007516 2.086672 20.86672 10.086673 0 0 0
125 1 1 0.000878 4.173345 20.86672 8 0 0 0
126 1 1 -0.001576 6.260016 22.953394 8 0 0 0
127 1 1 -0.029629 6.260016 20.86672 10.086673 0 0 0
128 1 1 0.004728 4.173345 22.953394 10.086673 0 0 0
129 1 1 -0.003433 8.346689 20.86672 8 0 0 0
132 1 1 -0.043264 8.346689 22.953394 10.086673 0 0 0
106 1 1 -4.9e-05 10.433361 18.780048 8 0 0 0
107 1 1 -0.026304 10.433361 16.693378 10.086673 0 0 0
109 1 1 0.001185 12.520033 16.693378 8 0 0 0
110 1 1 -0.000778 14.606705 18.780048 8 0 0 0
111 1 1 -0.020266 14.606705 16.693378 10.086673 0 0 0
112 1 1 -0.010312 12.520033 18.780048 10.086673 0 0 0
113 1 1 -0.000613 16.693378 16.693378 8 0 0 0
116 1 1 -0.029068 16.693378 18.780048 10.086673 0 0 0
130 1 1 -0.000577 10.433361 22.953394 8 0 0 0
131 1 1 -0.026467 10.433361 20.86672 10.086673 0 0 0
133 1 1 -0.000921 12.520033 20.86672 8 0 0 0
134 1 1 -0.000361 14.606705 22.953394 8 0 0 0
135 1 1 -0.017852 14.606705 20.86672 10.086673 0 0 0
136 1 1 -0.021653 12.520033 22.953394 10.086673 0 0 0
137 1 1 0.000268 16.693378 20.86672 8 0 0 0
140 1 1 -0.01542 16.693378 22.953394 10.086673 0 0 0
97 1 1 -0.000311 25.040066 16.693378 8 0 0 0
100 1 1 -0.012408 25.040066 18.780048 10.086673 0 0 0
114 1 1 -0.000958 18.780048 18.780048 8 0 0 0
115 1 1 -0.036602 18.780048 16.693378 10.086673 0 0 0
117 1 1 -0.005554 20.86672 16.693378 8 0 0 0
118 1 1 0.000738 22.953394 18.780048 8 0 0 0
119 1 1 -0.027189 22.953394 16.693378 10.086673 0 0 0
120 1 1 -0.023111 20.86672 18.780048 10.086673 0 0 0
121 1 1 7.5e-05 25.040066 20.86672 8 0 0 0
124 1 1 -0.014682 25.040066 22.953394 10.086673 0 0 0
138 1 1 -0.000345 18.780048 22.953394 8 0 0 0
139 1 1 -0.00903 18.780048 20.86672 10.086673 0 0 0
141 1 1 0.000128 20.86672 20.86672 8 0 0 0
142 1 1 0.000334 22.953394 22.953394 8 0 0 0
143 1 1 -0.002285 22.953394 20.86672 10.086673 0 0 0
144 1 1 -0.00745 20.86672 22.953394 10.086673 0 0 0
146 2 2 0.022955 2.086672 2.086672 32.173344 0 0 0
147 2 2 0.000876 2.086672 0 34.260021 0 1 0
149 2 2 0.027435 4.173345 0 32.173344 0 1 0
150 2 2 0.020862 6.260016 2.086672 32.173344 0 0 0
151 2 2 0.001578 6.260016 0 34.260021 0 1 0
152 2 2 0.001014 4.173345 2.086672 34.260021 0 0 0
153 2 2 0.021009 8.346689 0 32.173344 0 1 0
156 2 2 0.001184 8.346689 2.086672 34.260021 0 0 0
170 2 2 0.008185 2.086672 6.260016 32.173344 0 0 0
171 2 2 0.001602 2.086672 4.173345 34.260021 0 0 0
173 2 2 0.022473 4.173345 4.173345 32.173344 0 0 0
174 2 2 0.03292 6.260016 6.260016 32.173344 0 0 0
175 2 2 0.002046 6.260016 4.173345 34.260021 0 0 0
176 2 2 0.000803 4.173345 6.260016 34.260021 0 0 0
177 2 2 0.032031 8.346689 4.173345 32.173344 0 0 0
180 2 2 0.002258 8.346689 6.260016 34.260021 0 0 0
154 2 2 0.01514 10.433361 2.086672 32.173344 0 0 0
155 2 2 0.001872 10.433361 0 34.260021 0 1 0
157 2 2 0.004752 12.520033 0 32.173344 0 1 0
158 2 2 0.005408 14.606705 2.086672 32.173344 0 0 0
159 2 2 0.000237 14.606705 0 34.260021 0 1 0
160 2 2 0.001509 12.520033 2.086672 34.260021 0 0 0
161 2 2 0.012702 16.693378 0 32.173344 0 1 0
164 2 2 0.000611 16.693378 2.086672 34.260021 0 0 0
178 2 2 0.02783 10.433361 6.260016 32.173344 0 0 0
179 2 2 0.001241 10.433361 4.173345 34.260021 0 0 0
181 2 2 0.019546 12.520033 4.173345 32.173344 0 0 0
182 2 2 0.016796 14.606705 6.260016 32.173344 0 0 0
183 2 2 0.00231 14.606705 4.173345 34.260021 0 0 0
184 2 2 0.001481 12.520033 6.260016 34.260021 0 0 0
185 2 2 0.014646 16.693378 4.173345 32.173344 0 0 0
188 2 2 0.000878 16.693378 6.260016 34.260021 0 0 0
145 2 2 0.019659 25.040066 0 32.173344 0 1 0
148 2 2 0.00156 25.040066 2.086672 34.260021 0 0 0
162 2 2 0.017746 18.780048 2.086672 32.173344 0 0 0
163 2 2 0.001489 18.780048 0 34.260021 0 1 0
165 2 2 0.034109 20.86672 0 32.173344 0 1 0
166 2 2 0.031678 22.953394 2.086672 32.173344 0 0 0
167 2 2 0.002473 22.953394 0 34.260021 0 1 0
168 2 2 0.002352 20.86672 2.086672 34.260021 0 0 0
169 2 2 0.014267 25.040066 4.173345 32.173344 0 0 0
172 2 2 0.000168 25.040066 6.260016 34.260021 0 0 0
186 2 2 0.008992 18.780048 6.260016 32.173344 0 0 0
187 2 2 0.000504 18.780048 4.173345 34.260021 0 0 0
189 2 2 0.021772 20.86672 4.173345 32.173344 0 0 0
190 2 2 0.01304 22.953394 6.260016 32.173344 0 0 0
191 2 2 0.00118 22.953394 4.173345 34.260021 0 0 0
192 2 2 0.001457 20.86672 6.260016 34.260021 0 0 0
194 2 2 0.025689 2.086672 10.433361 32.173344 0 0 0
195 2 2 0.000649 2.086672 8.346689 34.260021 0 0 0
197 2 2 0.015557 4.173345 8.346689 32.173344 0 0 0
198 2 2 0.025584 6.260016 10.433361 32.173344 0 0 0
199 2 2 0.002292 6.260016 8.346689 34.260021 0 0 0
200 2 2 0.000819 4.173345 10.433361 34.260021 0 0 0
201 2 2 0.035591 8.346689 8.346689 32.173344 0 0 0
204 2 2 0.002678 8.346689 10.433361 34.260021 0 0 0
218 2 2 0.021343 2.086672 14.606705 32.173344 0 0 0
219 2 2 0.001799 2.086672 12.520033 34.260021 0 0 0
221 2 2 0.022952 4.173345 12.520033 32.173344 0 0 0
222 2 2 0.012325 6.260016 14.606705 32.173344 0 0 0
223 2 2 0.001876 6.260016 12.520033 34.260021 0 0 0
224 2 2 0.001718 4.173345 14.606705 34.260021 0 0 0
225 2 2 0.023719 8.346689 12.520033 32.173344 0 0 0
228 2 2 0.000744 8.346689 14.606705 34.260021 0 0 0
202 2 2 0.015873 10.433361 10.433361 32.173344 0 0 0
203 2 2 0.000758 10.433361 8.346689 34.260021 0 0 0
205 2 2 0.008097 12.520033 8.346689 32.173344 0 0 0
206 2 2 0.015646 14.606705 10.433361 32.173344 0 0 0
207 2 2 0.001702 14.606705 8.346689 34.260021 0 0 0
208 2 2 0.000994 12.520033 10.433361 34.260021 0 0 0
209 2 2 0.017819 16.693378 8.346689 32.173344 0 0 0
212 2 2 0.001677 16.693378 10.433361 34.260021 0 0 0
226 2 2 0.004714 10.433361 14.606705 32.173344 0 0 0
227 2 2 0.001251 10.433361 12.520033 34.260021 0 0 0
229 2 2 0.018756 12.520033 12.520033 32.173344 0 0 0
230 2 2 -0.00689 14.606705 14.606705 32.173344 0 0 0
231 2 2 0.000922 14.606705 12.520033 34.260021 0 0 0
232 2 2 -0.002432 12.520033 14.606705 34.260021 0 0 0
233 2 2 0.015625 16.693378 12.520033 32.173344 0 0 0
236 2 2 0.001044 16.693378 14.606705 34.260021 0 0 0
193 2 2 0.001698 25.040066 8.346689 32.173344 0 0 0
196 2 2 0.00215 25.040066 10.433361 34.260021 0 0 0
210 2 2 0.029386 18.780048 10.433361 32.173344 0 0 0
211 2 2 0.000676 18.780048 8.346689 34.260021 0 0 0
213 2 2 0.020182 20.86672 8.346689 32.173344 0 0 0
214 2 2 0.02881 22.953394 10.433361 32.173344 0 0 0
215 2 2 0.002276 22.953394 8.346689 34.260021 0 0 0
216 2 2 0.003118 20.86672 10.433361 34.260021 0 0 0
217 2 2 0.012257 25.040066 12.520033 32.173344 0 0 0
220 2 2 0.001591 25.040066 14.606705 34.260021 0 0 0
234 2 2 -0.009585 18.780048 14.606705 32.173344 0 0 0
235 2 2 0.001459 18.780048 12.520033 34.260021 0 0 0
237 2 2 0.020359 20.86672 12.520033 32.173344 0 0 0
238 2 2 0.004616 22.953394 14.606705 32.173344 0 0 0
239 2 2 0.000697 22.953394 12.520033 34.260021 0 0 0
240 2 2 5e-06 20.86672 14.606705 34.260021 0 0 0
242 2 2 0.034403 2.086672 18.780048 32.173344 0 0 0
243 2 2 0.002402 2.086672 16.693378 34.260021 0 0 0
245 2 2 0.021827 4.173345 16.693378 32.173344 0 0 0
246 2 2 0.011918 6.260016 18.780048 32.173344 0 0 0
247 2 2 0.000792 6.260016 16.693378 34.260021 0 0 0
248 2 2 0.002071 4.173345 18.780048 34.260021 0 0 0
249 2 2 -0.002694 8.346689 16.693378 32.173344 0 0 0
252 2 2 0.000351 8.346689 18.780048 34.260021 0 0 0
266 2 2 0.037372 2.086672 22.953394 32.173344 0 0 0
267 2 2 0.002492 2.086672 20.86672 34.260021 0 0 0
269 2 2 0.03734 4.173345 20.86672 32.173344 0 0 0
270 2 2 0.015818 6.260016 22.953394 32.173344 0 0 0
271 2 2 -0.0001 6.260016 20.86672 34.260021 0 0 0
272 2 2 0.002801 4.173345 22.953394 34.260021 0 0 0
273 2 2 0.017084 8.346689 20.86672 32.173344 0 0 0
276 2 2 0.001644 8.346689 22.953394 34.260021 0 0 0
250 2 2 -0.000573 10.433361 18.780048 32.173344 0 0 0
251 2 2 0.000448 10.433361 16.693378 34.260021 0 0 0
253 2 2 0.001141 12.520033 16.693378 32.173344 0 0 0
254 2 2 0.015575 14.606705 18.780048 32.173344 0 0 0
255 2 2 0.000258 14.606705 16.693378 34.260021 0 0 0
256 2 2 0.000372 12.520033 18.780048 34.260021 0 0 0
257 2 2 0.011285 16.693378 16.693378 32.173344 0 0 0
260 2 2 0.001199 16.693378 18.780048 34.260021 0 0 0
274 2 2 0.031072 10.433361 22.953394 32.173344 0 0 0
275 2 2 -0.00031 10.433361 20.86672 34.260021 0 0 0
277 2 2 -0.004414 12.520033 20.86672 32.173344 0 0 0
278 2 2 0.017397 14.606705 22.953394 32.173344 0 0 0
279 2 2 0.001344 14.606705 20.86672 34.260021 0 0 0
280 2 2 0.000672 12.520033 22.953394 34.260021 0 0 0
281 2 2 0.0252 16.693378 20.86672 32.173344 0 0 0
284 2 2 0.001824 16.693378 22.953394 34.260021 0 0 0
241 2 2 0.029057 25.040066 16.693378 32.173344 0 0 0
244 2 2 0.001076 25.040066 18.780048 34.260021 0 0 0
258 2 2 0.035183 18.780048 18.780048 32.173344 0 0 0
259 2 2 0.0002 18.780048 16.693378 34.260021 0 0 0
261 2 2 0.034083 20.86672 16.693378 32.173344 0 0 0
262 2 2 0.036995 22.953394 18.780048 32.173344 0 0 0
263 2 2 0.001484 22.953394 16.693378 34.260021 0 0 0
264 2 2 0.00377 20.86672 18.780048 34.260021 0 0 0
265 2 2 0.024028 25.040066 20.86672 32.173344 0 0 0
268 2 2 0.001334 25.040066 22.953394 34.260021 0 0 0
282 2 2 0.030927 18.780048 22.953394 32.173344 0 0 0
283 2 2 0.002185 18.780048 20.86672 34.260021 0 0 0
285 2 2 0.043618 20.86672 20.86672 32.173344 0 0 0
286 2 2 0.030615 22.953394 22.953394 32.173344 0 0 0
287 2 2 0.001068 22.953394 20.86672 34.260021 0 0 0
288 2 2 0.001887 20.86672 22.953394 34.260021 0 0 0
Velocities
2 0 0 0
3 0 0 0
5 0 0 0
6 0 0 0
7 0 0 0
8 0 0 0
9 0 0 0
12 0 0 0
26 0 0 0
27 0 0 0
29 0 0 0
30 0 0 0
31 0 0 0
32 0 0 0
33 0 0 0
36 0 0 0
10 0 0 0
11 0 0 0
13 0 0 0
14 0 0 0
15 0 0 0
16 0 0 0
17 0 0 0
20 0 0 0
34 0 0 0
35 0 0 0
37 0 0 0
38 0 0 0
39 0 0 0
40 0 0 0
41 0 0 0
44 0 0 0
1 0 0 0
4 0 0 0
18 0 0 0
19 0 0 0
21 0 0 0
22 0 0 0
23 0 0 0
24 0 0 0
25 0 0 0
28 0 0 0
42 0 0 0
43 0 0 0
45 0 0 0
46 0 0 0
47 0 0 0
48 0 0 0
50 0 0 0
51 0 0 0
53 0 0 0
54 0 0 0
55 0 0 0
56 0 0 0
57 0 0 0
60 0 0 0
74 0 0 0
75 0 0 0
77 0 0 0
78 0 0 0
79 0 0 0
80 0 0 0
81 0 0 0
84 0 0 0
58 0 0 0
59 0 0 0
61 0 0 0
62 0 0 0
63 0 0 0
64 0 0 0
65 0 0 0
68 0 0 0
82 0 0 0
83 0 0 0
85 0 0 0
86 0 0 0
87 0 0 0
88 0 0 0
89 0 0 0
92 0 0 0
49 0 0 0
52 0 0 0
66 0 0 0
67 0 0 0
69 0 0 0
70 0 0 0
71 0 0 0
72 0 0 0
73 0 0 0
76 0 0 0
90 0 0 0
91 0 0 0
93 0 0 0
94 0 0 0
95 0 0 0
96 0 0 0
98 0 0 0
99 0 0 0
101 0 0 0
102 0 0 0
103 0 0 0
104 0 0 0
105 0 0 0
108 0 0 0
122 0 0 0
123 0 0 0
125 0 0 0
126 0 0 0
127 0 0 0
128 0 0 0
129 0 0 0
132 0 0 0
106 0 0 0
107 0 0 0
109 0 0 0
110 0 0 0
111 0 0 0
112 0 0 0
113 0 0 0
116 0 0 0
130 0 0 0
131 0 0 0
133 0 0 0
134 0 0 0
135 0 0 0
136 0 0 0
137 0 0 0
140 0 0 0
97 0 0 0
100 0 0 0
114 0 0 0
115 0 0 0
117 0 0 0
118 0 0 0
119 0 0 0
120 0 0 0
121 0 0 0
124 0 0 0
138 0 0 0
139 0 0 0
141 0 0 0
142 0 0 0
143 0 0 0
144 0 0 0
146 0 0 0
147 0 0 0
149 0 0 0
150 0 0 0
151 0 0 0
152 0 0 0
153 0 0 0
156 0 0 0
170 0 0 0
171 0 0 0
173 0 0 0
174 0 0 0
175 0 0 0
176 0 0 0
177 0 0 0
180 0 0 0
154 0 0 0
155 0 0 0
157 0 0 0
158 0 0 0
159 0 0 0
160 0 0 0
161 0 0 0
164 0 0 0
178 0 0 0
179 0 0 0
181 0 0 0
182 0 0 0
183 0 0 0
184 0 0 0
185 0 0 0
188 0 0 0
145 0 0 0
148 0 0 0
162 0 0 0
163 0 0 0
165 0 0 0
166 0 0 0
167 0 0 0
168 0 0 0
169 0 0 0
172 0 0 0
186 0 0 0
187 0 0 0
189 0 0 0
190 0 0 0
191 0 0 0
192 0 0 0
194 0 0 0
195 0 0 0
197 0 0 0
198 0 0 0
199 0 0 0
200 0 0 0
201 0 0 0
204 0 0 0
218 0 0 0
219 0 0 0
221 0 0 0
222 0 0 0
223 0 0 0
224 0 0 0
225 0 0 0
228 0 0 0
202 0 0 0
203 0 0 0
205 0 0 0
206 0 0 0
207 0 0 0
208 0 0 0
209 0 0 0
212 0 0 0
226 0 0 0
227 0 0 0
229 0 0 0
230 0 0 0
231 0 0 0
232 0 0 0
233 0 0 0
236 0 0 0
193 0 0 0
196 0 0 0
210 0 0 0
211 0 0 0
213 0 0 0
214 0 0 0
215 0 0 0
216 0 0 0
217 0 0 0
220 0 0 0
234 0 0 0
235 0 0 0
237 0 0 0
238 0 0 0
239 0 0 0
240 0 0 0
242 0 0 0
243 0 0 0
245 0 0 0
246 0 0 0
247 0 0 0
248 0 0 0
249 0 0 0
252 0 0 0
266 0 0 0
267 0 0 0
269 0 0 0
270 0 0 0
271 0 0 0
272 0 0 0
273 0 0 0
276 0 0 0
250 0 0 0
251 0 0 0
253 0 0 0
254 0 0 0
255 0 0 0
256 0 0 0
257 0 0 0
260 0 0 0
274 0 0 0
275 0 0 0
277 0 0 0
278 0 0 0
279 0 0 0
280 0 0 0
281 0 0 0
284 0 0 0
241 0 0 0
244 0 0 0
258 0 0 0
259 0 0 0
261 0 0 0
262 0 0 0
263 0 0 0
264 0 0 0
265 0 0 0
268 0 0 0
282 0 0 0
283 0 0 0
285 0 0 0
286 0 0 0
287 0 0 0
288 0 0 0

View File

@ -0,0 +1,14 @@
boundary p p f
kspace_style ewald/electrode 1.0e-7
kspace_modify slab ew2d
include "settings.mod" # styles, computes, groups and fixes
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10

View File

@ -0,0 +1,14 @@
boundary p p f
kspace_style ewald/electrode 1.0e-7
kspace_modify slab 3.0 # ew3dc
include "settings.mod" # styles, computes, groups and fixes
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10

View File

@ -0,0 +1,13 @@
boundary p p p # finite field, fully periodic
kspace_style ewald/electrode 1.0e-7
include "settings.mod" # styles, computes, groups and fixes
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on ffield yes
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10

View File

@ -0,0 +1,15 @@
boundary p p f
kspace_style pppm/electrode 1.0e-7
kspace_modify slab 3.0
include "settings.mod" # styles, computes, groups and fixes
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10

View File

@ -0,0 +1,13 @@
boundary p p p # finite field, fully periodic
kspace_style pppm/electrode 1.0e-7
include "settings.mod" # styles, computes, groups and fixes
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on ffield yes
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10

View File

@ -0,0 +1,139 @@
LAMMPS (24 Mar 2022)
boundary p p f
kspace_style ewald/electrode 1.0e-7
kspace_modify slab ew2d
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 1 by 1 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.006 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Ewald/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.15955673
estimated absolute RMS force accuracy = 4.0330163e-05
estimated relative force accuracy = 1.2145309e-07
KSpace vectors: actual max1d max3d = 90 5 665
kxmax kymax kzmax = 3 3 5
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 15.93 | 15.93 | 15.93 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030920491 0.030920491 0.031376826 -1.4543703
2 0.4 -0.061840982 0.061840982 0.062753652 -1.4543704
3 0.6 -0.092761473 0.092761473 0.094130479 -1.4543704
4 0.8 -0.12368196 0.12368196 0.1255073 -1.4543704
5 1 -0.15460245 0.15460245 0.15688413 -1.4543704
6 1.2 -0.18552295 0.18552295 0.18826096 -1.4543704
7 1.4 -0.21644344 0.21644344 0.21963778 -1.4543704
8 1.6 -0.24736393 0.24736393 0.25101461 -1.4543704
9 1.8 -0.27828442 0.27828442 0.28239144 -1.4543704
10 2 -0.30920491 0.30920491 0.31376826 -1.4543704
Loop time of 0.0912872 on 1 procs for 10 steps with 288 atoms
Performance: 9.465 ns/day, 2.536 hours/ns, 109.544 timesteps/s
400.1% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0086713 | 0.0086713 | 0.0086713 | 0.0 | 9.50
Bond | 3.759e-06 | 3.759e-06 | 3.759e-06 | 0.0 | 0.00
Kspace | 0.04575 | 0.04575 | 0.04575 | 0.0 | 50.12
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00018224 | 0.00018224 | 0.00018224 | 0.0 | 0.20
Output | 0.0027569 | 0.0027569 | 0.0027569 | 0.0 | 3.02
Modify | 0.03386 | 0.03386 | 0.03386 | 0.0 | 37.09
Other | | 6.314e-05 | | | 0.07
Nlocal: 288 ave 288 max 288 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1170 ave 1170 max 1170 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 26496 ave 26496 max 26496 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,140 @@
LAMMPS (24 Mar 2022)
boundary p p f
kspace_style ewald/electrode 1.0e-7
kspace_modify slab ew2d
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 2 by 2 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.008 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Ewald/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.15955673
estimated absolute RMS force accuracy = 4.0330163e-05
estimated relative force accuracy = 1.2145309e-07
KSpace vectors: actual max1d max3d = 90 5 665
kxmax kymax kzmax = 3 3 5
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 15.96 | 15.96 | 15.96 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030920491 0.030920491 0.031376826 -1.4543703
2 0.4 -0.061840982 0.061840982 0.062753652 -1.4543704
3 0.6 -0.092761473 0.092761473 0.094130479 -1.4543704
4 0.8 -0.12368196 0.12368196 0.1255073 -1.4543704
5 1 -0.15460245 0.15460245 0.15688413 -1.4543704
6 1.2 -0.18552295 0.18552295 0.18826096 -1.4543704
7 1.4 -0.21644344 0.21644344 0.21963778 -1.4543704
8 1.6 -0.24736393 0.24736393 0.25101461 -1.4543704
9 1.8 -0.27828442 0.27828442 0.28239144 -1.4543704
10 2 -0.30920491 0.30920491 0.31376826 -1.4543704
Loop time of 0.0456609 on 4 procs for 10 steps with 288 atoms
Performance: 18.922 ns/day, 1.268 hours/ns, 219.006 timesteps/s
86.7% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0019389 | 0.0024013 | 0.0030807 | 0.9 | 5.26
Bond | 1.493e-06 | 1.7132e-06 | 1.935e-06 | 0.0 | 0.00
Kspace | 0.016165 | 0.016695 | 0.017072 | 0.3 | 36.56
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.0030891 | 0.0037595 | 0.0040145 | 0.6 | 8.23
Output | 0.0024177 | 0.0027885 | 0.0037099 | 1.0 | 6.11
Modify | 0.01944 | 0.019746 | 0.020327 | 0.2 | 43.24
Other | | 0.0002691 | | | 0.59
Nlocal: 72 ave 72 max 72 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 1062 ave 1062 max 1062 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 6624 ave 6936 max 6312 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,139 @@
LAMMPS (24 Mar 2022)
boundary p p f
kspace_style ewald/electrode 1.0e-7
kspace_modify slab 3.0 # ew3dc
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 1 by 1 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.007 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Ewald/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.15955673
estimated absolute RMS force accuracy = 3.1187248e-05
estimated relative force accuracy = 9.3919471e-08
KSpace vectors: actual max1d max3d = 266 12 7812
kxmax kymax kzmax = 3 3 12
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 27.27 | 27.27 | 27.27 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030925182 0.030925182 0.031376826 -1.4394194
2 0.4 -0.061850364 0.061850364 0.062753652 -1.4394194
3 0.6 -0.092775546 0.092775546 0.094130479 -1.4394194
4 0.8 -0.12370073 0.12370073 0.1255073 -1.4394195
5 1 -0.15462591 0.15462591 0.15688413 -1.4394195
6 1.2 -0.18555109 0.18555109 0.18826096 -1.4394195
7 1.4 -0.21647627 0.21647627 0.21963778 -1.4394195
8 1.6 -0.24740146 0.24740146 0.25101461 -1.4394195
9 1.8 -0.27832664 0.27832664 0.28239144 -1.4394195
10 2 -0.30925182 0.30925182 0.31376826 -1.4394195
Loop time of 0.0672288 on 1 procs for 10 steps with 288 atoms
Performance: 12.852 ns/day, 1.867 hours/ns, 148.746 timesteps/s
400.4% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0071442 | 0.0071442 | 0.0071442 | 0.0 | 10.63
Bond | 2.976e-06 | 2.976e-06 | 2.976e-06 | 0.0 | 0.00
Kspace | 0.0097903 | 0.0097903 | 0.0097903 | 0.0 | 14.56
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00023514 | 0.00023514 | 0.00023514 | 0.0 | 0.35
Output | 0.0029795 | 0.0029795 | 0.0029795 | 0.0 | 4.43
Modify | 0.047009 | 0.047009 | 0.047009 | 0.0 | 69.92
Other | | 6.809e-05 | | | 0.10
Nlocal: 288 ave 288 max 288 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1170 ave 1170 max 1170 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 26496 ave 26496 max 26496 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,140 @@
LAMMPS (24 Mar 2022)
boundary p p f
kspace_style ewald/electrode 1.0e-7
kspace_modify slab 3.0 # ew3dc
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 2 by 2 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.008 seconds
read_data CPU = 0.123 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Ewald/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.15955673
estimated absolute RMS force accuracy = 3.1187248e-05
estimated relative force accuracy = 9.3919471e-08
KSpace vectors: actual max1d max3d = 266 12 7812
kxmax kymax kzmax = 3 3 12
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 27.31 | 27.31 | 27.31 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030925182 0.030925182 0.031376826 -1.4394194
2 0.4 -0.061850364 0.061850364 0.062753652 -1.4394194
3 0.6 -0.092775546 0.092775546 0.094130479 -1.4394194
4 0.8 -0.12370073 0.12370073 0.1255073 -1.4394195
5 1 -0.15462591 0.15462591 0.15688413 -1.4394195
6 1.2 -0.18555109 0.18555109 0.18826096 -1.4394195
7 1.4 -0.21647627 0.21647627 0.21963778 -1.4394195
8 1.6 -0.24740146 0.24740146 0.25101461 -1.4394195
9 1.8 -0.27832664 0.27832664 0.28239144 -1.4394195
10 2 -0.30925182 0.30925182 0.31376826 -1.4394195
Loop time of 0.0459561 on 4 procs for 10 steps with 288 atoms
Performance: 18.801 ns/day, 1.277 hours/ns, 217.599 timesteps/s
95.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0021527 | 0.0026891 | 0.0037845 | 1.3 | 5.85
Bond | 1.303e-06 | 1.9462e-06 | 3.206e-06 | 0.0 | 0.00
Kspace | 0.0066254 | 0.0077509 | 0.0083577 | 0.8 | 16.87
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00285 | 0.0057275 | 0.0067088 | 2.2 | 12.46
Output | 0.0024325 | 0.0034682 | 0.0065316 | 3.0 | 7.55
Modify | 0.025911 | 0.025969 | 0.026007 | 0.0 | 56.51
Other | | 0.0003494 | | | 0.76
Nlocal: 72 ave 72 max 72 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 1062 ave 1062 max 1062 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 6624 ave 6936 max 6312 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,138 @@
LAMMPS (24 Mar 2022)
boundary p p p # finite field, fully periodic
kspace_style ewald/electrode 1.0e-7
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 1 by 1 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.010 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on ffield yes
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Ewald/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.15955673
estimated absolute RMS force accuracy = 4.0330163e-05
estimated relative force accuracy = 1.2145309e-07
KSpace vectors: actual max1d max3d = 95 5 665
kxmax kymax kzmax = 3 3 5
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 16.01 | 16.01 | 16.01 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030908718 0.030908718 0.031376826 -1.491893
2 0.4 -0.061817435 0.061817435 0.062753652 -1.491893
3 0.6 -0.092726153 0.092726153 0.094130479 -1.491893
4 0.8 -0.12363487 0.12363487 0.1255073 -1.491893
5 1 -0.15454359 0.15454359 0.15688413 -1.491893
6 1.2 -0.18545231 0.18545231 0.18826096 -1.491893
7 1.4 -0.21636102 0.21636102 0.21963778 -1.491893
8 1.6 -0.24726974 0.24726974 0.25101461 -1.491893
9 1.8 -0.27817846 0.27817846 0.28239144 -1.491893
10 2 -0.30908718 0.30908718 0.31376826 -1.491893
Loop time of 0.0481838 on 1 procs for 10 steps with 288 atoms
Performance: 17.931 ns/day, 1.338 hours/ns, 207.539 timesteps/s
390.7% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0071719 | 0.0071719 | 0.0071719 | 0.0 | 14.88
Bond | 2.946e-06 | 2.946e-06 | 2.946e-06 | 0.0 | 0.01
Kspace | 0.0038758 | 0.0038758 | 0.0038758 | 0.0 | 8.04
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00053561 | 0.00053561 | 0.00053561 | 0.0 | 1.11
Output | 0.0025385 | 0.0025385 | 0.0025385 | 0.0 | 5.27
Modify | 0.033951 | 0.033951 | 0.033951 | 0.0 | 70.46
Other | | 0.0001075 | | | 0.22
Nlocal: 288 ave 288 max 288 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2628 ave 2628 max 2628 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 26496 ave 26496 max 26496 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,139 @@
LAMMPS (24 Mar 2022)
boundary p p p # finite field, fully periodic
kspace_style ewald/electrode 1.0e-7
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 2 by 2 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.026 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on ffield yes
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Ewald/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.15955673
estimated absolute RMS force accuracy = 4.0330163e-05
estimated relative force accuracy = 1.2145309e-07
KSpace vectors: actual max1d max3d = 95 5 665
kxmax kymax kzmax = 3 3 5
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 15.97 | 15.97 | 15.97 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030908718 0.030908718 0.031376826 -1.491893
2 0.4 -0.061817435 0.061817435 0.062753652 -1.491893
3 0.6 -0.092726153 0.092726153 0.094130479 -1.491893
4 0.8 -0.12363487 0.12363487 0.1255073 -1.491893
5 1 -0.15454359 0.15454359 0.15688413 -1.491893
6 1.2 -0.18545231 0.18545231 0.18826096 -1.491893
7 1.4 -0.21636102 0.21636102 0.21963778 -1.491893
8 1.6 -0.24726974 0.24726974 0.25101461 -1.491893
9 1.8 -0.27817846 0.27817846 0.28239144 -1.491893
10 2 -0.30908718 0.30908718 0.31376826 -1.491893
Loop time of 0.0294825 on 4 procs for 10 steps with 288 atoms
Performance: 29.306 ns/day, 0.819 hours/ns, 339.184 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0020718 | 0.0025674 | 0.0029431 | 0.7 | 8.71
Bond | 1.423e-06 | 2.0293e-06 | 2.615e-06 | 0.0 | 0.01
Kspace | 0.0028016 | 0.0031772 | 0.0035529 | 0.5 | 10.78
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.0023552 | 0.0032209 | 0.0035502 | 0.9 | 10.92
Output | 0.0011969 | 0.0016057 | 0.002676 | 1.5 | 5.45
Modify | 0.018358 | 0.018553 | 0.018654 | 0.1 | 62.93
Other | | 0.0003563 | | | 1.21
Nlocal: 72 ave 72 max 72 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 1629 ave 1629 max 1629 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 6624 ave 6936 max 6312 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,143 @@
LAMMPS (24 Mar 2022)
boundary p p f
kspace_style pppm/electrode 1.0e-7
kspace_modify slab 3.0
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 1 by 1 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.007 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
PPPM/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.16696028
grid = 8 8 25
stencil order = 5
estimated absolute RMS force accuracy = 2.7967012e-05
estimated relative force accuracy = 8.4221827e-08
using double precision MKL FFT
3d grid and FFT values/proc = 4563 1600
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314)
Per MPI rank memory allocation (min/avg/max) = 7.93 | 7.93 | 7.93 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030912769 0.030912769 0.031376826 -1.4789807
2 0.4 -0.061825538 0.061825538 0.062753652 -1.4789807
3 0.6 -0.092738307 0.092738307 0.094130479 -1.4789807
4 0.8 -0.12365108 0.12365108 0.1255073 -1.4789807
5 1 -0.15456384 0.15456384 0.15688413 -1.4789807
6 1.2 -0.18547661 0.18547661 0.18826096 -1.4789807
7 1.4 -0.21638938 0.21638938 0.21963778 -1.4789807
8 1.6 -0.24730215 0.24730215 0.25101461 -1.4789807
9 1.8 -0.27821492 0.27821492 0.28239144 -1.4789807
10 2 -0.30912769 0.30912769 0.31376826 -1.4789807
Loop time of 0.0784857 on 1 procs for 10 steps with 288 atoms
Performance: 11.008 ns/day, 2.180 hours/ns, 127.412 timesteps/s
400.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0075859 | 0.0075859 | 0.0075859 | 0.0 | 9.67
Bond | 2.817e-06 | 2.817e-06 | 2.817e-06 | 0.0 | 0.00
Kspace | 0.020841 | 0.020841 | 0.020841 | 0.0 | 26.55
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00019415 | 0.00019415 | 0.00019415 | 0.0 | 0.25
Output | 0.0032534 | 0.0032534 | 0.0032534 | 0.0 | 4.15
Modify | 0.046545 | 0.046545 | 0.046545 | 0.0 | 59.30
Other | | 6.246e-05 | | | 0.08
Nlocal: 288 ave 288 max 288 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1170 ave 1170 max 1170 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 26496 ave 26496 max 26496 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:10

View File

@ -0,0 +1,144 @@
LAMMPS (24 Mar 2022)
boundary p p f
kspace_style pppm/electrode 1.0e-7
kspace_modify slab 3.0
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 2 by 2 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.014 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
PPPM/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.16696028
grid = 8 8 25
stencil order = 5
estimated absolute RMS force accuracy = 2.7967012e-05
estimated relative force accuracy = 8.4221827e-08
using double precision MKL FFT
3d grid and FFT values/proc = 2691 672
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314)
Per MPI rank memory allocation (min/avg/max) = 7.716 | 7.765 | 7.814 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030912769 0.030912769 0.031376826 -1.4789807
2 0.4 -0.061825538 0.061825538 0.062753652 -1.4789807
3 0.6 -0.092738307 0.092738307 0.094130479 -1.4789807
4 0.8 -0.12365108 0.12365108 0.1255073 -1.4789807
5 1 -0.15456384 0.15456384 0.15688413 -1.4789807
6 1.2 -0.18547661 0.18547661 0.18826096 -1.4789807
7 1.4 -0.21638938 0.21638938 0.21963778 -1.4789807
8 1.6 -0.24730215 0.24730215 0.25101461 -1.4789807
9 1.8 -0.27821492 0.27821492 0.28239144 -1.4789807
10 2 -0.30912769 0.30912769 0.31376826 -1.4789807
Loop time of 0.0296999 on 4 procs for 10 steps with 288 atoms
Performance: 29.091 ns/day, 0.825 hours/ns, 336.701 timesteps/s
91.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 | 0.0021578 | 0.0022153 | 0.0022978 | 0.1 | 7.46
Bond | 1.161e-06 | 1.435e-06 | 1.943e-06 | 0.0 | 0.00
Kspace | 0.0054884 | 0.0057437 | 0.0059072 | 0.2 | 19.34
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.0015424 | 0.0025686 | 0.0031306 | 1.2 | 8.65
Output | 0.0019229 | 0.0023315 | 0.0033526 | 1.2 | 7.85
Modify | 0.016192 | 0.016494 | 0.016902 | 0.2 | 55.54
Other | | 0.0003449 | | | 1.16
Nlocal: 72 ave 72 max 72 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 1062 ave 1062 max 1062 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 6624 ave 6936 max 6312 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,141 @@
LAMMPS (24 Mar 2022)
boundary p p p # finite field, fully periodic
kspace_style pppm/electrode 1.0e-7
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 1 by 1 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.006 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on ffield yes
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
PPPM/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.17138393
grid = 8 8 12
stencil order = 5
estimated absolute RMS force accuracy = 1.8143403e-05
estimated relative force accuracy = 5.4638319e-08
using double precision MKL FFT
3d grid and FFT values/proc = 2873 768
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314)
Per MPI rank memory allocation (min/avg/max) = 7.86 | 7.86 | 7.86 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030902 0.030902 0.031376826 -1.5133027
2 0.4 -0.061804 0.061804 0.062753652 -1.5133028
3 0.6 -0.092705999 0.092705999 0.094130479 -1.5133028
4 0.8 -0.123608 0.123608 0.1255073 -1.5133028
5 1 -0.15451 0.15451 0.15688413 -1.5133028
6 1.2 -0.185412 0.185412 0.18826096 -1.5133028
7 1.4 -0.216314 0.216314 0.21963778 -1.5133028
8 1.6 -0.247216 0.247216 0.25101461 -1.5133028
9 1.8 -0.278118 0.278118 0.28239144 -1.5133028
10 2 -0.30902 0.30902 0.31376826 -1.5133028
Loop time of 0.054016 on 1 procs for 10 steps with 288 atoms
Performance: 15.995 ns/day, 1.500 hours/ns, 185.130 timesteps/s
400.3% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0081119 | 0.0081119 | 0.0081119 | 0.0 | 15.02
Bond | 4.802e-06 | 4.802e-06 | 4.802e-06 | 0.0 | 0.01
Kspace | 0.0053539 | 0.0053539 | 0.0053539 | 0.0 | 9.91
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.00052577 | 0.00052577 | 0.00052577 | 0.0 | 0.97
Output | 0.0033476 | 0.0033476 | 0.0033476 | 0.0 | 6.20
Modify | 0.036562 | 0.036562 | 0.036562 | 0.0 | 67.69
Other | | 0.0001102 | | | 0.20
Nlocal: 288 ave 288 max 288 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2628 ave 2628 max 2628 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 26496 ave 26496 max 26496 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:09

View File

@ -0,0 +1,142 @@
LAMMPS (24 Mar 2022)
boundary p p p # finite field, fully periodic
kspace_style pppm/electrode 1.0e-7
include "settings.mod" # styles, computes, groups and fixes
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
processors * * 2
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
Reading data file ...
orthogonal box = (0.285001 -0.368323 -1.043333) to (25.325067 24.671743 43.303354)
1 by 2 by 2 MPI processor grid
reading atoms ...
288 atoms
reading velocities ...
288 velocities
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.022 seconds
group bot molecule 1
144 atoms in group bot
group top molecule 2
144 atoms in group top
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero
# constant potential electrodes with ramping potential difference
fix conp bot electrode/conp 0 1.979 couple top v_v symm on ffield yes
288 atoms in group conp_group
thermo 1
# thermo: step, imposed potential, bottom charge, top charge, theory charge, percent deviation
thermo_style custom step v_v c_qbot c_qtop v_qtheory v_percdev
run 10
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
PPPM/electrode initialization ...
WARNING: System is not charge neutral, net charge = 0.000219 (src/kspace.cpp:327)
using 12-bit tables for long-range coulomb (src/kspace.cpp:342)
G vector (1/distance) = 0.17138393
grid = 8 8 12
stencil order = 5
estimated absolute RMS force accuracy = 1.8143403e-05
estimated relative force accuracy = 5.4638319e-08
using double precision MKL FFT
3d grid and FFT values/proc = 1287 192
generated 1 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 = 16
ghost atom cutoff = 16
binsize = 8, bins = 4 4 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair lj/cut/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
(2) fix electrode/conp, perpetual, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
WARNING: Using kspace solver on system with no charge (src/kspace.cpp:314)
Per MPI rank memory allocation (min/avg/max) = 7.712 | 7.712 | 7.712 Mbytes
Step v_v c_qbot c_qtop v_qtheory v_percdev
0 0 0 0 0 0
1 0.2 -0.030902 0.030902 0.031376826 -1.5133027
2 0.4 -0.061804 0.061804 0.062753652 -1.5133028
3 0.6 -0.092705999 0.092705999 0.094130479 -1.5133028
4 0.8 -0.123608 0.123608 0.1255073 -1.5133028
5 1 -0.15451 0.15451 0.15688413 -1.5133028
6 1.2 -0.185412 0.185412 0.18826096 -1.5133028
7 1.4 -0.216314 0.216314 0.21963778 -1.5133028
8 1.6 -0.247216 0.247216 0.25101461 -1.5133028
9 1.8 -0.278118 0.278118 0.28239144 -1.5133028
10 2 -0.30902 0.30902 0.31376826 -1.5133028
Loop time of 0.0301351 on 4 procs for 10 steps with 288 atoms
Performance: 28.671 ns/day, 0.837 hours/ns, 331.839 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.0020768 | 0.0022701 | 0.0024074 | 0.3 | 7.53
Bond | 1.271e-06 | 2.2107e-06 | 4.237e-06 | 0.0 | 0.01
Kspace | 0.0039171 | 0.0040631 | 0.0042468 | 0.2 | 13.48
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.0020711 | 0.0032953 | 0.0038884 | 1.3 | 10.93
Output | 0.0013425 | 0.001877 | 0.0031692 | 1.7 | 6.23
Modify | 0.018076 | 0.018252 | 0.018479 | 0.1 | 60.57
Other | | 0.0003755 | | | 1.25
Nlocal: 72 ave 72 max 72 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Nghost: 1629 ave 1629 max 1629 min
Histogram: 4 0 0 0 0 0 0 0 0 0
Neighs: 6624 ave 6936 max 6312 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 26496
Ave neighs/atom = 92
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,35 @@
# set boundary in main script because ffield is periodic
units real
# distribute electrode atoms among all processors:
if "$(extract_setting(world_size) % 2) == 0" then "processors * * 2"
atom_style full
pair_style lj/cut/coul/long 14
# kspace_style and _modify in main script to test different approaches
read_data "data.au-vac"
group bot molecule 1
group top molecule 2
# ramping potential difference
variable v equal ramp(0,2)
# get electrode charges
variable q atom q
compute qbot bot reduce sum v_q
compute qtop top reduce sum v_q
# get theoretical charges:
# calculate distance dz between electrodes
compute zbot bot reduce max z
compute ztop top reduce min z
variable dz equal c_ztop-c_zbot
# calculate theoretical capacitance as eps0 * area / dz
variable eps0 equal 55.26349406/10000 # epsilon zero
variable capac equal "v_eps0 * lx * ly / v_dz"
# calculate theoretical charges and deviation of constant potential charges from theory
variable qtheory equal "v_capac * v_v"
variable percdev equal "100 * (c_qtop - v_qtheory) / (v_qtheory + 1e-9)" # avoid divide-by-zero

View File

@ -0,0 +1,17 @@
#!/bin/bash -e
lmpbin=$1
if [ ! -f $lmpbin ]; then
echo "LAMMPS binary '$lmpbin' is not a file"
exit 1
fi
for file in in.*; do
echo "$file"
echo "1 proc"
$lmpbin -i $file > /dev/null
grep ' 1.2 ' log.lammps
echo "2 procs"
mpirun -np 2 $lmpbin -i $file > /dev/null
grep ' 1.2 ' log.lammps
done

Some files were not shown because too many files have changed in this diff Show More