如何加快數模計算以及如何解決數模計算的收斂性問題

2021-09-08 16:02:16 字數 3514 閱讀 5105

在了解收斂性之前,應該首先了解幾個基本概念:

(1)。報告步:

乙個數模作業包括多個報告步,報告步是使用者設定要求多長時間輸出

執行報告,比如可以每個月,每季度或每年輸出執行報告,執行報告包括產量報告

和動態場(重啟)報告。

(2)。時間步:

乙個報告步包括多個時間步,時間步是軟體自動設定,即通過多個時間步的計算來達到下乙個報告步,以eclipse為例,假如報告

步為乙個月,在預設條件下,eclispe第乙個時間步取一天,然後以三倍增加,即第二個時間步取三天,然後取九天,下乙個時間步是17天來達到30天的報告步,然後會以每30天的時間步來計算。時間步可以通過tuning關鍵字來修改。

(3)。非線形迭代:乙個時間步包括多次非線形迭代。在預設情況下,eclipse如果

通過12次的非線形迭代沒有收斂,eclipse將對時間步減小10倍。比如下乙個時間

步應該是30天,如果通過12次的迭代計算不能達到收斂,eclipse將把時間步縮短為3天。下乙個時間步將以1.25倍增長,即3.75天,4.68天,。。。。如果在計算

過程中經常發生時間步的截斷,計算將很慢。

(4)。線形迭代:

乙個非線形迭代包括多次線形迭代。線形迭代是解矩陣。

在eclipse輸出報告prt檔案中可以找到時間步,迭代次數的資訊,比如:

step 10 time= 100.00 days ( +10.0 days rept 5 its) (1-feb -2008)

「step 10」 : 說明這是第10個時間步。

「time= 100.00 days」:

說明現在模擬到第100天。

「+10.0 days」:

說明這個時間步是10天。

「rept" :

說明為什麼選10天做為時

間步,rept是指由於到了下乙個報告步。

「5 its": 說明此10天時間步需

要5次非線形迭代。

」(1-feb-2008)「:

現在的模擬時間。

模擬計算的時間取決於時間步的大小,如果模型沒有發生時間步的截斷而且能保持長的時間步,那表明該模型沒有收斂性問題,反之如果經常發生時間步截斷

,那模型計算將很慢,收斂性差。時間步的大小主要取決於非線形迭代次數。如果

模型只用一次非線形迭代計算就可以收斂,那表明模型很容易收斂,如果需要2到3 次,模型較易收斂,如果需要4到9次,那模型不易收斂,大於10次的化模型可能有

問題,如果大於12次,時間步將截斷。

模型不收斂的原因很多,網格引數,屬性引數,流體pvt引數,岩石相滲曲

線,毛管壓力曲線,相滲曲線端點標定,初始化,井軌跡,垂直管流表都會造成模

型不收斂,下面分別介紹各部分如何造成不收斂及如何解決。

(1)。網格部分:

網格正交性差和網格尺寸相差太大是導致不收斂的主要原因之一。正交性差

會給矩陣求解帶來困難,而網格尺寸相差大會導致孔隙體積相差很大,大孔隙體積

流到小孔隙體積常會造成不收斂。

解決辦法:

網格正交性差通常是在建角點網格時為描述斷層或裂縫的走向而造成的。在

此情況下,最好能使邊界與主斷層或裂縫走向平行,這樣一方面網格可以很好地描

述斷層或裂縫,另一方面正交性也很好。

在平面上最好讓網格大小能夠較均勻,在沒有井的地方網格可以很大,但最

好能夠從大到小均勻過渡。縱向上有的層厚,有的薄,最好把厚層能再細分。在檢

查模型時應該每層每層都在三維顯示中檢查。

徑向區域性網格加密時裡面最小的網格不要太小。

在eclipse裡用minpv關鍵字可以把小於設定孔隙體積的網格設為死網格,這樣通常會有用。

(2)。屬性引數:

不合理的插值計算會導致屬性分布很差,如果是從地質模型粗化為數模模型,通常問題不大,只是有時候數模人員自己插值時會有問題。

解決辦法:

有可能盡量用地質模型的資料,自己插值時可以加一些控制點使屬性合理分

布。x,y方向的滲透率最好相等或級差不大。在井連通網格的z方向滲透率不要設為 0,如果想控制垂向流動,可給乙個很小的值。

(3)。流體pvt引數

流體pvt引數會有兩種可能的問題,一是資料不合理導致了負總壓縮係數,

