计算约化重叠积分氟化氢HF

计算约化重叠积分氟化氢HF,第1张

计算约化重叠积分氟化氢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 + "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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5719822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存