From 4eeb90d13500548305041de3492af5c26cf3dc54 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Sep 2021 21:12:28 -0400 Subject: [PATCH 1/4] fix PyLammps parser issue with parsing info command output --- python/lammps/pylammps.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/lammps/pylammps.py b/python/lammps/pylammps.py index a89791a02e..b0eeb6c401 100644 --- a/python/lammps/pylammps.py +++ b/python/lammps/pylammps.py @@ -643,7 +643,7 @@ class PyLammps(object): return [x.strip() for x in value.split('=')] def _parse_info_system(self, output): - lines = output[6:-2] + lines = output[5:-2] system = {} for line in lines: @@ -704,7 +704,7 @@ class PyLammps(object): return system def _parse_info_communication(self, output): - lines = output[6:-3] + lines = output[5:-3] comm = {} for line in lines: @@ -725,7 +725,7 @@ class PyLammps(object): return comm def _parse_element_list(self, output): - lines = output[6:-3] + lines = output[5:-3] elements = [] for line in lines: @@ -737,7 +737,7 @@ class PyLammps(object): return elements def _parse_groups(self, output): - lines = output[6:-3] + lines = output[5:-3] groups = [] group_pattern = re.compile(r"(?P.+) \((?P.+)\)") From 7b1e951916ba9887fcbcdaabf4817e2bd6b4d638 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Sep 2021 21:13:09 -0400 Subject: [PATCH 2/4] add unit test for checking properties parsed from info command output --- unittest/python/python-pylammps.py | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/unittest/python/python-pylammps.py b/unittest/python/python-pylammps.py index f703d206fa..492aec6510 100644 --- a/unittest/python/python-pylammps.py +++ b/unittest/python/python-pylammps.py @@ -84,5 +84,41 @@ class PythonPyLammps(unittest.TestCase): self.assertEqual(len(self.pylmp.last_run.thermo.TotEng), 2) self.assertEqual(len(self.pylmp.last_run.thermo.Press), 2) + def test_info_queries(self): + self.pylmp.lattice("fcc", 0.8442), + self.pylmp.region("box block", 0, 4, 0, 4, 0, 4) + self.pylmp.create_box(1, "box") + self.pylmp.variable("a equal 10.0") + self.pylmp.variable("b string value") + self.assertEqual(self.pylmp.variables['a'].value, 10.0) + self.assertEqual(self.pylmp.variables['b'].value, 'value') + self.assertEqual(len(self.pylmp.variables),2) + self.assertEqual(self.pylmp.system.units,'lj') + self.assertEqual(self.pylmp.system.atom_style,'atomic') + self.assertEqual(self.pylmp.system.ntypes,1) + self.assertEqual(self.pylmp.system.natoms,0) + self.assertEqual(self.pylmp.communication.comm_style,'brick') + self.assertEqual(self.pylmp.communication.comm_layout,'uniform') + self.assertEqual(self.pylmp.communication.nprocs,1) + self.assertEqual(len(self.pylmp.computes),3) + self.assertEqual(self.pylmp.computes[0]['name'], 'thermo_temp') + self.assertEqual(self.pylmp.computes[0]['style'], 'temp') + self.assertEqual(self.pylmp.computes[0]['group'], 'all') + self.assertEqual(self.pylmp.computes[1]['name'], 'thermo_press') + self.assertEqual(self.pylmp.computes[1]['style'], 'pressure') + self.assertEqual(self.pylmp.computes[1]['group'], 'all') + self.assertEqual(self.pylmp.computes[2]['name'], 'thermo_pe') + self.assertEqual(self.pylmp.computes[2]['style'], 'pe') + self.assertEqual(self.pylmp.computes[2]['group'], 'all') + self.assertEqual(len(self.pylmp.dumps),0) + self.pylmp.fix('one','all','nve') + self.assertEqual(len(self.pylmp.fixes),1) + self.assertEqual(self.pylmp.fixes[0]['name'], 'one') + self.assertEqual(self.pylmp.fixes[0]['style'], 'nve') + self.assertEqual(self.pylmp.fixes[0]['group'], 'all') + self.pylmp.group('none','empty') + self.assertEqual(len(self.pylmp.groups),2) + + if __name__ == "__main__": unittest.main() From d09851e695f99ac5da376a05f6b9dbde70e835df Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 9 Sep 2021 21:47:08 -0400 Subject: [PATCH 3/4] Improve MPI support in PyLammps --- python/lammps/pylammps.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/python/lammps/pylammps.py b/python/lammps/pylammps.py index b0eeb6c401..a6e3578aef 100644 --- a/python/lammps/pylammps.py +++ b/python/lammps/pylammps.py @@ -508,11 +508,6 @@ class PyLammps(object): :py:attr:`PyLammps.last_run`. """ output = self.__getattr__('run')(*args, **kwargs) - - comm = self.lmp.get_mpi_comm() - if comm: - output = self.lmp.comm.bcast(output, root=0) - self.runs += get_thermo_data(output) return output @@ -784,6 +779,10 @@ class PyLammps(object): self.command(cmd) output = capture.output + comm = self.lmp.get_mpi_comm() + if comm: + output = self.lmp.comm.bcast(output, root=0) + if 'verbose' in kwargs and kwargs['verbose']: print(output) From 6ef8c12457631bfd12608769f6dd41bcfeb11020 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Sep 2021 23:05:30 -0400 Subject: [PATCH 4/4] whitespace --- unittest/python/python-pylammps.py | 1 - 1 file changed, 1 deletion(-) diff --git a/unittest/python/python-pylammps.py b/unittest/python/python-pylammps.py index 492aec6510..6294972ab4 100644 --- a/unittest/python/python-pylammps.py +++ b/unittest/python/python-pylammps.py @@ -118,7 +118,6 @@ class PythonPyLammps(unittest.TestCase): self.assertEqual(self.pylmp.fixes[0]['group'], 'all') self.pylmp.group('none','empty') self.assertEqual(len(self.pylmp.groups),2) - if __name__ == "__main__": unittest.main()