为什么Abaqus python脚本不能从元素集中打印出正确的最大应力?

问题描述

我想使用abaqus python脚本在ODB文件的每一步中提取并打印最大冯·米塞斯应力以及特定元素集的关联元素。这将从前几步的最后一帧以及最后一步的所有帧中提取最大应力。

我使用了Abaqus文档中的示例,并通过在for循环中使用if-else语句对其进行了修改。但是,在初始步骤(即IF为true时)中,脚本并不总是能为我提供正确的最大压力。它似乎为elemset中的第一个元素打印了答案,而没有遍历所有其他元素。任何帮助将不胜感激,谢谢!

mySteps = odb.steps
numSteps = len(mySteps)
lastStep = numSteps - 1
#
#Initialize maximum values
maxMises = -0.1
maxElem = 0
maxStep = "_None_"
maxFrame = -1
Stress = 'S'
for i in range(numSteps):
    stepKey = mySteps.keys()[i]
    step = mySteps[stepKey]
    lastFrame = len(step.frames) - 1
    
    if i < lastStep:
        allFields = step.frames[lastFrame].fieldOutputs
        stressSet = allFields[Stress].getSubset(region=elemset)
        for stressValue in stressSet.values:
            if maxMises <= stressValue.mises:
                    maxMises = stressValue.mises
                    maxElem = stressValue.elementLabel
                    maxStep = step.name
                    maxFrame = step.frames[lastFrame].incrementNumber
    else:
        for frame in step.frames:
            allFields = frame.fieldOutputs
            stressSet = allFields[Stress].getSubset(region=elemset)
            for stressValue in stressSet.values:
                    if maxMises <= stressValue.mises:
                        maxMises = stressValue.mises
                        maxElem = stressValue.elementLabel
                        maxStep = step.name
                        maxFrame = frame.incrementNumber
    print 'Maximum von Mises stress %s is %f in element %d'%(
        region,maxMises,maxElem)
    print 'Location: frame # %d  step:  %s '%(maxFrame,maxStep)
    maxMises = -0.1
    maxElem = 0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)