FreeFlex マニュアル

提供: ComplexRI: Manual
2026年5月25日 (月) 16:53時点におけるHirano (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動


FreeFlex概要

 本FreeFlexは、主に液体および界面系のさまざまな自由エネルギー計算に柔軟に対応できるMDプログラムとして開発された。液体界面でのwater finger座標によって初めてwater finger形成・切断の自由エネルギー障壁が明らかにされたように、既存の方法を超えた新たな座標が求められる場合も多い。FreeFlexは、一般化座標の設定が容易で汎用性が高く、それに対する拘束条件やバイアス・ポテンシャルを課したり、その座標上の自由エネルギー計算を実行しやすいように設計された。

 現在のFreeFlexは、自由エネルギー計算手法として、

  • 自由エネルギー摂動法 (overlapping distribution法)
  • アンブレラサンプリング法
  • レプリカ交換アンブレラサンプリング法

の3通りをサポートしている。分子モデルは、点電荷および点双極子の分極モデルをサポートする。MD計算のチューニングについても多くの工夫がなされている。


 FreeFlexは、吉川信明君が自らの研究のために作成していたMDプログラムを母体として、2014年度より汎用化を目指した開発が始められた。吉川君、王聆鉴君および森田が開発に加わり、液液界面に関わる吉川、聆鉴君それぞれの研究に必要なMDプログラムを包括する形で開発された。2015年より杉林君、2016年より田原君、2017年より平野君、内藤君、小泉さん、2018年より伊藤君が開発チームに加わって、液液界面での電子移動反応やfaciliated ion transfer、グランドカノニカルMDの研究へと進んでいる。また信田君によってparticle mesh Ewald法やOpenMP並列化が実装され、従来より格段に高速化した。

チュートリアル

チュートリアル01:水-DCM 界面のシミュレーション
FreeFlex の基本的な使用方法のチュートリアルとして、コンパイル、系の作成、MD の実行といった一連の流れを説明する。
また、計算結果を確認するために show_energy.exe を用いてエネルギーの時間変化をグラフとして表示する。
チュートリアル02:並列実行
FreeFlex.exe の並列実行についてのチュートリアル。
(チュートリアル03:water finger の解析)
チュートリアル04:自由エネルギー摂動計算
(チュートリアル05:拘束計算)
チュートリアル06:ランダム力の時間相関関数
チュートリアル07:REUSを用いた1次元自由エネルギー面の計算
チュートリアル08:water finger の解析と2次元自由エネルギー面の計算
チュートリアル09:ガウス関数を用いた自由エネルギー面のフィッティング
チュートリアル10:溶液界面のグランドカノニカルMD
(水溶液界面のグランドカノニカルMD)
チュートリアル11:界面張力計算
チュートリアル12:導体モデルを用いた固液界面のMD計算

各実行プログラムの説明

FreeFlex.exe
MD 計算を行うプログラム。
add2.exe
初期構造作成のためのプログラム。
gauss_fit.exe
WHAMで計算した自由エネルギー面を、多数のガウス関数でフィッティングするプログラム。
ms2xyz.exe
msファイルをxyzファイルに変換するプログラム。
wham.exe
WHAM計算を行うプログラム。(現在は用いられていない)
xyz2ms.exe
msファイル中の座標をxyzファイルの座標で上書きするプログラム。
old/unlap.exe
msファイルの分子の重なりを除去するプログラム。(msファイル ver0.3 以上には非対応)
tools/FEPSHOW.exe
状態間の自由エネルギー差を中間状態およびoverlapping distributionで求める。
tools/RDF.exe
RDFを計算するプログラム。
tools/analysis.exe
monitorシステムによって出力されたデータを解析するプログラム。
tools/avarage2d.exe
イオン周りの水分子数の平均値の二次元マップを作成するプログラム。
tools/fep_2d_to_1d.exe
二次元自由エネルギー曲面を積分し、一次元の自由エネルギー曲線を得るプログラム。
tools/gc_analyzer.exe
グランドカノニカルMDの出力データから自由エネルギー面と密度分布を計算するプログラム。
tools/search_traj.exe
トラジェクトリ情報が記載されたxyzファイルから特定の構造を取り出すプログラム。
tools/show_energy.exe
FreeFlexのログファイルから各種エネルギーの変化のグラフを作成するプログラム。
tools/tapstep_fit.exe
一次元自由エネルギー面をステップ状の連続関数でfittingするプログラム。
tools/therm_int.exe
MPI並列化された平均力計算の結果から一次元自由エネルギー面を求めるプログラム。
tools/watnumdist.exe
イオン周りの水分子数の分布関数を作成するプログラム。
tools/z_dist.exe
z方向の分布関数を求めるプログラム。
mkbias.exe
&biasdataとbias.csvを作成するプログラム。
biasdata_gen.exe
&biasdataを作成するプログラム。


入力ファイルとネームリスト

&add
&FreeFlex
&systemとmsファイルの変数
&FEP および tools/FEPSHOW.exe中の&INPUT
&BIAS
&REUS
&MONITOR
&spcoord
&addCOM
&constraint
&addconstr
&gauss_fit
&WHAMSETTING
&WHAM_INPUT
&dE_dim and &dE_param
msファイルの仕様
&nonLB
&gc, &gc_bias, &gc_density, &gc_free, &gcbias, &accel_dequil
&conductor

主な機能

一般化座標(ユーザー定義座標)
拘束計算
バイアス・ポテンシャルの利用
変数の出力(Monitor)
結果の解析(Analysis)
自由エネルギー計算【未完成】

モジュール・構造体の一覧(abc 順)

モジュール

common_module
基本的な物理定数、単位変換の定数と、汎用的な関数・サブルーチンを集めたモジュール。
flexlist_module
Flexlist module takes care of size-variable lists and the transformation operations between them. It is not a class, but rather a simple module like common_module.
list_data_module
This module defined in list_data.F contains an extendable LIST_DATA struct that is used by linked_list_struct and dictionary_struct.

構造体

bias_system_struct
Bias module is developed to enable user-definable bias potential calculations for FreeFlex.exe along with spcoord_struct.
conductor_struct
導体分子の設定と分極計算を行う構造体。
constraint_struct
拘束関係の処理を行う構造体。
coord_struct
MD 計算で使用する座標・速度を管理する構造体。
coord_core_strut の拡張構造体で spcoord_struct をメンバ変数に持つ。
system_struct
ms ファイルに対する操作を行う構造体。
delaunay_tri_struct
The struct that calculates 2D/3D Delaunay triangulation from given set of vertices.
It contains an interface that calls c++ functions to perform tha actual analysis.
dictionary_struct
The struct that provides user access to dictionary data structure.
This dictionary is actually an array of linked lists managed by a simple hash table.
diis_struct
DIIS法(SCF計算の収束加速法)の計算を行う構造体。
fft_struct
grid_data_1d_struct
一次元格子点上のデータを取り扱う構造体。
grid_data_2d_struct
二次元格子点上のデータを取り扱う構造体。
linked_list_struct
The struct that provides user access to singly linked list data structure.
It can also be used as a queue or stack depending on the situation.
math_graph_plus_struct
The struct that provides user access to a number of graph theory algorithms.
It contains an interface that calls c++ functions to perform tha actual analysis.
piecewise_polynomial_struct
区分多項式の構造体。
piecewise_struct の拡張構造体となっており、polynomial2_struct をメンバ変数に持つ。
和・差・積、微分・積分、シフト・反転 等の操作が行える。
piecewise_struct
区分構造(数直線の切り分け方)の構造体。
区分多項式(piecewise_polynomial_struct) 等で使われる。
plot_struct
gnuplot を用いたグラフ出力のための構造体。
polynomial2_struct
多項式の構造体。
和・差・積、微分・積分、シフト・反転 等の操作が行える。
reus_struct
The struct that handles 1d/2d REUS calculation.
This functionality is based on bias_system_struct.
wham_calc_struct
The struct that handles WHAM.

式の導出・考察等

静電相互作用の計算について

静電相互作用の計算で用いられている式の根拠となる事項についてまとめたもの。 下記の Polarize.docx, Polarize_a.docx を統合し、大幅に加筆・修正して作成した。 分量が多くファイルが重いと思われるため注意。
上記の electrostatic_int.docx の補足を記したテキスト。 分量・数式が多くファイルが重いと思われるため注意。
エワルド法の逆空間で計算すべき物理量を実装する際に用いる式をまとめたもの。 エワルド法の逆空間・self term の実装に用いる式に対する注意も記載されている。
静電相互作用の計算に用いる式の根拠となる事項についてのまとめが記されたテキスト。 古いファイルであるため、基本的に参照する必要はないが、このテキストの8章はParticle Mesh Ewald 法の実装に関するアドバイスが記載されているため、8章は参照する価値がある。

その他のページ


MedhiaWiki デフォルトのリンク