AOFDFTCalculator
aofdft.calculator.AOFDFTCalculator クラスの説明です。
継承元のCalculatorクラスについてはASEのドキュメントを参照してください。
コンストラクタの引数
AOFDFTCalculator オブジェクト作成時に指定する引数です。
calculator = AOFDFTCalculator(
kin_type = "AS26",
kin_model = "Crystal26",
vps_dir = "path/to/DFT_DATA19_AS/VPS", # 実際の環境に合わせてpathを指定
pao_dir = "path/to/DFT_DATA19_AS/PAO", # 実際の環境に合わせてpathを指定
e_cut = 150 * Hartree # ase.units.Hartreeで150 HartreeをeVに換算
)
出力
- console
- Type:
bool
- デフォルト:
True
コンソールにログを出力するかどうかの設定です。
- logging_file
- Type:
None | str
- デフォルト:
None
ログファイル名です。
Noneに設定するとログをファイルに出力しません。
- population_file
- Type:
None | str
- デフォルト:
None
原子ごとの軌道占有数を出力するファイル名です。
Noneに設定すると出力しません。
- wavefunc_file
- Type:
None | str
- デフォルト:
None
原子ごとの波動関数を出力するファイル名です。
Noneに設定すると出力しません。
運動エネルギー汎関数
- kin_type
- Type:
str
- デフォルト:
AS26
AOF-DFT計算に使用する運動エネルギー汎関数を指定します。
"AS26": AdvanceSoft26汎関数を使用します。"TFvW": 従来汎関数のThomas-Fermi-von Weizsäcker汎関数を使用します。"LKT": 従来汎関数のLuo-Karasiev-Trickey汎関数を使用します。
ヒント
"TFvW"における、TF成分に対するvW成分の割合のデフォルトは1/5です。"TF1/5vW","TF0.8vW","TF","vW"などの形式で成分を指定することが可能です。
- kin_model
- Type:
str | None
- デフォルト:
None
AdvanceSoft26汎関数を使用する際、モデルを指定します。
指定できる値は
None,"Crystal26","Molecule26","Molecule26-large"のいずれかです。Noneを指定した場合にはCrystal26モデルが使用されます。
- kin_coef_tf
- Type:
float
- デフォルト:
1.0
kin_typeに"TFvW"と指定した際に、TF成分の係数を指定します。
- kin_coef_tf
- Type:
float
- デフォルト:
0.2
kin_typeに"TFvW"と指定した際に、vW成分の係数を指定します。
擬ポテンシャル・擬原子軌道
- vps_dir
- Type:
str
- デフォルト:
DFT_DATA19_AS/VPS
擬ポテンシャル(VPS)ファイルのあるフォルダパスを指定します。
- pao_dir
- Type:
str
- デフォルト:
DFT_DATA19_AS/PAO
擬原子軌道(PAO)ファイルのあるフォルダパスを指定します。
- vps_names
- Type:
dict[str]
- デフォルト:
aofdft.calculator.default_files.VPS_DEFAULT
元素ごとの擬ポテンシャル(VPS)ファイル名を指定します。ゴースト原子には
Noneを指定します。aofdft.calculator.default_filesに交換相関汎関数ごとに定義されているプリセット(VPS_LDA,VPS_GGA)をインポートし、設定することができます。なお、VPS_DEFAULTはVPS_GGAに設定されています。ヒント
- プリセットは以下のように定義されています。
アドバンスソフト改修版の擬ポテンシャル対応元素 :
*26_as.vpsを使用。Cu, Zn : OpenMXが提供するソフト擬ポテンシャル(
*19S.vps)を使用。それ以外 : OpenMXが提供する擬ポテンシャル(
*19.vps)を使用。
- pao_names
- Type:
dict[str]
- デフォルト:
aofdft.calculator.default_files.PAO_DEFAULT
元素ごとの擬原子軌道(PAO)ファイル名を指定します。
aofdft.calculator.default_filesに定義されているプリセット(PAO_MINI,PAO_MINI_AND_POLE,PAO_OMX_QUICK,PAO_OMX_STANDARD,PAO_OMX_PRECISE)をインポートし、設定することができます。基底関数のプリセット(BASIS_*)に対応するプリセットを使用することが推奨されます。なお、PAO_DEFAULTはPAO_MINIに設定されています。ヒント
- プリセットは以下のように定義されています。
アドバンスソフト改修版の擬ポテンシャル対応元素 : 対応する
*_as.paoを使用。Cu, Zn : OpenMXが提供するソフト擬ポテンシャルに対応する
*S.paoを使用。それ以外 : OpenMXが提供する擬ポテンシャルに対応する
*.paoを使用。
- basis
- Type:
dict[str]
- デフォルト:
aofdft.calculator.default_files.BASIS_DEFAULT
元素ごとの基底関数の割り当て(e.g.
"s1p1","s2p2d1")を指定します。aofdft.calculator.default_filesに定義されているプリセット(BASIS_MINI,BASIS_MINI_AND_POLE,BASIS_OMX_QUICK,BASIS_OMX_STANDARD,BASIS_OMX_PRECISE)をインポートし、設定することができます。なお、BASIS_DEFAULTはBASIS_MINIに設定されています。ヒント
- プリセットは以下のように定義されています。
BASIS_MINI: 必要最小限の基底セット。BASIS_MINI_AND_POLE: 必要最小限の基底セットに分極を追加。BASIS_OMX_*: OpenMXの推奨値 に基づいた基底セット。
基本条件
- e_cut
- Type:
float
- デフォルト:
150 * Hartree
電子密度のカットオフエネルギーをeV単位で指定します。デフォルト値は、150 Hartree ~ 4082 eV です。
n_gridsにNone以外を指定した場合はそちらが優先されます。
- n_grids
- Type:
int | tuple[int] | list[int] | torch.Tensor[int] | None
- デフォルト:
None
電子密度のグリッド数の設定です。a, b, c方向のグリッド数を
[na, nb, nc]のように指定します。intで指定した場合、各方向に同じグリッド数を設定します。Noneを指定すると、e_cutに基づいて決定されます。
- xc_type
- Type:
str
- デフォルト:
PBE
交換相関汎関数の種類です。
"LDA"または"PBE"が使用可能です。
- xc_pcc
- Type:
bool
- デフォルト:
True
交換相関汎関数の計算で部分内殻補正(Partial Core Correction, PCC)を使うかどうかの設定です。
- total_charge
- Type:
float
- デフォルト:
0.0
系の正味の電荷です。系が全体としてイオン化している場合に設定します。例えば、中性の系に対して電子を1つドープする場合は-1.0に設定します。
- smearing
- Type:
str
- デフォルト:
fermi
Smearingの方法を設定します。
"gauss"(ガウス関数)、"m-p"(Methfessel-Paxton)、"m-v"(Marzari-Vanderbilt)、"fermi"(Fermi-Dirac)が指定できます。
- degauss
- Type:
float
- デフォルト:
0.02 * Hartree
Smearingの幅をeV単位で指定します。
- without_TS
- Type:
bool
- デフォルト:
False
Smearingに由来する自由エネルギーの低下分(エントロピー補正)
を全エネルギーから差し引くかを指定します。
- max_cell_strain
- Type:
float
- デフォルト:
0.05
同じCalculatorオブジェクトで複数のSCF計算を行う場合(MDなど)、セル変形の指標がこの値より大きければFFTグリッドを再定義します。
変形の指標は、初回または前回更新時のセル行列を
、現在のセル行列を
とした際の、
の全成分の2乗和の平方根です。
スピン
- spin_type
- Type:
None | str
- デフォルト:
non-polarized
スピン偏極の取り扱いを指定します。
Noneまたは"non-polarized"でスピン偏極なし、"polarized"でスピン偏極あり(collinear)の計算を行います。スピン偏極ありの計算で原子ごとの初期スピンを指定する場合は、
atoms.arrays["spin"]に全原子の初期スピンのリスト(list[float])を代入します。
- total_spin
- Type:
float | None
- デフォルト:
None
スピン偏極あり(collinear)の計算でスピン偏極を固定する場合に、系の正味のスピン偏極を指定します。
Noneを指定すると固定しません。
- ave_j
- Type:
bool
- デフォルト:
True
依存型擬ポテンシャルのプロジェクターを、
の縮退度を重みとして平均化することで、半相対論的(スカラー相対論的)擬ポテンシャルに変換するかどうかの設定です。
Falseは現行のバージョンでは対応していません。
SCF計算条件
- scf_style
- Type:
None | str
- デフォルト:
None
SCF計算条件(
mix_beta,mix_nstored,mix_precond,noisy_precond)の値のプリセットです。バルク結晶では
"bulk"、磁性体では"magnetic"、分子では"molecule"を使用することが推奨されます。Noneを指定すると、その他の計算条件に基づいて、"bulk","magnetic","molecule"または「各条件のデフォルト値を使用」のいずれかが自動で選択されます。
- scf_must_conv
- Type:
bool
- デフォルト:
False
SCF計算が収束しない場合に例外(
RuntimeError)を発生させるかどうかを指定します。
- max_iter
- Type:
int
- デフォルト:
500
SCF計算の繰り返し回数の最大値を指定します。
- conv_thr
- Type:
float
- デフォルト:
1.0e-6 * Hartree
エネルギーの収束条件の閾値をeV単位で指定します。
- init_rho
- Type:
None | str
- デフォルト:
atomic
電子密度の初期値の計算方法を設定します。手法としては
"atomic"(孤立原子の電子密度の重ね合わせ)または"density_matrix"(密度行列から計算)が指定できます。電子密度の初期値をプロパティ
rhoに直接設定する場合は、Noneとします。
- mix_method
- Type:
str
- デフォルト:
pulay
電子密度を更新するときの混合法の設定です。
"simple"(単純な線形混合)または"pulay"が指定できます。
- mix_beta
- Type:
float
- デフォルト:
0.2
電子密度を更新するときの混合率です。デフォルト値は0.2ですが、この値は
scf_styleの値に応じて変更される場合が有ります。mix_betaの値を直接指定した場合はそちらが優先されます。
- mix_nstored
- Type:
int
- デフォルト:
16
電子密度の混合のために保存しておく履歴数です。デフォルト値は16ですが、この値は
scf_styleの値に応じて変更される場合が有ります。mix_nstoredの値を直接指定した場合はそちらが優先されます。
- mix_precond
- Type:
None | str
- デフォルト:
None
電子密度を更新するときの前処理の方法です。
"TF"(Thomas-Fermi)またはNone(前処理なし)が指定できます。デフォルト値はNoneですが、この値はscf_styleの値に応じて変更される場合が有ります。mix_precondの値を直接指定した場合はそちらが優先されます。
- mix_qTF
- Type:
None | float
- デフォルト:
None
mix_precondに"TF"を指定した場合に使用する波数を1/Å単位で指定します。Noneの場合自動的に決定されます。
- noisy_precond
- Type:
None | str
- デフォルト:
2/3
機械学習運動エネルギー汎関数の汎関数微分に一般に含まれることが知られている高周波ノイズを除去するためのPreconditioning演算子を指定します。
使用可能なPreconditioning演算子は
"gaussian","lorentz","teter","damping","2/3"です。 Preconditioning演算子を使用しない場合はNoneを指定します。デフォルト値は
Noneですが、この値はscf_styleの値に応じて変更される場合が有ります。noisy_precondの値を直接指定した場合はそちらが優先されます。
- noisy_r_cut
- Type:
None | float
- デフォルト:
0.5 * Bohr
noisy_precondで指定したPreconditioning演算子のカットオフ半径をÅ単位で指定します。
ハードウェア
- device
- Type:
str | torch.device
- デフォルト:
cpu
PyTorchによる計算を行うデバイスを指定します。CPUを使用する場合は
"cpu", GPUを使用する場合は"cuda"と指定します。複数のGPUがある環境で使用するGPUを指定するには、
nvidia-smi -LでデバイスIDを取得し、"cuda:1"などと指定します。
- num_threads
- Type:
None | int
- デフォルト:
None
PyTorchによる計算のOpenMPスレッド並列数を指定します。
Noneの場合、環境変数OMP_NUM_THREADSが設定されていればその値を、設定されていなければシステムの論理コア数の値を使用します。
プロパティ
AOFDFTCalculator オブジェクトから値を取得または設定します。
energy = calculator.total_energy # トータルエネルギーを取得
calculator.device = "cuda" # デバイスを設定
- property device
- Type:
torch.device
PyTorchの計算を行うデバイスの設定です。変更するとメンバーのオブジェクトをそのデバイスに移動します。設定時は
strも使用可能です。
- property rho
- Type:
torch.Tensor
電子密度(Bohr-3)です。形状は
(n_rho, na, nb, nc)です。n_rhoの値は、スピン偏極なしの場合は1、スピン偏極あり(collinear)の場合は2となります。rho[0]が全電子密度、rho[1]がスピン密度に相当します。計算前に設定すると初期電子密度として使用されます。この時、
torch.Tensor(n_rho, na, nb, nc),torch.Tensor(na, nb, nc),np.ndarray(n_rho, na, nb, nc),np.ndarray(na, nb, nc),list,tupleのいずれかの形式で設定が可能です。設定した初期電子密度のグリッドとAOFDFTCalculatorのグリッドが一致しない場合、後者への補間が実行されます。
- property total_energy
- Type:
float
全エネルギー(eV)です。
- property e_fermi
- Type:
float
フェルミエネルギー(eV)です。polarizedの場合、アップスピンとダウンスピンのフェルミエネルギーの平均値を返します。
- property e_fermi_up
- Type:
float
アップスピンのフェルミエネルギー(eV)です。
- property e_fermi_dw
- Type:
float
ダウンスピンのフェルミエネルギー(eV)です。
- property smeared_energy
- Type:
float
Smearingに由来する自由エネルギーの低下分(エントロピー補正)
(eV)です。
- property scf_energy_err
- Type:
float
SCF計算のエネルギーの誤差(eV)です。
- property scf_converged
- Type:
bool
SCF計算が収束しているかどうかです。
- property total_magmom
- Type:
float
全磁気モーメントです。
- property absolute_magmom
- Type:
float
絶対磁気モーメントです。