use consistent pygments language tags
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
|
in the ``main.cpp`` file where the core steps of running a LAMMPS
|
||||||
simulation are the following 3 lines of code:
|
simulation are the following 3 lines of code:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
LAMMPS *lammps = new LAMMPS(argc, argv, lammps_comm);
|
LAMMPS *lammps = new LAMMPS(argc, argv, lammps_comm);
|
||||||
lammps->input->file();
|
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``
|
with a factory function creating an instance of the ``PairLJCut``
|
||||||
class.
|
class.
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
// from force.h
|
// from force.h
|
||||||
typedef Pair *(*PairCreator)(LAMMPS *);
|
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
|
argument type must be compatible or else the {fmt} formatting code will
|
||||||
throw an exception. Some format string examples are given below:
|
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);
|
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",
|
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).
|
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:
|
Thus these are the default settings when a neighbor list request is created in:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
void Pair::init_style()
|
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,
|
request flag is needed. The :doc:`tersoff <pair_tersoff>` pair style,
|
||||||
for example, needs a "full" neighbor list:
|
for example, needs a "full" neighbor list:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
void PairTersoff::init_style()
|
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
|
the request flag may depend on the corresponding r-RESPA settings. Here an example
|
||||||
from pair style lj/cut:
|
from pair style lj/cut:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
void PairLJCut::init_style()
|
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").
|
and also may require to have the list of previous neighbors available ("history").
|
||||||
For example with:
|
For example with:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
if (use_history) neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_HISTORY);
|
if (use_history) neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_HISTORY);
|
||||||
else neighbor->add_request(this, NeighConst::REQ_SIZE);
|
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
|
``init_list()`` function to assign it to the suitable pointer variable. This is
|
||||||
done for example by the :doc:`pair style meam <pair_meam>`:
|
done for example by the :doc:`pair style meam <pair_meam>`:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
void PairMEAM::init_style()
|
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
|
is the request from the ``FixPeriNeigh`` class which is created
|
||||||
internally by :doc:`Peridynamics pair styles <pair_peri>`:
|
internally by :doc:`Peridynamics pair styles <pair_peri>`:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL);
|
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
|
all pair styles plus neighbor list skin). The following is used in the
|
||||||
:doc:`compute rdf <compute_rdf>` command implementation:
|
:doc:`compute rdf <compute_rdf>` command implementation:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
if (cutflag)
|
if (cutflag)
|
||||||
neighbor->add_request(this, NeighConst::REQ_OCCASIONAL)->set_cutoff(mycutneigh);
|
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>`
|
should be set. Below is the request from the :doc:`delete atoms <delete_atoms>`
|
||||||
command:
|
command:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
neighbor->add_request(this, "delete_atoms", NeighConst::REQ_FULL);
|
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
|
``pair_morse2.cpp`` with the factory function and initialization
|
||||||
function would look like this:
|
function would look like this:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
#include "lammpsplugin.h"
|
#include "lammpsplugin.h"
|
||||||
#include "version.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.
|
and it must be assigned to the *creator.v2* member of the plugin struct.
|
||||||
Below is an example for that:
|
Below is an example for that:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
#include "lammpsplugin.h"
|
#include "lammpsplugin.h"
|
||||||
#include "version.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
|
implementation of the plugin class may be within the same source
|
||||||
file as the plugin interface code:
|
file as the plugin interface code:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
#include "lammpsplugin.h"
|
#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
|
the failing command and then comparing that with a provided regular
|
||||||
expression string pattern. Example:
|
expression string pattern. Example:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
TEST_F(SimpleCommandsTest, UnknownCommand)
|
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
|
mode or only on a subset of the MPI world communicator. The CMake
|
||||||
script code for adding this kind of test looks like this:
|
script code for adding this kind of test looks like this:
|
||||||
|
|
||||||
.. code-block:: CMake
|
.. code-block:: cmake
|
||||||
|
|
||||||
if (BUILD_MPI)
|
if (BUILD_MPI)
|
||||||
add_executable(test_library_mpi test_library_mpi.cpp)
|
add_executable(test_library_mpi test_library_mpi.cpp)
|
||||||
|
|||||||
@ -61,7 +61,7 @@ header file needs to be updated accordingly.
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
int PairEAM::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc)
|
int PairEAM::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc)
|
||||||
{
|
{
|
||||||
@ -75,7 +75,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
int PairEAM::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc)
|
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:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
if (eflag || vflag) ev_setup(eflag, vflag);
|
if (eflag || vflag) ev_setup(eflag, vflag);
|
||||||
else evflag = vflag_fdotr = eflag_global = eflag_atom = 0;
|
else evflag = vflag_fdotr = eflag_global = eflag_atom = 0;
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
ev_init(eflag, vflag);
|
ev_init(eflag, vflag);
|
||||||
|
|
||||||
@ -142,14 +142,14 @@ when they are called from only one or a subset of the MPI processes.
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
val = force->numeric(FLERR, arg[1]);
|
val = force->numeric(FLERR, arg[1]);
|
||||||
num = force->inumeric(FLERR, arg[2]);
|
num = force->inumeric(FLERR, arg[2]);
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
val = utils::numeric(FLERR, true, arg[1], lmp);
|
val = utils::numeric(FLERR, true, arg[1], lmp);
|
||||||
num = utils::inumeric(FLERR, false, arg[2], lmp);
|
num = utils::inumeric(FLERR, false, arg[2], lmp);
|
||||||
@ -183,14 +183,14 @@ copy them around for simulations.
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
fp = force->open_potential(filename);
|
fp = force->open_potential(filename);
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
fp = utils::open_potential(filename, lmp);
|
fp = utils::open_potential(filename, lmp);
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ Example:
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
if (fptr == NULL) {
|
if (fptr == NULL) {
|
||||||
char str[128];
|
char str[128];
|
||||||
@ -217,7 +217,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
if (fptr == nullptr)
|
if (fptr == nullptr)
|
||||||
error->one(FLERR, "Cannot open AEAM potential file {}: {}", filename, utils::getsyserror());
|
error->one(FLERR, "Cannot open AEAM potential file {}: {}", filename, utils::getsyserror());
|
||||||
@ -237,7 +237,7 @@ an example from the ``FixWallReflect`` class:
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
FixWallReflect(class LAMMPS *, int, char **);
|
FixWallReflect(class LAMMPS *, int, char **);
|
||||||
virtual ~FixWallReflect();
|
virtual ~FixWallReflect();
|
||||||
@ -247,7 +247,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
FixWallReflect(class LAMMPS *, int, char **);
|
FixWallReflect(class LAMMPS *, int, char **);
|
||||||
~FixWallReflect() override;
|
~FixWallReflect() override;
|
||||||
@ -271,7 +271,7 @@ the type of the "this" pointer argument.
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
comm->forward_comm_pair(this);
|
comm->forward_comm_pair(this);
|
||||||
comm->forward_comm_fix(this);
|
comm->forward_comm_fix(this);
|
||||||
@ -284,7 +284,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
comm->forward_comm(this);
|
comm->forward_comm(this);
|
||||||
comm->reverse_comm(this);
|
comm->reverse_comm(this);
|
||||||
@ -304,7 +304,7 @@ requests can be :doc:`found here <Developer_notes>`. Example from the
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
int irequest = neighbor->request(this,instance_me);
|
int irequest = neighbor->request(this,instance_me);
|
||||||
neighbor->requests[irequest]->pair = 0;
|
neighbor->requests[irequest]->pair = 0;
|
||||||
@ -317,7 +317,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL);
|
auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL);
|
||||||
if (cutflag) req->set_cutoff(mycutneigh);
|
if (cutflag) req->set_cutoff(mycutneigh);
|
||||||
@ -340,7 +340,7 @@ these are internal fixes, there is no user visible change.
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
#include "fix_store.h"
|
#include "fix_store.h"
|
||||||
|
|
||||||
@ -351,7 +351,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
#include "fix_store_peratom.h"
|
#include "fix_store_peratom.h"
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ New:
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
#include "fix_store.h"
|
#include "fix_store.h"
|
||||||
|
|
||||||
@ -373,7 +373,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
#include "fix_store_global.h"
|
#include "fix_store_global.h"
|
||||||
|
|
||||||
@ -396,7 +396,7 @@ the dump directly. Example:
|
|||||||
|
|
||||||
Old:
|
Old:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
int idump = output->find_dump(arg[iarg+1]);
|
int idump = output->find_dump(arg[iarg+1]);
|
||||||
if (idump < 0)
|
if (idump < 0)
|
||||||
@ -412,7 +412,7 @@ Old:
|
|||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
auto idump = output->get_dump_by_id(arg[iarg+1]);
|
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]);
|
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
|
character, the carriage return character, the linefeed character, and
|
||||||
the form feed character.
|
the form feed character.
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
:caption: Tokenizer class example listing entries of the PATH environment variable
|
:caption: Tokenizer class example listing entries of the PATH environment variable
|
||||||
|
|
||||||
#include "tokenizer.h"
|
#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
|
when a (type of) number is requested as next token that is not
|
||||||
compatible with the string representing the next word.
|
compatible with the string representing the next word.
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
:caption: ValueTokenizer class example with exception handling
|
:caption: ValueTokenizer class example with exception handling
|
||||||
|
|
||||||
#include "tokenizer.h"
|
#include "tokenizer.h"
|
||||||
@ -427,7 +427,7 @@ one or two array indices "[<number>]" with numbers > 0.
|
|||||||
|
|
||||||
A typical code segment would look like this:
|
A typical code segment would look like this:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
:caption: Usage example for ArgInfo class
|
:caption: Usage example for ArgInfo class
|
||||||
|
|
||||||
int nvalues = 0;
|
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
|
case of failures to read or to convert numbers, so that LAMMPS will be
|
||||||
aborted.
|
aborted.
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
:caption: Use of PotentialFileReader class in pair style coul/streitz
|
:caption: Use of PotentialFileReader class in pair style coul/streitz
|
||||||
|
|
||||||
PotentialFileReader reader(lmp, file, "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()
|
its size is registered later with :cpp:func:`MyPage::vgot()
|
||||||
<LAMMPS_NS::MyPage::vgot>`.
|
<LAMMPS_NS::MyPage::vgot>`.
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
:caption: Example of using :cpp:class:`MyPage <LAMMPS_NS::MyPage>`
|
:caption: Example of using :cpp:class:`MyPage <LAMMPS_NS::MyPage>`
|
||||||
|
|
||||||
#include "my_page.h"
|
#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
|
Every fix must be registered in LAMMPS by writing the following lines
|
||||||
of code in the header before include guards:
|
of code in the header before include guards:
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c++
|
||||||
|
|
||||||
#ifdef FIX_CLASS
|
#ifdef FIX_CLASS
|
||||||
// clang-format off
|
// 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
|
Let's write a simple fix which will print the average velocity at the end
|
||||||
of each timestep. First of all, implement a constructor:
|
of each timestep. First of all, implement a constructor:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
FixPrintVel::FixPrintVel(LAMMPS *lmp, int narg, char **arg)
|
FixPrintVel::FixPrintVel(LAMMPS *lmp, int narg, char **arg)
|
||||||
: Fix(lmp, narg, 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()``:
|
The next method we need to implement is ``setmask()``:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
int FixPrintVel::setmask()
|
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 called during a timestep and the order in which they are called
|
||||||
are shown in the previous section.
|
are shown in the previous section.
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
void FixPrintVel::end_of_step()
|
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
|
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:
|
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) {
|
for (int i = 0; i < nlocal; ++i) {
|
||||||
if (atom->mask[i] & groupbit) {
|
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
|
``double** xold`` to the header file. Than add allocation code
|
||||||
to the constructor:
|
to the constructor:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
FixSavePos::FixSavePos(LAMMPS *lmp, int narg, char **arg), xold(nullptr)
|
FixSavePos::FixSavePos(LAMMPS *lmp, int narg, char **arg), xold(nullptr)
|
||||||
{
|
{
|
||||||
@ -190,7 +190,7 @@ to the constructor:
|
|||||||
|
|
||||||
Implement the aforementioned methods:
|
Implement the aforementioned methods:
|
||||||
|
|
||||||
.. code-block:: C++
|
.. code-block:: c++
|
||||||
|
|
||||||
double FixSavePos::memory_usage()
|
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
|
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.
|
module. By using the default constructor, a new *lammps* instance is created.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import PyLammps
|
from lammps import PyLammps
|
||||||
L = PyLammps()
|
L = PyLammps()
|
||||||
|
|
||||||
You can also initialize PyLammps on top of this existing *lammps* object:
|
You can also initialize PyLammps on top of this existing *lammps* object:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import lammps, PyLammps
|
from lammps import lammps, PyLammps
|
||||||
lmp = lammps()
|
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
|
In the original interface this command can be executed with the following
|
||||||
Python code if *L* was a lammps instance:
|
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")
|
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
|
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.
|
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)
|
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
|
parameterization. In the original interface parameterization needed to be done
|
||||||
manually by creating formatted strings.
|
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))
|
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
|
In contrast, methods of PyLammps accept parameters directly and will convert
|
||||||
them automatically to a final command string.
|
them automatically to a final command string.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
L.region("box block", xlo, xhi, ylo, yhi, zlo, zhi)
|
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:
|
To define a variable you can use the :doc:`variable <variable>` command:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
L.variable("a index 2")
|
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
|
you can access an individual variable by retrieving a variable object from the
|
||||||
L.variables dictionary by name
|
L.variables dictionary by name
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
a = L.variables['a']
|
a = L.variables['a']
|
||||||
|
|
||||||
The variable value can then be easily read and written by accessing the value
|
The variable value can then be easily read and written by accessing the value
|
||||||
property of this object.
|
property of this object.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
print(a.value)
|
print(a.value)
|
||||||
a.value = 4
|
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,
|
passed string parameter can be any expression containing global thermo values,
|
||||||
variables, compute or fix data.
|
variables, compute or fix data.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
result = L.eval("ke") # kinetic energy
|
result = L.eval("ke") # kinetic energy
|
||||||
result = L.eval("pe") # potential 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,
|
Each element of this list is an object which exposes its properties (id, type,
|
||||||
position, velocity, force, etc.).
|
position, velocity, force, etc.).
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
# access first atom
|
# access first atom
|
||||||
L.atoms[0].id
|
L.atoms[0].id
|
||||||
@ -311,7 +311,7 @@ position, velocity, force, etc.).
|
|||||||
|
|
||||||
Some properties can also be used to set:
|
Some properties can also be used to set:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
# set position in 2D simulation
|
# set position in 2D simulation
|
||||||
L.atoms[0].position = (1.0, 0.0)
|
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 first element is the output of the first run, the second element that of
|
||||||
the second run.
|
the second run.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
L.run(1000)
|
L.run(1000)
|
||||||
L.runs[0] # data of first 1000 time steps
|
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
|
Each run contains a dictionary of all trajectories. Each trajectory is
|
||||||
accessible through its thermo name:
|
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.Step # list of time steps in first run
|
||||||
L.runs[0].thermo.Ke # list of kinetic energy values 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:
|
Together with matplotlib plotting data out of LAMMPS becomes simple:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
import matplotlib.plot as plt
|
import matplotlib.plot as plt
|
||||||
steps = L.runs[0].thermo.Step
|
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
|
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.
|
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)]
|
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.
|
It is then disordered by moving each atom by a random delta.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
random.seed(27848)
|
random.seed(27848)
|
||||||
deltaperturb = 0.2
|
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
|
Finally, the Monte Carlo algorithm is implemented in Python. It continuously
|
||||||
moves random atoms by a random delta and only accepts certain moves.
|
moves random atoms by a random delta and only accepts certain moves.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
estart = L.eval("pe")
|
estart = L.eval("pe")
|
||||||
elast = estart
|
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
|
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.
|
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 mpi4py import MPI
|
||||||
from lammps import PyLammps
|
from lammps import PyLammps
|
||||||
|
|||||||
@ -43,7 +43,7 @@ JSON
|
|||||||
"ke": $(ke)
|
"ke": $(ke)
|
||||||
}""" file current_state.json screen no
|
}""" file current_state.json screen no
|
||||||
|
|
||||||
.. code-block:: JSON
|
.. code-block:: json
|
||||||
:caption: current_state.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
|
:ref:`exceptions <exceptions>`, avoiding them proactively is a safer
|
||||||
approach.
|
approach.
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: c
|
||||||
:caption: Example for using configuration settings functions
|
:caption: Example for using configuration settings functions
|
||||||
|
|
||||||
#include "library.h"
|
#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
|
instance is destroyed by calling :cpp:func:`lammps_close`. Here is a
|
||||||
simple example demonstrating its use:
|
simple example demonstrating its use:
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: c
|
||||||
|
|
||||||
#include "library.h"
|
#include "library.h"
|
||||||
#include <stdio.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.
|
``${name}`` or ``$(expression)`` syntax is performed.
|
||||||
Below is a short example using some of these functions.
|
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 to make the otherwise hidden prototype for "lammps_open()" visible */
|
||||||
#define LAMMPS_LIB_MPI
|
#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
|
every neighbor list rebuild or atom sort event as atoms migrate between
|
||||||
sub-domains and processors.
|
sub-domains and processors.
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: c
|
||||||
|
|
||||||
#include "library.h"
|
#include "library.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|||||||
@ -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
|
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.):
|
these objects provide access to their data (id, type, position, velocity, force, etc.):
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
# access first atom
|
# access first atom
|
||||||
L.atoms[0].id
|
L.atoms[0].id
|
||||||
@ -71,7 +71,7 @@ against invalid accesses.
|
|||||||
|
|
||||||
Some attributes can be changed:
|
Some attributes can be changed:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
# set position in 2D simulation
|
# set position in 2D simulation
|
||||||
L.atoms[0].position = (1.0, 0.0)
|
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
|
The following methods can be used to query the LAMMPS library
|
||||||
about compile time settings and included packages and styles.
|
about compile time settings and included packages and styles.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
:caption: Example for using configuration settings functions
|
:caption: Example for using configuration settings functions
|
||||||
|
|
||||||
from lammps import lammps
|
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:`PyLammps <lammps.PyLammps>` objects can also be created on top of an existing
|
||||||
:py:class:`lammps <lammps.lammps>` object:
|
:py:class:`lammps <lammps.lammps>` object:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import lammps, PyLammps
|
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:
|
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
|
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
|
Note that you can create multiple LAMMPS objects in your Python
|
||||||
script, and coordinate and run multiple simulations, e.g.
|
script, and coordinate and run multiple simulations, e.g.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import lammps
|
from lammps import lammps
|
||||||
lmp1 = 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
|
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.
|
LAMMPS errors can be handled through the Python exception handling mechanism.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import lammps, MPIAbortException
|
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
|
can be executed using with the lammps API with the following Python code if ``lmp`` is an
|
||||||
instance of :py:class:`lammps <lammps.lammps>`:
|
instance of :py:class:`lammps <lammps.lammps>`:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import lammps
|
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
|
The arguments of the command can be passed as one string, or
|
||||||
individually.
|
individually.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import PyLammps
|
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
|
parameterization. In the lammps API parameterization needed to be done
|
||||||
manually by creating formatted command strings.
|
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))
|
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
|
In contrast, methods of PyLammps accept parameters directly and will convert
|
||||||
them automatically to a final command string.
|
them automatically to a final command string.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
L.region("box block", xlo, xhi, ylo, yhi, zlo, zhi)
|
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``
|
Note that without the mpi4py specific lines from ``test.py``
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from lammps import lammps
|
from lammps import lammps
|
||||||
lmp = 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:
|
To define a variable you can use the :doc:`variable <variable>` command:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
L.variable("a index 2")
|
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
|
you can access an individual variable by retrieving a variable object from the
|
||||||
``L.variables`` dictionary by name
|
``L.variables`` dictionary by name
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
a = L.variables['a']
|
a = L.variables['a']
|
||||||
|
|
||||||
The variable value can then be easily read and written by accessing the value
|
The variable value can then be easily read and written by accessing the value
|
||||||
property of this object.
|
property of this object.
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
print(a.value)
|
print(a.value)
|
||||||
a.value = 4
|
a.value = 4
|
||||||
|
|||||||
@ -105,7 +105,7 @@ against invalid accesses.
|
|||||||
variables, compute or fix data (see :doc:`Howto_output`):
|
variables, compute or fix data (see :doc:`Howto_output`):
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
result = L.eval("ke") # kinetic energy
|
result = L.eval("ke") # kinetic energy
|
||||||
result = L.eval("pe") # potential energy
|
result = L.eval("pe") # potential energy
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
Scatter/gather operations
|
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
|
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
|
# 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
|
ctypes vector of ints or doubles, allocated and initialized something
|
||||||
like this:
|
like this:
|
||||||
|
|
||||||
.. code-block:: Python
|
.. code-block:: python
|
||||||
|
|
||||||
from ctypes import c_double
|
from ctypes import c_double
|
||||||
natoms = lmp.get_natoms()
|
natoms = lmp.get_natoms()
|
||||||
|
|||||||
Reference in New Issue
Block a user