王 劍,劉泓廷,劉昱甫,薛寧鑫
(1.大連交通大學 機車車輛工程學院,遼寧 大連 116028;2.中車長春軌道客車股份有限公司 國家軌道客車工程研發(fā)中心,吉林 長春 130062)
結(jié)構(gòu)有限元分析的第一步就是對結(jié)構(gòu)進行前處理,包括模型的簡化、幾何處理、網(wǎng)格劃分及屬性賦值等。在HyperMesh中屬性賦值的基本方法是依次建立所需的單元類型、實常數(shù)并確定材料參數(shù),再將處理好的模型與之一一對應地匹配到一起,完成模型屬性的賦值。對仿真分析工程師而言,這個過程是重復、枯燥但又不能忽視其技術(shù)含量的一項工作,需要依據(jù)模型部件仔細核實各個屬性,分別賦值。對于一個復雜模型來說,工程師的精力會在參數(shù)核實與工作界面不斷切換中不斷消耗,繁瑣冗長的操作不僅消耗掉仿真分析工程師們大量的時間精力,更會導致其工作效率下滑、人為失誤概率增加,影響后續(xù)分析工作的效率和可信度。因此,簡化模型屬性賦予操作流程顯得很有必要。
HyperMesh具有強大的前處理功能,并且提供了良好的二次開發(fā)環(huán)境,這為一些具有重復性操作的問題提供了良好的解決方案[1]。丁培林等[2]提出了基于HyperWorks自動加載及后處理的方法;劉偉[3]提出了基于HyperMesh實現(xiàn)轉(zhuǎn)向機自動化創(chuàng)建連接的方法;米小珍等[4]基于HyperMesh開發(fā)了材料定義與重用工具。
本文基于HyperMesh軟件,利用Tcl/Tk腳本語言結(jié)合模型屬性賦值的實際操作,開發(fā)了集成化、簡便化的屬性賦予工具,并將其嵌入到HyperMesh操作界面中,以滿足快速完成模型屬性賦予的要求。
以某不銹鋼點焊車車體分析為例介紹有限元模型屬性賦值的基本流程。該不銹鋼點焊車車體模型以殼單元為主,以用于頂升墊、橫向拉桿底座及車體尾梁內(nèi)的擋塊實體單元為輔;梁單元用于表示電阻焊和螺栓,質(zhì)量點單元用于表示設(shè)備和乘客質(zhì)量。其中,殼單元平均尺寸約為25 mm,最小殼單元長度約為2 mm,最大殼單元長度為60 mm;最小實體單元長度為5 mm,最大實體單元長度為39 mm。Shell單元共計1 907 903個,Solid單元共計5 152個,Beam單元共計45 914個,Mass單元共計686 710個。涉及到的材料有不同型號的耐候鋼、不銹鋼、鋁合金等十余種。
在整車有限元分析流程中,劃分網(wǎng)格之后首先要將整車各部位零件按照位置、厚度、材料等進行分類,由于零件眾多,模型部件及組件有1 000余個。常規(guī)的模型屬性賦予操作首先要根據(jù)實際模型中出現(xiàn)的單元類型設(shè)置ET Type,如Shell181、Solid185等,部分單元類型需要設(shè)置實常數(shù)Real Sets,人工編輯名稱及厚度等屬性[5];其次要將所有用到的模型材料人工輸入到Material中;最后在Component Manager中將處理模型時分好的comps與對應的ET Type、Real Sets、Material等結(jié)合起來。雖然之前將零件按照參數(shù)分好組別,可以一次性對同一種零件進行屬性賦予,但是成百上千組數(shù)據(jù)的賦予仍然繁瑣且耗費時間。以不銹鋼點焊車為例,其有限元模型如圖1所示,不銹鋼點焊車的模型分為478組,從無到有地完成屬性輸入到關(guān)聯(lián)每組ET Type、Real Sets、Material,仍需要耗費工程師數(shù)小時甚至一整天的時間,非常繁瑣且工作量大。
圖1 不銹鋼點焊車有限元模型
針對HyperMesh軟件常規(guī)模型屬性賦予方法的不足之處,結(jié)合仿真分析本身操作規(guī)范化需求,使用Tcl/Tk腳本進行二次開發(fā),以獲得更高效、更便捷的模型屬性賦予工具[6]。
以更高效、更便捷的模型屬性賦予工具為目標,設(shè)計、開發(fā)過程中應注意滿足以下幾點:
(1) 新工具的操作界面應盡可能地簡潔,便于操作。
(2) 按鍵設(shè)置邏輯應盡可能和基本屬性賦予流程貼合,降低學習成本及應用難度。
(3) 新工具應擺脫彈窗式插入,而是嵌入到HyperMesh軟件中去,方便隨時調(diào)用。
傳統(tǒng)操作模式中,屬性賦予需要反復切換界面,重復屬性關(guān)聯(lián)、二次確認等過程。在新界面中,從上到下依次設(shè)計Material、ET Type、Property選項,其中Material下轄四個參數(shù),分別是材料名稱material name、彈性模量EX、泊松比NEXY、材料密度DENS等常用參數(shù)。ET Type包含的參數(shù)有Shell、Solid、Beam、Mass等單元,根據(jù)實際模型選出需要的參數(shù)類型,點擊一次按鈕即可創(chuàng)建。Property設(shè)置為點擊即可自動提取comps名稱中的關(guān)鍵字,自動生成Real Sets等參數(shù),并對應地關(guān)聯(lián)到Component Manager中完成模型的屬性賦予操作。Property操作界面如圖2、圖3所示。
圖2 Property界面表層
圖3 Property界面里層
依據(jù)上述思路,基于ANSYS模板來進行二次開發(fā)。根據(jù)Property的設(shè)計,用戶需要提前將處理模型、網(wǎng)格劃分時的分組comps按照特定的命名規(guī)則進行規(guī)范化重命名,將comps名稱使用“_”符號進行分割。例如:SW_shell_8mm_AL,其中第一位SW代指單元在模型中所處的位置,為sidewall的縮寫(具體的位置名稱可按工程師自己的習慣進行命名,方便閱讀即可),第二位shell代指單元類型,第三位代指單元相關(guān)參數(shù),如8 mm即為板件的厚度,第四位代指材料類型。
規(guī)范命名不但有助于二次開發(fā)的數(shù)據(jù)提取,也大幅提高了模型前處理的可讀性,方便進行工作交接以及交流研討。腳本會自動拆分后面三個位置并以此為基準對應地關(guān)聯(lián)到Component Manager中[7],完成屬性賦予的最終步驟。部分屬性賦予程序如下:
set compslistname [hm_getmark comps 1]
foreach comp $compslistname {
set comps_listname [hm_getvalue comps id=$comp dataname=name]
set lst [split $comps_listname "_-"]
set prop_name [lindex $lst 1]
set prop_thick [lindex $lst 2]
set prop_mat [lindex $lst 3]
}
if {$prop_name == "shell"} {
*createentity props cardimage=SHELL181p
name = $prop_thick
*setvalue props name=$prop_thick STATUS=2
136 = {$prop_thick 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
set prop_id [hm_getvalue props name=$prop_thick dataname=id]
*setvalue comps id=$comp cardimage="HM_COMP"
*setvalue comps id=$comp propertyid={props $prop_id}
set sensors_id [hm_getvalue sensors name=shell dataname=id]
*setvalue comps id=$comp STATUS=2 3081={sensors $sensors_id}
set mat_id [hm_getvalue material name=$prop_mat dataname=id]
*setvalue comps id=$comp materialid={mats $mat_id}
}
新開發(fā)模型屬性賦予工具的使用方法為:在完成模型幾何清理、中面抽取、劃分網(wǎng)格、按要求分組命名等常規(guī)操作之后,將材料參數(shù)輸入到Material一欄中,點擊Create即可完成材料創(chuàng)建。ET Type一欄里選擇單元類型,點擊一次即可完成單元類型的創(chuàng)建。最后的屬性賦予以及關(guān)聯(lián)到Component Manager過程需要在Property一欄中點擊Auto Attribute,右側(cè)會彈出窗口供工程師選擇需要賦予屬性的comps,勾選出需要賦予屬性的comps后點擊select以及proceed即可快速完成模型屬性賦予工作。新開發(fā)屬性賦予工具界面如圖4所示。
圖4 新開發(fā)屬性賦予界面
開發(fā)模式分為同步模式與異步模式。同步模式是指開發(fā)插件隨HyperMesh軟件一同啟動,不單獨運行。異步模式是指二次開發(fā)的插件獨立運行,只是在運行過程中調(diào)用HyperMesh軟件,建立數(shù)據(jù)通信。以往的二次開發(fā)多將界面設(shè)計為彈窗式,每次使用時需要工程師在命令行輸入source手動調(diào)用腳本,操作較為繁瑣。此次二次開發(fā)利用Tcl/Tk腳本語言將屬性賦予工具固化到HyperMesh主界面中,無需再次手動調(diào)用腳本,實現(xiàn)同步模式二次開發(fā)。將原先繁瑣復雜的模型屬性賦予操作簡化、集成為在一個頁面內(nèi)即可完成的操作,工程師按照從上到下的順序依次填入數(shù)據(jù)、點擊按鈕即可快速完成模型屬性的賦予,且每次啟動HyperMesh都會自動在主界面Tab頁面下顯示新開發(fā)的模型屬性賦予工具界面,操作簡潔明了。
以某項目車頂罩板模型為測試對象,測試新開發(fā)屬性賦予工具的使用效果。該車頂罩板模型零部件共劃分為10組,其中涉及單元類型2類、材料2種,單元總數(shù)為243 587。
原始HyperMesh軟件界面及某項目車頂罩板模型如圖5所示。模型中可見每一個component中的value值均為空,需要工程師填寫Type、Property、Material三項。使用常規(guī)模型屬性賦予方法,單次屬性賦予至少需要34次點擊操作、7次輸入操作才能完成從材料建立、單元類型創(chuàng)建到屬性關(guān)聯(lián)等操作。未進行屬性賦予的Component Manager界面如圖6所示。
圖5 原始HyperMesh軟件界面
圖6 未賦予屬性的Component Manager界面
使用二次開發(fā)改進后的模型屬性賦予工具,單次屬性賦予僅需要8次點擊、4次輸入操作即可完成。工作界面位于Tab頁面下,如圖7所示,自上而下依次填入Material參數(shù)、選擇單元類型,最后點擊Auto attribute即可完成屬性賦予工作。完成屬性賦予后的Component Manager界面如圖8所示。統(tǒng)計常規(guī)屬性賦予操作次數(shù)和使用二次開發(fā)后的屬性賦予工具所需的操作次數(shù),統(tǒng)計對比結(jié)果見表1。
圖7 二次開發(fā)后HyperMesh軟件界面
圖8 完成屬性賦予的Component Manager界面
以前文提到的不銹鋼點焊車為例,該大型模型使用二次開發(fā)工具賦予屬性僅需十余分鐘即可完成工作。通過表1中數(shù)據(jù)對比亦可見使用Tcl/Tk腳本進行二次開發(fā)改進后的模型屬性賦予工具可使仿真分析工程師無需反復進行頁面切換、點擊、輸入、關(guān)聯(lián)等操作,不僅大大降低了賦屬性時的工作強度,而且顯著提高了模型賦屬性的準確度與工作效率。
表1 操作次數(shù)對比
當工程師使用HyperMesh軟件進行產(chǎn)品的仿真分析前處理時,經(jīng)常會遇到重復性、標準化的任務,若能對這些重復出現(xiàn)且具有標準操作的任務進行簡化,則可大大提高前處理的效率,而前處理的效率直接影響產(chǎn)品設(shè)計周期。本文針對前處理中可簡化的操作對HyperMesh進行了具備行業(yè)風格的二次開發(fā),優(yōu)化了操作流程,既減小了人工操作出錯的概率又提高了前處理的效率,為相關(guān)工作人員提供了便利工具。