目次
Jacapo - ASE python interface for Dacapo
はじめに
Jacapoは完全にASE3互換なDacapo用ASE interfaceで、Numeric pythonやASE2を用いていた古いDacapo interfaceを置き換えるものになる。元々はJohn Kitchinが開発したもので多くの例題が付いた詳細なドキュメントがURLに公開されている。ただしこのドキュメントは現在はメンテナンスされていないし、Jacapoは追加の計算エンジンとしてASEの一部になってしまっているので、実際の動作とドキュメントの記載とに若干の相違がある可能性がある。
Jacapo計算エンジン
Jacapo interfaceはaseのインストールと同時に自動的にインストールされ、次のようにして読み込むことができる。
from ase.calculators.jacapo import Jacapo
(もちろんDacapoが実行可能な状態になっていなければならない。)
jacapo.Jacapoクラス
ここでは計算エンジンを初期化するために設定可能なキーワードのリストを示す。
キーワード | 型 | 説明 |
---|---|---|
nc | 文字列 | 出力NetCDFファイル。既に存在している場合には入力にも使用される。 |
outnc | 文字列 | 出力ファイル。既定値はncと同じものが割り当てられる。 |
atoms | aseのatomsオブジェクト | |
pw | 実数 | 平面波基底のエネルギーカットオフをeVの単位で与える。 |
dw | 実数 | 電荷密度のエネルギーカットオフをeVの単位で与える。 |
xc | 文字列 | 使用する交換相関汎関数。'PZ', 'VWN', 'PW91', 'PBE', 'RPBE', 'revPBE'の中から一つ選択。 |
nbands | 整数 | バンドの数 |
ft | 実数 | フェルミ温度 |
kpts | リスト | サンプルするK点。例)kpts = (2,2,1) |
spinpol | 真偽 | スピン分極計算のon/off |
fixmagmom | 文字列 | 単位胞の磁気モーメント |
symmetry | 真偽 | 対称性に依る計算量の低減を行うか否か。 |
stress | 真偽 | 応力計算を行うか否か。 |
dipole | 真偽 | 双極子補正を加えるかどうか。 |
ados | 辞書 | 原子に局在した状態密度 |
stay_alive | 真偽 | 継続実行するか否か。 |
debug | 整数 | デバッグレベル (0=オフ, 10=長大) |
deletenc | 真偽 | 既にncファイルが存在する場合削除する(常に新規に計算することが保証される)。既定値はFalse。 |
例
ここでは水素原子の全ネルギーを計算する例を示す。
注意)これは単なる例でありパラメータに物理的な意味は無い。
from ase import Atoms, Atom from ase.io import write from ase.calculators.jacapo import Jacapo atoms = Atoms([Atom('H',[0,0,0])], cell=(2,2,2), pbc=True) calc = Jacapo('Jacapo-test.nc', pw=200, nbands=2, kpts=(1,1,1), spinpol=False, dipole=False, symmetry=False, ft=0.01) atoms.set_calculator(calc) print atoms.get_potential_energy() write('Jacapo-test.traj', atoms)
計算エンジンの定義の際に全ての計算パラメータを設定しなければならないことに留意せよ。そういったパラメータが計算エンジンの内部変数であるかのようにcalc.set_* コマンドで後から設定しようとしてはならない。またDacapoは周期境界条件でしか計算できない。従ってpbcを必ずTrueにセットせよ。
計算結果からの再計算
ncキーワードでJacapoに設定したファイルが存在する場合、Jacapoはユーザが既に存在している計算を再計算しようとしていると看做す。この動作をさせたくない場合は計算エンジンの定義のときにdeletencフラグをTrueに設定せよ。
例えば、以下のようにすると(電荷密度等など既にncファイルに書き込まれている)計算結果を引き継いで構造最適化を続けることが可能である。
calc = Jacapo('old.nc', stay_alive=True) atoms = calc.get_atoms() dyn = QuasiNewton(atoms, logfile='qn.log') dyn.run(fmax=0.05)
注意)stay_aliveフラグは.ncファイルには保存されない。計算エンジンのインスタンスを作成するときにセットする必要がある。
原子軌道に射影した状態密度
Jacapoで原子軌道に射影した状態密度を得るためには、まず計算エンジン定義時に以下のようにadosというキーワードの辞書を指定する必要がある。
calc = Jacapo( ... , ados={'energywindow': (-10., 5.), 'energywidth': 0.2, 'npoints': 250, 'cutoff': 1.0})
この記述を行っておくと、get_adosコマンドを用いて必要なADOSデータを得ることができる。
例)
energies, dos = calc.get_ados(atoms=[0], orbitals=['d'], cutoff='short', spin=[0])
© Copyright 2008, CAMd. Last updated on Oct 29, 2013.
Translated by K. Kakitani