Unverified Commit 4180b4a7 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

add example to COUPLE folder demonstrating loading LAMMPS as a plugin.

parent 7434267f
Loading
Loading
Loading
Loading
+70 −0
Original line number Diff line number Diff line
This directory has a simple C code that shows how
LAMMPS can be linked to a driver application as a library. The purpose
is to illustrate how another code could perform computations while
using LAMMPS to perform MD on all or a subset of the processors, or
how an umbrella code or script could call both LAMMPS and some other
code to perform a coupled calculation.

simple.c           is the C driver
liblammpsplugin.c  is the LAMMPS library plugin loader

The 3 codes do the same thing, so you can compare them to see how to
drive LAMMPS from each language.  See lammps/python/example/simple.py
to do something similar from Python.  The Fortran driver requires an
additional wrapper library that interfaces the C interface of the
LAMMPS library to Fortran and also translates the MPI communicator
from Fortran to C.

First build LAMMPS as a library (see examples/COUPLE/README), e.g. 

cd $HOME/lammps/src
make mode=shlib mpi

or 

cd $HOME/lammps
mkdir build-shared
cd build-shared
cmake -D BUILD_LIB=on -D BUILD_SHARED_LIBS=on ../cmake
make

You can then build any of the driver codes with compile lines like
these, which include paths to the LAMMPS library interface, and
linking with FFTW (only needed if you built LAMMPS as a library with
its PPPM solver).

mpicc -c simple.c
mpicc simple.o -llammps -lfftw -o simpleC


You then run simpleC on a parallel machine
on some number of processors Q with 3 arguments:

% mpirun -np Q simpleC P in.lj $HOME/lammps/src/liblammps.so

or

% mpirun -np Q simpleC P in.lj $HOME/lammps/build-shared/liblammps.so

P is the number of procs you want LAMMPS to run on (must be <= Q) and
in.lj is a LAMMPS input script and the last argument is the path to
the LAMMPS shared library. This either has to be an absolute path, or
liblammps.so has to be in a folder that is included in the environment
variable LD_LIBRARY_PATH so it will be found by the dynamic object loader.

The driver will launch LAMMPS on P procs, read the input script a line
at a time, and pass each command line to LAMMPS.  The final line of
the script is a "run" command, so LAMMPS will run the problem.

The driver then requests all the atom coordinates from LAMMPS, moves
one of the atoms a small amount "epsilon", passes the coordinates back
to LAMMPS, and runs LAMMPS again.  If you look at the output, you
should see a small energy change between runs, due to the moved atom.

The C driver is calling C-style routines in the src/library.cpp file
of LAMMPS through the function pointers in the liblammpsplugin_t struct.
This has the benefit that your binary is not linked to liblammps.so directly
and thus you can change the name of the shared library (e.g. to have 
different variants compiled, or to load a different LAMMPS versions without
having to update your executable).
+25 −0
Original line number Diff line number Diff line
# 3d Lennard-Jones melt

units		lj
atom_style	atomic
atom_modify	map array

lattice		fcc 0.8442
region		box block 0 4 0 4 0 4
create_box	1 box
create_atoms	1 box
mass		1 1.0

velocity	all create 1.44 87287 loop geom

pair_style	lj/cut 2.5
pair_coeff	1 1 1.0 1.0 2.5

neighbor	0.3 bin
neigh_modify	delay 0 every 20 check no

fix		1 all nve

variable        fx atom fx

run		10
+99 −0
Original line number Diff line number Diff line
/* -*- c++ -*- ----------------------------------------------------------
   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
   http://lammps.sandia.gov, Sandia National Laboratories
   Steve Plimpton, sjplimp@sandia.gov

   Copyright (2003) Sandia Corporation.  Under the terms of Contract
   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
   certain rights in this software.  This software is distributed under
   the GNU General Public License.

   See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */

/*
   Variant of the C style library interface to LAMMPS
   that uses a shared library and dynamically opens it,
   so this can be used as a prototype code to integrate
   a LAMMPS plugin to some other software.
*/

#include "library.h"
#include "liblammpsplugin.h"
#include <stdlib.h>
#include <dlfcn.h>

