工程師火災模擬/FDS/輸入檔案基礎
本章講解 FDS 輸入檔案的邏輯、組織和語法。然後解釋標準參考系統,並介紹一些技巧和竅門。
執行 FDS 模擬所需的所有資訊都必須包含在一個文字檔案中。輸入檔案使用諸如 mycase.fds 之類的名稱儲存。作業名稱中不應該有空格。
資料透過使用 **命名列表組** 在輸入檔案中指定。每個命名列表組記錄佔據一行文字,並以 & 字元開頭。& 必須是文字行的第一個字元,後面應緊跟命名列表組的名稱。然後插入用逗號分隔的輸入引數列表。最後,一個正斜槓 / 字元關閉命名列表組,如下所示
可以在命名列表組中自由插入空格和換行符以進行視覺格式化。FDS 使用 & / 分隔符之間的資訊,其餘部分將被忽略。因此,註釋和筆記可以寫在 & / 分隔符之外。例如
&OBST XB=0.5,1.1,0.5,1.1,0.0,0.1 / A comment
建議為每個命名列表組新增明確的註釋,以解釋其引數選擇,並將其連結到文獻參考文獻或直接實驗。例如,以下注釋
&REAC ID='polyurethane', SOOT_YIELD=0.1875, CO_YIELD=0.02775,
C=1.0, H=1.75, O=0.25, N=0.065,
HEAT_OF_COMBUSTION=25300., IDEAL=.TRUE. /
Gas phase reaction: polyurethane flexible foam (means)
from Tewarson SFPE Handbook 3rd ed,
SFPE handbook table 3-4.14, p. 3-112.
可以幫助審閱者跟蹤使用者使用的資訊來源。透過對程式碼進行深入註釋,輸入檔案成為有關模擬案例的完整且唯一的來源。
**引數值** 可以是以下型別
- 整數,例如
T_END=5400 - 實數,例如
CO_YIELD=0.008 - 實陣列,例如
XYZ=6.04,0.28,3.65 - 整陣列,例如
IJK=90,36,38 - 字串,例如
CHID='this_is_a_string' - 字串組,例如
SURF_IDS='burner','steel' - 邏輯引數,例如
POROUS_FLOOR=.FALSE.或POROUS_FLOOR=.TRUE.必須包含句點。
有時引數是 **多維陣列**。例如,MATL_ID(2,3)='brick' 表示第二層的第三個材料成分是磚塊。
為了加快資料輸入速度,可以使用此表示法 MATL_ID(1:3,1)='plastic','insulation','steel',這意味著表面由三個不同的層組成,分別由塑膠、絕緣材料和鋼製成。表示法 1:3 表示陣列元素 1 到 3(含)。
還接受簡化的表示法。MATL_ID='plastic','steel' 等效於 MATL_ID(1:2,1)='plastic','steel'
這些最後的表面由兩個不同的層組成,分別由塑膠和鋼製成。
程式碼 **區分大小寫**:my_burner 與 MY_BURNER 不同。
要確保 FDS 讀取整個輸入檔案,請在輸入檔案末尾新增 &TAIL / 或註釋作為最後一行。
當檢視新的場景時,首先選擇一個類似於該案例的預先編寫的輸入檔案,進行必要的更改,然後以相當低的網格解析度執行該案例,以確定幾何形狀是否設定正確。
以下檔案是 pplume5.fds 的一個略微修改和簡化的版本,通常包含在 FDS 軟體分發中
!!! General configuration
&HEAD CHID='pplume5', TITLE='Plume case' /
name of the case and a brief explanation
&TIME T_END=10.0 /
the simulation will end at 10 seconds
&MISC SURF_DEFAULT='wall', TMPA=25. /
all bounding surfaces have
a 'wall' boundary condition
unless otherwise specified,
the ambient temperature is set to 25°C.
&REAC ID='polyurethane', SOOT_YIELD=0.10,
N=1.0, C=6.3, H=7.1, O=2.1 /
predominant fuel gas for the mixture fraction model
of gas phase combustion
!!! Computational domain
&MESH IJK=32,32,16, XB=0.0,1.6,0.0,1.6,0.0,0.8 /
&MESH IJK=32,32,16, XB=0.0,1.6,0.0,1.6,0.8,1.6 /
&MESH IJK=32,32,16, XB=0.0,1.6,0.0,1.6,1.6,2.4 /
&MESH IJK=32,32,16, XB=0.0,1.6,0.0,1.6,2.4,3.2 /
four connected calculation meshes
and their cell numbers
!!! Properties
&MATL ID='gypsum_plaster', CONDUCTIVITY=0.48,
SPECIFIC_HEAT=0.84, DENSITY=1440. /
thermophysical properties of 'gypsum plaster' material
&PART ID='tracers', MASSLESS=.TRUE., SAMPLING_FACTOR=1 /
a type of Lagrangian particles
&SURF ID='burner', HRRPUA=600.,
PART_ID='tracers', COLOR='RASPBERRY' /
a type of boundary conditions named 'burner'
&SURF ID='wall', RGB=200,200,200, MATL_ID='gypsum_plaster',
THICKNESS=0.012 /
a type of boundary conditions named 'wall'
!!! Solid geometry
&VENT XB=0.5,1.1,0.5,1.1,0.1,0.1, SURF_ID='burner' /
the 'burner' boundary condition
is imposed to a plane face
&OBST XB=0.5,1.1,0.5,1.1,0.0,0.1, SURF_ID='wall' /
a solid is created, 'wall' boundary condition
is imposed to all its faces
&VENT XB=0.0,0.0,0.0,1.6,0.0,3.2, SURF_ID='OPEN'/
&VENT XB=1.6,1.6,0.0,1.6,0.0,3.2, SURF_ID='OPEN'/
&VENT XB=0.0,1.6,0.0,0.0,0.0,3.2, SURF_ID='OPEN'/
&VENT XB=0.0,1.6,1.6,1.6,0.0,3.2, SURF_ID='OPEN'/
&VENT XB=0.0,1.6,0.0,1.6,3.2,3.2, SURF_ID='OPEN'/
the 'OPEN' boundary condition is imposed to
the exterior boundaries of the computational domain
!!! Output
&DEVC XYZ=1.2,1.2,2.9, QUANTITY='THERMOCOUPLE', ID='tc1' /
send to output: the data collected by a thermocouple
&ISOF QUANTITY='TEMPERATURE', VALUE(1)=100.0 /
3D contours of temperature at 100°C
&SLCF PBX=0.8, QUANTITY='TEMPERATURE', VECTOR=.TRUE. /
vector slices colored by temperature
&BNDF QUANTITY='WALL TEMPERATURE' /
surface 'WALL_TEMPERATURE' at all solid obstructions
&TAIL / end of file
這些輸入檔案中並未列出所有型別的 FDS 命名列表組。實際上,編寫輸入檔案時的另一個經驗法則是在檔案中僅新增要從其預設值更改的引數。這樣,您可以更輕鬆地區分您所施加的內容和 FDS 預設值。
一般而言,命名列表記錄可以在輸入檔案中以任何順序輸入,但最好以某種系統化的方式進行組織。請注意,相同命名列表組的順序可能很重要。當屬性重疊時,遵循先來先得的原則。
為了清晰起見,使用者通常將類似的命名列表分組到 **同類部分**,這些部分由標題註釋標識,如前一個示例輸入檔案所示。
本節介紹大多數 FDS 輸入檔案背後的邏輯,本手冊的組織也使用相同的邏輯。
首先,執行一般配置。
該案例透過 HEAD 命名列表組接收一個名稱,模擬時間透過 TIME 命名列表組設定。其他雜項引數透過 MISC 命名列表組規定。
然後,氣相燃燒反應透過 REAC 命名列表組設定,輻射模型透過 RADI 配置。
其次,透過 MESH 命名列表組定義計算域。所有 FDS 計算都必須在由稱為網格的直線體積組成的域內執行。每個網格都細分為矩形單元格,其數量取決於所需流動動力學解析度。
透過 INIT 命名列表組為流動域規定一些初始條件。
第三,設定一些屬性
- 每種材料的屬性 (
MATL), - 額外氣體物質的屬性 (
SPEC), - 拉格朗日粒子的屬性 (
PART), - 以及邊界條件型別 (
SURF)。
這是設定模擬中最具挑戰性的部分:首先,對於真實火災和模擬火災,火災的增長對周圍材料的熱效能非常敏感。其次,即使所有材料屬性都在一定程度上已知,由於模型演算法的侷限性或數值網格的解析度,也可能無法正確模擬感興趣的物理現象。
您有責任提供材料的熱效能,然後評估模型的效能,以確保捕獲感興趣的現象。
第四,透過 OBST、VENT、HOLE 命名列表組輸入實體幾何。
- 設定計算時,相當一部分工作在於指定要建模的空間的幾何形狀,並將邊界條件應用於這些物件。幾何形狀透過對氣相流動的障礙來描述。
- 需要將邊界條件分配給氣相域的每個邊界表面,以描述其熱效能。實體障礙面和計算域的外部邊界都需要分配邊界條件。火災只是邊界條件的一種型別。
第五,一些控制邏輯和自動化是透過PROP、DEVC、CTRL命名字首組引入的:裝置可以用於控制各種操作,例如建立和刪除障礙物,或啟用和停用風機和通風口。
最後,使用者指定輸出量(DEVC、SLCF、BNDF、ISOF)。所有輸出量都必須在計算開始時指定。在大多數情況下,如果在計算結束時沒有指定資訊,則無法檢索資訊。就像在實際實驗中一樣,使用者必須在計算開始之前決定儲存哪些資訊。
下表總結了這種邏輯,並展示了建議的輸入檔案按節進行系統組織的方式
| 節 | 內容 | 命名字首組 |
|---|---|---|
| 一般配置 | 執行模擬所需的一般資訊,例如其名稱、持續時間和其他雜項引數。 | HEAD、TIME、MISC |
| 主要氣相燃燒反應和輻射模型。 | REAC、RADI | |
| 計算域 | 計算域:尺寸和網格。 | MESH
|
| 計算域的初始條件。 | INIT
| |
| 屬性 | 材料,溫度相關的熱物理性質。 | MATL、RAMP(溫度) |
| 額外氣體物種性質。 | SPEC
| |
| 拉格朗日粒子性質。 | PART
| |
| 邊界條件,時間相關的邊界條件。 | SURF、RAMP(時間) | |
| 實體幾何 | 實體幾何的描述,將邊界條件分配給邊界表面。 | OBST、HOLE、VENT |
| 控制邏輯 | 裝置的一般特性,用於控制各種操作的裝置和控制功能,例如建立和刪除實體障礙物或啟用和停用邊界條件。 | PROP、DEVC、CTRL |
| 輸出 | 要輸出的計算量列表。 | DUMP、DEVC、SLCF,
|
新手使用者往往會忘記 FDS 不是計算機輔助設計 (CAD) 工具,而是一種 CFD 程式碼。
首先,並非所有幾何細節、所有參與物體的所有物理和化學性質都需要輸入到輸入檔案中。
觀察圖 [fig:Modeling-reality-in-FDS5] 中給出的示例,椅子和桌子框架對流體流動的影響可以忽略不計。相反,隔牆、桌面和座位的對流體流動的影響可能很重要,具體取決於分析的目標。
因此,分析過程的第一步是透過尋找以下問題的答案來闡明問題
- 分析的目標是什麼?
- 實現該目標的最簡單方法是什麼?
- 需要包含哪些輸入資料?
始終需要對幾何進行近似和對屬性進行簡化,以使分析能夠以合理的努力進行。
最好從一個相對簡單的檔案開始,該檔案捕獲了問題的主要特徵,而不會過分依賴太多細節,這些細節可能會掩蓋計算中的根本缺陷。
初始計算應以粗網格進行,以便執行時間少於一小時,並且可以輕鬆地進行修正,而不會浪費太多時間。隨著您學習如何編寫輸入檔案,您將不斷執行和重新執行您的案例,因為您會增加複雜性。
在將資料輸入到輸入檔案時,建議始終考慮 FDS 中的模型將如何使用該資料。
例如
- 流體動力學模型需要知道計算域的哪些單元格對流體流動是開放的,哪些單元格被實體障礙物佔據。幾何圖形被離散化,最大解析度是網格單元格大小。
- 傳熱模型需要流動域邊界表面的特性和厚度才能執行傳熱計算。
想象一下,圖 [fig:Modeling-reality-in-FDS5] 中隔開房間 1 和房間 2 的牆壁厚度為 0.19 米。因此,在計算過程中
- 假設單元格大小等於 0.30 米,流體動力學模型認為牆壁厚度為 0.30 米,因為幾何圖形必須符合底層網格。該資訊用於阻礙流體流動。
- 傳熱模型使用實際的 0.19 米厚度和材料特性對牆壁執行一維傳熱計算。
對於新手使用者來說,這可能聽起來很奇怪,但對 FDS 來說,這堵牆……既有 0.30 米厚,也有 0.19 米厚。
FDS 採用國際單位制 (SI) 的計量單位。
長度以米 (m) 表示,時間以秒 (s) 表示,質量以千克 (kg) 表示,溫度以攝氏度 (°C) 表示,壓力以帕斯卡 (Pa) 表示,熱量以千焦耳 (kJ) 表示,功率以千瓦 (kW) 表示,導熱係數以瓦特每米每開爾文 (W/m/K) 表示,熱流以千瓦每平方米 (kW/m2) 表示,分子量以克每摩爾 (g/mol) 表示,...
本手冊包含一個全面的常見命名字首引數及其單位列表。有關完整列表,請參閱文件。[1]
FDS 座標系符合右手定則。預設情況下,z 軸被認為是垂直的。
出於計算原因,模型的最長水平尺寸始終優選與 x 軸對齊。這通常會縮短計算時間。

