首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Abaqus脚本中的节点应力和应变两个不同应力值的节点?

Abaqus脚本中的节点应力和应变两个不同应力值的节点?
EN

Stack Overflow用户
提问于 2021-10-20 12:26:04
回答 1查看 1K关注 0票数 0

我试图从.odb中提取节点的最大主应力和应变(S和E)。我模拟了一根受机械疲劳影响的梁。我对Abaqus脚本很陌生,所以我尝试从特定节点打印压力S11值。我没想到的是,在运行脚本之后,我为同一个节点找到了两个不同的值。我决定打印坐标,它们匹配。我知道节点属于两个元素,但是值不应该相同吗?我是不是遗漏了什么?有人能解释一下为什么会发生这种事吗?

代码语言:javascript
运行
复制
# data_extraction.py

from abaqus import *
from odbAccess import *
from abaqusConstants import *
from odbSection import *
import odb

mypath = 'C:/Users/jjb21183/Desktop/Mauro/Abaqus/Exercise-MasterShiWang/T3/'     
myodb = 'Job-M4.odb'       
odb = openOdb(path = mypath+myodb)

lastframe = odb.steps['Step-1'].frames[-1]

stress = lastframe.fieldOutputs['S']

elementAmount = len(stress.values[0].instance.elements)

myinstance = odb.rootAssembly.instances['PART-1-1']

for i in range(0, elementAmount):    
    element = myinstance.elements[i]
    for j in range(0, 8):
        nodes = element.connectivity[j] 
        N = myinstance.nodes[nodes-1]
        nodeCoordinateX = N.coordinates[0]
        nodeCoordinateY = N.coordinates[1]
        nodeCoordinateZ = N.coordinates[2]
        # l1 = [nodeCoordinateX, nodeCoordinateY, nodeCoordinateZ]
        # print l1
        if (nodeCoordinateX == 4.0 and nodeCoordinateY == 10.0 and nodeCoordinateZ == 0.0):     
            el_stress = stress.getSubset(region = element)
            print [nodeCoordinateX, nodeCoordinateY, nodeCoordinateZ]
            print el_stress.values[0].data[0]  

我的代码输出

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-20 14:49:37

实际上,您不是在查看节点值,而是在查看Integration上的值。Abaqus计算积分点的结果。而且由于积分点位于不同的位置,所以值也不同。

要获得节点应力或应变结果,可以使用session.writeFieldReport逗号。此命令将显示在屏幕上的实体的字段输出数据写入文件。

因此,要在屏幕上显示所需的节点,请创建叶对象并在屏幕上显示。

代码语言:javascript
运行
复制
import displayGroupOdbToolset as dgo
leaf = dgo.LeafFromNodeSets(nodeSets=('Node_Set', ))
session.viewports['Viewport: 1'].odbDisplay.displayGroup.replace(leaf=leaf)

或者您也可以从节点标签创建叶对象,

代码语言:javascript
运行
复制
import displayGroupOdbToolset as dgo
leaf = dgo.LeafFromModelNodeLabels(nodeLabels=(('PART-1-1', ('10', '11','12')),))
session.viewports['Viewport: 1'].odbDisplay.displayGroup.replace(leaf=leaf)

其中,'Node_Set'是节点集,'10', '11','12'是节点标签。现在您可以使用writeFieldReport命令作为

代码语言:javascript
运行
复制
session.writeFieldReport(fileName='outData.dat', append=ON, 
    sortItem='Node Label', odb=odb, step=0, frame=1, outputPosition=NODAL, 
    variable=(('S', INTEGRATION_POINT, ((INVARIANT, 'Max. Principal'), )), ))

有关更多细节,请查看Abaqus脚本指南。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69645970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档