liblammpsplugin_t *liblammpsplugin_load(const char *lib)
{
  liblammpsplugin_t *lmp;
  void *handle;

  if (lib == NULL) return NULL;
  handle = dlopen(lib,RTLD_NOW|RTLD_GLOBAL);
  if (handle == NULL) return NULL;
  
  lmp = (liblammpsplugin_t *) malloc(sizeof(liblammpsplugin_t));
  lmp->handle = handle;

#define ADDSYM(symbol) lmp->symbol = dlsym(handle,"lammps_" #symbol)
  ADDSYM(open);
  ADDSYM(open_no_mpi);
  ADDSYM(close);
  ADDSYM(version);
  ADDSYM(file);
  ADDSYM(command);
  ADDSYM(commands_list);
  ADDSYM(commands_string);
  ADDSYM(free);
  ADDSYM(extract_setting);
  ADDSYM(extract_global);
  ADDSYM(extract_box);
  ADDSYM(extract_atom);
  ADDSYM(extract_compute);
  ADDSYM(extract_fix);
  ADDSYM(extract_variable);

  ADDSYM(get_thermo);
  ADDSYM(get_natoms);

  ADDSYM(set_variable);
  ADDSYM(reset_box);

  ADDSYM(gather_atoms);
  ADDSYM(gather_atoms_concat);
  ADDSYM(gather_atoms_subset);
  ADDSYM(scatter_atoms);
  ADDSYM(scatter_atoms_subset);

  ADDSYM(set_fix_external_callback);

  ADDSYM(config_has_package);
  ADDSYM(config_package_count);
  ADDSYM(config_package_name);
  ADDSYM(config_has_gzip_support);
  ADDSYM(config_has_png_support);
  ADDSYM(config_has_jpeg_support);
  ADDSYM(config_has_ffmpeg_support);
  ADDSYM(config_has_exceptions);
  ADDSYM(create_atoms);
#ifdef LAMMPS_EXCEPTIONS
  lmp->has_exceptions = 1;
  ADDSYM(has_error);
  ADDSYM(get_last_error_message);
#else
  lmp->has_exceptions = 0;
  lmp->has_error = NULL;
  lmp->get_last_error_message = NULL;
#endif
  return lmp;
}

int liblammpsplugin_release(liblammpsplugin_t *lmp)
{
  if (lmp == NULL) return 1;
  if (lmp->handle == NULL) return 2;

  dlclose(lmp->handle);
  free((void *)lmp);
  return 0;
}
+126 −0
Original line number Diff line number Diff line
/* -*- c++ -*- ----------------------------------------------------------
   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
   http://lammps.sandia.gov, Sandia National Laboratories
   Steve Plimpton, sjplimp@sandia.gov

   Copyright (2003) Sandia Corporation.  Under the terms of Contract
   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
   certain rights in this software.  This software is distributed under
   the GNU General Public License.

   See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */

#ifndef LIBLAMMPSPLUGIN_H
#define LIBLAMMPSPLUGIN_H
/*
   Variant of the C style library interface to LAMMPS
   that uses a shared library and dynamically opens it,
   so this can be used as a prototype code to integrate
   a LAMMPS plugin to some other software.
*/

/*
 * Follow the behavior of regular LAMMPS compilation and assume
 * -DLAMMPS_SMALLBIG when no define is set.
 */
#if !defined(LAMMPS_BIGBIG) && !defined(LAMMPS_SMALLBIG) && !defined(LAMMPS_SMALLSMALL)
#define LAMMPS_SMALLBIG
#endif

#include <mpi.h>
#if defined(LAMMPS_BIGBIG) || defined(LAMMPS_SMALLBIG)
#include <inttypes.h>  /* for int64_t */
#endif

