LoginSignup
0
0

Atomic Simulation Environmentの使い方: エネルギー計算と構造最適化

Last updated at Posted at 2024-01-29

Atomic Simulation Environment (ASE)とは

  • 第一原理計算/量子化学計算を行うpythonのライブラリ
  • 計算の自動化ができる
  • いろいろな計算パッケージをcalculatorに用いることができる

環境設定

  • ASEのインストール: pip install ase
  • ASEに組み込まれているポテンシャル(EMT)を用いる場合はこれ以外の設定は不要
  • VASPを用いる場合は、VASPがインストールされている状態でVASP_scriptVASP_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())
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0