fluent并行分割网格方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 网格分割的一般方法
在用Fluent 的并行求解器时,需要将网格细分割为几组单元,以便在分离处理器上求解将未分割的网格读入并行求解器里,可用系统默认的分割原则(推荐使用)还可以在连续求解器里或将mesh 文件读入并行求解器后自己分割。

在建立问题(定义模型、边界条件等)之前或之后分割网格都可以,不过,由于某些模型的特点(象非等形接触面、滑移网格、
shell-conduction encapsulation 的自适应),最好是在建立问题后。

!!如果case 文件含有滑移网格或非等形接触面,要在计算过程中进行自适应,因此要用连续求解器分割。

值得注意的是计算节点间的相关单元的分布在网格自适应时要保持不变,除非是非等形接触面,这样在自适应后就不必重新分割了。

若在网格分割前用连续求解器建立问题,用于此项工作的计算机必须有足够大的内存来读入网格。

如果网格太大,不能读进连续求解器,可将未分割的网格直接读入并行求解器里(使用所有被定义主机的内存),然后让并行机自动分割。

在这种情况下,你将在做一个初步网格分割后建立问题。

如果必要可以手工再重新分割一次。

2 自动分割网格
在将case 文件读入并行求解器之前选用两分法或是其他网格分割方法来自动分割网格。

对一些方法,可预览来确定是否为最佳的网格分割,注意case 文件中含有滑移网格或非等形接触面,在计算过程中要自适应,则需要在连续求解器中分割此文件,然后再把它读入并行求解器,在Auto Partition Grid 控制面板上选择Case File 选项。

并行求解器上自动网格分割的步骤如下:
1. (任选)在菜单栏上点Parallel Auto Partition...,弹出Auto Partition Grid 控制面板设置分割参数。

读入mesh 文件或case 文件时如果没有获取分割信息,那就保持Case File 选项开启,Fluent 会用Method 下拉菜单里的方法分割网格。

设置分割方法和相关选项的步骤如下:
a) 关闭Case File 选项,就可选择控制面板上的其他选项。

b) 在Method 下拉菜单里选取两分方法。

c) 可为每个单元分别选取不同的网格分割方法,也可以利用Across Zones 让网格分割穿过区域边界。

推荐不采用对单元进行单独分割(关闭Across Zones 按钮),除非是溶解过程需要不同区域上的单元输出不同的计算信息(主区域包括固体和流体区域)。

d) 若选取Principal Axes 或Cartesian Axes 方法,可在实际分割之前对不同两分方向进行预测试以提高分割性能。

用预检则开启Pre-Test 选项。

e) 点击OK。

如果case 文件已经网格分割,且网格分割的数量和计算节点数一样,那就可以在Auto Partition Grid 控制面板上默认选择Case File 选项,这会让Fluent 在case 文件中应用分割。

2. 读入case 文件,方法是在菜单栏上选File Read Case...。

自动分割过程的报告
当网格自动分割时,有关分割进程的信息就会被显示在控制窗口上。

如果想需要额外信息,可在分割完成后,选Parallel Partition...,弹出Partition Grid 控制面板,打印报告。

在Partition Grid 控制面板上点击Print Active Partitions 或Print Stored Partitions 时,Fluent 会在控制窗口里显示分割ID、单元数、面数、接触面数和每个活动或已储存分割的接触面曲率,还可以显示最小和最大的单元、面、接触面和面曲率变量
3 手动分割网格
在网格分割时推荐使用并行求解器上的自动分割,也可在连续求解器或并行求解器上手动分割。

在自动或
手动分割后,可以检查生成的分割,如果必要可重新分割。

在连续或并行求解器里,利用Partition Grid 也可同样作。

已分割的网格也可毫无损失的在连续求解器里使用。

分割网格的指导方针
手动分割网格时推荐采用如下步骤:
1. 用默认的两分方法(Principal Axes)和优化方法(Smooth)分割网格。

2. 检查分割统计表在开启负载平衡(单元变化)时,主要是使球形接触面曲率和接触面曲率变量最小。

如果统计表不能使用,可尝试其他的两分方法。

3. 一旦确定问题所采用的最佳两分方法,如需要就可以开启Pre-Test 提高分割质量。

4. 如需要可用Merge 优化提高分割质量
分割网格,需要选择生成网格分割的两分方法、设置分割数、选择区域和记录、以及所使用的优化方法等。

对某些方法可采用预测试的方法以选择最好的两分方法。

一旦在Partition Grid 控制面板上设置了所有你都满意的参数,点Partition 按钮,将网格用所选的两分方法和优化方法分割成所需要的数量。

