Merge pull request #3194 from robeme/electrode
ELECTRODE package for constant potential method
This commit is contained in:
@ -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()
|
||||
|
||||
@ -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})
|
||||
|
||||
@ -25,6 +25,7 @@ set(ALL_PACKAGES
|
||||
DPD-REACT
|
||||
DPD-SMOOTH
|
||||
DRUDE
|
||||
ELECTRODE
|
||||
EFF
|
||||
EXTRA-COMPUTE
|
||||
EXTRA-DUMP
|
||||
|
||||
@ -27,6 +27,7 @@ set(ALL_PACKAGES
|
||||
DPD-REACT
|
||||
DPD-SMOOTH
|
||||
DRUDE
|
||||
ELECTRODE
|
||||
EFF
|
||||
EXTRA-COMPUTE
|
||||
EXTRA-DUMP
|
||||
|
||||
@ -21,6 +21,7 @@ set(WIN_PACKAGES
|
||||
DPD-REACT
|
||||
DPD-SMOOTH
|
||||
DRUDE
|
||||
ELECTRODE
|
||||
EFF
|
||||
EXTRA-COMPUTE
|
||||
EXTRA-DUMP
|
||||
|
||||
@ -23,6 +23,7 @@ set(ALL_PACKAGES
|
||||
DPD-REACT
|
||||
DPD-SMOOTH
|
||||
DRUDE
|
||||
ELECTRODE
|
||||
EFF
|
||||
EXTRA-COMPUTE
|
||||
EXTRA-DUMP
|
||||
|
||||
@ -6,6 +6,7 @@ set(PACKAGES_WITH_LIB
|
||||
ATC
|
||||
AWPMD
|
||||
COMPRESS
|
||||
ELECTRODE
|
||||
GPU
|
||||
H5MD
|
||||
KIM
|
||||
|
||||
@ -18,6 +18,7 @@ set(WIN_PACKAGES
|
||||
DPD-REACT
|
||||
DPD-SMOOTH
|
||||
DRUDE
|
||||
ELECTRODE
|
||||
EFF
|
||||
EXTRA-COMPUTE
|
||||
EXTRA-DUMP
|
||||
|
||||
@ -1252,6 +1252,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
|
||||
|
||||
@ -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>`
|
||||
|
||||
@ -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>`
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>`
|
||||
|
||||
@ -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
|
||||
|
||||
221
doc/src/fix_electrode_conp.rst
Normal file
221
doc/src/fix_electrode_conp.rst
Normal 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).
|
||||
|
||||
@ -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
|
||||
""""""""
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -869,6 +873,7 @@ Eisenforschung
|
||||
Ejtehadi
|
||||
El
|
||||
elaplong
|
||||
elastance
|
||||
Electroneg
|
||||
electronegative
|
||||
electronegativity
|
||||
@ -982,6 +987,7 @@ evector
|
||||
Everaers
|
||||
Evgeny
|
||||
evirials
|
||||
ew
|
||||
ewald
|
||||
Ewald
|
||||
excitations
|
||||
@ -1494,6 +1500,7 @@ iva
|
||||
Ivanov
|
||||
Ivector
|
||||
Iw
|
||||
Iwers
|
||||
iwyu
|
||||
ixcm
|
||||
ixx
|
||||
@ -1979,6 +1986,7 @@ mediumvioletred
|
||||
Mees
|
||||
Mehl
|
||||
Mei
|
||||
Meissner
|
||||
Melchor
|
||||
Meloni
|
||||
Melrose
|
||||
@ -2007,6 +2015,7 @@ mesoscopic
|
||||
metadata
|
||||
metadynamics
|
||||
Metadynamics
|
||||
metallicity
|
||||
Methfessel
|
||||
methine
|
||||
Metin
|
||||
@ -2663,6 +2672,7 @@ postfixed
|
||||
postfixes
|
||||
Postma
|
||||
Potapkin
|
||||
potentiostat
|
||||
potin
|
||||
Pourtois
|
||||
powderblue
|
||||
@ -2766,6 +2776,7 @@ qopenmp
|
||||
qoverride
|
||||
qqr
|
||||
qqrd
|
||||
Qsb
|
||||
qtb
|
||||
quadratically
|
||||
quadrupolar
|
||||
@ -2937,6 +2948,7 @@ Rmin
|
||||
RMS
|
||||
rmsd
|
||||
rnage
|
||||
rng
|
||||
rNEMD
|
||||
ro
|
||||
Rochus
|
||||
@ -3012,6 +3024,7 @@ Scalable
|
||||
scalexy
|
||||
scalexz
|
||||
scaleyz
|
||||
Scalfi
|
||||
Schaik
|
||||
Schilfgarde
|
||||
Schimansky
|
||||
@ -3160,6 +3173,7 @@ SPH
|
||||
Spickermann
|
||||
splined
|
||||
spparks
|
||||
Sprik
|
||||
Springer
|
||||
springgreen
|
||||
spx
|
||||
|
||||
27
examples/PACKAGES/electrode/README
Normal file
27
examples/PACKAGES/electrode/README
Normal 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
|
||||
|
||||
1
examples/PACKAGES/electrode/au-aq/.gitignore
vendored
Normal file
1
examples/PACKAGES/electrode/au-aq/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
log.lammps*
|
||||
26130
examples/PACKAGES/electrode/au-aq/data.au-aq
Normal file
26130
examples/PACKAGES/electrode/au-aq/data.au-aq
Normal file
File diff suppressed because it is too large
Load Diff
11
examples/PACKAGES/electrode/au-aq/in.ffield
Normal file
11
examples/PACKAGES/electrode/au-aq/in.ffield
Normal 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
|
||||
15
examples/PACKAGES/electrode/au-aq/in.tf
Normal file
15
examples/PACKAGES/electrode/au-aq/in.tf
Normal 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
|
||||
@ -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
|
||||
@ -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
|
||||
154
examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.1
Normal file
154
examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.1
Normal 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
|
||||
155
examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.4
Normal file
155
examples/PACKAGES/electrode/au-aq/log.26Apr2022.au-aq-tf.g++.4
Normal 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
|
||||
29
examples/PACKAGES/electrode/au-aq/settings.mod
Normal file
29
examples/PACKAGES/electrode/au-aq/settings.mod
Normal 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
|
||||
|
||||
1
examples/PACKAGES/electrode/graph-il/.gitignore
vendored
Normal file
1
examples/PACKAGES/electrode/graph-il/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
log.lammps*
|
||||
4783
examples/PACKAGES/electrode/graph-il/data.graph-il
Normal file
4783
examples/PACKAGES/electrode/graph-il/data.graph-il
Normal file
File diff suppressed because it is too large
Load Diff
12
examples/PACKAGES/electrode/graph-il/in.conp
Normal file
12
examples/PACKAGES/electrode/graph-il/in.conp
Normal 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
|
||||
18
examples/PACKAGES/electrode/graph-il/in.conq
Normal file
18
examples/PACKAGES/electrode/graph-il/in.conq
Normal 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
|
||||
35
examples/PACKAGES/electrode/graph-il/in.conq2
Normal file
35
examples/PACKAGES/electrode/graph-il/in.conq2
Normal 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
|
||||
12
examples/PACKAGES/electrode/graph-il/in.etypes
Normal file
12
examples/PACKAGES/electrode/graph-il/in.etypes
Normal 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
|
||||
11
examples/PACKAGES/electrode/graph-il/in.ffield
Normal file
11
examples/PACKAGES/electrode/graph-il/in.ffield
Normal 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
|
||||
13
examples/PACKAGES/electrode/graph-il/in.ramp
Normal file
13
examples/PACKAGES/electrode/graph-il/in.ramp
Normal 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
|
||||
19
examples/PACKAGES/electrode/graph-il/in.thermo
Normal file
19
examples/PACKAGES/electrode/graph-il/in.thermo
Normal 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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
27
examples/PACKAGES/electrode/graph-il/settings.mod
Normal file
27
examples/PACKAGES/electrode/graph-il/settings.mod
Normal 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
|
||||
1
examples/PACKAGES/electrode/planar/.gitignore
vendored
Normal file
1
examples/PACKAGES/electrode/planar/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
log.lammps*
|
||||
600
examples/PACKAGES/electrode/planar/data.au-vac
Normal file
600
examples/PACKAGES/electrode/planar/data.au-vac
Normal 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
|
||||
14
examples/PACKAGES/electrode/planar/in.planar-ewald-ew2d
Normal file
14
examples/PACKAGES/electrode/planar/in.planar-ewald-ew2d
Normal 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
|
||||
14
examples/PACKAGES/electrode/planar/in.planar-ewald-ew3dc
Normal file
14
examples/PACKAGES/electrode/planar/in.planar-ewald-ew3dc
Normal 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
|
||||
13
examples/PACKAGES/electrode/planar/in.planar-ewald-ffield
Normal file
13
examples/PACKAGES/electrode/planar/in.planar-ewald-ffield
Normal 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
|
||||
15
examples/PACKAGES/electrode/planar/in.planar-pppm-ew3dc
Normal file
15
examples/PACKAGES/electrode/planar/in.planar-pppm-ew3dc
Normal 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
|
||||
|
||||
13
examples/PACKAGES/electrode/planar/in.planar-pppm-ffield
Normal file
13
examples/PACKAGES/electrode/planar/in.planar-pppm-ffield
Normal 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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
35
examples/PACKAGES/electrode/planar/settings.mod
Normal file
35
examples/PACKAGES/electrode/planar/settings.mod
Normal 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
|
||||
17
examples/PACKAGES/electrode/planar/test.sh
Normal file
17
examples/PACKAGES/electrode/planar/test.sh
Normal 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
|
||||
1
lib/electrode/Install.py
Symbolic link
1
lib/electrode/Install.py
Symbolic link
@ -0,0 +1 @@
|
||||
../Install.py
|
||||
5
lib/electrode/Makefile.lammps.empty
Normal file
5
lib/electrode/Makefile.lammps.empty
Normal file
@ -0,0 +1,5 @@
|
||||
# Settings that the LAMMPS build will import when this package library is used
|
||||
|
||||
electrode_SYSINC =
|
||||
electrode_SYSLIB =
|
||||
electrode_SYSPATH =
|
||||
5
lib/electrode/Makefile.lammps.installed
Normal file
5
lib/electrode/Makefile.lammps.installed
Normal file
@ -0,0 +1,5 @@
|
||||
# Settings that the LAMMPS build will import when this package library is used
|
||||
|
||||
electrode_SYSINC =
|
||||
electrode_SYSLIB = -lblas -llapack
|
||||
electrode_SYSPATH =
|
||||
5
lib/electrode/Makefile.lammps.linalg
Normal file
5
lib/electrode/Makefile.lammps.linalg
Normal file
@ -0,0 +1,5 @@
|
||||
# Settings that the LAMMPS build will import when this package library is used
|
||||
|
||||
electrode_SYSINC =
|
||||
electrode_SYSLIB = -llinalg -lgfortran
|
||||
electrode_SYSPATH = -L../../lib/linalg$(LIBOBJDIR)
|
||||
48
lib/electrode/Makefile.mpi
Normal file
48
lib/electrode/Makefile.mpi
Normal file
@ -0,0 +1,48 @@
|
||||
SHELL = /bin/sh
|
||||
|
||||
# which file will be copied to Makefile.lammps
|
||||
|
||||
EXTRAMAKE = Makefile.lammps.linalg
|
||||
|
||||
# ------ DEFINITIONS ------
|
||||
|
||||
LIB = libelectrode.a
|
||||
OBJ = $(SRC:.cpp=.o)
|
||||
|
||||
# ------ SETTINGS ------
|
||||
|
||||
# include any MPI settings needed for the ELECTRODE library to build with
|
||||
# the same MPI library that LAMMPS is built with
|
||||
|
||||
CC = mpicxx
|
||||
CCFLAGS = -O3 -fPIC -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX=1
|
||||
|
||||
ARCHIVE = ar
|
||||
ARCHFLAG = -rc
|
||||
DEPFLAGS = -M
|
||||
#LINK =
|
||||
#LINKFLAGS =
|
||||
USRLIB =
|
||||
SYSLIB =
|
||||
|
||||
# ------ MAKE PROCEDURE ------
|
||||
|
||||
lib: $(OBJ)
|
||||
$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
|
||||
@cp $(EXTRAMAKE) Makefile.lammps
|
||||
|
||||
# ------ COMPILE RULES ------
|
||||
|
||||
%.o:%.cpp
|
||||
$(CC) $(CCFLAGS) -c $< -o $@
|
||||
%.d:%.cpp
|
||||
$(CC) $(CCFLAGS) $(DEPFLAGS) $< > $@
|
||||
|
||||
# ------ DEPENDENCIES ------
|
||||
|
||||
DEPENDS = $(OBJ:.o=.d)
|
||||
|
||||
# ------ CLEAN ------
|
||||
|
||||
clean:
|
||||
-rm -f *.d *~ $(OBJ) $(LIB)
|
||||
48
lib/electrode/Makefile.serial
Normal file
48
lib/electrode/Makefile.serial
Normal file
@ -0,0 +1,48 @@
|
||||
SHELL = /bin/sh
|
||||
|
||||
# which file will be copied to Makefile.lammps
|
||||
|
||||
EXTRAMAKE = Makefile.lammps.linalg
|
||||
|
||||
# ------ DEFINITIONS ------
|
||||
|
||||
LIB = libelectrode.a
|
||||
OBJ = $(SRC:.cpp=.o)
|
||||
|
||||
# ------ SETTINGS ------
|
||||
|
||||
# include any MPI settings needed for the ATC library to build with
|
||||
# the same MPI library that LAMMPS is built with
|
||||
|
||||
CC = g++
|
||||
CCFLAGS = -O3 -fPIC -I../../src/STUBS
|
||||
|
||||
ARCHIVE = ar
|
||||
ARCHFLAG = -rc
|
||||
DEPFLAGS = -M
|
||||
#LINK =
|
||||
#LINKFLAGS =
|
||||
USRLIB =
|
||||
SYSLIB =
|
||||
|
||||
# ------ MAKE PROCEDURE ------
|
||||
|
||||
lib: $(OBJ)
|
||||
$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
|
||||
@cp $(EXTRAMAKE) Makefile.lammps
|
||||
|
||||
# ------ COMPILE RULES ------
|
||||
|
||||
%.o:%.cpp
|
||||
$(CC) $(CCFLAGS) -c $< -o $@
|
||||
%.d:%.cpp
|
||||
$(CC) $(CCFLAGS) $(DEPFLAGS) $< > $@
|
||||
|
||||
# ------ DEPENDENCIES ------
|
||||
|
||||
DEPENDS = $(OBJ:.o=.d)
|
||||
|
||||
# ------ CLEAN ------
|
||||
|
||||
clean:
|
||||
-rm -f *.d *~ $(OBJ) $(LIB)
|
||||
@ -78,6 +78,10 @@ if (test $1 = "DPD-BASIC") then
|
||||
depend INTEL
|
||||
fi
|
||||
|
||||
if (test $1 = "ELECTRODE") then
|
||||
depend INTEL
|
||||
fi
|
||||
|
||||
if (test $1 = "EXTRA-COMPUTE") then
|
||||
depend KOKKOS
|
||||
fi
|
||||
|
||||
67
src/ELECTRODE/Install.sh
Executable file
67
src/ELECTRODE/Install.sh
Executable file
@ -0,0 +1,67 @@
|
||||
# Install/unInstall package files in LAMMPS
|
||||
# mode = 0/1/2 for uninstall/install/update
|
||||
|
||||
# this is default Install.sh for all packages
|
||||
# if package has an auxiliary library or a file with a dependency,
|
||||
# then package dir has its own customized Install.sh
|
||||
|
||||
mode=$1
|
||||
|
||||
# enforce using portable C locale
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
|
||||
# arg1 = file, arg2 = file it depends on
|
||||
|
||||
action () {
|
||||
if (test $mode = 0) then
|
||||
rm -f ../$1
|
||||
elif (! cmp -s $1 ../$1) then
|
||||
if (test -z "$2" || test -e ../$2) then
|
||||
cp $1 ..
|
||||
if (test $mode = 2) then
|
||||
echo " updating src/$1"
|
||||
fi
|
||||
fi
|
||||
elif (test -n "$2") then
|
||||
if (test ! -e ../$2) then
|
||||
rm -f ../$1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# all package files with no dependencies
|
||||
|
||||
for file in *.cpp *.h; do
|
||||
test -f ${file} && action $file
|
||||
done
|
||||
|
||||
if (test $1 = 1) then
|
||||
if (test ! -e ../pppm.cpp) then
|
||||
echo "Must install KSPACE package with ELECTRODE"
|
||||
exit 1
|
||||
fi
|
||||
if (test -e ../Makefile.package) then
|
||||
sed -i -e 's/[^ \t]*electrode[^ \t]* //g' ../Makefile.package
|
||||
sed -i -e 's|^PKG_PATH =[ \t]*|&-L../../lib/electrode |' ../Makefile.package
|
||||
sed -i -e 's|^PKG_LIB =[ \t]*|&-lelectrode |' ../Makefile.package
|
||||
sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(electrode_SYSPATH) |' ../Makefile.package
|
||||
sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(electrode_SYSLIB) |' ../Makefile.package
|
||||
fi
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*electrode.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/electrode\/Makefile.lammps
|
||||
' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
elif (test $1 = 0) then
|
||||
if (test -e ../Makefile.package) then
|
||||
sed -i -e 's/[^ \t]*electrode[^ \t]* //g' ../Makefile.package
|
||||
fi
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*electrode.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
fi
|
||||
|
||||
91
src/ELECTRODE/boundary_correction.cpp
Normal file
91
src/ELECTRODE/boundary_correction.cpp
Normal file
@ -0,0 +1,91 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "boundary_correction.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "force.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
// use EW3DC slab correction
|
||||
//
|
||||
BoundaryCorrection::BoundaryCorrection(LAMMPS *lmp) : Pointers(lmp) {}
|
||||
|
||||
void BoundaryCorrection::setup(double x, double y, double z)
|
||||
{
|
||||
xprd_wire = x;
|
||||
yprd_wire = y;
|
||||
zprd_slab = z;
|
||||
volume = x * y * z;
|
||||
area = x * y;
|
||||
qqrd2e = force->qqrd2e;
|
||||
scale = 1.0;
|
||||
}
|
||||
void BoundaryCorrection::setup(double x, double y, double z, double g)
|
||||
{
|
||||
xprd_wire = x;
|
||||
yprd_wire = y;
|
||||
zprd_slab = z;
|
||||
volume = x * y * z;
|
||||
area = x * y;
|
||||
qqrd2e = force->qqrd2e;
|
||||
scale = 1.0;
|
||||
g_ewald = g;
|
||||
}
|
||||
|
||||
std::vector<int> BoundaryCorrection::gather_recvcounts(int n)
|
||||
{
|
||||
int const nprocs = comm->nprocs;
|
||||
std::vector<int> recvcounts = std::vector<int>(nprocs);
|
||||
MPI_Allgather(&n, 1, MPI_INT, &recvcounts.front(), 1, MPI_INT, world);
|
||||
return recvcounts;
|
||||
}
|
||||
|
||||
std::vector<int> BoundaryCorrection::gather_displs(const std::vector<int> &recvcounts)
|
||||
{
|
||||
int const nprocs = comm->nprocs;
|
||||
std::vector<int> displs = std::vector<int>(nprocs);
|
||||
displs[0] = 0;
|
||||
for (int i = 1; i < nprocs; i++) displs[i] = displs[i - 1] + recvcounts[i - 1];
|
||||
return displs;
|
||||
}
|
||||
|
||||
std::vector<bigint> BoundaryCorrection::gather_jmat(bigint *imat)
|
||||
{
|
||||
int nlocal = atom->nlocal;
|
||||
bigint ngroup = 0;
|
||||
int ngrouplocal = 0;
|
||||
for (int i = 0; i < nlocal; i++)
|
||||
if (imat[i] > -1) ngrouplocal++;
|
||||
MPI_Allreduce(&ngrouplocal, &ngroup, 1, MPI_INT, MPI_SUM, world);
|
||||
|
||||
std::vector<bigint> jmat_local = std::vector<bigint>(ngrouplocal);
|
||||
for (int i = 0, n = 0; i < nlocal; i++) {
|
||||
if (imat[i] < 0) continue;
|
||||
jmat_local[n++] = imat[i];
|
||||
}
|
||||
|
||||
// gather global matrix indexing
|
||||
std::vector<bigint> jmat = std::vector<bigint>(ngroup);
|
||||
std::vector<int> recvcounts = gather_recvcounts(ngrouplocal);
|
||||
std::vector<int> displs = gather_displs(recvcounts);
|
||||
MPI_Allgatherv(&jmat_local.front(), ngrouplocal, MPI_LMP_BIGINT, &jmat.front(),
|
||||
&recvcounts.front(), &displs.front(), MPI_LMP_BIGINT, world);
|
||||
return jmat;
|
||||
}
|
||||
49
src/ELECTRODE/boundary_correction.h
Normal file
49
src/ELECTRODE/boundary_correction.h
Normal file
@ -0,0 +1,49 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_BOUNDARY_CORRECTION_H
|
||||
#define LMP_BOUNDARY_CORRECTION_H
|
||||
|
||||
#include "pointers.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class BoundaryCorrection : protected Pointers {
|
||||
public:
|
||||
BoundaryCorrection(LAMMPS *);
|
||||
virtual void vector_corr(double *, int, int, bool){};
|
||||
virtual void matrix_corr(bigint *, double **){};
|
||||
virtual void compute_corr(double, int, int, double &, double *){};
|
||||
void setup(double, double, double);
|
||||
void setup(double, double, double, double);
|
||||
|
||||
protected:
|
||||
double area;
|
||||
double volume;
|
||||
double xprd_wire;
|
||||
double yprd_wire;
|
||||
double zprd_slab;
|
||||
double qqrd2e;
|
||||
double scale;
|
||||
double g_ewald;
|
||||
|
||||
std::vector<bigint> gather_jmat(bigint *);
|
||||
std::vector<int> gather_recvcounts(int);
|
||||
std::vector<int> gather_displs(const std::vector<int> &);
|
||||
};
|
||||
} // namespace LAMMPS_NS
|
||||
#endif
|
||||
33
src/ELECTRODE/electrode_accel_interface.h
Normal file
33
src/ELECTRODE/electrode_accel_interface.h
Normal file
@ -0,0 +1,33 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_ACCEL_INTERFACE_H
|
||||
#define LMP_ELECTRODE_ACCEL_INTERFACE_H
|
||||
|
||||
#include "pointers.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class ElectrodeAccelInterface : protected Pointers {
|
||||
public:
|
||||
ElectrodeAccelInterface(class LAMMPS *lmp) : Pointers(lmp) {}
|
||||
virtual void intel_find_fix() {}
|
||||
virtual void intel_pack_buffers() {}
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
#endif
|
||||
33
src/ELECTRODE/electrode_kspace.h
Normal file
33
src/ELECTRODE/electrode_kspace.h
Normal file
@ -0,0 +1,33 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_KSPACE_H
|
||||
#define LMP_ELECTRODE_KSPACE_H
|
||||
|
||||
#include "lmptype.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
class ElectrodeKSpace {
|
||||
public:
|
||||
virtual void compute_vector(double *, int, int, bool) = 0;
|
||||
virtual void compute_vector_corr(double *, int, int, bool) = 0;
|
||||
virtual void compute_matrix(bigint *, double **, bool) = 0;
|
||||
virtual void compute_matrix_corr(bigint *, double **) = 0;
|
||||
};
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
58
src/ELECTRODE/electrode_math.h
Normal file
58
src/ELECTRODE/electrode_math.h
Normal file
@ -0,0 +1,58 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_MATH_H
|
||||
#define LMP_ELECTRODE_MATH_H
|
||||
|
||||
#include "math_const.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
namespace ElectrodeMath {
|
||||
static constexpr double EWALD_P = 0.3275911;
|
||||
static constexpr double A1 = 0.254829592;
|
||||
static constexpr double A2 = -0.284496736;
|
||||
static constexpr double A3 = 1.421413741;
|
||||
static constexpr double A4 = -1.453152027;
|
||||
static constexpr double A5 = 1.061405429;
|
||||
static constexpr double ERFCMAX = 5.8; // erfc(ERFCMAX) < machine epsilon(double)
|
||||
|
||||
static double safe_erfc(double x)
|
||||
{
|
||||
if (x > ERFCMAX) return 0.;
|
||||
double expm2 = exp(-x * x);
|
||||
double t = 1.0 / (1.0 + EWALD_P * x);
|
||||
return t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2;
|
||||
}
|
||||
|
||||
static double safe_derfcr(double x, double &erfc)
|
||||
{
|
||||
if (x > ERFCMAX) {
|
||||
erfc = 0.;
|
||||
return 0.;
|
||||
}
|
||||
double x2 = x * x;
|
||||
double expm2 = exp(-x2);
|
||||
double t = 1.0 / (1.0 + EWALD_P * x);
|
||||
erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2;
|
||||
return -erfc - 2 * expm2 * x / MathConst::MY_PIS;
|
||||
}
|
||||
} // namespace ElectrodeMath
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
205
src/ELECTRODE/electrode_matrix.cpp
Normal file
205
src/ELECTRODE/electrode_matrix.cpp
Normal file
@ -0,0 +1,205 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "electrode_matrix.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "electrode_kspace.h"
|
||||
#include "electrode_math.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "group.h"
|
||||
#include "kspace.h"
|
||||
#include "math_const.h"
|
||||
#include "neigh_list.h"
|
||||
#include "pair.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace MathConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ElectrodeMatrix::ElectrodeMatrix(LAMMPS *lmp, int electrode_group, double eta) : Pointers(lmp)
|
||||
{
|
||||
igroup = electrode_group; // group of all electrode atoms
|
||||
groupbit = group->bitmask[igroup];
|
||||
ngroup = group->count(igroup);
|
||||
this->eta = eta;
|
||||
tfflag = false;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeMatrix::setup(const std::unordered_map<tagint, int> &tag_ids, class Pair *fix_pair,
|
||||
class NeighList *fix_neighlist)
|
||||
{
|
||||
pair = fix_pair;
|
||||
cutsq = pair->cutsq;
|
||||
list = fix_neighlist;
|
||||
|
||||
electrode_kspace = dynamic_cast<ElectrodeKSpace *>(force->kspace);
|
||||
if (electrode_kspace == nullptr) error->all(FLERR, "KSpace does not implement ElectrodeKSpace");
|
||||
g_ewald = force->kspace->g_ewald;
|
||||
|
||||
tag_to_iele = tag_ids;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeMatrix::setup_tf(const std::map<int, double> &tf_types)
|
||||
{
|
||||
tfflag = true;
|
||||
this->tf_types = tf_types;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeMatrix::compute_array(double **array, bool timer_flag)
|
||||
{
|
||||
// setting all entries of coulomb matrix to zero
|
||||
size_t nbytes = sizeof(double) * ngroup * ngroup;
|
||||
if (nbytes) memset(&array[0][0], 0, nbytes);
|
||||
|
||||
MPI_Barrier(world);
|
||||
double kspace_time = MPI_Wtime();
|
||||
update_mpos();
|
||||
electrode_kspace->compute_matrix(&mpos[0], array, timer_flag);
|
||||
MPI_Barrier(world);
|
||||
if (timer_flag && (comm->me == 0))
|
||||
utils::logmesg(lmp, fmt::format("KSpace time: {:.4g} s\n", MPI_Wtime() - kspace_time));
|
||||
pair_contribution(array);
|
||||
self_contribution(array);
|
||||
electrode_kspace->compute_matrix_corr(&mpos[0], array);
|
||||
if (tfflag) tf_contribution(array);
|
||||
|
||||
// reduce coulomb matrix with contributions from all procs
|
||||
// all procs need to know full matrix for matrix inversion
|
||||
for (int i = 0; i < ngroup; i++) {
|
||||
MPI_Allreduce(MPI_IN_PLACE, &array[i][0], ngroup, MPI_DOUBLE, MPI_SUM, world);
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeMatrix::pair_contribution(double **array)
|
||||
{
|
||||
int inum, jnum, itype, jtype;
|
||||
double xtmp, ytmp, ztmp, delx, dely, delz;
|
||||
double r, rinv, rsq, aij;
|
||||
int *ilist, *jlist, *numneigh, **firstneigh;
|
||||
|
||||
double **x = atom->x;
|
||||
tagint *tag = atom->tag;
|
||||
int *type = atom->type;
|
||||
int *mask = atom->mask;
|
||||
int nlocal = atom->nlocal;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
double etaij = eta * eta / sqrt(2.0 * eta * eta); // see mw ewald theory eq. (29)-(30)
|
||||
|
||||
// neighbor list will be ready because called from post_neighbor
|
||||
inum = list->inum;
|
||||
ilist = list->ilist;
|
||||
numneigh = list->numneigh;
|
||||
firstneigh = list->firstneigh;
|
||||
|
||||
// loop over neighbors of my atoms
|
||||
// skip if I,J are not in 2 groups
|
||||
|
||||
for (int ii = 0; ii < inum; ii++) {
|
||||
int i = ilist[ii];
|
||||
// skip if atom I is not in either group
|
||||
if (!(mask[i] & groupbit)) continue;
|
||||
|
||||
bigint const ipos = mpos[i];
|
||||
xtmp = x[i][0];
|
||||
ytmp = x[i][1];
|
||||
ztmp = x[i][2];
|
||||
itype = type[i];
|
||||
jlist = firstneigh[i];
|
||||
jnum = numneigh[i];
|
||||
|
||||
// real-space part of matrix is symmetric
|
||||
for (int jj = 0; jj < jnum; jj++) {
|
||||
int j = jlist[jj];
|
||||
j &= NEIGHMASK;
|
||||
if (!(mask[j] & groupbit)) continue;
|
||||
|
||||
delx = xtmp - x[j][0]; // neighlists take care of pbc
|
||||
dely = ytmp - x[j][1];
|
||||
delz = ztmp - x[j][2];
|
||||
rsq = delx * delx + dely * dely + delz * delz;
|
||||
jtype = type[j];
|
||||
|
||||
if (rsq < cutsq[itype][jtype]) {
|
||||
r = sqrt(rsq);
|
||||
rinv = 1.0 / r;
|
||||
aij = rinv;
|
||||
aij *= ElectrodeMath::safe_erfc(g_ewald * r);
|
||||
aij -= ElectrodeMath::safe_erfc(etaij * r) * rinv;
|
||||
// newton on or off?
|
||||
if (!(newton_pair || j < nlocal)) aij *= 0.5;
|
||||
bigint jpos = tag_to_iele[tag[j]];
|
||||
array[ipos][jpos] += aij;
|
||||
array[jpos][ipos] += aij;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeMatrix::self_contribution(double **array)
|
||||
{
|
||||
int nlocal = atom->nlocal;
|
||||
int *mask = atom->mask;
|
||||
|
||||
const double selfint = 2.0 / MY_PIS * g_ewald;
|
||||
const double preta = MY_SQRT2 / MY_PIS;
|
||||
|
||||
for (int i = 0; i < nlocal; i++)
|
||||
if (mask[i] & groupbit) { array[mpos[i]][mpos[i]] += preta * eta - selfint; }
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeMatrix::tf_contribution(double **array)
|
||||
{
|
||||
int nlocal = atom->nlocal;
|
||||
int *type = atom->type;
|
||||
int *mask = atom->mask;
|
||||
for (int i = 0; i < nlocal; i++)
|
||||
if (mask[i] & groupbit) array[mpos[i]][mpos[i]] += tf_types[type[i]];
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeMatrix::update_mpos()
|
||||
{
|
||||
int const nall = atom->nlocal + atom->nghost;
|
||||
tagint *tag = atom->tag;
|
||||
int *mask = atom->mask;
|
||||
mpos = std::vector<bigint>(nall, -1);
|
||||
|
||||
for (int i = 0; i < nall; i++) {
|
||||
if (mask[i] & groupbit)
|
||||
mpos[i] = tag_to_iele[tag[i]];
|
||||
else
|
||||
mpos[i] = -1;
|
||||
}
|
||||
}
|
||||
58
src/ELECTRODE/electrode_matrix.h
Normal file
58
src/ELECTRODE/electrode_matrix.h
Normal file
@ -0,0 +1,58 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_MATRIX_H
|
||||
#define LMP_ELECTRODE_MATRIX_H
|
||||
|
||||
#include "pointers.h"
|
||||
|
||||
#include <map>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class ElectrodeMatrix : protected Pointers {
|
||||
public:
|
||||
ElectrodeMatrix(class LAMMPS *, int, double);
|
||||
void setup(const std::unordered_map<tagint, int> &, class Pair *, class NeighList *);
|
||||
void setup_tf(const std::map<int, double> &);
|
||||
void compute_array(double **, bool);
|
||||
int igroup;
|
||||
|
||||
private:
|
||||
int groupbit;
|
||||
bigint ngroup;
|
||||
double **cutsq;
|
||||
double g_ewald, eta;
|
||||
bool tfflag;
|
||||
std::map<int, double> tf_types;
|
||||
std::unordered_map<tagint, int> tag_to_iele;
|
||||
bool assigned;
|
||||
std::vector<bigint> mpos;
|
||||
class Pair *pair;
|
||||
class NeighList *list;
|
||||
class ElectrodeKSpace *electrode_kspace;
|
||||
|
||||
void update_mpos();
|
||||
void pair_contribution(double **);
|
||||
void self_contribution(double **);
|
||||
void tf_contribution(double **);
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
152
src/ELECTRODE/electrode_vector.cpp
Normal file
152
src/ELECTRODE/electrode_vector.cpp
Normal file
@ -0,0 +1,152 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "electrode_vector.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "electrode_kspace.h"
|
||||
#include "electrode_math.h"
|
||||
#include "error.h"
|
||||
#include "force.h"
|
||||
#include "group.h"
|
||||
#include "kspace.h"
|
||||
#include "neigh_list.h"
|
||||
#include "pair.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
ElectrodeVector::ElectrodeVector(LAMMPS *lmp, int sensor_group, int source_group, double eta,
|
||||
bool invert_source) :
|
||||
Pointers(lmp)
|
||||
{
|
||||
igroup = sensor_group; // group of all atoms at which we calculate potential
|
||||
this->source_group = source_group; // group of all atoms influencing potential
|
||||
this->invert_source = invert_source;
|
||||
groupbit = group->bitmask[igroup];
|
||||
ngroup = group->count(igroup);
|
||||
source_grpbit = group->bitmask[source_group];
|
||||
this->eta = eta;
|
||||
|
||||
kspace_time_total = 0;
|
||||
pair_time_total = 0;
|
||||
boundary_time_total = 0;
|
||||
b_time_total = 0;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ElectrodeVector::~ElectrodeVector()
|
||||
{
|
||||
if (timer_flag && (comm->me == 0)) {
|
||||
utils::logmesg(lmp, fmt::format("B time: {:.4g} s\n", b_time_total));
|
||||
utils::logmesg(lmp, fmt::format("B kspace time: {:.4g} s\n", kspace_time_total));
|
||||
utils::logmesg(lmp, fmt::format("B pair time: {:.4g} s\n", pair_time_total));
|
||||
utils::logmesg(lmp, fmt::format("B boundary time: {:.4g} s\n", boundary_time_total));
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeVector::setup(class Pair *fix_pair, class NeighList *fix_neighlist, bool timer_flag)
|
||||
{
|
||||
pair = fix_pair;
|
||||
cutsq = pair->cutsq;
|
||||
list = fix_neighlist;
|
||||
this->timer_flag = timer_flag;
|
||||
|
||||
electrode_kspace = dynamic_cast<ElectrodeKSpace *>(force->kspace);
|
||||
if (electrode_kspace == nullptr) error->all(FLERR, "KSpace does not implement ElectrodeKSpace");
|
||||
g_ewald = force->kspace->g_ewald;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeVector::compute_vector(double *vector)
|
||||
{
|
||||
MPI_Barrier(world);
|
||||
double start_time = MPI_Wtime();
|
||||
// pair
|
||||
double pair_start_time = MPI_Wtime();
|
||||
pair_contribution(vector);
|
||||
MPI_Barrier(world);
|
||||
pair_time_total += MPI_Wtime() - pair_start_time;
|
||||
// kspace
|
||||
double kspace_start_time = MPI_Wtime();
|
||||
electrode_kspace->compute_vector(vector, groupbit, source_grpbit, invert_source);
|
||||
MPI_Barrier(world);
|
||||
kspace_time_total += MPI_Wtime() - kspace_start_time;
|
||||
// boundary
|
||||
double boundary_start_time = MPI_Wtime();
|
||||
electrode_kspace->compute_vector_corr(vector, groupbit, source_grpbit, invert_source);
|
||||
MPI_Barrier(world);
|
||||
boundary_time_total += MPI_Wtime() - boundary_start_time;
|
||||
b_time_total += MPI_Wtime() - start_time;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void ElectrodeVector::pair_contribution(double *vector)
|
||||
{
|
||||
double **x = atom->x;
|
||||
double *q = atom->q;
|
||||
int *type = atom->type;
|
||||
int *mask = atom->mask;
|
||||
// neighbor list will be ready because called from post_neighbor
|
||||
int const nlocal = atom->nlocal;
|
||||
int const inum = list->inum;
|
||||
int *ilist = list->ilist;
|
||||
int *numneigh = list->numneigh;
|
||||
int **firstneigh = list->firstneigh;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
for (int ii = 0; ii < inum; ii++) {
|
||||
int const i = ilist[ii];
|
||||
bool const i_in_sensor = (mask[i] & groupbit);
|
||||
bool const i_in_source = !!(mask[i] & source_grpbit) != invert_source;
|
||||
double const xtmp = x[i][0];
|
||||
double const ytmp = x[i][1];
|
||||
double const ztmp = x[i][2];
|
||||
int itype = type[i];
|
||||
int *jlist = firstneigh[i];
|
||||
int jnum = numneigh[i];
|
||||
for (int jj = 0; jj < jnum; jj++) {
|
||||
int const j = jlist[jj] & NEIGHMASK;
|
||||
bool const j_in_sensor = (mask[j] & groupbit);
|
||||
bool const j_in_source = !!(mask[j] & source_grpbit) != invert_source;
|
||||
bool const compute_ij = i_in_sensor && j_in_source;
|
||||
bool const compute_ji = (newton_pair || j < nlocal) && (j_in_sensor && i_in_source);
|
||||
if (!(compute_ij || compute_ji)) continue;
|
||||
double const delx = xtmp - x[j][0]; // neighlists take care of pbc
|
||||
double const dely = ytmp - x[j][1];
|
||||
double const delz = ztmp - x[j][2];
|
||||
double const rsq = delx * delx + dely * dely + delz * delz;
|
||||
int jtype = type[j];
|
||||
if (rsq >= cutsq[itype][jtype]) continue;
|
||||
double const r = sqrt(rsq);
|
||||
double const rinv = 1.0 / r;
|
||||
double aij = rinv;
|
||||
aij *= ElectrodeMath::safe_erfc(g_ewald * r);
|
||||
aij -= ElectrodeMath::safe_erfc(eta * r) * rinv;
|
||||
if (i_in_sensor) {
|
||||
vector[i] += aij * q[j];
|
||||
} else if (j_in_sensor) {
|
||||
vector[j] += aij * q[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
55
src/ELECTRODE/electrode_vector.h
Normal file
55
src/ELECTRODE/electrode_vector.h
Normal file
@ -0,0 +1,55 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_ELECTRODE_VECTOR_H
|
||||
#define LMP_ELECTRODE_VECTOR_H
|
||||
|
||||
#include "pointers.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class ElectrodeVector : protected Pointers {
|
||||
public:
|
||||
ElectrodeVector(class LAMMPS *, int, int, double, bool);
|
||||
~ElectrodeVector() override;
|
||||
void setup(class Pair *, class NeighList *, bool);
|
||||
void compute_vector(double *);
|
||||
int igroup, source_group;
|
||||
|
||||
private:
|
||||
bool invert_source;
|
||||
int groupbit, source_grpbit;
|
||||
bigint ngroup;
|
||||
double **cutsq;
|
||||
double g_ewald, eta;
|
||||
class Pair *pair;
|
||||
class NeighList *list;
|
||||
class ElectrodeKSpace *electrode_kspace;
|
||||
|
||||
void pair_contribution(double *);
|
||||
|
||||
double kspace_time_total;
|
||||
double pair_time_total;
|
||||
double boundary_time_total;
|
||||
double b_time_total;
|
||||
|
||||
bool timer_flag;
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
1157
src/ELECTRODE/ewald_electrode.cpp
Normal file
1157
src/ELECTRODE/ewald_electrode.cpp
Normal file
File diff suppressed because it is too large
Load Diff
61
src/ELECTRODE/ewald_electrode.h
Normal file
61
src/ELECTRODE/ewald_electrode.h
Normal file
@ -0,0 +1,61 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef KSPACE_CLASS
|
||||
// clang-format off
|
||||
KSpaceStyle(ewald/electrode, EwaldElectrode);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_EWALD_ELECTRODE_H
|
||||
#define LMP_EWALD_ELECTRODE_H
|
||||
|
||||
#include "electrode_kspace.h"
|
||||
#include "ewald.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class EwaldElectrode : public Ewald, public ElectrodeKSpace {
|
||||
public:
|
||||
EwaldElectrode(class LAMMPS *);
|
||||
~EwaldElectrode() override;
|
||||
void init() override;
|
||||
void setup() override;
|
||||
void compute(int, int) override;
|
||||
void compute_group_group(int, int, int) override;
|
||||
|
||||
// k-space part of coulomb matrix computation
|
||||
void compute_vector(double *, int, int, bool) override;
|
||||
void compute_vector_corr(double *, int, int, bool) override;
|
||||
void compute_matrix(bigint *, double **, bool) override;
|
||||
void compute_matrix_corr(bigint *, double **) override;
|
||||
|
||||
protected:
|
||||
class BoundaryCorrection *boundcorr;
|
||||
double area;
|
||||
void coeffs() override;
|
||||
void eik_dot_r() override;
|
||||
|
||||
private:
|
||||
int eikr_step;
|
||||
void update_eikr(bool);
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
1290
src/ELECTRODE/fix_electrode_conp.cpp
Normal file
1290
src/ELECTRODE/fix_electrode_conp.cpp
Normal file
File diff suppressed because it is too large
Load Diff
153
src/ELECTRODE/fix_electrode_conp.h
Normal file
153
src/ELECTRODE/fix_electrode_conp.h
Normal file
@ -0,0 +1,153 @@
|
||||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
// clang-format off
|
||||
FixStyle(electrode/conp, FixElectrodeConp);
|
||||
// clang-format on
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_ELECTRODE_CONP_H
|
||||
#define LMP_FIX_ELECTRODE_CONP_H
|
||||
|
||||
#include "electrode_accel_interface.h"
|
||||
#include "fix.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <map>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixElectrodeConp : public Fix {
|
||||
public:
|
||||
FixElectrodeConp(class LAMMPS *, int, char **);
|
||||
~FixElectrodeConp() override;
|
||||
int setmask() override;
|
||||
void setup_pre_exchange() override;
|
||||
void setup_post_neighbor() override;
|
||||
void setup_pre_reverse(int, int) override;
|
||||
void pre_force(int) override;
|
||||
void pre_reverse(int, int) override;
|
||||
double compute_scalar() override;
|
||||
double compute_vector(int) override;
|
||||
int modify_param(int, char **) override;
|
||||
int modify_param(const std::string &);
|
||||
void init() override;
|
||||
void init_list(int, NeighList *) override;
|
||||
void post_constructor() override; // used by ffield to set up fix efield
|
||||
double memory_usage() override;
|
||||
|
||||
// atomvec-based tracking of electrode atoms
|
||||
int pack_exchange(int, double *) override;
|
||||
int unpack_exchange(int, double *) override;
|
||||
|
||||
int pack_reverse_comm(int, int, double *) override;
|
||||
void unpack_reverse_comm(int, int *, double *) override;
|
||||
|
||||
protected:
|
||||
virtual void update_psi();
|
||||
virtual void pre_update(){};
|
||||
virtual void compute_macro_matrices();
|
||||
std::vector<double> group_psi;
|
||||
std::vector<int> group_bits;
|
||||
int num_of_groups;
|
||||
bigint ngroup;
|
||||
std::vector<std::vector<double>> sd_vectors;
|
||||
std::vector<double> sb_charges;
|
||||
std::vector<int> group_psi_var_ids, group_psi_var_styles;
|
||||
std::vector<std::string> group_psi_var_names;
|
||||
bool symm; // symmetrize elastance for charge neutrality
|
||||
std::vector<std::vector<double>> macro_elastance; // used by conq
|
||||
std::vector<std::vector<double>> macro_capacitance; // used by thermo
|
||||
double thermo_temp, thermo_time; // used by electrode/thermo only
|
||||
int thermo_init; // initializer for rng in electrode/thermo
|
||||
bool ffield; // possibly tweak electrode/conq's version
|
||||
std::string fixname; // used by electrode/ffield to set up internal efield
|
||||
bool intelflag;
|
||||
ElectrodeAccelInterface *accel_interface; // used by /intel
|
||||
|
||||
private:
|
||||
FILE *f_inv, *f_mat, *f_vec; // files for capacitance, eleastance and vector
|
||||
std::string input_file_inv, input_file_mat;
|
||||
class ElectrodeMatrix *array_compute;
|
||||
class ElectrodeVector *ele_vector;
|
||||
std::vector<int> groups;
|
||||
double **capacitance;
|
||||
bool read_inv, read_mat;
|
||||
double eta;
|
||||
double update_time, mult_time;
|
||||
void create_taglist();
|
||||
void invert();
|
||||
void symmetrize();
|
||||
double gausscorr(int, bool);
|
||||
void update_charges();
|
||||
double potential_energy(int);
|
||||
double self_energy(int);
|
||||
void write_to_file(FILE *, const std::vector<tagint> &, const std::vector<std::vector<double>> &);
|
||||
void read_from_file(std::string input_file, double **, const std::string &);
|
||||
void compute_sd_vectors();
|
||||
void compute_sd_vectors_ffield();
|
||||
std::vector<int> setvars_types, setvars_groups, setvars_vars;
|
||||
void update_setvars(int);
|
||||
int groupnum_from_name(char *);
|
||||
double evscale;
|
||||
class Pair *pair;
|
||||
class NeighList *mat_neighlist, *vec_neighlist;
|
||||
std::vector<int> etypes;
|
||||
int mat_request, vec_request;
|
||||
void request_etypes_neighlists();
|
||||
bool etypes_neighlists;
|
||||
int get_top_group(); // used by ffield
|
||||
int top_group; // used by ffield
|
||||
bool tfflag;
|
||||
bool timer_flag;
|
||||
std::map<int, double> tf_types;
|
||||
|
||||
// fix-specific electrode ID storage system:
|
||||
|
||||
std::vector<tagint> taglist; // global list: all tags in combined electrode group
|
||||
std::vector<tagint> taglist_bygroup; // taglist sorted by group
|
||||
std::vector<tagint> group_idx; // permutation taglist<->taglist_bygroup
|
||||
std::unordered_map<tagint, int> tag_to_iele; // inverse of taglist:
|
||||
std::vector<int> iele_to_group;
|
||||
// tag_to_iele[taglist[iele]] = iele
|
||||
int nlocalele; // current no. of local electrode atoms
|
||||
|
||||
int nlocalele_outdated; // trigger rebuilding of following structures:
|
||||
std::vector<int> list_iele; // electrode IDs owned by me
|
||||
int *recvcounts, *displs; // for MPI-building of iele_gathered
|
||||
int *iele_gathered; // MPIgathered list_iele: all electrode IDs, nproc-ordered
|
||||
std::vector<double> buf_iele; // buffer for electrode properties ordered by list_iele
|
||||
double *buf_gathered; // buffer for MPIgathered buf_iele (NOT YET iele-ordered)
|
||||
double *potential_i; // potentials, i-indexed (0 for non-electrode atoms)
|
||||
double *potential_iele; // potentials ordered by iele
|
||||
double *charge_iele; // charges ordered by iele
|
||||
|
||||
void gather_list_iele(); // build iele_gathered
|
||||
void gather_elevec(double *); // gather buf_iele and rearrange into iele-order
|
||||
void buffer_and_gather(double *, double *); // buffer into buf_iele then gather and rearrange
|
||||
|
||||
int nmax;
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
60
src/ELECTRODE/fix_electrode_conq.cpp
Normal file
60
src/ELECTRODE/fix_electrode_conq.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_electrode_conq.h"
|
||||
|
||||
#include "error.h"
|
||||
#include "fix_electrode_conp.h"
|
||||
#include "input.h"
|
||||
#include "variable.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
#define SMALL 0.00001
|
||||
|
||||
enum { CONST, EQUAL };
|
||||
|
||||
// 0 1 2 3 4
|
||||
// fix fxupdate group1 electrode/conp pot1 eta couple group2 pot2
|
||||
FixElectrodeConq::FixElectrodeConq(LAMMPS *lmp, int narg, char **arg) :
|
||||
FixElectrodeConp(lmp, narg, arg)
|
||||
{
|
||||
// copy const-style values across because update_psi will change group_psi
|
||||
group_q = group_psi;
|
||||
|
||||
if (symm) { error->all(FLERR, "Keyword symm on not allowed in electrode/conq"); }
|
||||
}
|
||||
|
||||
void FixElectrodeConq::update_psi()
|
||||
{
|
||||
// don't need MPI_Barrier because always preceded by MPI_Allreduce
|
||||
for (int g = 0; g < num_of_groups; g++) {
|
||||
if (group_psi_var_styles[g] == CONST) continue;
|
||||
group_q[g] = input->variable->compute_equal(group_psi_var_ids[g]);
|
||||
}
|
||||
|
||||
std::vector<double> group_remainder_q(num_of_groups);
|
||||
for (int g = 0; g < num_of_groups; g++) { group_remainder_q[g] = group_q[g] - sb_charges[g]; }
|
||||
|
||||
for (int g = 0; g < num_of_groups; g++) {
|
||||
double vtmp = 0;
|
||||
for (int h = 0; h < num_of_groups; h++) {
|
||||
vtmp += macro_elastance[g][h] * group_remainder_q[h];
|
||||
}
|
||||
group_psi[g] = vtmp;
|
||||
}
|
||||
}
|
||||
45
src/ELECTRODE/fix_electrode_conq.h
Normal file
45
src/ELECTRODE/fix_electrode_conq.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
// clang-format off
|
||||
FixStyle(electrode/conq, FixElectrodeConq);
|
||||
// clang-format on
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_ELECTRODE_CONQ_H
|
||||
#define LMP_FIX_ELECTRODE_CONQ_H
|
||||
|
||||
#include "fix_electrode_conp.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixElectrodeConq : public FixElectrodeConp {
|
||||
public:
|
||||
FixElectrodeConq(class LAMMPS *, int, char **);
|
||||
void update_psi() override;
|
||||
|
||||
private:
|
||||
std::vector<double> group_q;
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
109
src/ELECTRODE/fix_electrode_thermo.cpp
Normal file
109
src/ELECTRODE/fix_electrode_thermo.cpp
Normal file
@ -0,0 +1,109 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "fix_electrode_thermo.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "error.h"
|
||||
#include "fix_electrode_conp.h"
|
||||
#include "force.h"
|
||||
#include "input.h"
|
||||
#include "random_mars.h"
|
||||
#include "update.h"
|
||||
#include "variable.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
#define NUM_GROUPS 2
|
||||
#define SMALL 0.00001
|
||||
|
||||
enum { CONST, EQUAL };
|
||||
|
||||
// 0 1 2 3 4
|
||||
// fix fxupdate group1 electrode/thermo pot1 eta couple group2 pot2
|
||||
FixElectrodeThermo::FixElectrodeThermo(LAMMPS *lmp, int narg, char **arg) :
|
||||
FixElectrodeConp(lmp, narg, arg)
|
||||
{
|
||||
if (num_of_groups != NUM_GROUPS)
|
||||
error->all(FLERR, "Number of electrodes != two in electrode/thermo");
|
||||
if (group_psi_var_styles[0] != group_psi_var_styles[1])
|
||||
error->all(FLERR, "Potentials in electrode/thermo must have same style");
|
||||
if (symm) error->all(FLERR, "Keyword symm on not allowed in electrode/thermo");
|
||||
if (thermo_time < SMALL) error->all(FLERR, "Keyword temp not set or zero in electrode/thermo");
|
||||
|
||||
thermo_random = new RanMars(lmp, thermo_init);
|
||||
if (group_psi_var_styles[0] == CONST) delta_psi_0 = group_psi[1] - group_psi[0];
|
||||
}
|
||||
|
||||
void FixElectrodeThermo::compute_macro_matrices()
|
||||
{
|
||||
FixElectrodeConp::compute_macro_matrices();
|
||||
vac_cap = (macro_capacitance[0][0] * macro_capacitance[1][1] -
|
||||
macro_capacitance[0][1] * macro_capacitance[0][1]) /
|
||||
(macro_capacitance[0][0] + macro_capacitance[1][1] + 2 * macro_capacitance[0][1]);
|
||||
}
|
||||
|
||||
void FixElectrodeThermo::pre_update()
|
||||
{
|
||||
// total electrode charges after last step, required for update psi
|
||||
int const nlocal = atom->nlocal;
|
||||
int *mask = atom->mask;
|
||||
double *q = atom->q;
|
||||
for (int g = 0; g < NUM_GROUPS; g++) {
|
||||
group_q_old[g] = 0.;
|
||||
for (int i = 0; i < nlocal; i++) {
|
||||
if (mask[i] & group_bits[g]) { group_q_old[g] += q[i]; }
|
||||
}
|
||||
}
|
||||
MPI_Allreduce(MPI_IN_PLACE, &group_q_old, NUM_GROUPS, MPI_DOUBLE, MPI_SUM, world);
|
||||
}
|
||||
|
||||
void FixElectrodeThermo::update_psi()
|
||||
{
|
||||
double const dt = update->dt;
|
||||
|
||||
// group_q_eff is charge that corresponds to potential after previous step
|
||||
double group_q_eff[NUM_GROUPS] = {0., 0.};
|
||||
for (int g = 0; g < NUM_GROUPS; g++) { group_q_eff[g] = group_q_old[g] - sb_charges[g]; }
|
||||
double group_psi_old[NUM_GROUPS] = {0., 0.};
|
||||
for (int g = 0; g < NUM_GROUPS; g++) {
|
||||
double vtmp = 0;
|
||||
for (int h = 0; h < NUM_GROUPS; h++) { vtmp += macro_elastance[g][h] * group_q_eff[h]; }
|
||||
group_psi_old[g] = vtmp;
|
||||
}
|
||||
double const delta_psi = group_psi_old[1] - group_psi_old[0];
|
||||
|
||||
// target potential difference from input parameters
|
||||
if (group_psi_var_styles[0] != CONST) {
|
||||
delta_psi_0 = input->variable->compute_equal(group_psi_var_ids[1]) -
|
||||
input->variable->compute_equal(group_psi_var_ids[0]);
|
||||
}
|
||||
|
||||
double delta_charge = 0.5 * (group_q_old[1] - group_q_old[0]) -
|
||||
vac_cap * (delta_psi - delta_psi_0) * (1. - exp(-dt / thermo_time));
|
||||
delta_charge += sqrt((thermo_temp * vac_cap) * (1. - exp(-2. * dt / thermo_time))) *
|
||||
thermo_random->gaussian();
|
||||
|
||||
double const group_remainder_q[NUM_GROUPS] = {-delta_charge - sb_charges[0],
|
||||
delta_charge - sb_charges[1]};
|
||||
|
||||
for (int g = 0; g < NUM_GROUPS; g++) {
|
||||
double vtmp = 0;
|
||||
for (int h = 0; h < NUM_GROUPS; h++) { vtmp += macro_elastance[g][h] * group_remainder_q[h]; }
|
||||
group_psi[g] = vtmp;
|
||||
}
|
||||
}
|
||||
51
src/ELECTRODE/fix_electrode_thermo.h
Normal file
51
src/ELECTRODE/fix_electrode_thermo.h
Normal file
@ -0,0 +1,51 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
// clang-format off
|
||||
FixStyle(electrode/thermo, FixElectrodeThermo);
|
||||
// clang-format on
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_ELECTRODE_THERMO_H
|
||||
#define LMP_FIX_ELECTRODE_THERMO_H
|
||||
|
||||
#include "fix_electrode_conp.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixElectrodeThermo : public FixElectrodeConp {
|
||||
public:
|
||||
FixElectrodeThermo(class LAMMPS *, int, char **);
|
||||
void update_psi() override;
|
||||
void pre_update() override;
|
||||
|
||||
protected:
|
||||
private:
|
||||
void compute_macro_matrices() override;
|
||||
class RanMars *thermo_random;
|
||||
double delta_psi_0;
|
||||
double group_q_old[2];
|
||||
double vac_cap;
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
1694
src/ELECTRODE/pppm_electrode.cpp
Normal file
1694
src/ELECTRODE/pppm_electrode.cpp
Normal file
File diff suppressed because it is too large
Load Diff
127
src/ELECTRODE/pppm_electrode.h
Normal file
127
src/ELECTRODE/pppm_electrode.h
Normal file
@ -0,0 +1,127 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef KSPACE_CLASS
|
||||
// clang-format off
|
||||
KSpaceStyle(pppm/electrode, PPPMElectrode);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_PPPM_ELECTRODE_H
|
||||
#define LMP_PPPM_ELECTRODE_H
|
||||
|
||||
#include "electrode_kspace.h"
|
||||
#include "pppm.h"
|
||||
|
||||
#if defined(FFT_FFTW3)
|
||||
#define LMP_FFT_LIB "FFTW3"
|
||||
#elif defined(FFT_MKL)
|
||||
#define LMP_FFT_LIB "MKL FFT"
|
||||
#elif defined(FFT_CUFFT)
|
||||
#define LMP_FFT_LIB "cuFFT"
|
||||
#else
|
||||
#define LMP_FFT_LIB "KISS FFT"
|
||||
#endif
|
||||
|
||||
#ifdef FFT_SINGLE
|
||||
typedef float FFT_SCALAR;
|
||||
#define LMP_FFT_PREC "single"
|
||||
#define MPI_FFT_SCALAR MPI_FLOAT
|
||||
#else
|
||||
|
||||
typedef double FFT_SCALAR;
|
||||
#define LMP_FFT_PREC "double"
|
||||
#define MPI_FFT_SCALAR MPI_DOUBLE
|
||||
#endif
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class PPPMElectrode : public PPPM, public ElectrodeKSpace {
|
||||
public:
|
||||
PPPMElectrode(class LAMMPS *);
|
||||
~PPPMElectrode() override;
|
||||
void init() override;
|
||||
void setup() override;
|
||||
void setup_grid() override;
|
||||
void compute(int, int) override;
|
||||
|
||||
void compute_vector(double *, int, int, bool) override;
|
||||
void compute_vector_corr(double *, int, int, bool) override;
|
||||
void compute_matrix(bigint *, double **, bool) override;
|
||||
void compute_matrix_corr(bigint *, double **) override;
|
||||
|
||||
void compute_group_group(int, int, int) override;
|
||||
|
||||
protected:
|
||||
FFT_SCALAR ***electrolyte_density_brick;
|
||||
FFT_SCALAR *electrolyte_density_fft;
|
||||
class BoundaryCorrection *boundcorr;
|
||||
|
||||
void set_grid_global() override;
|
||||
void set_grid_local() override;
|
||||
|
||||
void allocate() override;
|
||||
void deallocate() override;
|
||||
void allocate_peratom() override;
|
||||
double compute_df_kspace() override;
|
||||
double compute_qopt() override;
|
||||
void compute_gf_ik() override;
|
||||
void compute_gf_ad() override;
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
denominator for Hockney-Eastwood Green's function
|
||||
of x,y,z = sin(kx*deltax/2), etc
|
||||
|
||||
inf n-1
|
||||
S(n,k) = Sum W(k+pi*j)**2 = Sum b(l)*(z*z)**l
|
||||
j=-inf l=0
|
||||
|
||||
= -(z*z)**n /(2n-1)! * (d/dx)**(2n-1) cot(x) at z = sin(x)
|
||||
gf_b = denominator expansion coeffs
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
inline double gf_denom(const double &x, const double &y, const double &z) const
|
||||
{
|
||||
double sx, sy, sz;
|
||||
sz = sy = sx = 0.0;
|
||||
for (int l = order - 1; l >= 0; l--) {
|
||||
sx = gf_b[l] + sx * x;
|
||||
sy = gf_b[l] + sy * y;
|
||||
sz = gf_b[l] + sz * z;
|
||||
}
|
||||
double s = sx * sy * sz;
|
||||
return s * s;
|
||||
};
|
||||
|
||||
private:
|
||||
int compute_step;
|
||||
int last_source_grpbit;
|
||||
bool last_invert_source;
|
||||
void start_compute();
|
||||
void make_rho_in_brick(int, FFT_SCALAR ***, bool);
|
||||
void project_psi(double *, int);
|
||||
void one_step_multiplication(bigint *, const std::vector<double> &, double **, double **,
|
||||
int const, bool);
|
||||
void two_step_multiplication(bigint *, const std::vector<double> &, double **, double **,
|
||||
int const, bool);
|
||||
bool compute_vector_called;
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
167
src/ELECTRODE/slab_2d.cpp
Normal file
167
src/ELECTRODE/slab_2d.cpp
Normal file
@ -0,0 +1,167 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "slab_2d.h"
|
||||
|
||||
#include "atom.h"
|
||||
#include "comm.h"
|
||||
#include "domain.h"
|
||||
#include "math_const.h"
|
||||
#include "memory.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace MathConst;
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Slab-geometry correction term (k=0) of EW2D. See Hu, JCTC 10:12 (2014)
|
||||
pp. 5254-5264 or metalwalls ewald and parallelization documentation.
|
||||
------------------------------------------------------------------------- */
|
||||
Slab2d::Slab2d(LAMMPS *lmp) : BoundaryCorrection(lmp){};
|
||||
|
||||
void Slab2d::compute_corr(double /*qsum*/, int eflag_atom, int eflag_global, double &energy,
|
||||
double *eatom)
|
||||
{
|
||||
double *q = atom->q;
|
||||
double **x = atom->x;
|
||||
double **f = atom->f;
|
||||
int nlocal = atom->nlocal;
|
||||
bigint natoms = atom->natoms;
|
||||
|
||||
std::vector<double> z = std::vector<double>(nlocal);
|
||||
for (int i = 0; i < nlocal; i++) z[i] = x[i][2];
|
||||
std::vector<double> z_all = std::vector<double>(natoms);
|
||||
std::vector<double> q_all = std::vector<double>(natoms);
|
||||
std::vector<int> recvcounts = gather_recvcounts(nlocal);
|
||||
std::vector<int> displs = gather_displs(recvcounts);
|
||||
MPI_Allgatherv(q, nlocal, MPI_DOUBLE, &q_all.front(), &recvcounts.front(), &displs.front(),
|
||||
MPI_DOUBLE, world);
|
||||
MPI_Allgatherv(&z.front(), nlocal, MPI_DOUBLE, &z_all.front(), &recvcounts.front(),
|
||||
&displs.front(), MPI_DOUBLE, world);
|
||||
|
||||
const double g_ewald_inv = 1.0 / g_ewald;
|
||||
const double qscale = qqrd2e * scale;
|
||||
const double ffact = qscale * MY_2PI / area;
|
||||
const double efact = qscale * MY_PIS / area;
|
||||
double e_keq0 = 0;
|
||||
for (int i = 0; i < nlocal; i++) {
|
||||
double pot_ij = 0.0;
|
||||
|
||||
for (bigint j = 0; j < natoms; j++) {
|
||||
double const zij = z_all[j] - x[i][2];
|
||||
double const g_zij = g_ewald * zij;
|
||||
|
||||
// coulomb potential; see eq. (4) in metalwalls parallelization doc
|
||||
pot_ij += q_all[j] * (exp(-g_zij * g_zij) * g_ewald_inv + MY_PIS * zij * erf(g_zij));
|
||||
f[i][2] -= ffact * q[i] * q_all[j] * erf(g_zij);
|
||||
}
|
||||
|
||||
// per-atom energy; see eq. (20) in metalwalls ewald doc
|
||||
if (eflag_atom) eatom[i] -= efact * q[i] * pot_ij; // TODO check if 0.5 factor
|
||||
if (eflag_global) e_keq0 -= q[i] * pot_ij;
|
||||
}
|
||||
if (eflag_global) {
|
||||
MPI_Allreduce(MPI_IN_PLACE, &e_keq0, 1, MPI_DOUBLE, MPI_SUM, world);
|
||||
energy += efact * e_keq0;
|
||||
}
|
||||
}
|
||||
|
||||
void Slab2d::vector_corr(double *vec, int sensor_grpbit, int source_grpbit, bool invert_source)
|
||||
{
|
||||
int const nlocal = atom->nlocal;
|
||||
double **x = atom->x;
|
||||
double *q = atom->q;
|
||||
int *mask = atom->mask;
|
||||
std::vector<double> z_local; // z coordinates of electrolyte atoms
|
||||
std::vector<double> q_local; // charges of electrolyte atoms
|
||||
for (int i = 0; i < nlocal; i++) {
|
||||
if (!!(mask[i] & source_grpbit) != invert_source) {
|
||||
z_local.push_back(x[i][2]);
|
||||
q_local.push_back(q[i]);
|
||||
}
|
||||
}
|
||||
|
||||
int n_electrolyte_local = z_local.size();
|
||||
int n_electrolyte;
|
||||
MPI_Allreduce(&n_electrolyte_local, &n_electrolyte, 1, MPI_INT, MPI_SUM, world);
|
||||
std::vector<double> z_all = std::vector<double>(n_electrolyte);
|
||||
std::vector<double> q_all = std::vector<double>(n_electrolyte);
|
||||
std::vector<int> recvcounts = gather_recvcounts(n_electrolyte_local);
|
||||
std::vector<int> displs = gather_displs(recvcounts);
|
||||
MPI_Allgatherv(&z_local.front(), n_electrolyte_local, MPI_DOUBLE, &z_all.front(),
|
||||
&recvcounts.front(), &displs.front(), MPI_DOUBLE, world);
|
||||
MPI_Allgatherv(&q_local.front(), n_electrolyte_local, MPI_DOUBLE, &q_all.front(),
|
||||
&recvcounts.front(), &displs.front(), MPI_DOUBLE, world);
|
||||
double const prefac = 2 * MY_PIS / area;
|
||||
for (int i = 0; i < nlocal; i++) {
|
||||
if (!(mask[i] & sensor_grpbit)) continue;
|
||||
double b = 0;
|
||||
double zi = x[i][2];
|
||||
for (size_t j = 0; j < z_all.size(); j++) {
|
||||
double zij = z_all[j] - zi;
|
||||
double gzij = g_ewald * zij;
|
||||
double zfac = (gzij > 7)
|
||||
? MY_PIS * zij
|
||||
: exp(-(gzij * gzij)) / g_ewald + MY_PIS * zij * erf(gzij); // avoid exp underflow
|
||||
b += q_all[j] * zfac;
|
||||
}
|
||||
vec[i] -= prefac * b;
|
||||
}
|
||||
}
|
||||
|
||||
void Slab2d::matrix_corr(bigint *imat, double **matrix)
|
||||
{
|
||||
int nlocal = atom->nlocal;
|
||||
double **x = atom->x;
|
||||
|
||||
// how many local and total group atoms?
|
||||
int ngrouplocal = 0;
|
||||
for (int i = 0; i < nlocal; i++)
|
||||
if (imat[i] > -1) ngrouplocal++;
|
||||
bigint ngroup = 0;
|
||||
MPI_Allreduce(&ngrouplocal, &ngroup, 1, MPI_INT, MPI_SUM, world);
|
||||
|
||||
// gather non-periodic positions of groups
|
||||
std::vector<double> nprd_local = std::vector<double>(ngrouplocal);
|
||||
for (int i = 0, n = 0; i < nlocal; i++) {
|
||||
if (imat[i] < 0) continue;
|
||||
nprd_local[n++] = x[i][2];
|
||||
}
|
||||
|
||||
// gather subsets nprd positions
|
||||
std::vector<int> recvcounts = gather_recvcounts(ngrouplocal);
|
||||
std::vector<int> displs = gather_displs(recvcounts);
|
||||
std::vector<double> nprd_all = std::vector<double>(ngroup);
|
||||
MPI_Allgatherv(&nprd_local.front(), ngrouplocal, MPI_DOUBLE, &nprd_all.front(),
|
||||
&recvcounts.front(), &displs.front(), MPI_DOUBLE, world);
|
||||
|
||||
const double g_ewald_inv = 1.0 / g_ewald;
|
||||
const double g_ewald_sq = g_ewald * g_ewald;
|
||||
const double prefac = 2.0 * MY_PIS / area;
|
||||
std::vector<bigint> jmat = gather_jmat(imat);
|
||||
for (int i = 0; i < nlocal; i++) {
|
||||
if (imat[i] < 0) continue;
|
||||
for (bigint j = 0; j < ngroup; j++) {
|
||||
// matrix is symmetric
|
||||
if (jmat[j] > imat[i]) continue;
|
||||
double dij = nprd_all[j] - x[i][2];
|
||||
double aij =
|
||||
prefac * (exp(-dij * dij * g_ewald_sq) * g_ewald_inv + MY_PIS * dij * erf(dij * g_ewald));
|
||||
matrix[imat[i]][jmat[j]] -= aij;
|
||||
if (imat[i] != jmat[j]) matrix[jmat[j]][imat[i]] -= aij;
|
||||
}
|
||||
}
|
||||
}
|
||||
35
src/ELECTRODE/slab_2d.h
Normal file
35
src/ELECTRODE/slab_2d.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://www.lammps.org/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
Contributing authors: Ludwig Ahrens-Iwers (TUHH), Shern Tee (UQ), Robert Meißner (TUHH)
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_SLAB_2D_H
|
||||
#define LMP_SLAB_2D_H
|
||||
|
||||
#include "boundary_correction.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class Slab2d : public BoundaryCorrection {
|
||||
public:
|
||||
Slab2d(LAMMPS *);
|
||||
void vector_corr(double *, int, int, bool) override;
|
||||
void matrix_corr(bigint *, double **) override;
|
||||
void compute_corr(double, int, int, double &, double *) override;
|
||||
void setup(double);
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user