有限元編程中關(guān)于邊界條件的處理,深入探討

2017-02-27  by:CAE仿真在線  來(lái)源:互聯(lián)網(wǎng)


引言:在有限編程的一般流程中,在獲得原始總剛度矩陣之后,就是引入邊界條件了。力邊界條件直接表示在激振力向量中,而對(duì)于位移邊界條件的處理較為復(fù)雜。位移邊界條件的處理方法有萬(wàn)能鑰匙型的“罰函數(shù)法”和“拉格朗日乘子法”,以及處理特定情形的“置大數(shù)法”和“劃0置1”法。而且對(duì)于靜力學(xué)分析,模態(tài)分析,瞬態(tài)響應(yīng)分析和諧響應(yīng)分析,在一些細(xì)節(jié)上的處理稍有不同。在編程中,可能遇到的技術(shù)難點(diǎn)是:

  • 從理論上,應(yīng)該選擇哪種技術(shù)來(lái)處理邊界條件按更合適?


  • 在技術(shù)細(xì)節(jié)上,邊界條件的處理應(yīng)該在前處理器中實(shí)現(xiàn),還是在求解器中實(shí)現(xiàn)?在這里我打算根據(jù)個(gè)人的一些經(jīng)驗(yàn)談一談這些問(wèn)題,拋磚引玉。

1位移邊界條件的一般形式和“萬(wàn)能鑰匙型”處理方法

位移邊界條件的一般形式可寫為:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys workbanch圖片1

其中A和B是常數(shù)矩陣,而u是有限元模型節(jié)點(diǎn)自由度列向量。實(shí)際上,要解決的問(wèn)題是,如何在原始動(dòng)力矩陣中引入這些補(bǔ)充方程的影響,即聯(lián)解方程組:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys workbanch圖片2

有限元編程中關(guān)于邊界條件的處理,深入探討ansys workbanch圖片1

由于多了若干個(gè)(設(shè)為m個(gè))位移邊界條件,因此上述方程組有N個(gè)未知數(shù)卻有N+m個(gè)方程,無(wú)法直接聯(lián)立求解。既然稱這里討論的邊界條件形式為“一般形式”,那么能處理這種“一般形式”的方法在這里就姑且稱為“萬(wàn)能鑰匙型”處理方法。


既然問(wèn)題的關(guān)鍵在于未知數(shù)個(gè)數(shù)和方程數(shù)目的不匹配,那么解決方案也就是如下兩種:減少方程個(gè)數(shù)(罰函數(shù)法)增加未知數(shù)個(gè)數(shù)(拉格朗日乘子法)。在這里不打算展開(kāi)方法的細(xì)節(jié),要知道細(xì)節(jié)google即可。這里只是想說(shuō)明兩個(gè)方法的區(qū)別。


罰函數(shù)法最終將m個(gè)約束方程修正到了原始剛度矩陣中,從而保證了自由度數(shù)的不變,這可以視作它的一個(gè)優(yōu)點(diǎn)。但它的缺點(diǎn)也是顯而易見(jiàn)的,即需要指定懲罰系數(shù),而且在有多個(gè)約束方程的場(chǎng)合,甚至有必要為不同的約束方程指定不同的懲罰系數(shù)。而懲罰系數(shù)的確定完全是經(jīng)驗(yàn)的,例如在筆者編寫的有限元程序在用罰函數(shù)方法來(lái)處理壓電結(jié)構(gòu)的約束時(shí),需要分別指定針對(duì)電場(chǎng)自由度和機(jī)械場(chǎng)自由度的懲罰系數(shù)才可以達(dá)到較滿意的精度。拉格朗日乘子法增加了m個(gè)未知數(shù),不需要經(jīng)驗(yàn)的懲罰系數(shù),卻增大系統(tǒng)的自由度,在約束方程數(shù)量比較多的場(chǎng)合并不令人滿意。

注:在ANSYS中,對(duì)應(yīng)于CE命令。


2特殊位移邊界條件及其處理方法:直接位移約束

對(duì)于形如:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys培訓(xùn)課程圖片4

