流体模型

以下输入使用 fluid 前缀定义。

描述

类型

默认值

solve

指定流体的名称,或设置为 None 以禁用流体求解器。 分配给流体求解器的名称用于指定流体初始和边界条件。

String

None

viscosity.molecular

指定使用哪种分子粘度模型。

可用选项包括:

  • constant 为常数粘度模型

如果启用了流体求解器,则需要粘度模型。

String

None

viscosity.molecular.constant

常数流体粘度。 constant 粘度模型需要一个值。

Real

0

viscosity.eddy

指定涡流粘度模型。

可用选项包括:

String

None

viscosity.eddy.Smagorinsky-Lilly.constant

Smagorinsky-Lilly 常数,通常值在 0.1 到 0.2 之间。

使用 Smagorinsky-Lilly 涡流粘度模型时需要一个值。

Real

None

viscosity.eddy.WALE.constant

WALE 涡流粘度模型常数。

Real

0.325

viscosity.suspension

指定形式为 \(\mu_{susp}=\mu_{mol}(\mu^* - 1)\)

悬浮粘度模型。

可用选项包括:

  • None 无涡流悬浮模型 \(\mu^*=1\)

  • Einstein [Ein11] \(\mu^*=1 + 2.5\varepsilon_s\)

  • Brinkman [Bri52, DGGP07] \(\mu^*=(1-\varepsilon_s)^{-c}\)

  • Roscoe [KD59, MP56, Ros52] \(\mu^*=(1-\varepsilon_s/c_1)^{-c_2}\)

  • ChengLaw [CL03] \(\mu^*=e^{2.5(1/(1-\varepsilon_s)^c-1)/c}\)

String

None

viscosity.suspension.Brinkman.constant

Brinkman 悬浮表达式中的指数常数。

使用 Brinkman 模型时需要一个值。

Real

None

viscosity.suspension.Roscoe.c1

Roscoe 悬浮表达式中的最大填充常数。

使用 Roscoe 模型时需要一个值。

Real

None

viscosity.suspension.Roscoe.c2

Roscoe 悬浮表达式中的指数常数。

使用 Roscoe 模型时需要一个值。

Real

None

viscosity.suspension.ChengLaw.constant

ChengLaw 悬浮表达式中的指数常数。

使用 ChengLaw 模型时需要一个值。

Real

None

species

指定构成流体的物质。

所有列出的物质必须正确定义。有关更多详细信息,请参阅 species definition documentation

String

None

molecular_weight

常数流体分子量。

只有在使用 理想气体 约束且未求解物质方程时才应定义分子量。

Real

0

specific_heat

指定使用哪种流体比热模型。 可用选项包括:

  • constant - 流体具有恒定的比热

  • NASA7-poly 流体比热由低温(T < 1000K)多项式和高温 (T > 1000K)多项式定义。

    NASA7 多项式格式:

    \(c_p(T) = \sum_{i=0}^5 a_iT^i\)

  • mixture - 从 species specific heats 和局部物质质量分数计算 混合物 比热。

    \(c_{p,\mathrm{mixture}} = \sum_n X_n c_{p,n}\)

如果对流焓,则需要比热模型。此外,如果求解物质方程,

则模型必须是 mixture

String

None

specific_heat.constant

常数流体比热。 constant 比热模型需要一个值。

Real

0

specific_heat.NASA7.a[i]

比热多项式系数。如果流体比热模型是 NASA7-poly, 则需要多项式系数。

每个多项式由六个系数( a0 ,…, a5 )定义,每个系数需要两个值。 第一个值是低温多项式系数(T < 1000K), 第二个是高温多项式系数(T > 1000K)。 总共需要十二个系数。

Real

thermal_conductivity

指定使用哪种流体导热模型。 可用选项包括:

  • constant - 流体具有恒定导热模型

如果对流焓,则需要导热模型。

String

None

thermal_conductivity.constant

常数流体导热率。 constant 导热模型需要一个值。

Real

0

thermodynamic_pressure

热力学压力。 使用 IdealGasClosedSystem 约束时需要一个值。如果使用 IdealGasOpenSystem 约束,则该值必须匹配所有指定的流出压力。

Real

0

reference_temperature

用于计算比焓的参考温度。

Real

示例输入

不可压缩流体

以下设置显示如何定义最基本的流体模型,其中唯一需要的物理特性是流体粘度。我们使用 IncompressibleFluid 约束;因此,常数 流体密度由初始和边界条件定义。流体能量和物质方程未求解。

列表 5 定义简单不可压缩流体的输入片段。这不是完整的输入文件。
mfix.constraint_type = IncompressibleFluid

mfix.advect_density  = 0
mfix.advect_enthalpy = 0
mfix.solve_species   = 0


# 流体模型设置
# -----------------------------------------------------------------------
fluid.solve = fluid0

