From: <bao...@us...> - 2006-05-27 07:58:43
|
Revision: 162 Author: baoilleach Date: 2006-05-27 00:58:33 -0700 (Sat, 27 May 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=162&view=rev Log Message: ----------- Jaguar parser now reads scftargets and values correctly, at least for geometry optimisations. Have also converted scfenergies to eV. The GeoOpt test now looks at dvb_gopt_b, which has all of the virtual orbitals included, instead of dvb_gopt Modified Paths: -------------- trunk/src/cclib/parser/jaguarparser.py trunk/test/testGeoOpt.py Modified: trunk/src/cclib/parser/jaguarparser.py =================================================================== --- trunk/src/cclib/parser/jaguarparser.py 2006-05-26 18:45:47 UTC (rev 161) +++ trunk/src/cclib/parser/jaguarparser.py 2006-05-27 07:58:33 UTC (rev 162) @@ -50,6 +50,8 @@ inputfile.seek(0) self.progress.initialize(nstep) oldstep=0 + + geoopt = False # Is this a GeoOpt? Needed for SCF targets/values. for line in inputfile: @@ -64,8 +66,12 @@ # Get SCF convergence information if not hasattr(self,"scfvalues"): self.scfvalues = [] - self.logger.info("Creating attribute: scfvalues") - values = [] + self.logger.info("Creating attribute: scfvalues,scftargets") + self.scftargets = Numeric.array([5E-5,5E-6],"f") + if not geoopt: + values = [[],[]] + else: + values = [[]] while line[0:4]=="etot": if line[39:47].strip(): denergy = float(line[39:47]) @@ -74,7 +80,11 @@ # or should we just ignore the values in this line ddensity = float(line[48:56]) maxdiiserr = float(line[57:65]) - values.append([denergy,ddensity,maxdiiserr]) + if not geoopt: + values[0].append(denergy) + values[1].append(ddensity) + else: + values[0].append(ddensity) line = inputfile.next() self.scfvalues.append(values) @@ -84,7 +94,7 @@ self.logger.info("Creating attribute scfenergies") self.scfenergies = [] temp = line.strip().split() - self.scfenergies.append(float(temp[temp.index("hartrees")-1])) + self.scfenergies.append(utils.convertor(float(temp[temp.index("hartrees")-1]),"hartree","eV")) if line[2:14]=="new geometry" or line[1:21]=="Symmetrized geometry": # Get the atom coordinates @@ -107,6 +117,14 @@ self.atomnos = Numeric.array(atomnos,"i") self.natom = len(atomcoords) + if not geoopt and line[2:24]=="start of program geopt": + geoopt = True + if hasattr(self,"scfvalues"): + # Need to keep only the RMS density change info + # if this is a geoopt + self.scfvalues[0] = [self.scfvalues[0][1]] + self.scftargets = self.scftargets[0] + if line[2:28]=="geometry optimization step": # Get Geometry Opt convergence information if not hasattr(self,"geovalues"): @@ -187,8 +205,8 @@ inputfile.close() -## if hasattr(self,"scfvalues"): -## self.scfvalues = Numeric.array(self.scfvalues,"f") + if hasattr(self,"scfvalues"): + self.scfvalues = [Numeric.array(x,"f") for x in self.scfvalues] if hasattr(self,"scfenergies"): self.scfenergies = Numeric.array(self.scfenergies,"f") if hasattr(self,"atomcoords"): Modified: trunk/test/testGeoOpt.py =================================================================== --- trunk/test/testGeoOpt.py 2006-05-26 18:45:47 UTC (rev 161) +++ trunk/test/testGeoOpt.py 2006-05-27 07:58:33 UTC (rev 162) @@ -33,7 +33,6 @@ coords = self.data.atomcoords self.assertEquals(len(self.data.geovalues),len(coords),"len(atomcoords) is %d but len(geovalues) is %d" % (len(coords),len(self.data.geovalues))) - def testnatom(self): """Is the number of atoms equal to 20?""" self.assertEquals(self.data.natom,20) @@ -101,7 +100,7 @@ class JaguarGeoOptTest(GenericGeoOptTest): def setUp(self): - self.data = getfile(Jaguar,"basicJaguar","eg01","dvb_gopt.out") + self.data = getfile(Jaguar,"basicJaguar","eg01","dvb_gopt_b.out") names = [ "Gaussian", "PCGamess", "GAMESS", "ADF", "Jaguar" ] tests = [ GaussianGeoOptTest, PCGamessGeoOptTest, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |