Analytical evaluation of two-centre Coulomb, hybrid and one-electron integrals for Slater-type orbitals
I. I. GUSEINOV
Mathematical Institute, University of Oxford
MS. received 9th February 1970
在这篇文中给出了计算混合积分的方法,其中有一个中间函数gαβ,这个函数的表达式为
其中函数F的表达式为
其中第三项累加项,
不计算负数的阶乘,因此
这4项为负时,不计入累加。
因为i为奇数时,会出现开负数的平方根,因此当i奇数时不计入累加。
用如上表达式地编写了
gαβq( int La, int Lb, int λ, int α,int β ,int q );
方法,用这个方法验算当La,Lb小于等于2的所有情况与文中数值一致
如计算
double d1=gαβq( 2, 2, 2, 2, 2, 4 ); //0.9375
java代码为
package greenwood;
import java.io.DataInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
public class gαβP {
public static double FACT( double n ) throws IOException, ParseException {
double prodt=1.0;
for(int a=1 ;a<n+1 ;a++)
{
prodt=prodt*a;
}
if(n<0){
System.out.println( prodt+ " 负数阶乘 " );
}
return prodt;
}
//38a
public static double FmNN( int m ,int N, int N1 ) throws IOException, ParseException, InterruptedException {
//System.out.println( m+" "+N+" "+N1+ " **** m N N1" );
double d=0.0;
double d1=0.0;
double d2=0.0;
double f1=0;
for(int k=0 ;k<N1+1;k++){
if(k<0||m-k<0||N1-k<0 || N-m+k<0 ){
d2=0;
}
if(k>=0&&m-k>=0&&N1-k>=0 && N-m+k>=0 ){
d=Math.pow( -1, k );
d1=FACT(k)*FACT(m-k)*FACT(N1-k)*FACT(N-m+k);
d2=d/d1;
}
f1=f1+d2;
//System.out.println(k+" "+ (m-k)+" "+(N1-k)+" "+(N-m+k)+" ** FmNN "+d1+" "+d2 +" "+f1 );
}
double d3=FACT(N)*FACT(N1)*f1;
//System.out.println( d3+" "+f1+" ** d3 FmNN " );
return d3;
}
//10a
public static double gαβ( int La, int Lb, int λ, int α ,int β ) throws IOException, ParseException, InterruptedException {
double f9=0;
double d1=1/Math.pow(2, La+Lb+1);
double f1=(2*La+1)*FACT(La-λ)*(2*Lb+1)*FACT(Lb-λ);
double f2=FACT(La+λ)*FACT(Lb+λ);
double d2=Math.pow(f1/f2, 0.5);
double f3=Math.pow(-1, 0.5*((La-α)+(Lb-β)-2*λ) )*FACT(Lb+β);
double f4=FACT(0.5*(Lb-β))*FACT(0.5*(Lb+β))*FACT( β-λ );
double d3=f3/f4;
//System.out.println( α+" "+λ+ " *** * " );
//System.out.println( f3+" "+f4+" f34 *** "+Math.pow(-1, 0.5*((La-α)+(La-β)-2*λ) ));
double f5=0;
double f6=0;
double d4=0;
for(int i=0 ; i<2*λ+1;i++){
double f7=0;
double p1=La+α+2*λ-i;
double p2=0.5*(La-α)-λ+i/2;
double p3=0.5*(La+α)+λ-i/2;
double p4=α+λ-i;
// System.out.println(i+" "+ f7+ " i *** *** "+p1+" "+p2+" "+p3+" "+p4);
if(p1>=0&&p2>=0&&p3>=0&&p4>=0&&i%2==0){
// System.out.println( f7+ " xx*** *** "+p1+" "+p2+" "+p3+" "+p4);
f5=Math.pow(-1, 0.5*i )*FACT(La+α+2*λ-i)*FmNN( i,λ, λ );
f6=FACT(0.5*(La-α)-λ+i/2)*FACT(0.5*(La+α)+λ-i/2)*FACT( α+λ-i);
f7=f5/f6;
}
d4=d4+f7;
//System.out.println(i+" "+ d4+" "+f7+ " d4 f7 *** *** " +(La+α+2*λ-i)+" "+(0.5*(La-α)-λ+i/2)+ " "+(0.5*(La+α)+λ-i/2)+" "+ ( α+λ-i));
//System.out.println( f5+" "+f6+" "+d4+" *** f5" );
}
f9=d1*d2*d3*d4;
//System.out.println( d1+" "+d2+" "+d3+" *** "+d4 );
// System.out.println( f9+" ** f9 gαβ0 " );
return f9;
}
//10
public static double gαβq( int La, int Lb, int λ, int α,int β ,int q ) throws IOException, ParseException, InterruptedException {
double f1=0;
double d1=gαβ( La, Lb , λ, α, β );
double d2=FmNN( q, α+λ, β-λ );
f1=d1*d2;
System.out.println( f1+" "+ d1+" "+d2+" ** gαβq " );
return f1;
}
public static void so( ) throws IOException, ParseException, InterruptedException {
//gαβq( int La, int Lb, int λ, int α,int β ,int q )
//double d1=gαβq( 0, 0 , 0 ,0, 0 , 0 ); //0.5
//double d1=gαβq( 0, 1, 0, 0, 1, 0 ); //0.8660254037844386
//double d1=gαβq( 0, 2, 0, 0, 0, 0 ); //-0.5590169943749475
//double d1=gαβq( 0, 2, 0, 0, 2, 0 ); //1.6770509831248424
//double d1=gαβq( 0, 2, 0, 0, 2, 1 ); //-3.3541019662496847
//double d1=gαβq( 0, 2, 0, 0, 2, 2 ); //1.6770509831248424
//double d1=gαβq( 0, 3, 0, 0, 1, 0 ); //-1.984313483298443
//double d1=gαβq( 0, 3, 0, 0, 1, 1 ); //1.984313483298443
//double d1=gαβq( 0, 3, 0, 0, 3, 0 ); //3.307189138830738
//double d1=gαβq( 0, 3, 0, 0, 3, 1 ); //-9.921567416492215
//double d1=gαβq( 0, 3, 0, 0, 3, 2 ); //9.921567416492215
//double d1=gαβq( 0, 3, 0, 0, 3, 3 ); //-3.307189138830738
//double d1=gαβq( 1, 1, 0, 1, 1, 0 ); //1.5
//double d1=gαβq( 1, 1, 0, 1, 1, 2 ); //-1.5
//double d1=gαβq( 1, 1, 1, -1, 1, 0 ); //0.75
//double d1=gαβq( 1, 1, 1, 1, 1, 0 ); //-0.75
//double d1=gαβq( 1, 1, 1, 1, 1, 1 ); //-1.5
//double d1=gαβq( 1, 1, 1, 1, 1, 2 ); //-0.75
//double d1=gαβq( 1, 2, 0, 1, 0, 0 ); //-0.9682458365518543
//double d1=gαβq( 1, 2, 0, 1, 0, 1 ); //-0.9682458365518543
//double d1=gαβq( 1, 2, 0, 1, 2, 0 ); //2.904737509655563
//double d1=gαβq( 1, 2, 0, 1, 2, 1 ); //-2.904737509655563
//double d1=gαβq( 1, 2, 0, 1, 2, 2 ); //-2.904737509655563
//double d1=gαβq( 1, 2, 0, 1, 2, 3 ); //2.904737509655563
//double d1=gαβq( 1, 2, 1, -1, 2, 0 ); //1.6770509831248424
//double d1=gαβq( 1, 2, 1, -1, 2, 1 ); //-1.6770509831248424
//double d1=gαβq( 1, 2, 1, 1, 2, 0 ); //-1.6770509831248424
//double d1=gαβq( 1, 2, 1, 1, 2, 1 ); //-1.6770509831248424
//double d1=gαβq( 1, 2, 1, 1, 2, 2 ); //1.6770509831248424
//double d1=gαβq( 1, 2, 1, 1, 2, 3 ); //1.6770509831248424
//double d1=gαβq( 1, 3, 0, 1, 1, 0 ); //-3.43693177121688
//double d1=gαβq( 1, 3, 0, 1, 1, 2 ); //3.43693177121688
//double d1=gαβq( 1, 3, 0, 1, 3, 0 ); //5.7282196186948
//double d1=gαβq( 1, 3, 0, 1, 3, 1 ); //-11.4564392373896
//double d1=gαβq( 1, 3, 0, 1, 3, 3 ); //11.4564392373896
//double d1=gαβq( 1, 3, 0, 1, 3, 4 ); //-5.7282196186948
//double d1=gαβq( 1, 3, 1, -1, 1, 0 ); //-0.701560760020114
//double d1=gαβq( 1, 3, 1, -1, 3, 0 ); //3.50780380010057
//double d1=gαβq( 1, 3, 1, -1, 3, 1 ); //-7.01560760020114
//double d1=gαβq( 1, 3, 1, -1, 3, 2 ); //3.50780380010057
//double d1=gαβq( 1, 3, 1, 1, 1, 0 ); //0.701560760020114
//double d1=gαβq( 1, 3, 1, 1, 1, 1 ); //1.403121520040228
//double d1=gαβq( 1, 3, 1, 1, 1, 2 ); //0.701560760020114
//double d1=gαβq( 1, 3, 1, 1, 3, 0 ); //-3.50780380010057
//double d1=gαβq( 1, 3, 1, 1, 3, 2 ); //7.01560760020114
//double d1=gαβq( 1, 3, 1, 1, 3, 4 ); //-3.50780380010057
//double d1=gαβq( 2, 2, 0, 0, 0, 0 ); //0.625
//double d1=gαβq( 2, 2, 0, 2, 0, 0 ); //-1.875
//double d1=gαβq( 2, 2, 0, 2, 0, 1 ); //-3.75
//double d1=gαβq( 2, 2, 0, 2, 0, 2 ); //-1.875
//double d1=gαβq( 2, 2, 0, 2, 2, 0 ); //5.625
//double d1=gαβq( 2, 2, 0, 2, 2, 2 ); //-11.25
//double d1=gαβq( 2, 2, 0, 2, 2, 4 ); //5.625
//double d1=gαβq( 2, 2, 1, 0, 2, 0 ); //3.75
//double d1=gαβq( 2, 2, 1, 0, 2, 2 ); //-3.75
//double d1=gαβq( 2, 2, 1, 2, 2, 0 ); //-3.75
//double d1=gαβq( 2, 2, 1, 2, 2, 1 ); //-7.5
//double d1=gαβq( 2, 2, 1, 2, 2, 3 ); //7.5
//double d1=gαβq( 2, 2, 1, 2, 2, 4 ); //3.75
//double d1=gαβq( 2, 2, 2, -2, 2, 0 ); //0.9375
//double d1=gαβq( 2, 2, 2, 0, 2, 0 ); //-1.875
//double d1=gαβq( 2, 2, 2, 0, 2, 1 ); //-3.75
//double d1=gαβq( 2, 2, 2, 0, 2, 2 ); //-1.875
//double d1=gαβq( 2, 2, 2, 2, 2, 0 ); //0.9375
//double d1=gαβq( 2, 2, 2, 2, 2, 1 ); //3.75
//double d1=gαβq( 2, 2, 2, 2, 2, 2 ); //5.625
//double d1=gαβq( 2, 2, 2, 2, 2, 3 ); //3.75
double d1=gαβq( 2, 2, 2, 2, 2, 4 ); //0.9375
System.out.println( d1+ " *** d " );
}
public static void main(String[] args) throws IOException, ParseException, InterruptedException {
so( );
}
}