[molpro-user] Expanding scf/ks procedure
Jutho Haegeman
darkgenius4u at gmail.com
Wed Mar 21 10:14:37 GMT 2007
As pointed out by Fred in the answer below, one can write a procedure
to compute S^{-1/2}. Using the now-working "OPRD" directive (see
other topic), this might work in the following fashion (I use the
nosym option in my geometry specification, so I don't have to worry
about the different irreps).
{matrop,
! compute [S'], further called S2
diag,US2,eigS2,S2
save,US2,2500.2,SQUARE
save,eigS2,2500.2,SQUARE
save,SMH2,2500.2,SQUARE ! not yet determined => zero matrix hopefully ?
}
do j=1,basissize
{matrop
load,SMH2,SQUARE,2500.2
load,US2,SQUARE,2500.2
load,eigS2,SQUARE,2500.2
elem,sj,eigS2,1,j
oprd,SMH2,US2,j.1,j.1,sj**(-0.5)
save,SMH2,SQUARE,2500.2
}
There probably is a keyword for knowing the basissize, so I don't
have to change the numerical value every time I want to use another
basis? If there are keywords for knowing the number of irreps, and
the number of basisfunctions within a specific irrep, I can also
consider working with symmetry enabled. But there's not a lot of info
in the manual on all of this.
Any other hints on this piece of code? Maybe there are easier ways of
constructing your own matrix, but I don't see how.
I'll try if this works immediately, but I wanted to keep everybody
posted first.
Thanks,
Jutho
Op 20-mrt-07, om 16:10 heeft Fred Manby het volgende geschreven:
> You can calculate S^{-1/2} by solving the eigenvalue problem
> SX=sX
> where s are the eigenvalues and X the eigenvectors (use matrop
> diag). You then make a diagonal matrix whose diagonal elements are
> s_i^{-1/2}, and use tranop to transform this back to the original
> basis to form S^{-1/2}.
>
> I hope this helps
>
> Regards
>
> Fred
More information about the Molpro-user
mailing list