設(shè)計(jì)仿真 | MSC Nastran計(jì)算過(guò)程數(shù)據(jù)提取和使用方法
MSC Nastran具備靜力學(xué)、動(dòng)力學(xué)、非線性、優(yōu)化、氣彈等功能全面的結(jié)構(gòu)分析功能,在航空航天、汽車(chē)、船舶等各個(gè)行業(yè)均有廣泛的應(yīng)用。MSC Nastran具備非常強(qiáng)的開(kāi)放性和可擴(kuò)展性,用戶(hù)不僅可以提取計(jì)算過(guò)程中的中間數(shù)據(jù),還可以根據(jù)自己的需要來(lái)修改軟件內(nèi)置的分析求解序列,甚至是創(chuàng)建滿足自身獨(dú)特需求的求解序列。
本篇內(nèi)容就通過(guò)案例的形式詳細(xì)介紹一下如何從MSC Nastran中提取計(jì)算過(guò)程的中間數(shù)據(jù),以及后續(xù)如何使用這些數(shù)據(jù)。
需要說(shuō)明的是:
? 本篇內(nèi)容所介紹的數(shù)據(jù)包括,但不限于,結(jié)構(gòu)模型的剛度陣和質(zhì)量陣,只要是MSC Nastran允許輸出的過(guò)程數(shù)據(jù)(如氣彈分析中使用的氣動(dòng)力影響系數(shù)矩陣、氣動(dòng)力矩陣等),均可以采用這種方法進(jìn)行輸出。
? 本篇內(nèi)容所采用方法中的部分步驟,并不一定是最優(yōu)的步驟,但應(yīng)該是最簡(jiǎn)單、最易于理解和使用的通用方法。
? 本文采用MSC Nastran 2019版本進(jìn)行演示,若采用其它版本進(jìn)行操作的話,其中的若干語(yǔ)句可能需要進(jìn)行調(diào)整,但是整體的方法步驟是一致的。
詳細(xì)的操作步驟可以分為:數(shù)據(jù)定位、數(shù)據(jù)輸出、數(shù)據(jù)使用三步。本文文章最后還對(duì)用戶(hù)可能關(guān)心或者需要注意的問(wèn)題進(jìn)行了描述。
數(shù)據(jù)定位
以下圖中的平板為例,此平板共有66個(gè)節(jié)點(diǎn),沒(méi)有任何載荷和約束條件,采用SOL 103進(jìn)行模態(tài)分析,默認(rèn)取10階模態(tài)。完成前處理設(shè)置后,輸出.bdf文件。
在計(jì)算模型的執(zhí)行控制段輸入:
DIAG 8,14
如下圖所示。8代表在.f04文件中輸出可以導(dǎo)出的矩陣的位置。14代表在.f06文件中輸出所使用的求解序列的代碼。DIAG的使用方法請(qǐng)參考MSC Nastran幫助文檔中的《Quick Reference Guide》[1]。
上述.bdf文件提交MSC Nastran 2019計(jì)算得到的.f04文件局部如下圖所示。此.f04文件在常規(guī).f04文件的基礎(chǔ)上增加了可以輸出的矩陣的信息,包括:矩陣維度、矩陣密度(稀疏程度)、矩陣數(shù)據(jù)產(chǎn)生的位置等。
以下圖為例,總剛度矩陣KJJZ是一個(gè)396×396的矩陣,其可以輸出的位置是在名稱(chēng)為SEMG的subDMAP的第396行,類(lèi)似的總質(zhì)量矩陣MJJX可以輸出的位置是名稱(chēng)為SEMG的subDMAP的第424行。
通過(guò)在.f06文件進(jìn)行查找,就可以看到SEMG的第396行和第424行的具體情況,如下面兩幅圖所示。
需要說(shuō)明的是,這個(gè)396行和424行對(duì)于不同的軟件版本,可能會(huì)發(fā)生更改。開(kāi)發(fā)人員會(huì)根據(jù)實(shí)際的開(kāi)發(fā)需求,可能會(huì)修改這些代碼中的部分,從而導(dǎo)致這個(gè)具體的數(shù)字產(chǎn)生變動(dòng)。如果版本發(fā)生了改變,用戶(hù)可以重新執(zhí)行“數(shù)據(jù)定位”這一步驟,來(lái)查找確切的位置。
當(dāng)然也有更簡(jiǎn)便的方法來(lái)提高不同版本之間的兼容性,可以避免換一個(gè)版本就重新進(jìn)行數(shù)據(jù)定位,下文有相關(guān)說(shuō)明。
數(shù)據(jù)輸出
上文找到了需要輸出的矩陣的具體位置之后,就可以修改模型的.bdf文件,通過(guò)添加少量DMAP語(yǔ)句的形式,就可以進(jìn)行數(shù)據(jù)的輸出,如下圖所示。
下面對(duì)上圖中的語(yǔ)句進(jìn)行解釋?zhuān)?/p>
執(zhí)行控制段:
第15行:對(duì)名稱(chēng)為SEMG的subDMAP進(jìn)行修改編譯。
第16行:修改第396行(396行內(nèi)容不變,把后文的OUTPUT4添加在396行以后)。
第17行:OUTPUT4模塊。對(duì)于此例而言,用戶(hù)只需要了解:
? KJJZ這里是需要輸出的矩陣的名稱(chēng)。這個(gè)名稱(chēng)可能與.f04中所顯示出來(lái)不一致,但是要求與.f06中對(duì)應(yīng)語(yǔ)句中顯示的是一致的。
? 105是unit number,需要與ASSIGN命令中的unit number對(duì)應(yīng)即可(不能與MSC Nastran內(nèi)嵌的unit number沖突)。
? 16是輸出的矩陣的精度,這里也可以修改為其它數(shù)字。
? 其余位置只需要保證格式(例如逗號(hào)的個(gè)數(shù)、斜杠的個(gè)數(shù)等)與上圖保持一致即可。
? 其它各參數(shù)詳細(xì)含義請(qǐng)參考MSC Nastran幫助文檔中的《DMAP Programmer’s Guide》[2])
第18行:與第16行類(lèi)似。
第19行:與第17行類(lèi)似。
文件管理段
第8行:ASSIGN命令,利用OUTPUT選項(xiàng)輸出.op4文件。單引號(hào)中的文件名稱(chēng)可以任意選取,unit number需要與第17行中的unit number保持一致。.op4文件可以選擇二進(jìn)制格式或者文本格式的。若采用FORMATTED參數(shù),則輸出文本格式的文件,若采用UNFORMATTED參數(shù),則輸出二進(jìn)制格式的文件。二進(jìn)制格式占用空間少,也有現(xiàn)有的工具支持直接讀取,因此推薦采用二進(jìn)制格式的輸出方式。ASSIGN的使用方法請(qǐng)參考MSC Nastran幫助文檔中的《Quick Reference Guide》[1].
第9行:與第8行類(lèi)似。
完成上述修改后,提交MSC Nastran計(jì)算,即可輸出矩陣數(shù)據(jù)。工作目錄內(nèi)除了常規(guī)的.f06、f04、.log文件外,會(huì)出現(xiàn)額外的文件,其文件名與ASSIGN命令中的設(shè)置一致。
查看計(jì)算完成的.f06文件中的SEMG第396行會(huì)發(fā)現(xiàn),在.bdf文件中寫(xiě)入的OUTPUT4命令被插入到397行。下圖中左側(cè)的數(shù)字是原有SEMG的行數(shù),右側(cè)數(shù)字是使用的ALTER之后的行數(shù)。
數(shù)據(jù)使用
下面兩圖為文本格式的.op4文件中得到的總剛度矩陣數(shù)據(jù)。由于有限元模型的矩陣常常是稀疏矩陣,因此此文件給出的數(shù)據(jù)并不是把396×396所有的元素都列出來(lái),而是只給出了每行中從第一個(gè)非零元素到最后一個(gè)非零元素之間的數(shù)字。
該文件第一行給出了該矩陣的基本信息,包括行數(shù)、列數(shù)、矩陣名稱(chēng),數(shù)字精度等。
從第二行開(kāi)始為實(shí)際的矩陣元素。此格式按照矩陣的行來(lái)給出,例如這里的“1 1 74”的意思是矩陣的第1行中非零元素從第一列開(kāi)始,此行從第一個(gè)非零元素到最后一個(gè)非零元素之間一共有74個(gè)元素。然后下面給出了這74個(gè)元素的數(shù)值。
然后看下面的第二幅圖,是數(shù)據(jù)文件的結(jié)尾位置。“396 325 72”的意思是矩陣的第396行中的非零元素從第325列開(kāi)始,此行從第一個(gè)非零元素到最后一個(gè)非零元素之間一共有72個(gè)元素,并在下面給出了這72個(gè)元素的數(shù)值。
此文件的最后兩行是一個(gè)標(biāo)識(shí)符,主要用于方便變成讀取矩陣的目的,沒(méi)有實(shí)際的意義。
雖然文本格式的.op4文件相對(duì)規(guī)整,但是如果編程讀取的話,仍然略顯繁瑣,因此推薦采用二進(jìn)制格式的.op4文件。
讀取二進(jìn)制的.op4文件,可以采用編程語(yǔ)言進(jìn)行讀取使用。以Python為例,有很多庫(kù)可以使用,如pyNastran[5]、pyYeti[6]。下圖給出了采用pyYeti庫(kù)的簡(jiǎn)單的代碼案例,這樣就可以直接讀取矩陣數(shù)據(jù)并供后續(xù)使用。
其他說(shuō)明
版本兼容性
前文提到此方法如果需要換版本的話,需要重新執(zhí)行數(shù)據(jù)定位的過(guò)程。其實(shí)MSC Nastran也提供了很多方法來(lái)提高方法的版本兼容性,例如使用ALTER的關(guān)鍵字搜索功能或者M(jìn)ALTER功能,詳細(xì)的方法可以參考MSC Nastran幫助文檔中的《DMAP Programmer’s Guide》[2]以及相關(guān)的視頻講解[3]。
矩陣名稱(chēng)
MSC Nastran矩陣的名稱(chēng)有自身的命名規(guī)則,一般都是KTIJ的形式,其中:
? K是矩陣的類(lèi)型,例如K為剛度、M為質(zhì)量、P為載荷、U為位移、Q為反力、B為阻尼、G為轉(zhuǎn)換矩陣;
? T為矩陣類(lèi)型,但是不常使用;
? I為行的自由度集;
? J為列的自由度集;
上述只是一般的規(guī)則,更詳細(xì)的介紹可以查閱MSC Nastran幫助文檔中的《DMAP Programmer’s Guide》[2]中《Data Block Glossary》以及其它相關(guān)章節(jié)。
MSC Nastran矩陣數(shù)據(jù)與全局坐標(biāo)系[4]
MSC Nastran中GRID卡片第7域CD可以指定此節(jié)點(diǎn)所采用的全局坐標(biāo)系(Global Coordinate System)。這里的默認(rèn)數(shù)值為空,代表使用的是基礎(chǔ)坐標(biāo)系(Basic Coordinate System)。用戶(hù)可以將某個(gè)自定義坐標(biāo)系的編號(hào)填寫(xiě)在這里,這樣MSC Nastran對(duì)于此節(jié)點(diǎn)相關(guān)自由度的表達(dá)和分析均會(huì)參考這個(gè)用戶(hù)指定的坐標(biāo)系。
正是因?yàn)槿肿鴺?biāo)系的概念,MSC Nastran所采用的總剛度矩陣(以及其它類(lèi)似的矩陣數(shù)據(jù))可能與常規(guī)意義上的總剛度矩陣有所區(qū)別。這是因?yàn)镸SC Nastran在將單元?jiǎng)偠染仃嚱M裝成總剛度矩陣時(shí),并不需要將所有的單元?jiǎng)偠染仃囖D(zhuǎn)換到某個(gè)單一的坐標(biāo)系上再進(jìn)行組裝,而是會(huì)根據(jù)用戶(hù)在GRID卡片第7域CD所設(shè)置的坐標(biāo)系進(jìn)行計(jì)算。這就導(dǎo)致了如果用戶(hù)修改了CD域,將其改成不同于基礎(chǔ)坐標(biāo)系的其它坐標(biāo)系,那么MSC Nastran輸出的總剛度矩陣在相應(yīng)自由度上的數(shù)值是參考這個(gè)節(jié)點(diǎn)CD域所指定的坐標(biāo)系而計(jì)算出來(lái)的。
當(dāng)然,如果所有的GRID卡片第7域都采用了默認(rèn)數(shù)值,那么這種情況下得到的總剛度矩陣與常規(guī)意義上的總剛度矩陣是一致的。
其它案例
下圖是一個(gè)用來(lái)顫振分析模型中氣動(dòng)力相關(guān)矩陣數(shù)據(jù)的簡(jiǎn)單示例,供讀者參考。
參考文獻(xiàn):
1.《MSC Nastran Quick Reference Guide》
2.《MSC Nastran DMAP Programmer’s Guide》
3.https://www.bilibili.com/video/BV1ed4y117B9/?spm_id_from=333.999.0.0
4.《MSC Nastran Linear Static Analysis User’s Guide》Chapter 3
5.https://pypi.org/project/pyNastran/
6.https://pypi.org/project/pyyeti/
7.本文采用案例的鏈接:
https://pan.baidu.com/s/1iSs29FfRzJvnwRMMD7Zpeg?pwd=rgjx
提取碼:rgjx
備注:
如對(duì)上述功能使用有疑問(wèn)或者希望更深入了解,請(qǐng)通過(guò)如下方式聯(lián)系我們:
Tel:010-82607000
Email:mscprc.support@mscsoftware.com
推薦閱讀
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















