source: util/src/CalculateDensity.py.in@ 48cd93

Last change on this file since 48cd93 was e1a46d, checked in by Frederik Heber <heber@…>, 16 years ago

All of my python script put into ESPACK and adapted with @PYTHON@ and so on.

  • Property mode set to 100644
File size: 1.7 KB
Line 
1#! @PYTHON@
2#
3# calculates the density via elements.db
4
5exec_prefix="@prefix@"
6ELEMENTSDB=exec_prefix+"/bin/elements.db"
7import sys, string, re, math
8wrerr = sys.stderr.write
9wrout = sys.stdout.write
10
11# check for parameters
12if len(sys.argv) < 4:
13 wrerr("Usage: "+sys.argv[0]+" <datafile> <offsetToElement> <offsetToXYZ\n")
14 sys.exit(1)
15
16offset=int(sys.argv[2])
17offsetXYZ=int(sys.argv[3])
18
19
20# parse elements symbol and mass into hash list
21print "Parsing elements db at "+ELEMENTSDB
22elementfile=open(ELEMENTSDB,"r")
23elements={}
24for line in elementfile:
25 if "#" in line:
26 continue
27 entries=line.split()
28 if len(entries) > 6:
29 elements[entries[1]]=float(entries[6])
30 else:
31 print "Not parsed: "+line
32elementfile.close()
33
34# go through given data file and sum up
35inputfile=open(sys.argv[1],"r")
36weight=0.
37min=[0., 0., 0.]
38max=[0., 0., 0.]
39for line in inputfile:
40 if "#" in line:
41 continue
42 entries=line.split()
43 if weight == 0.:
44 for i in range(3):
45 min[i]=float(entries[offsetXYZ+i])
46 max[i]=float(entries[offsetXYZ+i])
47 else:
48 for i in range(3):
49 if (min[i] > float(entries[offsetXYZ+i])):
50 min[i]=float(entries[offsetXYZ+i])
51 if (max[i] < float(entries[offsetXYZ+i])):
52 max[i]=float(entries[offsetXYZ+i])
53 weight += elements[entries[offset]]
54inputfile.close()
55
56volume=1.
57wrout("Bounds are ")
58for i in range(3):
59 wrout("[%g, %g]\t" % (min[i], max[i]))
60 volume=volume*(max[i]-min[i])
61wrout("\n")
62print "Total Volume of bounding box is "+str(volume)+" angstrom^3."
63print "Total weight is "+str(weight)+" atomicmassunit."
64print "Total density is "+str(weight/volume)+" atomicmassunit/angstrom^3."
65print "Total density is "+str(1.6605387*weight/volume)+" g/cm^3."
Note: See TracBrowser for help on using the repository browser.