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
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
with a Python implementation. Fix python/integrate is used to create an
instance of the py_integrate.NVE class which implements the required interface.
with a Python implementation. Fix python/move is used to create an
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
access to memory owned by the C++ code, allows easy manipulation through numpy
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
implementation is still much slower than the native version, it shows that
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
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
run 250

View File

@ -17,7 +17,7 @@ pair_coeff 1 1 1.0 1.0 2.5
neighbor 0.3 bin
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
run 250

View File

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

4
src/.gitignore vendored
View File

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

View File

@ -19,7 +19,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "fix_python_integrate.h"
#include "fix_python_move.h"
#include "atom.h"
#include "comm.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)
{
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();
if(py_integrator) Py_DECREF((PyObject*) py_integrator);
@ -120,7 +120,7 @@ FixPythonIntegrate::~FixPythonIntegrate()
/* ---------------------------------------------------------------------- */
int FixPythonIntegrate::setmask()
int FixPythonMove::setmask()
{
int mask = 0;
mask |= INITIAL_INTEGRATE;
@ -132,7 +132,7 @@ int FixPythonIntegrate::setmask()
/* ---------------------------------------------------------------------- */
void FixPythonIntegrate::init()
void FixPythonMove::init()
{
PyGILState_STATE gstate = PyGILState_Ensure();
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();
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();
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();
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();
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();
PyObject *py_integrator_obj = (PyObject *) py_integrator;

View File

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