首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODB的最大应力

ODB的最大应力
EN

Stack Overflow用户
提问于 2021-10-14 14:04:43
回答 1查看 219关注 0票数 0

我在编程方面是新手,我需要编写一个代码来创建一个odb,该代码可以可视化单个步骤的六个字段输出的最大值。对于每个节点,我想表示每个字段输出的最大值。现在我已经创建了一个代码,它导致了这个错误:

代码语言:javascript
复制
myFieldOutput.addData(position=INTEGRATION_POINT, instance=instance1, data=maxStress)

omu_PrimArray从序列失败-维度。

这是代码:

代码语言:javascript
复制
from abaqus import *
from abaqusConstants import *
import visualization
myViewport = session.Viewport(name='Max_Stess',
origin=(10, 10), width=150, height=100)
# Open the tutorial output database.
myOdb = visualization.openOdb(path='PROVA_04_10.odb', readOnly=False)
# Associate the output database with the viewport.
myViewport.setValues(displayedObject=myOdb)
instance1 = myOdb.rootAssembly.instances['MODIFICA_FUNZIONANTE']
# Create variables that refer to the first steps.
firstStep = myOdb.steps['sigma_equivalenti']

frame = firstStep.frames[-1]
#creo nuovo step

# lettura degli stress dallo step sigma

sigma_eq_1 = frame.fieldOutputs['sigma_eq_1']
sigma_eq_2 = frame.fieldOutputs['sigma_eq_2']
sigma_eq_3 = frame.fieldOutputs['sigma_eq_3']
sigma_eq_4 = frame.fieldOutputs['sigma_eq_4']
sigma_eq_5 = frame.fieldOutputs['sigma_eq_5']
sigma_eq_6 = frame.fieldOutputs['sigma_eq_6']

#calcolo del vettore degli sforzi massimi

maxStress=[]
for i in range(len(sigma_eq_1.values)):
   v1=sigma_eq_1.values[i]
   v2=sigma_eq_2.values[i]
   v3=sigma_eq_3.values[i]
   v4=sigma_eq_4.values[i]
   v5=sigma_eq_5.values[i]
   v6=sigma_eq_6.values[i]
   maxStress.append((max(v1,v2,v3,v4,v5,v6),)) #max(valori)


myFieldOutput = frame.FieldOutput(name='tensioni_max',description='calcolo delle tensioni massime', type=SCALAR)
myFieldOutput.addData(position=INTEGRATION_POINT, instance=instance1, data=maxStress)

#visualizzazione della variabile delle sigma massima sul programma
myViewport.odbDisplay.setPrimaryVariable(field=myFieldOutput,outputPosition=INTEGRATION_POINT)
myViewport.odbDisplay.display.setValues(plotState=(CONTOURS_ON_DEF,))
EN

回答 1

Stack Overflow用户

发布于 2021-10-16 05:29:07

可以使用field参数将字段输出数据添加为FieldOutput object。但是,您应该从现有的字段输出中创建字段数据。

在您的例子中,您可以执行以下操作:

  1. 访问字段输出(而不是字段输出数据),这是正确的。

代码语言:javascript
复制
sigma_eq_1 = frame.fieldOutputs['sigma_eq_1']
sigma_eq_2 = frame.fieldOutputs['sigma_eq_2']
sigma_eq_3 = frame.fieldOutputs['sigma_eq_3']
sigma_eq_4 = frame.fieldOutputs['sigma_eq_4']
sigma_eq_5 = frame.fieldOutputs['sigma_eq_5']
sigma_eq_6 = frame.fieldOutputs['sigma_eq_6']

然后,

  1. 操作这些字段输出数据。你可以对这些数据做任何可行的数学运算。添加、减法等。在本例中,为了找到最大值,我们有一个名为maxEnvelope.

的特定命令

代码语言:javascript
复制
maxS = maxEnvelope([sigma_eq_1, sigma_eq_2, sigma_eq_3, sigma_eq_4, sigma_eq_5, sigma_eq_6])

请注意,此命令以list作为参数。该命令在原始数据可用的同一位置计算新的字段数据。在这种情况下,它可以在Integration上使用,因此它将在Integration上编写。

现在,您可以使用

  1. 添加字段输出数据。

代码语言:javascript
复制
myFieldOutput = frame.FieldOutput(name='tensioni_max',description='calcolo delle tensioni massime', type=SCALAR)
myFieldOutput.addData(field=maxS[0])

P.S.:由于您已经将可视化模块导入为import visualization,所以您应该使用maxEnvelope方法作为visualization.maxEnvelope(...)

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

https://stackoverflow.com/questions/69572129

复制
相关文章

相似问题

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