跳转到内容

工程师的火灾模拟/FDS/实体几何

来自维基教科书,开放的书籍,为开放的世界

实体几何

[编辑 | 编辑源代码]

第四,实体几何通过 OBST、VENT、HOLE 名字列表组输入。

设置计算的很大一部分工作在于指定要建模的空间的几何形状,并将边界条件应用于这些对象。几何形状用气相流动的障碍物来描述。需要为气相域的每个边界表面分配一个边界条件,描述其热特性。固体障碍物表面和计算域的外部边界都需要分配边界条件。火灾只是边界条件的一种类型。

定义实体障碍物,OBST

[编辑 | 编辑源代码]

名字列表组 OBST 包含用于定义障碍物的参数。每个 OBST 行定义计算域内的实体体积。

障碍物整个表面的边界条件可以通过指定以下三个参数之一来轻松指定:SURF_ID、SURF_IDS 或 SURF_ID6。

参数 SURF_ID 指定一个 SURF 边界条件,应用于障碍物的所有表面。例如

 &OBST XB=2.3,4.5,1.3,4.8,0.0,9.2, SURF_ID='brick wall' /

构建一个实体障碍物,并将砖墙表面类型应用于其所有六个表面。

如果障碍物顶部、侧面和底部的属性不同,则使用参数 SURF_IDS,这是一个包含三个字符串的数组,分别指定障碍物顶部、侧面和底部的边界条件。例如

 &OBST XB=2.3,4.5,1.3,4.8,0.0,9.2,
     SURF_IDS='burner','brick wall','INERT' /

构建一个实体障碍物,并将燃烧器表面类型应用于顶部表面(+z 方向)、砖墙表面类型应用于侧面,并将惰性表面类型应用于底部表面(-z 方向)。

如果障碍物所有表面的属性都不同,则使用参数 SURF_ID6,这是一个包含六个字符串的数组,分别指定每个表面的边界条件。例如

 &OBST XB=2.3,4.5,1.3,4.8,0.0,9.2,
     SURF_ID6='bc-x','bc+x','bc-y','bc+y','bc-z','bc+z' /

构建一个实体障碍物,并应用

• bc-x 表面类型应用于 x=2.3 表面(-x 方向的表面),

• bc+x 表面类型应用于 x=4.5 表面(+x 方向的表面),

• bc-y 表面类型应用于 y=1.3 表面(-y 方向的表面),

• bc+y 表面类型应用于 y=4.8 表面(+y 方向的表面),

• bc-z 表面类型应用于 z=0.0 表面(-z 方向的表面),

• bc+z 表面类型应用于 z=9.2 表面(+z 方向的表面)。

实体表面

请注意,SURF_ID6 符合与 XB 参数相同的约定。

下表总结了一些 OBST 参数

参数 类型 描述 单位 默认值
XB(6) 实数 体积 m
SAWTOOTH 逻辑 锯齿形 .TRUE.
THICKEN 逻辑 强制至少一个单元格厚 .FALSE.
SURF_ID 字符串 设置边界条件(所有表面) 'INERT'
SURF_IDS(3) 字符串 设置边界条件(顶部、侧面、底部表面) 'INERT'
SURF_IDS(6) 字符串 设置边界条件(六个表面中的每一个) 'INERT
ALLOW_VENT 逻辑 允许 OBST 上的 VENT .TRUE.
PERMIT_HOLE 逻辑 允许 OBST 被 HOLE 切割 .TRUE.
COLOR 字符串 颜色
RGB(3) 整数 颜色 255,204,102
TRANSPARENCY 实数 透明度 1
OUTLINE 逻辑 在 Smokeview 中绘制为轮廓 .TRUE.
DEVC_ID 字符串 控制 OBST 存在状态的 DEVC 的 ID
CTRL_ID 字符串 控制 OBST 存在状态的 CTRL 的 ID

在障碍物内部创建空隙,HOLE

[编辑 | 编辑源代码]

HOLE 名字列表组用于从现有障碍物或一组障碍物中切割出一个孔。为此,添加以下形式的行

 &HOLE XB=2.0,4.5,1.9,4.8,0.0,9.2 /

