Fix code path which allows passing a C++ ptr to PyLammps
This commit is contained in:
@ -53,6 +53,7 @@ class lammps(object):
|
|||||||
|
|
||||||
def __init__(self,name="",cmdargs=None,ptr=None,comm=None):
|
def __init__(self,name="",cmdargs=None,ptr=None,comm=None):
|
||||||
self.comm = comm
|
self.comm = comm
|
||||||
|
self.opened = 0
|
||||||
|
|
||||||
# determine module location
|
# determine module location
|
||||||
|
|
||||||
@ -133,18 +134,20 @@ class lammps(object):
|
|||||||
# self.lmp = self.lib.lammps_open_no_mpi(0,None)
|
# self.lmp = self.lib.lammps_open_no_mpi(0,None)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.opened = 0
|
|
||||||
# magic to convert ptr to ctypes ptr
|
# magic to convert ptr to ctypes ptr
|
||||||
pythonapi.PyCObject_AsVoidPtr.restype = c_void_p
|
pythonapi.PyCObject_AsVoidPtr.restype = c_void_p
|
||||||
pythonapi.PyCObject_AsVoidPtr.argtypes = [py_object]
|
pythonapi.PyCObject_AsVoidPtr.argtypes = [py_object]
|
||||||
self.lmp = c_void_p(pythonapi.PyCObject_AsVoidPtr(ptr))
|
self.lmp = c_void_p(pythonapi.PyCObject_AsVoidPtr(ptr))
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
if self.lmp and self.opened: self.lib.lammps_close(self.lmp)
|
if self.lmp and self.opened:
|
||||||
|
self.lib.lammps_close(self.lmp)
|
||||||
|
self.opened = 0
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
if self.opened: self.lib.lammps_close(self.lmp)
|
if self.opened: self.lib.lammps_close(self.lmp)
|
||||||
self.lmp = None
|
self.lmp = None
|
||||||
|
self.opened = 0
|
||||||
|
|
||||||
def version(self):
|
def version(self):
|
||||||
return self.lib.lammps_version(self.lmp)
|
return self.lib.lammps_version(self.lmp)
|
||||||
@ -504,8 +507,7 @@ class PyLammps(object):
|
|||||||
elif isinstance(ptr,lammps):
|
elif isinstance(ptr,lammps):
|
||||||
self.lmp = ptr
|
self.lmp = ptr
|
||||||
else:
|
else:
|
||||||
self.lmp = None
|
self.lmp = lammps(name=name,cmdargs=cmdargs,ptr=ptr,comm=comm)
|
||||||
raise TypeError('Unsupported type passed as "ptr"')
|
|
||||||
else:
|
else:
|
||||||
self.lmp = lammps(name=name,cmdargs=cmdargs,ptr=None,comm=comm)
|
self.lmp = lammps(name=name,cmdargs=cmdargs,ptr=None,comm=comm)
|
||||||
print("LAMMPS output is captured by PyLammps wrapper")
|
print("LAMMPS output is captured by PyLammps wrapper")
|
||||||
|
|||||||
Reference in New Issue
Block a user