跌宕起伏的收斂之旅

2020-11-25 騰訊網

時光飛逝,當我們還在感慨疫情對普通商家衝擊的時候,今年的雙十一購物狂歡已經拉開了序幕。看著陽臺上還堆著去年雙十一囤的貨物,小編暗暗發誓,今年雙十一絕不剁手。不過在鋪天蓋地的宣傳之下,尤其是馬老闆那句:「雙十一併不是打折的節日,而是感恩的節日,是商家用最好的商品和最優的價格來感恩咱們的客戶。」搞得小編又開始熱血沸騰,暫時將剁手之痛拋之腦後。

不過出來混,遲早是要還的,縱然有各種「X唄」做緩兵之計,不過終究是拆東牆補西牆。小剁怡情,大剁傷身,強剁則灰飛煙滅,一不小心人生就發散了。而對於我們CFDer來說,還有一種發散比人生的發散更容易引起不適——便是計算的發散,甚至可以被稱為「CFDer心中永遠的痛」。

為了更好的理解計算的發散問題,本公眾號繼續發揚鋼鐵直男的探索精神,首先從剁手的起源——微分方程的數值解法說起…

01

剁手的起源

我們知道,描述現實世界的數學模型大部分都是微分方程,比如振動力學中的弦振動方程,流體力學的N-S方程,電磁學中的麥克斯韋方程等等。這些微分方程是無法被計算機直接識別並求解的,必須先轉換為代數方程,並通過求解代數方程來獲取原微分方程的解。

將微分方程轉換為代數方程,並基於劃分好的網格進行數值求解,這一革命性的思想使得NS方程在工程上的數值求解成為了可能,也開啟了CFDer的剁手之路。

目前,CFD領域包含的計算方法主要包括有限差分法、有限元法、有限體積法等等。而其中有限體積法的天然守恆特性和在複雜區域上的適用性,使得其成為商業軟體主流採用的方法。

02

定常剁手 VS 非定常剁手

現實中的流體無時無刻不在發生著變化,因此流動問題原則上都是非定常的。不過具體到某一工程問題,如果流場的變化幅度很小,或者流場的細節變化並非我們感興趣的內容,則通常可簡化為定常。比如對於管路流動,人們更想知道流體通過管道的壓降及平均流場,而不太關心瞬態的流動細節,這樣可使問題大大簡化。

因此對於某一具體的工程問題,我們首先要界定是用定常還是非定常的算法。簡而言之,定常算法只求解流場的某一穩定狀態,而非定常計算則需包含跟時間相關的物理過程的歷史細節。

對於喜歡記帳的朋友,大概可以把定常計算理解為只關心每個月在不同領域的消費額度,而非定常計算則幫助消費者準確記錄每時每刻的消費。

由於認知水平所限,人們感興趣的大多數工程問題,都忽略了瞬態效應而近似為定常問題。比如飛機在平流層穩定的巡航,或者汽車在高速公路上定速行駛。因此定常問題的求解是人們在過去多年以來研究的聚焦點。

03

顯式剁手VS隱式剁手

由於流體力學控制方程奇葩的數學性質,即便是定常計算,其數值求解的實現也不簡單。亞聲速不可壓縮問題的控制方程為橢圓型,任意一點的擾動都會影響全場,而超聲速流動的控制方程為雙曲型,即流場中的擾動只會向下遊傳播。對於不同的流動問題,人們需要構造不同的數值格式——這導致求解方法喪失了普適性。

於是人們嘗試在定常的方程中人為加入時間項,使得不同工況下控制方程的數學性質更為相似,便於構造統一的解法,這便是用非定常的思路來求解定常問題的由來。

在計算機條件欠佳的年代,人們首先發明了 「時間推進法」。具體思路是,通過一個假定的初始流場不斷推進,最終逼近到流動穩定的時刻。這就是我們通常所說的顯式算法。不過這裡的時間步並非真實的物理時刻,因此被稱為「偽時間步」。關於「顯式算法」更粗暴的理解則是,此刻的結果可以直接通過上一步的結果推出來。如果用剁手的觀點來看的話,則可以理解為老闆上個月發多少工資,我這個月就買多少錢的東西。

顯式算法由於構造簡單,尤其是對計算機內存的需求小而廣受歡迎。但顯式算法由於需要兼顧穩定性,時間步不能太大,這大幅增加了計算時長,難以滿足工程需求。就好比對於大多數人來說,如果只依靠工資消費的話,總是滿足不了購物的需求和欲望,於是信用卡就應運而生了。

