批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))

摘要

本文介紹如何使用Python腳本二次開發(fā)來批量提取ABAQUS輸出數(shù)據(jù)庫(ODB)文件中指定Step下的Set節(jié)點集變形量。通過詳細的步驟說明、代碼示例和圖片展示,您將學(xué)會如何使用該腳本,自動化輸出CSV文件包含(Node Label;Step Name、Increment、Step Time,U1,U2)。

如果還需要按Increment提取每個增量下的變形后的節(jié)點坐標(biāo)的話,在提取變形量的基礎(chǔ)上,與初始坐標(biāo)進行簡單的計算就可以求得坐標(biāo)。 (備注:該代碼只提取了x,y方向的變形量)

1. 問題描述

在工程仿真和分析領(lǐng)域,提取ABAQUS輸出數(shù)據(jù)庫(ODB)文件中的節(jié)點集變形量是一項常見任務(wù)。然而,手動提取這些數(shù)據(jù)是一項繁瑣且容易出錯的工作。因此,需要一種自動化的方法來批量提取指定步驟下按節(jié)點集組織的變形量數(shù)據(jù)。

2. 實例展示

假設(shè)我們有一個名為`example.odb`的ODB文件,其中包含名為`Step-x`的步驟和名為`Set-x`的節(jié)點集。運行以上代碼后,腳本會自動將該步驟下節(jié)點集的變形量提取出來,并保存為`NodalDisplacement.csv`文件。(圖片展示的是名為`Step-4`的步驟和名為`SET-NODE`的節(jié)點集)

批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖1

3. 使用方法

3.1運行前注意事項

1. 在腳本中,設(shè)置待處理的ODB文件放置目錄。

2. 在腳本中,設(shè)置要提取的步驟名稱`step_name`和節(jié)點集名稱`set_name`。

3. 在腳本中,設(shè)置一下保存的文件名稱。(提取的數(shù)據(jù)將以CSV格式保存在待處理的ODB文件放置目錄下)

3.2運行測試代碼

打開Abaqus,輸入測試代碼,按部就班完成測試,方便后期查詢問題。

1.識別路徑下odb文件是否存在。

from odbAccess import openOdb
odb_path = r"E:\Abaqus work directory\rubber1.odb" #輸入讀取路徑下的odb文件#
odb = openOdb(path=odb_path)
if odb is not None:
   print("odb found:", odb_path)
else:
   print("odb not found:", odb_path)
批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖2

2.識別odb文件中關(guān)注的Step-4分析步否存在。

from odbAccess import openOdb
odb_path = r"E:\Abaqus work directory\rubber1.odb"
odb = openOdb(path=odb_path)


if odb is not None:
    print("Found:", odb_path)
    step_name = 'Step-4'
    try:
        step = odb.steps[step_name]
        print("Step found:", step_name)
    except KeyError:
        print("Step not found:", step_name)
else:
    print("Not found:", odb_path)
批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖3

3.識別odb文件中關(guān)注的Set組分析步否存在。

from odbAccess import *
odb_path = r"E:\Abaqus work directory\rubber1.odb"
my_odb = openOdb(path=odb_path)


for node_set_name in my_odb.rootAssembly.nodeSets.keys():
    node_set = my_odb.rootAssembly.nodeSets[node_set_name]
    print("Node Set: {}".format(node_set_name))
批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖4

3.3使用腳本代碼

代碼中odb路徑、輸出文件名稱、set組名稱,根據(jù)實際情況自行修改。

代碼為附件:1 Python腳本-odb文件變形量提取

批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖5
批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖6

提取節(jié)點變形量到此全部完成,提取的數(shù)據(jù)將以CSV格式保存在待處理的ODB文件放置目錄下。如果需要提取變形后的節(jié)點坐標(biāo)的話,我們還要繼續(xù)進行。

3.4提取Set組中初始坐標(biāo)

方法一:提取初始節(jié)點坐標(biāo)可以通過Abaqus后處理查詢結(jié)果,在CSDN上可以查詢到,此處不再贅述。

方法二:通過Python腳本,按節(jié)點編號提取初始節(jié)點坐標(biāo)。

代碼為附件:2  Python腳本-初始節(jié)點提取

批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖7

4.數(shù)據(jù)處理

通過數(shù)據(jù)處理,將對應(yīng)值求和即可求得變形后的節(jié)點坐標(biāo)。以編號1號節(jié)點為例,節(jié)點初始坐標(biāo)(X=19.42577,Y=2.96978),變形量(U1=0.54588,U2=0.48286),可求得編號1號節(jié)點變形后的坐標(biāo)(X+U1,Y+U2),即為(19.97165,3.45264)。

驗證坐標(biāo)如下圖所示,使用Hyperview后處理,可以看出提取節(jié)點坐標(biāo)與Python腳本后處理的節(jié)點坐標(biāo)一致。綜上所述可以看出該腳本可滿足需求。

批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖8
批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖9
批量提取Abaqus的節(jié)點坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點坐標(biāo))的圖10

~歡迎大家討論交流、批評指正,感謝各位的觀看~

以下內(nèi)容為付費內(nèi)容,請購買后觀看

   20人購買

1.按指定輸出Set組節(jié)點(包含:Node Label;Step Name、Increment、Step Time,U1,U2),輸出CSV文件。 2.按節(jié)點編號輸出初始節(jié)點坐標(biāo)。

App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

5
11