#ifdef __cplusplus
extern "C" {
#endif

#if defined(LAMMPS_BIGBIG)
typedef void (*FixExternalFnPtr)(void *, int64_t, int, int64_t *, double **, double **);
#elif defined(LAMMPS_SMALLBIG)
typedef void (*FixExternalFnPtr)(void *, int64_t, int, int *, double **, double **);
#else
typedef void (*FixExternalFnPtr)(void *, int, int, int *, double **, double **);
#endif

  
struct _liblammpsplugin {
  int abiversion;
  int has_exceptions;
  void *handle;
  void (*open)(int, char **, MPI_Comm, void **);
  void (*open_no_mpi)(int, char **, void **);
  void (*close)(void *);
  int  (*version)(void *);
  void (*file)(void *, char *);
  char *(*command)(void *, char *);
  void (*commands_list)(void *, int, char **);
  void (*commands_string)(void *, char *);
  void (*free)(void *);
  int (*extract_setting)(void *, char *);
  void *(*extract_global)(void *, char *);
  void (*extract_box)(void *, double *, double *,
		      double *, double *, double *, int *, int *);
  void *(*extract_atom)(void *, char *);
  void *(*extract_compute)(void *, char *, int, int);
  void *(*extract_fix)(void *, char *, int, int, int, int);
  void *(*extract_variable)(void *, char *, char *);

  double (*get_thermo)(void *, char *);
  int (*get_natoms)(void *);

  int (*set_variable)(void *, char *, char *);
  void (*reset_box)(void *, double *, double *, double, double, double);

  void (*gather_atoms)(void *, char *, int, int, void *);
  void (*gather_atoms_concat)(void *, char *, int, int, void *);
  void (*gather_atoms_subset)(void *, char *, int, int, int, int *, void *);
  void (*scatter_atoms)(void *, char *, int, int, void *);
  void (*scatter_atoms_subset)(void *, char *, int, int, int, int *, void *);

  void (*set_fix_external_callback)(void *, char *, FixExternalFnPtr, void*);

  int (*config_has_package)(char * package_name);
  int (*config_package_count)();
  int (*config_package_name)(int index, char * buffer, int max_size);
  int (*config_has_gzip_support)();
  int (*config_has_png_support)();
  int (*config_has_jpeg_support)();
  int (*config_has_ffmpeg_support)();
  int (*config_has_exceptions)();

  int (*find_pair_neighlist)(void* ptr, char * style, int exact, int nsub, int request);
  int (*find_fix_neighlist)(void* ptr, char * id, int request);
  int (*find_compute_neighlist)(void* ptr, char * id, int request);
  int (*neighlist_num_elements)(void* ptr, int idx);
  void (*neighlist_element_neighbors)(void * ptr, int idx, int element, int * iatom, int * numneigh, int ** neighbors);

// lammps_create_atoms() takes tagint and imageint as args
// ifdef insures they are compatible with rest of LAMMPS
// caller must match to how LAMMPS library is built

#ifdef LAMMPS_BIGBIG
  void (*create_atoms)(void *, int, int64_t *, int *,
                         double *, double *, int64_t *, int);
#else
  void (*create_atoms)(void *, int, int *, int *,
                         double *, double *, int *, int);
#endif

  int (*has_error)(void *);
  int (*get_last_error_message)(void *, char *, int);
};

typedef struct _liblammpsplugin liblammpsplugin_t;

liblammpsplugin_t *liblammpsplugin_load(const char *);
int liblammpsplugin_release(liblammpsplugin_t *);
  
#undef LAMMPS
#ifdef __cplusplus
}
#endif

#endif
+294 −0
Original line number Diff line number Diff line
LAMMPS (18 Feb 2020)
Lattice spacing in x,y,z = 1.6796 1.6796 1.6796
Created orthogonal box = (0 0 0) to (6.71838 6.71838 6.71838)
  1 by 1 by 1 MPI processor grid
Created 256 atoms
  create_atoms CPU = 0.000297844 secs
Neighbor list info ...
  update every 20 steps, delay 0 steps, check no
  max neighbors/atom: 2000, page size: 100000
  master list distance cutoff = 2.8
  ghost atom cutoff = 2.8
  binsize = 1.4, bins = 5 5 5
  1 neighbor lists, perpetual/occasional/extra = 1 0 0
  (1) pair lj/cut, perpetual
      attributes: half, newton on
      pair build: half/bin/atomonly/newton
      stencil: half/bin/3d/newton
      bin: standard
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 0
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
       0         1.44   -6.7733681            0   -4.6218056   -5.0244179 
      10    1.1298532   -6.3095502            0   -4.6213906   -2.6058175 
Loop time of 0.00164276 on 1 procs for 10 steps with 256 atoms

