网格、网格划分和块

网格

Level-0 网格

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

描述

类型

默认值

max_level

最大细化级别。默认值为 0,表示整个域被一个单一的网格大小覆盖(即单层)。

int

0

n_cell

在每个坐标方向上第 0 级的单元数

ints

0 0 0

第 0 级网格间距通过将 域长度 除以单元数来计算。网格间距要求在所有方向上相同:

\[\frac{\text{prob_hi[0] - prob_lo[0]}}{\text{n_cell[0]}} = \frac{\text{prob_hi[1] - prob_lo[1]}}{\text{n_cell[1]}} = \frac{\text{prob_hi[2] - prob_lo[2]}}{\text{n_cell[2]}}\]

单层模拟的网格定义输入在 以下示例 中展示,并在 图 4 中说明。 在此示例中,域是一个 \(4 \times 1 \times 1\) 的长方体,并且在 XYZ 方向上分别有 \(32 \times 8 \times 8\) 个单元。结果是所有三个方向上的均匀网格间距为 \(0.125\) m

列表 4 网格示例输入片段。这不是一个完整的输入文件。
# 定义周期性和域范围
# -------------------------------------------------------------
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 方向上的每个网格必须能被 blocking_factor_x 整除

int

8

blocking_factor_y

Y 方向上的每个网格必须能被 blocking_factor_y 整除

int

8

blocking_factor_z

Z 方向上的每个网格必须能被 blocking_factor_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 加速器时禁用块划分。