轉(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ù)主要分一下三個(gè)大的部分:
1.斷點(diǎn)數(shù)據(jù)窍奋,這個(gè)主要是為了防止模擬過程中出現(xiàn)意外芭梯,比如實(shí)驗(yàn)室或機(jī)房突然斷電,程序部分階段有錯(cuò)誤等等音半。
2.系統(tǒng)熱力學(xué)量的輸出则拷,這些量一般是體系中各個(gè)原子的集體行為量,比如溫度曹鸠,壓強(qiáng)等
3.單原子詳細(xì)信息的輸出煌茬,如我們想得到的軌跡文件
對(duì)應(yīng)于上面的三大部分,LAMMPS設(shè)置了不同的命令彻桃,有些命令結(jié)合在一起實(shí)現(xiàn)相關(guān)的功能坛善。
1.對(duì)于斷點(diǎn)數(shù)據(jù),原始數(shù)據(jù)邻眷,LAMMPS主要有一下命令進(jìn)行數(shù)據(jù)的輸入輸出眠屎。read_data,read_restart【讀入】肆饶,restart改衩,write_restart【輸出】,如果能靈活運(yùn)用這幾個(gè)命令驯镊,會(huì)讓你的模擬在突發(fā)事件下得到經(jīng)濟(jì)上的收獲葫督。其中命令里有兩類通配符竭鞍,* 表示時(shí)間步,% 表示CPU編號(hào)候衍。
2.全局熱力學(xué)數(shù)據(jù)笼蛛,也就是所謂的thermodynamic output洒放,這些量是面向于系統(tǒng)的蛉鹿,而不是面向于某一類,某一組往湿,原子的妖异。一般是系統(tǒng)宏觀信息的數(shù)據(jù)。處理這些數(shù)據(jù)的命令主要有如下幾個(gè) thermo, thermo_modify, thermo_style[這個(gè)命令對(duì)于初學(xué)者要認(rèn)真研究和調(diào)試]领追,還有相關(guān)的把單原子信息轉(zhuǎn)換為【global quantities】的輔助命令:fixave/time他膳,fix ave/spatial, compute reduce 這些命令可以自己設(shè)定輸出的頻率绒窑,文件名等等棕孙。thermo_style 和 compute/fix/variable命令結(jié)合進(jìn)行數(shù)據(jù)的處理和輸出是個(gè)大學(xué)問,這個(gè)需要不斷的調(diào)試才能熟練掌握些膨。其實(shí)研究variable compute和少數(shù)關(guān)于數(shù)據(jù)處理的fix可以節(jié)約你大量后期數(shù)據(jù)處理的時(shí)間蟀俊。
3.單原子數(shù)據(jù)。相關(guān)命令主要有dump, dump_modify,undump.時(shí)刻牢記這些命令用于處理atom的數(shù)據(jù)對(duì)于你出現(xiàn)的錯(cuò)誤就有敏感性了订雾,呵呵肢预。
4.echo,print,fix print結(jié)合variable可以用于調(diào)試你的腳本,糾錯(cuò)洼哎。
5.秀個(gè)例子烫映,用于輸出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é)輸出族淮,每隔一定的時(shí)間步就打印到屏幕和log文件的一列數(shù)。第二種是dump文件李请,包括按照一定的頻率寫入文件的原子位置快照和各種per-atom數(shù)值瞧筛。每個(gè)模擬打印一組熱力學(xué)輸出;可能生成任意數(shù)目的dump文件导盅。如下所討論的较幌,LAMMPS為你提供多種方式來決定當(dāng)熱力學(xué)信息和dump文件輸出的時(shí)候,哪些量是需要計(jì)算和打印的白翻。有3個(gè)fix命令可以按照用戶選擇的量執(zhí)行它們自己的輸出:fix ave/time用來做時(shí)間平均乍炉,fix ave/spatial用來做空間平均绢片,以及fix print。下面會(huì)詳述岛琼。貫穿這個(gè)討論底循,用戶要注意他們可以添加自己的compute命令和fix命令,通過這些命令定義自己的輸出槐瑞。
Thermodynamic output 熱力學(xué)輸出的頻率和格式是由thermo熙涤、thermo_style、thermo_modify命令設(shè)置的困檩。thermo_style命令也指定了哪些數(shù)值需要被計(jì)算輸出祠挫。可以指定預(yù)先定義的變量(例如press悼沿、etotal等等)等舔。還可以指定三類keyword(c_ID、f_ID糟趾、 v_name)慌植,分別由compute、fix义郑、variable命令提供相應(yīng)的數(shù)據(jù)蝶柿。以下依次講述。
在LAMMPS中魔慷,有兩種類型的compute命令:一種計(jì)算global value(例如溫度只锭,壓強(qiáng)張量)另一種計(jì)算per-atom values。只有前者可以作為熱力學(xué)輸出院尔。用戶指定的compute命令的ID加上一個(gè)可選的下標(biāo)作為thermo_style命令的一部分蜻展。例如c_myTemp 輸出由該compute得到的標(biāo)量值;c_myTemp[2]輸出第2個(gè)矢量分量邀摆。注意compute reduce可以對(duì)per-atom的量加和得到global標(biāo)量和矢量纵顾。
fix命令可以生成由熱力學(xué)輸出的global scalar或vector,例如壓頭(indenter)與原子之間的相互作用能栋盹。這些數(shù)值可以通過與前述compute命令同樣的格式施逾,如f_ID、 f_ID[N]例获。至于哪個(gè)fix計(jì)算可通過熱力學(xué)信息輸出的global values請參閱見各個(gè)fix的手冊汉额。
fix ave/time生成的時(shí)間平均的全局量可由熱力學(xué)輸出,例如按時(shí)間平均的壓強(qiáng)榨汤。
可以在in文件中定義變量蠕搜,除了atom style的變量之外,其它所有的變量都可以通過熱力學(xué)信息輸出收壕,因?yàn)閍tom style的變量生成對(duì)應(yīng)每個(gè)原子的值妓灌。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é)信息計(jì)算和輸出的變量的最普遍的方式照捡。
Dump file output
dump文件輸出由dump命令和dump_modify命令指定颅湘。有很多預(yù)先定義的格式,如dump atom栗精、dump xtc等等闯参。同樣,有一種
用戶指定輸出各個(gè)原子的哪些屬性的dump custom格式悲立÷拐可以指定預(yù)定義的keyword(如tag、x薪夕、fx)也可以指定另外三種keyword(即c_ID脚草、f_ID、v_name原献,分別由compute馏慨、fix、variable命令提供相應(yīng)數(shù)值)姑隅。以下依次講述写隶。
compute命令生成一個(gè)或多個(gè)可被dump custom共享的per-atom values。這些compute命令的style中含有atom字樣讲仰,例如ke/atom慕趴、stress/atom等等。對(duì)于標(biāo)量的per-atom value來說鄙陡,可以使用c_myKE調(diào)用冕房;對(duì)于矢量的per-atom value的某個(gè)分量,可以使用c_myStress[2]調(diào)用趁矾。
fix命令生成可輸出到dump文件的per-atom values耙册。例如,fix ave/atom命令計(jì)算每個(gè)原子屬性值的時(shí)間平均愈魏,就像那些per-atom compute命令以及atom-style variable觅玻。這些per-atom fix value可以被dumpcustom命令通過跟上述處理compute命令同樣的方式共享想际,例如f_myKE或者f_myStress[2]。
variable命令可以在in文件中使用溪厘。只有atom-style變量可用于dump custom輸出胡本,因?yàn)橹挥兴鼈兩蓀er-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文件計(jì)算和輸出的變量的最普遍的方式搬俊。
Fix output 三個(gè)用于輸出的fix命令需要額外注意:fix ave/time、fix ave/spatial蜒茄、fix print唉擂。
fix ave/time命令能夠?qū)θ魏稳至窟M(jìn)行時(shí)間平均,例如那些輸出的熱力學(xué)信息檀葛。由用戶指定一個(gè)或多個(gè)需要進(jìn)行時(shí)間平均的物理量玩祟,可以是compute命令得到的全局量、fix命令得到的全局量屿聋,或者非atom-style變量空扎。因?yàn)樽兞靠梢陨婕皌hermo_style custom命令使用的keyword(例如temp或press)藏鹊,那么任何熱力學(xué)量都可以按這種方法進(jìn)行時(shí)間平均。
fix ave/time命令提供了控制如何進(jìn)行時(shí)間積分的幾個(gè)選項(xiàng)转锈。它生成的結(jié)果可以按照如下兩種方法使用盘寡。第一,可將結(jié)果直接寫入一個(gè)文件撮慨,每個(gè)時(shí)間步的值占一行竿痰。注意可以調(diào)節(jié)平均參數(shù)使得根本不做平均,而只是作為把期望的物理量直接輸出到指定的文件的便捷方式砌溺。
就像其它生成全局量的fix一樣影涉,該fix的結(jié)果也可以作為其它任何可以共享全局量的命令的輸入,例如thermo_style custom命令规伐,或者variable命令蟹倾。
fix ave/spatial命令可以對(duì)per-atom量進(jìn)行空間平均,類似dump文件輸出楷力,只不過后者相當(dāng)于僅把simulationbox分為一層喊式。per-atom量可以是密度(質(zhì)量密度或數(shù)密度)或者原子的屬性例如位置、速度萧朝、力,也可以使compute夏哭、fix检柬、atom-style variable計(jì)算的per-atom值。
fix ave/spatial命令提供了控制如何進(jìn)行空間平均的幾個(gè)選項(xiàng)竖配。它得到的per-layer值可以按照如下兩種方式使用何址。第一,直接將其寫入文件进胯。注意可以調(diào)節(jié)平均參數(shù)使得根本不做空間平均用爪,而只是作為把期望的物理量(1d layer內(nèi)所有原子的相應(yīng)值的求和)直接輸出得到指定文件的便捷方式。就像其它生成全局量的fix一樣胁镐,該fix的結(jié)果也可以作為其它任何可以共享全局量的命令的輸入偎血,例如thermo_style custom命令,或者variable命令盯漂。至于如何引用這些值颇玷,請參閱fix ave/spatial命令的手冊說明。
fix print命令在模擬的過程中就缆,定時(shí)性的生成寫入屏幕和log文件或指定文件的一行輸出帖渠。該行輸出可以包括一個(gè)或多個(gè)變量值(非atom-style變量),如前面已經(jīng)解釋過的竭宰,變量本身可以包括引用thermo_style命令的keyword空郊、compute份招、fix或其它variable命令生成的全局量。因此fix print命令是區(qū)別于正常的熱力學(xué)信息輸出或者dump文件輸出狞甚,而輸出任何期望得到計(jì)算的物理量的方法脾还。
以下這個(gè)表格概況了各種輸出方法相關(guān)的命令,詳述了它們的輸入輸出分別是什么入愧,同樣列出了調(diào)用它們完成輸出的頻率鄙漏。一般來說,只要兩個(gè)命令的輸入輸出相匹配棺蛛,那么這兩個(gè)命令就可以承接使用怔蚌。匹配是指輸入輸出頻率以及global還是per-atom屬性完全一致。表格樓主已給出旁赊,不再重復(fù)秀個(gè)例子桦踊,用于輸出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
作者:經(jīng)常吃錯(cuò)藥
鏈接:http://www.reibang.com/p/aedd1a491162
來源:簡書
著作權(quán)歸作者所有终畅。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)籍胯,非商業(yè)轉(zhuǎn)載請注明出處。