在菜单栏上选Parallel Partition...,弹出Partition Grid 控制面板,可在上面设置所有相关的输入参数。

1. 在Method 下拉菜单里选取两分方法。

2. 在Number 里设置你想要分割的整数值。

可以用计数箭头来增加或减小这个值,也可直接键入某整数值。

此数值必须是整数,且是并行计算处理器数的倍数。

3. 可为每个单元分别选取不同的网格分割方法,也可以利用Across Zones 让网格分割穿过区域边界。

推荐不采用对单元进行单独分割(关闭Across Zones 按钮),除非是溶解过程需要不同区域上的单元输出不同的计算信息(主区域包括固体和流体区
域)。

4. 如果你想单元将mesh 里所有的非等形网格接触面都围绕起来,并且在计算的过程中始终在同一个分割里,可选择Encapsulate Grid Interfaces。

当有滑移或网格被调整时,网格接触面必须被压缩,则当前网格为滑移网格时,Encapsulate Grid Interfaces 选项总是被选中的。

如果case 文件中含有在计算过程中自适应的非等形接触面,就不得不在连续求解器中选择Encapsulate Grid Interfaces 和Encapsulate for Adaption 选项来分割它。

5. 如果在连续求解器中选择Encapsulate Grid Interfaces 选项,Encapsulate forAdaption 选项也被选中了。

当选中此选项时,单元附加层将被压缩,因此并行时就不必进行单元传递了。

6. 可用Optimizations 下的选项来激活和控制想采用的优化方法。

通过选中Do 按钮来激活Merge 和Smooth 格式。

可为每个格式选择Iterations 数。

当遇到合适的标准或迭代最大数已被执行完时就会应用每一个优化格式。

若Iterations 数为0,则一完成就会应用优化格式,而没有迭代最大数的限制。

7. 若选取Principal Axes 或Cartesian Axes 方法,可在实际分割之前对不同两分方向进行预测试以提高分割性能。

用预检则开启Pre-Test 选项。

8. 在Zones 和Registers 列表里,选择所想分割的分区和记录表。

大多数情况下,选择所有的Zones (默认)分割整个区域,详细说明在下面介绍。

9. 点击Partition 按钮分割网格。

10. 若感觉新的分割比先前的(网格已被分割)更好,可点击Use Stored Partitions 按钮激活上次存储的单元分割(保存一个case 文件就会存储最后一次进行的单元分割),用于当前的计算中。

用区域或记录表分割
对单元分区和记录表的分割约束性可使你对一个域的子域采用不同的分割方法。

例如,你的几何形状包含一个连接到矩形管道的圆柱实体,则可以用Cylindrical Axes 方法分割圆柱体,用Cartesian Axes 方法分割矩形管道。

如果圆柱体和矩形管道位于不同的单元区域,可一次选一个作所需的分割。

如果它们不是在两个不同的单元区域,就可以用函数为每个区域标记调整后的单元,生成一个单元记录表(基本上是一个单
元列表)。

这些函数根据物理位置、单元体积、某变量的梯度和等值、及
其他参数标记单元。

!!使用Fluent 的并行版本或分割方法选用Metis 时不能使用分区和记录表分割网格。

分割报告
若网格已被分割,和分割程序有关的信息就会显示在控制窗口里。

默认情况下,求解器打印产生的分割数,单元、面、接触面和面曲率变量的最小值和最大值。

如果将Verbosity从默认的1 增加到2,所用分割方法,分割ID,单元、面和接触面的数量,以及每个分割上的接触面的曲率也会显示在控制窗口上。

如果将Verbosity 减小到0,仅有产生的分割数和分割所需时间被显示。

若分割完成后也可以将一部分信息显示出来。

在并行求解器上点Print Active Partitions或Print Stored Partitions,Fluent 就会在控制窗口上显示分割ID,单元、面和接触面的数量,以及每个活动或存储的分割上的接触面的曲率。

在连续求解器上Print Partitions,也可获取相同的信息。

!!再次提醒:若感觉新的分割比先前的(网格已被分割)更好,可点击Use StoredPartitions 按钮激活上次存储的单元分割(保存一个case 文件就会存储最后一次进行的单元分割),用于当前的计算中。

重新设置分割参数
如果想修改所设置的分割参数,通过点Default 按钮就会返回到Fluent 默认的设置,Default 按钮被点后就会变为Reset 按钮。

Reset 可使你返回到最近保存的设置(象点Default按钮前设置的数值),被点后就会变为Default 按钮
4 网格分割方法
并行程序的网格分割有三个主要目标:
?生成等数量单元的网格分割。

