首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为了反映一个新的计算变量,例如,“SF-1”,对于每个节点从excel工作表,到ABAQUS模型上的节点可视化等高线图。

为了反映一个新的计算变量,例如,“SF-1”,对于每个节点从excel工作表,到ABAQUS模型上的节点可视化等高线图。
EN

Stack Overflow用户
提问于 2018-07-06 08:26:36
回答 1查看 101关注 0票数 0

让我向你解释我的任务,我会问你是否有可能在阿巴克斯做到这一点。ABAQUS是一个在python环境下进行仿真的软件工具。

请,假设我在滑轮(或圆柱形固体)上做一个模拟,单步作为外表面的载荷。

我收集必要的应力值(S22,values等)在每个节点上选定的滑轮表面。

我还收集了那个节点的柱面坐标。现在,我在excel中使用应力值(最大主应力、最小主应力、S22等)和来计算每个节点的安全系数。

因此,对于每个节点,我有一个名为SF(安全系数)的新变量。我将使用ABAQUS PYHTON的CSV模块在内核命令行接口中显示这个SF值。

我希望你能理解我的解释,如果你不明白我的意思,请随便问我。

在内核命令行接口中反映CSV值后,感兴趣的是在滑轮.的可视化模块的各个节点上显示这个SF值。

我很希望你们能对这件事有所了解,在这之后我该怎么做呢?我可以在命令行中打印包含坐标和安全系数的表格值。

我会非常感谢你们的解决方案,如果这是可能的或不可能的?如果不是,请让我知道什么是可以替代的解决办法。示例表在excel中如下所示

代码语言:javascript
复制
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

使用代码在内核命令行接口中的示例输出。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-06 10:51:45

要在Abaqus中可视化数据,需要在输出数据库中创建一个新的字段输出对象。此对象只能在框架内创建。因此,由于ODB结构,您需要:

  • 创建一个新的step对象或选择一个现有的
  • 创建新的框架对象或在步骤中使用已使用的对象
  • 创建一个新的字段输出对象
  • 将数据添加到字段输出对象

所有这些都可以使用Abaqus脚本接口创建。

在下面的代码中,我假设table已经定义和填充了,它包含来自CSV的表。

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51206049

复制
相关文章

相似问题

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