如何在 COMSOL 中評估應力
我們經常會遇到關于如何在 COMSOL Multiphysics? 軟件中最好的評估各種應力的問題,軟件提供了許多不同的應力變量和用于呈現結果的選項。在這篇文章中,我們將詳細討論這些問題。在深入探討應力分析的細節之前,我們先重點討論結果評估的一般工作方式。
什么使應力如此特別?
在物理學的許多領域,主要關注的場變量本身,而不是其梯度。例如,在傳熱分析中,溫度通常是需要尋找的,而詳細的溫度梯度和熱通量是次要的。然而,在結構力學中,局部應力和應變往往比位移更重要。在大多數情況下,高應力是靜態或疲勞失效的原因。因此,可靠的應力評估很重要。
一些有限元基礎
在有限元方法中,幾何體被細分稱為有限單元的小塊,構成一個網格。在每個單元中,都有一個關于要求解的場的變化的假設,它是由形狀函數 近似的。最常見的是,形狀函數是作為坐標函數的線性或二次多項式。該場可以是標量或矢量場。
所有網格單元在網格節點處相互連接。通過考慮某些通量的平衡條件,可以為所有網格節點處的場值建立一個方程組。
下表對一些被求解的場的常見情況進行了總結:
| 物理場 | 場 | 梯度 | 通量 |
固體力學 |
位移 (矢量) |
應變 (張量) |
應力 (張量) |
傳熱 |
溫度 (標量) |
溫度梯度 (矢量) |
熱通量 (矢量) |
擴散 |
濃度 (標量) |
濃度梯度 (矢量) |
質量通量 (矢量) |
靜電 |
電勢 (標量) |
電場 (矢量) |
電位移 (矢量) |
當求解通過有限元近似生成的方程時,因變量(自由度或 DOF)在所有網格節點處都是已知的。該場在整個幾何結構上是連續的,并且單元內任何點的值由單元節點處的值和假設的插值多項式(即形狀函數)唯一定義。
然而,場的梯度通常在單元之間是不連續的。在單元內部,它由形狀函數的空間導數和單個單元節點處的節點值確定。因此,梯度也在每個單元內唯一定義,但不在單元邊界處。然后根據梯度計算通量。對于線性函數,只需要計算梯度與給定材料參數的乘積就可以了。
物理場連續性
重要的是要認識到,由于物理原因,通量大多數時候是連續的。從一個單元流出的東西應該流入下一個單元。只有數值表示是不連續的。然而,隨著網格的細化,有限元解將收斂于真實的連續解。不幸的是,對于我們這些從事應力研究的人來說,梯度的收斂速度比場的收斂要慢。
然而,梯度和通量的連續性并不是微不足道的。如果兩種不同材料之間存在邊界,那么只有通量和梯度的某些分量是連續的。
一般來說,通量在垂直于邊界的方向上是連續的,但在切線方向上不是。對于梯度,情況正好相反。
在下面的示例中,在一個由兩個具有不同材料屬性的正方形組成的矩形中研究了穩態熱傳遞。
通過繪制沿分隔兩個域的邊界的溫度梯度和熱通量,可以可視化連續性。
沿材料邊界的熱通量。
正如預期的那樣,y 方向的溫度梯度以及 x 方向的通量在邊界的兩側是相同的。如果對固體力學做同樣的設定,我們會發現兩個應力分量 和
,以及一個應變分量
都連續。另一種看法是,那些可以在自由邊界上指定的通量分量在內邊界上也必須是連續的。
請注意,大多數不變量,例如等效應力或通量范數,將在材料不連續處發生跳躍,因為并非組成張量或矢量的所有分量都是連續的。
單元之間的平均
由于已知我們正在研究的大多數量都是連續的,因此很容易對例如單元之間的應力進行平均。這也是大多數情況下的默認設置。通常,它不僅會改善視覺印象,而且更接近真正收斂解。
您可以控制是否以及如何應用平均(或使用結果表示術語:平滑)。對于大多數結果表示,都可用使用質量 部分。
平滑選項。
下表總結了不同的平滑選項:
| 選擇 | 影響 |
無 |
相鄰單元之間沒有平滑。 |
內部材料域 |
在屬于同一材料域的相鄰單元之間進行平滑處理。最簡單的材料域是一組具有相同材料分配的域。然而,一些物理場接口確實實現了它們自己的定義。例如殼 接口,只有當單元具有相同的材料和厚度并且沒有通過折線連接時,它們才屬于相同的材料域。請注意,這是添加新繪圖時的默認選項。 |
內部幾何域 |
平滑是在屬于同一幾何域但不跨越域邊界的相鄰單元之間完成的。 |
所有域 |
在所有相鄰單元之間進行平滑處理。 |
表達式 |
當布爾、用戶定義的表達式計算為非零值時執行平滑。 |
應用平滑時,您還可以使用平滑閾值。這提供了一個限制,即在某個網格節點處之前相鄰單元之間的值差異有多大,才會被禁用平滑。我們的想法是你應該得到一個折衷方案,一般來說,在不隱藏明顯的不連續的情況下,圖形總體上是漂亮且平滑的。
從 COMSOL? 軟件 6.0 版本開始,結構力學接口生成的默認應力圖就使用了這個功能。默認情況下,閾值被設置為 0.2,但您可以根據需要自定義此值。
固體力學接口中默認繪圖的 質量 部分。使用默認閾值 0.2,可以接受高達 20% 的差異進行平滑處理。
在下圖中,在一個具有單一材料的二維固體力學模型中的應力圖中顯示了不同類型的平滑示例。為了強調效果,使用了一階三角形單元。這是一個低性能的單元,每個單元內的應變和應力是恒定的。觀察這個圖時,需要注意的是:
沒有任何平滑(左下圖),網格中的每個單元都清晰可見。
當在所有單元之間進行平滑處理時(下中圖),視覺印象比沒有任何平滑處理要好得多。與使用精細網格和二次形狀函數生成的“正確”高分辨率解(右下圖)的總體相似性并不算太差。然而,高應力區域中的一些細節沒有被準確地表示出來。
因為在此示例中只使用了一種材料,所以所有域(中下圖)和內部材料域選項之間沒有區別。
當使用內部幾何域選項(右上圖)時,您可以看到域之間的應力跳躍,同時在每個域內應用平滑。如果已將不同的材料分配給各個域,具有內部材料域的圖將與此類似。
內部材料域選項用于結構力學的默認設置(左上圖)。請注意,在應力被解析得不好的地方,應力的跳躍清晰可見,而在梯度不太明顯的地方,輪廓是平滑的。使用這種類型的繪圖,您可以獲得兩全其美的效果:總體上看起來流暢,而分辨率不足的區域也十分明顯。
不同類型平滑的效果。
到目前為止,我們一直在研究體積、曲面和等高線圖中的平均和跳躍會發生什么。對于折線圖,復雜性會增加。如果該線有一個或多個相鄰曲面,則需要在兩個方向上進行平均:
沿線方向,與線是否連接到一個或多個表面無關。這可以采用與上述相同的方式完成,并且可以使用相同的質量 設置部分。
穿過線方向,在相鄰表面之間(如果有多個表面)。首先執行該操作并且是無條件的。
如果要繪制的量不應該是連續的,就不再需要平均值;如果您需要在每個邊界 (3D) 或域 (2D) 的一個圖形,就需要使用特殊的算子。
如果該線表示 2D 中的邊界,則可以使用 up() 和 down() 算子指定從哪個域獲取結果。“上”和“下”側分別對應于法線向量在邊界上的方向。上述熱通量的圖就使用了這個方法。下面是在 x 方向重復的溫度梯度圖,也包括默認的平均結果。顯然,當跨越邊界存在物理不連續性時,默認平均不是一個好的選擇。
x 方向的溫度梯度、平均值和每個域的值。
同樣的技術也可用于 3D 內部邊界上的曲面圖,但在這種情況下,當然只能一次從一側繪制值。
如果所選的線是 3D 中的一條邊,事情就會稍微復雜一些,因為可以有任意數量的邊界共享這條邊。在這種情況下,您需要使用 side() 算子從各個邊界中選取值。邊算子的語法類似于 side(12,shell.mises),其中第一個參數是邊界數。因此,您首先必須弄清楚您需要結果的邊界數。一種快速的方法是創建內置變量 dom 的曲面圖,然后只需單擊預期的邊界即可查看其數量。
查找邊界數量的另一種方法是移動到模型開發器樹中具有邊界選擇的任何節點,然后將鼠標指針懸停在邊界上。邊界編號動態就會顯示在圖形 窗口的左上角。
使用邊界選擇功能查找邊界數量。
結果在哪里評估?
在生成彩色圖和折線圖后,要繪制的表達式通常在每個單元、單元邊界或單元邊緣內的幾個點處進行評估。評估點的數量由質量 部分中的 分辨率 設置控制。
分辨率選項。
當選擇了預定義的其中一個分辨率,將被評估的點的數量取決于幾個因素,如模型大小和空間維度。使用高分辨率通常會在單元內生成更詳細的圖。但是,這僅在評估的表達式在單元內部實際上具有高度平滑度時才有用。否則,只會造成虛假波動。
如何計算應力
到目前為止,我們主要介紹了一般的結果表示選項。對于應力的可視化,還有一件事需要考慮,那就是如何在每個單元中實際計算應力。
總應變只是位移的導數,所以總是平滑的。然而,這些應力通常是幾種不同效應組合的結果。如何計算應力的確切細節取決于頂層材料模型以及幾何非線性是否有效。為了解釋一般原理,我們假設頂層材料是線彈性的,并且分析是幾何線性的。
那么,應力張量 , 可以用下式計算
式中, 是彈性張量,
是彈性應變,
是任何額外的壓力貢獻。彈性應變是總應變之差
,使用形狀函數和節點位移以及任何非彈性應變場
計算。
非彈性應變的一些例子是:
熱應變
吸濕膨脹應變
塑性應變
蠕變應變
初始應變
額外應力貢獻的一些例子是:
黏彈性應力
阻尼引起的應力
初始應力
因此,通常來說總應力是幾個不同貢獻的總和。尤其, 和
通常是同一數量級,因此彈性應變張量包含由兩個或更多的大數減去另一個大數獲得的小數。例如,不受約束的熱膨脹或大的塑性變形就是這種情況。
那么為什么這會是一個問題呢?如果不同的應力和應變貢獻不是由單元上相同類型的插值表示,就可能存在較大的局部波動,即使結果在平均意義上是一致的。
一個特例:熱膨脹
我們先來研究一個可能發生這種情況的常見案例。有限元界很早就觀察到,在耦合熱應力分析中會出現“波浪狀”應力模式。在耦合熱應力分析中,最常見的是對位移和溫度都使用二次形函數。由于熱應變與溫度成正比, 將在每個單元內具有二次變化。然而,總應變是位移形狀函數的導數,因此將具有線性分布。現在,彈性應變被計算為線性函數和二次函數之間的差。效果是每個單元內部可能存在奇怪的彈性應變(以及應力)模式。出于這個原因,當溫度被用來驅動固體的熱膨脹時,有時建議使用線性形狀函數來解決熱問題。在 COMSOL Multiphysics 中,此問題在內部由熱膨脹多物理場耦合節點(以及吸濕膨脹 和插層應變 等類似特征)處理。非彈性應變場被重新插值到一個多項式階數,該階數與從位移場計算出的應變相匹配。這將減少局部應力解中的這種假象。
逐點狀態
還有另一種類型的非彈性應變根本不涉及場,而是在積分點(高斯點)處逐點的局部狀態。有關高斯點的更多詳細信息,請查看之前的文章“如何在有限元模擬中使用數值積分和高斯點”。大多數非線性材料模型,如塑性和蠕變,都是這樣工作的。在這種情況下,單元中任意位置的應力評估會變得更加復雜。
如果要求一個應力分量,例如 solid.sx,它實際上是在單元中的每個位置“動態”計算的。非線性材料定律就是在該位置利用最近點 高斯點的存儲值被評估的。如果單元上非彈性應變的變化很大,可能會引入明顯的誤差。甚至可能無法評估材料定律,即使它可以在高斯點進行評估。
一個比較好的方法是基于高斯點值創建平滑近似。gpeval() 算子提供了這種可能性。例如,如果您請求 gpeval(4,solid.sx) 而不是 solid.sx,您將繪制一個在單元上平滑的應力。在這種情況下,非線性應力-應變關系僅在已經滿足的高斯點處進行評估。然后,再使用高斯點值的最小二乘擬合來定義平滑場。
在其原始版本中,gpeval() 算子要求您輸入適當的積分順序作為第一個參數。所幸在大多數情況下,您不必這么做。COMSOL 軟件的物理場接口中提供了許多預定義變量,例如 solid.sGpx 和 solid.misesGp。如果您無法為表達式找到合適的內置變量,則可以使用物理場接口特定的算子,例如 solid.gpeval(expr)。 正確的積分順序將被嵌入到特定于物理場接口的算子中。
在下面的示例中,針對已經存儲在高斯點的場(通過名為 myDOF 的用戶定義的因變量)探索了不同的評估選項。該模型由單個 2D 單元組成,x 和 y 坐標范圍為 0 到 1。該場由表達式 (Y+1)/(2*X+1) 描述。使用 3 × 3 高斯點方案,因此將存儲九個獨立的數字。這些值正是在每個高斯點處評估的原始場的值。
不同類型的高斯點數據評估。
相同的數據,由高度圖表示。
在左上方的圖中,原始函數是可視化的。在它的下方,顯示了存儲狀態 myDOF 的曲面圖的行為。在同一圖中,高斯點的位置以及存儲的值也被顯示了出來。默認行為,即高斯點狀態由最近的高斯點處的值表示,在這里清晰可見。在這種情況下,一個更好的方法是使用 gpeval() 算子評估平滑場,如底行最右邊的兩個圖所示。這兩個圖之間的差異是平滑場的多項式階數。默認是使用雙線性場(中下圖)。在此示例中,擬合二次場是更好的選擇。在中上圖和右上圖中,顯示了平滑場與函數精確值之間的差異。
最后,我們來處理兩個常見的誤解:
如果您在高斯點處評估一個類似 solid.sx 的表達式,則確實會在高斯點處獲得計算值。但是,在高斯點處評估類似 solid.sGpx 或 gpeval(4,solid.sx) 的表達式將不會在該點檢索存儲的結果。原因是這些表達式給出了通過最小二乘擬合獲得的平滑場。擬合多項式不一定會通過其數據點。
如果您評估一個邊界上類似于 gpeval(4,solid.sx) 的表達式,則 邊界上高斯點的值用于設置插值多項式。如果您在固體力學模型的邊界上繪制曲面圖,這可能不是您想要的。幸運的是,COMSOL 軟件接口中內置的量 solid.sGpx 和 solid.gpeval(solid.sx) 與您期望的一樣:它們使用域插值。
評估最大值
有了上面介紹的工具箱,我們可以處理評估最大值的常見任務。首先,重要的是要認識到沒有單一的“正確”方法。唯一的真理是使用非常精細的網格進行分析,以使離散化誤差非常小。在現實生活中,這是不太可行的。
話雖如此,通常最好使用高斯點插值結果,因為不太容易出現隨機波動。然而,對于所有情況,這可能不是最好的(在“最接近真相”的意義上)結果。
在后處理中,您可以使用不同的方法來獲得最大值(下面的 UI 圖像中顯示了其中的五種)。您可以查看圖例上的最大值(請參見下圖(1)),也可以添加:
標記子節點,例如,體積圖(參見(2))。
標記子節點使用與繪圖本身相同的數據進行,因此結果始終一致。
由繪圖的質量 部分中的設置控制評估。
像表面最大值/最小值 這樣的節點到繪圖組(參見(3))。
這些節點有自己的設置。
在高級 部分進行控制評估。
派生值 下的類似表面最大值 的節點(參見(4))。
這些節點有自己的設置。
在配置 部分控制評估。
定義 節點下的最大 算子(參見(5))。
這類算子有自己的設置。
在高級 部分控制評估。
該算子可用于全局評估。
線圖的圖形標記。
使用與繪圖本身相同的數據評估標記,因此結果將始終一致。
由繪圖的質量 部分中的設置控制。
派生值下的點計算 節點-如果已知臨界點。
幾何點將使用相鄰邊、邊界或域的平均值。
截點 數據集中的一個點將從單個單元素的單個評估中獲取其值。
很明顯,使用這些方法獲得的值不一定相同。一些提示:
如果要突出顯示繪圖或圖形中的峰值,請使用相應的標記 子節點。如果值不一致,查看繪圖的人會感到困惑。
如果您想獲得最壞情況下的值,請使用抑制平均的評估。
只要使用平滑或應力計算涉及到逐點狀態,表面和體積最大值評估可能不會給出相同的值,即使預期最大值在表面處。
對于結構力學問題,最大應力通常出現在邊界處。如果邊界沒有加載,有一個很好的技巧可以獲得準確的結果,那就是在它上面添加一個非常薄的膜,其材料數據與實體相同。這個膜充當一種虛擬應變計。
下圖顯示了評估應力分量最小值的不同選項的效果,使用表面和體積圖中的標記。solid.sy 和 solid.sGpy 都使用了平均和不平均繪制。正如預期的那樣,未經平滑計算的每個值都高于經過平滑計算的相應值。還可以注意到,如果沒有平均,表面和體積評估會給出相同的結果。這是很自然的,因為峰值在表面,所以在兩種情況下都探測到相同的峰值位置。
我應該繪制哪些應力結果?
當您要選擇繪制結果時,會遇到如下所示的菜單:
選擇應力結果。
可用的確切選項取決于物理場接口以及您使用的材料模型和其他選項。這可能看起來令人不知所措,但有些量比其他量更重要。
對于各向同性材料,最常見的是使用標量應力測量,例如 von Mises 或 Tresca 等效應力。von Mises 應力很受歡迎,因為它很容易評估,并且因為它可以直接計算例如靈敏度。但是,如果您想安全起見,Tresca 壓力是更好的選擇。Tresca 等效應力的值比給定應力狀態下的 von Mises 應力值大 0% ~17%。在某些工程領域,如壓力容器,常用的是 Tresca 應力,有時稱為應力強度。
盡管 von Mises 和 Tresca 等效應力對于了解應力狀態非常有用,但它們只能用于評估失效風險或找到特定材料類別的“最大負載點”。這些應力測量最初是為預測金屬的屈服而設計的,它們對平均應力不敏感。金屬在 Mariana Trench(太平洋海底)中并不比在自由空氣中更接近屈服!另一方面,土壤或混凝土等材料的失效很大程度上取決于平均應力。壓縮狀態是穩定的。
現在你可能會問:如果我的材料不是金屬,我怎樣才能得到一個以紅點為臨界點的圖?答案包含兩個部分:首先,如果不引入一些描述故障的材料屬性,通常不能這樣做。一旦您可以訪問這些值,就可以使用結構力學接口中的安全 節點。這個特征可以為許多類別的材料計算不同類型的失效裕度測量值。由于這些標準通常基于壓力,因此上述關于壓力評估的任何內容也適用于此。
安全特征中的故障模型。
有時,您可能想研究各個應力分量。這可能是因為材料是各向異性的,或者因為您想更好地了解應力分布。對于后一種情況,繪制主應力圖通常也很有用。
在處理單個應力分量時,您希望在全局坐標系之外的其他方向上進行評估是很常見的。有幾種標記為“局部坐標系”類型的結果。這意味著方向是由材料節點中的坐標系選擇確定,例如線性彈性材料。
在材料模型中選擇坐標系。
對于各向同性材料,坐標系選擇的唯一作用是為結果定義局部方向。對于各向異性材料,選擇的主要目的是為材料數據提供參考方向。附帶的您會在局部方向上得到應力和應變結果。
在 COMSOL Multiphysics 中,存在三種類型的應力張量:柯西、第一類皮奧拉-基爾霍夫,第二類皮奧拉-基爾霍夫。要了解有關此主題的更多信息,請查看之前的文章:為什么會有這些壓力和應變?以及 COMSOL 官網上關于應力和運動方程的多物理場百科網頁。如果您計劃研究應力張量的單個分量,區別可能很重要,但對于幾何線性分析,應力張量都是相同的。
結語
COMSOL Multiphysics 為精細調整結果的評估和展示提供了多種選項。為了充分利用仿真,熟悉這些選項很重要,什么是最佳選擇取決于您正在研究的內容和分析的目的。
還有一種我們沒有討論的情況是,如何處理出現在拐角處或其他奇點處的高應力。文章“有限元模型中的奇點:如何處理模型中的紅點” 中討論了奇點的影響。后續我們可能會重新討論這個具有重大實際意義的話題。
本文來自:COMSOL
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















