本發明涉及一種適用于多分辨率粒子法的分層接觸搜索算法,涉及多分辨率粒子數值模型的快速搜索與計算。
背景技術:
1、無網格粒子法因其能自然地處理大位移問題和復雜的邊界條件問題而受到了廣泛的關注,在流體流動模擬中,無網格粒子法將流體域離散成一系列的質點,每個粒子分別攜帶相應的動力學信息,并且粒子的運動可以由核函數覆蓋的鄰近粒子計算得到。
2、光滑粒子法和移動粒子法是目前流體流動模擬中使用最為普遍的兩種無網格粒子法,雖然無網格粒子法能夠很好的應用在流體流動模擬中,但是整體計算量過大也是無網格粒子法的關鍵缺陷;針對上述問題,可以采用多cpu設備計算結合多分辨率粒子方法來提升整體計算效率。
3、多分辨率粒子法將計算區域劃分成不同大小的粒子,在關鍵區域采用高精度的小粒子,在其他區域采用低精度的大粒子,既可以保證計算精度又能提高計算效率;然而多分辨率粒子法由于采用了不同尺寸的粒子,如果仍沿用之前的單一接觸搜索算法會導致計算效率提升有限,甚至會降低計算效率,不能與多分辨率粒子法進行適配。
技術實現思路
1、本發明實施例提供了一種適用于多分辨率粒子法的分層接觸搜索算法,方法設計合理,針對多分辨率粒子法中鄰近粒子的接觸搜索缺陷,將整體計算區域精細劃分為兩種類別的格子,分別對大粒子和小粒子進行定位搜索,根據粒子的物理信息和計算區域的幾何信息確定接觸對來進行定位計算,以精準提升整體計算效率和計算精準度,解決了現有技術中存在的問題。
2、本發明為解決上述技術問題所采用的技術方案是:
3、一種適用于多分辨率粒子法的分層接觸搜索算法,所述分層接觸搜索算法包括以下步驟:
4、s1,讀取流體模型中的大粒子物理信號和小粒子物理信號,讀取高精度區域和低精度區域的幾何信息;
5、s2,結合流體模型整體幾何信息和大粒子尺寸將整個計算區域劃分成多個大格子;結合高精度區域幾何信息和小粒子尺寸,將高精度區域劃分成多個小格子;所述大格子區域和小格子區域能夠重疊設置;
6、s3,將屬于低精度區域的大粒子定位到大格子區域,將屬于高精度區域的小粒子定位到小格子區域;
7、s4,確定計算粒子所屬格子及相鄰格子內所有位于影響半徑內的鄰居粒子,與計算粒子形成接觸對,進行相互作用力的計算,提升整個計算區域的計算效率。
8、所述多分辨率粒子法將計算區域劃分為高精度區域和低精度區域,在高精度區域采用高精度的小粒子,在低精度區域采用低精度的大粒子。
9、讀取流體模型中的大粒子物理信號和小粒子物理信號,讀取高精度區域和低精度區域的幾何信息包括以下步驟:
10、s1.1,定義高精度區域的幾何信息為:(fine_xmin,fine_xmax)、(fine_ymin,fine_ymax)和(fine_zmin,fine_zmax);
11、s1.2,定義低精度區域的幾何信息為:(coarse_x1min,coarse_x1max)、(coarse_y1min,coarse_y1max)和(coarse_z1min,coarse_z1max)、(coarse_x2min,coarse_x2max)、(coarse_y2min,coarse_y2max)和(coarse_z2min,coarse_z2max);
12、s1.3,擴大低精度區域的影響半徑,結合低精度區域的幾何信息采用邊界指令定義低精度區域的幾何邊界,以準確找到相互作用的大粒子和小粒子;
13、所述低精度區域的幾何邊界為:
14、boundary?%?coarse_x1min?=?coarse_x1min-re
15、boundary?%?coarse_x1max?=?coarse_x1max+re
16、boundary?%?coarse_y1min?=?coarse_y1min-re
17、boundary?%?coarse_y1max?=?coarse_y1max+re
18、boundary?%?coarse_z1min?=?coarse_z1min-re
19、boundary?%?coarse_z1max?=?coarse_z1max+re
20、boundary?%?coarse_x2min?=?coarse_x2min-re
21、boundary?%?coarse_x2max?=?coarse_x2max+re
22、boundary?%?coarse_y2min?=?coarse_y2min-re
23、boundary?%?coarse_y2max?=?coarse_y2max+re
24、boundary?%?coarse_z2min?=?coarse_z2min-re
25、boundary?%?coarse_z2max?=?coarse_z2max+re
26、其中,re=3.1*l0_coarse為大粒子的影響半徑,l0_coarse為大粒子之間的粒子間隙。
27、結合流體模型整體幾何信息和大粒子尺寸將整個計算區域劃分成多個大格子;結合高精度區域幾何信息和小粒子尺寸,將高精度區域劃分成多個小格子包括以下步驟:
28、s2.1,計算x、y和z方向上大格子數目為:
29、coarse_nx=int((boundary?%?coarse_x2max-boundary?%?coarse_x1min)/ra)+1
30、coarse_ny=int((boundary?%?coarse_y2max-boundary?%?coarse_y1min)/ra)+1
31、coarse_nz=int((boundary?%?coarse_z2max-boundary?%?coarse_z1min)/ra)+1
32、其中,ra為大格子的尺寸;
33、s2,計算x、y和z方向上小格子數目為:
34、fine_nx=int((fine_xmax-fine_xmin)/rb)+1
35、fine_ny=int((fine_ymax-fine_ymin)/rb)+1
36、fine_nz=int((fine_zmax-fine_zmin)/rb)+1
37、其中,rb為小格子的尺寸,rb=3.1*l0_fine,l0_fine為小粒子的粒子間隙。
38、將屬于低精度區域的大粒子定位到大格子區域,將屬于高精度區域的小粒子定位到小格子區域包括以下步驟:
39、s3.1,設定第ct個大格子所對應的幾何區域為:
40、xctmin?=?boundary%coarse_x1min+(ix-1)(boundary%?coarse_x2max?-?boundary?%coarse_x1min)/coarse_nx
41、xctmax=boundary?%?coarse_x1min+(ix)(boundary%?coarse_x2max?-?boundary?%coarse_x1min)/coarse_nx
42、yctmin=boundary%coarse_y1min+?(iy-1)(boundary?%?coarse_y2max?-?boundary?%coarse_y1min)/coarse_ny
43、yctmax?=?boundary?%?coarse_y1min+?(iy)(boundary%?coarse_y2max?-?boundary?%coarse_y1min)/coarse_ny
44、zctmin=boundary%coarse_z1min+?(iz-1)(boundary?%?coarse_z2max?-?boundary?%coarse_z1min)/coarse_nz
45、zctmax?=?boundary?%?coarse_z1min+?(iz)(boundary?%?coarse_z2max?-?boundary%?coarse_z1min)/coarse_nz
46、其中,ix,iy和iz分別表示x、y和z方向上的第ix,iy和iz個大格子;
47、s3.2,設定第ft個小格子所對應的幾何區域為:
48、xftmin?=?boundary?%?fine_xmin+?(ix1-1)(boundary?%?fine_xmax?-?boundary?%fine_xmin)/fine_nx
49、xftmax?=?boundary?%?fine_xmin+?(ix1)(boundary?%?fine_xmax?-?boundary?%fine_xmin)/fine_nx
50、yftmin?=?boundary?%fine_ymin+?(iy1-1)(boundary?%?fine_ymax?-?boundary?%fine_ymin)/fine_ny
51、yftmax?=?boundary?%?fine_ymin+?(iy1)(boundary?%?fine_ymax?-?boundary?%fine_ymin)/fine_ny
52、zftmin?=?boundary?%?fine_zmin+?(iz1-1)(boundary?%?fine_zmax?-?boundary?%fine_zmin)/fine_nz
53、zftmax?=?boundary?%?fine_zmin+?(iz1)(boundary?%?fine_zmax?-?boundary?%fine_zmin)/fine_nz
54、其中,ix1、iy1和iz1分別表示x、y和z方向上的第ix1、iy1和iz1個小格子;
55、s3.3,當粒子i的坐標(xi,yi,zi)滿足xftmin≤xi≤xftmax、yftmin≤yi≤yftmax和zftmin≤zi≤zftmax時,將粒子i定位到小格子;
56、當粒子j的坐標(xj、yj、zj)滿足xctmin≤xj≤xctmax,yctmin≤yj≤yctmax和zctmin≤zj≤zctmax時,將粒子j定位到大格子。
57、本發明采用上述結構和方法,通過讀取流體模型中的大粒子物理信號和小粒子物理信號,讀取高精度區域和低精度區域的幾何信息,以確定相應的整體計算區域;通過結合流體模型整體幾何信息和大粒子尺寸將整個計算區域劃分成多個大格子,結合高精度區域幾何信息和小粒子尺寸,將高精度區域劃分成多個小格子,從而形成兩種類別的格子;通過將屬于低精度區域的大粒子定位到大格子區域,將屬于高精度區域的小粒子定位到小格子區域實現粒子與格子的定位配置;通過確定計算粒子所屬格子及相鄰格子內所有位于影響半徑內的鄰居粒子,與計算粒子形成接觸對,進行力的計算,提升整個計算區域的計算效率,具有簡便高效、精準實用的優點。