構造最適化
ListBFGS
, ListLBFGS
, ListBFGSLineSearch
, ListLBFGSLineSearch
, ListFIRE
, ListSella
のOptimizerを提供する.ライブラリ |
クラス |
第一引数 |
---|---|---|
matlanticgrrm |
ase.Atomsのリスト |
|
ase |
|
ase.Atoms |
|
||
|
||
|
||
|
||
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で用意されている引数.
警告
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)[ソース]
引数は
ListOptimizer
と BFGS を参照
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のリストを引数に使用できるようにしたもの.
引数は
ListOptimizer
と ase.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)[ソース]
引数は
ListOptimizer
と ase.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)[ソース]
引数は
ListOptimizer
と ase.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が発生しても再計算を行なうようにする.
その他の引数は
ListBFGS
と sella.Sella を参照