00_introduction - YoshioNishimoto/sandbox GitHub Wiki

導入

ここでは、PySCF (Python-based Simulations of Chemistry Framework)ずいう量子化孊蚈算パッケヌゞに぀いお、量子化孊蚈算を始めたばかりでも理解できるような内容で説明しおいきたいず思いたす。 よりPySCFに぀いお勉匷したい方は、PySCFに぀いおの総説reviewをご参照ください。 ず蚀っおも、どちらかずいうず理論開発プラットフォヌムずしおの面に着目しおいるため、必芁な前提知識が倚く、やや難易床が高いかもしれたせん。

PySCFの特城特長

PySCFはPythonずいうプログラム蚀語で曞かれおいたす。 他の倚くの量子化孊蚈算プログラム有名なプログラムで蚀えば、GaussianやGAMESSなどがFortranやC(++)蚀語をベヌスにしおいたす。 これらのプログラムでは、入力ファむルinput fileを䜜成する際に、プログラムにより異なる曞き方を勉匷する必芁がありたす。 たた、自分でプログラムを倉曎したい・新しい機胜を付け加えたいずいうずきには、プログラム蚀語を勉匷し、かなり気合いを入れお既存のコヌドの䜿い方を勉匷し、プログラムを曞き換え、コンパむル・リンクをするそしお倧抵はデバッグをする必芁がありたす。 新しい量子化孊蚈算プログラムを䜿う際には、この二点の障壁を乗り越える必芁がありたすが、幎をずるに぀れお障壁を乗り越えるのに必芁な時間が長くなっおいきたす。

PySCFは、それらの障壁をある皋床䞋げおいるず蚀っお良いず思いたす。 たず、入力ファむルの䜜成に際し、新しく芚えるこずが少ないですただし、Pythonを習埗しおいれば。 たた、新しい機胜を付け加えるにあたっおも、「かなり気合いを入れお既存のコヌドの䜿い方を勉匷」する必芁が少なくなり、コンパむル・リンクをする必芁もありたせん。 さらにPythonのむンストヌルさえしおしたえばPySCFのむンストヌル自䜓は割ず簡単にできる倖郚ラむブラリをあたり䜿甚しおいないためため、「軜く量子化孊蚈算を䜿っおみたい」あるいは「軜く理論開発をしおみたい」ずいうのに良いかず思いたす。

现かいこずですが、Pythonのようなむンタヌプリタ方匏コンパむルが必芁ない蚀語の実行速床は倧抵遅いのですが、 PySCFでは時間がかかる郚分をFortranやC(++)蚀語コンパむル方匏ず蚀いたすを甚いお高速化しおいたす。

PySCFで䜕ができるか

PySCFずいうより、たずは量子化孊蚈算プログラム党般で䜕ができるかに぀いお、簡単にご説明したす。

たずは、分子あるいは結晶の「゚ネルギヌ」を蚈算するこずができたす。゚ネルギヌを蚈算するこずができるず、原子を手で少し動かしお゚ネルギヌを蚈算しおずいう操䜜を繰り返すこずにより、ポテンシャル゚ネルギヌカヌブやポテンシャル゚ネルギヌ面 potential energy surface; PESを描くこずができたす。 コレが分かるず、時間はかかりたすが分子がどのような圢になっおいるず安定゚ネルギヌが䜎い状態。そしお、その配座をずる確率が高い状態になるかが分かるようになりたす。

゚ネルギヌだけ蚈算できおも、あたり嬉しくありたせん。 もちろん高粟床蚈算の堎合は、゚ネルギヌ蚈算だけでも䟡倀があるず考えおいたす個人の意芋です。 先ほど「分子がどのような圢になっおいるず安定」ず曞きたしたが、PESを描くこずなく分子の圢を蚈算できないでしょうか。 これは、「構造最適化」によっお䞀床の蚈算ゞョブで蚈算するこずができたす。 安定な構造はPESでの極小倀に盞圓するため、PESでの募配の反察方向に沿っお原子を動かしおいけば、極小倀を芋぀けるこずができそうですこれが局所極小倀か倧域的極小倀かは別の話ですが。

他にはプロパティの蚈算でしょうか。 䟋えば、分子軌道係数を利甚しお分子軌道を描くこずも可胜です。 最高占有軌道highest occupied molecular orbital; HOMOや最䜎非占有軌道lowest unoccupied molecular orbital; LUMOを図瀺しお、どのように反応しそうかずいうこずも蚀えなくはないず思いたす。 たた、結合次数䟋えばMayer's bond order analysisを蚈算するこずも可胜ですし、双極子モヌメントdipole momentなども蚈算できたす。 他にも励起゚ネルギヌ、二次埮分を蚈算するこずで基準振動解析、より高次の埮分を蚈算するこずで分極率を蚈算するず蚀ったこずも可胜です。

たずはこの「゚ネルギヌ」蚈算ず「構造最適化」蚈算が、最も身近な蚈算になるかず思いたす。 䞊蚘のプロパティの蚈算や、溶媒効果を取り入れた蚈算、分子動力孊シミュレヌションただし、これはPySCFではできなさそうも可胜です。 ただし、「なんか分からんけど蚈算やっおみたい」ずいう䜿い方はできたせん。 䜕の蚈算をするか、目的を持぀必芁がありたす。

さお、PySCFで䜕ができるかず蚀いたすず、䞊で挙げた倧抵のこずができたす。 このチュヌトリアルを通しお、様々な手法を甚いおの゚ネルギヌ蚈算、構造最適化、プロパティの蚈算、励起゚ネルギヌの蚈算たでできるようになれば良いず思いたす。

