MENHJ 发表于 2021-7-8 22:52:01

后处理之节点、积分点、单元质心应力提取

本帖最后由 MENHJ 于 2021-7-8 22:58 编辑

目录1. 积分点2. 质心3. 单元节点4. 节点
1. 积分点不同单元积分点个数见abaqus 后处理提取节点、积分点、中心点坐标。本次测试单元类型为CPE4R,仅有一个积分点。ele=odb.rootAssembly.instances['PART-1-1'].elementss=odb.steps['Step-1'].frames.fieldOutputs["S"]ele_s=s.getSubset(position=INTEGRATION_POINT,region=ele)value_s=ele_s.valuesdata_s=ele_s.values.data结果:print(data_s)[-2.70935010910034,-13.5762453079224, -5.53710222244263, -4.08417510986328]注意:1)data_s的结果为:,根据单元类型有所不同。2.)可通过getScalarField()分别得到应力分量:   s11=s.getScalarField(componentLabel="S11")。
2.   质心ele_s=s.getSubset(position=INTEGRATION_POINT,region=ele)
3. 单元节点ele=odb.rootAssembly.instances['PART-1-1'].elementsele_s=s.getSubset(position=CENTROID,region=ele)结果:print(len(ele_s.values))4注意:1)使用position=ELEMENT_NODAL,对于单元,结果中'position': NODAL_ELEMENT。2)ele_s.values的长度等于此单元连接节点的数目,值为此单元积分点外推到节点的值。3)经过验证,此方法得到的值与GUI中的值有些许不同。
4. 节点方法一:由一个连接单元节点外推值得到node=odb.rootAssembly.instances['PART-1-1'].nodesnode_s=s.getSubset(position=ELEMENT_NODAL,region=node)结果:print(node_s.values)({'baseElementType':'', 'conjugateData': None, 'conjugateDataDouble': 'unknown', 'data':array([-6.54357481002808, -13.1228637695313, -6.68658924102783,-5.28887939453125], 'f'), 'dataDouble': 'unknown', 'elementLabel': None,'face': None, 'instance': 'OdbInstance object', 'integrationPoint': None,'inv3': -10.2200479507446, 'localCoordSystem': None, 'localCoordSystemDouble':'unknown', 'magnitude': None, 'maxInPlanePrincipal': -3.60473585128784,'maxPrincipal': -3.60473585128784, 'midPrincipal': -6.68658924102783,'minInPlanePrincipal': -16.0617027282715, 'minPrincipal': -16.0617027282715,'mises': 11.2375841140747, 'nodeLabel': 1,'outOfPlanePrincipal': -6.68658924102783, 'position':NODAL, 'precision': SINGLE_PRECISION, 'press': 8.78434276580811,'sectionPoint': None, 'tresca': 12.4569664001465, 'type': TENSOR_2D_PLANAR})注意:1.使用position=NODAL得不到结果。2.尽管使用position=ELEMENT_NODAL,对于节点,结果中'position':NODAL。3.经过验证,此方法得到的值为所有连接单元的其中一个单元的此节点外推值(序号较小的单元,第3节中的方法),并不是所有连接单元在此节点外推值的平均值。4.将ave=0,查看节点值,可以看到python得到的mises结果与241节点的值相同:方法二:通过计算所有连接单元在此节点外推值的平均值得到步骤:1)找到节点的所有连接单元   由于没有找到快速查找节点所有连接单元的方法,只能通过遍历所有单元的方法进行查找。为了节省时间,可以在前处理建立相关单元集,通过遍历此单元集查找连接单元。注意:①官方文档中通过nodeSet找单元的方法行不通:session.odbs.rootAssembly.instances.nodeSets.elements返回None②单元集要包含节点所有连接单元。2)得到所有单元在此节点的外推应力值3)平均得到此节点的应力值
代码:nodes=odb.rootAssembly.nodeSets['NODESET-ST'].nodeseles=odb.rootAssembly.elementSets['ELESET-ST'].elements
#1)找到所有连接单元node_eles={}
for node in nodes:    node_eles=[]
for ele in eles:    nodeLabels=ele.connectivity    for nodeLabel in nodeLabels:      if nodeLabel in node_eles:            node_eles.append(ele.label)#2)得到所有单元在此节点的外推应力值s=odb.steps['Step-1'].frames.fieldOutputs["S"]
s11_node={}
for node in nodes:    s11_node=[]
for ele in eles:    values_ele=s.getSubset(position=ELEMENT_NODAL,region=ele).values    for value in values_ele:      if value.nodeLabel in eles_node:            s11_node.append(value.data)#3)平均得到此节点的应力值for nodeLabel in s11_node:    s11_node=np.mean(s11_node)
合并后代码:# 省去第一步骤from abaqus import *from abaqusConstants import *from odbAccess import *import numpy as np
odb_Path = 'Job-1.odb'stepName='Step-2'frameNumber=10fieldName='S'nodeSetName='NODESET-ST'   # nodeset to extract stresseleSetName='ELESET-ST'   #element set that contains all nodes of the node set
position=INTEGRATION_POINT
odb = openOdb(path=odb_Path, readOnly=True)s=odb.steps.frames.fieldOutputs
nodes=odb.rootAssembly.nodeSets.nodeseles=odb.rootAssembly.elementSets.elements
s11_node={}
for node in nodes:    s11_node=[]
for ele in eles:    values_ele=s.getSubset(position=position, region=ele).values    for value in values_ele:      if value.nodeLabel in s11_node:            s11_node.append(value.data)
for nodeLabel in s11_node:    s11_node=np.mean(s11_node)
注意:①由于单元集和节点集在前处理assembly级别建立,因此通过:odb.rootAssembly.nodeSets['NODESET-ST'].nodes得到的是含有一个元素的数组。②经过验证,与GUI结果相同(avg=75%)。

注:abaqus avg75%的含义参考:(7条消息) abaqus avg75%含义_wanjiac的博客-CSDN博客

tuya194 发表于 2021-7-9 08:02:45

学习了~

MENHJ 发表于 2021-7-9 08:34:27

tuya194 发表于 2021-7-9 08:02
学习了~

相互学习:lol

chen1998 发表于 2021-12-2 15:25:15

ilil牛逼:)
页: [1]
查看完整版本: 后处理之节点、积分点、单元质心应力提取