專利名稱:用于基于顆粒的模擬的邊界處理的制作方法
技術領域:
本發(fā)明涉及與固體對象的交互的基于顆粒的流體模擬。可以以不同方式對固體對象與流體的交互進行建模。
背景技術:
在計算流體動力學(CFD)中,邊界條件是在模擬空間邊界以及模擬環(huán)境內的固體對象的表面處定義的數(shù)值條件。邊界條件的示例包括其中速度法向分量是零的無穿透條件和其中正切速度分量未改變的自由滑動條件。由于邊界條件僅在表面處適用,所以兩個條件術語被可互換地使用。在基于網(wǎng)格的流體模擬中,將固體表面作為有限差問題的邊界條件來處理。
在用于CFD的基于顆粒的模擬方法中,諸如光滑顆粒流體動力學(SPH),不存在很好地定義的邊界處理技術。為了解決顆粒與表面之間的碰撞,已經(jīng)使用了某些簡單方法,諸如將碰撞顆粒推出固體表面之外并使其速度法向分量反向。然而,在其中由于流體交互而能夠移動固體對象的情況下,諸如漂浮對象,簡單的反射邊界可能不會預測將施加在固體對象上的力。
為了判定哪些顆粒潛在地與表面相碰撞,使用諸如3D網(wǎng)格的某種空間散列方法來在邊界和潛在流體顆粒之間進行映射。此類方法在靜態(tài)邊界情況下很適用。然而,這種方法在移動固體對象的情況下計算起來非常耗費,因為在每個模擬步驟中都更新或重新計算該映射(在隨著對象移動的時間內)。發(fā)明內容
在各種實施例中,提供了用于基于顆粒的模擬中的邊界處理的系統(tǒng)、方法和計算機可讀介質??梢栽诟鞣N建模方法中表示固體對象。常見的方法是將固體的表面劃分成三角形的網(wǎng)狀物。對于大多數(shù)實際情況而言,進行用于網(wǎng)狀物中的每個三角形與每個顆粒的比較將是計算起來過于耗費時間的,因此,將網(wǎng)狀物封閉在能夠被更高效地測試的邊界體積中。
在基于顆粒的模擬中板坯切割球(slab cut ball)處理定義用于與顆粒的交互的邊界體積。板坯切割球被用于固體對象與顆粒的初始碰撞檢測。如果發(fā)現(xiàn)顆粒在包圍體積內,則進行更加計算密集的測試以確定是否遇到實際表面??梢栽诓灰蟀鼑w積分級結構的情況下將固體對象劃分成多個獨立的板坯切割球以用于高效的膨脹檢測??梢栽趧澐謱ο蟮木W(wǎng)狀物三角形或其它基元的重復二元劃分操作中處理固體對象的劃分??梢曰谶吔绲姆忾]部分的最小寬度而不是使用固定的一組可能取向來更精確地確定板坯切割球的取向。這允許板坯切割球更精確地與幾何結構匹配并潛在地改善性能。這些特征中的任何一個或多個可以單獨地或組合地使用。
在第一方面,提供了一種用于在基于顆粒的模擬中的邊界處理的方法。處理器將固體對象劃分成多個片段。處理器形成用于所述多個中的每個片段的板坯切割球。由處理器來定義被分組成單元(cell)的被模擬顆粒的三維分布。處理器將用于片段的板坯切割球映射到單元并檢測單元之一的至少一個被模擬顆粒與片段之一的碰撞。處理器計算該碰撞的交互力。
在第二方面,非臨時性計算機可讀存儲介質在其中存儲了如下數(shù)據(jù),所述數(shù)據(jù)表示可被已編程處理器執(zhí)行以用于在基于顆粒的模擬中的邊界處理的指令。該存儲介質包括如下指令,所述指令用于將表示對象的基元的網(wǎng)狀物分離成基元子集并作為包括板坯切割球的包圍體積的函數(shù)來檢測顆粒與對象的碰撞。
在第三方面,非臨時性計算機可讀存儲介質在其中存儲了如下數(shù)據(jù),所述數(shù)據(jù)表示可被已編程處理器執(zhí)行以用于在基于顆粒的模擬中進行邊界處理的指令。該存儲介質包括如下指令,所述指令用于產(chǎn)生邊界的獨立包圍體積作為板坯切割球并作為板坯切割球的函數(shù)來檢測流體顆粒與邊界的碰撞。
上述方面中的任何一個或多個可以單獨地或組合地使用。根據(jù)應結合附圖來閱讀的優(yōu)選實施例的以下詳細描述,這些及其它方面、特征和優(yōu)點將變得顯而易見。本發(fā)明是由以下權利要求定義的,并且不應將本節(jié)中的任何內容視為對那些權利要求的限制。下面結合優(yōu)選實施例來討論本發(fā)明的其它方面和優(yōu)點且稍后可以獨立地或組合地對其要求保護。
組件和附圖不一定按比例,而是強調圖解實施例的原理。此外,在圖中,相同的附圖標記遍及不同的視圖表示相應的部分。
圖I是用于在基于顆粒的模擬中的邊界處理的方法的一個實施例的流程圖;圖2是根據(jù)一個實施例的用于形成板坯切割球的組件的圖示;圖3是由圖2的組件形成的板坯切割球的圖示;圖4是將顆粒分布劃分成單元的一個實施例的圖示;圖5是將圖3的板坯切割球映射到圖4的單元之一的二維表示;圖6是用于在基于顆粒的模擬中的邊界處理的系統(tǒng)的一個實施例的方框圖。
具體實施方式
諸如光滑顆粒流體動力學(SPH)的基于顆粒的流體模擬方法可以用來實現(xiàn)交互式流體模擬。為了用流體內的主體提供模擬并保持交互速度,提供快速邊界處理以將基于顆粒的流體模擬與其它主體耦合。為了是交互式的,一般地基于以毫秒為單位的循環(huán)來更新該模擬。因此,高效地進行與邊界的流體交互的計算以保持交互速度??梢允褂冒迮髑懈钋騺硖峁┯靡砸越换ニ俣葋硖幚泶笮汀碗s且可移動的固體對象的高效方法。計算并更新固體對象與流體顆粒之間的映射的容易性導致僅在固體表面附近區(qū)域內的顆粒被進行碰撞測試。
目標是在每個模擬步驟高效地在流體顆粒與固體對象基元之間進行映射。使用板坯切割球作為邊界體積。不要求包圍體積分級結構以增加計算效率。板坯切割球的尺寸被處理為使得每個的尺寸大于網(wǎng)格元素的尺寸,使得每個邊界體積的測試將獨立于其它邊界體積,因為每個邊界體積將涉及不同組的網(wǎng)格單元。并且,能夠控制幾何結構元素、諸如網(wǎng)狀物三角形基元的數(shù)目,使得元素的最大數(shù)目不超過諸如100、10的數(shù)目或基元的其它有限數(shù)目。以與分級結構構造類似的方式來劃分固體對象,諸如重復二元劃分,直至對象被劃分成具有足夠小的數(shù)目的基元的各部分。針對作為邊界體積的每個板坯切割球,可以基于其封閉的基元來計算中心、半徑以及平面距離。
對于基于顆粒的流體模擬而言,顆粒被分成規(guī)則面積的網(wǎng)格單元。網(wǎng)格單元維度的尺寸被選擇為使得單元內的顆粒的平均數(shù)目將不超過期望的數(shù)目。為了計算顆粒與固體之間的碰撞,將固體的邊界體積映射到一塊網(wǎng)格單元,使得顆粒碰撞測試與在對每個固體對象的模擬中測試所有顆粒相反地能夠局限于僅在受影響的體積中的那些顆粒。網(wǎng)格單元定義顆粒分布,并且還被用來計算流體模擬的演進。碰撞分解計算在碰撞中施加于流體顆粒的外部力。向主體施加相等且相反的作用力提供用于雙向耦合的自然方式。
圖I示出用于在基于顆粒的模擬中的邊界處理的方法。該方法是由圖6的系統(tǒng)和 /或不同的系統(tǒng)實現(xiàn)的。處理器執(zhí)行動作。可以提供附加、不同和更少的動作。例如,在被建模的固體對象小或將不被劃分的情況下,不執(zhí)行動作22。如果未檢測到碰撞,則可以不執(zhí)行動作32。作為另一示例,將動作28和30組合成一個動作。在另一示例中,提供移動對象、作為移動的結果而對邊界體積進行重新定向以及調整顆粒運動的附加動作??梢蕴砑尤魏纹渌陬w粒的流體模擬動作。
該方法是按照所示的順序提供的。可以連續(xù)地或與動作26并行地執(zhí)行動作22和 24。可以提供其它順序。在一個實施例中,動作22、24和26是在模擬之前執(zhí)行的初始化的一部分。在不進一步執(zhí)行初始化動作的情況下模擬固體對象與流體的交互。作為模擬圍繞或逆著固體對象的流體流的一部分重復地或迭代地執(zhí)行動作28、30和32。在模擬中,重復地計算作用在被模擬顆粒上的內部力和在顆粒與一個或多個固體對象之間的力。根據(jù)所計算的與對流體進行建模的顆粒的碰撞,在流體內用平流輸送固體對象,如果可移動的話。
在圖I的方法的示例中,執(zhí)行預處理。將大的固體對象劃分成一個或多個基元的小片段,并且每個片段隨后被隨著固體對象移動而平移和旋轉的板坯切割球包圍體積封閉。在模擬期間,查找包圍體積與網(wǎng)格單元塊之間的映射??梢詫⒋擞成湟暈橐环N板相 (board-phase)碰撞測試。針對與包圍體積交叉的每個非空網(wǎng)格單元,對抵靠著片段的包圍體積的單元內的每個顆粒應用碰撞測試。針對片段的基元進一步測試被發(fā)現(xiàn)在包圍體積內的顆粒以確定實際碰撞。當檢測到碰撞時,計算邊界力并作為外部力施加在碰撞顆粒上且反方向的力被作為反作用力施加于對象。
在動作22中,將一個或多個固體對象劃分成多個片段。固體對象是塊體、槳、船體、動物或與流體相交互的其它對象。固體對象可以是不移動或靜態(tài)的,諸如表示柱或墻壁。固體對象可以是移動的,諸如漂浮對象(例如船體)。交互對象可能通過流體而移位且也可以影響流體(例如,漂浮的木箱)。固體對象可以經(jīng)受外力,諸如槳被劃手移動、螺旋槳被電動機移動,或者魚自己移動。固體對象可以是自由漂浮的,或者不經(jīng)受電動機或肌肉力, 諸如漂浮的原木或下沉的石頭。動態(tài)對象可以諸如在重力、用戶施加的力下以及靠流體的力移動。靜態(tài)對象可以不移動,無論力如何(例如,固定安全外殼的壁)。固體對象可以具有固定表面或者可以具有柔性表面(例如,皮毛或其它可變形材料)。
為了進行模擬,將固體對象的表面建模為基元,諸如三角形的網(wǎng)狀物。其它潛在基元包括四邊形、六邊形、五邊形、圓形、球形、立方體、方栓、它們的組合或其它形狀?;ū贿吘壗雍喜⒈槐砻嫣畛湟员聿槐砻娼Y構的頂點。每個基兀表不固體對象的表面的一部分??梢杂迷S多基元來表示對象,諸如幾百個、幾千個或更多?;环纸M成單獨的片段以進行模擬。
基元可以是平面的,其中,每個將具有預定的法向方向(與基元正交)??梢允褂梅瞧矫婊谶@種情況下,可以根據(jù)基元的形狀來假設或計算法向方向?;€被加標簽以指示固體對象的內側或外側。加標簽在執(zhí)行碰撞分解時區(qū)別固體對象的內部和外部。
表示對象的基元的網(wǎng)狀物被分成基元的子集??梢詫⒒淖蛹殖善渌蛹?(例如子集的子集)。替換地,每個分離的子集具有對于片段的期望尺寸。
基元的期望子集是片段。片段是達到最大值的一個或多個基元的??梢詰萌魏巫畲笾禈藴剩T如最大表面面積、最大基元數(shù)目或其它標準?;环殖善沃敝粱拿總€子集小于該最大值。迭代地執(zhí)行該分離直至具有大數(shù)目的基元的固體對象被劃分成基元或片段的小子集。
用于給定片段的基元被連接或未連接。例如,固體對象可以包括緊密地間隔開的平行或非平面壁,使得選擇與壁交叉的切割平面將至少一個集合劃分成不連續(xù)的基元。壁的連接位于不同的片段中。任何給定片段的基元靠位置相關一在體積區(qū)域內。
每個片段將被封閉在包圍體積中。包圍體積具有基于給定模擬的尺寸。當固體對象中的基元的數(shù)目足夠大使得對象不能配合在一個包圍體積中時,對象被劃分成片段?;臄?shù)目可能過大而不能為每個基元分配唯一的包圍體積。因此,每個片段存在一個或多個基元,并且每個對象存在一個或多個片段。
對劃分的約束是每個基元與一個且僅一個對象相關聯(lián)。在基元的尺寸足夠大而不能配合在給定包圍體積內的情況下,可以將基元劃分成多個共面基元。
為了劃分固體對象,整個對象被軸對準的包圍盒包圍??梢允褂闷渌拍钅P?。替換地,不提供用于用于網(wǎng)狀物的劃分或初始固體對象的包圍盒。網(wǎng)狀物的劃分可以連續(xù)地分離出片段,諸如按次序分離出形成每個片段的基元(例如分離出片段I、然后片段2、然后片段3···)。替換地,迭代地執(zhí)行二元劃分。固體對象或固體對象的一部分的軸對準包圍盒被劃分成兩部分。重復網(wǎng)狀物的該二元分離直至與各部分相關聯(lián)的基元的子集小于閾值體積、尺寸,或者基元的數(shù)目足夠小。其余部分的二元劃分繼續(xù),直至得到期望尺寸的片段。
在一個示例性實施例中,將固體對象劃分成片斷。作為基元的列表給定固體對象, 用預先計算的軸對準包圍盒和片斷的最大尺寸,遞歸算法將網(wǎng)狀物劃分成小于最大尺寸的尺寸的片斷。在每次函數(shù)調用或迭代中,針對用于片斷的最大值比較圍繞對象的給定部分 (在第一迭代中為整個對象)的軸對準包圍盒的體積。如果軸對準包圍盒小于或等于最大值,則為該片斷產(chǎn)生包圍體積并終止該遞歸。否則,使用樞軸平面將該部分(例如當前子集的基元)分割成兩個子列表并對結果得到的子列表執(zhí)行遞歸調用(重復或迭代)。
選擇樞軸平面作為與軸對準包圍盒的中心交叉的平面,其中,該平面的法向平行于軸對準包圍盒的最長維度。針對列表中每個基元的質心點(即對象的當前部分的基元)比較樞軸平面并分類為質心點是在平面之上還是之下。將具有在平面的一側上的質心的基元分組為一部分。每當列表被一分為二時,針對每個結果得到的部分或子列表計算新的軸對準包圍盒(AABB)。該過程繼續(xù)直至所有部分被視為期望尺寸范圍的片段。
將表示本實施例的示例性代碼提供為
權利要求
1.一種用于在基于顆粒的模擬中的邊界處理的方法,該方法包括 用處理器將固體對象劃分成多個片斷; 用處理器形成用于所述多個中的每個片斷的板坯切割球; 用處理器來定義被分組成單元的被模擬顆粒的三維分布; 用處理器將用于片斷的板坯切割球映射到單元; 用處理器來檢測單元之一的至少一個被模擬顆粒與片斷之一的板坯切割球交叉; 檢測至少一個被模擬顆粒與片斷的基元之一的碰撞;以及 用處理器來計算碰撞的交互力。
2.權利要求I的方法,其中,所述固體對象被建模為軸對準包圍盒中的基元的網(wǎng)狀物,其中,劃分包括將基元分離成片斷,直至每個片斷小于最大值,并且其中,形成包括形成用于每個小于最大值的片斷的板坯切割球。
3.權利要求I的方法,其中,劃分包括迭代地執(zhí)行劃分作為固體對象或固體對象的一部分的軸對準包圍盒的二元劃分。
4.權利要求I的方法,其中,劃分和形成包括在執(zhí)行映射、檢測和計算之前執(zhí)行的初始化動作作為固體對象與流體的交互的模擬,在不進一步執(zhí)行初始化動作的情況下重復地執(zhí)行該模擬。
5.權利要求I的方法,其中,用于每個片斷的形成包括 根據(jù)片斷的基元的質心來確定板坯切割球的質心; 確定圍繞基元的半徑; 確定基元的所計算的法向; 定義與在相對于板坯切割球的質心的距離處的所計算法向正交的切割平面,使得基元在切割平面之間,板坯切割球包括切割平面和以板坯切割球的質心為中心并具有半徑的球體的一部分,該球體的該部分在切割平面之間。
6.權利要求I的方法,其中每個片斷包括基元,并且其中,用于每個片斷的形成包括計算取向作為基元的平均法向。
7.權利要求I的方法,其中,形成包括相互獨立地形成板坯切割球。
8.權利要求I的方法,其中,定義包括作為單元的中心的三維位置和單元內被模擬顆粒的列表的函數(shù)來定義每個單元。
9.權利要求I的方法,還包括將單兀存儲為一維列表并根據(jù)索引移位來從該一維列表訪問單元,所述索引移位是板坯切割球的半徑的函數(shù)。
10.權利要求I的方法,其中,映射包括根據(jù)每個板坯切割球的質心和半徑查找與每個板坯切割球交叉的單元,該查找是沒有包圍分級結構的。
11.權利要求I的方法,其中,檢測交叉包括測試單元之一的中心是否在半徑內和板坯切割球的切割平面之間。
12.權利要求I的方法,其中,迭代地執(zhí)行映射、檢測交叉、檢測碰撞以及計算以表示流體與固體對象的交互;以及 還包括 計算用于被模擬顆粒的內部力;以及 根據(jù)碰撞在流體內用平流輸送固體對象。
13.在非臨時性計算機可讀存儲介質中,該非臨時性計算機可讀存儲介質具有存儲在其中的表示可被已編程處理器執(zhí)行以用于在基于顆粒的模擬中的邊界處理的指令的數(shù)據(jù),所述存儲介質包括用于如下的指令 將表示對象的基元的網(wǎng)狀物分離成基元的子集;以及 根據(jù)包括板坯切割球的包圍體積來檢測顆粒與對象的碰撞。
14.權利要求13的非臨時性計算機可讀存儲介質,其中,分離包括定義用于網(wǎng)狀物的不同片斷的板坯切割球,所述板坯切割球是相互獨立的,使得在沒有包圍分級結構的情況下執(zhí)行檢測。
15.權利要求13的非臨時性計算機可讀存儲介質,其中,將網(wǎng)狀物分離包括重復網(wǎng)狀物的二元分離,直至子集小于成員的閾值體積、尺寸或數(shù)目。
16.權利要求13的非臨時性計算機可讀存儲介質,其中,分離包括定義用于各子集的板坯切割球,每個包圍體積獨立于其它包圍體積。
17.權利要求13的非臨時性計算機可讀存儲介質,其中,分離包括定義用于各子集的板坯切割球,每個板坯切割球的取向被計算為各子集中的基元的平均法向。
18.權利要求13的非臨時性計算機可讀存儲介質,還包括 將顆粒分組成單元的三維分布;以及 其中,檢測包括確定單元的中心在板坯切割球之一的半徑內部并在其切割平面之間。
19.在非臨時性計算機可讀存儲介質中,非臨時性計算機可讀存儲介質具有存儲在其中的表示可被已編程處理器執(zhí)行以用于在基于顆粒的模擬中的邊界處理的指令的數(shù)據(jù),所述存儲介質包括用于如下的指令 創(chuàng)建邊界的獨立包圍體積作為板坯切割球;以及 根據(jù)板坯切割球來檢測流體的顆粒與邊界的碰撞。
20.權利要求19的非臨時性計算機可讀存儲介質,其中,創(chuàng)建包括定義具有取向的每個板坯切割球,每個板坯切割球的取向是與包圍體積相關聯(lián)的邊界的至少一個基元的法向的函數(shù)。
21.權利要求19的非臨時性計算機可讀存儲介質,其中,創(chuàng)建包括將邊界二元劃分成片斷,所述片斷通過重復二元劃分并在片斷周圍形成板坯切割球形成的。
全文摘要
用于基于顆粒的模擬的邊界處理。在基于顆粒的模擬中執(zhí)行邊界處理。板坯切割球處理在基于顆粒的模擬中定義用于與顆粒的交互的包圍體積。將板坯切割球用于固體對象與顆粒的碰撞檢測??梢栽跊]有包圍體積分級結構的情況下將固體對象劃分成多個獨立板坯切割球以用于高效的碰撞檢測??梢栽谥貜投獎澐植僮鲿r處理固體對象的劃分。可以通過基于邊界的封閉部分來確定每個板坯切割球的取向而不是測試多個可能的取向來進一步增加處理速度。
文檔編號G06F17/50GK102982192SQ20121020948
公開日2013年3月20日 申請日期2012年6月25日 優(yōu)先權日2011年6月24日
發(fā)明者R.G.麥丹尼爾, Z.塔米米 申請人:西門子公司