Summary of "rotating a density matrix"
- From: Ed Brothers <enb108 -AatT- psu.edu>
- Organization: PSU Merz Group
- Subject: Summary of "rotating a density matrix"
- Date: Fri, 16 Aug 2002 13:46:35 -0400
Several people ask me to forward the result, so here is s summary.
It should not be too difficult.
Remembering that the wave function in one spatial orientation must be
equivalent to that in a different one
Psi (0) = C(0)*1*Chi(0)
1 = R**(-1) * R
C(u) = R**(-1)*C(0)
where u represents the new orientation
In other words, if you rotate the orbitals one way, you rotate the
coefficients the opposite.
R = 3x3 rotation matrix to go from the 0th geometry to a different
Now the 1S and 2S coefficients will not change, but the Px, Py, and Pz
for each set of X,Y,Z AO coefficients on each atom apply the inverse of
the 3x3 R matrix. Easy to write a simple code for this.
Then recompute the density..
I hope this helps..
If you can express your density matrix into MOs (it should be no problem
with AM1 and PM3) then you just has to build a rotation matrix over
atoms (choose 3 atoms to define a reference frame and calculate the
angles that transform this frame from a geometry to another) that you
can apply on the basis functions. I used to build such matrices for s, p
and d functions in order to rotate some localized orbitals.
See J.Comp.Chem. 23(6) 2002, 610-624
But be careful to keep the norm of your functions through the rotations.
Hope this helps.
Nicolas FERRE' (PhD)
I'm not sure the format of the density matrix you need to transform. If
you have this in the Gaussian 'density cube' format (the usual output
of the density keyword I
believe) then I have a very simple Fortran utility that can transform
the orientation for you. Let me know and I can send it.
If you have some other format, then I'm afraid I'm no help.
My thanks to everyone who sent me a response.