指定几何形状
以下输入使用 mfix
前缀定义。
描述 |
类型 |
默认值 |
|
---|---|---|---|
geometry |
指定模拟几何形状。
如果没有定义,则系统应为完全周期性的,或 应使用 planar regions 封闭域。 |
String |
‘’ |
levelset__refinement |
相对于 0 级分辨率的 levelset 分辨率的细化因子 |
Int |
1 |
大多数模拟要求用户指定某种几何形状。例如,几何形状可以是用于建模管道内流动的基本圆柱体,也可以是不规则形状的固体,用于研究钝体周围的外部流动,或者几何形状可以是正在进行性能评估的复杂多级化学反应器的拟议设计。在以下部分中,将描述几种指定几何形状的选项。
小心
任何非周期性或未定义为 Dirichlet 或 Neumann boundary condition 的域范围必须完全覆盖。 换句话说,如果一个域范围不是周期性的或流入或流出边界条件,则它应该被嵌入的边界几何形状排除在域之外。
预定义几何形状
使用 mfix.geometry
输入来选择基本预定义几何形状之一,或选择使用由 AMReX 原生隐函数构建的用户定义几何形状的选项。
box
几何形状
以下输入使用 box
前缀定义。
描述 |
类型 |
默认值 |
|
---|---|---|---|
Lo |
嵌入边界框的低角 |
Reals |
|
Hi |
嵌入边界框的高角 |
Reals |
|
internal_flow |
表示流动在框内部的标志 |
Bool |
true |
offset |
通过 |
Real |
1.0e-15 |
box
限制
预定义的嵌入边界 box
几何形状有几个限制:
框的侧面不应与域范围重合。
box
是与坐标轴对齐的,不能在任何方向上旋转。只能有一个
box
。无法定义和组合多个框。
box
示例
域是一个 \(2 \times 2 \times 8\) 的长方体,其中 X 和 Y 跨越 \([-1,1]\),而 Z 跨越 \([0,8]\)。一个长 \(10\) 米,截面为 \(1 \times 1\) 的嵌入边界 box
纵向穿过域,中心在 Z 轴上。嵌入边界沿 Z 轴向下移动,使得在低 Z 和高 Z 域面上有一个 \(-1\) 米的悬垂。
# 定义周期性和域范围
# -------------------------------------------------------------
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 渲染,中心和右图分别是沿 XZ 和 XY 平面的 2D 切片。

图 1 使用预定义嵌入边界 box
几何形状的示例,其中嵌入边界着色为蓝色,域着色为灰色。
左:域和嵌入边界以 3D 方式呈现。
中:显示 XZ 平面的 2D 切片。
右:显示 XY 平面的 2D 切片。
这是一个内部流动设置,因此与嵌入边界 box
不相交的域部分被 覆盖,因此不包括在运行时计算中。
不需要为 X 和 Y 中的低域和高域面设置 boundary conditions,因为它们是完全覆盖的。
低和高 Z 域面仍未覆盖,但不需要边界条件,因为域在 Z 中是周期性的 ( 参见 此示例的 inputs snippet )。
cylinder
几何形状
以下输入使用 cylinder
前缀定义。
描述 |
类型 |
默认值 |
|
---|---|---|---|
radius |
圆柱体半径 |
Real |
0.0002 |
height |
圆柱体的高度(长度)。如果未定义高度(-1),则圆柱体将延伸为 无限长以超出域范围。 |
Real |
-1 |
direction |
圆柱体沿着的轴。
( |
int |
0 |
center |
圆柱体的中心。对于未定义 |
Reals |
|
rotation |
圆柱体的旋转角度(以度为单位)。
|
Real |
|
rotation_axe |
围绕哪个轴旋转圆柱体。
( |
int |
0 |
internal_flow |
表示流动在框内部的标志 |
Bool |
true |
预定义的 cylinder
嵌入边界几何形状的输入如 图 2 所示。

图 2 预定义的嵌入边界 cylinder
几何形状输入的示例,其中圆柱体几何形状为蓝色,域为灰色。
cylinder
限制
预定义的嵌入边界 cylinder
几何形状有几个限制:
cylinder
的末端不应与域范围重合。cylinder
应比域短,或足够长以超出域的末端。旋转是围绕单个轴进行的。
只能有一个
cylinder
。无法定义和结合多个圆柱体。
cylinder
示例
域是一个 \(4 \times 1 \times 1\) 的长方体,其中 Y 和 Z 跨越 \([0,1]\),而 X 跨越 \([0,4]\)。一个嵌入边界 cylinder
半径为 \(0.45\),纵向穿过域,分别在 Y 和 Z 偏移 \([0.5]\)。圆柱体未指定长度,因此它超出了低 X 和高 X 域面。
# 定义周期性和域范围
# -------------------------------------------------------------
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 渲染,中心和右图分别是沿 XZ 和 YZ 平面的 2D 切片。

图 3 使用预定义嵌入边界 cylinder
几何形状的示例,其中嵌入边界着色为蓝色,域着色为灰色。
左:域和嵌入边界以 3D 方式呈现。
中:显示 XZ 平面的 2D 切片。
右:显示 YZ 平面的 2D 切片。
这是一个内部流动设置,因此与嵌入边界 cylinder
不相交的域部分被 覆盖,因此不包括在计算中。
不需要为 Y 和 Z 中的低域和高域面设置 boundary conditions,因为它们是完全覆盖的。
低和高 X 域面仍未覆盖,因此需要边界条件才能完全指定问题。示例边界条件包括低 X 面上的质量流入和高 X 面上的压力流出。
generic
几何形状
generic
几何选项用于选择用户编程的嵌入边界几何形状。
用户可以在
src/eb/mfixeb_generic.cpp
中使用AMReX
原生隐函数和操作编写自定义嵌入边界几何形状。编译包含几何修改的可执行文件。
使用
generic
输入访问几何形状。
备注
对此功能的完整描述超出了本节的范围。文档的未来更新可能会包括一个教程,以更好地演示此功能。
区域和边界条件
可以通过组合平面 regions 和无滑移墙 boundary conditions 创建简单的几何形状。使用此方法时,mfix.geometry
和 mfix.geometry_file
输入应保持未定义状态。
在以下示例中,域在 x- 和 z- 方向上是周期性的;因此,墙壁只需覆盖低和高 xz 面。首先,在 regions
部分中定义 wall1
和 wall2
,然后使用它们来指定两个无滑移墙边界条件。
# 定义周期性和域范围
# -------------------------------------------------------------
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 |
备注
对此功能的完整描述超出了本节的范围。文档的未来更新可能会包括一个教程,以更好地演示此功能。