From 0b5a2e199ddb32a71577a9b3938d7df0e25f30eb Mon Sep 17 00:00:00 2001 From: Richard Berger <richard.berger@temple.edu> Date: Wed, 12 Jul 2017 10:55:08 -0500 Subject: [PATCH] Add way of getting correct ctypes integer type for bigint, tagint, and imageint --- python/lammps.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/python/lammps.py b/python/lammps.py index 679f1be7b0..2db657fbae 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: -- GitLab