Python提取ABAQUS结果数据

2023-11-15

背景介绍

  调研发现,传统结构设计过程中需要依赖工程师的理论知识和工程经验,针对具体问题提出初步设计方案,后续通过多次的迭代优化,直到满足要求为止。这种传统设计方法不仅工作量大,效率低,企业还需要投入巨量的成本。因此,我们可以通过优化算法 + 有限元模拟的方式,在加工制作阶段采用优化后的模型参数,该方法能大大减少迭代的次数,缩短产品从立项到上市的周期。

  我们可以将python程序作为ABAQUS和优化算法之间的桥梁,通过编写脚本提取有限元软件的计算结果,作为参数传递给优化算法。其中,在采用Python对ABAQUS结果提取之前,首先我们要了解ABAQUS odb文件结构,具体如下图所示:

ABAQUS odb文件结构

实例展示(采用ABAQUS 2017调试)

1、查询ABAQUS数据结构

# -*-coding:UTF-8 -*-
#***************************************
#**         程序提取场变量输出        **
#** 主要为梁单元应力、内力和节点位移  **
#***************************************
#导入模块
from odbAccess import*
from abaqusConstants import*
import sys
import os
odb =openOdb(path='C:\\Temp\\shangtest.odb')
cpFile=open('artlcF1.txt','w')
#----------------------------------------------------------------------------------------
#创建变量topCenter,得到单元集CENT
topCenter=odb.rootAssembly
print topCenter

2、采用Python提取位移

from odbAccess import*
from abaqusConstants import*
import os
myodb=openOdb(path='C:\\Temp\\jieguosuchu.odb')
RS=myodb.steps['Step-3'].frames[1].fieldOutputs['U'].values
cpFile=open('distance.txt','w')
for i inRS :
     cpFile.write('%d %7.4f %7.4f\n' % (i.nodeLabel,i.data[0],i.data[1]))
else:
cpFile.close()

3、采用Python提取mises应力

import os
myodb=openOdb(path='Job-1.odb')
cpFile=open('artlcF1.txt','w')
RF=myodb.steps['Step-1'].frames[1].fieldOutputs['S'].values
for i inrange(len(RF)) :
     cpFile.write('%s\n' % (RF[i].mises))
else:
cpFile.close()

4、提取节点集合上的位移

from odbAccess import*
from abaqusConstants import*
import sys
import os
odb =openOdb(path='C:\\Temp\\shangtest.odb')
#创建变量lastFrame,得到载荷步Step-1的最后一帧
lastFrame= odb.steps['Step-3'].frames[-1]
# Createa variable that refers to the displacement 'U'
# in thelast frame of the first step.
#创建变量displacement ,得到最后一帧的位移场数据
displacement= lastFrame.fieldOutputs['U']
#创建变量center,得到节点集PUNCH
center =odb.rootAssembly.instances['SHANGBIAN-1'].\
    nodeSets['SHANGTEST']
#创建变量centerDisplacement,得到region center的位移场数据
centerDisplacement= displacement.getSubset(region=center)
#输出各种信息,该节点集只有一个节点
for v incenterDisplacement.values:
    print 'Position = ', v.position,'Type =',v.type
    print 'Node label = ', v.nodeLabel
    print 'X displacement = ', v.data[0]
    print 'Y displacement = ', v.data[1]
    print 'Displacement magnitude =',v.magnitude
odb.close()
#----------------------------------------------------------------------------------------

5、提取节点集合上的力

# -*-coding:UTF-8 -*-
#***************************************
#**         程序提取场变量输出        **
#** 主要为梁单元应力、内力和节点位移  **
#***************************************
#导入模块
from odbAccess import*
from abaqusConstants import*
import sys
import os
odb =openOdb(path='C:\\Temp\\shangtest.odb')
cpFile=open('artlcF1.txt','w')
#----------------------------------------------------------------------------------------
#创建变量topCenter,得到单元集CENT
topCenter=odb.rootAssembly.instances['DIBIAN-1'].elementSets['XIAJIECHUTEST']
#创建变量stressField,得到位移场数据
stressField= odb.steps['Step-3']
stressField= odb.steps['Step-3'].frames[3].fieldOutputs['S']
#创建变量field,得到该单元集的积分点的数据
field =stressField.getSubset(region=topCenter,
    position=INTEGRATION_POINT, elementType ='CPS4R')