? 使分割的接触面数最小――减小分割边界面积。

? 使分割的邻域数最小。

平衡分割(平衡单元数)可确保每个处理器有相同的负载,分割被同时传输。

既然分割间的传输是强烈依赖于时间的,那使分割的接触面数最小就可以减少数据交换的时间。

使分割的邻域数最小,可减少网络繁忙的机会,而且在那些初始信息传输比较长信息传输更耗时间的机器来说尤为重要,特别是对依靠网络连接的工作站来说非常重要。

Fluent 里的分割格式是采用两分的原则来进行的,但不象其他格式那样需要分割数,它对分割数没有限制,对每个处理器都可以产生相同分割数(也就是分割总数是处理器数量的倍数)。

两分法
网格采用两分法则进行分割。

被选用的法则被用于父域,然后利用递归应用于子域。

例如,将网格分割成四部分,求解器将整个区域(父域)对分为两个子域,然后对每个子域进行相同的分割,总共分割为四部分。

若将网格分割成三部分,求解器先将父域分成两部分――一个大概是另一个的两倍大――然后再将较大子域两分,这样总共就分为三部分。

网格可用下列的任一方法进行分割。

最有效的方法是和求解问题有关的,所以可试用不同的方法,直至某一个适合所求解问题。

Cartesian Axes:两分基于笛卡儿坐标系的单元区域它两分父域,所有子域都垂直于活动区域最长轴方向。

因此也被称为坐标两分。

Cartesian Strip:采用坐标两分,但严格垂直于父域最长轴方向。

可用这种方法使分割邻域数最小。

Cartesian X-, Y-, Z- Coordinate:两分基于所选笛卡儿坐标系的区域。

它两分父域,所有子域都垂直于指定方向。

Cartesian R Axes:两分区域,使得从单元中心到笛卡儿轴(x,y 或z)的径向距离最短,这样开始接触面积最小。

此种方法限用于3D 情况。

Cartesian RX-, RY-, RZ-Coordinate:两分区域,使得从单元中心到所选笛卡儿轴(x,y 或z)的径向距离最短。

此种方法限用于3D 情况。

Cylindrical Axes:两分基于单元柱坐标系的区域,此方法限用于3D 情况。

Cylindrical R-, Theta-, Z-Coordinate:两分基于所选柱坐标系的区域,此方法限用3D 情况。

Metis:用METIS 软件包分割不规则图形,这是由Army HPC 研究中心和Minnesota 大学的Karypis 和Kumar 提出的。

它采用多级近似将精细图形上的点和边结合形成一副粗糙的图形,这副粗糙图被分割,再回复到原始图形。

在使变粗糙和恢复的过程中,此方法被用于高质量分割。

!!值得注意的是用socket 版本(-pnet)时,不能用METIS 进行分割。

在这种情况下,可用下面的分割滤波器进行METIS 分割
Polar Axes:两分基于单元极坐标系的区域(见图28.4.9),此方法限用于2D 情况。

Polar R-Coordinate, Polar Theta-Coordinate:两分基于所选极坐标系的区域(见图28.4.9),此方法限用于2D 情况。

Principal Axes:两分基于主轴坐标系的区域若主轴是笛卡儿轴时,即是Cartesian bisection。

此原则也要考虑力矩、惯性矩或惯性力矩。

它是Fluent 里默认的两分方法。

Principal Strip:采用力矩两分,但严格垂直于父域最长主轴方向。

可用这种方法使分割邻域数最小。

Principal X-, Y-, Z-Coordinate:两分基于所选主坐标系的区域。

Spherical Axes:两分基于单元球坐标系的区域,此方法限用于3D 情况。

Spherical Rho-, Theta-, Phi-Coordinate:两分基于球坐标系的区域,此方法限用于3D 情况。

优化
优化可以提高网格分割的质量。

垂直于最长主轴方向的两分方法并不是生成最小接触边界的最好方法,“pre-testing”操作可用于在分割之前自动选择最好的方向。

迭代的优化格式主要有:
光滑
通过分割间交换单元的方式使分割接触面数最小。

此格式贯穿分割边界,如果接触边界面消失就传到相邻分割。

合并
从每个分割中消除孤串。

一个孤串就是一组单元,组里的每个单元至少都有一个面是接触边界。

孤串会降低网格质量,导致大量传输损失。

一般,Smooth 和Merge 是相对比较节省资源的优化方法。

预测试
如果选Principal Axes 或Cartesian Axes 方法,可在实际分割之前对不同两分方向进行预测试以提高分割性能。

如果不用预测试(默认),Fluent 会采用垂直于长主轴方向的两分法。