将 2.0<x<4.5、1.9<y<4.8、0.0<z<9.2 体积内的任何实体网格单元移除。与该体积相交的障碍物将分解成更小的块。

如果该孔表示一个门或窗,一个好的经验法则是打穿足够多的孔以创建该孔。这确保了孔穿透了整个障碍物。例如

 &OBST XB=1.0,1.1,0.0,5.0,0.0,3.0 /
 &HOLE XB=0.99,1.11,2.0,3.0,0.0,2.0 /

OBST 行表示一个 0.1  m 厚的墙;HOLE 行创建一个门。在孔的 x 坐标中添加的额外厘米使得很清楚该孔将穿透整个障碍物。

如果一个障碍物不应该被 HOLE 穿透,请在 OBST 行中添加参数 PERMIT_HOLE=.FALSE. 。

请注意,HOLE 对 VENT 或网格边界没有影响。它只适用于障碍物。

障碍物、孔和通风口

下表总结了一些 HOLE 参数

参数 类型 描述 单位 默认值
XB(6) 实数 体积,切口 m
COLOR 字符串 由此产生的障碍物的颜色
RGB(3) 整数 由此产生的障碍物的颜色
TRANSPARENCY 实数 由此产生的障碍物的透明度
DEVC_ID 字符串 控制 HOLE 存在状态的 DEVC 的 ID
CTRL_ID 字符串 控制 HOLE 存在状态的 CTRL 的 ID

指定不同的边界条件,VENT

[编辑 | 编辑源代码]

OBST 名字列表组可以轻松指定障碍物整个表面的边界条件。但很多时候,您需要将特定的边界条件应用于整个表面的矩形区域,或应用于计算域的外部边界。

VENT 名字列表组用于指定这些特定的边界条件

• 在与障碍物相邻的平面上,

• 或计算域的外部边界。

例如,以下行

 &VENT XB=1.0,2.0,2.0,2.0,1.0,3.0, SURF_ID='burner' / 
 &OBST XB=0.0,5.0,2.0,3.0,0.0,4.0, SURF_ID='brick wall' /

构建一个由砖墙制成的实体障碍物,并在 -y 方向的实体表面的矩形区域上应用燃烧器边界条件。

要将边界条件设置为计算域的外部边界,请按照以下示例进行操作

 !!! 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 / 
 !!! Properties 
 &SURF ID='brick wall', COLOR='BROWN' / 
 &SURF ID='floor', COLOR='SILVER' / 
 &SURF ID='ceiling', COLOR='SLATE GRAY' / 
 !!! Solid geometry 
 &VENT XB=0.0,0.0,0.0,1.6,0.0,1.4, SURF_ID='brick wall' /
     lower part of -x exterior boundary 
 &VENT XB=0.0,0.0,0.0,1.6,1.4,1.6, SURF_ID='OPEN' /
     upper part of -x exterior boundary 
 &VENT XB=1.6,1.6,0.0,1.6,0.0,1.6, SURF_ID='OPEN' /
     +x exterior boundary
 &VENT XB=0.0,1.6,0.0,0.0,0.0,1.6, SURF_ID='brick wall' /
     -y exterior boundary
 &VENT XB=0.0,1.6,1.6,1.6,0.0,1.6, SURF_ID='OPEN' /
     +y exterior boundary
 &VENT XB=0.0,1.6,0.0,1.6,0.0,0.0, SURF_ID='floor' /
     -z exterior boundary
 &VENT XB=0.0,1.6,0.0,1.6,1.6,1.6, SURF_ID='ceiling' /
     +z exterior boundary

结果如图 [fig:Setting-exterior-boundaries] 所示。

表面和边界

存在一个用于选择网格边界的快捷方式:MB 参数。本手册不会介绍它,因为它在与多个网格一起使用时会导致错误和混淆。

请注意

• 任何给定的墙单元格只能指定一个 VENT。如果为给定的墙单元格指定了额外的 VENT 行,FDS 将输出警告消息并忽略后续行。将应用第一个定义的 VENT:先来先得。

• VENT 会覆盖基础障碍物定义的边界条件:VENT 边界条件优于 OBST 边界条件。

• VENT 必须始终连接到实体障碍物或计算域的外部边界:不允许悬浮的 VENT。