的位移邊界條件,即直接給出部分自由度位移的情形,常見(jiàn)的有兩種解決方案,都可以從罰函數(shù)方法導(dǎo)出,稱為“置大數(shù)法”和“劃0置1法”。相比較而言,前者所謂的“大數(shù)”就是罰函數(shù)法中的懲罰系數(shù),因而同樣有大數(shù)的取值問(wèn)題。而后者相當(dāng)于是運(yùn)用了主對(duì)角元素是大數(shù),對(duì)方程進(jìn)行了簡(jiǎn)化,從而不需要取“大數(shù)”,其代價(jià)是操作過(guò)程稍嫌麻煩。但考慮到“劃0置1法”幾乎可視作精確地考慮了上述位移邊界條件,過(guò)程的稍微繁瑣似乎也是可以接受的。


實(shí)際上,若在這兩種方法的基礎(chǔ)上再往后走,還有一種更“暴力”的方法,姑且稱之為“刪除行列法”。其基本出發(fā)非常好理解,既然一些自由度的取值已經(jīng)給出,那么它們就可以不作為未知數(shù)包含到求解中了。它們的影響體現(xiàn)為一個(gè)施加到剩余自由度上的力向量(類似于C-B模態(tài)綜合法中的約束模態(tài))。其本身對(duì)應(yīng)的行,列將從總體矩陣中刪除。這個(gè)方法看上去很美,尤其在矩陣中刪除行列的操作大多數(shù)現(xiàn)代編程語(yǔ)言的數(shù)值計(jì)算庫(kù)都能提供的情況下,更顯得手到擒來(lái)。它唯一的不足是增加了后處理的難度,需要設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)儲(chǔ)存那些被刪去的自由度的取值并將它們?nèi)诤系胶筇幚碇小?/span>

注:在ANSYS中,對(duì)應(yīng)于D命令。


3特殊位移邊界條件及其處理方法:自由度耦合

對(duì)于形如:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys培訓(xùn)課程圖片5

的位移邊界條件,通常稱為自由度耦合,即表示若干個(gè)廣義自由度實(shí)際上可以由其中任意一個(gè)表出。作為一般形式邊界條件的一個(gè)特例,它當(dāng)然可以用“萬(wàn)能鑰匙型”方法來(lái)解決,這里還有一個(gè)帖子詳細(xì)進(jìn)行了詳細(xì)的討論請(qǐng)教結(jié)構(gòu)的自由度耦合的問(wèn)題。


但實(shí)際上我發(fā)現(xiàn)有一種更簡(jiǎn)單直接的方法,既然有幾個(gè)自由度可以由同一個(gè)自由度表出,何不就將它們視為一個(gè)自由度?具體地,在內(nèi)部的“自由度”,“方程編號(hào)”映射表中,可以作如下處理:

節(jié)點(diǎn) 自由度 方程編號(hào)

1 UX 10

6 UX 10

19 UX 10


這樣自由度1UX,6Ux和19UX就都被u10表出了。這樣做的好處是,所有與這些自由度相關(guān)的系數(shù)(單元?jiǎng)偠认禂?shù),質(zhì)量系數(shù)等)都會(huì)組集到同一個(gè)實(shí)際自由度u10上。當(dāng)然,其代價(jià)是要重新調(diào)整“自由度”,“方程編號(hào)”映射表,甚至要重新組集總體剛度矩陣。其優(yōu)點(diǎn)也是顯然的,即無(wú)需任何經(jīng)驗(yàn)系數(shù),不增加反而減少了系統(tǒng)的自由度。也許文獻(xiàn)中對(duì)這種處理方法有命名,有知道的同志請(qǐng)指點(diǎn)一下。這個(gè)思路類似于上面的“刪除行列法”但是實(shí)際操作卻并是刪除那么簡(jiǎn)單。

注:在ANSYS中,對(duì)應(yīng)于CP命令。


4實(shí)現(xiàn)的問(wèn)題:前處理器還是求解器?

那么,在實(shí)際編程中,一個(gè)即將遭遇的問(wèn)題是,對(duì)約束條件的處理應(yīng)當(dāng)在前處理器中實(shí)現(xiàn)還是在求解器中實(shí)現(xiàn)?也許根據(jù)程序流程思路的不同,你的代碼并沒(méi)有明確的區(qū)分前處理器和求解器。但是一個(gè)顯而易見(jiàn)的問(wèn)題是代碼的復(fù)用性,如果邊界條件的引入過(guò)程都是一樣的,為什么不在前處理器中進(jìn)行,這樣,求解器收到的,都是一個(gè)已經(jīng)考慮了邊界條件的模型,直接按照各自的算法求解就可以了,不是更好么?


