Rename fix python/integrate to python/move

This is to avoid confusion to what LAMMPS considers to be an
integrator like Verlet and RESPA.
This commit is contained in:
Richard Berger
2017-12-02 01:04:46 -05:00
parent 51688b2504
commit f8891a4451
7 changed files with 30 additions and 29 deletions

View File

@ -1,15 +1,16 @@
This folder contains several LAMMPS input scripts and a python module This folder contains several LAMMPS input scripts and a python module
file py_integrate.py to demonstrate the use of the fix style python/integrate. file py_nve.py to demonstrate the use of the fix style python/move
to reimplement NVE using Python.
in.fix_python_integrate_melt: in.fix_python_nve_melt:
This is a version of the melt example which replaces the default NVE integrator This is a version of the melt example which replaces the default NVE integrator
with a Python implementation. Fix python/integrate is used to create an with a Python implementation. Fix python/move is used to create an
instance of the py_integrate.NVE class which implements the required interface. instance of the py_nve.NVE class which implements the required interface.
It demonstrates how to access LAMMPS data as numpy arrays. This gives direct It demonstrates how to access LAMMPS data as numpy arrays. This gives direct
access to memory owned by the C++ code, allows easy manipulation through numpy access to memory owned by the C++ code, allows easy manipulation through numpy
operations and avoids unnecessary copies. operations and avoids unnecessary copies.
in.fix_python_integrate_melt_opt: in.fix_python_nve_melt_opt:
This version of melt example uses NVE_Opt instead of NVE. While this Python This version of melt example uses NVE_Opt instead of NVE. While this Python
implementation is still much slower than the native version, it shows that implementation is still much slower than the native version, it shows that
simple code transformations can lead to speedups. simple code transformations can lead to speedups.

View File

@ -17,7 +17,7 @@ pair_coeff 1 1 1.0 1.0 2.5
neighbor 0.3 bin neighbor 0.3 bin
neigh_modify every 20 delay 0 check no neigh_modify every 20 delay 0 check no
fix 1 all python/integrate py_integrate.NVE fix 1 all python/move py_nve.NVE
thermo 50 thermo 50
run 250 run 250

View File

@ -17,7 +17,7 @@ pair_coeff 1 1 1.0 1.0 2.5
neighbor 0.3 bin neighbor 0.3 bin
neigh_modify every 20 delay 0 check no neigh_modify every 20 delay 0 check no
fix 1 all python/integrate py_integrate.NVE_Opt fix 1 all python/move py_nve.NVE_Opt
thermo 50 thermo 50
run 250 run 250

View File

@ -9,9 +9,9 @@ class LAMMPSFix(object):
self.lmp = lammps.lammps(ptr=ptr) self.lmp = lammps.lammps(ptr=ptr)
self.group_name = group_name self.group_name = group_name
class LAMMPSIntegrator(LAMMPSFix): class LAMMPSFixMove(LAMMPSFix):
def __init__(self, ptr, group_name="all"): def __init__(self, ptr, group_name="all"):
super(LAMMPSIntegrator, self).__init__(ptr, group_name) super(LAMMPSFixMove, self).__init__(ptr, group_name)
def init(self): def init(self):
pass pass
@ -32,7 +32,7 @@ class LAMMPSIntegrator(LAMMPSFix):
pass pass
class NVE(LAMMPSIntegrator): class NVE(LAMMPSFixMove):
""" Python implementation of fix/nve """ """ Python implementation of fix/nve """
def __init__(self, ptr, group_name="all"): def __init__(self, ptr, group_name="all"):
super(NVE, self).__init__(ptr) super(NVE, self).__init__(ptr)
@ -70,7 +70,7 @@ class NVE(LAMMPSIntegrator):
v[i,:] += dtfm * f[i,:] v[i,:] += dtfm * f[i,:]
class NVE_Opt(LAMMPSIntegrator): class NVE_Opt(LAMMPSFixMove):
""" Performance-optimized Python implementation of fix/nve """ """ Performance-optimized Python implementation of fix/nve """
def __init__(self, ptr, group_name="all"): def __init__(self, ptr, group_name="all"):
super(NVE_Opt, self).__init__(ptr) super(NVE_Opt, self).__init__(ptr)

4
src/.gitignore vendored
View File

@ -910,8 +910,8 @@
/python_compat.h /python_compat.h
/fix_python.cpp /fix_python.cpp
/fix_python.h /fix_python.h
/fix_python_integrate.cpp /fix_python_move.cpp
/fix_python_integrate.h /fix_python_move.h
/pair_python.cpp /pair_python.cpp
/pair_python.h /pair_python.h
/reader_molfile.cpp /reader_molfile.cpp

View File

