从.ODB文件

问题描述 投票:0回答:1
import csv from odbAccess import openOdb from abaqusConstants import * #Extract Mises def getMISES(output_path_mises, odb_path): odb = openOdb(odb_path) mises_data = odb.steps['Belastung'].frames[-1].fieldOutputs['S'] #max mises is always in this instance instance = odb.rootAssembly.instances['PRUEFKOERPER_4-1'] node_coords = {node.label: node.coordinates for node in instance.nodes} with open(output_path_mises, 'w') as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerow(['NodeLabel', 'x', 'y', 'z', 'MISES']) for block in mises_data.bulkDataBlocks: for node_label, mises_value in zip(block.nodeLabels, block.data): if mises_value > 300.0: #Filter coords = node_coords.get(node_label, [None, None, None]) csv_writer.writerow([node_label, coords[0], coords[1], coords[2], '{:.4f}'.format(float(mises_value))]) odb.close()

您的方法很少。
python abaqus abaqus-odb
1个回答
0
投票

mises_data = odb.steps['Belastung'].frames[-1].fieldOutputs['S']
  1. 这给出了应力张量,而不是压力的部分。为了从张张量获得Mises的压力,您应该使用“ GetCalarfield”。
  2. stress_data = odb.steps['Belastung'].frames[-1].fieldOutputs['S'] mises_data = stress_data.getScalarField(invariant=MISES)
access nodal信息以应对压力:
由于压力是在集成点写的,因此使用

mises_data.bulkDataBlocks[0].nodeLabels

为您提供一个空数组。因此,您正在遇到此错误。
    Solution:
  1. 当您尝试提取节点坐标和相应的MISES数据时,您可以使用“ Report” - >“ Field Output”将数据导出CSV文件中。
    
    首先,仅对视口感兴趣。就您而言,似乎您对所有组装节点都感兴趣,因此,您无需在这里做。
    
  2. go到“报告” - >“字段输出”。在“变量”选项卡中,将位置选择为“唯一节点”,从压力中选择MISES。在“设置”选项卡中,切换到“逗号分隔值(CSV)”选项。点击申请。 CSV文件以坐标和MISES数据的形式写在默认目录中。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.