计算约化重叠积分氟化氢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=calc2d2 );

       

      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 , cdm , α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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑榆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值