如果說「掙多少,花多少」是顯式的剁手方式,那麼利用信用卡借錢消費,再還錢的循環迭代模式則可以形容為隱式的剁手方式。隱式算法雖然在一定程度上解決了時間步的限制,但是其複雜的循環迭代模式,一不小心可能就引起信用卡逾期未還的發散。

為了更好的理解CFD計算中隱式的概念,我們一起來看看最常見的SIMPLE方法是如何讓CFDer甘心先消費後付款的。

04

最簡單的SIMPLE方法?

作為每一個CFDer都耳熟能詳的的數值方法,SIMPLE算法最早由Patankar和Spalding兩位大神提出。SIMPLE方法的全名為壓力耦合方程組的半隱式方法(Semi-Implicit Method for Pressure-Linked Equations),是目前工程上應用最為廣泛的一種流場計算方法。

看著Spalding和Patankar這對師徒大神的迷之微笑,筆者不由的回憶起當年學習Patankar的《數值傳熱和流動》的痛苦經歷。儘管教材一直保留著,但往事還是不要再提。

言歸正傳,作為一種壓力修正解法,SIMPLE算法通過「先猜(消)想(費)後修(付)正(錢)」的方法得到壓力場,並求解離散化的動量方程(N-S方程)其基本思路如下:

NO.1

基於給定的壓力場,求解離散形式的動量方程,得出速度場。但壓力場是假定的或不夠精確的,由此得到的速度場一般不滿足連續方程,因此,必須對給定的壓力場加以修正。

NO.2

修正壓力使用的便是壓力泊松方程,又稱壓力修正方程,此方程由離散形式的動量方程和連續性方程通過代數運算得出。

NO.3

接著,使用修正後的壓力場修正速度,使之滿足連續性方程,但此時新的速度場又不一定滿足動量方程。

NO.4

然後不斷迭代計算,並檢查壓力和速度的修正值是否收斂。若不收斂,則用修正後的壓力開始新一輪的計算。如此反覆,直到獲得收斂的解。

通過上述的介紹可以看到SIMPLE方法巧妙的解決了N-S方程中的一個大問題:速度項通過動量方程和連續方程錯綜複雜的耦合在一起。而更繁瑣的壓力項,僅出現在動量方程中,不能得到直接求解。

在SIMPLE算法提出之後,一些改進算法也隨之提出,其中比較知名的包括SIMPLER算法、SIMPLEC算法、PISO算法等,此處不再贅述。

通過上述對於SIMPLE方法的介紹,可以看到迭代法在工程上求解複雜方程具有很好的實用性。而緊緊扼住CFD計算收斂咽喉的「殘差」,便是迭代法的產物。

05

一張圖看懂迭代與殘差

為了更好的理解迭代和殘差,我們一起看看下面這個簡單的例子:

下表更進一步的給出了15次迭代的過程和計算結果。可見,隨著迭代的不斷推進,x和y的值越來越逼近其真實值1和2。而殘差的絕對值也隨著迭代不斷減小。

如果把變量的殘差值畫成隨迭代步的變化曲線,即殘差曲線。當然上述的方程非常簡單,所以其收斂曲線也很完美,計算的殘差隨著迭代的進行而不斷減小。本節提到的殘差為每個變量的絕對殘差,實際工程計算中還可能會使用相對殘差、最大殘差、平均殘差、均方根殘差等參數。

06

信用卡按時還款了嗎?

雖然很多人使用信用卡進行隱式消費,但是只要能夠規劃好收入和消費的關係,按時還款,便可以保證消費的收斂。那麼對於我們經常使用的CFD軟體,其收斂標準除了迭代的殘差之外,還有什麼額外的參數需要考量呢?

迭代殘差判據,剛剛已經舉例說明了,主要是指計算迭代過程,當前計算步的物理量和前一步的差異,需要達到某一設定的標準。比如小夥伴們通常將此值設置為10-4,10-5等,殘差越小意味著結果越逼近收斂;

通量守恆判據意味著計算域進出口的物理量要達到平衡。最簡單的便是質量守恆,即流入多少,也流出多少。通常情況下,在計算起始階段,流場距離最終的穩定狀態較遠,進出口可能出現不平衡的回流,導致進出口的流量不一致;

監控參量判據指的是在計算中實時檢測某些敏感位置的物理量如壓力或速度,如果隨著計算的進行,這些物理量不再變化,基本可認為計算趨於收斂。

上述三大判據便是我們判斷計算收斂或者發散的依據了,而小夥伴們也可以根據實際情況聯立使用或者單獨使用。

07

信用卡長時間逾期未還的後果

無論是消費還是數值計算,大家都希望結果是收斂的。不過,出於各種各樣的原因,總有很多人忘記或者無法按時支付信用卡的欠款,如果長時間的逾期未還,可能就要出現發散的問題了。

