ほぼPython

Not技術ブログBut勉強ブログ 内容には誤りがあることが多いです

Pythonでスレーターの規則に従い、電子が感じる有効核電荷を計算する

今回は有効核電荷というものをPythonで計算するプログラムを書いてみました。

 

単純なモデルでは原子は以下の図のようにあらわされますね。

 

f:id:short_4010:20180530222026p:plain

 

この図の最外殻の電子は中心に存在する原子核の正電荷をどれくらい感じるのでしょうか。

 

ものすごくシンプルに考えてみましょう。中心の正電荷は +11 となっています。

よって最外殻の電子は +11 の正電荷感じていると考えることが出来ます。

 

しかし、実際には最外殻の電子は、その内側に存在する電子たちにより、正電荷の一部が遮られており、その差分の正電荷感じます。(遮へいされているという)

 

しかもそもそも原子はもっと複雑な形をしていて、注目した電子がどれくらいの正電荷感じているかはそう簡単には計算できません。

 

しかし、比較的当てはまりがよく、おおまかに、ある電子が感じる正電荷の強さを計算する方法としてスレーターの規則というものがあります。ちなみにある電子が感じる電荷のことを有効核電荷と言います。 

 

スレーターの規則は以下のようなルールのことをいいます。(Wikipediaより)

 

まず、電子を主量子数 n に従って昇順、 n が同じ場合は方位量子数  に従ってグループ化し、昇順に並べる(s電子とp電子だけはまとめる)。

[1s] [2s,2p] [3s,3p] [3d] [4s,4p] [4d] [4f] [5s, 5p] [5d] etc.

それぞれのグループについて、そのグループより前のグループに入っている電子の数と軌道の種類に依存した異なる遮蔽定数が与えられる。

それぞれのグループの遮蔽定数は次の三つの寄与の和からなる。

  1. 同じグループにある別の電子の数の 0.35 倍( [1s] グループだけは 0.30 倍)
  2. [s p] 型のグループの場合、そのグループよりも主量子数が1だけ小さいグループの電子数の 0.85倍、主量子数が2以上小さいグループの電子数の1.00倍
  3. [d] 及び [f] 型のグループの場合、そのグループよりも原子に「近い」電子の数の 1.00倍。つまり、 i) 主量子数 n が小さいグループと ii) 主量子数が同じでも方位量子数  が小さいグループの電子数である。表にまとめると、この法則は以下のように表わされる。

 

さて、これをPythonで書いてみました。ググったところ、スレーターの規則をPythonでやってみたという記事は全然出てこなかったので嬉しかったのですが、実際に書いてみると、とてもきれいなコードとは言えず、(というかひどいコード)、全くドヤれないのが残念です。

 

今回は、電子配置が簡単な原子番号1の水素から原子番号36のクリプトンまでを実装しました。一応、電子配置のところさえ書き換えれば、拡張できるように作ったつもりですが、途中からかなり場当たり的に書いていたので、なんかもうそのあたりは何とも言えません。

 

とりあえず、いくつかの入力例を載せてから最後にコードを載せたいと思います。

 

入力例1:

f:id:short_4010:20180530225645j:plain

これより、上の例で挙げたナトリウムの最外殻電子(3s軌道上の電子)が感じる有効核電荷は 2.2 だということがわかります。 +11 とは全然違いますね。

 

入力例2:

f:id:short_4010:20180530225123j:plain

これより、鉄の3d軌道の電子が感じる有効核電荷は 6.25 だとわかります。

 

いくつかの入力でチェックしたつもりですが、バグがあったら教えてくれると嬉しいです。

 

最後にコードです。汚いですが、一応載せておきます。

P.S なぜ「感じる」と表現するのかとても謎です。英語の直訳感がすごいですよね。