pythonabaqusodb文件数据读取_Abaqus-利用python处理有多个instances的odb文件,得到inp模型数据用于前处理...

原标题:Abaqus-利用python处理有多个instances的odb文件,得到inp模型数据用于前处理

在一些情况下,odb文件中包含有多个instances,instances之间会有节点和单元是重合。很多情况下需要得到该odb模型数据,并将其导入hypermesh进行前处理。如果直接从abaqus中得到odb模型数据的inp输入导入到hypermesh中,会有重合节点和单元报错,然而利用python可以解决该问题。部分代码参考如下:

################################################

fromabaqus import*

fromabaqusConstants import*

fromviewerModules import*

importmath

fromodbAccess import*

################################################

myPath='D:/2017/model/*.odb'

datapath='D:/2017/model/'

dataoutput=datapath+'engine.inp'

odb=openOdb(path=myPath)

################################################

myassembly=odb.rootAssembly

myinstances=myassembly.instances

################################################

types=locals()

forinstanceEach inmyinstances.keys():

name=instanceEach.replace('-','_')

instanceNum.append(name)

types['elemDic_%s'%name]={}

types['nodeDic_%s'%name]={}

types['nodeList_%s'%name]=[]

forelementEach inmyinstances[instanceEach].elements:

elementType=elementEach.type

if'C3D'inelementType:

types['nodeList_%s'%name].extend(list(elementEach.connectivity))

types['elemDic_%s'%name][elementEach.label]=elementEach.connectivity

types['nodeList_%s'%name]=list(set(types['nodeList_%s'%name]))

fornodeEach inmyinstances[instanceEach].nodes:

types['nodeDic_%s'%name][nodeEach.label]=nodeEach.coordinates

################################################

k=0

forname ininstanceNum:

elemidMin=min(types['elemDic_%s'%name].keys())

elemidMax=max(types['elemDic_%s'%name].keys())

ifelemidMin

forelementLabel intypes['elemDic_%s'%name].keys():

elemnewid=elementLabel+k

types['elemDic_%s'%name][elemnewid]=types['elemDic_%s'%name].pop(elementLabel)

elemidMax=max(types['elemDic_%s'%name].keys())

k=elemidMax

else:

k=elemidMax

################################################

k=0

forname ininstanceNum:

nodeidMin=min(types['nodeList_%s'%name])

nodeidMax=max(types['nodeList_%s'%name])

ifnodeidMin

forelementLabel, elementConnect intypes['elemDic_%s'%name].items():

elementnewConnect=[]

forconnectEach inelementConnect:

connectnewEach=connectEach+k

elementnewConnect.append(connectnewEach)

fornodeEach intypes['nodeList_%s'%name]:

nodesOutput[nodeEach+k]=types['nodeDic_%s'%name][nodeEach]

nodeidMax=max(types['nodeList_%s'%name])+k

k=nodeidMax....完整代码地址:http://www.jishulink.com/content/post/363179

该代码用于导出odb模型数据的所有的3D单元及相关的节点。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值