何の因果か,学生時代以来やって来なかった量子化学計算(有機物の吸収スペクトル計算)を仕事でするはめに。学生の場合,普通のまっとうな大学なら計算機センターがGaussianをアカデミックライセンスで買ってると思うので,とりあえずGaussianを使えばいいと思うんだけど,サラリーマンはそうも行かないのでフリーで探すことに。
で,フリーのab initioの量子化学計算パッケージかつwindows版があるという条件だとたぶん以下がリストに上がると思う*1
で,この中ではORCAが計算自体は知らないけど,計算結果を活用するという意味での機能が圧倒的なので,現状はもっぱらこれをつかってる。で,もっと普及すべきソフトだと思うので覚書。
ダウンロード
GAMESS系と違ってメールでお伺いを出す必要はない。以下のページにアクセスして,ユーザー登録すれば,ダウンロードページからダウンロード可能。
https://cec.mpg.de/forum/portal.php
ディスカッションボードはあるけど,マニュアルが非情に良く出来ているので,一度環境が構築できてしまえばそんなに頼る必要はないと思う。
ちなみに,3.0系だと1.2GBくらいある上に,日本との回線が細いのか意図的に帯域制限しているのか知らないけど数十kB/sしか出ないので,ダウンロードには5-6時間かかるので注意。
1 CPUで動かすならこれだけでOKだが,たいして大きくない分子でも気が遠くなるような計算時間がかかるので,コアは全部使いたい。PCが1台でも並列計算するにはORCAの場合Open MPIが必要。最新のOpen MPIはwindows版だとCygwin版しかないがそれだと上手く認識してくれない模様なので,1.5系の最新版を以下のリンクからダウンロードする。
http://www.open-mpi.org/software/ompi/v1.5/
orcaが32bit版だったらwin32を,orcaが64bit版だったらwin64をダウンロードする。といっても,orcaの64bit版が出た現在,わざわざ32bit版を落とす酔狂な人がいるとも思えないけど一応。
インストール
OpenMPIは適当にインストールしてパスを通しておく。
ORCAもzipを解凍した中身を適当なフォルダに突っ込めばOK。こちらはパスを通しても通さなくてもOK。理由は次でわかる。
基本的な使い方と並列計算での起動
この手の量子力学ソフトの基本的な使い方と同様に,入力ファイルを*.inpという拡張子のテキストファイルとして作って,それを引数に入れて呼び出す。
orca 5cb.inp
並列計算をさせたい場合にはプログラムに引数として与えるのではなく*2,入力ファイルに以下の記述を加える
#! PAL <並列数>
! PAL 8
ただ,知らないとハマるのが,windows版*3だとパスを通していたとしても
#失敗例
orca 5cb.inp
と呼ぶと並列計算を指定していた場合には,OpenMPIからorcaの実行形式が見つけられませんと泣き言を言われてエラーになる。たぶん,bashでいうexport相当の動きがおかしい。ほんとwindowsのシェルは糞。なので,常にフルパスで呼び出す必要がある。
#正解
正直,これはめんどくさいので,適当にそのフォルダの*.inpを全部自動起動するバッチファイルでも作って対応するのが正解。これなら,ダブルクリックでうまくいく。
例としてはこんな感じ
@echo off
set date_tmp=%date:/=%
set time_tmp=%time: =0%
set time_tmp=%time_tmp::=%
set datetime=%date_tmp%T%time_tmp:~0,6%
echo %datetime%
pushd %0\..
cls
for %%i in (*.inp) do (
rem パスは自分の環境に合わせて適当に書き換える
C:\ComputationalChemistry\orca\orca.exe %%i > %%~ni_%datetime%.out
)
pause
exit
設定ファイルの書き方
説明書がかなり詳しいのでそれを参照。5章のRunning Typical Calculationsの記述をコピーするだけでほぼ使えると思う。
ORCAの面白いところ
数年前にGaussianを使ってたきりの人間なので,世間的にはこのくらい普通と言われると困るのだけど。
- TDDFTと振動解析の結果を組み合わせて吸収スペクトルの形状を予想出来る。
- 振動解析の結果を自動で取り込めるのは秀逸。
- GAMESSあたりだと何もしないとTDDFTで遷移エネルギーを出すだけで,吸収の半値幅の計算方法がマニュアルを見ただけだとわからず,実用という意味でかなり微妙。
- Gaussianだと確か各遷移の半値幅は出してきたような記憶があるけど,振動解析の結果と組み合わせるのは自動ではやってくれなかったはず。
- SCFのinitial guessを同じファイル名の以前の計算結果(.gbw)から自動で読み込む
- GaussianだとSCFの収束で失敗することってほとんどなかったように思うのだけど,PC GAMESSとかORCAだと頻発するので,SCFのinitial guessの重要性に気付かされることに。というか,基底にdiffuse入れた中程度の大きさの分子だとほぼ確実に失敗してくれるような。
- ORCAの場合,自動で読み込んでくれるので,連続で同じ分子について計算する場合(構造最適化から振動解析とか,構造解析からTDDFTとか)に,勝手に前回の収束したSCFの結果を初期値として読み込んでくれる。だから,無駄な計算をしないので早い。
- 手動でSCFを保存して読み込ませればいいのだけど,ファイル名を変更しなければ自動で読み込んでくれるというのはUIとしてかなり秀逸。
- いきなりだとSCFが収束しないような重い基底かつ高い計算レベルの場合に,計算レベルと基底を徐々に重くしてSCFの収束を容易にするようなTIPSもファイル名を変えずに何回か計算すれば,その都度前回の結果を自動で読み込んでくれるので簡単。
ORCAの難点
- 妙に計算速度が遅い気がする。
- 構造最適化,TDDFT共に,hybrid DFTのPBE0を主に使ってるのが良くないんだろうけど,TDDFTだとhybrid以外は問題外だし…
- hybrid DFTについては,まだRIJCOSXを使ってないので最終判断はそれを見てからという気も。
- 解析的な振動解析(AnFreqキーワード)をすると,スクラッチファイルが巨大
- そんなに大きくない40重原子,def2-SVPや6-31g(d,p)で800-1000基底くらいの分子で200GBとか取られるので,それなりに注意が必要というか,油断しててシステム用のSSDが溢れた。
- あと,振動解析が異様に重い気がする。Gaussianだともう少し速かったような記憶があるんだけど,どうなんだろ。これも,RIJCOSXの効果を見てから最終判断したい。