File: python-pizza.py

package info (click to toggle)
lammps 20250204%2Bdfsg.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 474,368 kB
  • sloc: cpp: 1,060,070; python: 27,785; ansic: 8,956; f90: 7,254; sh: 6,044; perl: 4,171; fortran: 2,442; xml: 1,714; makefile: 1,352; objc: 238; lisp: 188; yacc: 58; csh: 16; awk: 14; tcl: 6; javascript: 2
file content (169 lines) | stat: -rw-r--r-- 5,690 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import os
import sys
import unittest
from lammps import lammps

EXAMPLES_DIR=os.path.abspath(os.path.join(__file__, '..', '..', '..', 'examples'))
PIZZA_DIR=os.path.abspath(os.path.join(__file__, '..', '..', '..', 'tools', 'python', 'pizza'))
DEFAULT_STYLE_EXAMPLE_LOG=os.path.join('melt', 'log.*.melt.g++.1')
MULTI_STYLE_EXAMPLE_LOG=os.path.join('peptide', 'log.27Nov18.peptide.g++.1')
sys.path.insert(1,PIZZA_DIR)

# dump class uses NumPy, so only load and test dump if NumPy is available
has_numpy = False
has_molecule = False
machine = None
if 'LAMMPS_MACHINE_NAME' in os.environ:
    machine=os.environ['LAMMPS_MACHINE_NAME']
tmplmp = lammps(name=machine,  cmdargs=['-nocite', '-log', 'none', '-echo', 'screen'])
has_molecule = tmplmp.has_package('MOLECULE')
tmplmp.close()

try:
    import numpy
    has_numpy = True
    import dump
except:
    pass
do_dump_test = has_numpy and has_molecule

import log

class Logfiles(unittest.TestCase):
    def testLogFileNotFound(self):
        with self.assertRaises(ValueError):
            l = log.log('test.log')

    def testDefaultLogFile(self):
        l = log.log(os.path.join(EXAMPLES_DIR, DEFAULT_STYLE_EXAMPLE_LOG))
        self.assertEqual(l.nvec, 6)
        self.assertEqual(l.nlen, 6)
        self.assertEqual(l.style, 2)
        self.assertEqual(l.increment, 0)
        n = l.names
        self.assertEqual(len(n), 6)
        self.assertIn("Step", n)
        self.assertIn("Temp", n)
        self.assertIn("E_pair", n)
        self.assertIn("E_mol", n)
        self.assertIn("TotEng", n)
        self.assertIn("Press", n)
        s = l.get("Step")
        self.assertEqual(0.0, s[0])
        self.assertEqual(50.0, s[1])
        self.assertEqual(100.0, s[2])
        self.assertEqual(150.0, s[3])
        self.assertEqual(200.0, s[4])
        self.assertEqual(250.0, s[5])
        t,m = l.get("Temp", "E_mol")
        self.assertEqual(t[0],3.0)
        self.assertEqual(m[2],0.0)
        l.write("all.txt",0)
        l.write("some.txt",1,"Step","Temp","Press")

        with self.assertRaises(Exception):
            t = l.next()

        os.remove('all.txt')
        os.remove('some.txt')

    def testIncrementalLogFile(self):
        l = log.log(os.path.join(EXAMPLES_DIR, DEFAULT_STYLE_EXAMPLE_LOG), 0)
        self.assertEqual(l.style, -1)
        self.assertEqual(l.nvec, 0)
        self.assertEqual(l.increment, 1)
        t = l.next()
        self.assertEqual(l.style, 2)
        self.assertEqual(l.nvec, 6)

    def testMultiLogFile(self):
        l = log.log(os.path.join(EXAMPLES_DIR, MULTI_STYLE_EXAMPLE_LOG))
        self.assertEqual(l.nvec, 14)
        self.assertEqual(l.nlen, 7)
        self.assertEqual(l.style, 1)
        n = l.names
        self.assertEqual(len(n), 14)
        self.assertIn("Step", n)
        self.assertIn("CPU", n)
        self.assertIn("TotEng", n)
        self.assertIn("KinEng", n)
        self.assertIn("Temp", n)
        self.assertIn("PotEng", n)
        self.assertIn("E_bond", n)
        self.assertIn("E_angle", n)
        self.assertIn("E_dihed", n)
        self.assertIn("E_impro", n)
        self.assertIn("E_vdwl", n)
        self.assertIn("E_coul", n)
        self.assertIn("E_long", n)
        self.assertIn("Press", n)
        s = l.get("Step")
        self.assertEqual(0.0, s[0])
        self.assertEqual(50.0, s[1])
        self.assertEqual(100.0, s[2])
        self.assertEqual(150.0, s[3])
        self.assertEqual(200.0, s[4])
        self.assertEqual(250.0, s[5])
        self.assertEqual(300.0, s[6])
        v,c = l.get("E_vdwl", "E_coul")
        self.assertEqual(v[0],692.8945)
        self.assertEqual(c[0],26772.2646)
        l.write("all.txt",0)
        l.write("some.txt",1,"Step","Temp","Press")

        with self.assertRaises(ValueError):
            v = l.get("Volume")
        with self.assertRaises(Exception):
            t = l.next()

        os.remove('all.txt')
        os.remove('some.txt')

class PythonDump(unittest.TestCase):
    def setUp(self):
        machine = None
        if 'LAMMPS_MACHINE_NAME' in os.environ:
            machine=os.environ['LAMMPS_MACHINE_NAME']
        self.lmp = lammps(name=machine,  cmdargs=['-nocite', '-log', 'none', '-echo', 'screen'])
        self.do_dump_test = self.lmp.has_package('MOLECULE') and has_numpy

    def tearDown(self):
        del self.lmp

    @unittest.skipIf(not do_dump_test,"Missing the NumPy python module or MOLECULE package")
    def testDumpCustom(self):
        dumpfile = os.path.join(os.path.abspath('.'), 'dump.custom')
        self.lmp.command('shell cd ' + os.environ['TEST_INPUT_DIR'])
        self.lmp.command("newton on on")
        self.lmp.file("in.fourmol")
        self.lmp.command("dump 1 all custom 2 " + dumpfile + " id type mol q x y z vx vy vz")
        self.lmp.command("dump_modify 1 time yes units yes")
        self.lmp.command("run 4 post no")
        self.lmp.command("undump 1")
        d = dump.dump(dumpfile)
        id1, id2 = d.minmax("id")
        self.assertEqual(id1,1)
        self.assertEqual(id2,29)
        t = d.time()
        self.assertEqual(len(t),3)
        d.tselect.one(2,4)
        index, time, flag = d.iterator(0)
        self.assertEqual(index,1)
        self.assertEqual(time,2)
        self.assertEqual(flag,1)
        index, time, flag = d.iterator(1)
        self.assertEqual(index,2)
        self.assertEqual(time,4)
        self.assertEqual(flag,1)
        index, time, flag = d.iterator(1)
        self.assertEqual(index,0)
        self.assertEqual(time,0)
        self.assertEqual(flag,-1)

        with self.assertRaises(Exception):
          t = d.next()

        os.remove(dumpfile)

if __name__ == "__main__":
    unittest.main()