Merge branch 'develop' into fortran-fix-external
This commit is contained in:
@ -50,7 +50,7 @@ parallel each MPI process creates such an instance. This can be seen
|
||||
in the ``main.cpp`` file where the core steps of running a LAMMPS
|
||||
simulation are the following 3 lines of code:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
LAMMPS *lammps = new LAMMPS(argc, argv, lammps_comm);
|
||||
lammps->input->file();
|
||||
@ -232,7 +232,7 @@ macro ``PairStyle()`` will associate the style name "lj/cut"
|
||||
with a factory function creating an instance of the ``PairLJCut``
|
||||
class.
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
// from force.h
|
||||
typedef Pair *(*PairCreator)(LAMMPS *);
|
||||
@ -360,7 +360,7 @@ characters; "{:<8}" would do this as left aligned, "{:^8}" as centered,
|
||||
argument type must be compatible or else the {fmt} formatting code will
|
||||
throw an exception. Some format string examples are given below:
|
||||
|
||||
.. code-block:: C
|
||||
.. code-block:: c++
|
||||
|
||||
auto mesg = fmt::format(" CPU time: {:4d}:{:02d}:{:02d}\n", cpuh, cpum, cpus);
|
||||
mesg = fmt::format("{:<8s}| {:<10.5g} | {:<10.5g} | {:<10.5g} |{:6.1f} |{:6.2f}\n",
|
||||
|
||||
@ -105,7 +105,7 @@ list, where each pair of atoms is listed only once (except when the
|
||||
pairs straddling sub-domains or periodic boundaries will be listed twice).
|
||||
Thus these are the default settings when a neighbor list request is created in:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
void Pair::init_style()
|
||||
{
|
||||
@ -129,7 +129,7 @@ neighbor list request to the specific needs of a style an additional
|
||||
request flag is needed. The :doc:`tersoff <pair_tersoff>` pair style,
|
||||
for example, needs a "full" neighbor list:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
void PairTersoff::init_style()
|
||||
{
|
||||
@ -141,7 +141,7 @@ When a pair style supports r-RESPA time integration with different cutoff region
|
||||
the request flag may depend on the corresponding r-RESPA settings. Here an example
|
||||
from pair style lj/cut:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
void PairLJCut::init_style()
|
||||
{
|
||||
@ -160,7 +160,7 @@ Granular pair styles need neighbor lists based on particle sizes and not cutoff
|
||||
and also may require to have the list of previous neighbors available ("history").
|
||||
For example with:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
if (use_history) neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_HISTORY);
|
||||
else neighbor->add_request(this, NeighConst::REQ_SIZE);
|
||||
@ -170,7 +170,7 @@ settings each request can set an id which is then used in the corresponding
|
||||
``init_list()`` function to assign it to the suitable pointer variable. This is
|
||||
done for example by the :doc:`pair style meam <pair_meam>`:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
void PairMEAM::init_style()
|
||||
{
|
||||
@ -189,7 +189,7 @@ just once) and this can also be indicated by a flag. As an example here
|
||||
is the request from the ``FixPeriNeigh`` class which is created
|
||||
internally by :doc:`Peridynamics pair styles <pair_peri>`:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL);
|
||||
|
||||
@ -198,7 +198,7 @@ than what is usually inferred from the pair style settings (largest cutoff of
|
||||
all pair styles plus neighbor list skin). The following is used in the
|
||||
:doc:`compute rdf <compute_rdf>` command implementation:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
if (cutflag)
|
||||
neighbor->add_request(this, NeighConst::REQ_OCCASIONAL)->set_cutoff(mycutneigh);
|
||||
@ -212,7 +212,7 @@ for printing the neighbor list summary the name of the requesting command
|
||||
should be set. Below is the request from the :doc:`delete atoms <delete_atoms>`
|
||||
command:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
neighbor->add_request(this, "delete_atoms", NeighConst::REQ_FULL);
|
||||
|
||||
|
||||
@ -95,7 +95,7 @@ a class ``PairMorse2`` in the files ``pair_morse2.h`` and
|
||||
``pair_morse2.cpp`` with the factory function and initialization
|
||||
function would look like this:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
#include "lammpsplugin.h"
|
||||
#include "version.h"
|
||||
@ -141,7 +141,7 @@ list of argument strings), then the pointer type is ``lammpsplugin_factory2``
|
||||
and it must be assigned to the *creator.v2* member of the plugin struct.
|
||||
Below is an example for that:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
#include "lammpsplugin.h"
|
||||
#include "version.h"
|
||||
@ -176,7 +176,7 @@ demonstrated in the following example, which also shows that the
|
||||
implementation of the plugin class may be within the same source
|
||||
file as the plugin interface code:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
#include "lammpsplugin.h"
|
||||
|
||||
|
||||
@ -194,7 +194,7 @@ macro. These tests operate by capturing the screen output when executing
|
||||
the failing command and then comparing that with a provided regular
|
||||
expression string pattern. Example:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
TEST_F(SimpleCommandsTest, UnknownCommand)
|
||||
{
|
||||
@ -249,7 +249,7 @@ MPI support. These include tests where LAMMPS is run in multi-partition
|
||||
mode or only on a subset of the MPI world communicator. The CMake
|
||||
script code for adding this kind of test looks like this:
|
||||
|
||||
.. code-block:: CMake
|
||||
.. code-block:: cmake
|
||||
|
||||
if (BUILD_MPI)
|
||||
add_executable(test_library_mpi test_library_mpi.cpp)
|
||||
|
||||
@ -61,7 +61,7 @@ header file needs to be updated accordingly.
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
int PairEAM::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc)
|
||||
{
|
||||
@ -75,7 +75,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
int PairEAM::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc)
|
||||
{
|
||||
@ -112,14 +112,14 @@ Example from a pair style:
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
if (eflag || vflag) ev_setup(eflag, vflag);
|
||||
else evflag = vflag_fdotr = eflag_global = eflag_atom = 0;
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
ev_init(eflag, vflag);
|
||||
|
||||
@ -142,14 +142,14 @@ when they are called from only one or a subset of the MPI processes.
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
val = force->numeric(FLERR, arg[1]);
|
||||
num = force->inumeric(FLERR, arg[2]);
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
val = utils::numeric(FLERR, true, arg[1], lmp);
|
||||
num = utils::inumeric(FLERR, false, arg[2], lmp);
|
||||
@ -183,14 +183,14 @@ copy them around for simulations.
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
fp = force->open_potential(filename);
|
||||
fp = fopen(filename, "r");
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
fp = utils::open_potential(filename, lmp);
|
||||
|
||||
@ -207,7 +207,7 @@ Example:
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
if (fptr == NULL) {
|
||||
char str[128];
|
||||
@ -217,7 +217,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
if (fptr == nullptr)
|
||||
error->one(FLERR, "Cannot open AEAM potential file {}: {}", filename, utils::getsyserror());
|
||||
@ -237,7 +237,7 @@ an example from the ``FixWallReflect`` class:
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
FixWallReflect(class LAMMPS *, int, char **);
|
||||
virtual ~FixWallReflect();
|
||||
@ -247,7 +247,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
FixWallReflect(class LAMMPS *, int, char **);
|
||||
~FixWallReflect() override;
|
||||
@ -271,7 +271,7 @@ the type of the "this" pointer argument.
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
comm->forward_comm_pair(this);
|
||||
comm->forward_comm_fix(this);
|
||||
@ -284,7 +284,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
comm->forward_comm(this);
|
||||
comm->reverse_comm(this);
|
||||
@ -304,7 +304,7 @@ requests can be :doc:`found here <Developer_notes>`. Example from the
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
int irequest = neighbor->request(this,instance_me);
|
||||
neighbor->requests[irequest]->pair = 0;
|
||||
@ -317,7 +317,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL);
|
||||
if (cutflag) req->set_cutoff(mycutneigh);
|
||||
@ -340,7 +340,7 @@ these are internal fixes, there is no user visible change.
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
#include "fix_store.h"
|
||||
|
||||
@ -351,7 +351,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
#include "fix_store_peratom.h"
|
||||
|
||||
@ -362,7 +362,7 @@ New:
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
#include "fix_store.h"
|
||||
|
||||
@ -373,7 +373,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
#include "fix_store_global.h"
|
||||
|
||||
@ -396,7 +396,7 @@ the dump directly. Example:
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
int idump = output->find_dump(arg[iarg+1]);
|
||||
if (idump < 0)
|
||||
@ -412,7 +412,7 @@ Old:
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
auto idump = output->get_dump_by_id(arg[iarg+1]);
|
||||
if (!idump) error->all(FLERR,"Dump ID {} in hyper command does not exist", arg[iarg+1]);
|
||||
|
||||
@ -317,7 +317,7 @@ are all "whitespace" characters, i.e. the space character, the tabulator
|
||||
character, the carriage return character, the linefeed character, and
|
||||
the form feed character.
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
:caption: Tokenizer class example listing entries of the PATH environment variable
|
||||
|
||||
#include "tokenizer.h"
|
||||
@ -349,7 +349,7 @@ tokenizer into a ``try`` / ``catch`` block to handle errors. The
|
||||
when a (type of) number is requested as next token that is not
|
||||
compatible with the string representing the next word.
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
:caption: ValueTokenizer class example with exception handling
|
||||
|
||||
#include "tokenizer.h"
|
||||
@ -427,7 +427,7 @@ one or two array indices "[<number>]" with numbers > 0.
|
||||
|
||||
A typical code segment would look like this:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
:caption: Usage example for ArgInfo class
|
||||
|
||||
int nvalues = 0;
|
||||
@ -476,7 +476,7 @@ open the file, and will call the :cpp:class:`LAMMPS_NS::Error` class in
|
||||
case of failures to read or to convert numbers, so that LAMMPS will be
|
||||
aborted.
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
:caption: Use of PotentialFileReader class in pair style coul/streitz
|
||||
|
||||
PotentialFileReader reader(lmp, file, "coul/streitz");
|
||||
@ -555,7 +555,7 @@ chunk size needs to be known in advance, 2) with :cpp:func:`MyPage::vget()
|
||||
its size is registered later with :cpp:func:`MyPage::vgot()
|
||||
<LAMMPS_NS::MyPage::vgot>`.
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
:caption: Example of using :cpp:class:`MyPage <LAMMPS_NS::MyPage>`
|
||||
|
||||
#include "my_page.h"
|
||||
|
||||
@ -26,7 +26,7 @@ constructor with the signature: ``FixPrintVel(class LAMMPS *, int, char **)``.
|
||||
Every fix must be registered in LAMMPS by writing the following lines
|
||||
of code in the header before include guards:
|
||||
|
||||
.. code-block:: c
|
||||
.. code-block:: c++
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
// clang-format off
|
||||
@ -47,7 +47,7 @@ keyword when it parses the input script.
|
||||
Let's write a simple fix which will print the average velocity at the end
|
||||
of each timestep. First of all, implement a constructor:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
FixPrintVel::FixPrintVel(LAMMPS *lmp, int narg, char **arg)
|
||||
: Fix(lmp, narg, arg)
|
||||
@ -72,7 +72,7 @@ in the Fix class called ``nevery`` which specifies how often the method
|
||||
|
||||
The next method we need to implement is ``setmask()``:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
int FixPrintVel::setmask()
|
||||
{
|
||||
@ -87,7 +87,7 @@ during execution. The constant ``END_OF_STEP`` corresponds to the
|
||||
are called during a timestep and the order in which they are called
|
||||
are shown in the previous section.
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
void FixPrintVel::end_of_step()
|
||||
{
|
||||
@ -143,7 +143,7 @@ The group membership information of an atom is contained in the *mask*
|
||||
property of and atom and the bit corresponding to a given group is
|
||||
stored in the groupbit variable which is defined in Fix base class:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
for (int i = 0; i < nlocal; ++i) {
|
||||
if (atom->mask[i] & groupbit) {
|
||||
@ -174,7 +174,7 @@ to store positions of atoms from previous timestep, we need to add
|
||||
``double** xold`` to the header file. Than add allocation code
|
||||
to the constructor:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
FixSavePos::FixSavePos(LAMMPS *lmp, int narg, char **arg), xold(nullptr)
|
||||
{
|
||||
@ -190,7 +190,7 @@ to the constructor:
|
||||
|
||||
Implement the aforementioned methods:
|
||||
|
||||
.. code-block:: C++
|
||||
.. code-block:: c++
|
||||
|
||||
double FixSavePos::memory_usage()
|
||||
{
|
||||
|
||||
@ -152,14 +152,14 @@ Creating a new instance of PyLammps
|
||||
To create a PyLammps object you need to first import the class from the lammps
|
||||
module. By using the default constructor, a new *lammps* instance is created.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import PyLammps
|
||||
L = PyLammps()
|
||||
|
||||
You can also initialize PyLammps on top of this existing *lammps* object:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import lammps, PyLammps
|
||||
lmp = lammps()
|
||||
@ -180,14 +180,14 @@ For instance, let's take the following LAMMPS command:
|
||||
In the original interface this command can be executed with the following
|
||||
Python code if *L* was a lammps instance:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.command("region box block 0 10 0 5 -0.5 0.5")
|
||||
|
||||
With the PyLammps interface, any command can be split up into arbitrary parts
|
||||
separated by white-space, passed as individual arguments to a region method.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.region("box block", 0, 10, 0, 5, -0.5, 0.5)
|
||||
|
||||
@ -199,14 +199,14 @@ The benefit of this approach is avoiding redundant command calls and easier
|
||||
parameterization. In the original interface parameterization needed to be done
|
||||
manually by creating formatted strings.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.command("region box block %f %f %f %f %f %f" % (xlo, xhi, ylo, yhi, zlo, zhi))
|
||||
|
||||
In contrast, methods of PyLammps accept parameters directly and will convert
|
||||
them automatically to a final command string.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.region("box block", xlo, xhi, ylo, yhi, zlo, zhi)
|
||||
|
||||
@ -256,7 +256,7 @@ LAMMPS variables can be both defined and accessed via the PyLammps interface.
|
||||
|
||||
To define a variable you can use the :doc:`variable <variable>` command:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.variable("a index 2")
|
||||
|
||||
@ -265,14 +265,14 @@ A dictionary of all variables is returned by L.variables
|
||||
you can access an individual variable by retrieving a variable object from the
|
||||
L.variables dictionary by name
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
a = L.variables['a']
|
||||
|
||||
The variable value can then be easily read and written by accessing the value
|
||||
property of this object.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
print(a.value)
|
||||
a.value = 4
|
||||
@ -284,7 +284,7 @@ LAMMPS expressions can be immediately evaluated by using the eval method. The
|
||||
passed string parameter can be any expression containing global thermo values,
|
||||
variables, compute or fix data.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
result = L.eval("ke") # kinetic energy
|
||||
result = L.eval("pe") # potential energy
|
||||
@ -298,7 +298,7 @@ All atoms in the current simulation can be accessed by using the L.atoms list.
|
||||
Each element of this list is an object which exposes its properties (id, type,
|
||||
position, velocity, force, etc.).
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
# access first atom
|
||||
L.atoms[0].id
|
||||
@ -311,7 +311,7 @@ position, velocity, force, etc.).
|
||||
|
||||
Some properties can also be used to set:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
# set position in 2D simulation
|
||||
L.atoms[0].position = (1.0, 0.0)
|
||||
@ -328,7 +328,7 @@ after a run via the L.runs list. This list contains a growing list of run data.
|
||||
The first element is the output of the first run, the second element that of
|
||||
the second run.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.run(1000)
|
||||
L.runs[0] # data of first 1000 time steps
|
||||
@ -339,14 +339,14 @@ the second run.
|
||||
Each run contains a dictionary of all trajectories. Each trajectory is
|
||||
accessible through its thermo name:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.runs[0].thermo.Step # list of time steps in first run
|
||||
L.runs[0].thermo.Ke # list of kinetic energy values in first run
|
||||
|
||||
Together with matplotlib plotting data out of LAMMPS becomes simple:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
import matplotlib.plot as plt
|
||||
steps = L.runs[0].thermo.Step
|
||||
@ -406,7 +406,7 @@ Four atoms are placed in the simulation and the dihedral potential is applied on
|
||||
them using a datafile. Then one of the atoms is rotated along the central axis by
|
||||
setting its position from Python, which changes the dihedral angle.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
phi = [d \* math.pi / 180 for d in range(360)]
|
||||
|
||||
@ -439,7 +439,7 @@ Initially, a 2D system is created in a state with minimal energy.
|
||||
|
||||
It is then disordered by moving each atom by a random delta.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
random.seed(27848)
|
||||
deltaperturb = 0.2
|
||||
@ -458,7 +458,7 @@ It is then disordered by moving each atom by a random delta.
|
||||
Finally, the Monte Carlo algorithm is implemented in Python. It continuously
|
||||
moves random atoms by a random delta and only accepts certain moves.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
estart = L.eval("pe")
|
||||
elast = estart
|
||||
@ -517,7 +517,7 @@ PyLammps can be run in parallel using mpi4py. This python package can be install
|
||||
The following is a short example which reads in an existing LAMMPS input file and
|
||||
executes it in parallel. You can find in.melt in the examples/melt folder.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from mpi4py import MPI
|
||||
from lammps import PyLammps
|
||||
|
||||
@ -43,7 +43,7 @@ JSON
|
||||
"ke": $(ke)
|
||||
}""" file current_state.json screen no
|
||||
|
||||
.. code-block:: JSON
|
||||
.. code-block:: json
|
||||
:caption: current_state.json
|
||||
|
||||
{
|
||||
|
||||
@ -39,7 +39,7 @@ crashes within LAMMPS may be recovered from by enabling
|
||||
:ref:`exceptions <exceptions>`, avoiding them proactively is a safer
|
||||
approach.
|
||||
|
||||
.. code-block:: C
|
||||
.. code-block:: c
|
||||
:caption: Example for using configuration settings functions
|
||||
|
||||
#include "library.h"
|
||||
|
||||
@ -22,7 +22,7 @@ as the "handle" argument in subsequent function calls until that
|
||||
instance is destroyed by calling :cpp:func:`lammps_close`. Here is a
|
||||
simple example demonstrating its use:
|
||||
|
||||
.. code-block:: C
|
||||
.. code-block:: c
|
||||
|
||||
#include "library.h"
|
||||
#include <stdio.h>
|
||||
|
||||
@ -30,7 +30,7 @@ be included in the file or strings, and expansion of variables with
|
||||
``${name}`` or ``$(expression)`` syntax is performed.
|
||||
Below is a short example using some of these functions.
|
||||
|
||||
.. code-block:: C
|
||||
.. code-block:: c
|
||||
|
||||
/* define to make the otherwise hidden prototype for "lammps_open()" visible */
|
||||
#define LAMMPS_LIB_MPI
|
||||
|
||||
@ -32,7 +32,7 @@ indexed accordingly. Per-atom data can change sizes and ordering at
|
||||
every neighbor list rebuild or atom sort event as atoms migrate between
|
||||
sub-domains and processors.
|
||||
|
||||
.. code-block:: C
|
||||
.. code-block:: c
|
||||
|
||||
#include "library.h"
|
||||
#include <stdio.h>
|
||||
|
||||
@ -13,24 +13,65 @@ Here is a brief description of common methods you define in your
|
||||
new derived class. See bond.h, angle.h, dihedral.h, and improper.h
|
||||
for details and specific additional methods.
|
||||
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| init | check if all coefficients are set, calls *init_style* (optional) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| init_style | check if style specific conditions are met (optional) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| compute | compute the molecular interactions (required) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| settings | apply global settings for all types (optional) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| coeff | set coefficients for one type (required) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| equilibrium_distance | length of bond, used by SHAKE (required, bond only) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| equilibrium_angle | opening of angle, used by SHAKE (required, angle only) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| write & read_restart | writes/reads coeffs to restart files (required) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| single | force (bond only) and energy of a single bond or angle (required, bond or angle only) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
| memory_usage | tally memory allocated by the style (optional) |
|
||||
+-----------------------+---------------------------------------------------------------------------------------+
|
||||
+-----------------------+---------------------------------------------------------------------+
|
||||
| Required | "pure" methods that *must* be overridden in a derived class |
|
||||
+=======================+=====================================================================+
|
||||
| compute | compute the molecular interactions for all listed items |
|
||||
+-----------------------+---------------------------------------------------------------------+
|
||||
| coeff | set coefficients for one type |
|
||||
+-----------------------+---------------------------------------------------------------------+
|
||||
| equilibrium_distance | length of bond, used by SHAKE (bond styles only) |
|
||||
+-----------------------+---------------------------------------------------------------------+
|
||||
| equilibrium_angle | opening of angle, used by SHAKE (angle styles only) |
|
||||
+-----------------------+---------------------------------------------------------------------+
|
||||
| write & read_restart | writes/reads coeffs to restart files |
|
||||
+-----------------------+---------------------------------------------------------------------+
|
||||
| single | force/r (bond styles only) and energy of a single bond or angle |
|
||||
+-----------------------+---------------------------------------------------------------------+
|
||||
|
||||
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| Optional | methods that have a default or dummy implementation |
|
||||
+================================+======================================================================+
|
||||
| init | check if all coefficients are set, calls init_style() |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| init_style | check if style specific conditions are met |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| settings | apply global settings for all types |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| write & read_restart_settings | writes/reads global style settings to restart files |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| write_data | write corresponding Coeffs section(s) in data file |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| memory_usage | tally memory allocated by the style |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| extract | provide access to internal data (bond or angle styles only) |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| reinit | reset all type-based parameters, called by fix adapt (bonds only) |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| pack & unpack_forward_comm | copy data to and from buffer in forward communication (bonds only) |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
| pack & unpack_reverse_comm | copy data to and from buffer in reverse communication (bonds only) |
|
||||
+--------------------------------+----------------------------------------------------------------------+
|
||||
|
||||
Here is a list of flags or settings that should be set in the
|
||||
constructor of the derived class when they differ from the default
|
||||
setting.
|
||||
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
| Name of flag | Description | default |
|
||||
+=================================+==============================================================================+=========+
|
||||
| writedata | 1 if write_data() is implemented | 1 |
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
| single_extra | number of extra single values calculated (bond styles only) | 0 |
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
| partial_flag | 1 if bond type can be set to 0 and deleted (bond styles only) | 0 |
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
| reinitflag | 1 if style has reinit() and is compatible with fix adapt | 1 |
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
| comm_forward | size of buffer (in doubles) for forward communication (bond styles only) | 0 |
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
| comm_reverse | size of buffer (in doubles) for reverse communication (bond styles only) | 0 |
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
| comm_reverse_off | size of buffer for reverse communication with newton off (bond styles only) | 0 |
|
||||
+---------------------------------+------------------------------------------------------------------------------+---------+
|
||||
|
||||
@ -1,35 +1,121 @@
|
||||
Pair styles
|
||||
===========
|
||||
|
||||
Classes that compute pairwise interactions are derived from the Pair
|
||||
class. In LAMMPS, pairwise calculation include many-body potentials
|
||||
such as EAM or Tersoff where particles interact without a static bond
|
||||
topology. New styles can be created to add new pair potentials to
|
||||
LAMMPS.
|
||||
Classes that compute pairwise non-bonded interactions are derived from
|
||||
the Pair class. In LAMMPS, pairwise calculation include many-body
|
||||
potentials such as EAM, Tersoff, or ReaxFF where particles interact
|
||||
without an explicit bond topology but include interactions beyond
|
||||
pairwise non-bonded contributions. New styles can be created to add
|
||||
support for additional pair potentials to LAMMPS. When the
|
||||
modifications are small, sometimes it is more effective to derive from
|
||||
an existing pair style class. This latter approach is also used by
|
||||
:doc:`Accelerator packages <Speed_packages>` where the accelerated style
|
||||
names differ from their base classes by an appended suffix.
|
||||
|
||||
Pair_lj_cut.cpp is a simple example of a Pair class, though it
|
||||
includes some optional methods to enable its use with rRESPA.
|
||||
The file ``src/pair_lj_cut.cpp`` is an example of a Pair class with a
|
||||
very simple potential function. It includes several optional methods to
|
||||
enable its use with :doc:`run_style respa <run_style>` and :doc:`compute
|
||||
group/group <compute_group_group>`.
|
||||
|
||||
Here is a brief description of the class methods in pair.h:
|
||||
Here is a brief list of some the class methods in the Pair class that
|
||||
*must* be or *may* be overridden in a derived class.
|
||||
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| Required | "pure" methods that *must* be overridden in a derived class |
|
||||
+=================================+=====================================================================+
|
||||
| compute | workhorse routine that computes pairwise interactions |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| settings | reads the input script line with arguments you define |
|
||||
| settings | processes the arguments to the pair_style command |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| coeff | set coefficients for one i,j type pair |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| init_one | perform initialization for one i,j type pair |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| init_style | initialization specific to this pair style |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| write & read_restart | write/read i,j pair coeffs to restart files |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| write & read_restart_settings | write/read global settings to restart files |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| single | force/r and energy of a single pairwise interaction between 2 atoms |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
| compute_inner/middle/outer | versions of compute used by rRESPA |
|
||||
| coeff | set coefficients for one i,j type pair, called from pair_coeff |
|
||||
+---------------------------------+---------------------------------------------------------------------+
|
||||
|
||||
The inner/middle/outer routines are optional.
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| Optional | methods that have a default or dummy implementation |
|
||||
+=================================+======================================================================+
|
||||
| init_one | perform initialization for one i,j type pair |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| init_style | style initialization: request neighbor list(s), error checks |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| init_list | Neighbor class callback function to pass neighbor list to pair style |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| single | force/r and energy of a single pairwise interaction between 2 atoms |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| compute_inner/middle/outer | versions of compute used by rRESPA |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| memory_usage | return estimated amount of memory used by the pair style |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| modify_params | process arguments to pair_modify command |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| extract | provide access to internal scalar or per-type data like cutoffs |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| extract_peratom | provide access to internal per-atom data |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| setup | initialization at the beginning of a run |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| finish | called at the end of a run, e.g. to print |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write & read_restart | write/read i,j pair coeffs to restart files |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write & read_restart_settings | write/read global settings to restart files |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write_data | write Pair Coeffs section to data file |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| write_data_all | write PairIJ Coeffs section to data file |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| pack & unpack_forward_comm | copy data to and from buffer if style uses forward communication |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| pack & unpack_reverse_comm | copy data to and from buffer if style uses reverse communication |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| reinit | reset all type-based parameters, called by fix adapt for example |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
| reset_dt | called when the time step is changed by timestep or fix reset/dt |
|
||||
+---------------------------------+----------------------------------------------------------------------+
|
||||
|
||||
Here is a list of flags or settings that should be set in the
|
||||
constructor of the derived pair class when they differ from the default
|
||||
setting.
|
||||
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| Name of flag | Description | default |
|
||||
+=================================+=============================================================+=========+
|
||||
| single_enable | 1 if single() method is implemented, 0 if missing | 1 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| respa_enable | 1 if pair style has compute_inner/middle/outer() | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| restartinfo | 1 if pair style writes its settings to a restart | 1 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| one_coeff | 1 if only a pair_coeff * * command is allowed | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| manybody_flag | 1 if pair style is a manybody potential | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| unit_convert_flag | value != 0 indicates support for unit conversion | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| no_virial_fdotr_compute | 1 if pair style does not call virial_fdotr_compute() | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| writedata | 1 if write_data() and write_data_all() are implemented | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| comm_forward | size of buffer (in doubles) for forward communication | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| comm_reverse | size of buffer (in doubles) for reverse communication | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| ghostneigh | 1 if cutghost is set and style uses neighbors of ghosts | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| finitecutflag | 1 if cutoff depends on diameter of atoms | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| reinitflag | 1 if style has reinit() and is compatible with fix adapt | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| ewaldflag | 1 if compatible with kspace_style ewald | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| pppmflag | 1 if compatible with kspace_style pppm | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| msmflag | 1 if compatible with kspace_style msm | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| dispersionflag | 1 if compatible with ewald/disp or pppm/disp | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| tip4pflag | 1 if compatible with kspace_style pppm/tip4p | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| dipoleflag | 1 if compatible with dipole kspace_style | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
| spinflag | 1 if compatible with spin kspace_style | 0 |
|
||||
+---------------------------------+-------------------------------------------------------------+---------+
|
||||
|
||||
@ -58,7 +58,7 @@ against invalid accesses.
|
||||
Each element of this list is a :py:class:`Atom <lammps.Atom>` or :py:class:`Atom2D <lammps.Atom2D>` object. The attributes of
|
||||
these objects provide access to their data (id, type, position, velocity, force, etc.):
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
# access first atom
|
||||
L.atoms[0].id
|
||||
@ -71,7 +71,7 @@ against invalid accesses.
|
||||
|
||||
Some attributes can be changed:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
# set position in 2D simulation
|
||||
L.atoms[0].position = (1.0, 0.0)
|
||||
|
||||
@ -4,7 +4,7 @@ Configuration information
|
||||
The following methods can be used to query the LAMMPS library
|
||||
about compile time settings and included packages and styles.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
:caption: Example for using configuration settings functions
|
||||
|
||||
from lammps import lammps
|
||||
|
||||
@ -74,7 +74,7 @@ Here are simple examples using all three Python interfaces:
|
||||
:py:class:`PyLammps <lammps.PyLammps>` objects can also be created on top of an existing
|
||||
:py:class:`lammps <lammps.lammps>` object:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import lammps, PyLammps
|
||||
...
|
||||
@ -113,7 +113,7 @@ Here are simple examples using all three Python interfaces:
|
||||
|
||||
You can also initialize IPyLammps on top of an existing :py:class:`lammps` or :py:class:`PyLammps` object:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import lammps, IPyLammps
|
||||
...
|
||||
@ -142,7 +142,7 @@ the MPI and/or Kokkos environment if enabled and active.
|
||||
Note that you can create multiple LAMMPS objects in your Python
|
||||
script, and coordinate and run multiple simulations, e.g.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import lammps
|
||||
lmp1 = lammps()
|
||||
|
||||
@ -7,7 +7,7 @@ current Python process with an error message. C++ exceptions allow capturing
|
||||
them on the C++ side and rethrowing them on the Python side. This way
|
||||
LAMMPS errors can be handled through the Python exception handling mechanism.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import lammps, MPIAbortException
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ it is possible to "compute" what the next LAMMPS command should be.
|
||||
can be executed using with the lammps API with the following Python code if ``lmp`` is an
|
||||
instance of :py:class:`lammps <lammps.lammps>`:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import lammps
|
||||
|
||||
@ -73,7 +73,7 @@ it is possible to "compute" what the next LAMMPS command should be.
|
||||
The arguments of the command can be passed as one string, or
|
||||
individually.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import PyLammps
|
||||
|
||||
@ -93,14 +93,14 @@ it is possible to "compute" what the next LAMMPS command should be.
|
||||
parameterization. In the lammps API parameterization needed to be done
|
||||
manually by creating formatted command strings.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
lmp.command("region box block %f %f %f %f %f %f" % (xlo, xhi, ylo, yhi, zlo, zhi))
|
||||
|
||||
In contrast, methods of PyLammps accept parameters directly and will convert
|
||||
them automatically to a final command string.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.region("box block", xlo, xhi, ylo, yhi, zlo, zhi)
|
||||
|
||||
|
||||
@ -56,7 +56,7 @@ and you should see the same output as if you had typed
|
||||
|
||||
Note that without the mpi4py specific lines from ``test.py``
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from lammps import lammps
|
||||
lmp = lammps()
|
||||
|
||||
@ -76,7 +76,7 @@ computes, fixes, or variables in LAMMPS using the :py:mod:`lammps` module.
|
||||
|
||||
To define a variable you can use the :doc:`variable <variable>` command:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
L.variable("a index 2")
|
||||
|
||||
@ -85,14 +85,14 @@ computes, fixes, or variables in LAMMPS using the :py:mod:`lammps` module.
|
||||
you can access an individual variable by retrieving a variable object from the
|
||||
``L.variables`` dictionary by name
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
a = L.variables['a']
|
||||
|
||||
The variable value can then be easily read and written by accessing the value
|
||||
property of this object.
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
print(a.value)
|
||||
a.value = 4
|
||||
|
||||
@ -105,7 +105,7 @@ against invalid accesses.
|
||||
variables, compute or fix data (see :doc:`Howto_output`):
|
||||
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
result = L.eval("ke") # kinetic energy
|
||||
result = L.eval("pe") # potential energy
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
Scatter/gather operations
|
||||
=========================
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
data = lmp.gather_atoms(name,type,count) # return per-atom property of all atoms gathered into data, ordered by atom ID
|
||||
# name = "x", "charge", "type", etc
|
||||
@ -42,7 +42,7 @@ For the scatter methods, the array of coordinates passed to must be a
|
||||
ctypes vector of ints or doubles, allocated and initialized something
|
||||
like this:
|
||||
|
||||
.. code-block:: Python
|
||||
.. code-block:: python
|
||||
|
||||
from ctypes import c_double
|
||||
natoms = lmp.get_natoms()
|
||||
|
||||
@ -1,25 +1,33 @@
|
||||
from pygments.lexer import RegexLexer, words, include, default
|
||||
from pygments.token import *
|
||||
|
||||
LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style",
|
||||
"balance", "bond_coeff", "bond_style", "bond_write", "boundary", "box",
|
||||
"clear", "comm_modify", "comm_style",
|
||||
"compute_modify", "create_atoms", "create_bonds", "create_box", "delete_atoms",
|
||||
"delete_bonds", "dielectric", "dihedral_coeff", "dihedral_style", "dimension",
|
||||
"displace_atoms", "dump_modify", "dynamical_matrix", "echo", "elif", "else",
|
||||
"fix_modify", "group2ndx", "hyper", "if", "improper_coeff",
|
||||
"improper_style", "include", "info", "jump", "kim",
|
||||
"kspace_modify", "kspace_style", "label", "labelmap", "lattice", "log",
|
||||
"mass", "mdi", "message", "minimize", "min_modify", "min_style", "molecule",
|
||||
"ndx2group", "neb", "neb/spin", "neighbor", "neigh_modify", "newton", "next",
|
||||
"package", "pair_coeff", "pair_modify", "pair_style", "pair_write",
|
||||
"partition", "prd", "print", "processors", "python", "quit", "read_data",
|
||||
"read_dump", "read_restart", "replicate", "rerun", "reset_ids",
|
||||
"reset_timestep", "restart", "run", "run_style", "server", "set", "shell",
|
||||
"special_bonds", "suffix", "tad", "temper", "temper/grem", "temper/npt", "then",
|
||||
"thermo", "thermo_modify", "thermo_style", "third_order", "timer", "timestep",
|
||||
"units", "velocity", "write_coeff",
|
||||
"write_data", "write_restart")
|
||||
LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify",
|
||||
"atom_style", "balance", "bond_coeff", "bond_style",
|
||||
"bond_write", "boundary", "clear", "comm_modify",
|
||||
"comm_style", "compute_modify", "create_atoms",
|
||||
"create_bonds", "create_box", "delete_atoms",
|
||||
"delete_bonds", "dielectric", "dihedral_coeff",
|
||||
"dihedral_style", "dimension", "displace_atoms",
|
||||
"dump_modify", "dynamical_matrix", "echo", "elif",
|
||||
"else", "fix_modify", "group2ndx", "hyper", "if",
|
||||
"improper_coeff", "improper_style", "include",
|
||||
"info", "jump", "kim", "kspace_modify",
|
||||
"kspace_style", "label", "labelmap", "lattice",
|
||||
"log", "mass", "mdi", "message", "minimize",
|
||||
"min_modify", "min_style", "molecule", "ndx2group",
|
||||
"neb", "neb/spin", "neighbor", "neigh_modify",
|
||||
"newton", "next", "package", "pair_coeff",
|
||||
"pair_modify", "pair_style", "pair_write",
|
||||
"partition", "plugin", "prd", "print", "processors",
|
||||
"python", "quit", "read_data", "read_dump",
|
||||
"read_restart", "replicate", "rerun", "reset_atoms",
|
||||
"reset_timestep", "restart", "run", "run_style",
|
||||
"server", "set", "shell", "special_bonds", "suffix",
|
||||
"tad", "temper", "temper/grem", "temper/npt", "then",
|
||||
"thermo", "thermo_modify", "thermo_style",
|
||||
"third_order", "timer", "timestep", "units",
|
||||
"velocity", "write_coeff", "write_data",
|
||||
"write_restart")
|
||||
|
||||
#fix ID group-ID style args
|
||||
#compute ID group-ID style args
|
||||
|
||||
@ -611,6 +611,7 @@ curv
|
||||
Cusentino
|
||||
customIDs
|
||||
cutbond
|
||||
cutghost
|
||||
cuthi
|
||||
cutinner
|
||||
cutlo
|
||||
@ -753,6 +754,7 @@ dimensionality
|
||||
dimensioned
|
||||
dimgray
|
||||
dipolar
|
||||
dipoleflag
|
||||
dir
|
||||
Direc
|
||||
dirname
|
||||
@ -761,6 +763,7 @@ discretization
|
||||
discretized
|
||||
discretizing
|
||||
disp
|
||||
dispersionflag
|
||||
dissipative
|
||||
Dissipative
|
||||
distharm
|
||||
@ -1028,6 +1031,7 @@ evirials
|
||||
ew
|
||||
ewald
|
||||
Ewald
|
||||
ewaldflag
|
||||
excitations
|
||||
excv
|
||||
exe
|
||||
@ -1101,6 +1105,7 @@ Fincham
|
||||
Fint
|
||||
fingerprintconstants
|
||||
fingerprintsperelement
|
||||
finitecutflag
|
||||
Finnis
|
||||
Fiorin
|
||||
fitpod
|
||||
@ -2214,6 +2219,7 @@ msd
|
||||
msi
|
||||
MSI
|
||||
msm
|
||||
msmflag
|
||||
msse
|
||||
msst
|
||||
Mtchell
|
||||
@ -2793,6 +2799,7 @@ PowerShell
|
||||
ppme
|
||||
ppn
|
||||
pppm
|
||||
pppmflag
|
||||
Prakash
|
||||
Praprotnik
|
||||
prd
|
||||
@ -2973,6 +2980,7 @@ refactoring
|
||||
reflectionstyle
|
||||
Reinders
|
||||
reinit
|
||||
reinitflag
|
||||
relaxbox
|
||||
relink
|
||||
relres
|
||||
@ -3308,6 +3316,7 @@ SPH
|
||||
spica
|
||||
SPICA
|
||||
Spickermann
|
||||
spinflag
|
||||
splined
|
||||
spparks
|
||||
Sprik
|
||||
@ -3861,6 +3870,7 @@ workflows
|
||||
Workum
|
||||
Worley
|
||||
Wriggers
|
||||
writedata
|
||||
Wuppertal
|
||||
Wurtzite
|
||||
www
|
||||
|
||||
4
src/.gitignore
vendored
4
src/.gitignore
vendored
@ -59,8 +59,8 @@
|
||||
|
||||
/pair_pod.cpp
|
||||
/pair_pod.h
|
||||
/fitpod.cpp
|
||||
/fitpod.h
|
||||
/fitpod_command.cpp
|
||||
/fitpod_command.h
|
||||
/mlpod.cpp
|
||||
/mlpod.h
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ adios_SYSLIB=${ADIOS2_LIB}
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*ADIOS.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*ADIOS.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ../ADIOS/Makefile.lammps
|
||||
@ -85,7 +85,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*ADIOS.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*ADIOS.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
rm -f Makefile.lammps
|
||||
|
||||
@ -60,7 +60,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*atc.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*atc.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/atc\/Makefile.lammps
|
||||
@ -74,7 +74,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*atc.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*atc.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -46,7 +46,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*awpmd.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*awpmd.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/awpmd\/Makefile.lammps
|
||||
@ -60,7 +60,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*awpmd.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*awpmd.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -47,7 +47,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*colvars.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*colvars.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/colvars\/Makefile.lammps
|
||||
@ -62,7 +62,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*colvars.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*colvars.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -44,7 +44,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*compress.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*compress.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/compress\/Makefile.lammps
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*compress.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*compress.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -49,11 +49,11 @@ if (test $1 = 1) then
|
||||
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
|
||||
sed -i -e '/^[ \t]*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
|
||||
include ..\/..\/lib\/electrode\/Makefile.lammps
|
||||
' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
elif (test $1 = 0) then
|
||||
@ -61,7 +61,7 @@ elif (test $1 = 0) 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
|
||||
sed -i -e '/^[ \t]*include.*electrode.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@ -678,7 +678,7 @@ void PPPMElectrode::compute_matrix(bigint *imat, double **matrix, bool timer_fla
|
||||
// fft green's function k -> r (double)
|
||||
double *greens_real;
|
||||
memory->create(greens_real, nz_pppm * ny_pppm * nx_pppm, "pppm/electrode:greens_real");
|
||||
memset(greens_real, 0, nz_pppm * ny_pppm * nx_pppm * sizeof(double));
|
||||
memset(greens_real, 0, (std::size_t)nz_pppm * (std::size_t)ny_pppm * (std::size_t)nx_pppm * sizeof(double));
|
||||
for (int i = 0, n = 0; i < nfft; i++) {
|
||||
work2[n++] = greensfn[i];
|
||||
work2[n++] = ZEROF;
|
||||
@ -871,7 +871,7 @@ void PPPMElectrode::two_step_multiplication(bigint *imat, double *greens_real, d
|
||||
|
||||
double **gw;
|
||||
memory->create(gw, nmat, nxyz, "pppm/electrode:gw");
|
||||
memset(&(gw[0][0]), 0, nmat * nxyz * sizeof(double));
|
||||
memset(&(gw[0][0]), 0, (std::size_t)nmat * (std::size_t)nxyz * sizeof(double));
|
||||
|
||||
auto fmod = [](int x, int n) { // fast unsigned mod
|
||||
int r = abs(x);
|
||||
|
||||
@ -176,7 +176,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*gpu.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*gpu.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/gpu\/Makefile.lammps
|
||||
@ -191,7 +191,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*gpu.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*gpu.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -45,7 +45,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*h5md.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*h5md.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/h5md\/Makefile.lammps
|
||||
@ -60,7 +60,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*h5md.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*h5md.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -44,7 +44,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*kim.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*kim.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/kim\/Makefile.lammps
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*kim.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*kim.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -374,7 +374,7 @@ if (test $1 = 1) then
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/CXX\ =\ \$(CC)/d' ../Makefile.package.settings
|
||||
sed -i -e '/^include.*kokkos.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*kokkos.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
CXX = $(CC)
|
||||
@ -401,7 +401,7 @@ elif (test $1 = 0) then
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/CXX\ =\ \$(CC)/d' ../Makefile.package.settings
|
||||
sed -i -e '/^include.*kokkos.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*kokkos.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -376,11 +376,15 @@ double MinLineSearchKokkos::alpha_step(double alpha, int resetflag)
|
||||
});
|
||||
}
|
||||
|
||||
atomKK->modified(Device,X_MASK);
|
||||
|
||||
// step forward along h
|
||||
|
||||
if (alpha > 0.0) {
|
||||
if (nextra_global) modify->min_step(alpha,hextra);
|
||||
|
||||
atomKK->sync(Device,X_MASK); // positions can be modified by fix box/relax
|
||||
|
||||
// local variables for lambda capture
|
||||
|
||||
auto l_xvec = xvec;
|
||||
|
||||
@ -47,7 +47,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*latte.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*latte.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/latte\/Makefile.lammps
|
||||
@ -61,7 +61,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*latte.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*latte.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -45,7 +45,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*machdyn.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*machdyn.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/machdyn\/Makefile.lammps
|
||||
@ -59,7 +59,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*machdyn.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*machdyn.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -49,7 +49,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*mdi.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*mdi.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/mdi\/Makefile.lammps
|
||||
@ -65,7 +65,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*mdi.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*mdi.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -47,7 +47,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*mesont.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*mesont.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/mesont\/Makefile.lammps
|
||||
@ -61,7 +61,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*mesont.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*mesont.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -46,7 +46,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*hdnnp.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*hdnnp.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/hdnnp\/Makefile.lammps
|
||||
@ -60,7 +60,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*hdnnp.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*hdnnp.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -52,7 +52,7 @@ if (test $1 = 1) then
|
||||
sed -i -e 's|^PKG_INC =[ \t]*|&-DMLIAP_PYTHON |' ../Makefile.package
|
||||
fi
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/python\/Makefile.mliap_python
|
||||
@ -68,7 +68,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
rm -f ../mliap_model_python_couple.cpp ../mliap_model_python_couple.h \
|
||||
../mliap_unified_couple.cpp ../mliap_unified_couple.h
|
||||
sed -i -e '/^include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
|
||||
elif (test $1 = 2) then
|
||||
if (type cythonize > /dev/null 2>&1 && test -e ../python_impl.cpp) then
|
||||
@ -77,12 +77,12 @@ elif (test $1 = 2) then
|
||||
fi
|
||||
rm -f ../mliap_model_python_couple.cpp ../mliap_model_python_couple.h \
|
||||
../mliap_unified_couple.cpp ../mliap_unified_couple.h
|
||||
sed -i -e '/^include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
if (test -e ../Makefile.package) then
|
||||
sed -i -e 's|^PKG_INC =[ \t]*|&-DMLIAP_PYTHON |' ../Makefile.package
|
||||
fi
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*python.*mliap_python.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/python\/Makefile.mliap_python
|
||||
|
||||
@ -44,7 +44,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*pace.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*pace.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/pace\/Makefile.lammps
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*pace.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*pace.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -46,6 +46,10 @@ using MathSpecial::powint;
|
||||
|
||||
static constexpr double SMALL = 1.0e-10;
|
||||
|
||||
FitPOD::FitPOD(LAMMPS *_lmp) : Command(_lmp), podptr(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
void FitPOD::command(int narg, char **arg)
|
||||
{
|
||||
if (narg < 2) utils::missing_cmd_args(FLERR, "fitpod", error);
|
||||
@ -241,7 +245,7 @@ void FitPOD::get_exyz_files(std::vector<std::string>& files, const std::string &
|
||||
{
|
||||
auto allfiles = platform::list_directory(datapath);
|
||||
std::sort(allfiles.begin(), allfiles.end());
|
||||
for (auto fname : allfiles) {
|
||||
for (const auto &fname : allfiles) {
|
||||
if (utils::strmatch(fname, fmt::format(".*\\.{}$", extension)))
|
||||
files.push_back(datapath + platform::filepathsep + fname);
|
||||
}
|
||||
@ -252,7 +256,6 @@ int FitPOD::get_number_atom_exyz(std::vector<int>& num_atom, int& num_atom_sum,
|
||||
std::string filename = file;
|
||||
FILE *fp;
|
||||
if (comm->me == 0) {
|
||||
|
||||
fp = utils::open_potential(filename,lmp,nullptr);
|
||||
if (fp == nullptr)
|
||||
error->one(FLERR,"Cannot open POD coefficient file {}: ", filename, utils::getsyserror());
|
||||
@ -469,7 +472,7 @@ void FitPOD::get_data(datastruct &data, std::vector<std::string> species)
|
||||
utils::logmesg(lmp, "{}\n {:^{}} | number of configurations | number of atoms\n{}\n",
|
||||
sepline, "data file", maxname, sepline);
|
||||
int i = 0;
|
||||
for (auto fname : data.data_files) {
|
||||
for (const auto &fname : data.data_files) {
|
||||
std::string filename = fname.substr(data.data_path.size()+1);
|
||||
data.filenames.push_back(filename);
|
||||
if (comm->me == 0)
|
||||
@ -695,7 +698,7 @@ void FitPOD::select_data(datastruct &newdata, datastruct data)
|
||||
|
||||
data.copydatainfo(newdata);
|
||||
size_t maxname = 9;
|
||||
for (auto fname : data.data_files) maxname = MAX(maxname,fname.size());
|
||||
for (const auto &fname : data.data_files) maxname = MAX(maxname,fname.size());
|
||||
maxname -= data.data_path.size()+1;
|
||||
|
||||
if (comm->me == 0)
|
||||
@ -872,7 +875,7 @@ int FitPOD::podfullneighborlist(double *y, int *alist, int *neighlist, int *numn
|
||||
return nn;
|
||||
}
|
||||
|
||||
void FitPOD::allocate_memory(datastruct data)
|
||||
void FitPOD::allocate_memory(const datastruct &data)
|
||||
{
|
||||
int nd = podptr->pod.nd;
|
||||
memory->create(desc.gd, nd, "fitpod:desc_gd");
|
||||
@ -989,7 +992,7 @@ void FitPOD::allocate_memory(datastruct data)
|
||||
}
|
||||
}
|
||||
|
||||
void FitPOD::linear_descriptors(datastruct data, int ci)
|
||||
void FitPOD::linear_descriptors(const datastruct &data, int ci)
|
||||
{
|
||||
int dim = 3;
|
||||
int nd1 = podptr->pod.nd1;
|
||||
@ -1020,7 +1023,7 @@ void FitPOD::linear_descriptors(datastruct data, int ci)
|
||||
|
||||
}
|
||||
|
||||
void FitPOD::quadratic_descriptors(datastruct data, int ci)
|
||||
void FitPOD::quadratic_descriptors(const datastruct &data, int ci)
|
||||
{
|
||||
int dim = 3;
|
||||
int natom = data.num_atom[ci];
|
||||
@ -1101,7 +1104,7 @@ void FitPOD::quadratic_descriptors(datastruct data, int ci)
|
||||
desc.gdd[dim*natom*nd1234+i] = desc.gdd[dim*natom*nd1234+i]/(natom);
|
||||
}
|
||||
|
||||
void FitPOD::cubic_descriptors(datastruct data, int ci)
|
||||
void FitPOD::cubic_descriptors(const datastruct &data, int ci)
|
||||
{
|
||||
int dim = 3;
|
||||
int natom = data.num_atom[ci];
|
||||
@ -1168,7 +1171,7 @@ void FitPOD::cubic_descriptors(datastruct data, int ci)
|
||||
desc.gdd[i] = desc.gdd[i]/(natom*natom);
|
||||
}
|
||||
|
||||
void FitPOD::least_squares_matrix(datastruct data, int ci)
|
||||
void FitPOD::least_squares_matrix(const datastruct &data, int ci)
|
||||
{
|
||||
int dim = 3;
|
||||
int natom = data.num_atom[ci];
|
||||
@ -1214,7 +1217,7 @@ void FitPOD::least_squares_matrix(datastruct data, int ci)
|
||||
|
||||
}
|
||||
|
||||
void FitPOD::least_squares_fit(datastruct data)
|
||||
void FitPOD::least_squares_fit(const datastruct &data)
|
||||
{
|
||||
if (comm->me == 0)
|
||||
utils::logmesg(lmp, "**************** Begin of Least-Squares Fitting ****************\n");
|
||||
@ -1308,7 +1311,7 @@ void FitPOD::least_squares_fit(datastruct data)
|
||||
}
|
||||
}
|
||||
|
||||
double FitPOD::energyforce_calculation(double *force, double *coeff, datastruct data, int ci)
|
||||
double FitPOD::energyforce_calculation(double *force, double *coeff, const datastruct &data, int ci)
|
||||
{
|
||||
int dim = 3;
|
||||
int *pbc = podptr->pod.pbc;
|
||||
@ -1348,7 +1351,7 @@ double FitPOD::energyforce_calculation(double *force, double *coeff, datastruct
|
||||
return energy;
|
||||
}
|
||||
|
||||
void FitPOD::print_analysis(datastruct data, double *outarray, double *errors)
|
||||
void FitPOD::print_analysis(const datastruct &data, double *outarray, double *errors)
|
||||
{
|
||||
int nfiles = data.data_files.size(); // number of files
|
||||
int lm = 10;
|
||||
@ -1422,7 +1425,7 @@ void FitPOD::print_analysis(datastruct data, double *outarray, double *errors)
|
||||
fclose(fp_analysis);
|
||||
}
|
||||
|
||||
void FitPOD::error_analysis(datastruct data, double *coeff)
|
||||
void FitPOD::error_analysis(const datastruct &data, double *coeff)
|
||||
{
|
||||
int dim = 3;
|
||||
double energy;
|
||||
@ -1537,7 +1540,10 @@ void FitPOD::error_analysis(datastruct data, double *coeff)
|
||||
nforceall += nforce;
|
||||
ci += 1;
|
||||
}
|
||||
|
||||
int q = file + 1;
|
||||
if (nconfigs == 0) nconfigs = 1;
|
||||
if (nforceall == 0) nforceall = 1;
|
||||
errors[0 + 4*q] = emae/nconfigs;
|
||||
errors[1 + 4*q] = sqrt(essr/nconfigs);
|
||||
errors[2 + 4*q] = fmae/nforceall;
|
||||
@ -1550,6 +1556,8 @@ void FitPOD::error_analysis(datastruct data, double *coeff)
|
||||
errors[3] += fssr;
|
||||
}
|
||||
|
||||
if (nc == 0) nc = 1;
|
||||
if (nf == 0) nf = 1;
|
||||
errors[0] = errors[0]/nc;
|
||||
errors[1] = sqrt(errors[1]/nc);
|
||||
errors[2] = errors[2]/nf;
|
||||
@ -1561,7 +1569,7 @@ void FitPOD::error_analysis(datastruct data, double *coeff)
|
||||
}
|
||||
}
|
||||
|
||||
void FitPOD::energyforce_calculation(datastruct data, double *coeff)
|
||||
void FitPOD::energyforce_calculation(const datastruct &data, double *coeff)
|
||||
{
|
||||
int dim = 3;
|
||||
double energy;
|
||||
@ -1816,4 +1824,3 @@ void FitPOD::triclinic_lattice_conversion(double *a, double *b, double *c, doubl
|
||||
b[0] = bx; b[1] = by; b[2] = 0.0;
|
||||
c[0] = cx; c[1] = cy; c[2] = cz;
|
||||
}
|
||||
|
||||
|
||||
@ -26,9 +26,11 @@ CommandStyle(fitpod,FitPOD);
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FitPOD : public Command {
|
||||
private:
|
||||
|
||||
public:
|
||||
FitPOD(LAMMPS *);
|
||||
void command(int, char **) override;
|
||||
|
||||
private:
|
||||
struct datastruct {
|
||||
std::string file_format = "extxyz";
|
||||
std::string file_extension = "xyz";
|
||||
@ -120,9 +122,6 @@ public:
|
||||
neighborstruct nb;
|
||||
class MLPOD *podptr;
|
||||
|
||||
FitPOD(LAMMPS *lmp) : Command(lmp) {}
|
||||
|
||||
|
||||
// functions for collecting/collating arrays
|
||||
|
||||
void print_matrix(const char *desc, int m, int n, int *a, int lda);
|
||||
@ -148,7 +147,7 @@ public:
|
||||
|
||||
// functions for reading input files and fitting
|
||||
|
||||
void command(int, char **) override;
|
||||
|
||||
int read_data_file(double *fitting_weights, std::string &file_format, std::string &file_extension,
|
||||
std::string &test_path, std::string &training_path, std::string &filenametag, const std::string &data_file);
|
||||
void get_exyz_files(std::vector<std::string> &, const std::string &, const std::string &);
|
||||
@ -166,16 +165,16 @@ public:
|
||||
int podneighborlist(int *neighlist, int *numneigh, double *r, double rcutsq, int nx, int N, int dim);
|
||||
int podfullneighborlist(double *y, int *alist, int *neighlist, int *numneigh, int *numneighsum,
|
||||
double *x, double *a1, double *a2, double *a3, double rcut, int *pbc, int nx);
|
||||
void allocate_memory(datastruct data);
|
||||
void linear_descriptors(datastruct data, int ci);
|
||||
void quadratic_descriptors(datastruct data, int ci);
|
||||
void cubic_descriptors(datastruct data, int ci);
|
||||
void least_squares_matrix(datastruct data, int ci);
|
||||
void least_squares_fit(datastruct data);
|
||||
void print_analysis(datastruct data, double *outarray, double *errors);
|
||||
void error_analysis(datastruct data, double *coeff);
|
||||
double energyforce_calculation(double *force, double *coeff, datastruct data, int ci);
|
||||
void energyforce_calculation(datastruct data, double *coeff);
|
||||
void allocate_memory(const datastruct &data);
|
||||
void linear_descriptors(const datastruct &data, int ci);
|
||||
void quadratic_descriptors(const datastruct &data, int ci);
|
||||
void cubic_descriptors(const datastruct &data, int ci);
|
||||
void least_squares_matrix(const datastruct &data, int ci);
|
||||
void least_squares_fit(const datastruct &data);
|
||||
void print_analysis(const datastruct &data, double *outarray, double *errors);
|
||||
void error_analysis(const datastruct &data, double *coeff);
|
||||
double energyforce_calculation(double *force, double *coeff, const datastruct &data, int ci);
|
||||
void energyforce_calculation(const datastruct &data, double *coeff);
|
||||
};
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
@ -695,8 +695,9 @@ void MLPOD::read_coeff_file(const std::string &coeff_file)
|
||||
|
||||
/*********************************************************************************************************/
|
||||
|
||||
void MLPOD::linear_descriptors(double *gd, double *efatom, double *y, double *tmpmem, int *atomtype,
|
||||
int *alist, int *pairlist, int *pairnum, int *pairnumsum, int *tmpint, int natom, int Nij)
|
||||
void MLPOD::linear_descriptors(double *gd, double *efatom, double *y, double *tmpmem,
|
||||
int *atomtype, int *alist, int *pairlist, int * /*pairnum*/,
|
||||
int *pairnumsum, int *tmpint, int natom, int Nij)
|
||||
{
|
||||
int dim = 3;
|
||||
int nelements = pod.nelements;
|
||||
@ -1641,39 +1642,37 @@ void MLPOD::InitSnap()
|
||||
|
||||
double rcutmax = 0.0;
|
||||
for (int ielem = 0; ielem < ntypes; ielem++)
|
||||
rcutmax = MAX(2.0*elemradius[ielem]*rcutfac,rcutmax);
|
||||
rcutmax = MAX(2.0*elemradius[ielem]*rcutfac,rcutmax);
|
||||
|
||||
snapSetup(twojmax, ntypes);
|
||||
//TemplateCopytoDevice(&sna.radelem[1], elemradius, ntypes, backend);
|
||||
//TemplateCopytoDevice(&sna.wjelem[1], elemweight, ntypes, backend);
|
||||
for (int i=0; i<ntypes; i++) {
|
||||
sna.radelem[1+i] = elemradius[i];
|
||||
sna.wjelem[1+i] = elemweight[i];
|
||||
}
|
||||
podArrayFill(&sna.map[1], (int) 0, ntypes);
|
||||
|
||||
//double cutsq[100];
|
||||
for (int i=0; i<ntypes; i++)
|
||||
for (int i=0; i<ntypes; i++) {
|
||||
for (int j=0; j<ntypes; j++) {
|
||||
double cut = (elemradius[i] + elemradius[j])*rcutfac;
|
||||
sna.rcutsq[j+1 + (i+1)*(ntypes+1)] = cut*cut;
|
||||
}
|
||||
//TemplateCopytoDevice(sna.rcutsq, cutsq, (ntypes+1)*(ntypes+1), backend);
|
||||
}
|
||||
|
||||
// bzeroflag is currently always 0
|
||||
#if 0
|
||||
if (bzeroflag) {
|
||||
double www = wself*wself*wself;
|
||||
//double bzero[100];
|
||||
for (int j = 0; j <= twojmax; j++)
|
||||
if (bnormflag)
|
||||
sna.bzero[j] = www;
|
||||
sna.bzero[j] = www;
|
||||
else
|
||||
sna.bzero[j] = www*(j+1);
|
||||
//TemplateCopytoDevice(sna.bzero, bzero, twojmax+1, backend);
|
||||
sna.bzero[j] = www*(j+1);
|
||||
}
|
||||
#endif
|
||||
|
||||
int nelements = ntypes;
|
||||
if (!chemflag)
|
||||
nelements = 1;
|
||||
nelements = 1;
|
||||
|
||||
sna.nelements = nelements;
|
||||
sna.ndoubles = nelements*nelements; // number of multi-element pairs
|
||||
@ -1902,8 +1901,8 @@ void MLPOD::snapComputeUlist(double *Sr, double *Si, double *dSr, double *dSi, d
|
||||
};
|
||||
|
||||
void MLPOD::snapZeroUarraytot2(double *Stotr, double *Stoti, double wself, int *idxu_block,
|
||||
int *type, int *map, int *ai, int wselfall_flag, int chemflag, int idxu_max, int nelements,
|
||||
int twojmax, int inum)
|
||||
int *type, int *map, int * /*ai*/, int wselfall_flag, int chemflag,
|
||||
int idxu_max, int nelements, int twojmax, int inum)
|
||||
{
|
||||
int N1 = inum;
|
||||
int N2 = N1*(twojmax+1);
|
||||
@ -2554,8 +2553,9 @@ void MLPOD::pod1body(double *eatom, int *atomtype, int nelements, int natom)
|
||||
eatom[i + natom*(m-1)] = (atomtype[i] == m) ? 1.0 : 0.0;
|
||||
}
|
||||
|
||||
void MLPOD::pod3body(double *eatom, double *yij, double *e2ij, double *tmpmem, int *elemindex, int *pairnumsum,
|
||||
int *idxi, int *ti, int *tj, int nrbf, int nabf, int nelements, int natom, int Nij)
|
||||
void MLPOD::pod3body(double *eatom, double *yij, double *e2ij, double *tmpmem, int *elemindex,
|
||||
int *pairnumsum, int * /*idxi*/, int *ti, int *tj, int nrbf, int nabf,
|
||||
int nelements, int natom, int Nij)
|
||||
{
|
||||
int dim = 3, nabf1 = nabf + 1;
|
||||
int nelements2 = nelements*(nelements+1)/2;
|
||||
@ -2599,7 +2599,6 @@ void MLPOD::pod3body(double *eatom, double *yij, double *e2ij, double *tmpmem, i
|
||||
costhe = xdot/(rij*rik);
|
||||
costhe = costhe > 1.0 ? 1.0 : costhe;
|
||||
costhe = costhe < -1.0 ? -1.0 : costhe;
|
||||
xdot = costhe*(rij*rik);
|
||||
theta = acos(costhe);
|
||||
|
||||
for (int p=0; p <nabf1; p++)
|
||||
@ -3070,8 +3069,8 @@ double MLPOD::calculate_energy(double *energycoeff, double *forcecoeff, double *
|
||||
return energy;
|
||||
}
|
||||
|
||||
void MLPOD::pod2body_force(double *force, double *fij, double *coeff2, int *ai, int *aj,
|
||||
int *ti, int *tj, int *elemindex, int nelements, int nbf, int natom, int N)
|
||||
void MLPOD::pod2body_force(double *force, double *fij, double *coeff2, int *ai, int *aj, int *ti,
|
||||
int *tj, int *elemindex, int nelements, int nbf, int /*natom*/, int N)
|
||||
{
|
||||
int nelements2 = nelements*(nelements+1)/2;
|
||||
for (int n=0; n<N; n++) {
|
||||
@ -3236,7 +3235,7 @@ void MLPOD::pod3body_force(double *force, double *yij, double *e2ij, double *f2i
|
||||
}
|
||||
|
||||
void MLPOD::snapTallyForce(double *force, double *dbdr, double *coeff4,
|
||||
int *ai, int *aj, int *ti, int ijnum, int ncoeff, int ntype)
|
||||
int *ai, int *aj, int *ti, int ijnum, int ncoeff, int /*ntype*/)
|
||||
{
|
||||
int N2 = ijnum*ncoeff;
|
||||
for (int idx=0; idx<N2; idx++) {
|
||||
@ -3396,8 +3395,8 @@ double MLPOD::energyforce_calculation(double *force, double *podcoeff, double *e
|
||||
}
|
||||
|
||||
|
||||
void MLPOD::pod2body_force(double **force, double *fij, double *coeff2, int *ai, int *aj,
|
||||
int *ti, int *tj, int *elemindex, int nelements, int nbf, int natom, int N)
|
||||
void MLPOD::pod2body_force(double **force, double *fij, double *coeff2, int *ai, int *aj, int *ti,
|
||||
int *tj, int *elemindex, int nelements, int nbf, int /*natom*/, int N)
|
||||
{
|
||||
int nelements2 = nelements*(nelements+1)/2;
|
||||
for (int n=0; n<N; n++) {
|
||||
@ -3559,7 +3558,7 @@ void MLPOD::pod3body_force(double **force, double *yij, double *e2ij, double *f2
|
||||
}
|
||||
|
||||
void MLPOD::snapTallyForce(double **force, double *dbdr, double *coeff4,
|
||||
int *ai, int *aj, int *ti, int ijnum, int ncoeff, int ntype)
|
||||
int *ai, int *aj, int *ti, int ijnum, int ncoeff, int /*ntype*/)
|
||||
{
|
||||
int N2 = ijnum*ncoeff;
|
||||
for (int idx=0; idx<N2; idx++) {
|
||||
|
||||
@ -44,7 +44,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*quip.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*quip.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/quip\/Makefile.lammps\
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*quip.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*quip.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -405,6 +405,9 @@ void AngleTable::read_table(Table *tb, char *file, char *keyword)
|
||||
reader.skip_line();
|
||||
for (int i = 0; i < tb->ninput; i++) {
|
||||
line = reader.next_line();
|
||||
if (!line)
|
||||
error->one(FLERR, "Data missing when parsing angle table '{}' line {} of {}.", keyword, i + 1,
|
||||
tb->ninput);
|
||||
try {
|
||||
ValueTokenizer values(line);
|
||||
values.next_int();
|
||||
|
||||
@ -330,6 +330,9 @@ void BondTable::read_table(Table *tb, char *file, char *keyword)
|
||||
reader.skip_line();
|
||||
for (int i = 0; i < tb->ninput; i++) {
|
||||
line = reader.next_line();
|
||||
if (!line)
|
||||
error->one(FLERR, "Data missing when parsing bond table '{}' line {} of {}.", keyword, i + 1,
|
||||
tb->ninput);
|
||||
try {
|
||||
ValueTokenizer values(line);
|
||||
values.next_int();
|
||||
|
||||
@ -1021,6 +1021,9 @@ void DihedralTable::read_table(Table *tb, char *file, char *keyword)
|
||||
|
||||
for (int i = 0; i < tb->ninput; i++) {
|
||||
line = reader.next_line();
|
||||
if (!line)
|
||||
error->one(FLERR, "Data missing when parsing dihedral table '{}' line {} of {}.",
|
||||
keyword, i + 1, tb->ninput);
|
||||
try {
|
||||
ValueTokenizer values(line);
|
||||
if (tb->f_unspecified) {
|
||||
|
||||
@ -44,7 +44,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*molfile.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*molfile.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/molfile\/Makefile.lammps
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*molfile.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*molfile.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -43,7 +43,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*mscg.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*mscg.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/mscg\/Makefile.lammps
|
||||
@ -57,7 +57,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*mscg.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*mscg.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -55,7 +55,7 @@ PACKAGE = \
|
||||
awpmd \
|
||||
bocs \
|
||||
body \
|
||||
bpm \
|
||||
bpm \
|
||||
brownian \
|
||||
cg-dna \
|
||||
cg-spica \
|
||||
|
||||
@ -42,7 +42,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*netcdf.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*netcdf.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/netcdf\/Makefile.lammps
|
||||
@ -57,7 +57,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*netcdf.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*netcdf.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -44,7 +44,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*plugin.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*plugin.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/plugin\/Makefile.lammps
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*plugin.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*plugin.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -45,7 +45,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*plumed.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*plumed.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/plumed\/Makefile.lammps
|
||||
@ -59,7 +59,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*plumed.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*plumed.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -44,7 +44,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*poems.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*poems.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/poems\/Makefile.lammps
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*poems.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*poems.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -50,7 +50,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*python.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*python.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/python\/Makefile.lammps
|
||||
@ -65,7 +65,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*python.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*python.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -47,7 +47,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*qmmm.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*qmmm.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/qmmm\/Makefile.lammps
|
||||
@ -62,7 +62,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*qmmm.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*qmmm.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -48,7 +48,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*voronoi.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*voronoi.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/voronoi\/Makefile.lammps
|
||||
@ -63,7 +63,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*voronoi.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*voronoi.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -43,7 +43,7 @@ if (test $1 = 1) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*vtk.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*vtk.*$/d' ../Makefile.package.settings
|
||||
# multiline form needed for BSD sed on Macs
|
||||
sed -i -e '4 i \
|
||||
include ..\/..\/lib\/vtk\/Makefile.lammps
|
||||
@ -58,7 +58,7 @@ elif (test $1 = 0) then
|
||||
fi
|
||||
|
||||
if (test -e ../Makefile.package.settings) then
|
||||
sed -i -e '/^include.*vtk.*$/d' ../Makefile.package.settings
|
||||
sed -i -e '/^[ \t]*include.*vtk.*$/d' ../Makefile.package.settings
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@ -398,6 +398,9 @@ void PairTable::read_table(Table *tb, char *file, char *keyword)
|
||||
reader.skip_line();
|
||||
for (int i = 0; i < tb->ninput; i++) {
|
||||
line = reader.next_line();
|
||||
if (!line)
|
||||
error->one(FLERR, "Data missing when parsing pair table '{}' line {} of {}.", keyword, i + 1,
|
||||
tb->ninput);
|
||||
try {
|
||||
ValueTokenizer values(line);
|
||||
values.next_int();
|
||||
|
||||
@ -43,7 +43,9 @@ static int compare_coords(const int, const int, void *);
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
ResetAtomsID::ResetAtomsID(LAMMPS *lmp) : Command(lmp) {}
|
||||
ResetAtomsID::ResetAtomsID(LAMMPS *lmp) : Command(lmp) {
|
||||
binlo = binhi = -1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -480,6 +482,9 @@ int ResetAtomsID::sort_bins(int n, char *inbuf, int &flag, int *&proclist, char
|
||||
bigint binlo = rptr->binlo;
|
||||
bigint binhi = rptr->binhi;
|
||||
|
||||
if ((binlo < 0) || (binhi < 0))
|
||||
error->one(FLERR, "Called sort_bins without previous setup of bins");
|
||||
|
||||
// nbins = my subset of bins from binlo to binhi-1
|
||||
// initialize linked lists of my Rvous atoms in each bin
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ skip_tests:
|
||||
prerequisites: ! |
|
||||
atom full
|
||||
pair coul/slater/long
|
||||
kspace ewald
|
||||
pre_commands: ! ""
|
||||
post_commands: ! |
|
||||
pair_modify mix arithmetic
|
||||
|
||||
Reference in New Issue
Block a user