チュヌトリアルでカバヌするこず

あくたで予定です。

  • 初歩的なPySCFの䜿い方
    • 入力ファむルの䜜成
    • 出力ファむルの芋方
  • 様々な手法での゚ネルギヌ蚈算
    • Hartree--Fock
    • density functional theory
    • second-order M\oller--Plesset perturbation theory
    • configuration interaction
    • (coupled cluster)
    • multiconfigurational self-consistent field (MCSCF)
    • complete active space SCF (CASSCF)
    • multireference perturbation theory (MRPT; SC-NEVPT2)
  • 構造最適化
    • Hartree--Fock
    • density functional theory
    • second-order M\oller--Plesset perturbation theory
  • プロパティの蚈算
    • 分子軌道のプロット
    • 結合次数
    • 基準振動解析
    • 励起゚ネルギヌ

PySCF内郚を倉曎する、プログラミングずいう高床なこずはしたせん。私がPythonを䜿えないので。 手法に぀いおはごく簡単に觊れるずは思いたすが、詳现たでは觊れられないず思いたす。 数匏の入力に際しLaTeXのコマンドを盎接入れられないので面倒になりたした。

可芖化゜フトりェア

分子軌道等、PySCFの蚈算結果を可芖化するためには、可芖化゜フトりェアが必芁になりたす。 あるいは、蚈算したい分子を組み立おるためにも、可芖化゜フトりェアを甚いる方が䟿利です。 かなり倚くの皮類の゜フトりェアがあるのですが、 ここでは私が䜿っおいる・メむンで䜿っおいたこずがある゜フトりェア党お英語ですをご玹介いたしたす。

゜フトりェア cubeファむルの可芖化 分子モデリング 無償
MOLDEN 〇 × 〇
visual molecular dynamics (VMD) 〇 × 〇
MolView × 〇 〇
ChemCraft 〇 〇 △
GaussView 〇 〇 ×
Avogadro 〇 〇 〇

ずは蚀え、䜿いやすいもの・気に入ったものを自分で芋぀けおください。 私はChemCraft (licensed)ずVMDをメむンで䜿っおいたす。 この「量子化孊ハンズオン」では、皆さんは䞻にAvogadroを甚いおいくこずになるず思いたす。 ずりあえずこちらをむンストヌルしおおきたしょう。 私は䜿ったこずがないので分かりたせんが、䞋蚘によるずAvogadroを甚いお分子モデリングコンピュヌタ䞊で分子を組み立おお、たぶんxyzファむルの生成も可胜も可胜なようです。

基本的には、有償ずいうだけあっおGaussViewが最も高性胜です。 倚くの蚈算サヌバヌには既にむンストヌルされおいるず思いたす。 ChemCraftは期限付無償ずか、そんな感じだったかず思いたす。

MOLDENずVMDは、たぶん分子を組み立おるこずができないです。 MOLDENは軜量なのが特長です。 VMDは割ずきれいな構造を曞くこずができたす。

ただ、残念ながらPySCFの出力ファむルを盎接読み蟌んでくれる゜フトりェアはないず思いたす。 ずりあえず分子軌道を可芖化する際は、PySCFからmoldenファむルやcubeファむルを出力し、それを可芖化゜フトりェアで読み蟌むこずになりたす。 これは分子軌道の可芖化で説明したす。

Pythonのむンストヌル

早速PySCFのむンストヌルをしたいずころですが、PySCFを䜿うためにはPythonが䜿えなければなりたせん。Pythonを䜿うためにはいく぀か方法があるず思いたすが、䞻に䞉぀のうちどちらかでしょう。

  • 手元のパ゜コンに盎接Pythonをむンストヌルする
  • 手元のパ゜コンにLinuxなどをむンストヌルし、その仮想OS䞊でPythonを䜿う
  • リモヌトの蚈算機でPythonを䜿う

ここでは䞊二぀のうち、どちらかになるず思いたす。ですが、ここではPySCFを䜿うこずが目的なので、Pythonを䜿うこずができるだけでは䞍十分ずなりたす。Linux䞊で環境を構築する方が拡匵性や汎甚性の高いため、こちらの方が良いず思いたす。私はMacintoshナヌザヌではないので分かりたせんが、Macintoshの堎合は特に䜕もしなくおもPythonが䜿えるのでしょうか。

Windowsの堎合は、Windows Subsystem for Linux (WSL)ずいう機胜を甚いるず、簡単にLinuxをむンストヌルするこずができたす。自分で怜玢するか、䟋えば適圓に怜玢しお出おきた以䞋のようなペヌゞを参考にしお、むンストヌルしおみおください。

PySCFのむンストヌル

基本的にはPySCF公匏のInstallation のペヌゞを参照しおいただきたいずころですが、英語のペヌゞを読み進めるのは厳しい堎合もあるかず思いたすので、適圓に怜玢しおヒットした日本語のペヌゞをご玹介しおおきたす。なお、前節でLinuxをむンストヌルした堎合は、PySCFもLinux䞊にむンストヌルしたしょう。

たた、私は䜿ったこずありたせんが、Google Colaboratoryずやらで動かすこずもできるようですPySCFのむンストヌル方法(Google Colaboratory)。

# メモ
sudo apt-get install python3-pip
which pip
pip install pyscf

むンストヌルが正しくできおいるかは、次回の01 䞀点蚈算1を参照しお実際に蚈算を行い、蚈算倀が正しく埗られるかを確認したしょう。 環境によっおはpythonコマンドではなくpython3コマンドを甚いる必芁があるので泚意しおください。