Subject: PyQuante 1.1.1 available (Quantum Chemistry in Python)

From: Richard Muller <[email-masked]>
Date: Mon, 14 Apr 2003 14:57:59 -0700

PyQuante (http://pyquante.sourceforge.net) is a suite of programs for
writing quantum chemistry software. The program is written in the
Python programming language, but has many "rate-determining" modules
also written in C for speed. The resulting code is not nearly as fast
as Jaguar, Gaussian, or GAMESS, but the resulting code is much easier
to understand and modify.

The goal of this software is not necessarily to provide a working
quantum chemistry program (although it will hopefully do that), but
rather to provide a well-engineered set of tools so that scientists
can construct their own quantum chemistry programs without going
through the tedium of having to write everything.

The program is released under the GNU General Public License and is
thus freeware. PyQuante can be downloaded from
http://pyquante.sourceforge.net. People can subscribe to the
pyquante-users mailing list at
http://lists.sourceforge.net/lists/listinfo/pyquante-users

FEATURES
* Two electron integrals computed using Huzinaga, Rys, or
   Head-Gordon/Pople techniques.
* Closed shell and unrestricted open-shell Hartree Fock
* LDA DFT
* MINDO/3 semiempirical energies and forces
* Leapfrog Verlet dynamics and simple minimizers
* Configuration Interaction Singles excited states
* DIIS convergence acceleration
* MP2 calculation of the correlation energy

Here is an example of what the closed-shell Hartree-Fock scripts look
like:

(best viewed in a fixed-width font...)

def rhf(atomlist):
     "General wrapper for restricted closed-shell hartree fock"
     bfs = getbasis(atomlist,basis)
     S,h,Ints = getints(bfs,atomlist)
     orbs = get_guess(h,S)
     nel = get_nel(atomlist,charge)
     nclosed,nopen = divmod(nel,2)
     enuke = get_enuke(atomlist)
     eold = 0.
     for i in range(MaxIter):
         D = mkdens(evecs,0,nocc)
         G = get2JmK(Ints,D)
         F = h+G
         evals,evecs = GHeigenvectors(F,S)
         energy = get_energy(h,F,D,enuke)
         print energy
         if abs(energy-eold) < ConvCriteria: break
         eold = energy
     return energy

Rick Muller
[email-masked]
http://wag.caltech.edu/home/rpm