#创建变量fieldValues,得到field的数值数据
fieldValues= field.values
#循环输出单元号,单元上的积分点号以及积分点的应力分量
for v infieldValues:
#    cpFile.write(v.elementLabel,)   
#    cpFile.write ('Integration Point = ',v.integrationPoint)
# Foreach tensor component.
    for component in v.data:
# Printusing a format. The comma at the end of the
# printstatement suppresses the carriage return.
        cpFile.write ('%-15.5f' % component)
# Aftereach tuple has printed, print a carriage return.
    cpFile.write('\n')
cpFile.close()

注意事项:

  • 在ABAQUS CAE中运行Python文件;

  • A=odb.steps[‘Step-1’].frames和B=odb.steps[‘Step-1’].frames[-1]的理解:A是Python的一个列表,B是表示列表A中最后一个元素

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python提取ABAQUS结果数据 的相关文章

  • celery任务eta已关闭,使用rabbitmq

    我使用教程中的默认设置和在 ubuntu 上运行的rabbitmq 使 Celery 任务正常进行 当我毫不延迟地安排任务时 一切都很好 但是当我给他们一个预计时间时 他们会被安排在未来 就好像我的时钟在某个地方关闭了一样 下面是一些请求任
  • 函数名称未定义

    我有一段代码 看起来像这样 if name main main def main print hello 但是 当我尝试运行此代码时 出现错误 NameError 名称 main 未定义 我是否没有在函数 def main 的第一行定义名称
  • 有什么好的适用于 Google App Engine 应用程序的 AJAX 框架吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的 Google App Engine 应用程序中实现 AJAX 因此我正在寻找一个好的
  • 使用ideone时如何传入命令行参数?

    我正在使用 ideone 在线解释器 http ideone com http ideone com 来测试一些 C 和 Python 程序 如何指定命令行参数而不是使用 STDIN 输入 看起来你不能 但是快速破解应该做的伎俩 stati
  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 我可以同时打开两个 Tkinter Windows 吗?

    可以同时打开2个窗口吗 import tkinter as Tk import random import math root Tk Tk canvas Tk Canvas root background image Tk PhotoIma
  • Discord.py 斜线命令在 cogs 中不起作用

    我正在构建一个不和谐的机器人 并且想要在 cogs 内使用斜杠命令 但这些命令不显示或工作 这是代码 cog guild ids 858573429787066368 861507832934563851 class Slash comma
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • Python Apache Beam 端输入断言错误

    我对 Apache Beam Cloud Dataflow 还很陌生 所以如果我的理解不正确 我深表歉意 我正在尝试通过管道读取大约 30 000 行长的数据文件 我的简单管道首先从 GCS 打开 csv 从数据中提取标题 通过 ParDo
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • 使用 python 从 CSV 创建字典

    我有一个 CSV 格式的文件 其中 A B 和 C 是标题 我如何以Python方式将此CSV转换为以下形式的字典 A 1 B 4 C 7 A 2 B 5 C 8 A 3 B 6 C 9 到目前为止我正在尝试以下代码 import csv
  • Python FTP下载550错误

    我编写了一个 ftp 爬虫来下载特定文件 它会一直工作 直到找到要下载的特定文件 然后抛出此错误 ftplib error perm 550 该文件存在于我的下载文件夹中 但文件大小为 0 kb 我需要转换某些内容才能下载吗 我可以访问 f
  • 当元组列表中相同项目的值是字符串时,对它们的值求和

    如果我有这样的元组列表 my list books 5 books 10 ink 20 paper 15 paper 20 paper 15 我怎样才能把列表变成这样 books 15 ink 20 paper 50 即添加同一项目的费用
  • ImproperlyConfigured at / 不允许空静态前缀 - Django

    我正在使用 Django 上传 显示图像 该网站部署在 Heroku 上 下列的this https coderwall com p bz0sng教程我能够成功上传图像 但是 图像并未显示在模板中 然后我了解到我的 urls py 末尾应该
  • 机器学习的周期性数据(例如度角 -> 179 与 -179 相差 2)

    我使用 Python 进行核密度估计 并使用高斯混合模型对多维数据样本的可能性进行排名 每一条数据都是一个角度 我不确定如何处理机器学习的角度数据的周期性 首先 我通过添加 360 来删除所有负角 因此所有负角都变成了正角 179 变成了
  • 使用具有可变数量索引的 numpy mggrid

    如何将 numpy mgrid 与可变数量的索引一起使用 我在 github 上找不到任何人将其与硬编码值以外的任何内容一起使用的示例 import numpy as np np mgrid 1 10 1 10 this works fin
  • 在字符串内打印单引号

    我想输出 XYZ s ABC 我在Python IDLE中尝试了以下3条语句 第一条和第二条语句输出 a before 带打印功能的第三条语句不输出 before 作为 Python 新手 我想了解为什么 之前输出 在第 1 条和第 2 条
  • 为数据集生成随机 JSON 结构排列

    我想生成 JSON 结构的许多不同排列作为同一数据集的表示 最好不需要对实现进行硬编码 例如 给定以下 JSON name smith occupation agent enemy humanity nemesis neo 应该产生许多不同
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 将二进制数转换为包含每个二进制数的数组

    我试图将二进制值转换为每个 1 0 的列表 但我得到默认的二进制值而不是列表 我有一个字符串 我将每个字符转换为二进制 它给了我一个列表 其中每个字符都有一个字符串 现在我试图将每个字符串拆分为值为 0 1 的整数 但我什么也得不到 if

