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文件相关推荐

  1. Abaqus用python进行.odb文件提取

    目录 写在前面 Abaqus: 什么是有限元? .odb文件结构 Odb对象的成员信息如下: rootAssembly对象的成员信息如下: 使用: what?S11? 方案分析: 以下程序实现S11值 ...

  2. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  3. python读取一个文件夹/子文件夹下的所有文件名字

    python读取一个文件夹/子文件夹下的所有文件名字 示例代码: import osfile_path = './images/' all_file_name = os.listdir(file_pa ...

  4. python删除重复值所在的行数_使用python读取txt文件的内容,并删除重复的行数方法...

    注意,本文代码是使用在txt文档上,同时txt文档中的内容每一行代表的是图片的名字. #coding:utf-8 import shutil readDir = "原文件绝对路经" ...

  5. python读取txt文件并画图

    1,使用python读取txt文件 已知txt文件内容如下: 0 01 12 43 94 165 256 36 请以第一列为x轴,第二列为y轴画图 步骤如下: 1)使用readlines读取文件 2) ...

  6. MATLAB和Python读取wave文件的波形对比

       用python读取.wav文件的波形后再用MATLAB读取文件波形进行验证. 1.MORSE 1.1 Python 程序见之前的博客. 波形如图1所示: 图1 1.2 MATLAB 读取波形程序 ...

  7. 用Python读取整个文件

    本文翻译自:Reading entire file in Python If you read an entire file with content = open('Path/to/file', ' ...

  8. python怎么读xlsx_用python读取xlsx文件

    一 准备工作: 二 xlrd库读取 首先安装xlrd库,安装方法: pip install xlrd import xlrd #打开excel wb = xlrd.open_workbook('tes ...

  9. python读取.edf文件

    目录 EDF文件简介 MNE-python读取.edf文件 案例 第一步:导入工具包 第二步:加载本地edf文件 第三步:获取原始数据中事件 第四步:根据事件ID获取对应事件 第五步:绘制事件图 本教 ...

最新文章

  1. 哪个才是解决回归问题的最佳算法?线性回归、神经网络还是随机森林?
  2. 《I'm a Mac:雄狮训练手册》——第1章 开机 1.1 “咚”声的作用
  3. SharePoint 2007部署过程详细图解之一:准备
  4. Hibernate配置文件解释
  5. adb logcat 保存_adb命令——日志命令详解——全部输出到桌面: adb logcat c:\users\del\desktop\log.txt...
  6. Django:序列化的几种方法
  7. 卧槽,柠檬也能做汽车???
  8. 文字超出两行 则显示。。。
  9. 非极大值抑制(NMS)
  10. php基础知识和函数
  11. OpenOffice.org 2.0已经发布了。
  12. SQL数据库的查询操作大全(select)
  13. Linux【操作系统】
  14. 获取连接设备的SN号
  15. 长期在计算机房工作辐射大吗,在机房里工作辐射大吗
  16. 一问解决设备管理器里面提示:未知usb设备(设备描述符请求失败) 或者是“Unknown USB Device(Device Descriptor Request Sailed)”错误
  17. leetcode_石头游戏合集
  18. css 如何实现文本竖排、横排展示
  19. vijos P1263 单挑女飞贼
  20. C++ 控制台创建窗口,加载png图片,实现悬浮窗

热门文章

  1. torch.logical_and()方法
  2. 一文了解SCI论文投稿全流程
  3. php爬取flash的交互数据库,flash用php连接数据库的代码
  4. 互联网对现代科技企业管理的影响
  5. C# 获取可执行文件EXE(文件夹)路径大全
  6. next()和nextLine()的区别
  7. TUP:分享产品背后的技术和用户体验
  8. 您对超人搜索有什么建议?
  9. 2015-10-16 Invoke 函数 InvokeRepeating函数 CancelInvoke取消Invoke函数
  10. fetch和XHR的区别