@ -19,7 +19,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "fix_python_integrate.h" #include "fix_python_move.h"
#include "atom.h" #include "atom.h"
#include "comm.h" #include "comm.h"
#include "force.h" #include "force.h"
@ -34,7 +34,7 @@ using namespace FixConst;
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
FixPythonIntegrate::FixPythonIntegrate(LAMMPS *lmp, int narg, char **arg) : FixPythonMove::FixPythonMove(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg) Fix(lmp, narg, arg)
{ {
dynamic_group_allow = 1; dynamic_group_allow = 1;
@ -111,7 +111,7 @@ FixPythonIntegrate::FixPythonIntegrate(LAMMPS *lmp, int narg, char **arg) :
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
FixPythonIntegrate::~FixPythonIntegrate() FixPythonMove::~FixPythonMove()
{ {
PyGILState_STATE gstate = PyGILState_Ensure(); PyGILState_STATE gstate = PyGILState_Ensure();
if(py_integrator) Py_DECREF((PyObject*) py_integrator); if(py_integrator) Py_DECREF((PyObject*) py_integrator);
@ -120,7 +120,7 @@ FixPythonIntegrate::~FixPythonIntegrate()
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
int FixPythonIntegrate::setmask() int FixPythonMove::setmask()
{ {
int mask = 0; int mask = 0;
mask |= INITIAL_INTEGRATE; mask |= INITIAL_INTEGRATE;
@ -132,7 +132,7 @@ int FixPythonIntegrate::setmask()
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void FixPythonIntegrate::init() void FixPythonMove::init()
{ {
PyGILState_STATE gstate = PyGILState_Ensure(); PyGILState_STATE gstate = PyGILState_Ensure();
PyObject *py_integrator_obj = (PyObject *) py_integrator; PyObject *py_integrator_obj = (PyObject *) py_integrator;
@ -149,7 +149,7 @@ void FixPythonIntegrate::init()
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void FixPythonIntegrate::initial_integrate(int vflag) void FixPythonMove::initial_integrate(int vflag)
{ {
PyGILState_STATE gstate = PyGILState_Ensure(); PyGILState_STATE gstate = PyGILState_Ensure();
PyObject *py_integrator_obj = (PyObject *) py_integrator; PyObject *py_integrator_obj = (PyObject *) py_integrator;
@ -168,7 +168,7 @@ void FixPythonIntegrate::initial_integrate(int vflag)
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void FixPythonIntegrate::final_integrate() void FixPythonMove::final_integrate()
{ {
PyGILState_STATE gstate = PyGILState_Ensure(); PyGILState_STATE gstate = PyGILState_Ensure();
PyObject *py_integrator_obj = (PyObject *) py_integrator; PyObject *py_integrator_obj = (PyObject *) py_integrator;
@ -185,7 +185,7 @@ void FixPythonIntegrate::final_integrate()
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void FixPythonIntegrate::initial_integrate_respa(int vflag, int ilevel, int iloop) void FixPythonMove::initial_integrate_respa(int vflag, int ilevel, int iloop)
{ {
PyGILState_STATE gstate = PyGILState_Ensure(); PyGILState_STATE gstate = PyGILState_Ensure();
PyObject *py_integrator_obj = (PyObject *) py_integrator; PyObject *py_integrator_obj = (PyObject *) py_integrator;
@ -204,7 +204,7 @@ void FixPythonIntegrate::initial_integrate_respa(int vflag, int ilevel, int iloo
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void FixPythonIntegrate::final_integrate_respa(int ilevel, int iloop) void FixPythonMove::final_integrate_respa(int ilevel, int iloop)
{ {
PyGILState_STATE gstate = PyGILState_Ensure(); PyGILState_STATE gstate = PyGILState_Ensure();
PyObject *py_integrator_obj = (PyObject *) py_integrator; PyObject *py_integrator_obj = (PyObject *) py_integrator;
@ -223,7 +223,7 @@ void FixPythonIntegrate::final_integrate_respa(int ilevel, int iloop)
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
void FixPythonIntegrate::reset_dt() void FixPythonMove::reset_dt()
{ {
PyGILState_STATE gstate = PyGILState_Ensure(); PyGILState_STATE gstate = PyGILState_Ensure();
PyObject *py_integrator_obj = (PyObject *) py_integrator; PyObject *py_integrator_obj = (PyObject *) py_integrator;

View File

@ -23,21 +23,21 @@
#ifdef FIX_CLASS #ifdef FIX_CLASS
FixStyle(python/integrate,FixPythonIntegrate) FixStyle(python/move,FixPythonMove)
#else #else
#ifndef LMP_FIX_PYTHON_INTEGRATE_H #ifndef LMP_FIX_PYTHON_MOVE_H
#define LMP_FIX_PYTHON_INTEGRATE_H #define LMP_FIX_PYTHON_MOVE_H
#include "fix.h" #include "fix.h"
namespace LAMMPS_NS { namespace LAMMPS_NS {
class FixPythonIntegrate : public Fix { class FixPythonMove : public Fix {
public: public:
FixPythonIntegrate(LAMMPS *lmp, int narg, char **arg); FixPythonMove(LAMMPS *lmp, int narg, char **arg);
virtual ~FixPythonIntegrate(); virtual ~FixPythonMove();
int setmask(); int setmask();
virtual void init(); virtual void init();