跳转到内容

工程师火灾模拟/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_burnerMY_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 输入文件背后的逻辑

[编辑 | 编辑源代码]

本节介绍大多数 FDS 输入文件背后的逻辑,本手册的组织也使用相同的逻辑。

一般配置

[编辑 | 编辑源代码]

首先,执行一般配置。

该案例通过 HEAD 命名列表组接收一个名称,模拟时间通过 TIME 命名列表组设置。其他杂项参数通过 MISC 命名列表组规定。

然后,气相燃烧反应通过 REAC 命名列表组设置,辐射模型通过 RADI 配置。

计算域

[编辑 | 编辑源代码]

其次,通过 MESH 命名列表组定义计算域。所有 FDS 计算都必须在由称为网格的直线体积组成的域内执行。每个网格都细分为矩形单元格,其数量取决于所需流动动力学分辨率。

通过 INIT 命名列表组为流动域规定一些初始条件。

第三,设置一些属性

  • 每种材料的属性 (MATL),
  • 额外气体物质的属性 (SPEC),
  • 拉格朗日粒子的属性 (PART),
  • 以及边界条件类型 (SURF)。

这是设置模拟中最具挑战性的部分:首先,对于真实火灾和模拟火灾,火灾的增长对周围材料的热性能非常敏感。其次,即使所有材料属性都在一定程度上已知,由于模型算法的局限性或数值网格的分辨率,也可能无法正确模拟感兴趣的物理现象。

您有责任提供材料的热性能,然后评估模型的性能,以确保捕获感兴趣的现象。

实体几何

[编辑 | 编辑源代码]

第四,通过 OBSTVENTHOLE 命名列表组输入实体几何。

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

控制逻辑

[编辑 | 编辑源代码]

第五,一些控制逻辑和自动化是通过PROPDEVCCTRL命名前缀组引入的:设备可以用于控制各种操作,例如创建和删除障碍物,或激活和停用风机和通风口。

最后,用户指定输出量(DEVCSLCFBNDFISOF)。所有输出量都必须在计算开始时指定。在大多数情况下,如果在计算结束时没有指定信息,则无法检索信息。就像在实际实验中一样,用户必须在计算开始之前决定保存哪些信息。

下表总结了这种逻辑,并展示了建议的输入文件按节进行系统组织的方式

内容 命名前缀组
一般配置 执行模拟所需的一般信息,例如其名称、持续时间和其他杂项参数。 HEADTIMEMISC
主要气相燃烧反应和辐射模型。 REACRADI
计算域 计算域:尺寸和网格。 MESH
计算域的初始条件。 INIT
属性 材料,温度相关的热物理性质。 MATLRAMP(温度)
额外气体物种性质。 SPEC
拉格朗日粒子性质。 PART
边界条件,时间相关的边界条件。 SURFRAMP(时间)
实体几何 实体几何的描述,将边界条件分配给边界表面。 OBSTHOLEVENT
控制逻辑 设备的一般特性,用于控制各种操作的设备和控制功能,例如创建和删除实体障碍物或激活和停用边界条件。 PROPDEVCCTRL
输出 要输出的计算量列表。 DUMPDEVCSLCF,

BNDFISOF

保持简单

[编辑 | 编辑源代码]

新手用户往往会忘记 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 几何实体始终使用一些约定俗成的规则进行描述。

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).

所有使用参数PBXPBYPBZ来指定垂直轴方向上的坐标。

规定方向

[编辑 | 编辑源代码]

一些 FDS 实体需要规定特定的方向。这是通过以下参数之一来实现的:IORORIENTATION

参数 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) 向量的喷嘴。

规定颜色和外观

[编辑 | 编辑源代码]

可以使用两个参数来规定物体的颜色:RGBCOLOR

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 表示完全透明。该参数应始终与 RGBCOLOR 一起设置。

使用 COLOR='INVISIBLE' 会导致物体在 Smokeview 中不显示。参数 OUTLINE=.TRUE. 会导致物体以轮廓的形式显示。

参考文献

[编辑 | 编辑源代码]
  1. a b FDS 用户指南
华夏公益教科书