• 如果 FDS 输出错误消息,要求指定 VENT 的方向,请检查以确保 VENT 是一个平面,并且没有埋在实体障碍物内。

下表总结了一些 VENT 参数

参数 类型 描述 单位 默认值
XB(6) 实数 表面 m
PBX、PBY、PBZ 实数 平面 m
IOR 整数 方向索引
SURF_ID 字符串 设置边界条件 'INERT'
DEVC_ID 字符串 控制 VENT 存在状态的 DEVC 的 ID
CTRL_ID 字符串 控制 VENT 存在状态的 CTRL 的 ID

默认边界条件

[编辑 | 编辑源代码]

如果未另行指定,INERT 是所有实体表面的默认 SURF 边界条件,也是计算域的外部边界。

如果要更改默认边界条件,请在 MISC 行上设置 SURF_DEFAULT 参数。例如

 &MISC SURF_DEFAULT='steel' /

如果需要障碍物表面的默认边界条件,则不需要设置 SURF_ID*。例如

 &OBST XB=2.3,4.5,1.3,4.8,0.0,9.2 /

构建一个实体障碍物,并将默认表面类型应用于其所有表面。

VENT 也是如此

 &VENT XB=2.3,4.5,1.3,4.8,0.0,0,0 /

墙有多厚?

[编辑 | 编辑源代码]

这些行

 &MATL ID='brick', CONDUCTIVITY=0.69, SPECIFIC_HEAT=0.84,
     DENSITY=1600. / material
 &SURF ID='brick wall', MATL_ID(1,1)= 'brick', THICKNESS= 0.1 /
     boundary condition
 &OBST XB=0.,10.,0.,.2,0.0,2.7, SURF_ID='brick wall' /
     solid obstruction

首先定义一种砖材质并描述一种砖墙边界条件,然后构建一个实体障碍物,将砖墙表面类型应用于其所有面。

如果你仔细检查处方

• OBST 对象长 10 米,高 2.7 米,在 y 方向上厚 0.2 米。

• 砖墙边界条件 (SURF 行) 为同一墙壁规定了 0.1 米的厚度。

乍一看,这两个参数似乎相互矛盾。

但是,如果你还记得在第 [sec:Each-model-its-data] 节中预期的内容,SURF 行指示的 THICKNESS 参数不需要与 OBST 规定的实体障碍物的 XB 尺寸匹配。

事实上,这两个参数是相互独立的

• OBST 行描述了阻碍气相流动的实体的整体几何结构:它为流体动力学模型提供数据。

• SURF 行描述了实体表面的特性,用于为气相计算提供合理的边界表面温度:它为实体传热模型提供数据。

当 SURF 边界条件应用于实体障碍物的表面时,FDS 会使用 THICKNESS 参数在实体的每个表面执行单独的一维传热计算。各个面之间没有通信。

显然,这不是执行实体相传热的理想方法,但这目前超出了 FDS 的范围!

薄片障碍物

[编辑 | 编辑源代码]

障碍物可以是平的。通常,薄片,如窗户,会形成一个屏障,但是如果数值网格相对于屏障的厚度很粗糙,那么如果假定屏障只有一层网格单元厚,则障碍物可能过大。

障碍物的所有面都移到最接近的网格单元。如果障碍物非常薄,则这两个面可以在同一个单元面上近似。

FDS 和 Smokeview 将此障碍物呈现为薄片,但允许它具有热厚边界条件,换句话说,应用的 SURF 的 THICKNESS 不为零。

薄片障碍物在其面上只能有一个速度矢量,因此无法从薄片障碍物可靠地注入气体,因为从一侧推出的任何东西必然会从另一侧拉出。为了实现完全功能,障碍物应指定为至少一个网格单元厚。

薄片障碍物作为流动屏障效果很好,但其他功能脆弱,应谨慎使用。

为了防止 FDS 允许薄片障碍物,在 MISC 行上设置 THICKEN_OBSTRUCTIONS=.TRUE.,或在每个 OBST 行上设置 THICKEN=.TRUE.,其中不允许薄片假设。

激活和停用对象

[编辑 | 编辑源代码]

