溶融物や流体は、自然界における大量輸送のユビキタスベクターです。我々は、このようなシステムのab initio分子動力学シミュレーションを分析するためのオープンソースパッケージを開発しました。構造(接合、クラスター化、化学種分化)、輸送(拡散、粘度)、熱力学的特性(振動スペクトル)を計算します。
我々は、流体のab initio分子動力学シミュレーションに起因する結果を分析するために、Pythonベースのオープンソースパッケージを開発しました。このパッケージは、ケイ酸塩や酸化物の溶融物、水性流体、およびさまざまな超臨界流体などの自然システムでの用途に最適です。パッケージは、ファイル形式と結晶学を扱う2つの主要なライブラリを含むPythonスクリプトのコレクションです。すべてのスクリプトは、コマンド ラインで実行されます。我々は、ユニバーサル分子動力学のために立って、UMDファイルに保存されるシミュレーションの原子軌道および関連する熱力学情報を格納するための単純化された形式を提案する。UMD パッケージは、一連の構造、輸送、熱力学的特性の計算を可能にします。対分布関数から始めて、結合長を定義し、原子間接続行列を構築し、最終的に化学種分化を決定します。化学種の寿命を決定すると、完全な統計分析を実行できます。次に、専用のスクリプトは、原子と化学種の平均二乗変位を計算します。原子速度の自己相関解析を実施すると、拡散係数と振動スペクトルが得られます。応力に適用される同じ分析によって、粘度が得られます。パッケージは、GitHubのウェブサイトを介して、オープンアクセスパッケージとしてERC IMPACTプロジェクトの専用ページから入手できます。
流体と溶融物は、自然環境における活性化学および物理的輸送ベクトルです。原子拡散率の上昇は、化学交換や反応を好み、低粘度と様々な浮力を組み合わせることで大きな大量移送を好み、結晶溶融密度関係は惑星体内に重ね合わせる。周期格子の欠如、溶融状態に達するために必要な典型的な高温、および焼入れの難しさは、密度、拡散、粘度などの一連の明白な特性の実験的決定を極めて困難にします。これらの困難は、代替計算方法を強力で有用なツールにして、このクラスの材料を調査する。
計算能力の出現とスーパーコンピュータの利用可能性により、非結晶原子論系モンテカルロ1と分子動力学(MD)1,2の動的状態を研究するために、2つの主要な数値原子論的シミュレーション技術が現在採用されています。モンテカルロシミュレーションでは、構成空間はランダムにサンプリングされます。すべてのサンプリング観測値が互いに独立している場合、モンテカルロ法は平行法で線形スケーリングを示します。結果の品質は、乱数発生器の品質とサンプリングの代表性によって異なります。モンテカルロ法は、サンプリングが互いに独立している場合、平行化で線形スケーリングを示します。分子動力学(MD)では、構成空間は時間依存性原子軌道によってサンプリングされる。特定の構成から始めて、原子軌道はニュートン運動方程式を統合することによって計算されます。原子間の力はモデル間の潜在的な(古典的なMD)か第一原理法(ab initio、または第一原理、MD)を使用して計算することができる。結果の質は、軌道の長さと、局所的なミニマに引き付けされない能力に依存する。
分子動力学シミュレーションには、システムの動的挙動に関連する情報が多く含まれています。熱力学的平均特性は、内部エネルギー、温度、圧力など、計算に適した標準です。これらは、シミュレーションの出力ファイルから抽出して平均化できますが、原子の動きと相互関係に直接関連する量は、原子の位置と速度を抽出した後に計算する必要があります。
結果の視覚化に多くの努力が捧げられており、さまざまなパッケージが、オープンソースの異なるプラットフォームで利用可能かどうか[Ovito3、VMD4、Vesta5、Travis6など]。これらの可視化ツールはすべて、相互距離を効率的に処理するため、ペア分布関数と拡散係数の効率的な計算が可能になります。大規模分子動力学シミュレーションを行う様々なグループは、時にはシェアウェアやコミュニティへのアクセス制限の他の形態で、時には範囲が限定され、いくつかの特定のパッケージに使用するシミュレーションから生じる様々な他の特性を分析するための独自のソフトウェアを持っています。これらのパッケージの中には、原子間結合、幾何学的パターン、熱力学に関する情報を抽出する高度なアルゴリズムが開発され、実装されています。
ここでは、分子動力学シミュレーションの出力を分析するためにPythonで書かれたオープンソースパッケージである UMDパッケージ を提案します。UMD パッケージでは、構造、動的、熱力学的特性の幅広い計算が可能です(図 1)。パッケージは、GitHub のウェブサイト (https://github.com/rcaracas/UMD_package) から、オープン アクセス パッケージとして ERC IMPACT プロジェクトの専用ページ (http://moonimpact.eu/umd-package/) を介して入手できます。
汎用的で扱いやすくするために、実際の分子動力学の出力ファイルから熱力学状態と原子軌道に関連するすべての情報をまず抽出するアプローチです。この情報は専用ファイルに保存され、その形式はシミュレーションが実行された元の MD パッケージとは無関係です。私たちは、ユニバーサル分子ダイナミクスの略で、これらのファイル”umd”ファイルの名前を付けます。このように、当社のUMDパッケージは、適応の最小限の労力で、任意のソフトウェアを持つ任意のab initioグループによって簡単に使用することができます。現在のパッケージを使用する唯一の要件は、特定の MD ソフトウェアの出力から適切なパーサーを umd ファイル形式に書き込むだけです (まだ存在しない場合)。現時点では、VASP8 および QBox9 パッケージにこのようなパーサーを提供します。
図 1: UMD ライブラリのフローチャート
物理プロパティは青で表示され、主要な Python スクリプトとそのオプションは赤で表示されます。 この図の大きなバージョンを表示するには、ここをクリックしてください。
umd ファイルは ASCII ファイルです。一般的な拡張子は”umd.dat”ですが、必須ではありません。すべての解析コンポーネントは、実際の名前拡張子に関係なく、umd 形式の ASCII ファイルを読み取ることができます。しかし、いくつかのシミュレーションで高速な大規模統計を実行するように設計された自動スクリプトの中には、特にumd.dat拡張子を持つファイルを検索するものもあります。各物理プロパティは 1 行で表されます。すべての行はキーワードで始まります。このように、フォーマットは非常に適応性が高く、バージョン全体で読みやすさを維持しながら、新しいプロパティをumdファイルに追加することができます。図 2に、4.6GPa及び3000Kにおけるパイロライトのシミュレーションのumdファイルの最初の30行を示す。
図2:4.6GPaおよび3000Kにおける液体火砕物のシミュレーションを記述するumdファイルの始まり。
ヘッダーの後には、各スナップショットの説明が続きます。各プロパティは、物理プロパティの名前、値、および単位をすべてスペースで区切って 1 行に書き込まれます。 この図の大きなバージョンを表示するには、ここをクリックしてください。
すべてのumdファイルには、シミュレーションセルの含有量を記述するヘッダ(原子数、電子、原子タイプ、原子の種類、化学記号、価電子数、質量など)の各原子の詳細が含まれています。空の行はヘッダーの終わりを示し、それを umd ファイルの主要部分から分離します。
次に、シミュレーションの各ステップが詳細になります。まず、瞬間的な熱力学パラメータがそれぞれ異なる線上に与えられ、(i)エネルギー、応力、同等の静水圧、密度、体積、格子パラメータなどのパラメータの名前を指定し、(ii)その値(s)、および(iii)その単位を指定します。次に原子を説明する表が来ます。ヘッダー行は、デカルト位置、速度、料金などの異なるメジャーとその単位を示します。その後、各原子は1行に詳細に記載されています。3つの x、y、z 軸に対応する3つのグループによって、エントリは、減少した位置、シミュレーションセルに折り畳まれたデカルト位置、デカルト位置(原子がシミュレーション中に複数のユニットセルを横断することができるという事実を適切に考慮する)、原子速度、原子力です。最後の2つのエントリはスカラーです:電荷と磁気モーメント。
2 つの主要なライブラリは、パッケージ全体の適切な機能を保証します。 umd_process.py ライブラリは、読み取りや印刷などの umd ファイルを扱います。 crystallography.py ライブラリは、実際の原子構造に関連するすべての情報を扱います。 crystallography.py ライブラリの根底にある考え方は、格子をベクトル空間として扱う事です。単位セルパラメータとその向きは、基底ベクトルを表します。「空間」は、一連のスカラー属性(特定の体積、密度、温度、および特定数の原子)、熱力学的特性(内部エネルギー、圧力、熱容量など)、および一連の緊張特性(応力と弾性)を有する。原子はこの空間に取り込みます。「ラティス」クラスは、このアンサンブルを定義し、特定の体積、密度、直接のラティスなどから相互格子を得るなど、いくつかの短い計算と一緒に定義します。「原子」クラスは原子を定義します。これらは、一連のスカラー特性(名前、記号、質量、電子の数など)と一連のベクトル特性(ラティスクラスに記述されたベクトル基に対する空間の位置、または普遍的なデカルト座標、速度、力などに対する相対)によって特徴付けられます。これら 2 つのクラスとは別に、 crystallography.py ライブラリには、原子距離やセルの乗算など、さまざまなテストや計算を実行する一連の関数が含まれています。要素の周期表も辞書として含まれています。
umd パッケージのさまざまなコンポーネントが、いくつかの出力ファイルを書き込みます。一般的な規則として、これらはすべて ASCII ファイルであり、すべてのエントリはタブで区切られ、可能な限り自明の説明として作成されます。たとえば、物理プロパティとその単位を常に明確に示します。 umd.dat ファイルは、この規則に完全に準拠しています。
UMD パッケージは、ab initio シミュレーションで、スナップショットの数が通常数十から数十万のスナップショットに制限され、ユニット セルあたり数百原子を使用する場合に、より適切に機能するように設計されています。ポストプロセスが実行されるマシンに十分なアクティブなメモリリソースがある場合、より大規模なシミュレーションも使用できます。コードは、計算できるさまざまなプロパティと、オープンソース ライセンスによって区別されます。
umd.dat ファイルは、シミュレーション全体で変更されないパーティクルの数を保持するアンサンブルに適しています。UMD パッケージは、シミュレーション ボックスの形状と体積が変化する計算に由来するファイルを読み取ることができます。これらは、NVT や NPT のような最も一般的な計算をカバーし、パーティクル、N、温度 T、体積、V、および/または圧力の数は一定に保たれています。
時間のペア分布関数だけでなく、種分化スクリプトのように、間の距離を推定する必要があるすべてのスクリプトは、軸間の角度が90°である3次、四角形、および直交性細胞を意味する直交単位セルでのみ動作します。
バージョン2.0の主な開発ラインは、距離の直交性制限の除去と、個々の化学結合の分析、原子間の角度の分析、第2の配位球の実装という、種分化スクリプトの機能の追加です。外部のコラボレーションの助けを借りて、我々は大規模なシステムで迅速な分析のためにGPUにコードを移植することに取り組んでいます。
The authors have nothing to disclose.
この研究は、欧州連合ホライズン2020研究イノベーションプログラム(RCへのIMPACT 681818合意番号)、深炭素天文台のエクストリーム物理学化学局、およびノルウェー研究評議会がエクセレンスセンターの資金調達スキームを通じて、プロジェクト番号223272に支援しました。我々は、Stl2816シリーズのeDARIコンピューティング補助金を通じたGENCIスーパーコンピュータへのアクセス、PRACE RA4947プロジェクトを通じたアイリーンAMDスーパーコンピュータ、およびUNINETTシグマ2 NN9697Kを通じたフラムスーパーコンピュータへのアクセスを認める。FSはマリー・スクロトフスカ・キュリー・プロジェクト(補助金ABISSE No.750901)によって支援されました。
getopt library | open-source | ||
glob library | open-source | ||
matplotlib library | open-source | ||
numpy library | open-source | ||
os library | open-source | ||
Python software | The Python Software Foundation | Version 2 and 3 | open-source |
random library | open-source | ||
re library | open-source | ||
scipy library | open-source | ||
subprocess library | open-source | ||
sys library | open-source |