轉(zhuǎn)自http://blog.sina.com.cn/s/blog_6e56343801014qpb.html
談?wù)勱P(guān)于LAMMPS輸出【Output】的問題
2009-09-25 19:40
無論任何模擬,我們都是想從模擬中得到我們想要的數(shù)據(jù)【data】,然后分析這些數(shù)據(jù)澳盐,從而提取出相關(guān)的信息【MAYBE新的發(fā)現(xiàn)】,那么數(shù)據(jù)的輸出是
必然的一道程序腕窥,下面談?wù)凩AMMPS軟件是如何輸出data筛婉。
LAMMPS中處理的輸出數(shù)據(jù)主要分一下三個大的部分:
1.斷點數(shù)據(jù),這個主要是為了防止模擬過程中出現(xiàn)意外入蛆,比如實驗室或機房突然斷電硕勿,程序部分階段有錯誤等等源武。
2.系統(tǒng)熱力學(xué)量的輸出,這些量一般是體系中各個原子的集體行為量话浇,比如溫度闹究,壓強等
3.單原子詳細信息的輸出,如我們想得到的軌跡文件
對應(yīng)于上面的三大部分岖瑰,LAMMPS設(shè)置了不同的命令砂代,有些命令結(jié)合在一起實現(xiàn)相關(guān)的功能刻伊。
1.對于斷點數(shù)據(jù),原始數(shù)據(jù)捶箱,LAMMPS主要有一下命令進行數(shù)據(jù)的輸入輸出丁屎。read_data,read_restart【讀入】证九,restart,write_restart【輸出】呀页,如果能靈活運用這幾個命令拥坛,會讓你的模擬在突發(fā)事件下得到經(jīng)濟上的收獲。其中命令里有兩類通配符丸氛,* 表示時間步惨奕,% 表示CPU編號梨撞。
2.全局熱力學(xué)數(shù)據(jù),也就是所謂的thermodynamic output时肿,這些量是面向于系統(tǒng)的港粱,而不是面向于某一類,某一組寸宏,原子的偿曙。一般是系統(tǒng)宏觀信息的數(shù)據(jù)望忆。處理這些數(shù)據(jù)的命令主要有如下幾個 thermo, thermo_modify, thermo_style[這個命令對于初學(xué)者要認真研究和調(diào)試],還有相關(guān)的把單原子信息轉(zhuǎn)換為【global quantities】的輔助命令:fixave/time稿壁,fix ave/spatial歉备, compute reduce 這些命令可以自己設(shè)定輸出的頻率,文件名等等落午。thermo_style 和 compute/fix/variable命令結(jié)合進行數(shù)據(jù)的處理和輸出是個大學(xué)問肚豺,這個需要不斷的調(diào)試才能熟練掌握吸申。其實研究variable compute和少數(shù)關(guān)于數(shù)據(jù)處理的fix可以節(jié)約你大量后期數(shù)據(jù)處理的時間。
3.單原子數(shù)據(jù)梳侨。相關(guān)命令主要有dump, dump_modify,undump.時刻牢記這些命令用于處理atom的數(shù)據(jù)對于你出現(xiàn)的錯誤就有敏感
性了日丹,呵呵哲虾。
4。echo,print,fix print結(jié)合variable可以用于調(diào)試你的腳本晒旅,糾錯汪诉。
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所寫
關(guān)于output迄本,手冊4.15上渴,曾粗略翻譯過
除了restart文件稠氮,LAMMPS還有兩種基本的輸出。第一種是熱力學(xué)輸出赃份,每隔一定的時間步就打印到屏幕和log文件的一列數(shù)。第二種是dump文件纠永,包括按照一定的頻率寫入文件的原子位置快照和各種per-atom數(shù)值谒拴。每個模擬打印一組熱力學(xué)輸出;可能生成任意數(shù)目的dump文件炭序。如下所討論的惭聂,LAMMPS為你提供多種方式來決定當(dāng)熱力學(xué)信息和dump文件輸出的時候相恃,哪些量是需要計算和打印的。有3個fix命令可以按照用戶選擇的量執(zhí)行它們自己的輸出:fix ave/time用來做時間平均耕腾,fix ave/spatial用來做空間平均揩魂,以及fix print火脉。下面會詳述。貫穿這個討論畸颅,用戶要注意他們可以添加自己的compute命令和fix命令方援,通過這些命令定義自己的輸出犯戏。
Thermodynamic output 熱力學(xué)輸出的頻率和格式是由thermo、thermo_style种吸、thermo_modify命令設(shè)置的呀非。thermo_style命令也指定了哪些數(shù)值需要被計算輸出〔埽可以指定預(yù)先定義的變量(例如press恩闻、etotal等等)。還可以指定三類keyword(c_ID倦踢、f_ID侠草、 v_name)犁嗅,分別由compute褂微、fix、variable命令提供相應(yīng)的數(shù)據(jù)式撼。以下依次講述著隆。
在LAMMPS中呀癣,有兩種類型的compute命令:一種計算global value(例如溫度,壓強張量)另一種計算per-atomvalues浦辨。只有前者可以作為熱力學(xué)輸出沼沈。用戶指定的compute命令的ID加上一個可選的下標作為thermo_style命令的一部分列另。例如c_myTemp 輸出由該compute得到的標量值;c_myTemp[2]輸出第2個矢量分量晦嵌。注意compute reduce可以對per-atom的量加和得到global標量和矢量惭载。
fix命令可以生成由熱力學(xué)輸出的global scalar或vector,例如壓頭(indenter)與原子之間的相互作用能棒妨。這些數(shù)值可以通過與前述compute命令同樣的格式含长,如f_ID拘泞、 f_ID[N]。至于哪個fix計算可通過熱力學(xué)信息輸出的global values請參閱見各個fix的手冊辱魁。
fix ave/time生成的時間平均的全局量可由熱力學(xué)輸出染簇,例如按時間平均的壓強强岸。
可以在in文件中定義變量,除了atom style的變量之外青灼,其它所有的變量都可以通過熱力學(xué)信息輸出聚至,因為atom style的變量生成對應(yīng)每個原子的值本橙。thermo_style通過v_abc的形式調(diào)用名為abc的變量甚亭。
跟equal style變量有關(guān)的公式,可以包含數(shù)學(xué)操作符役纹、函數(shù)(例如x+y,x*y,(),sqrt,exp)暇唾、原子屬性(例如x[N],fx[N])、 group函數(shù)(例如mass(),vcm())宫仗、熱力學(xué)量(如temp,press,vol)旁仿、compute命令得到的全局量、fix命令得到的全局量毅贮、以及其它variable命令的相關(guān)變量尘奏。因此equal-style變量是定義由熱力學(xué)信息計算和輸出的變量的最普遍的方式罪既。
Dump file output
dump文件輸出由dump命令和dump_modify命令指定。有很多預(yù)先定義的格式,如dump atom驹针、dump xtc等等柬甥。同樣其垄,有一種
用戶指定輸出各個原子的哪些屬性的dump custom格式绿满”弁猓可以指定預(yù)定義的keyword(如tag、x喇颁、fx)也可以指定另外三種keyword(即c_ID漏健、f_ID、v_name橘霎,分別由compute蔫浆、fix、variable命令提供相應(yīng)數(shù)值)姐叁。以下依次講述瓦盛。
compute命令生成一個或多個可被dump custom共享的per-atom values洗显。這些compute命令的style中含有atom字樣,例如ke/atom墙懂、stress/atom等等。對于標量的per-atom value來說扮念,可以使用c_myKE調(diào)用损搬;對于矢量的per-atom value的某個分量,可以使用c_myStress[2]調(diào)用柜与。
fix命令生成可輸出到dump文件的per-atom values巧勤。例如,fix ave/atom命令計算每個原子屬性值的時間平均弄匕,就像那些per-atom compute命令以及atom-style variable颅悉。這些per-atom fix value可以被dumpcustom命令通過跟上述處理compute命令同樣的方式共享,例如f_myKE或者f_myStress[2]迁匠。
variable命令可以在in文件中使用剩瓶。只有atom-style變量可用于dump custom輸出,因為只有它們生成per-atomvalue城丧。dump custom命令通過v_abc的形式引用名為abc的變量延曙。
就像equal style變量類似,跟atom-style變量有關(guān)的公式亡哄,也可以包含數(shù)學(xué)操作符枝缔、函數(shù)(例如x+y、x*y蚊惯、()愿卸、sqrt、exp)截型、原子屬性值(例如x[N]趴荸、fx[N])、group函數(shù)(例如mass()宦焦、vcm())发钝、熱力學(xué)量(如temp、press赶诊、vol)笼平、compute命令得到的全局量、fix命令得到的全局量舔痪、以及其它生成全局量的非 atom-style變量寓调。另外,atom-style變量可以引用原子屬性值向量(如x[]锄码、fx[]等)夺英、生成per-atom值的compute晌涕、生成per-atom值的fix,以及其它atom-style變量痛悯。因此atom-style變量是定義由dump文件計算和輸出的變量的最普遍的方式余黎。
Fix output 三個用于輸出的fix命令需要額外注意:fix ave/time、fix ave/spatial载萌、fix print惧财。
fix ave/time命令能夠?qū)θ魏稳至窟M行時間平均,例如那些輸出的熱力學(xué)信息扭仁。由用戶指定一個或多個需要進行時間平均的物理量垮衷,可以是compute命令得到的全局量、fix命令得到的全局量乖坠,或者非atom-style變量搀突。因為變量可以涉及thermo_style custom命令使用的keyword(例如temp或press),那么任何熱力學(xué)量都可以按這種方法進行時間平均熊泵。
fix ave/time命令提供了控制如何進行時間積分的幾個選項仰迁。它生成的結(jié)果可以按照如下兩種方法使用。第一顽分,可將結(jié)果直接寫入一個文件徐许,每個時間步的值占一行。注意可以調(diào)節(jié)平均參數(shù)使得根本不做平均怯邪,而只是作為把期望的物理量直接輸出到指定的文件的便捷方式绊寻。
就像其它生成全局量的fix一樣,該fix的結(jié)果也可以作為其它任何可以共享全局量的命令的輸入悬秉,例如thermo_style custom命令,或者variable命令冰蘑。
fix ave/spatial命令可以對per-atom量進行空間平均和泌,類似dump文件輸出,只不過后者相當(dāng)于僅把simulationbox分為一層祠肥。per-atom量可以是密度(質(zhì)量密度或數(shù)密度)或者原子的屬性例如位置武氓、速度、力仇箱,也可以使compute县恕、fix、atom-style variable計算的per-atom值剂桥。
fix ave/spatial命令提供了控制如何進行空間平均的幾個選項忠烛。它得到的per-layer值可以按照如下兩種方式使用。第一权逗,直接將其寫入文件美尸。注意可以調(diào)節(jié)平均參數(shù)使得根本不做空間平均冤议,而只是作為把期望的物理量(1d layer內(nèi)所有原子的相應(yīng)值的求和)直接輸出得到指定文件的便捷方式。就像其它生成全局量的fix一樣师坎,該fix的結(jié)果也可以作為其它任何可以共享全局量的命令的輸入恕酸,例如thermo_style custom命令,或者variable命令胯陋。至于如何引用這些值蕊温,請參閱fix ave/spatial命令的手冊說明。
fix print命令在模擬的過程中遏乔,定時性的生成寫入屏幕和log文件或指定文件的一行輸出义矛。該行輸出可以包括一個或多個變量值(非atom-style變量),如前面已經(jīng)解釋過的按灶,變量本身可以包括引用thermo_style命令的keyword症革、compute、fix或其它variable命令生成的全局量鸯旁。因此fix print命令是區(qū)別于正常的熱力學(xué)信息輸出或者dump文件輸出噪矛,而輸出任何期望得到計算的物理量的方法。
以下這個表格概況了各種輸出方法相關(guān)的命令铺罢,詳述了它們的輸入輸出分別是什么艇挨,同樣列出了調(diào)用它們完成輸出的頻率。一般來說韭赘,只要兩個命令的輸入輸出相匹配缩滨,那么這兩個命令就可以承接使用。匹配是指輸入輸出頻率以及global還是per-atom屬性完全一致泉瞻。表格樓主已給出脉漏,不再重復(fù)秀個例子,用于輸出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|fcc8d4de8197f69fde70263fb4d52380