如果选用预测试,在Partition Grid 控制面板上点Partition 按钮或用自动分割读入网格时都会自动运行预测试。

它将测试所有的坐标方向,最后选择使分割接触面最少的两分法。

使用预测试将增加分割所需的时间。

相比不进行预测试,对2D 问题将增加3 倍时间,对3D 问题将增加4 倍时间。

使用分割过滤器象上面提到的,在Auto Partition Grid 和Partition Grid 控制面板里可使用通过过滤器的METIS 分割方法。

对未分割的网格使用METIS 分割方法,在菜单栏选File Import--Partition Metis...,Fluent 就会用METIS 分割网格,然后将分割读入求解器。

分割数要和处理器数相等,然后再进行模型定义和求解。

!!直接通过分割过滤器引入到并行求解器里需要主机有足够的内存运行。

否则在单机上运行就需要单机有足够的内存。

可以在有足够内存的机器上启动并行求解器,重复上面的步骤,也可以在新机器上手动运行过滤器,然后再将分割的网格读入主机上的并行求解器。

用分割过滤器手动分割网格,使用如下命令:
utility partition input-filename partition-count output-filename
其中input-filename 是要被分割网格的文件名,partition-count 是需要分割的数量,output-filename 是被分割网格的文件名。

然后就可以将分割的网格读入求解器(使用标准的File/Read/Case...菜单方式),再进行模型定义和求解。

用File/Import/Partition/Metis...将一个未分割的网格引入并行求解器里,METIS 分割整个网格。

也可
File/Import/Partition/Metis Zone...单独分割每个单元分区。

这种方法可用于平衡工作负载。

例如,如果一个case 有一个流体分区和一个固体分区,则单独分割每个分区会使工作负载更平衡。

5 检查分割
分割网格后,要查看分割信息,并从图形上检查分割。

解释分割统计表
自动或手动分割完成后需要显示报告。

在并行求解器里,在Partition Grid 控制面板里点Print Active Partitions 或Print Stored Partitions 按钮,在连续求解器里点Print Partitions按钮。

Fluent 在并行时是区分活动单元分割和存储单元分割这两种单元分割格式的。

初始两者都被设为读入case 文件建立的单元分割。

如果用Partition Grid 重新分割网格,新的分割就是指存储单元分割。

要是其成为活动分割,在Partition Grid 控制面板上选Use StoredPartitions 按钮。

活动单元分割被用于当前计算中,而存储单元分割用于保存一个case 文件情况。

这种区别可让我们在某一台机器或网络上分割一个case,而在另一台机器上求解它。

基于这两种格式的区别,在不同的并行机上,可以用一定数量的计算节点将网格划分为任意不同个数的分割,保存case 文件,再将它加载到指定机器上。

在连续求解器里选Print Partitions,就可获得存储分割的信息。

由分割程序产生的输出包括递归的划分和迭代优化程序的信息。

它是最后分割网格的信息,包括分割ID,单元数、面数、接触面数、每个分割上接触面的曲率、相邻分割数,以及单元、面、接触面、邻域、平均单元、面曲率和球面曲率变量。

球面曲率变量指的是当前分割的各个量的最小值和最大值。

例如,在下面例子中,分割0 和3 有最小的接触面数(10),分割1 和2 有最大的接触面数(19),因此这个变量是10-19。

开启负载平衡时,就是要使接触面曲率变量和球接触面曲率的值较小。

>> Partitions:
P Cells I-Cells Cell Ratio Faces I-Faces Face Ratio Neighbors
0 134 10 0.075 217 10 0.046 1
1 137 19 0.139 22
2 19 0.086 2
2 134 19 0.142 218 19 0.087 2
3 137 10 0.073 223 10 0.045 1
------
Partition count = 4
Cell variation = (134 - 137)
Mean cell variation = ( -1.1% - 1.1%)
Intercell variation = (10 - 19)
Intercell ratio variation = ( 7.3% - 14.2%)
Global intercell ratio = 10.7%
Face variation = (217 - 223)
Interface variation = (10 - 19)
Interface ratio variation = ( 4.5% - 8.7%)
Global interface ratio = 3.4%
Neighbor variation = (1 - 2)
Computing connected regions; type ^C to interrupt.
Connected region count = 4
将一个case 文件读入并行求解器里,分割ID 要和计算节点ID 相对应。

当一个case 文件里的分割数要比计算节点数大时,假如M 是分割数和计算节点数的比例,则计算节点0上的分割ID 为0-(M-1),计算节点1 上的分割ID 为M-(2M-1),依此类推。

在图形上检查分割要进一步获得分割信息,选择Display Contours...,可以绘出网格分割的等值图。

