[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