########################### クイックスタート ########################### 構造最適化 =============== - matlanticgrrm .. code-block:: python 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との比較 .. code-block:: python 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 =============== .. code-block:: python 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 =============== :download:`コードのダウンロード ` (拡張子をipynbに変えて使用する) .. code-block:: python 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)