计算约化重叠积分氟化氢HF
計算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 + "\r\n");
????? 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<n+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<L1-m+1;c++){
??? ???? ?for(int d=0;d<L2-m+1;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)
總結
以上是生活随笔為你收集整理的计算约化重叠积分氟化氢HF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果air怎么设置u盘启动不了 苹果Ai
- 下一篇: 形态数轴的非递进现象