Re: molden2qmc
Posted: Mon May 04, 2015 11:56 am
Vladimir,...transformation of f-orbitals from cartesian to spherical still unclear...
It is possible that the Cartesian LCAO-MO coefficients you import have already been scaled by some factor that makes your transformation incorrect. From your github:
Code: Select all
xxx, yyy, zzz, xyy, xxy, xxz, xzz, yzz, yyz, xyz = cartesian
xr2 = xxx + xyy + xzz
yr2 = xxy + yyy + yzz
zr2 = xxz + yyz + zzz
zero = (5.0 * zzz - 3.0 * zr2) / 2.0
plus_1 = (15.0 * xzz - 3.0 * xr2)
minus_1 = (15.0 * yzz - 3.0 * yr2)
plus_2 = (xxz - yyz)
minus_2 = 2.0 * xyz
plus_3 = (xxx - 3.0 * xyy)
minus_3 = (3.0 * xxy - yyy)
In GAMESS-US (and, I suspect, in many other programs), Cartesians within a shell will be scaled by different factors (e.g. the xy is scaled by sqrt(3) relative to x^2, xxy by sqrt(5) relative to x^3, xyz by sqrt(15) relative to x^3, etc). You will need to rescale these coefficients before performing your transformation.
You could also choose to perform the rescaling and the transformation simultaneously (as I've done in the gamess2qmc converter, shown below for f-functions), but this makes the code a bit harder to read. This lumped-together rescaling & transformation is produced by the procedure outlined here.
Code: Select all
# corresponding basis functions
$f0=(2/sqrt(5)*$zzz-$xxz-$yyz)/sqrt(5); #z(5z2-3r2)
$f1c=(4*$zzx-3/sqrt(5)*$xxx-$yyx)/(6*sqrt(5)); #x(5z2-r2)
$f1s=(4*$zzy-3/sqrt(5)*$yyy-$xxy)/(6*sqrt(5)); #y(5z2-r2)
$f2c=($xxz-$yyz)/(6*sqrt(5)); #z(x2-y2)
$f2s=$xyz/sqrt(60); #xyz
$f3c=($xxx/sqrt(5)-$yyx)/(12*sqrt(5)); #x(x2-3y2)
$f3s=($xxy-$yyy/sqrt(5))/(12*sqrt(5)); #y(3x2-y2)