通过Python修改Abaqus inp文件实现材料属性随机赋值

本次分析共涉及4个文件,包含case_study.cae(原始模型的CAE),case_study.inp(原始模型的inp文件),edit_inp_file.py(修改inp文件的python文件),newcase_study.inp(修改后的inp文件,即使用这个文件提交作业)。这四个文件下载链接我都会放在评论区,下文中关于参数的描述可能不够详细,请大家下载文件后详细观看。有用的话请三连。

本此分析结合简单的拉伸案例实现对材料随机赋予属性,一共分3步。

(1)在CAE界面获得普通模型的inp文件

(2)查看inp文件,熟悉结构

(3)编写python代码对inp文件进行修改

(4)查看最终效果

(1)获得inp文件

首先在abaqus中按平时的操作建立一个简单的模型,左侧限制所有的位移,右侧施加均匀的压力,如图1所示。

图1 简单拉伸模型

在job模块创建一个任务,使用Write input获得inp文件,如图2所示。

图2 获取inp文件

(2)查看inp文件,熟悉结构

首先我们看一下原inp文件的结构,发现其中有三处与赋予材料属性有关,如图3所示。其中

①:给材料创建集合

②:创建截面

③:创建材料属性

仔细观察inp文件中的上述三个部分,你就会发现他们之间是息息相关的,通过名字联系。例如②中的elset=Set-1,其中Set-1就是①中的的名字,②中的material=Material-1,其中Material-1就为③中材料的名字。这一点一定要牢牢记清楚,后面我们用python写代码的时候要记得做出来的inp文件中这几个也得匹配的上。

图3 与材料属性有关的项

(3)编写python代码对inp文件进行修改

import random

# 原模型中单元数量一共700个
element_numbers = 700

# 打开原文件读取信息
inpfile = open(r'D:\SIMULIA2020\temp\education\case_study.inp')
lines = inpfile.readlines()
inpfile.close()

# 给每个单元创建集合
elset_str = '*Elset, elset=Set-1, generate\n'
elset_index=lines.index(elset_str)
lines[elset_index] = '** insert lines\n'
del lines[elset_index+1]
for index in range(0, element_numbers):
    lines.insert(elset_index+index+1, '*Elset, elset=Set-{}\n{}\n'.format(index+1, index+1))

# 给每个单元赋予截面属性
section_str = '** Section: Section-1\n'
section_index = lines.index(section_str)
lines[section_index] = '** insert lines\n'
del lines[section_index+1]
for index in range(0, element_numbers):
    lines.insert(section_index+index+1, '*Solid Section, elset=Set-{}, material=Material-{}\n,\n'.format(index+1, index+1))

# 创建和单元数量相当的材料
material_str = '*Material, name=Material-1\n'
material_index = lines.index(material_str)
lines[material_index] = '** insert lines\n'
del lines[material_index+1:material_index+3]
for index in range(0, element_numbers):
    lines.insert(material_index+index+1, '*Material, name=Material-{}\n*Elastic\n{},{}\n'.format(
        index+1,
        random.randint(1.9e11, 2.1e11),
        random.uniform(0.29,0.32)))

# 将新的inp文件进行保存
newfile=open(r'D:\SIMULIA2020\temp\education\new_case_study.inp', mode='w')
for newline in lines:
    newfile.write(newline)
newfile.close()

(4)查看最终效果

如图4所示,最终的应力图体现的材料随机属性带来的差异。

图4 最终应力图

cut-off

为方便各位更好地学习,特地把我做这个的学习资料及路径分享给大家,与大家一起学习,共同进步。

有关inp文件的了解推荐看:

视频: https://www.bilibili.com/video/BV1wv411z7LK

书籍: ABAQUS有限元实例详解,石亦平,周玉蓉著;其中的第4章。

有关python的操作参考了

http://blog.sina.com.cn/s/blog_6465f2ed0102x7ae.html#commonComment

自己也是初步学习者,关于python和abaqus也都是刚入门的菜鸟,希望得到大家的指点。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空