クイックスタート
構造最適化
matlanticgrrm
from matlanticgrrm.atomslist import set_calculator, pfp_calculator
from matlanticgrrm.optimize import ListLBFGS
from matlanticgrrm.grrmdata import log2atoms
atoms_list = log2atoms("*_EQ_list.log","*com","POSCAR") # GRRMデータのインポート
set_calculator(atoms_list, pfp_calculator) # calculatorの取り付け
opt = ListLBFGS(atoms_list,"EQ_list",logfolder="Log",errorlog='error.log') # AtomsリストをOptimizerに渡す
opt.run(fmax=0.001) # 計算実行
# --> Log/0.log, Log/1.log, Log/2.log ... にログが書き込まれる
# --> EQ_list.traj, EQ_list.pickle, error.logが作成される
ASEとの比較
from matlanticgrrm.atomslist import pfp_calculator
from ase.optimize import LBFGS
from ase.io import read,write
atoms = read("*.cif") # 何らかのデータをインポート
atoms.calc = pfp_calculator() # calculatorの取り付け
opt = LBFGS(atoms, logfile="EQ.log") # AtomsリストをOptimizerに渡す
opt.run(fmax=0.001) # 計算実行
# --> EQ.logにログが書き込まれる
write("EQ.traj",atoms)
# --> EQ.trajが作成される
NEB
from matlanticgrrm.atomslist import set_calculator, pfp_calculator
from matlanticgrrm.optimize import ListFIRE
from matlanticgrrm.neb import ListNEB
from matlanticgrrm.grrmdata import get_connections
from matlanticgrrm.io import lread
eq_list = lread("*traj","*pickle") # 構造最適化で作成されたtraj,pickleファイル
connections = get_connections("*_TS_list.log")
imagess = make_images(eq_list,connections,8) # imagesのリスト(Atomsの2Dリスト)を作成
for images in imagess:
"""imagessにcalculatorを取り付ける(時間がかかる)"""
if images:
set_calculator(images,pfp_calculator)
neb_list = ListNEB(imagess,climb=True, parallel=False) # imagesをListNEBに渡す
opt = ListFIRE(neb_list, "NEB_list", logfolder="Log", errorlog="error.log")
opt.run(fmax=0.05) # 計算実行
# --> Log/0.log, Log/1.log, Log/2.log ... にログが書き込まれる
# --> NEB_list.traj, NEB_list.pickle, error.logが作成される
""""結果の表示(エネルギーダイアグラム), TS構造を保存""""
neb_graphs(imagess, html="neb_graph.html",traj="neb_ts.traj")
# --> neb_graph.html, neb_ts.trajが作成される
neb_graphsでエネルギーダイアグラム図はneb_graph.htmlに保存される.
自動でTSの位置を取得しneb_ts.trajに保存される.
VIB
コードのダウンロード
(拡張子をipynbに変えて使用する)
from matlanticgrrm.visualize import view, view_images, view_with_index
from matlanticgrrm.atomslist import pfp_calculator,set_calculator
from matlanticgrrm.vibrations import ListVibrations, vib_graphs
from matlanticgrrm.io import lread, lwrite
from ase.io import read,iread,write
neb_ts = lread("*.traj") # TS構造をインポート
set_calculator(neb_ts,pfp_calculator)
view_with_index(neb_ts[0])
indices = [_, _, _, _] # Vibration計算で動かす原子のindex番号を控える
vib = ListVibrations(neb_ts,errorlog="VIB.log",indices=indices)
vib.run()
vib.summary(html="vib_table.html");
# n_list=Noneの時は虚振動の trajファイルを作成する
# 特定のモードのtrajを作成したい場合index番号を入力
vib.write_mode(n_list=None)