@@ -228,7 +228,7 @@ def parse_data(file):
228228 if os .path .exists (possible_filename ):
229229 with open (possible_filename ) as f :
230230 data = f .readlines ()
231- ccdata = ccread ( possible_filename )
231+
232232 if data is None :
233233 raise ValueError ("File {} does not exist" .format (file ))
234234
@@ -243,14 +243,28 @@ def parse_data(file):
243243 program = "NWChem"
244244 break
245245 repeated_link1 = 0
246- spe = ccdata .scfenergies [- 1 ]
247- if hasattr (ccdata , "mpenergies" ):
248- spe = ccdata .mpenergies [- 1 ]
249- if hasattr (ccdata , "ccenergies" ):
250- spe = ccdata .ccenergies [- 1 ]
251- spe = convertor (spe , "eV" , "hartree" )
252- charge = ccdata .charge
253- multiplicity = ccdata .mult
246+
247+ if program != "Orca" :
248+ try :
249+ possible_filenames = (stub + ".log" , stub + ".out" )
250+ for possible_filename in possible_filenames :
251+ if os .path .exists (possible_filename ):
252+ ccdata = ccread (possible_filename )
253+ except IndexError :
254+ ccdata = None
255+ if ccdata :
256+ try :
257+ spe = ccdata .scfenergies [- 1 ]
258+ if hasattr (ccdata , "mpenergies" ):
259+ spe = ccdata .mpenergies [- 1 ]
260+ if hasattr (ccdata , "ccenergies" ):
261+ spe = ccdata .ccenergies [- 1 ]
262+ spe = convertor (spe , "eV" , "hartree" )
263+ charge = ccdata .charge
264+ multiplicity = ccdata .mult
265+ except AttributeError :
266+ pass
267+
254268 for line in data :
255269 if program == "Gaussian" :
256270 if line .strip ().startswith ('E2(' ):
@@ -282,9 +296,22 @@ def parse_data(file):
282296 elif program == "Orca" :
283297 if 'Program Version' in line .strip ():
284298 version_program = "ORCA version " + line .split ()[2 ]
299+ if line .strip ().startswith ('FINAL SINGLE POINT ENERGY' ):
300+ spe = float (line .strip ().split ()[4 ])
301+ if "Total Charge" in line .strip () and "...." in line .strip ():
302+ charge = int (line .strip ("=" ).split ()[- 1 ])
303+ if "Multiplicity" in line .strip () and "...." in line .strip ():
304+ multiplicity = int (line .strip ("=" ).split ()[- 1 ])
285305 elif program == "NWChem" :
286306 if 'nwchem branch' in line .strip ():
287307 version_program = "NWChem version " + line .split ()[3 ]
308+ if ccdata == None :
309+ if line .strip ().startswith ('Total DFT energy' ):
310+ spe = float (line .strip ().split ()[4 ])
311+ if "charge" in line .strip ():
312+ charge = int (line .strip ().split ()[- 1 ])
313+ if "mult " in line .strip ():
314+ multiplicity = int (line .strip ().split ()[- 1 ])
288315
289316 # Solvation model and empirical dispersion detection
290317 if 'Gaussian' in version_program .strip ():
@@ -434,17 +461,6 @@ def parse_data(file):
434461 empirical_dispersion3 = ' with zero damping'
435462 empirical_dispersion = empirical_dispersion1 + empirical_dispersion2 + empirical_dispersion3
436463 if 'NWChem' in version_program .strip ():
437- # keyword_line_1 = "gas phase"
438- # keyword_line_2 = ''
439- # keyword_line_3 = ''
440- # for i, line in enumerate(data):
441- # if 'CPCM SOLVATION MODEL' in line.strip():
442- # keyword_line_1 = "CPCM,"
443- # if 'SMD CDS free energy correction energy' in line.strip():
444- # keyword_line_2 = "SMD,"
445- # if "Solvent: " in line.strip():
446- # keyword_line_3 = line.strip().split()[-1]
447- # solvation_model = keyword_line_1 + keyword_line_2 + keyword_line_3
448464 empirical_dispersion1 = 'No empirical dispersion detected'
449465 empirical_dispersion2 = ''
450466 empirical_dispersion3 = ''
0 commit comments