fluent并行分割網格方法
2017-02-21 by:CAE仿真在線 來源:互聯網
原文:http://jingcao830828.blog.163.com/blog/static/1032083362010112113144191/?latestBlog
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 222 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。要選擇一個足夠大的間
隔以平衡由于進行負載平衡所付出的。
你可以在任何時候中斷計算,關掉(或開啟)負載平衡,然后繼續計算
相關標簽搜索:fluent并行分割網格方法 Fluent培訓 Fluent流體培訓 Fluent軟件培訓 fluent技術教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學反應 fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析