淺談有限元分析中的RBE2與RBE3單元

?

 

1.什么是RBE2和RBE3

    在有限元分析中,經常會用到一種類似蜘蛛網形式的單元,大家對這種單元的叫法也都不一,比如rbe2、rbe3、多點約束、剛性單元、柔性單元、耦合等等,筆者這里還是習慣叫它rbe2和rbe3單元。這類單元一般用于施加邊界條件和連接,這篇文章簡要談一談rbe2和rbe3蜘蛛網結構的作用、區別以及使用場景的區別。

?

淺談有限元分析中的RBE2與RBE3單元的圖2 編輯

蜘蛛網結構

2.單元特性

  • rbe2單元

    rbe2單元就是常說的剛性單元,不同的求解器對剛性單元有不同的命令或關鍵字,例如在Optistruct和Nastran中以剛性單元以關鍵字rbe2給出。

?

編輯

    在Abaqus中,剛性單元常用*coupling-*Kinematic給出

?

編輯

    而在ANSYS中,剛性單元一般以cerig命令給出

?

編輯

    不同求解器對于rbe2單元的底層數值算法可能略有差異,但其物理表現形式大致相同。都是將主節點與從節點構成一個無限剛度的區域,rbe2單元內部節點間沒有任何相對運動,可以理解為整個rbe2單元形成了一個剛體,其主節點有6個自由度。由于rbe2單元其內部無限剛度的特性,在有限元模型中使用rbe2單元會增加局部剛度,但一般在小范圍內使用rbe2單元幾乎是不會對整體結構產生影響的。

?

編輯
  • rbe3單元

    rbe3單元一般也叫柔性單元,與rbe2一樣,不同求解器有不同的關鍵字描述,在Nastran、Optistruct與ANSYS都用rbe3關鍵字進行描述,只是格式不同,ANSYS的rbe3關鍵字如下:

?

編輯

        Optistruct的rbe3關鍵字如下:

?

編輯

    而在abaqus中,rbe3單元一般用*COUPLING-*DISTRIBUTING關鍵字進行描述

?

編輯

    與rbe2單元相反,rbe3單元主節點與從節點之間僅僅通過一定加權的方式進行載荷的傳遞,因此rbe3單元完全不會對模型提供任何額外的剛度,不會限制內部從節點之間的任何相對運動。

    至此,兩種單元的基本特性大致介紹完了,下面我們來討論這兩種單元的使用場景及原則。

3.使用場景

  • 加載載荷:

        兩種單元都可以用于加載載荷, 例如加載集中力和力矩等。通過這兩種單元可以將集中力和力矩傳遞到一定范圍的區域。例如下圖中需要在一定范圍內施加10N的載荷,查看結構在該區域的變形情況,模擬車門內飾板的指壓工況。這種情況一般都是用rbe2或者rbe3單元抓取該區域的節點,并將載荷施加在主節點上。但正如在上文中提到的,被rbe2單元抓取的區域會有無限剛度,從而增加局部模型的剛度,因此在這種工況下,rbe3單元相對更適合這種工況(但其實對于這種細小局部的計算,可能兩種單元計算的結果差異也不會太大)。

?

編輯

    在重型機械行業,有時候需要模擬某些設備在自重或一定加速度過載下,其安裝座、支撐結構或整體骨架是否能滿足強度要求。對于這種工況,最準確的做法肯定是將設備的剛度引入進整體模型,也就是需要將設備的主結構模型建出來,并裝配至需要校核的支撐結構或整體骨架。但在實際操作時,一般很難實現,要么就是工作量會增加很多,要么就是設備都是由供應商提供,根本就拿不到其具體的內部結構甚至很多時候只知道其接口、重量和質心位置。這種情況下往往都會將設備簡化為質量點再施加重力場或直接在其質心位置施加相當于其自重的集中力,那么這時候一般也會用到rbe2或rbe3單元。例如下圖為某設備安裝支撐座的強度校核。對于這類工況,其實不管用rbe2單元還是rbe3單元,都無法準確的模擬真實的物理狀況,并且用這兩種單元計算出來的結果可能相差非常遠,那么在這種時候應該怎樣抉擇呢?根據筆者的經驗,這類設備在設計的時候自身也會考慮自身的剛強度,特別是這類動輒幾噸的設備,一般自身的剛度也非常強,如果用rbe3單元,相當于完全忽略了設備自身的剛度。而如果用rbe2單元,相當于把設備當成了一個純剛性體,因此筆者一般遇到這種狀況時,更多會選擇rbe2單元,當然這并不是絕對的,具體還是要結合實際情況進行分析。

?

編輯
  • 連接

    起到連接作用的只能是rbe2單元,rbe3單元由于其內部從節點之間是相互自由的,因此不能起到連接作用。

?

編輯

    例如封面的這張圖rbe2單元起到的就是連接的作用,它模擬的是一個卡子卡在卡槽里的連接關系。這種情況rbe2單元的主節點可以是一個任意的自由節點,從節點一部分來自卡子,另一部分來自卡槽。但需要注意,用這種模擬方式就代表了并不關注卡子和卡槽局部細節的應力或應變,只是讓其起到傳遞載荷的作用,因為使用rbe2單元進行連接后,卡子和卡槽局部的應力、應變等結果都是沒有意義的。用這種方式可以很方便的模擬螺栓、鉚釘以及點焊等連接關系,如下圖所示為簡單的螺栓模擬。

?

編輯
  • 約束

    可以將需要約束的節點通過rbe2或rbe3單元抓取到一起,然后在主節點上施加約束:

?

