python读取数据库之给变量_python从ABAQUS输出数据库读取数据

本文档介绍了如何使用Python读取ABAQUS的输出数据库,包括导入相关模块、打开数据库、读取模型数据(如根装配、部件实例、区域、材料和截面)以及结果数据(分析步、帧、场输出和历史输出)。通过示例代码展示了如何访问和解析节点、元素信息、位移、应力等场数据。
摘要由CSDN通过智能技术生成

01导入模块

为了使Odb命令对脚本可用,首先需要使用以下语句导入odbAccess模块:

from odbAccess import *

from abaqusConstants import *

要使material和section Odb命令对您的脚本可用,您还需要使用以下语句导入相关模块:

from odbMaterial import *

from odbSection import *

02打开输出数据库

您可以使用openOdb方法来打开现有的输出数据库。例如,下面的语句打开了Abaqus/CAE可视化模块教程使用的输出数据库:

odb = openOdb(path='viewer_tutorial.odb')

打开输出数据库后,可以对Odb对象的方法和成员访问其内容。

03读取odb数据

下面的列表描述了模型数据中的对象和用于读取模型数据的命令。

根装配

一个输出数据库只包含一个根程序集。通过OdbAssembly对象访问根程序集。

myAssembly = odb.rootAssembly

部件实例

部件实例存储在OdbAssembly对象下的实例存储库中。 以下语句显示输出数据库中部件实例的存储库键:

for instanceName in odb.rootAssembly.instances.keys():

print (instanceName)

输出数据库只包含一个part实例,结构输出为

PART-1-1

区域

输出数据库中的区域是OdbSet对象。 区域是指存储在输出数据库中的部件和装配集。 部件集是指单个部件中的元素或节点,并出现在装配体中部件的每个实例中。 装配集是指装配中部件实例中的元素或节点。 区域可以是以下之一:A node set

An element set

A surface

例如,下面的语句显示OdbAssembly对象中的节点集:

print ('Node sets = ',odb.rootAssembly.nodeSets.keys())

结构输出是

Node sets = ['ALL NODES']

下面的语句显示part -1- 1实例中的节点集和元素集:

print ('Node sets = ',odb.rootAssembly.instances[ 'PART-1-1'].nodeSets.keys())

print ('Element sets = ',odb.rootAssembly.instances[ 'PART-1-1'].elementSets.keys())

结果输出是

Node sets = ['ALLN', 'BOT', 'CENTER', 'N1', 'N19', 'N481', 'N499', 'PUNCH', 'TOP']

Element sets = ['CENT', 'ETOP', 'FOAM', 'PMASS', 'UPPER']

下面的语句将part -1-1 实例中的“TOP”节点集赋值给变量(topNodeSet):

topNodeSet = odb.rootAssembly.instances[ 'PART-1-1'].nodeSets['TOP']

材料

材料存储在Odb对象下的材料存储库中。

使用以下命令访问物料储存库:

allMaterials = odb.materials

for materialName in allMaterials.keys():

print ('Material Name : ',materialName)

打印各向同性弹性材料特性:

for material in allMaterials.values():

if hasattr(material,'elastic'):

elastic = material.elastic

if elastic.type == ISOTROPIC:

print ('isotropic elastic behavior, type = %s' % elastic.moduli)

title1 = 'Young modulus Poisson\'s ratio '

title2 = ''

if elastic.temperatureDependency == ON:

title2 = 'Temperature '

dep = elastic.dependencies

title3 = ''

for x in range(dep):

title3 += ' field # %d' % x

print ('%s %s %s' % (title1,title2,title3))

for dataline in elastic.table:

print (dataline)

一些材料定义有子选项。例如,要访问超弹性材料的平滑类型的双轴测试数据:

if hasattr(material,'hyperelastic'):

hyperelastic = material.hyperelastic

testData = hyperelastic.testData

if testData == ON:

if hasattr(hyperelastic,'biaxialTestData'):

biaxialTestData = hyperelastic.biaxialTestData

print ('smoothing type : ',biaxialTestData.smoothing )

截面

section存储在Odb对象下的Sections存储库中。

allSections = odb.sections

for sectionName in allSections.keys():

print ('Section Name : ',sectionName)

Section对象可以是各种Section类型之一。type命令提供有关节类型的信息。例如,要确定一个截面是否是“均质实体截面”类型,并打印其厚度和相关材料名称:

for mySection in allSections.values():

if type(mySection) == HomogeneousSolidSe

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值