随机推荐

  • UE4 C++ 类的4种引用类型,和异步加载资产

    UE4 C 类的4种引用类型 和异步加载资产 4种引用类型 对象引用 引用 World 的实例对象 就是直接定义 UPROPERTY EditAnywhere BlueprintReadOnly Category My 对象引用 UWorl
  • Hive分组排序

    系统环境 Linux Ubuntu 16 04 jdk 7u75 linux x64 hive 1 1 0 cdh5 4 5 hadoop 2 6 0 cdh5 4 5 mysql 5 7 24 相关知识 Hive中支持多种分组操作 Ord
  • 【D-S证据理论】学习笔记

    Dempster Shafer证据理论学习笔记 引言 证据理论最早由Dempster提出主要用来解决不确定性问题的主要工具 后来被Shafer改进 现在被称为D S证据理论 D S证据理论的突出优势就是能够刻画信息的不确定性和未知性 该理论
  • 数字化转型战略下的数据安全问题及治理对策

    随着数字化转型在各行业的持续推进 数据作为生产的重要要素 其安全性日益受到关注 如何在数据安全各项法律法规的强监管下 确保企业业务合法 数据使用合规 业务有序发展成为当前全行业关注的焦点 本文将分析当前数字化转型背景下的数据安全现状 梳理存
  • 华三ftp服务器信息发布命令,h3cne命令行.doc

    h3cne命令行 PAGE13 NUMPAGES13 目 录 TOC o 1 3 h z u HYPERLINK l Toc283211304 1 常规系统维护 PAGEREF Toc283211304 h 2 HYPERLINK l To
  • 已知三角形的两点坐标,和三个边长,求第三点的坐标

    前几天做一个功能 实现N多圆球的碰撞时 写的该算法 代码比较容易 使用了三角形的余弦定理 算法是二维的 改成三维也容易 其实三维的我也实现过 用于骨骼动画的IK处理上 1 已知三角形的两点坐标 和三个边长 求第三点的坐标 2 bool Ca
  • 多数据源连接池

    做元数据管理 需要查询多个数据源的元数据 不用orm框架 直接用java实现 如下 主要有几个重要的类 MultiPool 连接池 ConnectionManager 连接管理器 DBConenction 数据库连接对象 1 MultiPo
  • 网络层协议--IP简析 && 域名系统

    IP 因特网协议 ICMP 因特网控制协议报文 ARP 地址解析协议 RARP 反向地址解析协议 ip地址分类 A类 大型网络 0 开头 7位网络号 主机标识24位 B类 中型网络 10 开头 14位网络号 主机标识16位 C类 小型网络
  • PCL1.8的那些坑!各种编译及使用问题汇总

    在win10上用vs2013编译及使用pcl180遇见了各种坑 这里做个汇总 既是总结 也希望能给后来人引路 1 编译到visualization模块的时候 会有如下语句报错 if pcl visualization getColormap
  • DRM驱动程序开发思路和实践

    DRM驱动程序开发思路和实践 DRM Direct Rendering Manager 是Linux内核中的一个模块 用于管理GPU的渲染功能 在开发Linux下的图形驱动程序时 我们需要使用DRM模块作为基础 通过它来访问GPU的硬件资源
  • 20K测试工程师面试会考察哪些能力?

    前言 今年刚接触了 功能 测试工程师的面试工作 有遇到对信贷业务流程较熟悉的 工作内容纯测试app功能的 什么都接触过但是不够深入的 发现简历上写的东西和实际真的有点差距 面试也是一个艺术活 为了更好地考察面试者的能力 让面试工作更加有条理
  • switch更新主机服务器维护,switch更新链接不到服务器

    switch更新链接不到服务器 内容精选 换一换 客户在云容器引擎上搭建服务为手机应用订阅信息 首先客户端会向部署在CCE集群上的服务端 redis 发起请求 成功订阅信息服务 后继服务端侧会定时推送订阅的消息给客户端 服务端部署后 第一次
  • 编译cm for nexus5

    dependence bison build essential curl flex git gnupg gperf libesd0 dev liblz4 tool libncurses5 dev libsdl1 2 dev libwxgt
  • C++中派生类对基类成员的三种访问规则

    C 中派生类对基类成员的访问形式主要有以下两种 1 内部访问 由派生类中新增成员对基类继承来的成员的访问 2 对象访问 在派生类外部 通过派生类的对象对从基类继承来的成员的访问 今天给大家介绍在3中继承方式下 派生类对基类成员的访问规则 1
  • leetcode 27-移除元素 python

    给定一个数组 nums 和一个值 val 你需要原地移除所有数值等于 val 的元素 返回移除后数组的新长度 不要使用额外的数组空间 你必须在原地修改输入数组并在使用 O 1 额外空间的条件下完成 元素的顺序可以改变 你不需要考虑数组中超出
  • require用法

    现在前端的页面都采用模块化来加载js 避免了js加载的延迟顺序依赖等问题 原理的东西这里不多做解释 我们这节只是介绍一下require的用法 1 首先我们要下载require js文件 2 html引入 这里src是require js的路
  • Netty实时接收数据放入缓存处理简单示例

    因为硬件设备使用的udp协议 传输数据 客户端只顾着发数据 所以大部分操作都在我服务端进行操作 做到数据实时 定义为每秒客户端发送来一次数据 展示 暂定方案为netty redis map netty这块我就不多赘述了 不懂得可以先看net
  • 创建Spring Boot框架项目- maven工程--多种方式

    文章目录 创建Maven工程的方式有很多种 以下简单介绍三种 使用Maven Spring Initializr 2 1选择默认方式 1 gt 默认方式 2 gt 但是有可能加载不出来因为用的国外的网址 3 gt 有时候也会加载出来 4 g
  • TypeError: "x" is not a constructor 无厘头使用 vuex 的坑

    2019 11 25 写 vuex store js 的时候 因为 export default new Vuex store store 给了个小写 所以爆出了一个 vuex a store is not a constructor 的错
  • Python提取ABAQUS结果数据

    背景介绍 调研发现 传统结构设计过程中需要依赖工程师的理论知识和工程经验 针对具体问题提出初步设计方案 后续通过多次的迭代优化 直到满足要求为止 这种传统设计方法不仅工作量大 效率低 企业还需要投入巨量的成本 因此 我们可以通过优化算法 有