默认情况下,对象及其规定的边界条件在计算开始时被激活并出现,然后在计算结束时被停用并消失。

如果需要,单个 OBST、VENT 和 HOLE 的激活和停用时间可以由控制逻辑规定,如第 [cha:Devices-and-control-logic] 章所述。

阶梯式复杂几何体

[编辑 | 编辑源代码]

FDS 的效率归功于其数值网格的简单性。但是,在某些情况下,某些几何特征不符合矩形网格,例如倾斜的天花板或屋顶。在这些情况下,使用矩形障碍物构建弯曲的几何体,这种过程有时称为阶梯式。

一个问题是阶梯式会改变靠近墙壁的流动模式。为了减少阶梯式对靠近墙壁的流场的影响,在构成阶梯式障碍物的每个 OBST 行上规定参数 SAWTOOTHSAWTOOTH=.FALSE.。此参数的作用是防止在锐角处产生涡量,实际上使构成障碍物的锯齿状台阶平滑。

例如,以下行

 &OBST XB=0.00, 0.05,-0.01, 0.01, 0.00, 0.05,
     SAWTOOTH=.FALSE., COLOR='GREEN' / 
 &OBST XB=0.05, 0.10,-0.01, 0.01, 0.00, 0.10,
     SAWTOOTH=.FALSE., COLOR='GREEN' / 
 &OBST XB= 0.10, 0.15,-0.01, 0.01, 0.05, 0.15,
     SAWTOOTH=.FALSE., COLOR='GREEN' / 
 ...
 &OBST XB=0.00, 0.05,-0.01, 0.01, 0.05, 0.10,
     SAWTOOTH=.TRUE., COLOR='TEAL' / 
 &OBST XB=0.05, 0.10,-0.01, 0.01, 0.10, 0.15,
     SAWTOOTH=.TRUE., COLOR='TEAL' / 
 &OBST XB=0.10, 0.15,-0.01, 0.01, 0.15, 0.20,
     SAWTOOTH=.TRUE., COLOR='TEAL' /
 ...

创建双面斜壁。生成的流动如图 [fig:SAWTOOTH] 所示。

锯齿图案

这不是问题的完整解决方案,但它确实提供了一种简单的方法来确保非矩形障碍物周围的流场不会因在锐角处产生的额外阻力而受到抑制。

为单个对象着色

[编辑 | 编辑源代码]

对象可以通过在相应的 OBST 或 VENT 行上指定 COLOR 或 RGB 值来单独着色,从而覆盖 SURF 处方。

 &OBST XB=..., SURF_ID='carpet', COLOR='INDIGO' /

不建议这样做。如第 [sec:Coloring-boundary-conditions] 节所述,最好为每个边界条件分配一种颜色。

使燃烧固体消失

[编辑 | 编辑源代码]

如果一个燃烧物体在被消耗后要从计算中消失,则在相应的 SURF 行上设置 BURN_AWAYBURN_AWAY=.TRUE.。当每个网格单元所包含的质量被热解反应或规定的 HRR 消耗时,实体对象从计算单元中逐个单元地消失。每个网格单元的质量是单元面的面积乘以 SURF 类型的表面密度。

一个例子

 &SURF ID='stuff', MATL_ID(1:2,1)='fabric','foam',
     THICKNESS(1:2)=0.01,0.1, BURN_AWAY=.TRUE. /

请牢记以下问题

• 对于反应表面,表面密度计算为层密度之和乘以层厚度。此值可以通过在 SURF 行上设置 SURFACE_DENSITY 来覆盖。

• 对于具有规定 HRRPUA 的表面,添加 SURFACE_DENSITY 参数,因为这是定义物体质量的唯一方法。

• 谨慎使用 BURN_AWAY 参数。如果一个物体有可能被烧掉,则必须分配大量的额外内存来存储额外的表面信息,因为矩形块被吃掉了。

• 如果规定了 BURN_AWAY,则 SURF 应应用于整个物体,而不仅仅是物体的表面,因为对于具有不同表面 ID 的不同表面的实体障碍物的边缘如何处理将不清楚。

有关此主题的更广泛讨论,请参见 [FDS5 用户指南]。

华夏公益教科书