找回密码
 注册
Simdroid-非首页
查看: 491|回复: 13

[二次开发] 如何用python调用abaqus

[复制链接]
发表于 2010-9-8 23:22:16 | 显示全部楼层 |阅读模式 来自 意大利
我的问题是这样的:

如何在一个python (比如 a.py)程序中,调用abaqus, (b.py,这个 b.py是abaqus有限元程序,我想在运行的a.py的过程中,传递变量给.b.py,然后abaqus运行b.py, 并把结果返回到a.py.)即自动运行abaqus。

谢谢
发表于 2010-9-9 09:25:24 | 显示全部楼层 来自 天津
Simdroid开发平台
看你想做什么调用了,如果仅是调用计算模块,没问题,如果想打开abaqus/CAE这类的,那就有问题了
回复 不支持

使用道具 举报

 楼主| 发表于 2010-9-21 18:16:45 | 显示全部楼层 来自 意大利
我的问题是 我已经把写好了abaqus的python文件,然后我又有一个数学优化程序,用python写的,在我运行这个数学程序的时候,我需要传递参数给abaqus的这个python程序,进行有限元运算,这样的话,就存在一个调用的问题了。请高手出来回答啊,谢谢
回复 不支持

使用道具 举报

发表于 2010-9-21 20:18:29 | 显示全部楼层 来自 江苏南京
有一个办法你可以试一试:(我这里a、b都是inp格式,按需要也可变换成py)
1.先计算a:a.submit()
                 a.waitForCompletion()
2.然后读取a.odb中你所关注的数据、保存;
3.接着以文本格式打开b0、通过readline和find找到你所需添加的行、写入你2中保存的数据,保存到b;
4..执行b。
回复 不支持

使用道具 举报

发表于 2010-9-21 20:40:56 | 显示全部楼层 来自 江苏南京
如果还要回到a的话就再执行步骤2、 3、 4,只是把其中的a和b互换一下。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-9-22 17:40:13 | 显示全部楼层 来自 意大利
4# chenzwboy x
谢谢,这里有个问题就是,由abaqus得到的python程序,只能用abaqus run script 运行,不能用普通的python 编辑器运行。而我的数学优化程序是可以在一般的python编辑器中运行的。过程为:

数学优化-----参数传递-------abaqus python 文件------有限元分析-----结果返回到 数学优化

直到得到想要的优化结果。

这样就存在一个 数学优化要自动启动 abaqus script的问题? 不过你说的方法,我想也是很有参考价值的。谢谢
回复 不支持

使用道具 举报

发表于 2010-9-23 09:50:06 | 显示全部楼层 来自 美国
由于abaqus python扩张很多功能,其他普通编译器上没有这些模块,所以不能在普通编译器上运行,但是你的数学优化程序是可以在ABAQUS上运行的,你可以ABAQUS PDE 编译器。至于你所说调用问题,你可以把所用abaqus python 作为一个模块、类或者函数都可以随便调用,这个跟其他python都是一样的阿。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-9-23 15:18:54 | 显示全部楼层 来自 意大利
谢谢版主,“所用abaqus python 作为一个模块、类或者函数都可以随便调用”,这个方法很好,我试下,回头反馈过来,把这个帖子的问题了结

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-9-26 19:46:33 | 显示全部楼层 来自 江苏南京
“所用abaqus python 作为一个模块、类或者函数都可以随便调用”,有个问题想问问:如何在Umat里面调用这个python模块?即假如我在工作路径下有个a.py文件用于计算材料参数的,怎么样才能够实现运行umat时执行这个文件?
回复 不支持

使用道具 举报

发表于 2010-9-26 20:30:05 | 显示全部楼层 来自 江苏南京
楼主结果怎么样,我很想知道呀,另外,稍微低点的ABAQUS都是基于python2.4的(高版本的不得而知),不知道楼主注意到这点没有
回复 不支持

使用道具 举报

 楼主| 发表于 2010-9-27 23:51:52 | 显示全部楼层 来自 意大利
本帖最后由 lx2007 于 2010-9-27 23:54 编辑

10# 铁道科学 eb

嗯,注意到这个问题了,所以我现在用的python shell 2.4 . 我和一个搞软件的朋友谈到了这个问题,貌似这个问题不是想象的那么简单。 因此目前暂时我在用matlab调用。因为matlab有指令让abaqus python程序自动运行。可以用指令

!abaqus cae nogui=xxxx.py

或者 !abaqus cae script=xxx.py

一个打开CAE,一个不打开CAE

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-9-30 13:29:30 | 显示全部楼层 来自 美国
把b.py写成函数的形式,然后在a.py中call那个函数并返回参数值
回复 不支持

使用道具 举报

发表于 2010-12-19 17:06:31 | 显示全部楼层 来自 北京工业大学
我同意楼上的这种方法,我做优化,我也是这么做的,楼主的问题我也遇到过,最终将所有的程序放在一个.py文件中,通过abaqus cae nogui=xxxx.py来实现的,不是很麻烦的,你试试!
回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-17 22:24:01 | 显示全部楼层 来自 意大利
你好,你能把你曾经做过的那个python例子发给我看看吗?邮箱或者是QQ都行
lx02624@sina.com 谢谢 13# yigl
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-3 17:35 , Processed in 0.066160 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表