翻看COMSOL的用戶手冊(cè),覺(jué)得這一段不錯(cuò),大體翻譯了下。
用戶可以調(diào)整求解設(shè)置、使用對(duì)稱或其他模型屬性來(lái)獲得模擬解,如果不行的話,可以中斷求解來(lái)恢復(fù)部分解。
提綱:
1.
使用對(duì)稱性
2.
有效的內(nèi)存管理
3.
選擇單元類型
4.
分析模型收斂性和準(zhǔn)確性
5.
求解非線性方程時(shí)實(shí)現(xiàn)收斂
6.
避免過(guò)快的瞬變
7.
物理相關(guān)檢查和指南
8.
非物理值
正文:
1.
使用對(duì)稱性
建模時(shí)使用對(duì)稱性可以減少一半或以上的計(jì)算量,對(duì)于求解大的問(wèn)題這是一種有效的手段。它適用于包含對(duì)稱幾何結(jié)構(gòu)或模型假定的情況下。對(duì)稱有軸對(duì)稱和對(duì)稱和反對(duì)稱平面或線:
a)
軸對(duì)稱:通常是圓柱體或相似的3D幾何。如果幾何是軸對(duì)稱的,那么它只能在軸向和徑向變化,而在周向保持不變。
b)
對(duì)稱和反對(duì)稱平面或線:在2D和3D模型中比較常見(jiàn)。對(duì)稱:分割線或平面兩邊是相同的。對(duì)于標(biāo)量場(chǎng),穿過(guò)對(duì)稱線的法向流量為零。在結(jié)構(gòu)力學(xué)中,對(duì)稱條件是不同的。反對(duì)稱:分割線或平面兩邊是反向平衡的。對(duì)于標(biāo)量場(chǎng),穿過(guò)對(duì)稱平面或線的獨(dú)立變量為零。結(jié)構(gòu)力學(xué)使用另外的反對(duì)稱。很多模型界面都支持對(duì)稱邊界條件。
為了使用對(duì)稱平面或線,所有的幾何、材料性能、邊界條件都必須是對(duì)稱的,任何載荷或源項(xiàng)也必須是對(duì)稱或反對(duì)稱的。然后就可以建立一個(gè)對(duì)稱模型,它可以是整個(gè)幾何體的1/2,1/4,1/8,然后施加合適的對(duì)稱邊界條件。
2.
有效的內(nèi)存管理
特別在3D建模時(shí),巨大的內(nèi)存消耗必須采取額外的預(yù)防措施。首先,檢查是否選擇了線性迭代求解器。通常,用戶不需要考慮選擇什么求解器,因?yàn)槟P徒缑鏁?huì)自動(dòng)挑選合適的求解器。但是在一些情況下,用戶還是需要對(duì)求解設(shè)置做適當(dāng)?shù)恼{(diào)整。
估算模型消耗的內(nèi)存
當(dāng)內(nèi)存分配不足時(shí)COMSOL會(huì)提示”out-of-memory”。雖然內(nèi)存大小和數(shù)組所占用的相同就足夠了,但是由于內(nèi)存碎片的存在,需要更大的內(nèi)存。
那么求解一個(gè)特定的模型需要多大的內(nèi)存,則有下面幾個(gè)因素決定:
a)
節(jié)點(diǎn)數(shù)目
b)
獨(dú)立和不獨(dú)立變量數(shù)
c)
單元階數(shù)
d)
矩陣的稀疏模式。稀疏模式取決于幾何和網(wǎng)格的形狀。例如,一個(gè)擴(kuò)展的橢球比球的矩陣更稀疏。
MUMPS和PARDISO out-of-core求解器可以在內(nèi)存不夠時(shí),借用磁盤(pán)存儲(chǔ)來(lái)求解大的模型。用戶可以通過(guò)觀察右下角的內(nèi)存使用情況來(lái)了解當(dāng)前物理內(nèi)存和虛擬內(nèi)存使用情況。
建立一個(gè)高效內(nèi)存使用的幾何
首先在處理大的模型時(shí),應(yīng)該盡量減小求解幾何。通常使用對(duì)稱會(huì)使模型減少到原來(lái)的1/2,1/4甚至是1/8。雖然內(nèi)存消耗并不是線性的,而是多項(xiàng)式(Cnk,k>1),那么這意味著當(dāng)模型減小一半時(shí),內(nèi)存消耗會(huì)減少一半以上。而其他的途徑是:
a)
避免使用那些不必要的小幾何體,用貝塞爾曲線代替多邊形輪廓;
b)
盡量使用線性單元;
c)
保證劃分的網(wǎng)格質(zhì)量高。高質(zhì)量的網(wǎng)格對(duì)線性迭代求解器尤為重要,這樣會(huì)提高迭代的收斂性;
d)
避免幾何存在尖的、狹窄的轉(zhuǎn)角。網(wǎng)格單元會(huì)在這些地方變得很薄,使得鄰近的網(wǎng)格質(zhì)量下降。尖角同時(shí)會(huì)造成非物理現(xiàn)象和巨大的應(yīng)力集中。
3.
選擇單元類型
大部分模型界面默認(rèn)選擇一階或二階Lagrange單元或形函數(shù)。二階及以上的單元類型會(huì)在網(wǎng)格單元的中點(diǎn)和內(nèi)部節(jié)點(diǎn)上增加額外的自由度。自由度的增加會(huì)提高解的準(zhǔn)確性,但是也會(huì)由于減小了離散系統(tǒng)的稀疏程度而加大了內(nèi)存消耗。對(duì)于很多的應(yīng)用,如結(jié)構(gòu)力學(xué)中的應(yīng)力分析,需要使用二階單元來(lái)提高準(zhǔn)確度,這是由于一階單元的空間差分為常數(shù)。
COMSOL推薦用戶使用默認(rèn)的單元類型,而對(duì)于某些計(jì)算可能需要減低單元階數(shù),但是用戶必須注意那些重要的量被求解了。
4.
分析模型收斂性和準(zhǔn)確度
有限元法可以精確的獲得如應(yīng)力集中模型解的局部變化。在有些情況下,用戶可以與參考書(shū)、測(cè)量結(jié)果或其他的原始數(shù)據(jù)做比較。而COMSOL模型庫(kù)中也包含了一些計(jì)算好的結(jié)果或理論解。通過(guò)查看這些基準(zhǔn)模型,來(lái)檢查結(jié)果的準(zhǔn)確性。
如果一個(gè)模型不能通過(guò)其他方法來(lái)驗(yàn)證正確性,那么只能通過(guò)收斂性測(cè)試來(lái)檢查網(wǎng)格密度是否合適。用戶通過(guò)加密網(wǎng)格重新計(jì)算來(lái)檢查解是否可以穩(wěn)定的收斂。如果加密網(wǎng)格后解的結(jié)果發(fā)生改變,那么解依賴于網(wǎng)格,該模型需要更密的網(wǎng)格。用戶可以使用自適應(yīng)網(wǎng)格,它基于誤差準(zhǔn)則來(lái)加密那些誤差較大的區(qū)域網(wǎng)格。
為了收斂性,必須避免幾何中的奇異點(diǎn)。
5.
在求解非線性方程時(shí)實(shí)現(xiàn)收斂
非線性問(wèn)題通常很難被求解。在很多情況下,它的解不唯一。COMSOL使用Newton迭代法來(lái)求解非線性PDE方程組。這種方法對(duì)初始值敏感。如果初始條件偏離期望值,那么可能就無(wú)法收斂,即便該方程組使用其他初值時(shí)可能很容易收斂。
用戶可以通過(guò)下面的方法來(lái)提高得到難解的非線性方程組的相關(guān)解:
a)
提供最可能的初始值;
b)
順序求解單一方程,當(dāng)獲取到好的初始值后再進(jìn)行全耦合計(jì)算;
c)
保證邊界條件與初始值一致,相鄰的邊界有一個(gè)兼容條件從而不產(chǎn)生奇異值;
d)
加密那些梯度大的區(qū)域網(wǎng)格;
e)
對(duì)于對(duì)流問(wèn)題,引入人工擴(kuò)散來(lái)提高數(shù)值計(jì)算性能。大多數(shù)流動(dòng)和化學(xué)傳質(zhì)建模界面將引用人工擴(kuò)散作為默認(rèn)設(shè)置;
f)
當(dāng)一個(gè)解的成分趨于零時(shí)應(yīng)采用縮放因子。在這些情況下,自動(dòng)縮放可能并不能工作。
g)
將一個(gè)穩(wěn)態(tài)非線性問(wèn)題轉(zhuǎn)化為瞬態(tài)問(wèn)題。通過(guò)這種方法可以使問(wèn)題易于收斂。當(dāng)瞬態(tài)計(jì)算趨于穩(wěn)態(tài)時(shí),再去求解穩(wěn)態(tài)問(wèn)題;
h)
采用參數(shù)化掃描求解器,調(diào)整一個(gè)材料的屬性或調(diào)整PDE系數(shù)的起始值從而減小方程組的非線性。用這種方法,可以得到一系列非線性解,使得非線性問(wèn)題容易計(jì)算。
6.
避免過(guò)快的瞬變
在求解不一致初始條件的瞬態(tài)問(wèn)題時(shí),或著其邊界條件、源項(xiàng)在一段時(shí)間內(nèi)發(fā)生巨大的變化,那么求解系統(tǒng)引入了很強(qiáng)的瞬態(tài)信號(hào)。這時(shí)時(shí)間步進(jìn)算法會(huì)選用很小的步長(zhǎng)來(lái)求解這個(gè)變化,因此求解時(shí)間變得很長(zhǎng),有的時(shí)候求解會(huì)終止。穩(wěn)態(tài)問(wèn)題則可能會(huì)遇上網(wǎng)格分辨率的問(wèn)題,諸如無(wú)線通量問(wèn)題造成的過(guò)沖或下沖。
除非你想知道這些瞬變的細(xì)節(jié),一般以可以獲得一致解達(dá)到穩(wěn)態(tài)的條件開(kāi)始。然后再改成模型在真實(shí)條件下一個(gè)時(shí)間段內(nèi)的邊界值、源項(xiàng)或驅(qū)動(dòng)流。
在多數(shù)情況下,可以通過(guò)一個(gè)平滑函數(shù)來(lái)引入源項(xiàng)。使得階躍或轉(zhuǎn)變不那么突然。
7.
物理相關(guān)檢查和指南
流體流動(dòng)和傳質(zhì)現(xiàn)象
a)
如果所有的邊界條件都不含壓力條件,那么需要在流體域內(nèi)某個(gè)點(diǎn)上指定壓強(qiáng)。如果不指定它,求解就會(huì)缺乏約束從而難以收斂;
b)
確保網(wǎng)格足夠細(xì),例如在狹窄的通道內(nèi)至少保證有4-6個(gè)網(wǎng)格單元。
c)
確保邊界條件和初始條件與瞬態(tài)問(wèn)題相吻合。例如,在流體域內(nèi)初始速度為零時(shí),就不要使用全速度,而是采用一個(gè)平滑或斜坡函數(shù)將初始速度緩緩的加上去,這樣才能使流場(chǎng)的初始值與邊界條件相匹配,最終達(dá)到全速度。
d)
對(duì)于流動(dòng)模型,需要通過(guò)Reynolds數(shù)來(lái)判斷是層流還是湍流。當(dāng)流動(dòng)為湍流時(shí),應(yīng)采用湍流模型。
聲學(xué)、結(jié)構(gòu)、電磁波傳播
對(duì)于描述波傳播的模型,需要考慮它的時(shí)間和空間性。這意味著,最大的網(wǎng)格單元約提供每個(gè)波長(zhǎng)下10個(gè)線性或5個(gè)兩階單元。對(duì)于瞬態(tài)問(wèn)題,固定時(shí)間步長(zhǎng)需要足夠小。
結(jié)構(gòu)力學(xué)
a)
確保模型是全約束的。約束模型以避免所有的剛性運(yùn)動(dòng),對(duì)于3D實(shí)體力學(xué)模型需要6個(gè)約束,即3個(gè)平移和3個(gè)轉(zhuǎn)動(dòng)。否則模型就沒(méi)有定義好,計(jì)算無(wú)法收斂。不可能把6個(gè)約束條件加載到一個(gè)點(diǎn)上,在它上面最多只能限制3個(gè)平移自由度。對(duì)于一個(gè)3D實(shí)體力學(xué)模型,可以使用“3-2-1準(zhǔn)則”來(lái)約束3個(gè)自由度在一個(gè)點(diǎn)(一個(gè)固定約束)上,2個(gè)自由度在另外一個(gè)點(diǎn)上,1個(gè)自由度在第三個(gè)點(diǎn)上??梢赃x擇三個(gè)分開(kāi)的點(diǎn)(頂點(diǎn))來(lái)操作。然后在三個(gè)方向上固定第一個(gè)點(diǎn)。限制第二個(gè)點(diǎn)在兩個(gè)正交的方向上,并確保兩點(diǎn)間的連線沒(méi)有變形的限制。最后約束第三個(gè)點(diǎn)在由三個(gè)點(diǎn)組成的平面法線方向上。為了驗(yàn)證這種方法,模型一個(gè)溫度載荷下可以膨脹或收縮,整個(gè)過(guò)程中應(yīng)力沒(méi)有集中。2D模型則是在一個(gè)點(diǎn)上約束2個(gè)平動(dòng)自由度,在另外一個(gè)點(diǎn)上約束轉(zhuǎn)動(dòng)自由度。
b)
在變形量小的時(shí)候考慮使用線彈性材料模型,否則使用非線性材料模型;
c)
避免有尖的轉(zhuǎn)角,否則會(huì)帶來(lái)非物理解或帶來(lái)無(wú)限大的應(yīng)力集中。
8.
非物理解
哪里和為什么會(huì)出現(xiàn)非物理解?
在一些模型中,由于數(shù)值計(jì)算會(huì)帶來(lái)一些少量的非物理解。如:
a)
質(zhì)量擴(kuò)散中的負(fù)濃度;
b)
瞬態(tài)熱傳導(dǎo)中溫度略大于初始條件;
c)
結(jié)構(gòu)力學(xué)中在沒(méi)荷載的方向上出現(xiàn)少量反作用力;
d)
接觸分析中少量負(fù)間隙;
e)
少量負(fù)的有效塑性應(yīng)變;
f)
實(shí)體力學(xué)中理想塑性材料的應(yīng)力大于屈服應(yīng)力。
一些原因:
a)
數(shù)值噪聲造成的。當(dāng)一個(gè)獨(dú)立變量的值趨于零,那么數(shù)值噪聲的影響就相對(duì)比較大,從而引起了少量的非物理的負(fù)值。
b)
插值和外推造成的。例如,結(jié)果在有限元中的一個(gè)積分點(diǎn)(Gauss點(diǎn))對(duì)于一個(gè)彈塑性材料是正確的(在一定的誤差內(nèi)),但是當(dāng)外推到單元邊界上時(shí)變成了非物理值。
c)
模型不連續(xù)造成的。例如,由于初值不連續(xù)產(chǎn)生負(fù)濃度。對(duì)于對(duì)流模型,沿著某個(gè)邊界初值為零,例如,物理插值是一個(gè)初始尖銳,遠(yuǎn)離邊界則是逐漸擴(kuò)散的,然而,有限元模型默認(rèn)的形函數(shù)(二階Lagrange單元)只允許采用連續(xù)的函數(shù)。因此程序會(huì)在迭代前首先修改這些不連續(xù)的初始條件,這通常會(huì)在起始時(shí)間在解中引入一些“小坑”。如下圖所示,濃度在t=0時(shí)出現(xiàn)負(fù)值:
d)
缺少足夠的網(wǎng)格分辨率。如在高的對(duì)流區(qū)域(高的Peclet數(shù))和大的反應(yīng)項(xiàng)或快速反應(yīng)動(dòng)力學(xué)中(高的Damkohler數(shù))會(huì)產(chǎn)生負(fù)濃度從而遇到收斂性問(wèn)題。
e)
不合理的物理模型。例如對(duì)于質(zhì)量輸運(yùn),只能在高濃度時(shí)使用定常減少的反應(yīng)項(xiàng),當(dāng)濃度接近零時(shí),反應(yīng)項(xiàng)繼續(xù)消耗組分,從而產(chǎn)生負(fù)濃度。
避免非物理值
a)
在一些情況下,也可以對(duì)獨(dú)立變量使用基線,從而在獨(dú)立變量接近零時(shí)數(shù)值噪音不會(huì)影響求解。例如加任意一個(gè)基線溶度使?jié)舛却笥?/span>0。這種縮放方法對(duì)于某些情況無(wú)效,例如,一個(gè)反應(yīng)項(xiàng)它與濃度有關(guān)。
b)
避免使用不連續(xù)值,用合適的平滑階躍函數(shù)代替。
c)
使用對(duì)數(shù)變量可以消除網(wǎng)格分辨率和負(fù)值問(wèn)題。這是因?yàn)榫€性變換的網(wǎng)格有時(shí)無(wú)法描述濃度變化的指數(shù)行為。另外,使用對(duì)數(shù)變量可以保證求解過(guò)程中原變量不會(huì)出現(xiàn)負(fù)值。
d)
在繪圖時(shí)避免顯示數(shù)值噪音造成的非物理值。例如使用c*(c>0)來(lái)代替c,這樣在c小于零的部分都強(qiáng)制等于0。同時(shí)還可以通過(guò)調(diào)整繪圖的范圍來(lái)去掉它們。
e)
研究細(xì)化網(wǎng)格時(shí)非物理值是否變好或變壞。如果變好,那么就可以繼續(xù)加密網(wǎng)格。如果變壞,那么就應(yīng)檢查物理模型是否正確。
|