指定几何形状

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

描述

类型

默认值

geometry

指定模拟几何形状。

如果没有定义,则系统应为完全周期性的,或 应使用 planar regions 封闭域。

String

‘’

levelset__refinement

相对于 0 级分辨率的 levelset 分辨率的细化因子

Int

1

大多数模拟要求用户指定某种几何形状。例如,几何形状可以是用于建模管道内流动的基本圆柱体,也可以是不规则形状的固体,用于研究钝体周围的外部流动,或者几何形状可以是正在进行性能评估的复杂多级化学反应器的拟议设计。在以下部分中,将描述几种指定几何形状的选项。

小心

任何非周期性或未定义为 Dirichlet 或 Neumann boundary condition 的域范围必须完全覆盖。 换句话说,如果一个域范围不是周期性的或流入或流出边界条件,则它应该被嵌入的边界几何形状排除在域之外。

预定义几何形状

使用 mfix.geometry 输入来选择基本预定义几何形状之一,或选择使用由 AMReX 原生隐函数构建的用户定义几何形状的选项。

box 几何形状

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

描述

类型

默认值

Lo

嵌入边界框的低角

Reals

prob_lo

Hi

嵌入边界框的高角

Reals

prob_hi

internal_flow

表示流动在框内部的标志

Bool

true

offset

通过 +offset-offset 移动低侧和高侧框墙。 此输入的一个示例用法是定义一个 LoHi 等于 prob_loprob_hi 的框。 偏移量略微缩小 box,使墙壁不与域范围重合。

Real

1.0e-15

box 限制

预定义的嵌入边界 box 几何形状有几个限制:

  • 框的侧面不应与域范围重合。

  • box 是与坐标轴对齐的,不能在任何方向上旋转。

  • 只能有一个 box。无法定义和组合多个框。

box 示例

域是一个 \(2 \times 2 \times 8\) 的长方体,其中 XY 跨越 \([-1,1]\),而 Z 跨越 \([0,8]\)。一个长 \(10\) 米,截面为 \(1 \times 1\) 的嵌入边界 box 纵向穿过域,中心在 Z 轴上。嵌入边界沿 Z 轴向下移动,使得在低 Z 和高 Z 域面上有一个 \(-1\) 米的悬垂。

列表 1 预定义的嵌入边界 box 几何形状示例的输入片段。这不是完整的输入文件。
# 定义周期性和域范围
# -------------------------------------------------------------
geometry.coord_sys   =  0            # 笛卡尔坐标
geometry.is_periodic =  0    0   1   # 每个方向的周期性
geometry.prob_lo     = -1.  -1.  0   # 物理域的低角。
geometry.prob_hi     =  1.   1.  8.  # 物理域的高角。

# 选择框几何形状并指定设置
# -------------------------------------------------------------
mfix.geometry = box

box.Lo = -0.5  -0.5  -1.0
box.Hi =  0.5   0.5   9.0

box.offset = 0.

box.internal_flow = true

图 1 展示了(灰色)域和(蓝色)嵌入边界 box 几何形状。左图是设置的 3D 渲染,中心和右图分别是沿 XZXY 平面的 2D 切片。

使用嵌入边界的域

图 1 使用预定义嵌入边界 box 几何形状的示例,其中嵌入边界着色为蓝色,域着色为灰色。 左:域和嵌入边界以 3D 方式呈现。 中:显示 XZ 平面的 2D 切片。 右:显示 XY 平面的 2D 切片。

这是一个内部流动设置,因此与嵌入边界 box 不相交的域部分被 覆盖,因此不包括在运行时计算中。

  • 不需要为 XY 中的低域和高域面设置 boundary conditions,因为它们是完全覆盖的。

  • 低和高 Z 域面仍未覆盖,但不需要边界条件,因为域在 Z 中是周期性的 ( 参见 此示例的 inputs snippet )。


cylinder 几何形状

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

描述

类型

默认值

radius

圆柱体半径

Real

0.0002

height

圆柱体的高度(长度)。如果未定义高度(-1),则圆柱体将延伸为 无限长以超出域范围。

Real

-1

direction

