Potopt 分子動力學套件
| 華夏公益教科書使用者認為此頁面應該拆分為更小的頁面,幷包含更窄的子主題。 您可以透過將此大頁面拆分為更小的頁面來提供幫助。請確保遵循命名策略。將書籍劃分為更小的部分可以提供更多焦點,並允許每個部分都做好一件事,這將有利於所有人。 |
Potopt 是一個用分子動力學軟體,用ISO C11實現,並利用MPI進行並行處理。
本手冊記錄了該軟體的預釋出版本,釋出於 2014 年 2 月 26 日。實現和使用者介面的詳細資訊尚未確定,並且在第一個版本釋出之前很可能發生重大變化。
$ perl yaml2pob.perl \
< Initial-state.yaml > Initial-state.pob
$ mpirun -n N \
potopt Split [Iterations [Step [Tau2]]] \
< Initial-state.pob > Output.log 2>&1
Potopt 是一個基於 ISO C11 和 MPI 的程式碼(分別用 GCC 4.8.2 和 Open MPI 1.6.5 測試),它可以求解使用者指定質量、初始位置和速度的粒子系統運動方程。這些方程基於Morse 勢,每個相互作用的粒子對(可能是共享化學鍵或以其他方式相關的粒子)都指定了引數。
給定於 mpirun(1) 的 -n N 引數指定要執行的程序數。有關更多資訊,請參閱所用 MPI 實現的文件。
Split 引數當前是必需的,它是一個用空格分隔的正整數字符串,用於指定每個程序要模擬的粒子數。當然,這些數字應該加起來等於所考慮系統中的粒子總數,例如,在單個程序 (-n 1) 內模擬 22 個原子的石墨烯樣本系統,可以使用 22,兩個程序 (-n 2) 可以使用 '11 11',三個程序 (-n 3) 可以使用 '7 8 7',等等。
Iterations 是要執行的迭代次數,預設為 64。65536 或更大的值可能更實際。
Step 是初始時間步長(以秒為單位),預設為 1e-18(或 1 as),但約為 2e-19 的值可能是更合適的選擇。然而,該軟體將持續嘗試找到最佳的時間步長,基於 main_loop () 中設定的約束條件(檢視那裡的 redo_p 區域性變數)。
Tau2 是系統應失去一半動能的特徵時間,預設為 4e-18(或 4 as)。
模擬程式碼需要一個特定於應用程式(並且可能依賴於平臺)的二進位制編碼流,該流由使用輔助 yaml2pob.perl Perl 指令碼從YAML 流中生成。
輸入 YAML 流可能如下所示(對於單個六元碳環,忽略氫原子)。
---
xyz:
- { a: 0, xyz: [ 0.0, 7.104999999999999e-11, 0 ] }
- { a: 1, xyz: [ 1.2306220987776874e-10, 0.0, 0 ] }
- { a: 2, xyz: [ 2.461244197555375e-10, 7.104999999999999e-11, 0 ] }
- { a: 3, xyz: [ 0.0, 2.1315e-10, 0 ] }
- { a: 4, xyz: [ 1.2306220987776874e-10, 2.842e-10, 0 ] }
- { a: 5, xyz: [ 2.461244197555375e-10, 2.1315e-10, 0 ] }
bonds:
- { a: 0, b: 1 }
- { a: 0, b: 3 }
- { a: 1, b: 2 }
- { a: 2, b: 5 }
- { a: 3, b: 4 }
- { a: 4, b: 5 }
xyz 部分指定了粒子(原子),而 bonds 指定了用於模擬化學鍵的w:Morse 勢的引數。
引數如下。
- 粒子
-
a– 唯一的粒子識別符號(可以是任何字串);xyz– 粒子的初始位置;v– (可選) 粒子的初始速度;預設為零向量;m– (可選) 粒子的質量;預設為1.660539e-27,或 1.660539 × 10⁻²⁷ g,這可能是單個w:碳原子的質量近似值。
- 鍵
請注意,除了表示轉換之外,所描述的 Perl 輔助程式將稍微改變粒子的初始位置和速度,根據程式碼中的 $perturb 和 $pert_v 變數(指定相應變化的標準差)。這是作為測試措施和一種可能的方式來推動系統脫離區域性最小值,如果初始狀態對應於區域性最小值。
結果系統狀態將傳送到stdout,格式為用空格分隔的值。這些值是質量、位置(3 個值)和速度(3 個值)。
Potopt 可執行檔案可以用GNU C 編譯器構建,在GNU Make下執行,如下所示。(不需要 Makefile)。
$ cp -- ns8xrqxiojtkiin4drpx4ne19y.c potopt.c
$ LC_ALL=C make CC=mpicc CFLAGS='-g -O2 -Wall -std=gnu11' \
LDFLAGS=-lm potopt
或者,可以使用以下簡單的 GNUmakefile 檔案,GNU Make 呼叫變為 $ LC_ALL=C make potopt。
VPATH = $(srcdir)
CC = mpicc
CFLAGS = -g -O2 -Wall -std=gnu11
LDFLAGS = -lm
all: potopt
Split 引數應該被設定為可選。
模擬程式碼以特定於應用程式(並且可能依賴於平臺)的編碼讀取二進位制檔案。使用X.690(DER 或 BER)中指定的編碼,或者可能是NetCDF,可能是一個更好的選擇。
更糟糕的是,雖然模擬程式碼從二進位制檔案讀取初始系統狀態(該檔案可以從YAML 基文字流建立),但結果狀態改為儲存為Awk 和Gnuplot 友好的用空格分隔的值形式,這需要一個單獨的程式(在此未提供)將其轉換為適合繼續模擬的東西。
一些詳細資訊以某種冗長且不易解析(例如,使用 Awk 或 Gnuplot)的文字格式報告到stderr 上的每次迭代。對於數萬次迭代,結果流的大小最終可能達到數十兆位元組。
沒有適當的錯誤報告。該程式碼改為依賴於一堆 assert () 宏呼叫。
也沒有適當的命令列介面。
還請檢視程式碼中的 FIXME: 註釋。
此處記錄的 Potopt 元件的預釋出版本可從以下位置獲得
- http://am-1.org/~ivan/src/ns8xrqxiojtkiin4drpx4ne19y.c – 模擬程式碼本身;
- http://am-1.org/~ivan/src/gpqfyhge73tgcr4dkfp9xydju8.perl – YAML 到二進位制轉換程式碼;
- http://am-1.org/~ivan/doc-files/qdzyppoeigu1f8gj4mh3m41b1d.yaml – 22 個原子的石墨烯樣本系統。
Potopt 由 Ivan Shmakov 編寫。
Potopt 是自由軟體:您可以在 BSD 類 許可證(包含在程式碼中)的條款下重新分發和/或修改其當前版本。請注意,但是,許可證可能會在 0.1 版本釋出之前或時更改為 GNU 通用公共許可證 版本 3。
此文件是 Wikibooks 上正在進行的免費協作專案,並且根據 知識共享署名-相同方式共享許可證 (CC BY-SA) 版本 3.0 提供。
此頁面內容基於作者早期的 帖子,該帖子釋出在 news:alt.sources 上,似乎沒有傳播開來。
- w:Graphene
- v:User:Ivan Shmakov/Potopt 2014
- v:ru:Участник:Ivan Shmakov/Параллельные вычисления в моделировании графена 2014
- ↑ Avinash Parashar (2012-10-26). "多尺度模型研究石墨烯對石墨烯/聚合物奈米複合材料斷裂特性的影響". 奈米尺度研究快報. 7 (1): 595. doi:10.1186/1556-276X-7-595. 檢索於 2014-02-08.
{{cite journal}}: 未知引數|coauthors=被忽略 (|author=建議) (幫助)
| 一位讀者要求擴充套件本書以包含更多內容。 您可以透過 新增新內容(瞭解如何操作)或在 閱覽室 中尋求幫助。 |