diff --git a/python/lammps.py b/python/lammps.py index 679f1be7b054032dad3360ec06b42df3aedd1fe6..2db657fbae84c17a7afb6af7b10eecebb4bb4ccf 100644 --- a/python/lammps.py +++ b/python/lammps.py @@ -32,6 +32,13 @@ import select import re import sys +def get_ctypes_int(size): + if size == 4: + return c_int32 + elif size == 8: + return c_int64 + return c_int + class MPIAbortException(Exception): def __init__(self, message): self.message = message @@ -165,6 +172,11 @@ class lammps(object): # optional numpy support (lazy loading) self._numpy = None + # set default types + self.c_bigint = get_ctypes_int(self.extract_setting("bigint")) + self.c_tagint = get_ctypes_int(self.extract_setting("tagint")) + self.c_imageint = get_ctypes_int(self.extract_setting("imageint")) + def __del__(self): if self.lmp and self.opened: self.lib.lammps_close(self.lmp) @@ -239,6 +251,13 @@ class lammps(object): ptr = self.lib.lammps_extract_atom(self.lmp,name) return ptr + # extract lammps type byte sizes + + def extract_setting(self, name): + if name: name = name.encode() + self.lib.lammps_extract_atom.restype = c_int + return int(self.lib.lammps_extract_setting(self.lmp,name)) + @property def numpy(self): if not self._numpy: