來源: “碼農不會寫詩”公眾號
鏈接:Lammps入門in文件簡介-1
文章目錄
- 01 in文件簡介
- 02 in文件命令解析規則
書回正文
??Lammps通過一次一行地從輸入腳本(文本文件,通常稱in文件)中讀取命令來執行計算,當輸入腳本結束時,Lammps退出。掌握in文件語法和解析規則可以有效快速的設置和獲取感興趣的模擬信息,往往事半功倍。
01 in文件簡介
Lammps從in文件讀取命令從而執行指定計算,注意是一次一行的讀取然后執行,并不會一次性讀取整個in文件,也就是說若某行有錯誤,直到執行到相應行才會報出相關錯誤。每個命令都會使Lammps立即采取行動,而不考慮以后可能處理的任何命令。
02 in文件命令解析規則
https://docs.lammps.org/Commands_input.html
in文件中每個非空行都被視為一個命令,命令區分大小寫。一般的,命令名和指定的命令參數都是小寫;文件名或用戶選擇的ID字符串可以使用大寫字母(也建議使用大寫以作區分)。以下六規則請欣賞。
規則1-跨行符&
如果該行最后一個字符是“&”字符,則該命令將在下一行繼續執行,也就是此行和下一行視作同一條命令,這就允許長命令可以用兩行或多行的方式書寫。當然通過刪除“&”字符和換行符,可以將其寫在同一行。
timestep &
1.0
等價于
timestep 1.0
規則2-注釋符#
從第一個“#”字符開始的所有字符都將被視為注釋。
# 這里是注釋
timestep 1.0 # 這里是注釋
規則3-變量替換符$
搜索并用變量值替換$字符后的文本字符串。
- $后面跟大括號“{}”,則變量名就是大括號內的文本字符
- $后面沒有跟大括號“{}”,則變量名是緊跟在$后面的單個字符
注意:${myTemp}和$x指的是名為“myTemp”和“x”的變量,而“$xx”將被解釋為名為“x”、后跟“x”字符的變量。 - $后面跟括號“()”,則括號內的文本將被視為“立即數”變量,并作為相等樣式變量進行計算
variable X equal (xlo+xhi)/2+sqrt(v_area) # define X
region 1 block $X 2 INF INF EDGE EDGE
variable X delete # discard X
等價于
region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE
- “立即數”變量表達式后面可以跟冒號":",然后跟C樣式的格式字符串,例如“:%f”或“:%.10g”,該格式字符串用于輸出變量表達式的結果。若未指定格式字符串,則使用高精度的“%.20g”作為默認格式。
print "Final energy per atom: $(v_ke_per_atom+v_pe_per_atom:%10.3f) eV/atom"
規則4-命令行分隔符
命令行被分成用空格(制表符、多個空格)分隔的“單詞”,單詞可以包含字母、數字、下劃線或標點符號。
規則5-命令行內容規則
第一個單詞是命令名,行中所有后續單詞都是參數。
規則6-命令參數帶空格
如果希望將帶空格(制表符、多個空格)的文本視為單個參數,則可以將其括在單(’)、雙(”)或三(”””)引號中,另外如果使用了“&”字符,則用引號括起來的單個長參數可以跨多行。
print "Volume = $v"
print 'Volume = $v'
if "${steps} > 1000" then quit
variable a string "red green blue &purple orange cyan"
print """
System volume = $v
System temperature = $t
"""
本文介紹了in文件的基本規則,之后會逐步講解in文件結構及常用命令。今天就到這里啦,拜了個拜~
上一篇:Lammps入門in文件vscode高亮插件-Lammps Syntax Highlighting