您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 用于在Abaqus中提取结点力的Python程序
#coding=utf-8fromabaqusimport*fromabaqusConstantsimport*fromodbAccessimport*importnumpyasnpOdbFilePath='E:\SD2014\TEST\'#OdbFileName='TEST.odb'#OdbFile=OdbFilePath+OdbFileNameOdbFile='E:\SD2014\TEST\TEST.odb'outfilename=OdbFilePath+'STRESS.txt'nodesetname='NSET-SZ'#intancename='PART-1-1'#如采用默认的instance,请屏蔽此行.#打开ODB文件Odb=odbAccess.openOdb[OdbFile]ifnotintancename:intancename=Odb.rootAssembly.instances.keys()[-1]nodeset=Odb.rootAssembly.instances[intancename].nodeSets[nodesetname]lastStep=Odb.steps.keys()[-1]lastFrame=Odb.steps[lastStep].frames[-1]#提取YY方向应力,如需要XX或其它方向应力,可更改x.data[0]或其它stress_field=lastFrame.fieldOutputs['S']stress_field_nodset=stress_field.getSubset(region=nodeset,position=ELEMENT_NODAL)nset_val=stress_field_nodset.valuesstress_data=map(lambdax:[x.nodeLabel,x.data[2]],nset_val)#如果要提取最大等效应力或最大主应力,请解开如下三行屏蔽#nset_val=stress_field_nodset.getScalarField(invariant=MISES).values#nset_val=stress_field_nodset.getScalarField(invariant=MAX_INPLANE_PRINCIPAL).values#stress_data=map(lambdax:[x.nodeLabel,x.data],nset_val)#平均各节点的应力.由于ELEMENT_NODAL输出的为单元节点值,故一个节点上会有多个应力值,故需要进行平均.stress_data_dict={}forsdinstress_data:nodeLabel,data=sdifnodeLabelnotinstress_data_dict:stress_data_dict[nodeLabel]=[]stress_data_dict[nodeLabel].append(data)new_stress_data=sorted([[x,np.mean(stress_data_dict[x])]forxinstress_data_dict],key=lambdax:x[2])#将节点号和应力值写入文件outfile=open(outfilename,'w')fordainnew_stress_data:printoutfile,%10d,%20.9f%(da[0],da[1])outfile.close()#如果要写出各节点的坐标请打开如下如下引号屏蔽掉的'''#提取节点集各节点编号及坐标coords=map(lambdax:[x.label,x.coordinates],nodeset.nodes)coords_dict={};forcincoords:coords_dict[c[0]]=c[1]new_stress_data=sorted([[x,np.mean(stress_data_dict[x]),coords_dict[x][0],coords_dict[x][1],coords_dict[x][2]]forxinstress_data_dict],key=lambdax:x[0])outfile=open(outfilename,'w')fordainnew_stress_data:printoutfile,%10d,%20.9f,%20.9f,%20.9f,%20.9f%(da[0],da[1],da[2],da[3],da[4])outfile.close()'''
本文标题:用于在Abaqus中提取结点力的Python程序
链接地址:https://www.777doc.com/doc-7154594 .html