二是壓力或氣油比範圍給的不夠導致模型對pvt引數進行了外插。

解決辦法:

檢查prt檔案中的warning資訊,如果在油藏壓力範圍內有負總壓縮係數的警

告,應該修改pvt引數,否則的化會有收斂性問題。如果負總壓縮係數是在油藏壓力範圍之外,可以忽略該警告。此部分的修改主要可以小規模修改油和氣的fvf和 rs。

(4)。岩石相滲曲線和毛管壓力曲線。

通常的問題有:

飽和度和相對滲透率的資料位數過多。

飽和度值太接近,導致相滲曲線的傾角變化很大。

飽和度有很小變化但相對滲透率發生了很大變化。

解決辦法:

飽和度和相對滲透率最多給兩位小數就夠了。

檢查相滲曲線的導數(可以應用eclipse中的scal模組),導數要光滑。

臨界飽和度和束縛飽和度設為不同的值。

(5)。端點標定:

在應用端點標定時,有時標定完後的相滲曲線傾角很大,標定後的毛管了很

大。解決辦法:

在三維顯示中檢查標定完的pcw,可以給pcw乙個最大值來控制毛管壓力。

輸出每個網格標定後的相滲曲線進行檢查。

(6)。初始化:

初始化最容易發生的問題是在初始時模型不穩定,流體在初始條件下就會發

生流動,這也會導致模型不收斂。造成模型初始不穩定的主要有:

手工通過網格飽和度和壓力值。

擬合初始含水飽和度。

解決辦法:

盡量不要直接為網格賦壓力和飽和度值,盡量由模型通過油水介面及

參考壓力來進行初始化計算。

要想擬合地質提供的初始含水飽和度分布,應該進行毛管壓力的端點

標定,這樣毛管壓力會穩住每個網格的水,在初始條件下不會流動。

可以通過讓模型在沒有任何井的情況下計算十年來檢查初始條件下模

型是否穩定,如果10年的計算模型壓力和飽和度都由說明變化,說明模型初始是穩

定的。=

(7)。井軌跡:

在進行井處理時井可能以之字型在網格中竄過,有可能發生井的實際竄過

方向與模型關鍵字定義的方向不符,這也會導致不收斂。

解決辦法:

在三維顯示中檢查井軌跡。

如果井已經關掉,在模擬時不要給零產量,要用關鍵字把井關掉

。檢查井射孔,井不要射在孤立的網格上。

(8):垂直管流曲線:

有了垂直管流曲線很容易導致模型不收斂,這有兩種可能:

曲線有交叉。

曲線發生了外插。

解決辦法:

用前處理軟體(eclipse中的vfpi)檢查曲線。

在eclipse中加extrapms關鍵字可以要求輸出如果發生vfp插值後的警告資訊。

曲線應該覆蓋所有井口壓力,含水,油氣比及產量。

11。結束語

黑油模型數值模擬入門指南先寫到這裡,其實還有許多沒有寫道。以後有時間可以再補充。下一步計畫寫一寫組分模型入門指南。組分比黑油要複雜的多。當然關鍵是狀態方程,希望可以早日動手

如何解決併發

雖然從巨集觀上,處理器是並行處理多項任務,但本質上乙個處理器在某個時間點只能處理乙個任務,屬於序列執行。在單處理器的情況下,併發問題源於多道程式設計系統的乙個基本特性 程序的相對執行速度不可 它取決於其他程序的活動 作業系統處理中斷的方式以及作業系統的排程策略。在分布式環境下,併發產生的可能性就更大...

故障現象和導致原因以及如何解決

1 8001同一層次的其他介面服務被困死,因為tomcat執行緒裡面的工作執行緒已經被擠占完畢 2 80此時呼叫8001,客戶端訪問響應緩慢,轉圈圈 正因為有上述故障或不佳表現,才有我們的降級 容錯 限流等技術誕生 解決 超時導致伺服器變慢 圈 超時不再等待 出錯 宕機或程式執行出錯 出錯要有兜底 ...

java中如何造成死鎖的?以及如何解決死鎖

造成死鎖的原因 1.在乙個 塊中同時獲得多個鎖,導致多個執行緒同時執行 時,獲取鎖之間相互依賴,從而導致鎖 抱死 例如,t1執行緒首先獲得a鎖,再獲得b鎖,t2執行緒先獲得b鎖,再獲得a鎖,當t1獲得a鎖的同時,t2獲得了b鎖的使用權,此時t1無法獲取b鎖,t2也無法獲得a鎖,執行緒一直等待,這就叫...