fluid.viscosity.molecular = constant
fluid.viscosity.molecular.constant = 1.8e-5


# 初始条件
# -----------------------------------------------------------------------
ic.regions = full-domain

ic.full-domain.fluid0.volfrac   =  1.0
ic.full-domain.fluid0.density   =  1.0

ic.full-domain.fluid0.velocity  =  0.0  0.0  0.0


# 边界条件
# -----------------------------------------------------------------------
bc.regions = inlet  outlet

bc.inlet = mi
bc.inlet.fluid0.volfrac  =  1.0
bc.inlet.fluid0.density  =  1.0

bc.inlet.fluid0.velocity =  1.0e-8  0.0  0.0

bc.outlet = po
bc.outlet.fluid0.pressure =  0.

简单理想气体

在以下示例中,我们使用 IdealGasOpenSystem 以便流体密度根据理想气体状态方程计算。除了粘度,我们还必须提供流体的分子量。流体能量和物质方程未求解,但在初始和边界条件中需要 常数 流体温度以完全指定状态方程。最后,流出边界压力在评估状态方程时被视为热力学压力。

列表 6 定义简单理想气体的输入片段。这不是完整的输入文件。
mfix.constraint_type = IdealGasOpenSystem

mfix.advect_density  = 1
mfix.advect_enthalpy = 0
mfix.solve_species   = 0


# 流体模型设置
# -----------------------------------------------------------------------
fluid.solve = fluid0

fluid.viscosity.molecular = constant
fluid.viscosity.molecular.constant = 1.8e-5

fluid.molecular_weight = 29.0e-3


# 初始条件
# -----------------------------------------------------------------------
ic.regions = full-domain

ic.full-domain.fluid0.volfrac   =  1.0

ic.full-domain.fluid0.velocity  =  0.0  0.0  0.0

ic.full-domain.fluid0.temperature = 300.0


# 边界条件
# -----------------------------------------------------------------------
bc.regions = inlet  outlet

bc.inlet = mi
bc.inlet.fluid0.volfrac  =  1.0

bc.inlet.fluid0.velocity =  1.0e-8  0.0  0.0

bc.inlet.fluid0.temperature = 300.0

bc.outlet = po
bc.outlet.fluid0.pressure =  101325.

带能量的理想气体

在最后一个示例中,我们使用 IdealGasOpenSystem,然而与之前的演示不同,能量方程被求解。因此,我们必须定义流体的粘度、分子量、导热率和比热。同样,在初始和边界条件中需要流体温度,流出边界压力被视为系统的热力学压力。

列表 7 定义带能量的理想气体的输入片段。这不是完整的输入文件。
mfix.constraint_type = IdealGasOpenSystem

mfix.advect_density  = 1
mfix.advect_enthalpy = 1
mfix.solve_species   = 0


# 流体模型设置
# -----------------------------------------------------------------------
fluid.solve = fluid0

fluid.viscosity.molecular = constant
fluid.viscosity.molecular.constant = 2.0e-5

fluid.thermal_conductivity = constant
fluid.thermal_conductivity.constant = 0.026

fluid.molecular_weight = 28.96518e-3

fluid.specific_heat = NASA7-poly

fluid.specific_heat.NASA7.a0 =  5.95960930E+00   3.08792717E+00
fluid.specific_heat.NASA7.a1 =  3.56839620E+00   1.24597184E-03
fluid.specific_heat.NASA7.a2 = -6.78729429E-04  -4.23718945E-07
fluid.specific_heat.NASA7.a3 =  1.55371476E-06   6.74774789E-11
fluid.specific_heat.NASA7.a4 = -3.29937060E-12  -3.97076972E-15
fluid.specific_heat.NASA7.a5 = -4.66395387E-13  -9.95262755E+02


# 初始条件
# -----------------------------------------------------------------------
ic.regions = full-domain

ic.full-domain.fluid0.volfrac   =  1.0

ic.full-domain.fluid0.velocity  =  0.0  0.0  0.0

ic.full-domain.fluid0.temperature = 300.0

# 边界条件
# -----------------------------------------------------------------------
bc.regions = inlet  outlet

bc.inlet = mi
bc.inlet.fluid0.volfrac  =  1.0

bc.inlet.fluid0.velocity =  1.0e-8  0.0  0.0

bc.inlet.fluid0.temperature = 300.0

bc.outlet = po
bc.outlet.fluid0.pressure =  101325.

以下输入使用 fluid 前缀定义,并控制用于从焓和比热计算温度的阻尼牛顿求解器的收敛标准。

描述

类型

默认值

newton_solver.absolute_tol

定义牛顿求解器的绝对容差

Real

1.e-8

newton_solver.relative_tol

定义牛顿求解器的相对容差

Real

1.e-8

newton_solver.max_iterations

定义牛顿求解器的最大迭代次数

int

500