You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Abaqus无需选定对象输出压缩仿真各时间步最大应力值的方法咨询

Abaqus全模型各时间步最大Mises应力导出方案

你遇到的"At least one entity should be selected"报错,本质是自定义的MISESMAX场输出在导出时没有关联可选中的几何/网格实体,无需自定义该类最大值场输出,直接从基础应力场提取全模型最大值即可,无需指定固定应力出现区域。

方案1:CAE界面操作(适合时间步较少场景)

  • 作业提交前无需单独设置MISESMAX自定义场输出,只需输出常规S(应力)场,输出对象选择整个模型/对应部件,输出位置包含积分点即可
  • 计算完成打开ODB文件,依次点击菜单栏 工具 -> 查询 -> 探测值
  • 弹出的探针设置框中,类型选择场输出,变量下拉选择 S -> Mises,域选择整个模型
  • 勾选高亮显示最大值,切换到步骤/帧选项卡,选中所有需要导出的时间步对应的帧
  • 点击写入文件即可得到所有时间步对应全模型最大Mises应力的XY数据,可直接用Excel、记事本打开读取。

方案2:Python脚本批量导出(适合时间步较多场景)

  • 复制下方代码到本地txt文件,替换代码中ODB路径、分析步名称、输出路径三个参数后,将文件后缀改为.py
  • 打开Abaqus/CAE,依次点击 文件 -> 运行脚本,选择保存的py文件即可自动导出结果
from abaqus import *
from abaqusConstants import *
import odbAccess

# 替换为你的ODB文件绝对路径
odb_path = r'C:\simulation\compression_test.odb'
# 替换为你的分析步名称
step_name = 'Compression_step'
# 替换为输出结果的TXT文件路径
output_path = r'C:\simulation\max_stress_result.txt'

# 读取ODB
odb = odbAccess.openOdb(odb_path, readOnly=True)
target_step = odb.steps[step_name]
all_frames = target_step.frames

result_data = []
for frame in all_frames:
    current_time = frame.frameValue
    stress_field = frame.fieldOutputs['S']
    mises_field = stress_field.getScalarField(invariant=MISES)
    # 提取全模型所有积分点Mises应力的最大值
    max_mises = max([val.data for val in mises_field.values])
    result_data.append((current_time, max_mises))

# 写入结果文件
with open(output_path, 'w', encoding='utf-8') as f:
    f.write('时间\t最大Mises应力\n')
    for time_val, stress_val in result_data:
        f.write(f'{time_val}\t{stress_val:.6f}\n')

odb.close()

内容的提问来源于stack exchange,提问作者rustin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:27:00