Atomic Simulation Environment (ASE)とは
- 第一原理計算/量子化学計算を行うpythonのライブラリ
- 計算の自動化ができる
- いろいろな計算パッケージをcalculatorに用いることができる
環境設定
- ASEのインストール:
pip install ase
- ASEに組み込まれているポテンシャル(EMT)を用いる場合はこれ以外の設定は不要
- VASPを用いる場合は、VASPがインストールされている状態で
VASP_script
とVASP_PP_PATH
を以下のように設定する$ export VASP_SCRIPT=$HOME/vasp/run_vasp.py $ export VASP_PP_PATH=$HOME/vasp/mypps
- VASP_script (
run_vasp.py
とする)は以下のようにしておくimport os exitcode = os.system('vasp') # exitcode = os.system('mpirun -np 16 vasp') # 並列のとき
基本的使い方
エネルギー計算
- VASPでMgのbulk固体のself-consistent field (SCF)計算を行う
from ase.build import bulk
from ase.calculators.vasp import Vasp
mg = bulk(name="Mg", crystalstructure="hcp", a=3.1)
calc = Vasp(prec="normal", xc="PBE", encut=300.0)
mg.set_calculator(calc)
mg.get_potential_energy()
- EMTを用いる場合は、
from ase.calculators.emt import EMT
を行い、calc = EMT()
とする
構造最適化
- Pdのfcc(111)面を構築して構造最適化計算を行う
- 原子層は4層とし、上2層のみを最適化(下2層は固定)
from ase import Atoms,Atom
from ase.calculators.vasp import Vasp
from ase.build import fcc111
from ase.optimize import QuasiNewton
from ase.constraints import FixAtoms
surf = fcc111(symbol="Pd", size=[1,1,4], a=4.0, vacuum=12.0)
c = FixAtoms(indices=[atom.index for atom in surf if atom.tag <= 3 )
surf.set_constraint(c)
calc = Vasp(prec="normal", xc="PBE",
encut=400.0, ibrion=-1, nsw=0, kpts=[6,6,1])
surf.set_calculator(calc)
surf.get_potential_energy()
dyn = QuasiNewton(surf, trajectory="pd-relax.traj")
dyn.run(fmax=0.05, steps=100) # loops up to number specified by "steps"
-
fcc111
はlayer numberに応じてAtom
のtagを自動的に決める- 第一層: tag=1, 第二層: tag=2, 吸着子: tag=0, などとなる。このtagを用いて原子層を選択する。tagを確認するには
print(atoms.get_tags())
- 第一層: tag=1, 第二層: tag=2, 吸着子: tag=0, などとなる。このtagを用いて原子層を選択する。tagを確認するには