許多命名字首組將其操作擴充套件到體積、面、線段、點或平面。如圖所示,FDS 幾何實體始終使用一些約定俗成的規則進行描述。

體積始終由一個邊平行於軸的單個直角平行六面體表示。它的位置和尺寸由兩個相對頂點的座標來描述:如果點 A=(xA, yA, zA) 和點 B=(xB,yB,zB) 是相對頂點,則其座標輸入為
xA, xB, yA, yB, zA, zB.
例如
&OBST XB=0.5,1.5,2.0,3.5,-2.0,0., SURF_ID='wall' /
使用引數XB來定義一個實體障礙物,該障礙物跨越從原點 (0.5, 2.0, -2.0) 開始並沿正 x 方向擴充套件 1 米、沿正 y 方向擴充套件 1.5 米、沿正 z 方向擴充套件 2 米的體積。
面由一個邊平行於軸的直角平面表示。它的位置和尺寸由兩個相對頂點的座標來描述,這兩個頂點必須位於同一個平面上。例如
&VENT XB=0.5,1.1,2.0,3.1,-2.0,-2.0, SURF_ID='fire' /
使用引數XB來定義一個垂直於 z 軸的平面,該平面在實體上施加特定的邊界條件。六個座標中的兩個相同,表示平面而不是實體。
線段由兩個端點界定。如果點 A=(xA, yA, zA) 和點 B=(xB, yB, zB) 是端點,則其座標按照與體積相同的慣例輸入。
例如,
&DEVC XB=0.5,1.5,2.0,3.5,-2.0,0., QUANTITY='PATH OBSCURATION',
ID='beam1', SETPOINT=0.33 /
是在 (0.5, 2.0, -2.0) 和 (1.5, 3.5, 0.) 端點之間的光束煙霧探測器。
點只需由其 3 個座標來標識。例如,行
&DEVC XYZ=2.,3.,4., QUANTITY='THERMOCOUPLE', ID='termo1' /
使用引數XYZ在座標為 (2., 3., 4.) 的點插入一個熱電偶。
平面由一個垂直於一個參考軸的直角平面表示。例如,以下行
&SLCF PBX=0.5, QUANTITY='TEMPERATURE' /
! is a plane perpendicular to the x axis and intersecting its point (.5,0.,0.).
&SLCF PBY=1.5, QUANTITY='TEMPERATURE' /
! is a plane perpendicular to the y axis and intersecting its point (0.,1.5,0.).
&SLCF PBZ=-.5, QUANTITY='TEMPERATURE' /
! is a plane perpendicular to the z axis and intersecting its point (0.,0.,-.5).
所有使用引數PBX、PBY、PBZ來指定垂直軸方向上的座標。
一些 FDS 實體需要規定特定的方向。這是透過以下引數之一來實現的:IOR 或 ORIENTATION。
引數 IOR(方向索引)用於規定六個可能的平行於軸的方向之一。
- 如果方向為正 x 方向,則設定
IOR=1, - 負 x 方向
IOR=-1, - 正 y
IOR=2, - 負 y
IOR=-2, - 正 z
IOR=3, - 負 z
IOR=-3。
例如,以下程式碼行:
&DEVC XYZ=0.7,0.9,2.1, QUANTITY='WALL TEMPERATURE',
IOR=-2, ID='ST-1' /
指定了面向負 y 方向的牆面的表面溫度。
引數 ORIENTATION 用於需要自由方向指定的實體,例如灑水器。ORIENTATION 由三個實數值的三元組指定,這些值表示方向向量的分量。ORIENTATION 的預設值為 (0, 0, -1)。
例如,以下程式碼行:
&DEVC XYZ=23.91,21.28,0.50, PROP_ID='nozzle',
ORIENTATION=1.,1.,0., ID='noz_1' /
指定了一個面向 (1,1,0) 向量的噴嘴。
可以使用兩個引數來規定物體的顏色:RGB 和 COLOR。
RGB 引數後面跟著三個介於 0 到 255 之間的整數,表示組成顏色的紅色、綠色和藍色的數量。
COLOR 引數呼叫預定義的顏色名稱,必須完全按照顏色表中列出的名稱輸入。例如,要獲得彩色的固體障礙物,可以使用以下程式碼:
&OBST XB=0.5,1.5,2.0,3.5,-2.0,0.
COLOR='MAGENTA' /
您可以在文件中快速找到 500 多種顏色的完整顏色表。[1]
例如,引數 RGB=0,0,255 和引數 COLOR='BLUE' 都可以用來獲得藍色物體。
透過分配 TRANSPARENCY 引數,可以使物體半透明。引數值是一個介於 0 到 1 之間的實數,其中 0 表示完全透明。該引數應始終與 RGB 或 COLOR 一起設定。
使用 COLOR='INVISIBLE' 會導致物體在 Smokeview 中不顯示。引數 OUTLINE=.TRUE. 會導致物體以輪廓的形式顯示。
