From: <ate...@us...> - 2006-05-10 23:28:52
|
Revision: 111 Author: atenderholt Date: 2006-05-10 16:28:49 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=111&view=rev Log Message: ----------- Progress info in density method, and some fix to adfparser Modified Paths: -------------- trunk/src/cclib/method/density.py trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/method/density.py =================================================================== --- trunk/src/cclib/method/density.py 2006-05-10 23:02:55 UTC (rev 110) +++ trunk/src/cclib/method/density.py 2006-05-10 23:28:49 UTC (rev 111) @@ -37,7 +37,7 @@ """Return a representation of the object.""" return 'Density matrix("%s")' % (self.parser) - def calculate(self,fupdate=0.05,cupdate=0.002): + def calculate(self,fupdate=0.05): """Calculate the density matrix given the results of a parser""" if not self.parser.parsed: @@ -45,33 +45,49 @@ #do we have the needed info in the parser? if not hasattr(self.parser,"mocoeffs") \ - and not hasattr(self.parser,"aooverlaps") \ and not hasattr(self.parser,"nbasis") \ and not hasattr(self.parser,"homos"): - self.logger.error("Missing mocoeffs or aooverlaps") + self.logger.error("Missing mocoeffs, nbasis, or homos") return False #let the caller of function know we didn't finish self.logger.info("Creating attribute density: array[3]") size=self.parser.nbasis unrestricted=(len(self.parser.mocoeffs)==2) + #determine number of steps, and whether process involves beta orbitals + nstep=self.parser.homos[0]+1 if unrestricted: self.density=Numeric.zeros([2,size,size],"f") + nstep+=self.parser.homos[1]+1 else: self.density=Numeric.zeros([1,size,size],"f") + #intialize progress if available + if self.progress: + self.progress.initialize(nstep) + + step=0 for spin in range(len(self.parser.mocoeffs)): for i in range(self.parser.homos[spin]+1): + + if self.progress and random.random()<fupdate: + self.progress.update(step,"Density Matrix") + col=Numeric.reshape(self.parser.mocoeffs[spin][i],(size,1)) colt=Numeric.reshape(col,(1,size)) tempdensity=Numeric.matrixmultiply(col,colt) self.density[spin]=Numeric.add(self.density[spin],tempdensity) + step+=1 + if not unrestricted: #multiply by two to account for second electron self.density[0]=Numeric.add(self.density[0],self.density[0]) + if self.progress: + self.progress.update(nstep,"Done") + if __name__=="__main__": import doctest,g03parser doctest.testmod(g03parser,verbose=False) Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-05-10 23:02:55 UTC (rev 110) +++ trunk/src/cclib/parser/adfparser.py 2006-05-10 23:28:49 UTC (rev 111) @@ -295,6 +295,7 @@ temp=Numeric.array(self.moenergies,"f") self.moenergies=temp + self.homos=Numeric.array(self.homos) if line[1:24]=="List of All Frequencies": # Start of the IR/Raman frequency section This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |