❶ 關於LAMMPS輸出(Output)的問題
轉自 http://blog.sina.com.cn/s/blog_6e56343801014qpb.html
談談關於LAMMPS輸出【Output】的問題
2009-09-25 19:40
無論任何模擬,我們都是想從模擬中得到我們想要的數據【data】,然後分析這些數據,從而提取出相關的信息【MAYBE新的發現】,那麼數據的輸出是
必然的一道程序,下面談談LAMMPS軟體是如何輸出data。
LAMMPS中處理的輸出數據主要分一下三個大的部分:
1.斷點數據,這個主要鬧運是為了防止轎彎高模擬過程中出現意外,比如實驗室或機房突然斷電,程序部分階段有錯誤等等。
2.系統熱力學量的輸出,這些量一般是體系中各個原子的集體行為量,比如溫度,壓強等
3.單原子詳細信息的輸出,如我們想得到的軌跡文件
對應於上面的三大部分,LAMMPS設置了不同的命令,有些命令結合在一起實現相關的功能。
1.對於斷點數據,原始數據,LAMMPS主要有一下命令進行數據的輸入輸出。read_data,read_restart【讀入】,restart,write_restart【輸出】,如果能靈活運用這幾個命令,會讓你的模擬在突發事件下得到經濟上的收獲。其中命令里有兩類通配符,* 表示時間步,% 表示CPU編號。
2.全局熱力學數據,也就是所謂的thermodynamic output,這些量是面向於系統的,而不是面向於某一類,某一組,原子的。一般是系統宏觀信息的數據。處理這些數據的命令主要有如下幾個 thermo, thermo_modify, thermo_style[這個命令對於初學者要認真研究和調試],還有相關的把單原子信息轉換為【global quantities】的輔助命令:fixave/time,fix ave/spatial, compute rece 這些命令可以自己設定輸出的頻率,文件名等等。thermo_style 和 compute/fix/variable命令結合進行數據的處理和輸出是個大學問,這個需要不斷的調試才能熟練掌握。其實研究variable compute和少數關於數據處理的fix可以節約你大量後期數據處理的時間。
3.單原子數據。相關命令主要有mp, mp_modify,unmp.時刻牢記這些命令用於處理atom的數據對於你出現的錯誤就有敏感
性了,呵呵。
4。echo,print,fix print結合variable可以用於調試你的腳本,糾錯。
5.秀個例子,用於輸出setforce, group原子於其他相互作用力
#------------------------------------------------------------------------------------
fix 3 tetras setforce 0.0 0.0 0.0
variable fx equal f_3[1]
variable fy equal f_3[2]
variable fz equal f_3[3]
fix 4 tetras print 1 "-- ${fx} ${fy} ${fz} --"
#------------------------------------------------------------------------------------
thermo 2
thermo_style custom step f_3[1] f_3[1] f_3[1]
#------------------------------------------------------------------------------------
以上由redream/一下是fc所寫
關於output,手冊4.15,曾粗略翻譯過
除了restart文件,LAMMPS還有兩種基本的輸出。第一種是熱力學輸出,每隔一定的時間步就列印到屏幕和log文件的一列數。第二種是mp文件,包括按照一定的頻率寫入文件的原子位置快照和各種per-atom數值。每個模擬列印一組熱閉尺力學輸出;可能生成任意數目的mp文件。如下所討論的,LAMMPS為你提供多種方式來決定當熱力學信息和mp文件輸出的時候,哪些量是需要計算和列印的。有3個fix命令可以按照用戶選擇的量執行它們自己的輸出:fix ave/time用來做時間平均,fix ave/spatial用來做空間平均,以及fix print。下面會詳述。貫穿這個討論,用戶要注意他們可以添加自己的compute命令和fix命令,通過這些命令定義自己的輸出。
Thermodynamic output 熱力學輸出的頻率和格式是由thermo、thermo_style、thermo_modify命令設置的。thermo_style命令也指定了哪些數值需要被計算輸出。可以指定預先定義的變數(例如press、etotal等等)。還可以指定三類keyword(c_ID、f_ID、 v_name),分別由compute、fix、variable命令提供相應的數據。以下依次講述。
在LAMMPS中,有兩種類型的compute命令:一種計算global value(例如溫度,壓強張量)另一種計算per-atomvalues。只有前者可以作為熱力學輸出。用戶指定的compute命令的ID加上一個可選的下標作為thermo_style命令的一部分。例如c_myTemp 輸出由該compute得到的標量值;c_myTemp[2]輸出第2個矢量分量。注意compute rece可以對per-atom的量加和得到global標量和矢量。
fix命令可以生成由熱力學輸出的global scalar或vector,例如壓頭(indenter)與原子之間的相互作用能。這些數值可以通過與前述compute命令同樣的格式,如f_ID、 f_ID[N]。至於哪個fix計算可通過熱力學信息輸出的global values請參閱見各個fix的手冊。
fix ave/time生成的時間平均的全局量可由熱力學輸出,例如按時間平均的壓強。
可以在in文件中定義變數,除了atom style的變數之外,其它所有的變數都可以通過熱力學信息輸出,因為atom style的變數生成對應每個原子的值。thermo_style通過v_abc的形式調用名為abc的變數。
跟equal style變數有關的公式,可以包含數學操作符、函數(例如x+y,x*y,(),sqrt,exp)、原子屬性(例如x[N],fx[N])、 group函數(例如mass(),vcm())、熱力學量(如temp,press,vol)、compute命令得到的全局量、fix命令得到的全局量、以及其它variable命令的相關變數。因此equal-style變數是定義由熱力學信息計算和輸出的變數的最普遍的方式。
Dump file output
mp文件輸出由mp命令和mp_modify命令指定。有很多預先定義的格式,如mp atom、mp xtc等等。同樣,有一種
用戶指定輸出各個原子的哪些屬性的mp custom格式。可以指定預定義的keyword(如tag、x、fx)也可以指定另外三種keyword(即c_ID、f_ID、v_name,分別由compute、fix、variable命令提供相應數值)。以下依次講述。
compute命令生成一個或多個可被mp custom共享的per-atom values。這些compute命令的style中含有atom字樣,例如ke/atom、stress/atom等等。對於標量的per-atom value來說,可以使用c_myKE調用;對於矢量的per-atom value的某個分量,可以使用c_myStress[2]調用。
fix命令生成可輸出到mp文件的per-atom values。例如,fix ave/atom命令計算每個原子屬性值的時間平均,就像那些per-atom compute命令以及atom-style variable。這些per-atom fix value可以被mpcustom命令通過跟上述處理compute命令同樣的方式共享,例如f_myKE或者f_myStress[2]。
variable命令可以在in文件中使用。只有atom-style變數可用於mp custom輸出,因為只有它們生成per-atomvalue。mp custom命令通過v_abc的形式引用名為abc的變數。
就像equal style變數類似,跟atom-style變數有關的公式,也可以包含數學操作符、函數(例如x+y、x*y、()、sqrt、exp)、原子屬性值(例如x[N]、fx[N])、group函數(例如mass()、vcm())、熱力學量(如temp、press、vol)、compute命令得到的全局量、fix命令得到的全局量、以及其它生成全局量的非 atom-style變數。另外,atom-style變數可以引用原子屬性值向量(如x[]、fx[]等)、生成per-atom值的compute、生成per-atom值的fix,以及其它atom-style變數。因此atom-style變數是定義由mp文件計算和輸出的變數的最普遍的方式。
Fix output 三個用於輸出的fix命令需要額外注意:fix ave/time、fix ave/spatial、fix print。
fix ave/time命令能夠對任何全局量進行時間平均,例如那些輸出的熱力學信息。由用戶指定一個或多個需要進行時間平均的物理量,可以是compute命令得到的全局量、fix命令得到的全局量,或者非atom-style變數。因為變數可以涉及thermo_style custom命令使用的keyword(例如temp或press),那麼任何熱力學量都可以按這種方法進行時間平均。
fix ave/time命令提供了控制如何進行時間積分的幾個選項。它生成的結果可以按照如下兩種方法使用。第一,可將結果直接寫入一個文件,每個時間步的值佔一行。注意可以調節平均參數使得根本不做平均,而只是作為把期望的物理量直接輸出到指定的文件的便捷方式。
就像其它生成全局量的fix一樣,該fix的結果也可以作為其它任何可以共享全局量的命令的輸入,例如thermo_style custom命令,或者variable命令。
fix ave/spatial命令可以對per-atom量進行空間平均,類似mp文件輸出,只不過後者相當於僅把simulationbox分為一層。per-atom量可以是密度(質量密度或數密度)或者原子的屬性例如位置、速度、力,也可以使compute、fix、atom-style variable計算的per-atom值。
fix ave/spatial命令提供了控制如何進行空間平均的幾個選項。它得到的per-layer值可以按照如下兩種方式使用。第一,直接將其寫入文件。注意可以調節平均參數使得根本不做空間平均,而只是作為把期望的物理量(1d layer內所有原子的相應值的求和)直接輸出得到指定文件的便捷方式。就像其它生成全局量的fix一樣,該fix的結果也可以作為其它任何可以共享全局量的命令的輸入,例如thermo_style custom命令,或者variable命令。至於如何引用這些值,請參閱fix ave/spatial命令的手冊說明。
fix print命令在模擬的過程中,定時性的生成寫入屏幕和log文件或指定文件的一行輸出。該行輸出可以包括一個或多個變數值(非atom-style變數),如前面已經解釋過的,變數本身可以包括引用thermo_style命令的keyword、compute、fix或其它variable命令生成的全局量。因此fix print命令是區別於正常的熱力學信息輸出或者mp文件輸出,而輸出任何期望得到計算的物理量的方法。
以下這個表格概況了各種輸出方法相關的命令,詳述了它們的輸入輸出分別是什麼,同樣列出了調用它們完成輸出的頻率。一般來說,只要兩個命令的輸入輸出相匹配,那麼這兩個命令就可以承接使用。匹配是指輸入輸出頻率以及global還是per-atom屬性完全一致。表格樓主已給出,不再重復秀個例子,用於輸出setforce, group原子於其他相互作用力
#------------------------------------------------------------------------------------
fix 3 tetras setforce 0.0 0.0 0.0
variable fx equal f_3[1]
variable fy equal f_3[2]
variable fz equal f_3[3]
fix 4 tetras print 1 "-- ${fx} ${fy} ${fz} --"
#------------------------------------------------------------------------------------
thermo 2
thermo_style custom step f_3[1] f_3[1] f_3[1]
#------------------------------------------------------------------------------------ |xGv00|