让我向您解释我的任务,我会问您是否可以在ABAQUS中这样做。 ABAQUS是一种用于仿真的软件工具,可在 python 环境下使用。
请,假设我要在滑轮(或圆柱实体)上执行模拟,而外表面上的载荷只有一步。
我在选定滑轮表面上的每个节点上收集必要的应力值(S22,冯·米斯等)。
我还收集了该节点的圆柱坐标。现在,我在Excel中使用应力值(最大主应力,最小主应力,S22等)和找出每个节点的安全系数进行了一些计算。
因此,我为每个节点有了一个名为SF(安全系数)的新变量。 我将使用ABAQUS PYHTON的CSV模块在内核命令行界面中显示此SF值。
希望您能理解我的解释,请随时询问我是否不明白任何一点。
一旦我在内核命令行界面中反映了CSV值,我有兴趣在滑轮可视化模块的各个节点上显示此SF值。
我希望你们能对此有所了解,因为在此之后我该如何进行?我能够在命令行中打印包含坐标和安全系数的表格值。
如果可能,我将非常感谢你们为您提供的解决方案?如果没有,请告诉我什么是替代解决方案。 样品表在excel中是这样的
Node R T Z SF
27 30,7 0,00 -15,4 1
4970 30,7 0,07 -15,4 1
4971 30,7 0,13 -15,4 1
4973 30 0,27 -15,4 1.3
在内核命令行界面中使用代码对输出进行采样。
import csv
import pprint
infile=open(filename,'r')
table = [row for row in csv.reader(infile,delimiter=' ')]
pprint.pprint(table)
Output
[['Node; R; T; Z; SF],
['20,7; 30,7; 0分-15,4; 1],
[4970; 30,7; 0,07; -15,4; 1],
['4971,; 30,7; 0,13; -15,4; 1],
['4975; 30; 0.40; -15,4; 1.3],]
非常感谢您的时间和耐心。
问候,
Alluri Sai Preetham Reddy +33755735057
答案 0 :(得分:2)
要可视化Abaqus中的数据,您需要在输出数据库中创建一个新的字段输出对象。该对象只能在框架内创建。因此,由于ODB结构的原因,您需要:
所有这些都可以使用Abaqus Python脚本界面创建。
在下面的代码中,我假设已经定义并填充了table
,其中包含来自CSV的表格。
import odbAccess
from abaqusConstants import NODAL, SCALAR
import numpy as np
odb = odbAccess.openOdb(path='pathToYourOdbContainingResults', readOnly=False)
# In case you run the script multiple times, the step will already be there
if odb.steps.has_key('Step-SF'):
step = odb.steps['Step-SF']
else:
step = odb.Step(name='Step-SF', description='Step containing SF values.')
frame = step.Frame(incrementNumber=0, frameValue=1.0, description='SF Frame')
fo = frame.FieldOutput(name='SF', description='Safety factor', type=SCALAR)
# Data being added to a field output must be stored in a contiguous piece of
# memory, which is not something pure Python lists can guarantee
labels = np.array([row[0] for row in table], dtype=np.int32)
values = np.array([row[4] for row in table], dtype=np.float32)
fo.addData(position=NODAL, instance='nameOfInstanceHoldingTheResults', labels=labels,
data=[[value] for value in values])
odb.save()
# Closing is necessary because the newly created steps, frames, and field
# outputs are not visible before the ODB is re-opened
odb.close()