對於計算過程中的發散,小夥伴們都不陌生,其表現為殘差的急劇增大並導致計算崩潰。而在流場中則表現為某些區域內變量的大幅波動並超出了計算機可容許的數位。

計算的發散通常與以下這些因素相關:

NO.1邊界條件

邊界條件是首先要檢查的問題,比如開口系統中只設置了進口,而沒有出口;或者進出口都使用了靜壓邊界條件,而計算域中又有劇烈的壓力變化等,均容易導致數值溢出而發散。

NO.2初始流場

對於確定的物理問題,給定了初始流場,也就意味著我們要通過計算彌補初始流場和真實物理場之間的鴻溝。因此給定一個好的初場極大程度上影響著收斂性與收斂速度。畢竟,歷史上能夠從開局一個碗到打下江山的只有一個朱元璋。有的CFDer為了獲取更接近真實的初始流場,通常會單獨進行此預計算,比如人為增加粘度儘快獲得穩定流場,再將粘度恢復為正常值進行計算。

NO.3網格問題

如果計算沒算幾步就開始發散,則很可能是網格質量太差,甚至出現了奇點。如果把網格形容為道路,數值求解所構造的矩陣方程組就是道路上馳騁的車輛。老司機常說的「寧走十裡遠,不走一裡險」便是其中的道理。

NO.4CFL數

無論是顯式還是隱式,都會涉及到調節CFL數,CFL數過大則會導致計算不穩定。CFL數的意義在於調節時間步長,使得求解數值解的依賴域完全包含真實解的依賴域,也可理解為,計算不能漏掉流場中擾動的傳播。

NO.5鬆弛因子

不同於CFL數,鬆弛因子(Relaxation Factors)影響的並非時間步長,而是將該時間步的計算結果與上一步結果的差值作適當縮減,以避免由於差值過大而引起非線性迭代過程的發散。因此調節鬆弛因子也可以調節計算的收斂性。

NO.6另一種不收斂

除了由於殘差劇增或者物理量大幅變化引起的發散之外,還有一種不收斂卻是由於所求解物理場本身的屬性引起的。比如機翼的大攻角工況下,吸力面有大面積的流動分離,這種流動現象本身就有很強的瞬態特徵,強制使用定常算法自然容易引起發散。

08

LBM——不會爆倉的儲蓄卡消費?

傳統CFD方法使用的隱式迭代不可避免的會碰到收斂和發散的問題,儘管各路大神發明了各種「小額貸」或者「還款小助手」,不斷改善計算的穩定性,但本質上無法完全消除計算迭代所導致的發散的風險。

反觀LBM方法,其天然瞬態與接近物理本原的特性,決定了它是一種穩定的顯式方法。而且,LBM中的時間推進就是真正的物理時刻,而非前文提到的「偽時間步」。因此,LBM計算中,下一時刻的狀態完全由上一時刻推算得出,每個物理時間步內並無額外的迭代。

如果把傳統的CFD方法形容為信用卡消費,那麼LBM方法則是典型的儲蓄卡消費。因此,優秀的LBM方法通常具有非常好的魯棒性,幾乎不會出現計算發散的問題。而關於LBM的理論基礎,之前的文章中已有很多的介紹,感興趣的小夥伴可以向前翻閱。

雙十一的優惠力度雖然很大,該收斂的時候還是要收斂,否則下個月還信用卡的時候就要發散啦。人生不僅需要平穩,還需要精緻。正如CFD計算的收斂和精度,一個都不能少。敬請期待後續的文章「關於CFD精度的另類解讀」。

