网格、网格划分和块
网格
Level-0 网格
以下输入使用 amr
前缀定义。
描述 |
类型 |
默认值 |
|
---|---|---|---|
max_level |
最大细化级别。默认值为 0,表示整个域被一个单一的网格大小覆盖(即单层)。 |
int |
0 |
n_cell |
在每个坐标方向上第 0 级的单元数 |
ints |
0 0 0 |
第 0 级网格间距通过将 域长度 除以单元数来计算。网格间距要求在所有方向上相同:
单层模拟的网格定义输入在 以下示例 中展示,并在 图 4 中说明。 在此示例中,域是一个 \(4 \times 1 \times 1\) 的长方体,并且在 X,Y 和 Z 方向上分别有 \(32 \times 8 \times 8\) 个单元。结果是所有三个方向上的均匀网格间距为 \(0.125\) m。
# 定义周期性和域范围
# -------------------------------------------------------------
geometry.coord_sys = 0 # 笛卡尔坐标系
geometry.is_periodic = 0 0 0 # 每个方向的周期性
geometry.prob_lo = 0. 0. 0 # 物理域的低角。
geometry.prob_hi = 4. 1. 1. # 物理域的高角
# 定义最大细化级别和单元数
# -------------------------------------------------------------
arm.max_level = 0
arm.n_cell = 32 8 8

图 4 单层网格示例。
警告
MFIX-Exa 模拟在非均匀网格上将无法运行。
网格细化
以下输入使用 amr
前缀定义。这些输入控制自动网格细化算法,仅在 amr.max_level > 0
时适用。
描述 |
类型 |
默认值 |
|
---|---|---|---|
grid_eff |
阈值值,确保网格不包含太大比例的未标记单元。 |
Real |
0.7 |
n_error_buf |
控制在定义网格之前标记的单元数。用于确保粗细边界不太靠近标记单元。 |
int |
1 |
小心
网格细化限制:
目前,MFIX-Exa 模拟带有粒子的情况不支持网格细化。
有关自适应网格细化算法的详细信息,请参阅 AMReX 文档。
网格划分
以下输入使用 amr
前缀定义。
描述 |
类型 |
默认值 |
|
---|---|---|---|
max_grid_size_x |
在 X 方向上每个网格的第 0 级最大单元数 |
int |
32 |
max_grid_size_y |
在 Y 方向上每个网格的第 0 级最大单元数 |
int |
32 |
max_grid_size_z |
在 Z 方向上每个网格的第 0 级最大单元数 |
int |
32 |
blocking_factor_x |
X 方向上的每个网格必须能被 |
int |
8 |
blocking_factor_y |
Y 方向上的每个网格必须能被 |
int |
8 |
blocking_factor_z |
Z 方向上的每个网格必须能被 |
int |
8 |
域通过将单元数量除以每个方向上的最大网格大小来分解为*网格*(例如,n_cells[0]/max_grid_size_x
)。
阻塞因子确保网格将足够粗以获得良好的多网格性能;因此,max_grid_size
必须能被相应的 blocking_factor
整除。
备注
AMReX 文档 包含大量关于网格创建和负载平衡的信息。 强烈建议用户阅读相关章节。
块
以下输入使用 fabarray
前缀定义。
描述 |
类型 |
默认值 |
|
---|---|---|---|
mfiter_tile_size |
每个方向上(逻辑)块的最大单元数 |
IntVect |
1024000,8,8 |
以下输入使用 particles
前缀定义。
描述 |
类型 |
默认值 |
|
---|---|---|---|
tile_size |
如果 dual_grid 为 true,则在 ParticleBoxArray 中每个方向上的(逻辑)块的最大单元数 |
IntVect |
1024000,8,8 |
在使用 OpenMP 启用的可执行文件在共享内存机器上运行时, 网格 被细分为 块 并迭代以通过缓存阻塞改善数据局部性。
备注
MFIX-Exa 在使用 GPU 加速器时禁用块划分。