編輯

    如果通過rbe2單元抓取在一起,并且在主節點上約束6個自由度的話,可以與直接在抓取的那些節點上施加全約束等效。這兩種做法還是存在一個問題,就是被約束的區域會呈現無限剛度,這要具體使用的時候自行判斷是否合理。如果使用rbe3單元抓取區域節點,則完全不會對模型產生任何額外的剛度,但約束區域有時候本來就應該給模型提供額外的剛度。因此具體在使用的時候還是應該根據實際的物理情形進行判斷,因此答案不唯一。

    通過rbe2和rbe3單元抓取節點進行約束還有一個很重要的應用。如下圖,如果要實現模型整體有繞著某個軸轉動的自由度,那么就需要通過rbe2或者rbe3抓取的方式,這樣主節點有六個自由度,只需要釋放主節點對應的自由度即可。

?

編輯

    rbe2單元和rbe3單元除了以上提到的使用場景,還有許多其他的使用方法,這里就不一一列舉了。通過以上的描述不難發現,其實關于什么時候使用rbe2單元,什么時候使用rbe3單元,最重要的還是需要弄清楚其本質的差異,那就是rbe2單元是將抓取的區域形成剛體,區域內部有無限剛度,而rbe3單元則不會為結構提供任何額外剛度,只是單純通過加權的方式傳遞載荷。通俗來說就是一個會使局部剛度偏大,一個會使局部剛度偏小,那么有沒有什么處理方式能夠使局部剛度介于這兩種單元,或者提供一種可以調節剛度參數的方式,從而能夠有可能使計算結果更接近真實的物理狀況呢?答案是有的,我們接下來討論這個。

4.更精細的處理方式

    不管是我們的rbe2單元還是rbe3單元,看起來都是蜘蛛網狀的結構,都是一個主節點和許多的從節點通過線連接起來的表現形式。那么我們自然而然可以想到,既然都是主節點和從節點相連,那么為什么不能將每一個主節點和從節點之間通過梁單元進行連接呢?是的,這就是我們要做的,我們可以用梁單元形成一個蜘蛛網結構的連接方式,并且為梁單元設置單獨的材料和橫截面屬性,如果模型需要進行模態或振動之類需要和質量相關的分析,那么可以把梁單元的密度設置得非常非常小。然后通過調整梁單元的材料的彈性模量或者梁單元的橫截面大小,來調整由梁單元組成的蜘蛛網結構的內部剛度。至于剛度的參數怎么調整,這個就需要根據實際的問題和經驗或者根據實驗進行迭代,這種方法只是為蜘蛛網狀單元提供了一種剛度可調整的方式

?

編輯

由梁單元組成的蜘蛛網狀單元  

      在大多數前處理器中,用這種方式去連接梁單元需要手動去連接,筆者這里給出一個在Hypermesh里面可以實現梁單元組成蜘蛛網狀單元的二次開發程序:

proc create_prop_beamsec {} {
set beam_link_comp_name "beam_link_comp"
set beam_link_prop_name "beam_link_prop"
set beam_link_mat_name "beam_link_mat"
set comps_list [hm_entitylist comps name]
if {[expr [lsearch $comps_list $beam_link_comp_name] == -1]} {
    *createentity comps name=$beam_link_comp_name
} {
    *currentcollector components $beam_link_comp_name
}
set props_list [hm_entitylist props name]
if {[expr [lsearch $props_list $beam_link_prop_name] == -1]} {    
    *createentity props cardimage=PBEAM includeid=0 name=$beam_link_prop_name    
}
set beamsects_list [hm_entitylist beamsects name]

if {[expr [lsearch $beamsects_list $beam_link_prop_name] == -1]} {    
    *createentity beamsects includeid=0 name=$beam_link_prop_name    
}

set mat_list [hm_entitylist mats name]
if {[expr [lsearch $mat_list $beam_link_mat_name] == -1]} {    
    *createentity mats cardimage=MAT1  name=$beam_link_mat_name     
}
*setvalue mats name=$beam_link_mat_name STATUS=1 1=2.1e5 3=0.3 4=1e-20
set beam_link_mat_id [hm_getvalue mats name=$beam_link_mat_name dataname=id]

set section_id [hm_getvalue beamsects name=$beam_link_prop_name dataname=id]
*setvalue props name=$beam_link_prop_name 3186=$section_id materialid=$beam_link_mat_id
set beam_prop_id [hm_getvalue props name=$beam_link_prop_name dataname=id]
*setvalue comps name=$beam_link_comp_name propertyid=$beam_prop_id
}
catch {
set main_node [*createentitypanel node "select the main node"]
set main_node_id [hm_info lastselectedentity node]
*clearmark vector 1
set vector_direction_string [hm_getdirectionpanel "select the direction"]
eval "set vector_direction $vector_direction_string"
*createvector 1 [lindex $vector_direction 0] [lindex $vector_direction 1] [lindex $vector_direction 2]
*clearmark nodes 1
*createmarkpanel nodes 1 "select the slave nodes"
set slave_node_list [hm_getmark nodes 1]
*clearmark nodes 1
create_prop_beamsec  
foreach cur_node_id $slave_node_list {
    *barelement $main_node_id $cur_node_id 1 0 0 0 0
}
*clearmark vector 1
}

    復制以上程序至記事本,將后綴改為.tcl

    運行生成的.tcl文件:

?

編輯

    提示選擇主節點,選擇后并點擊proceed:

?

編輯

    選擇一個方向,隨意選擇一個,并點擊proceed:

?

編輯

    選擇從節點并點擊proceed:

淺談有限元分析中的RBE2與RBE3單元的圖38淺談有限元分析中的RBE2與RBE3單元的圖39?編輯

    然后便自動生成了蜘蛛網狀的結構,如果生成失敗,可以在選擇方向的那一步選擇其他方向,從節點較多的時候,生成得可能會比較慢。

?

編輯

?

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1
5