構造最適化

matlanticgrrmでは ListBFGS , ListLBFGS , ListBFGSLineSearch , ListLBFGSLineSearch , ListFIRE , ListSella のOptimizerを提供する.
これらはaseおよびsellaのBFGS, LBFGS, BFGSLineSearch, LBFGSLineSearch, FIRE, Sellaの第一引数にase.Atonsのリストを与えることのできるように拡張したクラスである.

ライブラリ

クラス

第一引数

matlanticgrrm

ListBFGS

ase.Atomsのリスト

ListLBFGS

ListBFGSLineSearch

ListLBFGSLineSearch

ListFIRE

ListSella

ase

BFGS

ase.Atoms

LBFGS

BFGSLineSearch

LBFGSLineSearch

FIRE

sella

Sella

基本的にはASE,Sellaと同じ引数( ListBFGS の場合, BFGS と同じ引数)をとる事ができるが. いくつかASE,Sellaにはないmatlanticgrrm特有の引数がある.

  • ASE,Sellaとは少し仕様の異なる引数
    • 第一引数:atoms_list (aseのatomsに相当)

    • logfolder (aseのlogfileに相当)

    • trajfolder (aseのtrajectoryに相当)

  • ASE,Sellaにはない引数
    • errorlog

    • indexes

    • max_fmax

    • timeout

    • retry ( ListSella )のみ

これらの引数の詳細な説明は ListOptimizer に記載する

class matlanticgrrm.optimize.ListOptimizer(atoms_list: list, savename: str, logfolder: str, trajfolder: str, errorlog: str, indexes: Optional[list] = None, max_fmax: float = 10000, timeout: int = 1200, restart=None, maxstep=None, master=None, force_consistent=None)[ソース]

全てのOptimizerの親クラス

Parameters:

atoms_list: list of Atoms

Atomsのリスト, NEB計算の時はListNEBオブジェクト

savename: str
計算実行(run)中に`{savename}.trajと{savename}.pickleが逐次作成される.
trajファイルには計算後の構造,pickleファイルには収束,未収束などの計算結果の情報が記録される.
logfolder: str or path object

ASEのlogfile引数に相当するが,ASEとは異なり,複数のlogファイルが作成されるためフォルダ名を指定する

trajfolder: str or path object

ASEのtrajectory引数に相当するが,ASEとは異なり,複数のtrajファイルが作成されるためフォルダ名を指定する

errorlog: str or path object
計算実行(run)中にerrorlogファイルが作成される.
内容はsavenameの pickleファイルと似ているがテキストファイルで出力される.
indexes: list of integers

特定の要素のみを計算したい場合にindex番号のリストで計算対象を指定する.

max_fmax: float

初期構造のforceがmax_fmaxを上回った際には計算を実行しない. 特にNEB計算の際には役立つ.

timeout: integer

1回のイタレーションにtimeout(秒)以上かかる際に計算を途中で諦める. ListSellaを使ったTS計算の際に特に役立つ

maxstep: float
1回のイタレーションで動く原子の最大値. VASPのPOTIMに相当.
MatlanticGrrmでなくASEで用意されている引数.
run(fmax=0.05, steps=100000000)[ソース]

計算を実行する

Parameters:

fmax:

収束条件となるforce

steps: integer

最大ステップ数

警告

ListOptimizer は全てOptimizerの親クラスであり,直接インスタンス化することはない.

ListBFGS クラス

class matlanticgrrm.optimize.ListBFGS(atoms_list, savename, logfolder=None, errorlog='error.log', trajfolder=None, indexes=None, max_fmax=100000, timeout=1200, restart=None, maxstep=None, master=None, alpha=None)[ソース]

引数は ListOptimizerBFGS を参照

ListLBFGS クラス

class matlanticgrrm.optimize.ListLBFGS(atoms_list, savename, logfolder=None, errorlog='error.log', trajfolder=None, indexes=None, max_fmax=100000, timeout=1200, restart=None, maxstep=None, memory=100, damping=1.0, alpha=70.0, use_line_search=False, master=None, force_consistent=None)[ソース]

ase.optimize.LBFGSをase.Atomsのリストを引数に使用できるようにしたもの.

引数は ListOptimizerase.optimize.LBFGS を参照

ListBFGSLineSearch クラス

class matlanticgrrm.optimize.ListBFGSLineSearch(atoms_list, savename, logfolder=None, errorlog='error.log', trajfolder=None, indexes=None, max_fmax=100000, timeout=1200, restart=None, maxstep=None, c1=0.23, c2=0.46, alpha=10.0, stpmax=50.0, master=None, force_consistent=None)[ソース]

引数は ListOptimizer を参照

ListLBFGSLineSearch クラス

class matlanticgrrm.optimize.ListLBFGSLineSearch(atoms_list, savename, logfolder=None, errorlog='error.log', trajfolder=None, indexes=None, max_fmax=100000, timeout=1200, restart=None, maxstep=None, memory=100, damping=1.0, alpha=70.0, use_line_search=False, master=None, force_consistent=None)[ソース]

引数は ListOptimizerase.optimize.LBFGSLineSearch を参照

ListFIRE クラス

class matlanticgrrm.optimize.ListFIRE(atoms_list, savename, logfolder=None, errorlog='error.log', trajfolder=None, indexes=None, max_fmax=100000, timeout=1200, restart=None, dt=0.1, maxstep=None, maxmove=None, dtmax=1.0, Nmin=5, finc=1.1, fdec=0.5, astart=0.1, fa=0.99, a=0.1, master=None, downhill_check=False, position_reset_callback=None, force_consistent=None)[ソース]

引数は ListOptimizerase.optimize.FIRE を参照

ListSella クラス

class matlanticgrrm.optimize.ListSella(atoms_list, savename, logfolder=None, errorlog='error.log', trajfolder=None, indexes=None, max_fmax=100000, timeout=1200, retry=0, restart=None, master=None, force_consistent=False, delta0=None, sigma_inc=None, sigma_dec=None, rho_dec=None, rho_inc=None, order=1, eig=None, eta=0.0001, method=None, gamma=0.1, threepoint=False, constraints=None, constraints_tol=1e-05, v0=None, internal=False, append_trajectory=False, rs=None, nsteps_per_diag=3)[ソース]

sella.Sella の第一引数にAtomsリストを使用できるように拡張したクラス

Parameters:

retry: integer
Sellaの計算ではnumpy.linalg.LinAlgErrorで計算が終了する場合が多いが, 多くの場合,再計算を行なうことで問題が解決する.
retry(回)まではLinAlgErrorが発生しても再計算を行なうようにする.

その他の引数は ListBFGSsella.Sella を参照

run(fmax=0.05, steps=100000000)[ソース]

計算を実行する

Parameters:

fmax:

収束条件となるforce

steps: integer

最大ステップ数