相關焦點

  • 在家學|冪級數的收斂半徑, 收斂區間, 收斂域
    1.冪級數的定義2.收斂半徑、收斂區間、收斂域}「Abel引理」對冪級數,且其收斂區間不變.,其收斂半徑為收斂區間的一半;(3)利用阿貝爾定理和收斂級數的性質求冪級數的收斂域;(4)利用級數收斂的定義求冪級數的收斂域;(5)利用數列極限準則確定
  • 冪級數的收斂半徑、收斂區間和收斂域
    收斂域的求法1、具體冪級數:利用公式求收斂區間,再討論端點處的斂散性2、抽象級數:利用阿貝爾定理以及冪級數的性質求解
  • 級數的絕對收斂、條件收斂和發散問題
    級數的絕對收斂、條件收斂和發散問題的解題思路比較多樣的。 在判斷級數是絕對收斂、條件收斂還是發散的時候,我們都要先看它是不是絕對收斂,或者說什麼時候絕對收斂。我們要看它的絕對值級數是不是收斂的。如果不是絕對收斂的,之後的判斷就因題而異了,如果是交錯級數,我們可以再用萊布尼茲準則來看看它是不是條件收斂;如果是正項級數,這時候往往看它是不是發散比較方便。
  • 關於殘差收斂的一些筆記
    ,計算就會發生收斂。然而,有時候因為收斂標準設置的不合理,物理量的殘差值在迭代計算的過程中始終無法滿足收斂的標準。對於不收斂的情況,我們通常的解決方式有以下幾點:(1)改變初值:對於收斂,初始值很關鍵,可通過不同的初始值查看收斂情況;(2)鬆弛因子:鬆弛因子可控制可控制收斂的速度和改善收斂的狀況,取值1 ,相當於不用鬆弛因子;取值大於1,為超鬆弛因子,可加快收斂速度;取值小於1,為欠鬆弛因子,可改善改善計算過程的收斂性。
  • 收斂水是不是爽膚水?有什麼區別?如何選到適合自己的收斂水?
    收斂水和爽膚水的區別是什麼?收斂水的正確使用方法有哪些?爽膚水是用於清潔完臉部之後的第一程序,收斂水緊膚水緊緻毛孔,控制皮脂分泌,最好只用於日間。收斂水的縮小毛孔、緊緻肌膚的神效使得它受廣大女性喜愛。對於怎麼選擇一款適合的收斂水大家都有很多經驗。
  • 解決VASP計算SCF不收斂的方法
    ,也叫做SCF不收斂。打開OSZICAR    如上圖,NELM設置的是300,但是SCF進行了300步dE仍然沒有達到EDIFF設置的收斂標準線,那麼就是SCF不收斂了。(此法也可用於 非雜化泛函的計算,SCF收斂以後要讀取WAVECAR再用ALGO=Fast或Normal重新收斂一遍)(7)嘗試使用更大的SIGMA值,如SIGMA=0.5,先粗略收斂,再讀取WAVECAR用小的SIGMA計算。(此方法經常奏效,但是讀波函數再次用小SIGMA優化有可能碰到仍不收斂的情況。)
  • 奇數項和偶數項冪級數的收斂半徑求法
    總有學生到現在都還搞不明白冪級數的奇次項和偶次項的收斂半逕到底是怎麼求的,也就是到底該如何求收斂半徑。今天筆者就帶大家一起徹底的吃透這個問題。就從兩道具體的習題來解析吧。題目1:求的收斂半徑R的收斂半徑為 1/√2為所求。解法二:這種方法我們直接追溯到數項級數這個源頭來求。為什麼要提出這個解法呢?主要是為了下面的奇數次項做準備。
  • 數列極限重點中的重點:柯西收斂原理
    柯西收斂原理就是:判斷一個數列收斂的充分必要條件是,這個數列是基本列。必要性是十分顯然的,如果數列收斂的情況下,根據數列極限定義,必然會收斂到一個值,而這兩項充分靠後的情況下也是充分接近的,我們可以在兩項中間任意取值都可以縮小到事先給定的任意程度,也就是小於ε。
  • 一種改進操作算子的加速收斂遺傳算法
    對3組不同函數的測試表明,改進算法較傳統的遺傳算法具有在種群很小的情況下收斂速度快穩定性高的優點,同時能有效地避免早熟現象。關鍵詞:遺傳算法;變異;收斂速度;種群數本文引用地址:http://www.eepw.com.cn/article/192077.htm0 引 言 遺傳算法(Genetic Algorithm,GA)是一種宏觀意義下的仿生算法,它模仿的機制是一切生命與智能的產生與進化過程,從一個初始種群出發,不斷重複執行選擇,雜交和變異的過程,使種群進化越來越接近某一目標。
  • K線圖經典:什麼是發散形態和收斂形態?
    什麼是發散形態  和收斂形態?  發散形態:  又稱喇叭形,並分為上發散和下發散兩種。該形態出現在頂部表示升勢到頭將發生下降,但無法確認跌市開始的時間。  收斂形態:  也稱三角形,屬於整理形態,常在周曲線圖上出現,並分上、下兩種收斂形式。上收斂(多數發生在圖形的下方)時是將發生大漲的信號;下收斂(多數發生在圖形的上方)時則可能發生暴跌。上收斂的www.southmoney.com定義是:上頸線平滑,下頸在線翹,尖部好像在抬頭;下收斂的定義是:下頸線平滑,上頸線下埀,尖部好像在低頭。
  • 2017考研數學一複習重點:數列和級數收斂
    今年考研數一高數部分考到的收斂性有:反常積分的收斂性判斷一道選擇題、一道大題的第一小問和第19題級數收斂和數列收斂。這道題是有難度的,尤其是第二問,證明數列收斂。在考試之前,很多輔導班的老師都預測今年數學會出證明題,很可能是在中值定理那塊兒,因為往年一般都是有關中值定理的證明題。
  • 無涯助你徹底解決冪級數收斂域的問題
    在冪級數中,最重要也是最難的一個問題是收斂域問題。收斂域問題上承常數項級數斂散性判斷,下啟函數的泰勒展開、麥克勞林展開,毫不誇張地說,收斂域是連接常數項級數和函數項級數的橋梁。小編在本文將會結合兩個有代表性的例子,來對冪級數收斂域問題進行詳盡的闡述,相信本文基本能夠幫助大家解決冪級數收斂域問題方面的所有困惑。
  • 2020年鋁型材價格的跌宕起伏
    而鋁錠價在這一年中也隨著疫情跌宕起伏,鋁型材價格也跟著飄忽不定。首先,一月份疫情還沒有爆發的時候鋁錠價一直在14000元/噸以上。一月底二月初疫情爆發,鋁錠價跌破一萬四,從13600跌到13100左右。3月份疫情持續發酵,鋁錠價斷崖式下跌,月初跌破13000,月中跌破12000,到月底只有11500左右。這是近幾年來沒有過的低價。而鋁型材價格也隨著持續下跌,但鋁型材用量並沒有減少。
  • 欣賞從「收斂的自然數平方倒數之和」到「發散的自然數倒數之和」
    前一篇文章《π告訴你:「偶數平方的倒數和」和「奇數平方的倒數和」等於多少》中我們有歐拉的自然數平方倒數之和得出了一些與π有關的其他的無窮級數,這些級數甚是有趣,但更重要的是表明了自然數平方倒數之和是有極限的,或者說是收斂的。
  • 引入Powerball 與動量技術,新SGD優化算法收斂速度與泛化效果雙...
    與目前的主流思路(自適應學習率或者動量法)不同,該論文作者在之前的工作[1]中,通過利用ODE的有限時間穩定性的直觀表達,提出了一種新的加速算法收斂的方法。這類稱為Powerball的方法,是通過簡單的將冪係數 γ∈[0,1)添加到各類基於梯度的優化方法中的梯度上得到的。
  • 真正的聰明人,在2件事上都懂得收斂,是做人低調和情商高的表現
    真正的聰明人,在以下這2件事上都懂得收斂,絕不會太過分,是做人低調和情商高的表現,你會嗎? 第1件事:懂得收斂起自己的過分行為 行為上趾高氣揚、放浪不羈,歷來是做人的大忌。而懂得低調做人的聰明人,則一定會收斂好自己的行為,絕不會太過分。
  • 4本故事好看的玄幻小說,劇情跌宕起伏,讓書蟲愛不釋手
    今天我給大家獻上4本故事好看的玄幻小說,劇情跌宕起伏,讓書蟲愛不釋手。書荒的朋友們可以看看這些小說哦。第4名,向陽的心《神仙微信群》。666萬字的玄幻小說,設定比較新奇。大家都玩過聊天群,但是本書的主角加入的卻是神仙聊天群。於是主角掩飾自己的凡人身份,不斷和月老、嫦娥這些傳說中的神仙聊天,一次次幫助神仙解決煩惱。
  • 不要用毛孔收斂水了,試試下面的方法吧!
    如果你的毛孔很粗大,你一定聽說過關於「收斂水」的神話:鎮定肌膚 補充水分 抑制出油 縮小毛孔。然而事實是它做不到!首先,毛孔為什麼會「粗大」?毛孔變粗大主要有4個原因:1、遺傳。2、毛孔阻塞常見於痘痘和有皮膚脫角質功能障礙的患者。由於毛孔內的分泌物的堆積,使得毛孔被撐大。
  • 記錄RSK DEFI跌宕起伏的兌換經歷
    近日RSK社區舉辦活動,體驗rifmoneyonchain兌換,並將RDOC或者RIFP兌換成RIFX,本著體驗的精神,我開始了這次跌宕起伏的兌換經歷。
  • FE聖地牙哥站比賽跌宕起伏 伯德獲冠軍
    [愛卡汽車 賽事 原創]  在2019年1月27日,北京當地時間凌晨結束的2018-19賽季FE電動方程式錦標賽智利聖地牙哥站中,遠景維珍車隊車手伯德在跌宕起伏的比賽裡,幸運的讓自己駕駛的賽車完成比賽,並最終贏得該分站賽的冠軍。