我正在开发Abaqus 6.14插件,它将对我的工程师论文有所帮助,我正在用Python写这篇论文。根据Abaqus scripting reference guide,可以通过调用以下命令从输出数据库(*.odb文件)导入材料:
from abaqus import mdb
mdb.models[name].materialsFromOdb(filename)但是,由于Abaqus允许用户从相对轻量级材质库(*.lib文件)导出/导入材料,并在模型之间共享它们,因此我希望从这些文件而不是从通常较大的*.odb文件导入材料。
当然,这可以很容易地手动完成,尽管我想减少插件的重复性工作,因为我需要在非常相似的模型上运行几十次模拟,但使用不同的材料和其他一些参数。我知道我也可以在模板*.cae文件中提供必要的材料,尽管如果我必须手动将新材料导入到几十个模型中或必须更新现有材料的属性,这可能会非常不方便。
我正在寻找的是一种变通方法,允许使用Python脚本将材质从材质库导入到Abaqus mdb模型,但避免实现自定义*.lib文件解析器,如果存在这样的变通方法的话。
发布于 2017-07-12 18:28:05
您需要知道的第一件事是Abaqus材质库只是一个经过腌制的文件。不需要特殊的解析器来处理它。您可以只使用标准的Python库pickle或cPickle。当然,您需要弄清楚内部对象的确切结构。这并不难,因为你会看到它只是一个简单的元组列表。
但是,如果您有现有的材料库,并且要在Abaqus CAE数据库中导入材料,则有一种现有的方法可以执行此操作。
Abaqus中有一个方法,它使用材质数据库中的材质字符串并从中创建材质对象。我记不住确切的名称了,但如果你手动导入一种材料并查看abaqus.rpy文件,你就会看到它在里面。
这里需要注意的一点是,为了使用此方法,您需要拥有材质库中的材质字符串。这可以通过读取材料数据库文件来完成。如前所述,这是pickle格式。
如你所知,Abaqus已经有了一种从材料库读取数据并将其导入CAE模型的方法。他们有一个你可以使用的Python模块,但它只能在GUI进程中使用,而不能在内核进程中使用。如果你想花点时间,你可以找出哪个模块可以做到这一点。在Abaqus安装文件夹中,你会发现一些.pyc文件。如果您使用Python反编译器,则可以获得这些模块的源代码。查找那些以mat开头的单词。
https://stackoverflow.com/questions/45043831
复制相似问题