问题描述
我想使用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 (将#修改为@)