SALMONでSiの誘電率を計算する
Last Update:2021/12/09
1.はじめに
SALMONは、物質に電磁場が入射された際の電子のダイナミクスを計算するアプリです。線形応答から外れるような強い外場下での電子の応答や、それに付随する電磁場の変化についてもシミュレーションを行うことができますが、ここでは、線形応答によるシリコンの誘電関数の計算を紹介します。
2.実行方法
今回の計算は若干時間がかかります。VirtualBoxを用いてMateriApps LIVE!を使用している場合には、VirtualBox内の「設定>システム>プロセッサー」からプロセッサーの数を変更してください。本記事では4コアを使っています。
それでは実際にSALMONを動かしてシリコンの誘電関数を計算してみましょう。SALMONはMateriApps LIVE!にインストールされています。すでに用意されているexamplesディレクトリをコピーし、シリコンの誘電関数計算用のディレクトリに移動してください。
cp -rp /usr/share/salmon/examples .
cd examples/exercise_04_bulkSi_lr
インプットファイルはすでに用意されています。ここでは状態密度の計算も行ってみますので、インプットファイルであるSi_gs_rt_response.inpに状態密度出力用のインプットを追記してみましょう。下の方に
&analysis
nenergy = 1000
de = 0.001
/
とありますので、
&analysis
nenergy = 1000
de = 0.001
out_dos = ‘y’
out_dos_fshift = ‘y’
/
のように、out_dos = ‘y’と out_dos_fshift = ‘y’を追記してください。out_dos は状態密度の出力を制御するための変数、out_dos_fshift は状態密度出力の際にフェルミ面を原点にするかどうかを制御するための変数です。 (ここではMateriApps LIVE! 3.3での説明となっています。 SALMONのバージョンによっては yn_out_dos = ‘y’など、若干変数名が変わる場合がありますので、適宜SALMONのマニュアルをご参照ください)。編集が終わったら計算を実行してみましょう。下記のコマンドにより計算を実行できます。計算は50分程で終了します。
OMP_NUM_THREADS=4
salmon.cpu < Si_gs_rt_response.inp
3.実行結果
まずは状態密度を確認してみましょう。状態密度は計算をしたディレクトリ内のSi_dos.dataに出力されています。gnuplotでグラフを描画すると以下のようになります。出力のエネルギーはhartree単位系で出力されますが、ここではeVに換算したものを載せています。フェルミ面付近の状態密度がなく、ギャップが0.4eVほど空いていることが分かります。
また、線形応答計算の結果はSi_lr.dataに出力されています。1列目がエネルギー、13列目が誘電関数の虚部のz成分です。gnuplotによる出力は以下のようになり、3.6eVに大きな値を持つピークがあることが分かります。実験では3.4eVと4.2eVに大きな値を持つピークが現れるのですが、LDAによる線形応答計算では一つしか現れません。
4.終わりに
今回はSALMONを用いた計算例を紹介しました。SALMONは他にも、マルチスケール計算、第一原理MD、FDTD等、多くの機能を備えています。examplesディレクトリにそれらのインプットがありますので、興味があればお試しください。また、https://salmon-tddft.jp/documents.html にマニュアルと、過去に開かれた講習会の資料がありますので、そちらもご参照下さい。