Abaqus用python读取.odb文件
1. 示例文件获取
在Abaqus Command 中输入 ,然后会在工作目录中出现viewer_tutorial.odb.
abaqus fetch job=viewer_tutorial
2. 示例代码
按照代码文件,在Abaqus命令行窗口,一行行输入命令。
# ODb commands available
from odbAccess import *
from abaqusConstants import *# material and section Odb commands available
from odbMaterial import *
from odbSection import *# opening an output database
odb = openOdb(path=r'C:\AbaqusWorkfile\test_pythonOdb\viewer_tutorial.odb')# Reading model data# The root assembly
myAssembly = odb.rootAssembly# Part instance determine how many instances
for instanceName in odb.rootAssembly.instances.keys():print instanceName# Regions: A Node set An element set A surfacefor NodeSets in odb.rootAssembly.instances['PART-1-1'].nodeSets.keys():print 'Node sets = ', NodeSets# dispaly the nodes sets and the element sets
print 'Node sets = ', odb.rootAssembly.instances['PART-1-1'].nodeSets.keys()
print 'Element sets = ', odb.rootAssembly.instances['PART-1-1'].elementSets.keys()# ssigns a variable (topNodeSet) to the 'TOP' node set in the PART-1-1 part instance:
topNodeSet = odb.rootAssembly.instances['PART-1-1'].nodeSets['TOP']# Reading results data
# Steps
for stepName in odb.steps.keys():print stepNamestep1 = odb.steps.values()[0]
print step1.name
#Frames the last frame
lastFrame = odb.steps['Step-1'].frames[-1]# Reading field output data
for fieldName in lastFrame.fieldOutputs.keys():print fieldName
for fieldName in lastFrame.fieldOutputs.values():print fieldName# use the following to view all the available field data in a frame:
# For each field output value in the last frame,
# print the name, description, and type members.for f in lastFrame.fieldOutputs.values():print f.name, ':', f.descriptionprint 'Type: ', f.type# For each location value, print the position.for loc in f.locations:print 'Position:', loc.positionprint
# Results
# COPEN TARGET/IMPACTOR: Contact opening
# Type: SCALAR
# Position: NODAL# CPRESS TARGET/IMPACTOR: Contact pressure
# Type: SCALAR
# Position: NODAL# CSHEAR1 TARGET/IMPACTOR: Frictional shear
# Type: SCALAR
# Position: NODAL# CSLIP1 TARGET/IMPACTOR: Relative tangential motion direction 1
# Type: SCALAR
# Position: NODAL# LE: Logarithmic strain components
# Type: TENSOR_2D_PLANAR
# Position: INTEGRATION_POINT# RF: Reaction force
# Type: VECTOR
# Position: NODAL# RM3: Reaction moment
# Type: SCALAR
# Position: NODAL# S: Stress components
# Type: TENSOR_2D_PLANAR
# Position: INTEGRATION_POINT# U: Spatial displacement
# Type: VECTOR
# Position: NODAL# UR3: Rotational displacement
# Type: SCALAR
# Position: NODALdisplacement = lastFrame.fieldOutputs['U']
fieldValues = displacement.valuesmises = lastFrame.fieldOutputs['S']
fieldValues1 = mises.values# For each displacement value, print the nodeLabel
# and data members.for v in fieldValues:print 'Node = %d U[x] = %6.4f, U[y] = %6.4f' % (v.nodeLabel,v.data[0], v.data[1])for v in fieldValues1:print 'Element = %d Mises = %6.4f' % (v.elementLabel, v.mises)# lists all the members of a particular FieldValue
fieldValues[1].__members__
# The resulting output is
# ['instance', 'elementLabel', 'nodeLabel', 'position',
# 'face', 'integrationPoint', 'sectionPoint',
# 'localCoordSystem', 'type', 'data', 'magnitude',
# 'mises', 'tresca', 'press', 'inv3', 'maxPrincipal',
# 'midPrincipal', 'minPrincipal', 'maxInPlanePrincipal',
# 'minInPlanePrincipal', 'outOfPlanePrincipal']# Using regions to read a subset of field output data
center = odb.rootAssembly.instances['PART-1-1'].nodeSets['PUNCH']
# get displacement of subset
# The arguments to getSubset are a region, an element type, a position, or section point data
centerDisplacement = displacement.getSubset(region=center)
centerValues = centerDisplacement.valuesfor v in centerValues:print v.nodeLabel, v.data## another example
topCenter = \odb.rootAssembly.instances['PART-1-1'].elementSets['CENT']
stressField = odb.steps['Step-2'].frames[3].fieldOutputs['S']# The following variable represents the stress at
# integration points for CAX4 elements from the
# element set "CENT."field = stressField.getSubset(region=topCenter,position=INTEGRATION_POINT, elementType='CAX4')
# position argument INTEGRATION_POINT NODAL ELEMENT_NODEL CENTROID
fieldValues2 = field.values
for v in fieldValues2:print 'Element label = ', v.elementLabel,if v.integrationPoint:print 'Integration Point = ', v.integrationPointelse:print
# For each tensor component.for component in v.data:# Print using a format. The comma at the end of the# print statement suppresses the carriage return.print 'S = %10.5f' % component,# After each tuple has printed, print a carriage return.
# print## write file and reading history outputdata
from odbAccess import *
step2 = odb.steps['Step-2']
region = step2.historyRegions['Node PART-1-1.1000']
u2Data = region.historyOutputs['U2'].data
dispFile = open('disp.dat', 'w')
for time, u2Disp in u2Data:dispFile.write('%10.4E %10.4E\n' % (time, u2Disp))
else:dispFile.close()
3. 我的代码
目的:用python将米勒指数从odb文件中提取出来。
from abaqusConstants import*
from odbAccess import*
import os
from textRepr import*
import numpy as np
myodb = openOdb(path=r'C:\AbaqusWorkfile\FIB\try-model-210601-1.odb')myFrames = myodb.steps["Step-1"].frames# ff = (["SDV52"]["SDV65"]["SDV78"]
# ["SDV91"]["SDV104"]["SDV117"])
sdv52field = myFrames[-1].fieldOutputs["SDV52"]elementSets = odb.rootAssembly.instances['PART-1-1'].elementSets
bb = elementSets.keys()CRY = []
for a in bb:cc = odb.rootAssembly.instances['PART-1-1'].elementSets[a]CRY.append(cc)field = []
for a in CRY:dd = sdv52field.getSubset(region=a,position=INTEGRATION_POINT, elementType='C3D8R')field.append(dd)average = []for a in field:fieldValues = a.valuestemp1 = []for v in fieldValues:temp1 = []for value in fieldValues:temp1.append(value.data)ee = np.mean(temp1)average.append(ee)average = np.array(average)
np.savetxt(r"C:\AbaqusWorkfile\test_pythonOdb\miller.txt", average, fmt="% .10f")
Abaqus用python读取.odb文件相关推荐
- Abaqus用python进行.odb文件提取
目录 写在前面 Abaqus: 什么是有限元? .odb文件结构 Odb对象的成员信息如下: rootAssembly对象的成员信息如下: 使用: what?S11? 方案分析: 以下程序实现S11值 ...
- python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...
- python读取一个文件夹/子文件夹下的所有文件名字
python读取一个文件夹/子文件夹下的所有文件名字 示例代码: import osfile_path = './images/' all_file_name = os.listdir(file_pa ...
- python删除重复值所在的行数_使用python读取txt文件的内容,并删除重复的行数方法...
注意,本文代码是使用在txt文档上,同时txt文档中的内容每一行代表的是图片的名字. #coding:utf-8 import shutil readDir = "原文件绝对路经" ...
- python读取txt文件并画图
1,使用python读取txt文件 已知txt文件内容如下: 0 01 12 43 94 165 256 36 请以第一列为x轴,第二列为y轴画图 步骤如下: 1)使用readlines读取文件 2) ...
- MATLAB和Python读取wave文件的波形对比
用python读取.wav文件的波形后再用MATLAB读取文件波形进行验证. 1.MORSE 1.1 Python 程序见之前的博客. 波形如图1所示: 图1 1.2 MATLAB 读取波形程序 ...
- 用Python读取整个文件
本文翻译自:Reading entire file in Python If you read an entire file with content = open('Path/to/file', ' ...
- python怎么读xlsx_用python读取xlsx文件
一 准备工作: 二 xlrd库读取 首先安装xlrd库,安装方法: pip install xlrd import xlrd #打开excel wb = xlrd.open_workbook('tes ...
- python读取.edf文件
目录 EDF文件简介 MNE-python读取.edf文件 案例 第一步:导入工具包 第二步:加载本地edf文件 第三步:获取原始数据中事件 第四步:根据事件ID获取对应事件 第五步:绘制事件图 本教 ...
最新文章
- 哪个才是解决回归问题的最佳算法?线性回归、神经网络还是随机森林?
- 《I'm a Mac:雄狮训练手册》——第1章 开机 1.1 “咚”声的作用
- SharePoint 2007部署过程详细图解之一:准备
- Hibernate配置文件解释
- adb logcat 保存_adb命令——日志命令详解——全部输出到桌面: adb logcat c:\users\del\desktop\log.txt...
- Django:序列化的几种方法
- 卧槽,柠檬也能做汽车???
- 文字超出两行 则显示。。。
- 非极大值抑制(NMS)
- php基础知识和函数
- OpenOffice.org 2.0已经发布了。
- SQL数据库的查询操作大全(select)
- Linux【操作系统】
- 获取连接设备的SN号
- 长期在计算机房工作辐射大吗,在机房里工作辐射大吗
- 一问解决设备管理器里面提示:未知usb设备(设备描述符请求失败) 或者是“Unknown USB Device(Device Descriptor Request Sailed)”错误
- leetcode_石头游戏合集
- css 如何实现文本竖排、横排展示
- vijos P1263 单挑女飞贼
- C++ 控制台创建窗口,加载png图片,实现悬浮窗