Performance: 2629719.113 tau/day, 6087.313 timesteps/s
93.7% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0014956  | 0.0014956  | 0.0014956  |   0.0 | 91.04
Neigh   | 0          | 0          | 0          |   0.0 |  0.00
Comm    | 8.045e-05  | 8.045e-05  | 8.045e-05  |   0.0 |  4.90
Output  | 1.1399e-05 | 1.1399e-05 | 1.1399e-05 |   0.0 |  0.69
Modify  | 3.7431e-05 | 3.7431e-05 | 3.7431e-05 |   0.0 |  2.28
Other   |            | 1.789e-05  |            |       |  1.09

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1431 ave 1431 max 1431 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9984 ave 9984 max 9984 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9984
Ave neighs/atom = 39
Neighbor list builds = 0
Dangerous builds not checked
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 10
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
      10    1.1298532   -6.3095502            0   -4.6213906   -2.6058175 
      20    0.6239063    -5.557644            0   -4.6254403   0.97451173 
Loop time of 0.00199768 on 1 procs for 10 steps with 256 atoms

Performance: 2162504.180 tau/day, 5005.797 timesteps/s
99.8% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0018518  | 0.0018518  | 0.0018518  |   0.0 | 92.70
Neigh   | 0          | 0          | 0          |   0.0 |  0.00
Comm    | 7.9768e-05 | 7.9768e-05 | 7.9768e-05 |   0.0 |  3.99
Output  | 1.1433e-05 | 1.1433e-05 | 1.1433e-05 |   0.0 |  0.57
Modify  | 3.6904e-05 | 3.6904e-05 | 3.6904e-05 |   0.0 |  1.85
Other   |            | 1.773e-05  |            |       |  0.89

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1431 ave 1431 max 1431 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9952 ave 9952 max 9952 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9952
Ave neighs/atom = 38.875
Neighbor list builds = 0
Dangerous builds not checked
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 20
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
      20    0.6239063   -5.5404291            0   -4.6082254    1.0394285 
      21   0.63845863   -5.5628733            0   -4.6089263   0.99398278 
Loop time of 0.000304321 on 1 procs for 1 steps with 256 atoms

Performance: 1419553.695 tau/day, 3286.004 timesteps/s
98.9% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.00027815 | 0.00027815 | 0.00027815 |   0.0 | 91.40
Neigh   | 0          | 0          | 0          |   0.0 |  0.00
Comm    | 8.321e-06  | 8.321e-06  | 8.321e-06  |   0.0 |  2.73
Output  | 1.0513e-05 | 1.0513e-05 | 1.0513e-05 |   0.0 |  3.45
Modify  | 3.968e-06  | 3.968e-06  | 3.968e-06  |   0.0 |  1.30
Other   |            | 3.365e-06  |            |       |  1.11

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1431 ave 1431 max 1431 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9705 ave 9705 max 9705 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9705
Ave neighs/atom = 37.9102
Neighbor list builds = 0
Dangerous builds not checked
Force on 1 atom via extract_atom: 26.9581
Force on 1 atom via extract_variable: 26.9581
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 21
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
      21   0.63845863   -5.5628733            0   -4.6089263   0.99398278 
      31    0.7494946   -5.7306417            0   -4.6107913   0.41043597 
Loop time of 0.00196027 on 1 procs for 10 steps with 256 atoms

Performance: 2203779.175 tau/day, 5101.341 timesteps/s
99.7% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0018146  | 0.0018146  | 0.0018146  |   0.0 | 92.57
Neigh   | 0          | 0          | 0          |   0.0 |  0.00
Comm    | 8.0268e-05 | 8.0268e-05 | 8.0268e-05 |   0.0 |  4.09
Output  | 1.0973e-05 | 1.0973e-05 | 1.0973e-05 |   0.0 |  0.56
Modify  | 3.6913e-05 | 3.6913e-05 | 3.6913e-05 |   0.0 |  1.88
Other   |            | 1.756e-05  |            |       |  0.90

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1431 ave 1431 max 1431 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9688 ave 9688 max 9688 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9688
Ave neighs/atom = 37.8438
Neighbor list builds = 0
Dangerous builds not checked
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 31
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
      31    0.7494946   -5.7306417            0   -4.6107913   0.41043597 
      51   0.71349216   -5.6772387            0   -4.6111811   0.52117681 
Loop time of 0.00433063 on 1 procs for 20 steps with 256 atoms

