靈活塊ilu因式分解的制作方法
【專利摘要】用于靈活塊ILU因式分解的系統(tǒng)和方法,所述靈活塊ILU因式分解將支持具有可變大小的稀疏塊。
【專利說明】靈活塊I LU因式分解
[0001] 相關(guān)申請(qǐng)的交叉引用
[0002] 不適用。
[0003] 關(guān)于聯(lián)邦資助研究的聲明
[0004] 不適用。
技術(shù)領(lǐng)域
[0005] 本發(fā)明總體上涉及用于靈活塊ILU因式分解的系統(tǒng)和方法。更具體來說,本發(fā)明涉 及將支持具有可變大小的稀疏塊的靈活塊ILU因式分解。
【背景技術(shù)】
[0006] 許多類型的物理過程(包括石油儲(chǔ)層內(nèi)的流體流動(dòng))是受偏微分方程控制。通常使 用有限差、有限體積或有限元方法來求解這些可能非常復(fù)雜的偏微分方程。所有這些方法 將物理模型劃分為被稱為網(wǎng)格塊、單元格(cell)或元素的單元。在這些物理單元中的每一 個(gè)中,根據(jù)一個(gè)或多個(gè)求解變量或未知量來得出解。與每一物理單元相關(guān)聯(lián)的是一組控制 這些未知量的特性的方程,其中方程的數(shù)量等于未知量的數(shù)量。這些方程還含有來自相鄰 物理單元的未知量。
[0007] 因此,方程存在著一種結(jié)構(gòu),其中針對(duì)給定物理單元的方程含有來自所述物理單 元和來自它的相鄰物理單元的未知量。最適宜地是使用節(jié)點(diǎn)與連接的組合來描繪這種結(jié) 構(gòu),其中節(jié)點(diǎn)由小圓圈來描繪,而連接是由兩個(gè)節(jié)點(diǎn)之間的線來描繪。節(jié)點(diǎn)處的方程含有所 述節(jié)點(diǎn)處的未知量和連接到所述節(jié)點(diǎn)的相鄰節(jié)點(diǎn)處的未知量。
[0008] 所有節(jié)點(diǎn)處的方程被集合成單一矩陣方程。通常,獲得偏微分方程的所需解的關(guān) 鍵任務(wù)是求解這個(gè)矩陣方程。完成這個(gè)任務(wù)的最有效方式之一是通過使用不完全LU因式分 解或ILU,其中原始矩陣被近似分解為兩個(gè)矩陣L和U的乘積。矩陣L和U為下三角矩陣和上三 角矩陣而且分別具有與原始矩陣的下部和上部類似的非零結(jié)構(gòu)。使用這種分解,通過正向 代入和反向代入來迭代地獲得解。
[0009] 已證明塊不完全LU分解(BILU)求解器是求解由偏微分方程的離散化得到的線性 系統(tǒng)的有效方法。在大多數(shù)線性系統(tǒng)中,系數(shù)矩陣具有作為元(entry)的稠密塊子矩陣。然 而,在用于石油/天然氣開采地面設(shè)施的應(yīng)用中,那些塊子矩陣是稀疏的。可通過將偽零項(xiàng) 添加至塊中將塊子矩陣當(dāng)作稠密矩陣,但是當(dāng)塊較大并稀疏時(shí),這可能導(dǎo)致太多的偽元。例 如,在具有20種烴組分的組成模型中,這種具有偽元的處理可能取決于液壓方程、地面網(wǎng)絡(luò) 配置、有效約束設(shè)置和一些其他因素而使矩陣大小增加10倍。除此之外,一些區(qū)域中的節(jié)點(diǎn) 處的方程數(shù)量可能不同于其他區(qū)域中的節(jié)點(diǎn)處的方程數(shù)量,并且所得的塊大小將從區(qū)域到 區(qū)域變化。因此,具有剛性塊結(jié)構(gòu)的常規(guī)BILU不是用于地面網(wǎng)絡(luò)的合理選擇。
[0010] 如圖IA和IB所示,簡(jiǎn)單的開采地面網(wǎng)絡(luò)通常具有樹狀結(jié)構(gòu)(圖1A),并且在一些情 況下包括表示例如再注入的一個(gè)或多個(gè)回路(圖1B)。控制方程是節(jié)點(diǎn)上的質(zhì)量守恒方程、 連接上的液壓方程、穿孔連接上的穿孔方程和節(jié)點(diǎn)或連接上的約束設(shè)置。主要變量是具有 兩組輔助變量的節(jié)點(diǎn)上的壓力P和組分組成B,有效連接上的總質(zhì)量流率qT和穿孔連接上的 組分流率qfi。但是,輔助變量在集合雅可比矩陣(Jacobian matrix)時(shí)被消去,并且最終系 數(shù)矩陣僅包括具有主要變量P和^的質(zhì)量平衡方程,其中i = 1,…,nc-Ι,并且nc是組分的總 數(shù)。主要變量被連續(xù)標(biāo)記在每一節(jié)點(diǎn)上,因此每一節(jié)點(diǎn)如下具有由壓力和組成所組成的未 知向量、
沂得系數(shù)矩陣在圖2中示出,所述系數(shù)矩陣擁有塊結(jié)構(gòu),其中塊之間 的連接模式表示圖IB的開采地面網(wǎng)絡(luò)中的節(jié)點(diǎn)之間的具有一些虛擬連接的物理連接。系數(shù) 矩陣的發(fā)生率不是對(duì)稱的。圖2中的元[X]的每一行表示質(zhì)量平衡方程,并且每一塊行表示 與圖IB的相應(yīng)物理節(jié)點(diǎn)相關(guān)的三個(gè)質(zhì)量平衡方程的簇。因?yàn)樵趫DIB中存在七個(gè)物理節(jié)點(diǎn), 所以在圖2中存在七個(gè)塊行。每一元[X]具有系數(shù)值并且還通過質(zhì)量平衡方程表示物理節(jié)點(diǎn) 之間的連接??偭髀实南タ赡軐⑻钊朐?fill-in)引入如圖2所示的系數(shù)矩陣中。因?yàn)樘?入元不存在于原始開采地面網(wǎng)絡(luò)連接中,所以填入元被稱為虛擬連接。例如,在連接1-3和 3-5上的總流率消除之后,盡管無物理連接存在于圖1中的節(jié)點(diǎn)5與節(jié)點(diǎn)1之間,在圖2中存在 一種從節(jié)點(diǎn)5至節(jié)點(diǎn)1的虛擬連接方式,其對(duì)應(yīng)于系數(shù)矩陣中的第15行。
[0011]在給定圖2所示的系數(shù)矩陣的情況下,可應(yīng)用稀疏直接求解器,但由于非常多的填 入元,特別是針對(duì)由具有復(fù)雜配置和約束設(shè)置的大型地面網(wǎng)絡(luò)得到的矩陣的情況,所述稀 疏直接求解器的計(jì)算和存儲(chǔ)成本很高。明顯的替代方法是ILU類型迭代求解器,并且其性能 可使用分塊方法來提高。然而,對(duì)于開采地面網(wǎng)絡(luò)方程來說,難以劃分矩陣來獲得具有稠密 塊或近似稠密塊的塊結(jié)構(gòu)。
【附圖說明】
[0012]下文參考附圖來描述本公開,其中相同元件引用相同參考數(shù)字,并且其中:
[0013]圖IA是示出簡(jiǎn)單開采地面網(wǎng)絡(luò)的示意顯示。
[0014]圖IB是不出具有另外再注入回路的圖IA的開米地面網(wǎng)絡(luò)的不意顯不。
[0015] 圖2是示出控制圖IB的開采地面網(wǎng)絡(luò)中的流體流動(dòng)的線性化偏微分方程的表示的 系數(shù)矩陣。
[0016] 圖3A是示出用于實(shí)現(xiàn)本公開的方法的一個(gè)實(shí)施方案的流程圖。
[0017]圖3B是圖3A所示的流程圖的連續(xù)圖。
[0018]圖3C是圖3B所示的流程圖的連續(xù)圖。
[0019]圖3D是圖3C所示的流程圖的連續(xù)圖。
[0020]圖3E是圖3D所示的流程圖的連續(xù)圖。
[0021]圖4A是示出塊之間的連接模式的鄰接矩陣,所述塊表示圖IB的開采地面網(wǎng)絡(luò)中的 節(jié)點(diǎn)之間的物理連接和虛擬連接。
[0022]圖4B是圖4A中的鄰接矩陣,其示出在重排在圖4A中表示的所有節(jié)點(diǎn)之后通過符號(hào) 因式分解確定的填入模式。
[0023] 圖5是column_index(頂部)和first_in_row索引(底部),其示出圖4B中以CSR格式 存儲(chǔ)的連接。
[0024] 圖6是示出圖3中的步驟318-324的row_in_block行索引。
[0025] 圖7是示出用于實(shí)現(xiàn)本公開的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施方案的方框圖。
[0026] 圖8是雙向鏈表的實(shí)例,其示出頭部H、尾部T、前一個(gè)索引(P)、后一個(gè)索引(N)、元 的列索引(C)和系數(shù)值(V)。
【具體實(shí)施方式】
[0027] 本公開通過提供用于靈活塊ILU因式分解的系統(tǒng)和方法而克服現(xiàn)有技術(shù)中的一個(gè) 或多個(gè)缺陷,所述靈活塊ILU因式分解將支持具有可變大小的稀疏塊。
[0028] 在一個(gè)實(shí)施方案中,本公開包括用于靈活塊ILU因式分解的方法,其包括:i)使用 系數(shù)矩陣中的每一物理連接和每一虛擬連接以及用于系數(shù)矩陣的塊數(shù)據(jù)來定義表示開采 地面網(wǎng)絡(luò)中的多個(gè)物理節(jié)點(diǎn)的鄰接矩陣,所述鄰接矩陣包括多個(gè)塊;ii)重排鄰接矩陣中的 每一物理節(jié)點(diǎn);iii)進(jìn)行符號(hào)因式分解來確定用于重排鄰接矩陣的填入模式,其中每一填 入元被定位成以下各項(xiàng)中的一個(gè):i)重排鄰接矩陣中的塊中的一個(gè)的內(nèi)部和i i)重排鄰接 矩陣中的塊的外部;以及iv)使用來自填入模式的每一填入元和計(jì)算機(jī)處理器在系數(shù)矩陣 上進(jìn)行數(shù)值ILU因式分解,其中位于塊中的一個(gè)中的每一填入元被保持并且位于塊的外部 的每一填入元被丟棄。
[0029] 在另一實(shí)施方案中,本公開包括有形地?cái)y帶用于靈活塊ILU因式分解的計(jì)算機(jī)可 執(zhí)行指令的非暫態(tài)程序載體裝置,所述指令可執(zhí)行來實(shí)現(xiàn):i)使用系數(shù)矩陣中的每一物理 連接和每一虛擬連接以及用于系數(shù)矩陣的塊數(shù)據(jù)來定義表示開采地面網(wǎng)絡(luò)中的多個(gè)物理 節(jié)點(diǎn)的鄰接矩陣,所述鄰接矩陣包括多個(gè)塊;ii)重排鄰接矩陣中的每一物理節(jié)點(diǎn);iii)進(jìn) 行符號(hào)因式分解來確定用于重排鄰接矩陣的填入模式,其中每一填入元被定位成以下各項(xiàng) 中的一個(gè):i)重排鄰接矩陣中的塊中的一個(gè)的內(nèi)部和ii)重排鄰接矩陣中的塊的外部;以及 iv)使用來自填入模式的每一填入元在系數(shù)矩陣上進(jìn)行數(shù)值ILU因式分解,其中位于塊中的 一個(gè)中的每一填入元被保持并且位于塊的外部的每一填入元被丟棄。
[0030] 在另一實(shí)施方案中,本公開包括有形地?cái)y帶用于靈活塊ILU因式分解的計(jì)算機(jī)可 執(zhí)行指令的非暫態(tài)程序載體裝置,所述指令可執(zhí)行來實(shí)現(xiàn):i)使用系數(shù)矩陣中的每一物理 連接和每一虛擬連接以及用于系數(shù)矩陣的塊數(shù)據(jù)來定義表示開采地面網(wǎng)絡(luò)中的多個(gè)物理 節(jié)點(diǎn)的鄰接矩陣,所述鄰接矩陣包括多個(gè)塊;ii)重排鄰接矩陣中的每一物理節(jié)點(diǎn);iii)進(jìn) 行符號(hào)因式分解來確定用于重排鄰接矩陣的填入模式,其中每一填入元表示物理連接和虛 擬連接中的一個(gè)并且被定位成以下各項(xiàng)中的一個(gè):i)重排鄰接矩陣中的塊中的一個(gè)的內(nèi)部 和ii)重排鄰接矩陣中的塊的外部;以及iv)使用來自填入模式的每一填入元在系數(shù)矩陣上 進(jìn)行數(shù)值ILU因式分解,其中位于塊中的一個(gè)中的每一填入元被保持并且位于塊的外部的 每一填入元被丟棄。
[0031] 特定地描述了本公開的主題,然而,描述本身并不意圖限制本公開的范圍。因此所 述主題也可用其他方式體現(xiàn),以便結(jié)合其他當(dāng)前或?qū)淼募夹g(shù)而包括不同的步驟或與本文 所描述的步驟類似的步驟的組合。此外,盡管術(shù)語"步驟"在本文中可用于描述所使用方法 的不同要素,但所述術(shù)語不應(yīng)解釋為暗示在本文所公開的各種步驟之中或之間的任何具體 順序,除非另外由描述明確地限定為具體順序。雖然本公開可應(yīng)用于石油和天然氣工業(yè),但 本公開不局限于此,并且還可應(yīng)用于其他行業(yè)以實(shí)現(xiàn)類似結(jié)果。
[0032] 方法描述
[0033] 現(xiàn)參考圖3A-3E,其示出用于實(shí)現(xiàn)本公開的方法300的一個(gè)實(shí)施方案的流程圖。 [0034]在步驟302中,使用壓縮稀疏行(CSR)格式和塊數(shù)據(jù)自動(dòng)輸入用于系數(shù)矩陣的連 接,或可使用參考圖7進(jìn)一步描述的客戶端接口和/或視頻接口來手動(dòng)地輸入所述連接。在 圖2中,例如,使用CSR格式((first_in_row索弓丨),(col ._index))和塊數(shù)據(jù)(row_in_block 行索引)輸入由每一元[X]表示的用于系數(shù)矩陣的連接。塊數(shù)據(jù)存儲(chǔ)了屬于系數(shù)矩陣中同一 節(jié)點(diǎn)的行索引或方程索引。如圖2所示,系數(shù)矩陣中的行1-3屬于塊行1(即節(jié)點(diǎn)1),行4-6屬 于塊行2(即節(jié)點(diǎn)2),等等。因此,用于系數(shù)矩陣中的每一塊行的第一行表示為圖6的row_in_ block行索引中的元,其中最后的元是22以便指定21行的終點(diǎn)。
[0035]在步驟304中,使用系數(shù)矩陣連接和塊數(shù)據(jù)來定義鄰接矩陣。在圖4A中,例如,使用 圖2中的系數(shù)矩陣連接和用于所述連接的塊數(shù)據(jù)來定義鄰接矩陣。鄰接矩陣示出塊之間的 連接模式,其中每一元[X ]表示圖IB的開采地面網(wǎng)絡(luò)中的節(jié)點(diǎn)之間的物理連接或虛擬連接。
[0036] 在步驟306中,使用本領(lǐng)域中眾所周知的技術(shù)來重排鄰接矩陣中表示的所有節(jié)點(diǎn), 所述技術(shù)例如像Cuthi Il-Mckee排序。重排從底部處的穿孔節(jié)點(diǎn)開始并將減少由于符號(hào)ILU (k)因式分解所需的填入元的數(shù)量。
[0037] 在步驟308中,通過在重排鄰接矩陣上進(jìn)行符號(hào)ILU(k)因式分解來確定用于重排 鄰接矩陣的填入模式。在圖4A中表示的節(jié)點(diǎn)被重排之后,在重排鄰接矩陣上進(jìn)行符號(hào)ILU (k)因式分解以確定填入模式,例如,如由圖4B中的每一第2級(jí)填入元[y]所示。
[0038] 在步驟310中,以使用first_in_row索引和col ._index的CSR格式存儲(chǔ)填入模式。 在圖5中,例如,col._index(頂部)和first_in_row索引(底部)示出圖4B中以CSR格式存儲(chǔ) 的連接。col ._index表示其中通過圖4B中的元[X或y]表示的每一物理連接或虛擬連接從左 開始向右(列)并從上開始向下(行)定位的列。f ir st_in_row索引表示通過元[X或y ]表示的 物理連接或虛擬連接,所述元[X或y]首先出現(xiàn)在從頂部開始向底部的每一行中。第一行中 的第一連接是1,第二行中的第一連接是3,第三行中的第一連接是5并以此類推。最后的連 接是25以便指定連接的終點(diǎn)。
[0039] 在步驟312中,方法300起始以i = l開始、以1遞增并以i = n結(jié)束的回路,其中i表示 行索引數(shù)并且η表示系數(shù)矩陣中的行總數(shù)。行索引數(shù)表示由系數(shù)矩陣中的線性化質(zhì)量平衡 方程得到的一行系數(shù)元。對(duì)于圖2中的系數(shù)矩陣來說,行總數(shù)是21。以這種方式,方法300開 始數(shù)值因式分解的過程,所述數(shù)值因式分解在系數(shù)矩陣上逐行進(jìn)行。在i = 21之后,方法300 結(jié)束。否則,方法300進(jìn)行至圖3B中的步驟314。
[0040] 在步驟314中,方法300確定i是否大于1。如果i不大于1(即第一行),那么方法300 進(jìn)行至步驟326,因?yàn)槠洳恍枰灰蚴椒纸?。如果i大于1,那么方法300進(jìn)行至步驟316。
[0041 ] 在步驟316中,bi被設(shè)定為等于定位有第i行的塊行。如果i = 2,那么bi = l。
[0042] 在步驟318中,方法300起始以索引=first_in_row索引(bi)開始、以1遞增并以索 引=first_in_row索引(bi + l)-l結(jié)束的回路。在索引超過first_in_row索引(bi + l)-l之 后,方法300進(jìn)行至圖3C中的步驟326。否則,方法300進(jìn)行至步驟320。根據(jù)圖5中的first_ in_row索引(底部),如果i = 2,那么bi = l并且索引=first_in_row索引(1)或1〇 [0043] 在步驟320中,bj被設(shè)定為等于col_index(索引)。如果i = 2,那么bj =與針對(duì)包括 元1、3的b i的塊行相同的塊行。
[0044] 在步驟322中,方法300起始以jndex = row_in_block行索引(bj)開始、以1遞增并 以jndex = row_in_block row索引(bj+l)-l結(jié)束的回路。方法300重復(fù)步驟324直到j(luò)ndx達(dá) 到row_in_block行索引(bj+l)-l為止并接著返回至步驟318。
[0045] 在步驟324中,f ill_in_allowed( j)被設(shè)定為等于真(true)。如果i = 2,那么bi = I,bj = l并且first_in_row索引中的第一元=1。在步驟322中,根據(jù)圖6,row_in_block行索 引 (I) = 1并且row_in_block行索引(2) = 4。因此,j從1變化至3并且f ill_in_allowed( 1)、 行11_;[11_&110¥6(1(2)和;1^11_;[11_&110¥6(1(3)被設(shè)定為真。
[0046] 在步驟326中,系數(shù)矩陣中第i行中的元以漸增列索引的順序被加載到雙向鏈表 (LL),并且頭部被設(shè)定為等于LL中的第一元。雙向鏈表含有四個(gè)元素:l)LL%pr ev,其表示 前一個(gè)索引(P) ;2)LL%next,其表示后一個(gè)索引(N) ;3)LL%col_index,其表示元的列索引 (C);以及4)LL%coef,其表示系數(shù)值(V) AL的實(shí)例在圖8中示出,其包括頭部H、尾部T和四 個(gè)元素 P、C、V、N。
[0047] 在步驟328中,方法300確定i是否大于1。如果i不大于1(即第一行),那么方法300 進(jìn)行至步驟329。如果i大于1,那么方法300跳過第一行并進(jìn)行至步驟330,因?yàn)榈谝恍胁恍?要被因式分解。
[0048]在步驟329中,頭部1被設(shè)定為等于0并且當(dāng)前量(current)被設(shè)定為等于頭部。頭 部1被設(shè)定為〇以便跳過步驟332并進(jìn)行至步驟333,因?yàn)榈谝恍胁恍枰灰蚴椒纸狻?br>[0049]在步驟330中,頭部1被設(shè)定為等于頭部并且當(dāng)前量被設(shè)定為等于頭部。
[0050] 在步驟332中,方法300確定頭部1是否大于0。如果頭部1不大于0,那么方法300進(jìn) 行至圖3E中的步驟333。如果頭部1大于0,那么方法300進(jìn)行至步驟334。
[0051] 在步驟333中,LL中的所有元被移動(dòng)至M的第i行,并且所述方法返回至步驟312以 使用i的下一個(gè)增量來進(jìn)行重復(fù)。作為步驟312-354的結(jié)果,M表示用于存儲(chǔ)系數(shù)矩陣的LU因 式分解的矩陣。所移動(dòng)的元是來自步驟352的元。
[0052] 在步驟334中,k被設(shè)定為等于LL(頭部I) %col_index。
[0053] 在步驟336中,方法300確定k是否小于i。如果k不小于i,那么方法300進(jìn)行至圖3D 中的步驟354。如果k小于i,那么方法300進(jìn)行至步驟338。
[0054] 在步驟338中,B被設(shè)定為等于LL(頭部l)%coef,其中B由B/Mkk更新并且Mkk是矩陣 M的行k和列k處的元。
[0055] 在步驟340中,方法300起始以索引=M%first_in_row索引(k)開始、以1遞增并以 索引=M%first_in_row索引(k+l)-l結(jié)束的回路。在索引超過M%first_in_row索引(k+ 1)_1之后,方法300進(jìn)行至圖3D中的步驟354。否則,方法300進(jìn)行至步驟342。這個(gè)回路訪問 矩陣M的行k中的所有元。
[0056]在步驟342中,j被設(shè)定為等于M%col(索引)。這個(gè)步驟將設(shè)定針對(duì)j的列索引。 [0057] 在步驟344中,方法300確定j是否大于k并且f ill_in_allowed( j)是否等于真。如 果j不大于1^或行11_;[11_3110¥6(1(」)不等于真,那么方法300返回至步驟340。如果」大于1^并 且fill_in_all0wed(j)等于真,那么方法300進(jìn)行至步驟346。因式分解需要存取M的上三角 矩陣U,因此j必須大于k。此外,從步驟324起針對(duì)真來檢查f iIl_in_allowed( j)。
[0058]在步驟346中,搜索LL以找到具有列索引j的元。
[0059]在步驟348中,方法300確定是否找到LL中具有列索引j的元。如果找到LL中具有列 索引j的元,那么方法300進(jìn)行至步驟352。如果未找到LL中具有列索引j的元,那么方法300 進(jìn)行至步驟350。具有列索引j的新元被稱作用于ILU因式分解的填入元。
[0000] 在步驟350中,新元(填入元)添加至LL,其中使用眾所周知的雙向鏈表的插入運(yùn) 算。如由圖8中的LL所示,新元包括指針(P和N)和元的列索引C(這里是j)。
[0061 ] 在步驟352中,LL(當(dāng)前量)%coef被設(shè)定為等于LL(當(dāng)前量)%coef-B(Mkj)。這個(gè)步 驟更新來自步驟350的LL中新元的值。
[0062] 在步驟354中,頭部1被設(shè)定為等于LL (頭部1) % next并且方法300返回至圖3C中的 步驟332。以這種方式,指針頭部1可向下游和上游移動(dòng)。例如,其當(dāng)前位置是頭部1并且其下 游鄰近位置是LL(頭部1) % next,并且其上游鄰近位置是LL(頭部1) % prev。
[0063]方法300維持了開采地面網(wǎng)絡(luò)中的原始物理連接,其中所得鄰接矩陣形類似于物 理連接模式。方法300保存了開采地面網(wǎng)絡(luò)的原始樹狀結(jié)構(gòu),從而幫助減少因式分解中的填 入元或得出具有相同填入級(jí)的更精確因式分解。方法300的另一個(gè)優(yōu)點(diǎn)在于,所得系數(shù)矩陣 表示每一節(jié)點(diǎn)處的質(zhì)量守恒。如果對(duì)每一節(jié)點(diǎn)上的塊進(jìn)行完全因式分解,那么迭代求解器 僅需要利用被精確處理的節(jié)點(diǎn)上質(zhì)量分布來操縱節(jié)點(diǎn)之間的流運(yùn)輸。利用這些優(yōu)點(diǎn),方法 300的性能比常規(guī)ILU求解器更加有效。
[0064]系統(tǒng)描述
[0065] 本公開可通過計(jì)算機(jī)可執(zhí)行指令程序?qū)崿F(xiàn),所述計(jì)算機(jī)可執(zhí)行指令程序例如程序 模塊,一般被稱為由計(jì)算機(jī)執(zhí)行的軟件應(yīng)用或應(yīng)用程序。軟件可包括例如例程、程序、對(duì)象、 組件和進(jìn)行具體任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu)。軟件形成允許計(jì)算機(jī)根據(jù)輸入 源作出反應(yīng)的接口。Nexus?是由Landmark Graphics Corporation銷售的商業(yè)軟件應(yīng)用,其 可作為接口應(yīng)用來實(shí)現(xiàn)本公開。軟件也可與其他代碼段配合來響應(yīng)于結(jié)合所接收數(shù)據(jù)源被 接收的數(shù)據(jù)而起始多種任務(wù)。軟件也可存儲(chǔ)和/或攜帶于任何種類的存儲(chǔ)器上,例如CD-R0M、磁盤、磁泡存儲(chǔ)器和半導(dǎo)體存儲(chǔ)器(例如,各種類型的RAM或ROM)。另外,軟件和其結(jié)果 可在各種載體介質(zhì)上傳輸,所述載體介質(zhì)例如光纖、金屬導(dǎo)線,和/或通過各種網(wǎng)絡(luò)中的任 何網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))傳輸。
[0066] 此外,本領(lǐng)域技術(shù)人員將理解,可使用多種計(jì)算機(jī)系統(tǒng)配置來實(shí)踐本公開,所述計(jì) 算機(jī)系統(tǒng)配置包括手持式裝置、多處理器系統(tǒng)、基于微處理器或可編程的消費(fèi)者電子設(shè)備、 微型計(jì)算機(jī)、大型計(jì)算機(jī)等。任何數(shù)量的計(jì)算機(jī)系統(tǒng)和計(jì)算機(jī)網(wǎng)絡(luò)都可被接受與本公開一 起使用。本公開也可在分布式計(jì)算環(huán)境中實(shí)踐,其中任務(wù)是通過由通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處 理裝置進(jìn)行。在分布式計(jì)算環(huán)境中,程序模塊可位于包括記憶存儲(chǔ)裝置的本地計(jì)算機(jī)存儲(chǔ) 介質(zhì)和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)兩者中。因此,本公開可以結(jié)合計(jì)算機(jī)系統(tǒng)或其他處理系統(tǒng)中 的各種硬件、軟件或其組合來實(shí)現(xiàn)。
[0067] 現(xiàn)在參照?qǐng)D7,示出用于在計(jì)算機(jī)上實(shí)現(xiàn)本公開的系統(tǒng)的一個(gè)實(shí)施方案的方框圖。 系統(tǒng)包括計(jì)算單元,有時(shí)稱為計(jì)算系統(tǒng),其含有存儲(chǔ)器、應(yīng)用程序、客戶端接口、視頻接口和 處理單元。計(jì)算單元只是適用的計(jì)算環(huán)境的一個(gè)實(shí)例,并不意圖暗示對(duì)本公開的使用范圍 或功能性的任何限制。
[0068] 存儲(chǔ)器主要存儲(chǔ)應(yīng)用程序,其也可被描述為含有計(jì)算機(jī)可執(zhí)行指令的程序模塊, 所述指令由用于實(shí)現(xiàn)本文所描述的和在圖3A-3E所示的本公開的計(jì)算單元執(zhí)行。因此,存儲(chǔ) 器包括靈活塊ILU因式分解模塊,所述模塊實(shí)現(xiàn)參考圖3A-3E所描述的步驟300-354。靈活塊 ILU因式分解模塊可整合來自圖7示出的剩余應(yīng)用程序的功能性。特別地,Nexus?可用作接 口應(yīng)用來進(jìn)行圖3A-3E中的剩余步驟。盡管Nexus?可用作接口應(yīng)用,但可替代地使用其他接 口應(yīng)用,或者靈活塊ILU因式分解模塊可用作獨(dú)立應(yīng)用。
[0069] 盡管計(jì)算單元被示出為具有廣義存儲(chǔ)器,但計(jì)算單元通常包括多種計(jì)算機(jī)可讀介 質(zhì)。舉例但并非限制地來說,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算系統(tǒng) 存儲(chǔ)器可包括呈易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM) 和隨機(jī)存取存儲(chǔ)器(RAM)?;据斎?輸出系統(tǒng)(BIOS)典型地存儲(chǔ)在ROM中,所述基本輸入/ 輸出系統(tǒng)含有基本例程,所述基本例程有助于如在啟動(dòng)期間在計(jì)算單元內(nèi)的元件之間傳遞 信息。RAM典型地含有可處理單元可立即存取和/或正在處理單元上運(yùn)算的數(shù)據(jù)和/或程序 模塊。舉例但并非限制地來說,計(jì)算單元包括操作系統(tǒng)、應(yīng)用程序、其他程序模塊和程序數(shù) 據(jù)。
[0070] 存儲(chǔ)器中所示的組件也可被包括在其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算 機(jī)存儲(chǔ)介質(zhì)中,或所述組件可通過應(yīng)用程序接口( "API")或云計(jì)算在計(jì)算單元中實(shí)現(xiàn),所述 應(yīng)用程序接口或云計(jì)算可駐留在通過計(jì)算機(jī)系統(tǒng)或網(wǎng)絡(luò)連接的單獨(dú)計(jì)算單元上。僅舉例來 說,硬盤驅(qū)動(dòng)器可從不可移動(dòng)、非易失性磁介質(zhì)讀取或?qū)懭氲剿鼋橘|(zhì)中,磁盤驅(qū)動(dòng)器可從 可移動(dòng)、非易失性磁盤讀取或?qū)懭氲剿龃疟P中,并且光盤驅(qū)動(dòng)器可從可移動(dòng)、非易失性光 盤(例如CD ROM或其他光學(xué)介質(zhì))讀取或?qū)懭氲剿龉獗P中??稍谑纠圆僮鳝h(huán)境中使用的 其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)可包括但不限于:盒式磁帶、閃存 卡、數(shù)字通用盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。上文所討論的驅(qū)動(dòng)器和其相關(guān)聯(lián)計(jì)算機(jī) 存儲(chǔ)介質(zhì)提供對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他用于計(jì)算單元的數(shù)據(jù)的存儲(chǔ)。
[0071] 客戶端可通過客戶端接口將命令和信息輸入計(jì)算單元,所述客戶端接口可以是如 鍵盤和指向裝置的輸入裝置,所述指向裝置所述通常被稱為鼠標(biāo)、軌跡球或觸摸板。輸入裝 置可包括麥克風(fēng)、控制桿、碟狀衛(wèi)星和掃描儀等。通常,這些和其他輸入裝置通過耦接至系 統(tǒng)總線的客戶端接口與處理單元相連接,但也可通過其他接口和總線結(jié)構(gòu)連接,所述總線 結(jié)構(gòu)例如并行端口或通用串行總線(USB)。
[0072] 監(jiān)視器或其他類型的顯示裝置可通過例如視頻接口的接口連接至系統(tǒng)總線。圖形 用戶接口( "GUI")也可與視頻接口 一起使用來從客戶端接口接收指令并將指令傳輸至處理 單元。除監(jiān)視器之外,計(jì)算機(jī)也可包括其他外圍輸出裝置,例如揚(yáng)聲器和打印機(jī),其可通過 輸出外圍接口連接。
[0073] 盡管未示出計(jì)算單元的許多其他內(nèi)部組件,但本領(lǐng)域普通技術(shù)人員將理解,這類 組件和其相互連接關(guān)系是眾所周知。
[0074]盡管已經(jīng)結(jié)合當(dāng)前的優(yōu)選實(shí)施方案描述本公開,但本領(lǐng)域技術(shù)人員將理解,并不 意圖將本公開限于這些實(shí)施方案。因此,預(yù)期的是:在不脫離由所附權(quán)利要求書和其等效內(nèi) 容所限定的本公開的精神和范圍的情況下,可對(duì)所公開的實(shí)施方案做出各種替代實(shí)施方案 和修改。
【主權(quán)項(xiàng)】
1. 一種用于靈活塊ILU因式分解的方法,其包括: 使用系數(shù)矩陣中的每一物理連接和每一虛擬連接以及用于所述系數(shù)矩陣的塊數(shù)據(jù)來 定義表示開采地面網(wǎng)絡(luò)中的多個(gè)物理節(jié)點(diǎn)的鄰接矩陣,所述鄰接矩陣包括多個(gè)塊; 重排所述鄰接矩陣中的每一物理節(jié)點(diǎn); 進(jìn)行符號(hào)因式分解來確定用于所述重排鄰接矩陣的填入模式,其中每一填入元被定位 成以下各項(xiàng)中的一個(gè):i)所述重排鄰接矩陣中的所述塊中的一個(gè)的內(nèi)部;以及ii)所述重排 鄰接矩陣中的所述塊的外部;以及 使用來自所述填入模式的每一填入元和計(jì)算機(jī)處理器在所述系數(shù)矩陣上進(jìn)行數(shù)值ILU 因式分解,其中位于所述塊中的一個(gè)中的每一填入元被保持并且位于所述塊的外部的每一 填入元被丟棄。2. 如權(quán)利要求1所述的方法,其中所述系數(shù)矩陣中的每一物理連接和每一虛擬連接以 壓縮稀疏行格式來存儲(chǔ),并且所述塊數(shù)據(jù)存儲(chǔ)屬于同一節(jié)點(diǎn)的行索引和方程索引中的一 個(gè)。3. 如權(quán)利要求1所述的方法,其中每一填入元表示物理連接和虛擬連接中的一個(gè)。4. 如權(quán)利要求1所述的方法,其中所述多個(gè)塊之間的一個(gè)或多個(gè)連接模式表示所述開 采地面網(wǎng)絡(luò)中的所述節(jié)點(diǎn)之間的所述一個(gè)或多個(gè)物理連接和所述一個(gè)或多個(gè)虛擬連接中 的至少一個(gè)。5. 如權(quán)利要求1所述的方法,其中所述填入模式是以使用first-in-row索引和column-index 的壓縮稀疏行格式來存儲(chǔ)。6. 如權(quán)利要求5所述的方法,其中所述列索引表示其中定位有每一物理連接和每一虛 擬連接的列索引,并且所述first-in-row索引表示首先出現(xiàn)在所述因式分解的重排鄰接矩 陣的每一行中的所述物理連接和所述虛擬連接中的一個(gè)。7. 如權(quán)利要求1所述的方法,其中所述開采地面網(wǎng)絡(luò)中的所述物理節(jié)點(diǎn)之間的原始連 接在進(jìn)行所述數(shù)值ILU因式分解之后被維持,并且所述因式分解的重排鄰接矩陣表示所述 開采地面網(wǎng)絡(luò)中的所述物理節(jié)點(diǎn)之間的一個(gè)或多個(gè)連接模式。8. -種有形地?cái)y帶用于靈活塊ILU因式分解的計(jì)算機(jī)可執(zhí)行指令的非暫態(tài)程序載體裝 置,所述指令可執(zhí)行來實(shí)現(xiàn): 使用系數(shù)矩陣中的每一物理連接和每一虛擬連接以及用于所述系數(shù)矩陣的塊數(shù)據(jù)來 定義表示開采地面網(wǎng)絡(luò)中的多個(gè)物理節(jié)點(diǎn)的鄰接矩陣,所述鄰接矩陣包括多個(gè)塊; 重排所述鄰接矩陣中的每一物理節(jié)點(diǎn); 進(jìn)行符號(hào)因式分解來確定用于所述重排鄰接矩陣的填入模式,其中每一填入元被定位 成以下各項(xiàng)中的一個(gè):i)所述重排鄰接矩陣中的所述塊中的一個(gè)的內(nèi)部;以及ii)所述重排 鄰接矩陣中的所述塊的外部;以及 使用來自所述填入模式的每一填入元在所述系數(shù)矩陣上進(jìn)行數(shù)值ILU因式分解,其中 位于所述塊中的一個(gè)中的每一填入元被保持并且位于所述塊的外部的每一填入元被丟棄。9. 如權(quán)利要求8所述的程序載體裝置,其中所述系數(shù)矩陣中的每一物理連接和每一虛 擬連接以壓縮稀疏行格式來存儲(chǔ),并且所述塊數(shù)據(jù)存儲(chǔ)屬于同一節(jié)點(diǎn)的行索引和方程索引 中的一個(gè)。10. 如權(quán)利要求8所述的程序載體裝置,其中每一填入元表示物理連接和虛擬連接中的 一個(gè)。11. 如權(quán)利要求8所述的程序載體裝置,其中所述多個(gè)塊之間的一個(gè)或多個(gè)連接模式表 示所述開采地面網(wǎng)絡(luò)中的所述節(jié)點(diǎn)之間的所述一個(gè)或多個(gè)物理連接和所述一個(gè)或多個(gè)虛 擬連接中的至少一個(gè)。12. 如權(quán)利要求8所述的程序載體裝置,其中所述填入模式是以使用first-in-row索引 和column-index的壓縮稀疏行格式來存儲(chǔ)。13. 如權(quán)利要求12所述的程序載體裝置,其中所述列索引表示其中定位有每一物理連 接和每一虛擬連接的列索引,并且所述first-in-row索引表示首先出現(xiàn)在所述因式分解的 重排鄰接矩陣的每一行中的所述物理連接和所述虛擬連接中的一個(gè)。14. 如權(quán)利要求8所述的程序載體裝置,其中所述開采地面網(wǎng)絡(luò)中的所述物理節(jié)點(diǎn)之間 的原始連接在進(jìn)行所述數(shù)值ILU因式分解之后被維持,并且所述因式分解的重排鄰接矩陣 表示所述開采地面網(wǎng)絡(luò)中的所述物理節(jié)點(diǎn)之間的一個(gè)或多個(gè)連接模式。15. -種有形地?cái)y帶用于靈活塊ILU因式分解的計(jì)算機(jī)可執(zhí)行指令的非暫態(tài)程序載體 裝置,所述指令可執(zhí)行來實(shí)現(xiàn): 使用系數(shù)矩陣中的每一物理連接和每一虛擬連接以及用于所述系數(shù)矩陣的塊數(shù)據(jù)來 定義表示開采地面網(wǎng)絡(luò)中的多個(gè)物理節(jié)點(diǎn)的鄰接矩陣,所述鄰接矩陣包括多個(gè)塊; 重排所述鄰接矩陣中的每一物理節(jié)點(diǎn); 進(jìn)行符號(hào)因式分解來確定用于所述重排鄰接矩陣的填入模式,其中每一填入元表示物 理連接和虛擬連接中的一個(gè)并且被定位成以下各項(xiàng)中的一個(gè):i)所述重排鄰接矩陣中的所 述塊中的一個(gè)的內(nèi)部;以及ii)所述重排鄰接矩陣中的所述塊的外部;以及 使用來自所述填入模式的每一填入元在所述系數(shù)矩陣上進(jìn)行數(shù)值ILU因式分解,其中 位于所述塊中的一個(gè)中的每一填入元被保持并且位于所述塊的外部的每一填入元被丟棄。16. 如權(quán)利要求15所述的程序載體裝置,其中所述系數(shù)矩陣中的每一物理連接和每一 虛擬連接以壓縮稀疏行格式來存儲(chǔ),并且所述塊數(shù)據(jù)存儲(chǔ)屬于同一節(jié)點(diǎn)的行索引和方程索 引中的一個(gè)。17. 如權(quán)利要求15所述的程序載體裝置,其中所述多個(gè)塊之間的一個(gè)或多個(gè)連接模式 表示所述開采地面網(wǎng)絡(luò)中的所述節(jié)點(diǎn)之間的所述一個(gè)或多個(gè)物理連接和所述一個(gè)或多個(gè) 虛擬連接中的至少一個(gè)。18. 如權(quán)利要求15所述的程序載體裝置,其中所述填入模式是以使用first-in-row索 弓丨和column-index的壓縮稀疏行格式來存儲(chǔ)。19. 如權(quán)利要求18所述的程序載體裝置,其中所述列索引表示其中定位有每一物理連 接和每一虛擬連接的列索引,并且所述first-in-row索引表示首先出現(xiàn)在所述因式分解的 重排鄰接矩陣的每一行中的所述物理連接和所述虛擬連接中的一個(gè)。20. 如權(quán)利要求15所述的程序載體裝置,其中所述開采地面網(wǎng)絡(luò)中的所述物理節(jié)點(diǎn)之 間的原始連接在進(jìn)行所述數(shù)值ILU因式分解之后被維持,并且所述因式分解的重排鄰接矩 陣表示所述開采地面網(wǎng)絡(luò)中的所述物理節(jié)點(diǎn)之間的一個(gè)或多個(gè)連接模式。
【文檔編號(hào)】G06F17/10GK105849717SQ201480070853
【公開日】2016年8月10日
【申請(qǐng)日】2014年1月31日
【發(fā)明人】王清華, 格雷厄姆·克里斯托弗·弗萊明
【申請(qǐng)人】蘭德馬克繪圖國際公司