python - 如何使用 ABAQUS python 脚本(不消耗许可证)提取特定节点/节点集上所有步骤的载荷和位移数据?
问题描述
在 ABAQUS 中,我想使用蟒蛇脚本。
我已经通过使用带有会话对象的脚本(从 ABAQUS CAE 会话期间生成的 .rpy 文件生成)来做到这一点。我用来执行的命令是'ABAQUS CAE NOGUI=SCRIPT.py'。它在使用 ABAQUS CAE 时消耗许可证。
我的条件是,我想为节点集“N100”上的所有步骤提取“现场输出”结果(负载 ['RF'] 和位移 ['U']),而无需使用许可证。即通过使用“odbAccess”库。
我在 ABAQUS 文档(http://dsk.ippt.pan.pl/docs/abaqus/v6.13/books/cmd/default.htm?startat=pt05ch09s05.html)中找到了一些与之相关的描述。但是,我无法找到适合我需要的解决方案。ABAQUS 文档中给出的脚本仅在最后一步提取载荷 和位移结果,对于 ODB 文件中的所有节点也是如此。我想提取所有步骤时间(不仅仅是最后一个)和特定节点/节点集的结果。 (lastFrame = odb.steps['Step-1'].frames[-1])
ABAQUS 文档中给出的脚本无需使用任何许可证即可工作。
任何人都可以指导我吗?
解决方案
以下为所有模拟帧提取所有节点的“RF”和“U”。
part_instance = odb.rootAssembly.instances['PART-1-1']
for key in keys:
step = odb.steps[key]
frameRepository = step.frames
if len(frameRepository):
for frame in frameRepository:
print 'Id = %d, Time = %f\n'%(frame.frameId,frame.frameValue)
fo = frame.fieldOutputs
f1 = fo['U']
f2 = fo['RF2']
现在你只需要为你感兴趣的特定节点过滤 f1 和 f2 变量。一个简单的打印语句来理解 f1 和 f2 的结构真的可以帮助你。
推荐阅读
- python-3.x - 我无法在 python 中使用 opencv 3.4 识别对象。问题是关于 cap.read() 的命令
- sql-server - 如何重命名 SQL Server 计算列中引用的列?
- angular - 是否可以在不从 DOM 中删除元素的情况下使用 Angular ngIf?
- c++ - 通用初始化——向量的填充构造函数
- java - DatabaseException:无法将 java.util.HashMap 类型的值转换为字符串 - Firebase
- docker - 为什么我必须在 docker-compose.yml 中两次声明网络?
- ansible - 如何在ansible中成为具有未知密码的非特权用户
- node.js - 启动请求重复太快且状态=203/EXEC
- vb.net - 如何修复内存泄漏多线程
- javascript - 可以将 jQuery Quicksearch 配置为仅返回完全匹配吗?