Performance: 1995088.941 tau/day, 4618.261 timesteps/s
99.3% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0035121  | 0.0035121  | 0.0035121  |   0.0 | 81.10
Neigh   | 0.00050258 | 0.00050258 | 0.00050258 |   0.0 | 11.61
Comm    | 0.00019444 | 0.00019444 | 0.00019444 |   0.0 |  4.49
Output  | 1.2092e-05 | 1.2092e-05 | 1.2092e-05 |   0.0 |  0.28
Modify  | 7.2917e-05 | 7.2917e-05 | 7.2917e-05 |   0.0 |  1.68
Other   |            | 3.647e-05  |            |       |  0.84

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1421 ave 1421 max 1421 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9700 ave 9700 max 9700 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9700
Ave neighs/atom = 37.8906
Neighbor list builds = 1
Dangerous builds not checked
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 51
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
      51   0.71349216   -5.6772387            0   -4.6111811   0.52117681 
      61   0.78045421   -5.7781094            0   -4.6120011  0.093808941 
Loop time of 0.00196567 on 1 procs for 10 steps with 256 atoms

Performance: 2197727.285 tau/day, 5087.332 timesteps/s
99.7% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0018222  | 0.0018222  | 0.0018222  |   0.0 | 92.70
Neigh   | 0          | 0          | 0          |   0.0 |  0.00
Comm    | 7.8285e-05 | 7.8285e-05 | 7.8285e-05 |   0.0 |  3.98
Output  | 1.0862e-05 | 1.0862e-05 | 1.0862e-05 |   0.0 |  0.55
Modify  | 3.6719e-05 | 3.6719e-05 | 3.6719e-05 |   0.0 |  1.87
Other   |            | 1.764e-05  |            |       |  0.90

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1421 ave 1421 max 1421 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9700 ave 9700 max 9700 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9700
Ave neighs/atom = 37.8906
Neighbor list builds = 0
Dangerous builds not checked
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 61
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
      61   0.78045421   -5.7781094            0   -4.6120011  0.093808941 
      81   0.77743907   -5.7735004            0   -4.6118971  0.090822641 
Loop time of 0.00430528 on 1 procs for 20 steps with 256 atoms

Performance: 2006838.581 tau/day, 4645.460 timesteps/s
99.8% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0034931  | 0.0034931  | 0.0034931  |   0.0 | 81.13
Neigh   | 0.00050437 | 0.00050437 | 0.00050437 |   0.0 | 11.72
Comm    | 0.0001868  | 0.0001868  | 0.0001868  |   0.0 |  4.34
Output  | 1.1699e-05 | 1.1699e-05 | 1.1699e-05 |   0.0 |  0.27
Modify  | 7.3308e-05 | 7.3308e-05 | 7.3308e-05 |   0.0 |  1.70
Other   |            | 3.604e-05  |            |       |  0.84

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1405 ave 1405 max 1405 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9701 ave 9701 max 9701 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9701
Ave neighs/atom = 37.8945
Neighbor list builds = 1
Dangerous builds not checked
Deleted 256 atoms, new total = 0
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 81
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 2.63 | 2.63 | 2.63 Mbytes
Step Temp E_pair E_mol TotEng Press 
      81    0.6239063   -5.5404291            0   -4.6082254    1.0394285 
      91   0.75393007   -5.7375259            0   -4.6110484   0.39357367 
Loop time of 0.00195843 on 1 procs for 10 steps with 256 atoms

Performance: 2205851.941 tau/day, 5106.139 timesteps/s
99.7% CPU use with 1 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.0018143  | 0.0018143  | 0.0018143  |   0.0 | 92.64
Neigh   | 0          | 0          | 0          |   0.0 |  0.00
Comm    | 7.8608e-05 | 7.8608e-05 | 7.8608e-05 |   0.0 |  4.01
Output  | 1.0786e-05 | 1.0786e-05 | 1.0786e-05 |   0.0 |  0.55
Modify  | 3.7106e-05 | 3.7106e-05 | 3.7106e-05 |   0.0 |  1.89
Other   |            | 1.762e-05  |            |       |  0.90

Nlocal:    256 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:    1431 ave 1431 max 1431 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:    9705 ave 9705 max 9705 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 9705
Ave neighs/atom = 37.9102
Neighbor list builds = 0
Dangerous builds not checked
Total wall time: 0:00:00
Loading