本發(fā)明涉及計(jì)算機(jī)仿真技術(shù)領(lǐng)域,具體的說(shuō)是涉及一種用于SPH算法的分區(qū)搜索方法。
背景技術(shù):
通常我們關(guān)心的物體運(yùn)動(dòng)和變形的規(guī)律可以采用微分方程來(lái)描述,稱這種微分方程叫做物理控制方程,實(shí)際上大部分的運(yùn)動(dòng)物體都是形狀復(fù)雜的,物理控制方程必須借助于計(jì)算機(jī)幫助進(jìn)行數(shù)值計(jì)算,也叫數(shù)值仿真或數(shù)值模擬,其意思是根據(jù)客觀規(guī)律采用數(shù)值計(jì)算的方法模擬物體在一定條件下的運(yùn)動(dòng)和變形情況,這屬于一種預(yù)測(cè),現(xiàn)在技術(shù)條件下的預(yù)測(cè)結(jié)果與實(shí)際情況已經(jīng)能夠非常接近。因而,數(shù)值仿真計(jì)算在科學(xué)研究和工程應(yīng)用中已經(jīng)成為并列于實(shí)驗(yàn)手段和理論手段的第三種研究方法,其具有結(jié)果直觀,可重復(fù)性高,條件要求低和成本低等優(yōu)勢(shì)。
通常,數(shù)值計(jì)算方法可以分為兩種:一種是基于網(wǎng)格的數(shù)值計(jì)算方法,另一種則是無(wú)網(wǎng)格數(shù)值計(jì)算方法;其中基于網(wǎng)格的數(shù)值計(jì)算方法分為拉格朗日方法以及歐拉方法:所述拉格朗日方法是讓網(wǎng)格隨著物體的運(yùn)動(dòng)和變形而變化,該方法主要用在固體的數(shù)值計(jì)算,其能夠精確捕獲固體的形狀變化,對(duì)于不規(guī)則外形可以用不規(guī)則的網(wǎng)格分布來(lái)描述,計(jì)算效率高,適應(yīng)性強(qiáng),廣泛用于固體力學(xué)計(jì)算中,在機(jī)械行業(yè)中也有大量的應(yīng)用;但是正因?yàn)槔窭嗜辗椒ǖ木W(wǎng)格隨著變形而變化,當(dāng)變形很大的時(shí)候,網(wǎng)格變形很嚴(yán)重,此時(shí)就不能滿足有網(wǎng)格數(shù)值計(jì)算方法的基本要求,因此會(huì)造成時(shí)間步長(zhǎng)減少,每一次計(jì)算的耗時(shí)增加,甚至因?yàn)榫W(wǎng)格畸變嚴(yán)重導(dǎo)致計(jì)算失敗,限制了這種方法應(yīng)用;所述歐拉方法是讓網(wǎng)格固定不變,每一次獲得的結(jié)果都是空間固定位置的物理量,主要用于流體問(wèn)題的計(jì)算,因?yàn)榫W(wǎng)格固定不變,因此不會(huì)因?yàn)榫W(wǎng)格變形影響計(jì)算,但是正是因?yàn)楣潭ǖ木W(wǎng)格,因此其不能描述固體的變形,并且在用于流體計(jì)算中沒(méi)有確認(rèn)多種流體之間界面的措施,因此需要額外提出確認(rèn)流體界面的方法,歐拉方法目前尚沒(méi)有像拉格朗日方法那么有效的自然處理界面的方法,因此其在流體中采用的處理界面的方法只能在一定程度上滿足計(jì)算的要求,并不十分精確,基本能夠滿足流體計(jì)算要求,但是對(duì)于固體計(jì)算來(lái)說(shuō)讓不能滿足固體邊界的精確描述。
從兩種有網(wǎng)格方法的特點(diǎn)來(lái)看,有網(wǎng)格方法都存在一些不適用的缺陷,雖然可以相互補(bǔ)充,但由于描述方法的不同而不能一起使用,如果要滿足固體力學(xué)中的數(shù)值計(jì)算要求,就需要去除網(wǎng)格,滿足流體力學(xué)計(jì)算的要求,就需要一種拉格朗日方法描述多物質(zhì)流體的界面。
而基于無(wú)網(wǎng)格方法的SPH方法剛好可以滿足這些要求,SPH方法全稱為光滑粒子流體動(dòng)力學(xué)方法,是一種拉格朗日格式的無(wú)網(wǎng)格方法,其既可以用于固體力學(xué)數(shù)值計(jì)算,也可以用于流體力學(xué)數(shù)值計(jì)算;其在用于固體力學(xué)時(shí),因?yàn)闆](méi)有網(wǎng)格,因此網(wǎng)格畸變的問(wèn)題不存在于SPH方法,其用于流體力學(xué)時(shí),因?yàn)槭抢窭嗜辗椒?,因此不需要額外的界面追蹤技術(shù)就能精確描述多種流體的交界面。
隨著研究的深入,SPH方法被逐步應(yīng)用于水下爆炸和高速碰撞,在海洋波浪模擬和液面晃動(dòng)的模擬中也有成功應(yīng)用,近年來(lái)被廣泛用于航天器空間碎片防護(hù)的研究。但是隨著SPH方法逐步被用于實(shí)際的工程應(yīng)用中,現(xiàn)有的SPH方法也存在一定的缺陷,其具體包括下述問(wèn)題:
目前SPH方法的搜索技術(shù)有兩種,基于背景網(wǎng)格的鏈表搜索技術(shù)和基于樹(shù)形結(jié)構(gòu)的八叉樹(shù)搜索,其中,八叉樹(shù)搜索是采用遞歸的方法實(shí)現(xiàn)的,缺點(diǎn)是會(huì)出現(xiàn)棧溢出或遞歸過(guò)深的問(wèn)題,但優(yōu)點(diǎn)是對(duì)于分布很不均勻的情況仍然具有很高的效率;而鏈表搜索則是把包含所有粒子的包圍盒劃分等大小的背景網(wǎng)格,再將各個(gè)粒子放進(jìn)網(wǎng)格,以獲得每個(gè)粒子屬于的網(wǎng)格信息和每個(gè)網(wǎng)格包含的粒子信息,通過(guò)依靠背景網(wǎng)格獲取每個(gè)粒子的局部關(guān)系信息,進(jìn)行局部的搜索,缺點(diǎn)是在當(dāng)粒子分布不均勻的時(shí)候會(huì)出現(xiàn)很多沒(méi)有粒子的網(wǎng)格,存儲(chǔ)這些網(wǎng)格會(huì)消耗大量的內(nèi)存和時(shí)間,但是優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,安全可靠。因此需要尋找一種新的搜索方法,使其具有樹(shù)搜索的部分優(yōu)點(diǎn),又不需要面臨遞歸過(guò)程中出現(xiàn)的棧溢出或遞歸過(guò)深的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
鑒于已有技術(shù)存在的缺陷,本發(fā)明的目的是要提供一種用于SPH算法的分區(qū)搜索方法,以大幅提高計(jì)算效率,且安全可靠。
為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案:
一種用于SPH算法的分區(qū)搜索方法,其特征在于,包括如下步驟:
步驟1、創(chuàng)建待進(jìn)行仿真分析的仿真模型并對(duì)所創(chuàng)建的仿真模型進(jìn)行初始化設(shè)置;
步驟2、計(jì)算經(jīng)初始化設(shè)置后的仿真模型所對(duì)應(yīng)的每一粒子的壓力值、應(yīng)力張量以及人工粘性值;
步驟3、在所設(shè)定的每一個(gè)時(shí)間步內(nèi)對(duì)所述仿真模型進(jìn)行搜索分析,以確定每一計(jì)算粒子所對(duì)應(yīng)的近鄰粒子;所述的搜索分析包括確定仿真模型所對(duì)應(yīng)的各并行分區(qū)以及各并行分區(qū)邊界后,分別對(duì)所確定的各并行分區(qū)進(jìn)行內(nèi)部搜索并對(duì)所確定的各并行分區(qū)邊界進(jìn)行區(qū)域搜索;
步驟4、計(jì)算仿真模型所對(duì)應(yīng)的狀態(tài)方程以及控制方程;
步驟5、基于所設(shè)定終止條件,輸出對(duì)應(yīng)的仿真結(jié)果。
進(jìn)一步的,作為本發(fā)明的優(yōu)選
步驟3包括步驟31確定仿真模型所對(duì)應(yīng)的各并行分區(qū)以及各并行分區(qū)邊界,其包括:
步驟311、首先對(duì)仿真模型所對(duì)應(yīng)的所有粒子進(jìn)行循環(huán),分別找到在三維空間即X方向、Y方向、Z方向上,坐標(biāo)最小粒子I以及坐標(biāo)最大粒子II;其次將上述粒子II的坐標(biāo)與粒子I的坐標(biāo)相減,得到X、Y、Z三個(gè)方向上的最大跨度值;最后通過(guò)將所述仿真模型所對(duì)應(yīng)的每一粒子的坐標(biāo)依次與粒子I的坐標(biāo)相減并除以所獲得的該坐標(biāo)方向上的最大跨度值,確定并存儲(chǔ)每一粒子的相對(duì)無(wú)量綱坐標(biāo)(Xj-Xi/X0,Yj-Yi/Y0,Zj-Zi/Z0),其中,Xj、Yj、Zj分別表示X方向、Y方向、Z方向上的粒子坐標(biāo);Xi、Yi、Zi分別表示X方向、Y方向、Z方向上坐標(biāo)最小的粒子I的坐標(biāo),X0表示X方向上的最大跨度值,Yj表示Y方向上的最大跨度值,Z0表示Z方向上的最大跨度值,j≥1;
步驟312、分別計(jì)算所有粒子所對(duì)應(yīng)的無(wú)量綱坐標(biāo)在X方向、Y方向、Z方向上的平方和,并將平方和最小的無(wú)量綱坐標(biāo)所構(gòu)成的向量方向確定為主方向;
步驟313、基于所確定的主方向,求出各個(gè)粒子在主方向上的相對(duì)坐標(biāo),然后按照相對(duì)坐標(biāo)從小至大的順序?qū)λ辛W舆M(jìn)行排序;
步驟314、基于待劃定的并行分區(qū)數(shù)量確定每一并行分區(qū)所對(duì)應(yīng)的初始粒子數(shù)以及各并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào);
步驟315、確定每一并行分區(qū)邊界位置并存儲(chǔ)所確定的分界粒子序號(hào)對(duì)應(yīng)的邊界坐標(biāo);
步驟316、劃定并行分區(qū)并對(duì)每一并行分區(qū)內(nèi)部的粒子進(jìn)行排序,并通過(guò)各并行分區(qū)通信來(lái)確定各個(gè)并行分區(qū)內(nèi)的粒子數(shù)量變化情況,并基于所確定的粒子數(shù)量變化情況調(diào)整并行分區(qū)邊界位置,以達(dá)到負(fù)載均衡。
進(jìn)一步的,作為本發(fā)明的優(yōu)選
所述步驟313中采用浮點(diǎn)數(shù)的桶排序方法對(duì)所有粒子進(jìn)行排序。
進(jìn)一步的,作為本發(fā)明的優(yōu)選
所述步驟314包括:
步驟3141、獲取仿真模型所對(duì)應(yīng)的并行分區(qū)數(shù)量;
步驟3142、按照仿真模型所對(duì)應(yīng)的所有粒子數(shù)與所確定的并行分區(qū)數(shù)量相除所獲得的整數(shù)加一確定每一并行分區(qū)內(nèi)部初始的粒子數(shù);
步驟3143、確定各并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào),即按照第一個(gè)并行分區(qū)與第二并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào)為第一個(gè)并行分區(qū)所具有的粒子數(shù),且第n-1個(gè)并行區(qū)與第n個(gè)并行區(qū)的分界粒子序號(hào)為第n-2個(gè)并行分區(qū)與第n-1個(gè)并行分區(qū)的分界粒子序號(hào)加上第n-1個(gè)并行區(qū)的粒子數(shù)的策略,對(duì)所有的并行分區(qū)進(jìn)行循環(huán),以確定各并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào),其中n≥3。
進(jìn)一步的,作為本發(fā)明的優(yōu)選
所述步驟315包括:
按照步驟313排好的序列進(jìn)行遍歷,當(dāng)遍歷到某一個(gè)并行分區(qū)的分界粒子序號(hào)時(shí),提取該分界粒子序號(hào)所對(duì)應(yīng)的粒子的編號(hào),并找到該編號(hào)對(duì)應(yīng)的粒子在主方向上的相對(duì)坐標(biāo),此相對(duì)坐標(biāo)即為當(dāng)前并行分區(qū)與下一個(gè)并行分區(qū)的分界位置;完成所有粒子序列的遍歷以得到所有并行分區(qū)的上邊界和下邊界,其中上邊界即為當(dāng)前的并行分區(qū)與前一并行分區(qū)的邊界坐標(biāo),下邊界即為其與后一并行分區(qū)的邊界坐標(biāo);且第一個(gè)并行分區(qū)上邊界是主方向起始位置所對(duì)應(yīng)的粒子坐標(biāo),最后一個(gè)并行分區(qū)下邊界是主方向終止位置所對(duì)應(yīng)的粒子坐標(biāo)。
進(jìn)一步的,作為本發(fā)明的優(yōu)選
所述步驟316包括:
步驟3161、劃定并行分區(qū),并按照主方向自小至大的策略對(duì)每一并行分區(qū)所具有的粒子進(jìn)行排序,以確定當(dāng)前的并行分區(qū)所對(duì)應(yīng)的粒子序列;
步驟3162、在每一次時(shí)間步迭代循環(huán)后確定當(dāng)前并行分區(qū)內(nèi)的粒子數(shù)量變化情況:即自第一并行分區(qū)開(kāi)始,判斷當(dāng)前區(qū)域內(nèi)所對(duì)應(yīng)的粒子是否多于初始粒子數(shù),是則自粒子序列中將多出的粒子劃給下一并行分區(qū),并更新下一并行分區(qū)的上邊界和當(dāng)前并行分區(qū)的下邊界;
步驟3163、重復(fù)步驟3162,以依次完成每一并行分區(qū)所對(duì)應(yīng)的粒子數(shù)量變化情況,并基于所確定的粒子數(shù)量變化情況調(diào)整并行分區(qū)上下邊界位置。
進(jìn)一步的,作為本發(fā)明的優(yōu)選
步驟3其包括:
步驟321、將每一分區(qū)所對(duì)應(yīng)的粒子,劃分為該分區(qū)內(nèi)部粒子以及分區(qū)邊界通信粒子;劃分規(guī)則為對(duì)當(dāng)前行分區(qū)所對(duì)應(yīng)的粒子進(jìn)行遍歷,并比較當(dāng)前的粒子到該粒子所屬分區(qū)的上邊界或下邊界的距離是否小于所設(shè)定的自身緊支域,若其到上邊界的距離小于自身緊支域,則該粒子被確認(rèn)為與上一分區(qū)進(jìn)行通信的分區(qū)邊界通信粒子;若其到下邊界的距離小于自身緊支域,則該粒子被確認(rèn)為與下一分區(qū)進(jìn)行通信的分區(qū)邊界通信粒子,若當(dāng)前的粒子到該粒子所屬并行分區(qū)的上邊界、下邊界的距離均不小于所設(shè)定的自身緊支域,則被確認(rèn)為該并行分區(qū)內(nèi)部粒子;
步驟322、分別對(duì)每一分區(qū)的內(nèi)部粒子進(jìn)行搜索,對(duì)應(yīng)的搜索策略為:
步驟3221、確定當(dāng)前分區(qū)所對(duì)應(yīng)的計(jì)算域大??;
步驟3222、按照一定比例將所確定的計(jì)算域劃分為若干區(qū)域;
步驟3223、將每一區(qū)域均劃分為相同的網(wǎng)格單元,確定搜索方向并基于所確定的搜索方向計(jì)算各區(qū)域所對(duì)應(yīng)的網(wǎng)格單元數(shù),如果所述網(wǎng)格單元數(shù)大于所設(shè)定的上限閾值,則進(jìn)一步縮小前述比例并重復(fù)步驟3222;
步驟3224、確定搜索域并搜索當(dāng)前區(qū)域所對(duì)應(yīng)的臨近粒子;所述搜索域的大小大于當(dāng)前待搜索的區(qū)域大小,以使得所述搜索域能夠與當(dāng)前待搜索的區(qū)域的臨近區(qū)域部分重疊;
步驟3225、循環(huán)重復(fù)步驟3224直至搜索完成全部區(qū)域的搜索,并將搜索過(guò)程中所獲得的各粒子信息進(jìn)行更新;
步驟3226、將當(dāng)前搜索完成后的分區(qū)的下邊界的邊界粒子信息傳遞給下一并行分區(qū)。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
本發(fā)明通過(guò)對(duì)分區(qū)進(jìn)行內(nèi)部搜索等技術(shù),使得本發(fā)明具有樹(shù)搜索的部分優(yōu)點(diǎn)的同時(shí),又不需要面臨遞歸過(guò)程中出現(xiàn)的棧溢出或遞歸過(guò)深的問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明所述的用于SPH算法的分區(qū)搜索方法對(duì)應(yīng)的流程步驟圖;
圖2為本發(fā)明所述的用于SPH算法的分區(qū)搜索方法對(duì)應(yīng)的流程步驟例圖;
圖3為本發(fā)明所述計(jì)算域被劃分為均等的4塊區(qū)域的例圖;
圖4為本發(fā)明所述搜索域的大小大于當(dāng)前待搜索的區(qū)域大小的例圖;
圖5a為對(duì)圖4進(jìn)行有向搜索時(shí)所對(duì)應(yīng)的例圖1;
圖5b為對(duì)圖4進(jìn)行有向搜索時(shí)所對(duì)應(yīng)的例圖2;
圖5c為對(duì)圖4進(jìn)行有向搜索時(shí)所對(duì)應(yīng)的例圖3;
圖5d為對(duì)圖4進(jìn)行有向搜索時(shí)所對(duì)應(yīng)的例圖4。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1-圖2所示,本發(fā)明所述用于SPH算法的分區(qū)搜索方法,包括如下步驟,
(1)、創(chuàng)建待進(jìn)行仿真分析的仿真模型并對(duì)所創(chuàng)建的仿真模型進(jìn)行初始化設(shè)置;由于SPH仿真計(jì)算過(guò)程的前處理可以與有限元仿真計(jì)算兼容,即可以通過(guò)網(wǎng)格來(lái)確定其初始的粒子分布情況,即需要完成粒子的分布設(shè)定,模擬條件的設(shè)定,粒子所代表材料的屬性和粒子的初始狀態(tài)等設(shè)置。具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述的步驟1其包括:
步驟101、創(chuàng)建仿真模型并設(shè)定所創(chuàng)建的仿真模型所對(duì)應(yīng)的網(wǎng)格文件,獲得對(duì)應(yīng)的網(wǎng)格信息并存入臨時(shí)的網(wǎng)格數(shù)據(jù)中,所述網(wǎng)格信息包括網(wǎng)格序號(hào)以及網(wǎng)格材料號(hào),且網(wǎng)格信息包含與其所對(duì)應(yīng)的節(jié)點(diǎn)號(hào);
步驟102、設(shè)定所創(chuàng)建的仿真模型所對(duì)應(yīng)的節(jié)點(diǎn)文件,獲得對(duì)應(yīng)的節(jié)點(diǎn)信息并存入臨時(shí)的節(jié)點(diǎn)數(shù)據(jù)中,所述節(jié)點(diǎn)信息包括節(jié)點(diǎn)號(hào)以及節(jié)點(diǎn)坐標(biāo);
步驟103、結(jié)合網(wǎng)格信息與節(jié)點(diǎn)信息計(jì)算仿真模型所對(duì)應(yīng)的各個(gè)網(wǎng)格的中心坐標(biāo)以及每一網(wǎng)格所對(duì)應(yīng)的體積數(shù)據(jù),并基于所計(jì)算的體積數(shù)據(jù)計(jì)算各自對(duì)應(yīng)的等效直徑;
步驟104、將上述各網(wǎng)格轉(zhuǎn)換為所對(duì)應(yīng)的粒子,其中每一粒子的位置即其所對(duì)應(yīng)的網(wǎng)格的中心坐標(biāo),其大小即其所對(duì)應(yīng)的網(wǎng)格的等效直徑,其材料號(hào)即其所對(duì)應(yīng)的網(wǎng)格材料號(hào);
步驟105、設(shè)定材料文件,獲取仿真模型所對(duì)應(yīng)的每種材料的密度,泊松比,彈性模量以及材料模型的類型和參數(shù)等數(shù)據(jù);
步驟106、根據(jù)每一粒子的所對(duì)應(yīng)的網(wǎng)格材料號(hào)將所設(shè)定的材料的屬性和模型參數(shù)賦給每一粒子;
步驟107、設(shè)定邊界條件和初始條件,獲取仿真模型所對(duì)應(yīng)的條件值和條件作用的組件號(hào),存在臨時(shí)的初邊值數(shù)據(jù)中;
步驟108、設(shè)定組件信息文件并獲得仿真模型所對(duì)應(yīng)的組件數(shù),若按順序打開(kāi)組件文件,則依次設(shè)定對(duì)應(yīng)的組件號(hào)、組件類型;進(jìn)一步的,若當(dāng)前的組件號(hào)和組件類型滿足當(dāng)前所對(duì)應(yīng)的初邊界條件,則繼續(xù)設(shè)定當(dāng)前組件的成員,獲取相關(guān)網(wǎng)格的序號(hào),將初邊值條件賦給網(wǎng)格相應(yīng)的粒子;若邊界條件作用于節(jié)點(diǎn),則獲取該節(jié)點(diǎn)屬于的單元數(shù)據(jù),將邊界條件賦給對(duì)應(yīng)單元轉(zhuǎn)換得到的粒子;
步驟109、設(shè)定初始控制參數(shù);所述計(jì)算控制參數(shù)包括當(dāng)前時(shí)間、總體計(jì)算時(shí)長(zhǎng)、當(dāng)前時(shí)間步長(zhǎng)、總體循環(huán)數(shù)、當(dāng)前時(shí)間步數(shù)、最小時(shí)間步長(zhǎng)、最大時(shí)間步長(zhǎng)、對(duì)稱信息和保存結(jié)果設(shè)定、并行信息等信息。
步驟1010、設(shè)定每種材料的屬性和模型參數(shù),將所設(shè)定的材料參數(shù)和模型參數(shù)按照粒子的材料號(hào)賦給每個(gè)粒子。
(2)、計(jì)算經(jīng)初始化設(shè)置后的仿真模型所對(duì)應(yīng)的每一粒子的壓力值、應(yīng)力張量以及人工粘性值;具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述的壓力數(shù)據(jù)的計(jì)算過(guò)程為:首先對(duì)每一粒子進(jìn)行循環(huán)并獲得每一粒子的密度和比內(nèi)能,將所獲得的數(shù)據(jù)作為計(jì)算壓力的輸入?yún)?shù);其次根據(jù)各粒子所賦予的狀態(tài)方程中確定其壓力計(jì)算函數(shù)的類型;最后基于所確定的全部輸入?yún)?shù)以及壓力計(jì)算函數(shù),計(jì)算每個(gè)粒子的壓力后結(jié)束粒子循環(huán)過(guò)程;具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述的應(yīng)力值的計(jì)算過(guò)程為:首先對(duì)每一粒子進(jìn)行循環(huán)并獲得每一粒子的應(yīng)變率、旋轉(zhuǎn)率以及應(yīng)力;其次基于應(yīng)力率公式計(jì)算出每一粒子所對(duì)應(yīng)的應(yīng)力率;再次確定當(dāng)前的時(shí)間步長(zhǎng)后,用時(shí)間步長(zhǎng)乘以所對(duì)應(yīng)的應(yīng)力率得到當(dāng)前所計(jì)算的粒子的應(yīng)力張量,并通過(guò)將該粒子的應(yīng)力加上應(yīng)力張量得到臨時(shí)的更新后的應(yīng)力,將該粒子的應(yīng)力帶入所設(shè)定的屈服條件,判斷是否屈服,如果屈服則用徑向返回方法獲得屈服后的應(yīng)力,如果沒(méi)有屈服則不進(jìn)行處理;最后將判斷后的應(yīng)力作為該粒子更新后的應(yīng)力并結(jié)束粒子循環(huán)過(guò)程;具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述人工粘性值的計(jì)算過(guò)程為:首先對(duì)每個(gè)作用對(duì)進(jìn)行循環(huán)并依次選定其中一個(gè)作用對(duì)中的粒子i和粒子j,計(jì)算這一對(duì)作用粒子相互之間的作用力,即計(jì)算粒子i和粒子j的相對(duì)坐標(biāo)(xi-xj,yi-yj,zi-zj)和相對(duì)速度(vxi-vxj,vyi-vyj,vzi-vzj),其中xi,yi和zi表示粒子i的x方向,y方向和z方向坐標(biāo),xj,xj和zj表示粒子j的x方向,y方向和z方向坐標(biāo),vxi,vyi和vzi表示粒子i的x方向,y方向和z方向速度,vxj,vyj和vzj表示粒子j的x方向,y方向和z方向速度;隨后計(jì)算粒子i的光滑長(zhǎng)度hi,密度rhoi,聲速ci和j粒子的光滑長(zhǎng)度hj,密度rhoj,聲速cj;最后計(jì)算出這一對(duì)作用粒子相互之間的作用力,并將該作用力作為這一個(gè)作用對(duì)的人工粘性力,并結(jié)束作用對(duì)循環(huán)。
(3)、在所設(shè)定的每一個(gè)時(shí)間步內(nèi),對(duì)所述仿真模型進(jìn)行搜索分析,以確定每一計(jì)算粒子所對(duì)應(yīng)的近鄰粒子;所述的搜索分析包括步驟31確定仿真模型所對(duì)應(yīng)的各并行分區(qū)以及各并行分區(qū)邊界;
具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟31包括如下步驟:
步驟311、首先對(duì)仿真模型所對(duì)應(yīng)的所有粒子進(jìn)行循環(huán),分別找到在三維空間的X方向、Y方向、Z方向上,坐標(biāo)最小所對(duì)應(yīng)的粒子I以及坐標(biāo)最大所對(duì)應(yīng)的粒子II;其次將粒子II的坐標(biāo)與粒子I的坐標(biāo)相減,得到X、Y、Z三個(gè)方向上的最大跨度值;最后通過(guò)將所述仿真模型所對(duì)應(yīng)的每一粒子的坐標(biāo)依次與粒子I的坐標(biāo)相減并除以所獲得的該坐標(biāo)方向上的最大跨度值,確定出每一粒子的相對(duì)無(wú)量綱坐標(biāo)(Xj-Xi/X0,Yj-Yi/Y0,Zj-Zi/Z0),其中,Xj、Yj、Zj分別表示X方向、Y方向、Z方向上的粒子坐標(biāo);Xi、Yi、Zi分別表示X方向、Y方向、Z方向上坐標(biāo)最小的粒子I的坐標(biāo),X0表示X方向上的最大跨度值,Yj表示Y方向上的最大跨度值,Z0表示Z方向上的最大跨度值,j≥1;
步驟312、分別計(jì)算所有粒子所對(duì)應(yīng)的無(wú)量綱坐標(biāo)在X方向、Y方向、Z方向上的平方和,并將平方和最小的無(wú)量綱坐標(biāo)所構(gòu)成的向量方向確定為主方向;
步驟313、基于所確定的主方向,按照所有粒子與主方向的相對(duì)坐標(biāo)從小至大進(jìn)行排序:進(jìn)一步的,作為本發(fā)明的優(yōu)選例,所述步驟313采用浮點(diǎn)數(shù)的桶排序方法對(duì)所有粒子進(jìn)行排序,下述以具體實(shí)例為例進(jìn)行說(shuō)明:首先獲取所有粒子在主方向上的相對(duì)無(wú)量綱坐標(biāo)值,將所獲得相對(duì)無(wú)量綱坐標(biāo)值進(jìn)行坐標(biāo)格式化后轉(zhuǎn)換為相應(yīng)的字符串,由于每個(gè)轉(zhuǎn)化后的字符串具有相同的長(zhǎng)度,因此所有相對(duì)無(wú)量綱坐標(biāo)均不會(huì)為負(fù)值,且每一個(gè)字符串順序?yàn)榈?位是0,第2位是小數(shù)點(diǎn),第3位至第8位是浮點(diǎn)數(shù)小數(shù)點(diǎn)后6位數(shù)值,第9位是e,即表示指數(shù)開(kāi)始,第10位是指數(shù)的符號(hào),其為負(fù)值,第11到12位是指數(shù)的十位和個(gè)位;其次,設(shè)置m個(gè)桶(本例設(shè)置0到9號(hào),一共9個(gè)桶)后,先對(duì)各字符串的小數(shù)位進(jìn)行排序:依次對(duì)每一位小數(shù)位循環(huán)時(shí),將各粒子放入對(duì)應(yīng)的序號(hào)的桶中,且按所設(shè)定的順序?qū)⑾人阉鞯降牧W酉确胚M(jìn)去即如果對(duì)第1位小數(shù)循環(huán),當(dāng)前粒子的第一位小數(shù)位4的放入四號(hào)桶,完成第一位小數(shù)位的循環(huán)后,按照0到9的順序?qū)⒚總€(gè)桶中的粒子按序輸出(就是說(shuō)從0號(hào)桶開(kāi)始輸出,先放進(jìn)0號(hào)桶的先輸出)以形成一個(gè)新的粒子序列,然后以這個(gè)新序列開(kāi)始對(duì)下一位小數(shù)位進(jìn)行排序,直到完成所有小數(shù)位的排序;隨后以前述完成小數(shù)位排序所對(duì)應(yīng)的輸出序列開(kāi)始對(duì)指數(shù)位進(jìn)行排序,但是此時(shí)的排序方法應(yīng)與小數(shù)相反,這是由于指數(shù)位的符號(hào)是負(fù)號(hào),通常越大的指數(shù)表示這個(gè)數(shù)越小,所以對(duì)每一個(gè)指數(shù)位循環(huán)將各粒子按序放入桶時(shí)的對(duì)應(yīng)關(guān)系為:首先若當(dāng)前排序位的值為n,則將粒子放入9-n號(hào)桶中;然后按照放入的順序?qū)⒏魍爸械牧W虞敵觯藭r(shí)所獲得的序列作為下一個(gè)指數(shù)位排序的初始序列,直至完成所有指數(shù)位排序,此時(shí)所獲得的序列就是全部粒子按照主方向相對(duì)坐標(biāo)從小到大的粒子序列;
步驟314、確定待劃定的并行分區(qū)數(shù)量并確定每一并行分區(qū)所對(duì)應(yīng)的初始粒子數(shù)以及各并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào);進(jìn)一步的,作為本發(fā)明的優(yōu)選所述步驟314包括:步驟3141、獲取確定仿真模型所對(duì)應(yīng)的并行分區(qū)數(shù)量;如依據(jù)當(dāng)前仿真環(huán)境即當(dāng)前仿真計(jì)算機(jī)(特別是cpu)的配置參數(shù)確定并行分區(qū)數(shù)量;步驟3142、按照仿真模型所對(duì)應(yīng)的所有粒子數(shù)與所確定的并行分區(qū)數(shù)量相除所獲得的整數(shù)加一設(shè)定每一并行分區(qū)所對(duì)應(yīng)的初始的粒子數(shù);步驟3143、確定各并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào),即按照第一個(gè)并行分區(qū)與第二并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào)為第一個(gè)并行分區(qū)所具有的粒子數(shù),且第n-1個(gè)并行區(qū)與第n個(gè)并行區(qū)的分界粒子序號(hào)為第n-2個(gè)并行分區(qū)與第n-1個(gè)并行分區(qū)的分界粒子序號(hào)加上第n-1個(gè)并行區(qū)的粒子數(shù)的策略,對(duì)所有的并行分區(qū)進(jìn)行循環(huán),以確定各并行分區(qū)邊界位置所對(duì)應(yīng)的分界粒子序號(hào),其中n≥3,如第二個(gè)并行分區(qū)與第三個(gè)并行分區(qū)的分界粒子序號(hào)為第一個(gè)并行分區(qū)與第二個(gè)并行分區(qū)的分界粒子序號(hào)加第二個(gè)并行區(qū)所具有的粒子數(shù);
步驟315、確定每一并行分區(qū)邊界位置;具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟315包括:按照步驟313排好的序列進(jìn)行遍歷,當(dāng)遍歷到某一個(gè)并行分區(qū)的分界粒子序號(hào)時(shí),提取該分界粒子序號(hào)所對(duì)應(yīng)的粒子的編號(hào),并找到該編號(hào)對(duì)應(yīng)的粒子在主方向上的絕對(duì)坐標(biāo),此絕對(duì)坐標(biāo)即為當(dāng)前并行分區(qū)與下一個(gè)并行分區(qū)的分界位置;完成所有粒子序列的遍歷以得到所有并行分區(qū)的上邊界和下邊界,其中上邊界即為當(dāng)前的并行分區(qū)與前一并行分區(qū)的邊界坐標(biāo),下邊界即為其與后一并行分區(qū)的邊界坐標(biāo);且第一個(gè)并行分區(qū)上邊界是主方向起始位置所對(duì)應(yīng)的粒子坐標(biāo),最后一個(gè)并行分區(qū)下邊界是主方向終止位置所對(duì)應(yīng)的粒子坐標(biāo);
由于各并行分區(qū)之間的相對(duì)關(guān)系是明確的、有序的,因此計(jì)算開(kāi)始的時(shí)候通過(guò)上述方法確定各并行分區(qū)后,在后續(xù)計(jì)算中只需要對(duì)每一個(gè)并行分區(qū)內(nèi)部的粒子進(jìn)行排序,然后通過(guò)各并行分區(qū)通信來(lái)確定各個(gè)并行分區(qū)區(qū)的粒子數(shù)量變化,根據(jù)數(shù)量變化調(diào)整分界位置,即所述步驟316所述的內(nèi)容;
步驟316、劃定并行分區(qū)并對(duì)每一并行分區(qū)的粒子進(jìn)行排序,并通過(guò)各并行分區(qū)通信來(lái)確定各個(gè)并行分區(qū)內(nèi)的粒子數(shù)量變化情況,并基于所確定的粒子數(shù)量變化情況調(diào)整并行分區(qū)邊界位置。具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟316包括:步驟3161、劃定并行分區(qū),并按照主方向自小至大的策略對(duì)每一并行分區(qū)所具有的粒子進(jìn)行排序,以確定當(dāng)前的并行分區(qū)所對(duì)應(yīng)的粒子序列;步驟3162、在每一次時(shí)間步迭代循環(huán)后確定當(dāng)前并行分區(qū)內(nèi)的粒子數(shù)量變化情況:即自第一并行分區(qū)開(kāi)始,判斷當(dāng)前區(qū)域內(nèi)所對(duì)應(yīng)的粒子是否多于初始粒子數(shù),是則將粒子序列中多出的粒子劃給下一并行分區(qū)(即第二并行分區(qū))并更新下一并行分區(qū)的上邊界和當(dāng)前并行分區(qū)的下邊界;步驟3163、重復(fù)步驟3162,以依次完成每一并行分區(qū)所對(duì)應(yīng)的粒子數(shù)量變化情況,并基于所確定的粒子數(shù)量變化情況調(diào)整并行分區(qū)上下邊界位置,如收到第一并行分區(qū)劃分出的粒子后統(tǒng)計(jì)第二并行分區(qū)的粒子數(shù),判斷當(dāng)前區(qū)域內(nèi)所對(duì)應(yīng)的粒子是否多于初始粒子數(shù),是則將所確定的粒子序列中多出的粒子劃給下一并行分區(qū)(即第三并行分區(qū))并更新第三并行分區(qū)的上邊界和第二并行分區(qū)的下邊界,直至最后一個(gè)并行分區(qū),此時(shí)僅統(tǒng)計(jì)所對(duì)應(yīng)的粒子數(shù)量。
具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟3還包括步驟32對(duì)每一并行分區(qū)進(jìn)行區(qū)域搜索,其具體包括步驟321、將每一并行分區(qū)所對(duì)應(yīng)的粒子,劃分為該并行分區(qū)內(nèi)部粒子以及分區(qū)邊界通信粒子;劃分規(guī)則為對(duì)當(dāng)前行分區(qū)所對(duì)應(yīng)的粒子進(jìn)行遍歷,并比較當(dāng)前的粒子到該粒子所屬并行分區(qū)的上邊界或下邊界的距離是否小于所設(shè)定的自身緊支域,若其到上邊界的距離小于自身緊支域,則該粒子被確認(rèn)為與上一并行分區(qū)進(jìn)行通信的分區(qū)邊界通信粒子;若其到下邊界的距離小于自身緊支域,則該粒子被確認(rèn)為與下一并行分區(qū)進(jìn)行通信的分區(qū)邊界通信粒子,若當(dāng)前的粒子到該粒子所屬并行分區(qū)的上邊界、下邊界的距離均不小于所設(shè)定的自身緊支域,則被確認(rèn)為該并行分區(qū)內(nèi)部粒子;步驟322、分別對(duì)每一并行分區(qū)的內(nèi)部粒子進(jìn)行搜索,對(duì)應(yīng)的搜索策略為:步驟3221、確定當(dāng)前并行分區(qū)所對(duì)應(yīng)的計(jì)算域大小;步驟3222、按照一定比例將所確定的計(jì)算域劃分為若干區(qū)域;步驟3223、將每一區(qū)域均劃分為若干相同的背景網(wǎng)格單元,確定搜索方向并基于所確定的搜索方向計(jì)算各區(qū)域所對(duì)應(yīng)的網(wǎng)格單元數(shù),如果所述網(wǎng)格單元數(shù)大于所設(shè)定的上限閾值,則進(jìn)一步縮小前述比例并重復(fù)步驟3222;步驟3224、確定搜索域并搜索當(dāng)前區(qū)域所對(duì)應(yīng)的臨近粒子;所述搜索域的大小大于當(dāng)前待搜索的區(qū)域大小,以使得所述搜索域能夠與當(dāng)前待搜索的區(qū)域的臨近區(qū)域部分重疊;步驟3225、循環(huán)重復(fù)步驟3224直至搜索完成全部區(qū)域的搜索,并將搜索過(guò)程中所獲得的各粒子信息進(jìn)行更新;步驟3226、將當(dāng)前搜索完成后的并行分區(qū)的下邊界的邊界粒子信息傳遞給下一并行分區(qū)。
需要說(shuō)明的是:本部分在對(duì)每一并行分區(qū)或者稱為計(jì)算節(jié)點(diǎn)的內(nèi)部粒子進(jìn)行搜索時(shí),在這個(gè)節(jié)點(diǎn)上的搜索也是分區(qū)域(即步驟3222所述的區(qū)域)進(jìn)行的,這個(gè)分區(qū)域搜索與前述并行分區(qū)的搜索不同,此時(shí)我們假設(shè)前計(jì)算節(jié)點(diǎn)內(nèi)的粒子就是全部粒子,其通過(guò)設(shè)定搜索域或稱為窗口搜索域搜索當(dāng)前區(qū)域所對(duì)應(yīng)的臨近粒子,且每次只需要搜索窗口搜索域中的粒子,結(jié)束后依次移動(dòng)窗口搜索域再搜索其他窗口中的粒子,這樣做的好處就是不需要一次把計(jì)算節(jié)點(diǎn)內(nèi)的所有粒子的包圍盒都劃上背景網(wǎng)格單元,每次只需要在窗口中有粒子的情況下進(jìn)行搜索,而若窗口搜索域要比背景網(wǎng)格單元大很多,則在粒子分布極其不均勻的情況下大量沒(méi)有粒子的窗口搜索域會(huì)一次跳過(guò),節(jié)約大量的搜索時(shí)間,并且每一次的背景網(wǎng)格單元僅在窗口搜索域中劃分,而窗口搜索域的大小又比整體包圍盒小很多,則可以節(jié)約很多存儲(chǔ)空間,這樣在保證具有樹(shù)搜索的部分優(yōu)點(diǎn)的同時(shí),又不需要面臨遞歸過(guò)程中出現(xiàn)的棧溢出或遞歸過(guò)深的問(wèn)題;實(shí)驗(yàn)證實(shí),最佳的搜索域數(shù)量應(yīng)該與每個(gè)搜索域中的背景網(wǎng)格的數(shù)量相當(dāng)。同時(shí)在搜索域進(jìn)行搜索,為了使得各搜索域之間能夠搜索,需要使得搜索域各搜索域的每次搜索時(shí)都重復(fù)覆蓋部分其他搜索域的內(nèi)容,即步驟3224所述的確定搜索域并搜索當(dāng)前區(qū)域所對(duì)應(yīng)的臨近粒子時(shí),所述搜索域的大小大于當(dāng)前待搜索的區(qū)域大小,以使得所述搜索域能夠與當(dāng)前待搜索的區(qū)域的臨近區(qū)域部分重疊,如圖3所示的例圖,計(jì)算域被劃分為均等的4塊區(qū)域,在對(duì)任意一塊區(qū)域進(jìn)行搜索時(shí),將每一區(qū)域均劃分為若干層相同的背景網(wǎng)格單元且使得該搜索域略大于該區(qū)域即其與其他區(qū)域均存在一部分重疊交叉的區(qū)域,優(yōu)選的可使得所述重疊交叉的區(qū)域?yàn)橐粚颖尘熬W(wǎng)格單元,如圖4所示,其標(biāo)注有橫線的區(qū)域是當(dāng)前待搜索的區(qū)域本身的大小,標(biāo)注有斜線的區(qū)域是額外需要搜索的區(qū)域,以保證各區(qū)域間實(shí)現(xiàn)搜索;為了搜索域搜索不存在搜索重復(fù)的問(wèn)題,我們借用有向搜索的方法,例如如圖5所示例子,使得搜索沿著圖5a所示的方向進(jìn)行搜索時(shí),如果當(dāng)前搜索的是同一的背景網(wǎng)格單元(以中心的那個(gè)背景網(wǎng)格為例),則需要判斷該背景網(wǎng)格對(duì)應(yīng)的節(jié)點(diǎn)號(hào)的大小,按照統(tǒng)一的大小標(biāo)準(zhǔn)判斷(例如都是被搜索的節(jié)點(diǎn)號(hào)比較大的時(shí)候是一對(duì)作用對(duì))避免重復(fù)搜索;當(dāng)中心節(jié)點(diǎn)(即目標(biāo)節(jié)點(diǎn))位于左側(cè)邊界(搜索區(qū)域左側(cè)大于當(dāng)前分區(qū)的部分)的時(shí)候搜索路徑如圖5b所示,并且不搜索本身所在的網(wǎng)格,以防止重復(fù)搜索;當(dāng)中心節(jié)點(diǎn)位于下方邊界的時(shí)候,搜索路徑如圖5c,同樣不搜索自身所在網(wǎng)格;當(dāng)中心節(jié)點(diǎn)位于角落邊界中,搜索路徑如圖5d,只有一個(gè)搜索網(wǎng)格,由上例可知同網(wǎng)格間的搜索不需要對(duì)比節(jié)點(diǎn)號(hào)就可以保證不重復(fù)搜索,這樣做可以節(jié)省很多時(shí)間和計(jì)算資源,相比傳統(tǒng)的鏈表搜索,速度不會(huì)減少,其內(nèi)存的需求大量降低。
(4)、計(jì)算仿真模型所對(duì)應(yīng)的狀態(tài)方程以及控制方程,具體的,作為本發(fā)明的優(yōu)選實(shí)例,在進(jìn)行計(jì)算時(shí),若仿真模型存在對(duì)稱邊界即所述仿真模型為對(duì)稱模型,則對(duì)仿真模型進(jìn)行作用對(duì)信息增補(bǔ)處理;所述進(jìn)行作用對(duì)信息增補(bǔ)處理并不需要進(jìn)行額外搜索,只需確認(rèn)相應(yīng)的鏡像關(guān)系即可,具體的:
所述對(duì)仿真模型進(jìn)行作用對(duì)信息增補(bǔ)處理包括:
步驟41、分別獨(dú)立確認(rèn)每一并行分區(qū)是否存在一個(gè)對(duì)稱邊界,若當(dāng)前的并行分區(qū)存在對(duì)稱邊界,則對(duì)當(dāng)前的并行分區(qū)中所對(duì)應(yīng)的所有作用對(duì)進(jìn)行循環(huán),并判斷某一作用對(duì)中是否存在至少一個(gè)粒子到對(duì)稱邊界的距離小于自身緊支域,是則確認(rèn)可能存在具有鏡像作用的粒子對(duì);
步驟42、進(jìn)一步確定該作用對(duì)的鏡像關(guān)系,因?yàn)槭菍?duì)稱的關(guān)系,所以只需要考慮一個(gè)粒子的鏡像是否是另一個(gè)粒子的作用對(duì),即判斷該作用對(duì)中的任意一種粒子的鏡像粒子是否是另一粒子的作用對(duì),所述的判斷策略為:獲取該作用對(duì)中的任意一種粒子的鏡像粒子的鏡像位置,并判斷所獲取的鏡像位置與另一粒子的間距與兩個(gè)粒子緊支域之和的差值的絕對(duì)值是否小于所確定的判斷閾值,是則確定該作用對(duì)為具有鏡像作用的粒子對(duì)即確認(rèn)該作用對(duì)中的任意一個(gè)粒子的鏡像粒子與另一粒子互為作用對(duì),且若該作用對(duì)中存在其到分區(qū)邊界的距離小于自身緊支域,則確認(rèn)該粒子的鏡像粒子與該粒子互為作用對(duì);依次對(duì)所有作用對(duì)循環(huán),以獲得全部的關(guān)于對(duì)稱邊界的作用對(duì)信息,對(duì)仿真模型進(jìn)行作用對(duì)信息的進(jìn)行增補(bǔ)。
進(jìn)一步的,作為本發(fā)明的優(yōu)選,由于所述對(duì)仿真模型不僅存在1/2對(duì)稱,而且存在多重對(duì)稱邊界,如當(dāng)對(duì)稱邊界為兩個(gè)也就是說(shuō)是1/4對(duì)稱的時(shí)候,第一次產(chǎn)生的鏡像位置對(duì)于第二個(gè)對(duì)稱面同樣會(huì)產(chǎn)生一個(gè)鏡像位置,這個(gè)鏡像位置同樣有可能是一個(gè)作用粒子的位置,此外還有1/8對(duì)稱的情況,針對(duì)上述三種情況的對(duì)稱邊界,可按照下述過(guò)程進(jìn)行作用對(duì)信息增補(bǔ)處理;
步驟41、分別獨(dú)立確認(rèn)每一并行分區(qū)是否存在對(duì)稱邊界,若當(dāng)前的并行分區(qū)存在對(duì)稱邊界且對(duì)稱邊界個(gè)數(shù)至少為2個(gè),則分別沿著x方向、y方向以及z方向?qū)Ξ?dāng)前的并行分區(qū)中所對(duì)應(yīng)的所有作用對(duì)進(jìn)行循環(huán),并在依次對(duì)上述3個(gè)方向進(jìn)行循環(huán)的過(guò)程中,判斷當(dāng)前的作用對(duì)中是否存在至少一個(gè)粒子到其中任意一個(gè)對(duì)稱邊界的距離均小于自身緊支域,是則確認(rèn)可能存在具有鏡像作用的粒子對(duì);
步驟42、進(jìn)一步確定該作用對(duì)的鏡像關(guān)系,因?yàn)槭菍?duì)稱的關(guān)系,所以需要考慮一個(gè)粒子在各個(gè)對(duì)稱面上的鏡像是否均是另一個(gè)粒子的作用對(duì),即判斷該作用對(duì)中的任意一種粒子的在各個(gè)對(duì)稱面上的鏡像粒子是否均是另一粒子的作用對(duì),所述的判斷策略為:首先獲取該作用對(duì)中的任意一種粒子在某一對(duì)稱面上鏡像粒子的鏡像位置,并判斷所獲取的鏡像位置與另一粒子的間距與兩個(gè)粒子緊支域之和的差值的絕對(duì)值是否小于所確定的判斷閾值,是則確定確認(rèn)該粒子在當(dāng)前的對(duì)稱面上鏡像粒子與另一粒子互為作用對(duì),且若該作用對(duì)中存在其到分區(qū)邊界的距離小于自身緊支域,則確認(rèn)該粒子在當(dāng)前的對(duì)稱面上的鏡像粒子與該粒子互為作用對(duì);其次獲取該作用對(duì)中的任意一種粒子在其他對(duì)稱面上鏡像粒子的鏡像位置,并判斷所獲取的鏡像位置與另一粒子的間距與兩個(gè)粒子緊支域之和的差值的絕對(duì)值是否小于所確定的判斷閾值,是則確定確認(rèn)該粒子在所述對(duì)稱面上鏡像粒子與另一粒子互為作用對(duì),且若該作用對(duì)中存在其到分區(qū)邊界的距離小于自身緊支域,則確認(rèn)該粒子在所述對(duì)稱面上的鏡像粒子與該粒子也互為作用對(duì);依次對(duì)所有作用對(duì)循環(huán),以獲得全部的關(guān)于對(duì)稱邊界的作用對(duì)信息,對(duì)仿真模型進(jìn)行作用對(duì)信息的進(jìn)行增補(bǔ);同時(shí)所述作用對(duì)信息包括相互作用的粒子的標(biāo)號(hào)以及各自所對(duì)應(yīng)的作用方向,并在獲取作用對(duì)信息之后,根據(jù)對(duì)稱記號(hào)計(jì)算人工粘性和相互作用函數(shù),同樣記錄在作用對(duì)信息之中。
上述對(duì)多重對(duì)稱邊界的處理過(guò)程可由下述步驟及公式表示:
(1)分別對(duì)x方向、y方向、z方向進(jìn)行循環(huán),確認(rèn)是否存在對(duì)稱邊界;即
對(duì)z方向循環(huán):for i=0到sz
對(duì)y方向循環(huán):for j=0到sy
對(duì)x方向循環(huán):for k=0到sx
(2)判斷作用對(duì)中的一系列A點(diǎn)在各個(gè)對(duì)稱面上的鏡像粒子一系列A點(diǎn)是否均是點(diǎn)B(Xb,Yb,Zb)的作用對(duì),其中一系列A點(diǎn)為坐標(biāo)集合,可表示為(sign(k)*Xa,sign(j)*Ya,sign(i)*Za);其中,x方向、y方向、z方向的對(duì)稱記號(hào)分別為sx,sy,sz,0表示沒(méi)有對(duì)稱邊界,1表示有對(duì)稱邊界;sign為對(duì)稱方向符號(hào)且sign(0)=1,sign(1)=-1;*表示相乘;是則記錄A點(diǎn)以及相應(yīng)的對(duì)稱方向符號(hào)sign為一對(duì)作用對(duì)并計(jì)算這一對(duì)對(duì)應(yīng)的核函數(shù)信息。
(3)結(jié)束x方向循環(huán);結(jié)束y方向循環(huán);結(jié)束z方向循環(huán)。
具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟4還包括計(jì)算仿真模型所對(duì)應(yīng)的物理控制方程,所述物理控制方程的計(jì)算包括針對(duì)固體相關(guān)部分計(jì)算以及流體相關(guān)部分計(jì)算,對(duì)應(yīng)的,所述固體相關(guān)部分計(jì)算包括:a1、連續(xù)性方程計(jì)算,如首先對(duì)所有作用對(duì)循環(huán),以獲得作用粒子的坐標(biāo),速度和對(duì)稱符號(hào),通過(guò)對(duì)稱符合合成計(jì)算用粒子的坐標(biāo)和速度;然后獲得這對(duì)作用對(duì)的相互作用函數(shù)dwdx;用合成后的相對(duì)速度乘以作用函數(shù)獲得這對(duì)作用對(duì)的兩個(gè)粒子的密度變化率增量;累加循環(huán)計(jì)算中每個(gè)粒子獲得的增量后;結(jié)束循環(huán),使得各并行分區(qū)間進(jìn)行通信;b1、動(dòng)量守恒方程計(jì)算:對(duì)所有作用對(duì)循環(huán),獲取各作用粒子的應(yīng)力,對(duì)稱符號(hào),通過(guò)對(duì)稱符號(hào)合成計(jì)算用粒子應(yīng)力;然后獲得各作用對(duì)相互作用的函數(shù)dwdx;用合成后的應(yīng)力計(jì)算每一對(duì)粒子中第一個(gè)粒子的加速度增量,以這個(gè)增量為基礎(chǔ)通過(guò)對(duì)稱符號(hào)合成第二個(gè)粒子的加速度增量;使得每個(gè)粒子獨(dú)自累加循環(huán)計(jì)算獲得各自所對(duì)應(yīng)的增量;結(jié)束循環(huán),結(jié)束循環(huán),使得各并行分區(qū)間進(jìn)行通信并合成全部粒子的加速度;c1、能量守恒方程計(jì)算:對(duì)所有作用對(duì)循環(huán),獲取作用粒子的應(yīng)力,速度,對(duì)稱符號(hào),通過(guò)對(duì)稱符號(hào)合成計(jì)算用粒子應(yīng)力和速度;獲得各作用對(duì)相互作用的函數(shù)dwdx;用合成后的應(yīng)力和速度計(jì)算每一對(duì)粒子中粒子的比內(nèi)能變化率增量;使得每個(gè)粒子獨(dú)自累加循環(huán)計(jì)算獲得的增量;結(jié)束循環(huán),使得各并行分區(qū)間進(jìn)行通信并合成全部粒子的比內(nèi)能變化率;對(duì)應(yīng)的,所述流體相關(guān)部分計(jì)算包括:a2、動(dòng)量守恒方程計(jì)算:對(duì)所有作用對(duì)循環(huán),獲取作用粒子的壓力和這個(gè)作用對(duì)的人工粘性,對(duì)稱符號(hào),當(dāng)不采用人工粘性時(shí),通過(guò)兩個(gè)粒子的壓力合成黎曼解的壓力;獲得各作用對(duì)相互作用的函數(shù)dwdx;依次計(jì)算每一對(duì)粒子中第一個(gè)粒子的加速度增量,以這個(gè)增量為基礎(chǔ)通過(guò)對(duì)稱符號(hào)合成第二個(gè)粒子的加速度增量;使得每個(gè)粒子獨(dú)自累加循環(huán)計(jì)算獲得的增量;結(jié)束循環(huán),使得各并行分區(qū)間進(jìn)行通信并合成全部粒子的加速度;b2、能量守恒方程計(jì)算:對(duì)所有作用對(duì)循環(huán),獲取每一作用粒子的壓力和這個(gè)作用對(duì)的人工粘性,速度,對(duì)稱符號(hào),通過(guò)對(duì)稱符號(hào)合成計(jì)算用粒子速度,當(dāng)不采用人工粘性時(shí),通過(guò)壓力合成黎曼解的壓力;獲得各作用對(duì)相互作用的函數(shù)dwdx;用合成后的速度計(jì)算每一對(duì)粒子的比內(nèi)能變化率增量;使得每個(gè)粒子獨(dú)自累加循環(huán)計(jì)算獲得的增量;結(jié)束循環(huán),使得各并行分區(qū)間進(jìn)行通信并合成全部粒子的比內(nèi)能變化率。
具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟4還包括通過(guò)進(jìn)行時(shí)間積分以更新速度和坐標(biāo)以及其他狀態(tài)和物理量:如對(duì)速度和坐標(biāo)的更新:對(duì)所有并行分區(qū)的所有實(shí)粒子進(jìn)行循環(huán);獲取各粒子的加速度、當(dāng)前速度和坐標(biāo);使得各粒子更新后的速度等于當(dāng)前速度加上加速度與時(shí)間步長(zhǎng)的乘積,更新后的坐標(biāo)等于當(dāng)前坐標(biāo)加上更新后的速度與時(shí)間步長(zhǎng)的乘積;如對(duì)能量變化的更新:對(duì)所有并行分區(qū)的所有實(shí)粒子循環(huán),獲取各粒子的當(dāng)前比內(nèi)能和比內(nèi)能變化率,使得更新后各粒子的比內(nèi)能等于當(dāng)前比內(nèi)能加上比內(nèi)能變化率與時(shí)間步長(zhǎng)的乘積;如對(duì)應(yīng)變的更新:對(duì)所有并行分區(qū)的所有實(shí)粒子進(jìn)行循環(huán);獲取各粒子當(dāng)前的應(yīng)變以及應(yīng)變率;對(duì)每個(gè)應(yīng)變分量循環(huán),使得更新后的應(yīng)變分量等于當(dāng)前應(yīng)變分量加上對(duì)應(yīng)的應(yīng)變率與時(shí)間步長(zhǎng)的乘積;如對(duì)失效狀態(tài)的更新:對(duì)所有并行分區(qū)的所有實(shí)粒子進(jìn)行循環(huán),獲取粒子更新后的應(yīng)力和應(yīng)變代入所設(shè)定的公式判斷粒子失效狀態(tài),如果失效則標(biāo)記為失效粒子;如對(duì)侵蝕狀態(tài)的更新:對(duì)所有并行分區(qū)的所有實(shí)粒子進(jìn)行循環(huán),獲取各粒子的時(shí)間步長(zhǎng),應(yīng)變等信息,代入對(duì)應(yīng)的公式判斷侵蝕狀態(tài),如果達(dá)到侵蝕標(biāo)準(zhǔn)則標(biāo)記為侵蝕粒子,再次對(duì)所有粒子循環(huán)并刪除掉有侵蝕標(biāo)記的粒子,最后將未侵蝕的粒子重新放入連續(xù)的存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)中作為下一步計(jì)算的粒子數(shù)據(jù)。
具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟4還包括進(jìn)行邊界條件計(jì)算即根據(jù)所設(shè)定的邊界條件,處理受到約束的粒子的速度和進(jìn)行坐標(biāo)更新,具體包括下述步驟:對(duì)所有并行分區(qū)的所有實(shí)粒子循環(huán);判斷當(dāng)前粒子是否是被標(biāo)記為邊界標(biāo)記的粒子,如果粒子不是邊界標(biāo)記的粒子,則正常更新該粒子的速度和坐標(biāo);如果粒子是邊界標(biāo)記的粒子,則進(jìn)一步判斷該粒子的位移是否達(dá)到邊界條件的約束,如果達(dá)到約束,則該粒子的位移和坐標(biāo)不再更新,且速度置為0如果沒(méi)有達(dá)到約束,則該粒子的速度和坐標(biāo)正常更新。
具體的,以爆轟相關(guān)的傳爆路徑搜索為例進(jìn)行說(shuō)明:若采用直接搜索方法:
則首先確定該模型的初始設(shè)置的起爆位置;然后獲取起爆時(shí)間和當(dāng)前時(shí)間的時(shí)間差;獲取炸藥的爆速并確定起爆條件,所述起爆條件的確定是指如果粒子到起爆點(diǎn)位置小于或等于爆速乘以時(shí)間差,則達(dá)到起爆條件,否則沒(méi)有達(dá)到起爆條件;最后遍歷所有粒子,如果當(dāng)前粒子達(dá)到起爆條件,則設(shè)置該粒子為起爆粒子,否則設(shè)置為未起爆粒子。若采用間接搜索方法:由于間接搜索不需要初始起爆位置,其是通過(guò)粒子與已起爆粒子的相對(duì)位置關(guān)系確定,因此其包括:對(duì)該模型的除了鏡像作用對(duì)之外的所有作用對(duì)循環(huán),依次判斷是否一對(duì)作用對(duì)中有一個(gè)已經(jīng)起爆粒子和一個(gè)未起爆粒子,如果不滿足前述條件則繼續(xù)判斷下一個(gè)作用對(duì);如果滿足條件則獲取其中一個(gè)起爆粒子的起爆時(shí)間,計(jì)算與當(dāng)前時(shí)間的時(shí)間差,用時(shí)間差乘以爆速獲取爆轟波傳播的距離,并進(jìn)一步判斷這個(gè)距離與這對(duì)作用對(duì)之間的距離,如果粒子間距離大于爆轟波傳播距離,則進(jìn)行下一對(duì)作用對(duì)判斷,否則未起爆粒子將被起爆,記錄臨時(shí)起爆記號(hào)(臨時(shí)起爆記號(hào)不會(huì)影響后面搜索的判斷);最后完成所有作用對(duì)循環(huán)之后采用臨時(shí)起爆記號(hào)更新粒子起爆記號(hào),使得各并行分區(qū)進(jìn)行通信,至此完成起爆傳爆的搜索過(guò)程。
(5)、對(duì)所述仿真模型進(jìn)行后處理,即基于所設(shè)定終止條件,輸出對(duì)應(yīng)的仿真結(jié)果。具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟5包括:若當(dāng)前計(jì)算的時(shí)間滿足輸出條件的時(shí)候,將所有并行分區(qū)所對(duì)應(yīng)的仿真數(shù)據(jù)合并到所設(shè)定的主進(jìn)程下并獲取當(dāng)前輸出文件的序號(hào)標(biāo)記;對(duì)前述主進(jìn)程中所有粒子進(jìn)行循環(huán);將各粒子對(duì)應(yīng)輸出的變量及變量名稱寫(xiě)入文件;完成顯示需要的數(shù)據(jù)之后,將重啟動(dòng)需要的增量信息以及材料和計(jì)算控制信息寫(xiě)入同一文件;最后輸出對(duì)應(yīng)的仿真結(jié)果,且更新當(dāng)前文件的輸出序號(hào)標(biāo)記。具體的,作為本發(fā)明的優(yōu)選實(shí)例,所述步驟5包括設(shè)置屏幕打印計(jì)算進(jìn)度,即:對(duì)所有并行分區(qū)進(jìn)行通信,獲得各個(gè)并行分區(qū)所對(duì)應(yīng)的屏幕打印需要參數(shù)的值;對(duì)各所獲得的值進(jìn)行篩選,獲取其中的最大值,最小值以及各值的平均值;將篩選后的各值代入所設(shè)定的屏幕打印的函數(shù);根據(jù)所設(shè)定的輸出的行數(shù)調(diào)整光標(biāo)位置,令每一次的刷新剛好覆蓋需要刷新的內(nèi)容,以防止出現(xiàn)錯(cuò)行的問(wèn)題;執(zhí)行屏幕打印任務(wù)。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。