問(wèn)題在于,并不是所有的邊界條件都適合在前處理器中進(jìn)行引入,有些邊界條件的處理隨著求解器的不同而不同,有些邊界條件的處理又與求解器無(wú)關(guān)。這似乎說(shuō)明有必要將一部分邊界條件在前處理器中編碼,一部分在求解器中編碼,以實(shí)現(xiàn)代碼的最佳復(fù)用性。這也是我們?cè)凇?span>另一個(gè)的問(wèn)題:既然有一般方法,為什么仍然有必要實(shí)現(xiàn)特殊方法?”小節(jié)中給出的理由之一。


例如,在靜力學(xué)分析中,處理由約束ui=1引起的節(jié)點(diǎn)力只需要考慮靜剛度矩陣K;然而在諧響應(yīng)分析中,則需要考慮動(dòng)力剛度:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys培訓(xùn)課程圖片6

姑且不論還有另一個(gè)更大的問(wèn)題,即諧響應(yīng)分析中約束表達(dá)式ui=1存在歧義,即無(wú)法區(qū)分它意味著靜約束:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys培訓(xùn)課程圖片7

還是簡(jiǎn)諧約束:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys培訓(xùn)的效果圖片8

前者產(chǎn)生一個(gè)靜變形,不在諧響應(yīng)分析考察的范疇內(nèi),將被處理為:

有限元編程中關(guān)于邊界條件的處理,深入探討ansys培訓(xùn)的效果圖片9

而后者將產(chǎn)生一個(gè)簡(jiǎn)諧力,將被完整地處理。由于這樣的歧義,求解器必須知道約束的意義,與此同時(shí),前處理器在不知道下游的求解器是什么時(shí)也無(wú)法確定如何處理該約束。


這里列出了幾種常規(guī)求解情況下的約束處理需要修正的原始有限元數(shù)據(jù):約束類型(以ANSYS命令命名)

有限元編程中關(guān)于邊界條件的處理,深入探討ansys培訓(xùn)的效果圖片10

可見(jiàn),D型和CE型約束的處理與求解器相關(guān),因?yàn)樗鼈兌紩?huì)產(chǎn)生等效力載荷向量,這個(gè)力載荷怎么計(jì)算,是“靜”的還是“動(dòng)”的都只能由求解器來(lái)解釋。而CP型約束本身不產(chǎn)生約束力,所以與求解器無(wú)關(guān)。


5另一個(gè)的問(wèn)題:既然有一般方法,為什么仍然有必要實(shí)現(xiàn)特殊方法?

這個(gè)問(wèn)題擴(kuò)展開(kāi)來(lái),是:既然我們有一般處理方法(罰函數(shù)法,拉格朗日乘子),那么何不選擇一種實(shí)現(xiàn),然后在前處理中或者求解器中調(diào)用,將邊界條件引入,然后求解?為什么要將約束按照各種類型分開(kāi)處理?


原因1:如第4節(jié)所言,處于代碼維護(hù)和重用性的角度考慮,CP型約束適合在前處理器中進(jìn)行,而D型和CE型適合在求解器中進(jìn)行。既然分開(kāi)處理,就可以用各自更適用更簡(jiǎn)單的處理方式了。原因2:一般處理方法各有弊端,選擇罰函數(shù)必須冒著求解精度下降的風(fēng)險(xiǎn),而選擇拉格朗日乘子則會(huì)增大模型的自由度規(guī)模。而將特殊情況用各自的特殊方法處理,可以獲得精確解。只有在約束條件不特殊時(shí)再用一般方法進(jìn)行處理。這樣可以更好的控制模型的精度和規(guī)模。


6一種實(shí)現(xiàn)方式

綜上所示,根據(jù)個(gè)人的編程經(jīng)驗(yàn),推薦這樣的實(shí)現(xiàn)方式:


D 型, 求解器實(shí)現(xiàn),劃0置1法

CE型,求解器實(shí)現(xiàn),罰函數(shù)法

CP型,前處理器實(shí)現(xiàn),“重新組集法”


即盡可能采用精確的處理方式,實(shí)在避不過(guò)時(shí)(只能用CE型表示時(shí)),用近似解法。


開(kāi)放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:有限元編程中關(guān)于邊界條件的處理,深入探討 Ansys有限元培訓(xùn) Ansys workbench培訓(xùn) ansys視頻教程 ansys workbench教程 ansys APDL經(jīng)典教程 ansys資料下載 ansys技術(shù)咨詢 ansys基礎(chǔ)知識(shí) ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com