圆柱体沿着的轴。 ( 0 : X, 1 : Y, 2 : Z

int

0

center

圆柱体的中心。对于未定义 height 的圆柱体, 中心值在高度 direction 中可以是任何值。

Reals

rotation

圆柱体的旋转角度(以度为单位)。

  • 只有未定义 height 的圆柱体(即无限长) 可以旋转。

  • 旋转是围绕圆柱体的 center 进行的。

Real

rotation_axe

围绕哪个轴旋转圆柱体。 ( 0 : X, 1 : Y, 2 : Z

int

0

internal_flow

表示流动在框内部的标志

Bool

true

预定义的 cylinder 嵌入边界几何形状的输入如 图 2 所示。

使用嵌入边界的域

图 2 预定义的嵌入边界 cylinder 几何形状输入的示例,其中圆柱体几何形状为蓝色,域为灰色。

cylinder 限制

预定义的嵌入边界 cylinder 几何形状有几个限制:

  • cylinder 的末端不应与域范围重合。 cylinder 应比域短,或足够长以超出域的末端。

  • 旋转是围绕单个轴进行的。

  • 只能有一个 cylinder。无法定义和结合多个圆柱体。

cylinder 示例

域是一个 \(4 \times 1 \times 1\) 的长方体,其中 YZ 跨越 \([0,1]\),而 X 跨越 \([0,4]\)。一个嵌入边界 cylinder 半径为 \(0.45\),纵向穿过域,分别在 YZ 偏移 \([0.5]\)。圆柱体未指定长度,因此它超出了低 X 和高 X 域面。

列表 2 预定义的嵌入边界 cylinder 几何形状示例的输入片段。这不是完整的输入文件。
# 定义周期性和域范围
# -------------------------------------------------------------
geometry.coord_sys   =  0           # 笛卡尔坐标
geometry.is_periodic =  0   0   0   # 每个方向的周期性
geometry.prob_lo     =  0.  0.  0   # 物理域的低角。
geometry.prob_hi     =  4.  1.  1.  # 物理域的高角。

# 选择圆柱几何形状并指定设置
# -------------------------------------------------------------
mfix.geometry = cylinder

cylinder.internal_flow = true

cylinder.radius = 0.45

cylinder.direction = 0
cylinder.center    =  0.0  0.5   0.5

图 3 展示了(灰色)域和(蓝色)嵌入边界 cylinder 几何形状。左图是设置的 3D 渲染,中心和右图分别是沿 XZYZ 平面的 2D 切片。

使用嵌入边界的域

图 3 使用预定义嵌入边界 cylinder 几何形状的示例,其中嵌入边界着色为蓝色,域着色为灰色。 左:域和嵌入边界以 3D 方式呈现。 中:显示 XZ 平面的 2D 切片。 右:显示 YZ 平面的 2D 切片。

这是一个内部流动设置,因此与嵌入边界 cylinder 不相交的域部分被 覆盖,因此不包括在计算中。

  • 不需要为 YZ 中的低域和高域面设置 boundary conditions,因为它们是完全覆盖的。

  • 低和高 X 域面仍未覆盖,因此需要边界条件才能完全指定问题。示例边界条件包括低 X 面上的质量流入和高 X 面上的压力流出。


generic 几何形状

generic 几何选项用于选择用户编程的嵌入边界几何形状。

  • 用户可以在 src/eb/mfixeb_generic.cpp 中使用 AMReX 原生隐函数和操作编写自定义嵌入边界几何形状。

  • 编译包含几何修改的可执行文件。

  • 使用 generic 输入访问几何形状。

备注

对此功能的完整描述超出了本节的范围。文档的未来更新可能会包括一个教程,以更好地演示此功能。

区域和边界条件

可以通过组合平面 regions 和无滑移墙 boundary conditions 创建简单的几何形状。使用此方法时,mfix.geometrymfix.geometry_file 输入应保持未定义状态。

在以下示例中,域在 x-z- 方向上是周期性的;因此,墙壁只需覆盖低和高 xz 面。首先,在 regions 部分中定义 wall1wall2,然后使用它们来指定两个无滑移墙边界条件。

列表 3 使用区域和边界条件创建几何形状的示例。
# 定义周期性和域范围
# -------------------------------------------------------------
geometry.coord_sys   = 0
geometry.is_periodic = 1      0      1
geometry.prob_lo     = 0.     0.     0.
geometry.prob_hi     = 0.01   0.01   0.005

# 定义两个平面区域
# -------------------------------------------------------------
mfix.regions = wall1  wall2

regions.wall1.lo       = 0.000  1.25e-6  0.000
regions.wall1.hi       = 0.010  1.25e-6  0.005

regions.wall2.lo       = 0.000  9.99875e-3  0.000
regions.wall2.hi       = 0.010  9.99875e-3  0.005

# 使用这些区域定义无滑移墙边界
# -------------------------------------------------------------
bc.regions = wall1  wall2

bc.wall1 = nsw
bc.wall1.normal = 0.0  1.0  0.0

bc.wall2 = nsw
bc.wall2.normal = 0.0 -1.0  0.0

小心

强烈建议不要将平面区域定义为与域边界重合。最好像在 上述示例 中那样稍微偏移域指定平面。

构造实体几何(CSG)

  • 可以使用 OpenSCAD 创建构造实体几何。

  • 此选项要求可执行文件以 CSG 支持构建。 有关详细信息,请参阅构建文档。

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

描述

类型

默认值

geometry_filename

定义嵌入边界几何的 CSG 文件

String

‘’

internal_flow

表示流动在框内部的标志

Bool

true

scaling_factor

缩放几何

Reals

translation

平移几何

Reals

备注

对此功能的完整描述超出了本节的范围。文档的未来更新可能会包括一个教程,以更好地演示此功能。

标准三角语言(STL)

  • 可以使用众多 CAD 程序创建标准三角语言(STL)几何。

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

描述

类型

默认值

geometry_filename

定义嵌入边界几何的 STL 文件

String

‘’

scaling_factor

缩放几何

Real

translation

平移几何

Reals

备注

对此功能的完整描述超出了本节的范围。文档的未来更新可能会包括一个教程,以更好地演示此功能。