让我向你解释我的任务,我会问你是否有可能在阿巴克斯做到这一点。ABAQUS是一个在python环境下进行仿真的软件工具。
请,假设我在滑轮(或圆柱形固体)上做一个模拟,单步作为外表面的载荷。
我收集必要的应力值(S22,values等)在每个节点上选定的滑轮表面。
我还收集了那个节点的柱面坐标。现在,我在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[‘节点;R;T;Z;SF,
'20,7;30,7;0;-15,4;1,
4 970;30 7;0 07;-15 4;1
'4971、30、7、0、13、-15、4、1、
'4975;30;0.40;-15,4;1.3,]
非常感谢你的时间和耐心。
致以亲切的问候,
阿洛里·赛普雷瑟姆·雷迪+33755735057
发布于 2018-07-06 10:51:45
要在Abaqus中可视化数据,需要在输出数据库中创建一个新的字段输出对象。此对象只能在框架内创建。因此,由于ODB结构,您需要:
所有这些都可以使用Abaqus脚本接口创建。
在下面的代码中,我假设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()https://stackoverflow.com/questions/51206049
复制相似问题