计算F原子的(2,1,0)电子和H原子(1,0,0)电子的重叠积分
F原子核外电子的角量子数不为0,这个重叠积分的计算方法为
其中ζa和ζb是斯莱特规则下的核电荷数,R是两个原子核距离为1.733,α和β是斯莱特规则的核电荷数与原子核距离的乘积。式中
即为约化重叠积分,表达是为
其中
是勒让德多项式的系数,对于F的(2,1,0)电子系数有两个,分别是0和8.
H电子的系数只有1个是8
式中的计算方法为
代入
Sab ( 2.6,1, 2, 1 , 0 ,1 ,0 , 2.6*R ,1*R) =0.29891181959547
Java代码
import java.io.DataInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
public class HFoverlap {
static double R=1.733;
//https://blog.csdn.net/georgesale/article/details/118762949?spm=1001.2014.3001.5501
public static double calc2( String stra ) throws IOException, ParseException, InterruptedException {
FileWriter fileWriter5 = new FileWriter("d:/工业/hk/python/表达式.csv");
//stra="hin( fx1,fx1)";
//stra="jin( rj1,rj2)";
stra=stra.replaceAll(",","#");
fileWriter5.write( stra + "rn");
fileWriter5.flush();
String exe = "python";
String command = "D:/Download/cal.py";
String[] cmdArr = new String[] {exe ,command };
Process process = Runtime.getRuntime().exec(cmdArr);
InputStream is = process.getInputStream();
DataInputStream dis = new DataInputStream(is);
String str = dis.readLine();
process.waitFor();
System.out.println(str);
double df= Double.parseDouble(str.trim());
return df;
}
public static double overLap( int n1,int n2 ,int c, int d, int m ,
double α1 ,double β1
) throws IOException, ParseException, InterruptedException {
String f1= "sympy.exp(-0.5*("+α1+"+"+β1+")*μ-0.5*("+α1+"-"+β1+")*v )";
String f2="(μ*μ-1)**"+m+"*(1-v*v)**"+m+"*(1+μ*v)**"+c+"*(1-μ*v)**"+d+"*(μ+v)**("+n1+"-"+m+"-"+c+")*(μ-v)**("+n2+"-"+m+"-"+d+")";
String d2 ="(integrate(integrate("+f1+" *"+ f2+" , (μ, 1, float('inf'))),(v, -1, 1)))";
//System.out.println( str+" ** " );
double ds=calc2( d2 );
return ds;
}
public static double FACT( double n ) throws IOException, ParseException {
double prodt=1.0;
for(int a=1 ;a { prodt=prodt*a; } return prodt; } //9.6-21 574 public static double D( int L1,int L2,int m ) throws IOException, ParseException { double ss1=0; ss1 = (FACT(m + 1) / 8) * (FACT(m + 1) / 8) * Math.pow( ( (2 * L1 + 1) * FACT(L1 - m) * (2 * L2 + 1) * FACT(L2 - m) / (4.0 * FACT(L1 + m) * FACT(L2 + m))) ,0.5 ); System.out.println( ss1+" ** ss1" ); return ss1; } //9.6-24 public static double SS( int n1,int L1 ,int m ,int n2 ,int L2 ,double α1 ,double β1 ) throws IOException, ParseException, InterruptedException { double d1=D(L1,L2,m); int[] cL1= {0,8}; int[] cL2= {8}; double d2=0; for(int c=0 ;c for(int d=0;d d2 =d2+ cL1[c]*cL2[d]* overLap( n1, n2 , c, d, m , α1 , β1); System.out.println( d2+" "+d1+" ** d2" ); } } System.out.println( d2+" ** d2" ); return d2*d1; } //9.6-31 B.40 public static double Sab(double za,double zb, int n1,int L1 ,int m ,int n2 ,int L2 ,double α1 ,double β1 ) throws IOException, ParseException, InterruptedException { double d1= Math.pow((2*za),(n1+0.5))* Math.pow((2*zb) ,(n2+0.5) )/ Math.pow( ( FACT(2*n1)*FACT(2*n2) ),0.5) * Math.pow( (R/2),(n1+n2+1)) ; double d2=SS(n1,L1,m,n2,L2,α1 ,β1); double d=d1*d2; System.out.println( d1+" "+d2+" "+ d+" Sab " ); return d; } public static void so( ) throws IOException, ParseException, InterruptedException { double d= Sab ( 2.6,1, 2, 1 , 0 ,1 ,0 , 2.6*R ,1*R); //3-6 System.out.println( d+" Sab " ) } public static void main(String[] args) throws IOException, ParseException, InterruptedException { so( ); } } 《量子化学》徐光宪 Approximate Molecular Orbital Theory by Pople John A., Beveridge David L. (z-lib.org) 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)