Open nim-hrkn opened 1 year ago
pymatgenはsite occupancyを理解できる。 aseはsite occupancyを理解できない(ase=3.22.1) が,理解できるようにクラス継承を行うと計算が可能に見える。openmxクラスなどあるのでそこから作成が可能だろう。
ASEはOpenMXの例だと
from ase import Atoms
from ase.calculators.openmx import OpenMX
water = Atoms('H2O',
positions=[(0, 0, 0),
(0, 0.76, 0),
(0, 0.58, 0.58)],
calculator=OpenMX())
# OpenMXのパラメータを設定
water.calc.set(
xc='LDA',
dfixed=2.0,
nosym=True,
spin='collinear',
dftgrid=1,
workdir='path_to_your_working_directory', # ここで実行ディレクトリを指定
prefix='water_calculation' # このprefixを使用して入出力ファイル名が設定されます
)
# エネルギー計算を実行
energy = water.get_potential_energy()
print(f"Total Energy: {energy} eV")
と実行する。実行するrun()メソッドはある。計算されていなければget_potential_energy()が自動的にrun()を呼ぶ。
class設計変更要件
問題点
objectへの作用とobjectの変更とを混同している。
対応予定
objectへの作用とobjectの変更クラスを分離する。 (pymatgenやaseはそうなっている。)
以下は別のオブジェクト
AkaiKKRの実行は以下になる。