66 lines
1.4 KiB
Python
Executable File
66 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import sys
|
|
to_bohr = 1.88972598858
|
|
|
|
files = sys.argv[1:]
|
|
methods = [ "CC2", "CCSD", "CC3" ]
|
|
|
|
def find_text(lines,text):
|
|
k = 0
|
|
for line in lines:
|
|
if line.strip().startswith(text):
|
|
break
|
|
k+=1
|
|
return k
|
|
|
|
def find_empty(lines):
|
|
k = 0
|
|
for line in lines:
|
|
if line.strip() == "":
|
|
break
|
|
k+=1
|
|
return k
|
|
|
|
def print_energy(lines,X):
|
|
k = find_text(lines,"Total %5s energy:"%(X.ljust(5)))
|
|
energy = float(lines[k].split()[3])
|
|
lines = lines[k:]
|
|
k = find_text(lines,"Total energies in Hartree:")+1
|
|
l = find_empty(lines[k:])+k
|
|
table = [ float(line.split()[2]) for line in lines[k:l] ]
|
|
lines = lines[l:]
|
|
|
|
with open("res_%s.dat"%(X),status) as f:
|
|
f.write("%6.2f %15.10f "%(distance,float(energy)))
|
|
for x in table:
|
|
f.write("%15.10f "%(float(x)))
|
|
f.write("\n")
|
|
|
|
return l
|
|
|
|
|
|
|
|
status = 'w'
|
|
for filename in files:
|
|
with open(filename, 'r') as f:
|
|
|
|
# Read the whole file as a list of lines
|
|
lines = f.readlines()
|
|
|
|
# Find geometry
|
|
k = find_text(lines,"bond distance:")
|
|
distance = float(lines[k].split()[4]) * to_bohr
|
|
lines = lines[k:]
|
|
|
|
# Find summary
|
|
k = find_text(lines,"* SUMMARY OF COUPLED CLUSTER CALCULATION")
|
|
lines = lines[k:]
|
|
|
|
l = print_energy(lines,"CC2")
|
|
l = print_energy(lines,"CCSD")
|
|
l = print_energy(lines,"CC3")
|
|
|
|
status = 'a'
|
|
|