# [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

{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

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

```