有限元編程中關(guān)于邊界條件的處理,深入探討
2017-02-27 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
引言:在有限編程的一般流程中,在獲得原始總剛度矩陣之后,就是引入邊界條件了。力邊界條件直接表示在激振力向量中,而對于位移邊界條件的處理較為復(fù)雜。位移邊界條件的處理方法有萬能鑰匙型的“罰函數(shù)法”和“拉格朗日乘子法”,以及處理特定情形的“置大數(shù)法”和“劃0置1”法。而且對于靜力學(xué)分析,模態(tài)分析,瞬態(tài)響應(yīng)分析和諧響應(yīng)分析,在一些細節(jié)上的處理稍有不同。在編程中,可能遇到的技術(shù)難點是:
-
從理論上,應(yīng)該選擇哪種技術(shù)來處理邊界條件按更合適?
-
在技術(shù)細節(jié)上,邊界條件的處理應(yīng)該在前處理器中實現(xiàn),還是在求解器中實現(xiàn)?在這里我打算根據(jù)個人的一些經(jīng)驗談一談這些問題,拋磚引玉。
1位移邊界條件的一般形式和“萬能鑰匙型”處理方法
位移邊界條件的一般形式可寫為:
其中A和B是常數(shù)矩陣,而u是有限元模型節(jié)點自由度列向量。實際上,要解決的問題是,如何在原始動力矩陣中引入這些補充方程的影響,即聯(lián)解方程組:
由于多了若干個(設(shè)為m個)位移邊界條件,因此上述方程組有N個未知數(shù)卻有N+m個方程,無法直接聯(lián)立求解。既然稱這里討論的邊界條件形式為“一般形式”,那么能處理這種“一般形式”的方法在這里就姑且稱為“萬能鑰匙型”處理方法。
既然問題的關(guān)鍵在于未知數(shù)個數(shù)和方程數(shù)目的不匹配,那么解決方案也就是如下兩種:減少方程個數(shù)(罰函數(shù)法)和增加未知數(shù)個數(shù)(拉格朗日乘子法)。在這里不打算展開方法的細節(jié),要知道細節(jié)google即可。這里只是想說明兩個方法的區(qū)別。
罰函數(shù)法最終將m個約束方程修正到了原始剛度矩陣中,從而保證了自由度數(shù)的不變,這可以視作它的一個優(yōu)點。但它的缺點也是顯而易見的,即需要指定懲罰系數(shù),而且在有多個約束方程的場合,甚至有必要為不同的約束方程指定不同的懲罰系數(shù)。而懲罰系數(shù)的確定完全是經(jīng)驗的,例如在筆者編寫的有限元程序在用罰函數(shù)方法來處理壓電結(jié)構(gòu)的約束時,需要分別指定針對電場自由度和機械場自由度的懲罰系數(shù)才可以達到較滿意的精度。拉格朗日乘子法增加了m個未知數(shù),不需要經(jīng)驗的懲罰系數(shù),卻增大系統(tǒng)的自由度,在約束方程數(shù)量比較多的場合并不令人滿意。
注:在ANSYS中,對應(yīng)于CE命令。
2特殊位移邊界條件及其處理方法:直接位移約束
對于形如:
的位移邊界條件,即直接給出部分自由度位移的情形,常見的有兩種解決方案,都可以從罰函數(shù)方法導(dǎo)出,稱為“置大數(shù)法”和“劃0置1法”。相比較而言,前者所謂的“大數(shù)”就是罰函數(shù)法中的懲罰系數(shù),因而同樣有大數(shù)的取值問題。而后者相當(dāng)于是運用了主對角元素是大數(shù),對方程進行了簡化,從而不需要取“大數(shù)”,其代價是操作過程稍嫌麻煩。但考慮到“劃0置1法”幾乎可視作精確地考慮了上述位移邊界條件,過程的稍微繁瑣似乎也是可以接受的。
實際上,若在這兩種方法的基礎(chǔ)上再往后走,還有一種更“暴力”的方法,姑且稱之為“刪除行列法”。其基本出發(fā)非常好理解,既然一些自由度的取值已經(jīng)給出,那么它們就可以不作為未知數(shù)包含到求解中了。它們的影響體現(xiàn)為一個施加到剩余自由度上的力向量(類似于C-B模態(tài)綜合法中的約束模態(tài))。其本身對應(yīng)的行,列將從總體矩陣中刪除。這個方法看上去很美,尤其在矩陣中刪除行列的操作大多數(shù)現(xiàn)代編程語言的數(shù)值計算庫都能提供的情況下,更顯得手到擒來。它唯一的不足是增加了后處理的難度,需要設(shè)計數(shù)據(jù)結(jié)構(gòu)儲存那些被刪去的自由度的取值并將它們?nèi)诤系胶筇幚碇小?/span>
注:在ANSYS中,對應(yīng)于D命令。
3特殊位移邊界條件及其處理方法:自由度耦合
對于形如:
的位移邊界條件,通常稱為自由度耦合,即表示若干個廣義自由度實際上可以由其中任意一個表出。作為一般形式邊界條件的一個特例,它當(dāng)然可以用“萬能鑰匙型”方法來解決,這里還有一個帖子詳細進行了詳細的討論請教結(jié)構(gòu)的自由度耦合的問題。
但實際上我發(fā)現(xiàn)有一種更簡單直接的方法,既然有幾個自由度可以由同一個自由度表出,何不就將它們視為一個自由度?具體地,在內(nèi)部的“自由度”,“方程編號”映射表中,可以作如下處理:
節(jié)點 自由度 方程編號
1 UX 10
6 UX 10
19 UX 10
這樣自由度1UX,6Ux和19UX就都被u10表出了。這樣做的好處是,所有與這些自由度相關(guān)的系數(shù)(單元剛度系數(shù),質(zhì)量系數(shù)等)都會組集到同一個實際自由度u10上。當(dāng)然,其代價是要重新調(diào)整“自由度”,“方程編號”映射表,甚至要重新組集總體剛度矩陣。其優(yōu)點也是顯然的,即無需任何經(jīng)驗系數(shù),不增加反而減少了系統(tǒng)的自由度。也許文獻中對這種處理方法有命名,有知道的同志請指點一下。這個思路類似于上面的“刪除行列法”但是實際操作卻并是刪除那么簡單。
注:在ANSYS中,對應(yīng)于CP命令。
4實現(xiàn)的問題:前處理器還是求解器?
那么,在實際編程中,一個即將遭遇的問題是,對約束條件的處理應(yīng)當(dāng)在前處理器中實現(xiàn)還是在求解器中實現(xiàn)?也許根據(jù)程序流程思路的不同,你的代碼并沒有明確的區(qū)分前處理器和求解器。但是一個顯而易見的問題是代碼的復(fù)用性,如果邊界條件的引入過程都是一樣的,為什么不在前處理器中進行,這樣,求解器收到的,都是一個已經(jīng)考慮了邊界條件的模型,直接按照各自的算法求解就可以了,不是更好么?
問題在于,并不是所有的邊界條件都適合在前處理器中進行引入,有些邊界條件的處理隨著求解器的不同而不同,有些邊界條件的處理又與求解器無關(guān)。這似乎說明有必要將一部分邊界條件在前處理器中編碼,一部分在求解器中編碼,以實現(xiàn)代碼的最佳復(fù)用性。這也是我們在“另一個的問題:既然有一般方法,為什么仍然有必要實現(xiàn)特殊方法?”小節(jié)中給出的理由之一。
例如,在靜力學(xué)分析中,處理由約束ui=1引起的節(jié)點力只需要考慮靜剛度矩陣K;然而在諧響應(yīng)分析中,則需要考慮動力剛度:
姑且不論還有另一個更大的問題,即諧響應(yīng)分析中約束表達式ui=1存在歧義,即無法區(qū)分它意味著靜約束:
還是簡諧約束:
前者產(chǎn)生一個靜變形,不在諧響應(yīng)分析考察的范疇內(nèi),將被處理為:
而后者將產(chǎn)生一個簡諧力,將被完整地處理。由于這樣的歧義,求解器必須知道約束的意義,與此同時,前處理器在不知道下游的求解器是什么時也無法確定如何處理該約束。
這里列出了幾種常規(guī)求解情況下的約束處理需要修正的原始有限元數(shù)據(jù):約束類型(以ANSYS命令命名)
可見,D型和CE型約束的處理與求解器相關(guān),因為它們都會產(chǎn)生等效力載荷向量,這個力載荷怎么計算,是“靜”的還是“動”的都只能由求解器來解釋。而CP型約束本身不產(chǎn)生約束力,所以與求解器無關(guān)。
5另一個的問題:既然有一般方法,為什么仍然有必要實現(xiàn)特殊方法?
這個問題擴展開來,是:既然我們有一般處理方法(罰函數(shù)法,拉格朗日乘子),那么何不選擇一種實現(xiàn),然后在前處理中或者求解器中調(diào)用,將邊界條件引入,然后求解?為什么要將約束按照各種類型分開處理?
原因1:如第4節(jié)所言,處于代碼維護和重用性的角度考慮,CP型約束適合在前處理器中進行,而D型和CE型適合在求解器中進行。既然分開處理,就可以用各自更適用更簡單的處理方式了。原因2:一般處理方法各有弊端,選擇罰函數(shù)必須冒著求解精度下降的風(fēng)險,而選擇拉格朗日乘子則會增大模型的自由度規(guī)模。而將特殊情況用各自的特殊方法處理,可以獲得精確解。只有在約束條件不特殊時再用一般方法進行處理。這樣可以更好的控制模型的精度和規(guī)模。
6一種實現(xiàn)方式
綜上所示,根據(jù)個人的編程經(jīng)驗,推薦這樣的實現(xiàn)方式:
D 型, 求解器實現(xiàn),劃0置1法
CE型,求解器實現(xiàn),罰函數(shù)法
CP型,前處理器實現(xiàn),“重新組集法”
即盡可能采用精確的處理方式,實在避不過時(只能用CE型表示時),用近似解法。
相關(guān)標簽搜索:有限元編程中關(guān)于邊界條件的處理,深入探討 Ansys有限元培訓(xùn) Ansys workbench培訓(xùn) ansys視頻教程 ansys workbench教程 ansys APDL經(jīng)典教程 ansys資料下載 ansys技術(shù)咨詢 ansys基礎(chǔ)知識 ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓(xùn)