【问题标题】:Abaqus read input file very slow for many materials对于许多材料,Abaqus 读取输入文件非常慢
【发布时间】:2018-03-28 09:32:30
【问题描述】:

编辑*:毕竟事实证明这并没有导致导入缓慢。尽管如此,给出的答案解释了用一种材料实现不同密度的更好方法。所以我会让这个问题存在。 (导入缓慢是由于从 abaqus PDE 运行脚本而不是使用文件菜单中的“运行脚本”造成的。特别感谢 droooze 发现问题)

我正在尝试优化某种材料的孔隙率分布。因此,我在一个零件中使用 +-500 种不同材料执行 abaqus FEA 模拟。模拟本身只需要大约 40 秒,但读取输入文件需要 3 分钟以上。 (我用python脚本生成了inp文件)

我正在使用这些命令在输入文件中生成我的材料:

*SOLID SECTION, ELSET = ES_Implant_MAT0 ,MATERIAL=Implant_material0
*ELSET, ELSET=ES_Implant_MAT336
6,52,356,376,782,1793,1954,1984,3072
*MATERIAL, NAME = Implant_material0
*DENSITY
4.43
*ELASTIC
110000, 0.3

知道为什么这会这么慢吗?有没有更有效的方法来减少加载输入文件的时间?

【问题讨论】:

  • 您确定这是导致它变慢的原因吗?
  • 抱歉,事实证明你是对的。这不是材料:(。当我使用 python 命令将输入​​文件作为模型导入时,速度非常慢。当我在 GUI 中手动执行时,只需几秒钟。我使用:model = mdb.ModelFromInputFile(name= model_name, inputFileName=inp_file_path) 有什么想法吗?很抱歉给大家带来了困惑。
  • 澄清一下,您是说当您在 GUI 中导入 .inp 时只需几秒钟,但运行 mdb.ModelFromInputFile 需要几分钟?这听起来不对 - 来自 .inp 的文件 > 导入 > 模型运行命令 mdb.ModelFromInputFile,您可以通过检查工作目录中的 abaqus.rpy 文件来确认。也许您的意思是您正在打开一个.cae 文件?
  • 不,我就是这个意思。我已经检查了 .rpy 文件,确实如此。正是执行的那一行代码。让我给你看一个视频:youtu.be/4Wzzq29ftPA我不知道该怎么做了,有什么建议吗?
  • 是的!!!!!!这是调试器 :D 非常感谢!!!你不知道你为我节省了多少时间!!!谢谢!!!

标签: abaqus


【解决方案1】:

如果您的大约 500 种材料都是同一种材料(例如,所有线弹性各向同性质量密度),那么您可以将它们全部折叠成一种材料,然后定义一个分布表,将这些材料直接分布到实例元素标签上。

语法:

(在Part 定义中的某处,在section 下)

*SOLID SECTION, ELSET = ES_Implant_MAT0 ,MATERIAL=Implant_material0

(在Assembly 定义中的某处;part= 应该引用上面部分的名称)

**  
**
** ASSEMBLY
**
*Assembly, name=Assembly
**  
*Instance, name=myinstance, part=mypart
*End Instance
**  
*Elset, elset=ES_Implant_MAT0, instance=myinstance
1,2,...

(在Materials 定义中的某处;有关关键字*DISTRIBUTION TABLE*DISTRIBUTION,请参见Abaqus 关键字参考指南)

** 
** MATERIALS
** 
*DISTRIBUTION TABLE, NAME=IMPLANT_MATERIAL0_ELASTIC_TABLE
         MODULUS,RATIO
*DISTRIBUTION, NAME=Implant_material0_elastic, LOCATION=element, TABLE=IMPLANT_MATERIAL0_ELASTIC_TABLE
        ,110000,0.3 # First line is some default value
myinstance.1,110000,0.3 # syntax: instance name [dot] instance element label
myinstance.2,110000,0.3 # these elements currently use the material properties assigned to `ELSET = ES_Implant_MAT0`. You can define the material properties belonging to other element sets in this same table, making sure you reference the element label correctly.
...
*DISTRIBUTION TABLE, NAME=IMPLANT_MATERIAL0_DENSITY_TABLE
         DENSITY
*DISTRIBUTION, NAME=Implant_material0_density, LOCATION=element, TABLE=IMPLANT_MATERIAL0_DENSITY_TABLE
        ,4.43 # Default value
myinstance.1,4.43
myinstance.2,4.43
...
*Material, name=Implant_material0
*Elastic
 Implant_material0_elastic # Distribution name
*Density
 Implant_material0_density # Distribution name

【讨论】:

  • 非常感谢!你认为这会提高速度吗?是否可以根据彩虹光谱绘制不同的“材料”?
  • @ThaNoob 对不起,我不知道它是否会提高你的速度。我使用这种方法将 27,000 种不同的材料分配给 27,000 种不同的元素,并且似乎可以在几秒钟内完成处理。至于绘制不同的材质,你是说像the answer I gave here那样绘制吗?
  • 我只是在谈论 500 种材料,所以我想这应该可以解决问题:)。事实上,这实际上也是我的帖子,我自己找到了一个解决方案(可能是一种解决方法),但这是基于不同的材料,所以我不能再使用它了。因此,您的帮助将再次有用。非常感谢!
  • @ThaNoob 您的模型可能具有您在问题中未提及的其他复杂功能,因此我真的不知道 I/O 的瓶颈是什么。顺便说一句,如果您想在fieldOutput 中可视化密度并在此处使用分布表方法,我为可视化提供的大部分答案对您没有多大帮助-您必须使用 C++ 脚本从.odb 或从 .inp 文件中提取材料属性和元素标签,并从中构造fieldOutput 数据。
  • 查看我对最初问题的评论。你是对的,这不是材料。
猜你喜欢
  • 2015-08-19
  • 2021-10-12
  • 2019-04-30
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多