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
|
#! /usr/bin/python
from string import *
import re
import os
import sys
from math import sqrt
parmpat = re.compile("([A-Z][a-z]?)([\+=\-@#])([A-Z][a-z]?) +Ks= *([\d\.]+) +R0= *([\d\.]+) +De= *([\d\.]+)")
commpat = re.compile("#")
elmnts=[("H", 1, 1.6737),
("He", 2, 6.646),
("Li", 3, 11.525),
("Be", 4, 14.964),
("B", 5, 17.949),
("C", 6, 19.925),
("N", 7, 23.257),
("O", 8, 26.565),
("F", 9, 31.545),
("Ne", 10, 33.49),
("Na", 11, 38.1726),
("Mg", 12, 40.356),
("Al", 13, 44.7997),
("Si", 14, 46.6245),
("P", 15, 51.429),
("S", 16, 53.233),
("Cl", 17, 58.867),
("Ar", 18, 66.33),
("K", 19, 64.9256),
("Ca", 20, 66.5495),
("Sc", 21, 74.646),
("Ti", 22, 79.534),
("V", 23, 84.584),
("Cr", 24, 86.335),
("Mn", 25, 91.22),
("Fe", 26, 92.729),
("Co", 27, 97.854),
("Ni", 28, 97.483),
("Cu", 29, 105.513),
("Zn", 30, 108.541),
("Ga", 31, 115.764),
("Ge", 32, 120.53),
("As", 33, 124.401),
("Se", 34, 131.106),
("Br", 35, 132.674),
("Kr", 36, 134.429)]
sym2num={}
for (sym, num, mass) in elmnts:
sym2num[sym] = num
bontyp = {'-':'1', '=':'2', '+':'3','@':'a', '#':'g'}
if __name__ == "__main__":
f=open(sys.argv[1])
for lin in f.readlines():
if commpat.match(lin): continue
m = parmpat.match(lin)
which = m.group(1),m.group(2),m.group(3)
ks,r0,de = map(lambda p: float(m.group(p)),[4,5,6])
bt=sqrt(ks/(2.0*de))/10.0
r0=r0*100.0
print ' addInitialBondStretch(',
print '%2d,'%sym2num[which[0]],
print '%2d,'%sym2num[which[2]],
print "'%s',"%bontyp[which[1]],
print '%6.1f,%6.1f,%7.4f,%7.4f); //'%(ks,r0,de,bt),
print which[0]+which[1]+which[2]
|