要显示活动单元分割或存储单元分割,选择Contours Of 下拉列表里的Cell Info...,然后选Active Cell Partition 或Stored Cell Partition,并关闭Node Values 的显示!!如果还没有建立问题,为了应用Contours 就需要进行求解初始化。

6 负载分布
如果用于并行计算的处理器的速度明显不同,可在菜单栏上打开parallel partitionset load-distribution,为分割设置一个负载分布。

例如,在三个节点上计算,其中一个比另外两个速度要快两倍,那就可以为速度快的机器分配两倍于另外两台机器的单元数(负载矢量为(2 1 1)),则在网格分割时,分割0 将会分割的单元数是分割1 和2 的两倍。

对上例,因为分割0 要分割的单元数是其他的两倍,所以速度快的机器将被映射为节点0。

否则,也可以使用负载平衡,让Fluent 自动消除计算节点间的负载差异。

!!如果一个网格含有非等形接触面,要重新平衡计算节点间的负载,就要在修改后保存case 和data 文件,然后将case 和data 文件读入连续求解器,在Partition Grid 控制面板上选用Encapsulate Grid Interfaces 和Encapsulate for Adaption 重新分割,再次保存case 和data 文件。

如何手动将case 和data 文件读入并行求解器,从上次停止的地方继续计算。

7 检测并提高并行性能
想了解并行计算的性能到底怎样,可通过执行观测窗口来观测计算时间、信息传输时间和并行效率。

为了优化并行机,可利用Fluent 自带的负载平衡来控制计算节点间的信息量。

7.1 检测并行性能
执行观测窗口可报告所剩计算时间,以及信息传输的统计表。

执行观测窗口总是被激活的,也可在计算完成后通过打印来获取统计表。

要观看当前的统计表,在菜单栏上选菜单Parallel/Timer/Usage。

执行统计表也可用文本处理器打开。

在菜单栏上选菜单Parallel/Timer/Reset,清除执行表可以在将来的报告中删除过去的统计信息。

7.2 优化并行求解器
增加报告间隔在Fluent 里,通过增加残差printing/plotting 或其他求解追踪报告的间隔减少信息传输,提高并行性能。

点Solve Iterate...,在弹出的Iterate 控制面板里修改Reporting Interval的值即可。

!!注意要等到每个报告间隔结束才能中断迭代。

负载平衡
Fluent 里有动态负载平衡的功能。

用并行程序的主要原因是减小模拟的变化时间,理想
情况它是和计算源的总速度成比例的。

例如,如果你用4 台CPU 求解你的问题,并且假定
CPU 之间需要很少的的数据传输,所有CPU 的速度都是一样的,都用于计算这个问题,一
般希望变化时间减少到四分之一,这当然是理想情况,实际上是不可能的。

例如,CPU 的
速度根据工作平台的机器类型不同而变化,其他的任务用一个或几个CPU 即将完成,在并
行求解器之间的或外源引起的网络堵塞都会延迟一些CPU 之间必要的信息传输。

如果激活Fluent 里的动态负载平衡,计算源和网络源的负载会被周期性的监控。

如果
负载平衡器确定可通过再分配计算节点间的单元来提高性能,它就会自动将其提高。

负载平
衡本身有时间延迟,所以默认它是关闭的。

如果你用一个专用同类源,或采用不同类源但在
网格分割过程中通过设置负载分布已考虑CPU 速度之间的差异,那就不需要用负载平衡了。

!!如果此时的接触面是非等形的,或采用壳传导模型,是不能开启负载平衡的。

点击Parallel Load Balance...,打开Load Balance 控制面板用以激活和
控制Fluent 的自动负载平衡。

负载平衡会自动检测和分析并行性能,然后通过将已存在计算节点间单元的再分配来优化并行性能。

使用负载平衡的操作步骤如下:
1. 开启Load Balancing 选项。

2. 在Partition Method 下拉菜单里选择对分(bisection)方法(见28.4.4 节)产生新的网格
分割。

作为自动负载平衡程序的一部分,可用特定的方法将网格重新细分。

这样的
分割被分配在计算节点之间以获得平衡的负载。

3. 设置所需的Balance Interval。

如果其值为0,Fluent 会自己为其去一个最佳值,初
始是用25 次迭代的间隔。

取一个非零值就可以限制其行为。

然后Fluent 会在每N
步之后进行一次负载平衡,N 就是设置的Balance Interval。

要选择一个足够大的间
隔以平衡由于进行负载平衡所付出的。

你可以在任何时候中断计算,关掉(或开启)负载平衡,然后继续计算。

相关文档
最新文档