目次

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

トップページへもどる