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




















