python修改ABAQUS的inp计算文件
这里的函数可以与上一个博客Matlab-python-ABAQUS数据交互及联合使用的函数接口相互配合和集成,实现matlab与Abaqus进行联合仿真计算,大体思路如下图所示。
在这里插入图片描述

因此这里matlab和python各写一个接口函数,实现对数据的处理。

matlab函数
function modify(Path,InpFile,NewData)
%modify.m
%libing403,2017-05-09
ReqFile=[Path,’\modify.txt’];
fid=fopen(ReqFile,‘wt’);
%把需要修改的inp文件和新数据文件的文件名、路径写入modify.txt
fprintf(fid,’%s,%s.inp,%s.txt’,Path,InpFile,NewData);
fclose(fid);
system(‘abaqus cae noGUI=inpmodify.py’);%调用python脚本修改inp数据
end
1
2
3
4
5
6
7
8
9
10
这里的参数(Path,InpFile,NewData)可以由matlab主程序传递过来,语句

system(‘abaqus cae noGUI=inpmodify.py’)
1
实现调用修改inp文件的python脚本,脚本文件名为inpmodify.py。下面给出该脚本的实现。

python脚本
首先说明要如何修改inp中的具体什么数据。我这里inp文件abaqus-inpfile.inp包含以下一段数据,其中关键字"*Permeability, specific=1.\n",包括换行符‘\n’。这是指定材料的渗透系数以及比重,关键字后面的28行数据指定了渗透系数随孔隙比的变化,需要替换为新的数据,共有28行数据。而且我准备了新的28数据,保存在NewData.txt文件中。

abaqus-inpfile.inp文件内容


101200., 0.149577, , 19.7647
28977.5, 0.147995, , 24.2025
*Permeability, specific=1.
1.605e-12, 1.
5.24399e-12, 1.5
1.21474e-11, 2.
2.33056e-11, 2.5
3.96889e-11, 3.
6.22521e-11, 3.5
9.1937e-11, 4.
1.29675e-10, 4.5
1.76387e-10, 5.
2.32988e-10, 5.5
3.00384e-10, 6.
3.79474e-10, 6.5
4.71152e-10, 7.
5.76307e-10, 7.5
6.95821e-10, 8.
8.30574e-10, 8.5
9.81439e-10, 9.
1.14929e-09, 9.5
1.33498e-09, 10.
1.53939e-09, 10.5
1.76336e-09, 11.
2.00776e-09, 11.5
2.27344e-09, 12.
2.56125e-09, 12.5
2.87203e-09, 13.
3.20664e-09, 13.5
3.5659e-09, 14.
3.95066e-09, 14.5
*User Defined Field
*Material, name=Material-2
*Elastic

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
NewData.txt的数据:

1.605e-12, 1.
1.24399e-12, 1.5
1.21474e-11, 2.
1.33056e-11, 2.5
1.96889e-11, 3.
1.22521e-11, 3.5
1.1937e-11, 4.
1.29675e-10, 4.5
1.76387e-10, 5.
1.32988e-10, 5.5
1.00384e-10, 6.
1.79474e-10, 6.5
1.71152e-10, 7.
1.76307e-10, 7.5
1.95821e-10, 8.
1.30574e-10, 8.5
1.81439e-10, 9.
1.14929e-09, 9.5
1.33498e-09, 10.
1.53939e-09, 10.5
1.76336e-09, 11.
1.00776e-09, 11.5
1.27344e-09, 12.
1.56125e-09, 12.5
1.87203e-09, 13.
1.20664e-09, 13.5
1.5659e-09, 14.
1.95066e-09, 14.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
根据要求,编写的python脚本如下

#! /user/bin/python
#- -coding: UTF-8-*-
#inpmodify.py

本脚本的功能是修改ABAQUS inp文件

#libing403,2017-5-7
import time
#读取inp文件的路径及文件名内容
f=open(‘modify.txt’,‘r’)
req=f.readline()
f.close()
req=req.split(’,’)
InpFile=req[0]+’/’+req[1]
NewData=req[0]+’/’+req[2]
#读取inp文件内容
fid=open(InpFile,“r”)
lines=fid.readlines()
fid.close()
#找出原来的数据行
startstr="*Permeability, specific=1.\n"
startIndex=lines.index(startstr)+1
#28个行数据需要替换
endIndex=startIndex+28
#读入新数据
fid=open(NewData,“r”)
newInp=fid.readlines()
fid.close()
print("%s"%newInp)
#替换原来的数据行
i=0
for Index in range(startIndex,endIndex):
lines[Index]=newInp[i]
i=i+1
#写入新数据,替换原来的数据
fid=open(InpFile,“w”)
fid.writelines(lines)
fid.close()
#写入操作日志
meg=“inpmodify message:\n inp file modify successfully\n”
fid=open(“pylog.txt”,“a”)
fid.write(’%s\n’%meg)
fid.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
应用例子
有了上面的matlab函数modify.m和python脚本inpmodify.py,那么就可以在matlab主程序中调用它们来修改inp文件了。下面是一个例子,修改之前准备好的数据。

%example.m
%libing403,2017-07-09
clc
%inp文件的路径
Path=‘F:\security folder\ABAQUS WORKING\inversion_per’;
%inp文件名,不需要后缀名inp
InpFile=‘abaqus-inpfile’;
%新数据的文件名
NewData=‘NewData.txt’;%需要后缀名txt
modify(Path,InpFile,NewData);%调用函数修改inp文件
showlogfile(‘pylog.txt’);%显示python脚本运行的输出信息
1
2
3
4
5
6
7
8
9
10
11
其中showlogfile()在我的另外一个博客Matlab目录操作及fgetl函数已有介绍。运行程序后,matlab窗口显示如下消息,表明inp文件修改成功了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fviAb9l8-1603472147787)(image\matlab窗口显示pylog信息.png)]

修改的inp文件中,渗透系数换成了新的数据,其他数据保持不变,如下


101200., 0.149577, , 19.7647
28977.5, 0.147995, , 24.2025
*Permeability, specific=1.
1.605e-12, 1.
1.24399e-12, 1.5
1.21474e-11, 2.
1.33056e-11, 2.5
1.96889e-11, 3.
1.22521e-11, 3.5
1.1937e-11, 4.
1.29675e-10, 4.5
1.76387e-10, 5.
1.32988e-10, 5.5
1.00384e-10, 6.
1.79474e-10, 6.5
1.71152e-10, 7.
1.76307e-10, 7.5
1.95821e-10, 8.
1.30574e-10, 8.5
1.81439e-10, 9.
1.14929e-09, 9.5
1.33498e-09, 10.
1.53939e-09, 10.5
1.76336e-09, 11.
1.00776e-09, 11.5
1.27344e-09, 12.
1.56125e-09, 12.5
1.87203e-09, 13.
1.20664e-09, 13.5
1.5659e-09, 14.
1.95066e-09, 14.5
*User Defined Field
*Material, name=Material-2
*Elastic

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
小结
​ 这里的接口函数具有一定的通用性,只需修改相关的参数可以适用于类似的情况。其中inpmodify.py脚本则要根据不同的关键字以及需要替换的数据行进行修改,通用性没那么强。这里的函数以及之前两篇博客(Matlab目录操作及fgetl函数,Matlab-python-ABAQUS数据交互及联合使用)的函数,可以用来实现Abaqus与matlab之间的数据交换,可以在matlab方便使用一些优化算法,同时利用ABAQUS的有限元建模和计算的强大功能,实现参数反演估计,结构迭代,优化等研究。

​ 当然实现matlab与ABAQUS的数据交互还有很多其他方法。例如一个国外学者George Papazafeiropoulos使用编写了matlab工具箱Abaqus2Matlab,可以读取ABAQUS的各种输出结果,还是很不错的。不过需要花一定时间去掌握如何使用,也有可能不符合自己的期待的功能,好像没有通过matlab进行修改inp文件或者操控ABAQUS的功能。

强大功能,实现参数反演估计,结构迭代,优化等研究。

​ 当然实现matlab与ABAQUS的数据交互还有很多其他方法。例如一个国外学者George Papazafeiropoulos使用编写了matlab工具箱Abaqus2Matlab,可以读取ABAQUS的各种输出结果,还是很不错的。不过需要花一定时间去掌握如何使用,也有可能不符合自己的期待的功能,好像没有通过matlab进行修改inp文件或者操控ABAQUS的功能。

Abaqus2Matlab下载地址http://cn.mathworks.com/matlabcentral/fileexchange/54919-abaqus2matlab?focused=7197271&tab=example

python修改ABAQUS的inp计算文件相关推荐

  1. matlab-python修改ABAQUS的inp计算文件

    python修改ABAQUS的inp计算文件 这里的函数可以与上一个博客Matlab-python-ABAQUS数据交互及联合使用的函数接口相互配合和集成,实现matlab与Abaqus进行联合仿真计 ...

  2. abaqus python 读取文件_利用Python修改Abaqus的inp文件(关键字)

    利用Python修改Abaqus的inp文件(关键字) Abaqus的关键字可以直接打开inp文件或者在Abaqus的key word里面直接修改,当然除了这个,还可以利用Python语言进行修改,也 ...

  3. Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词

    #coding:utf-8 import os,repath = 'test' files = os.listdir(path)def count_word(words):dic = {}max = ...

  4. python 修改excel内容转PDF文件

    from win32com import client import win32apidef exceltopdf(doc):excel = client.DispatchEx("Excel ...

  5. 批量执行ABAQUS的inp文件——整理

    参考链接 [1]<ABAQUS批处理技巧>https://www.doc88.com/p-1925428610474.html [2]<python实现批量存储文件信息到指定文件&g ...

  6. python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...

    运行: Cmd中运行:abaqus scrip=plot.py 之所以用python因为abaqus的界面是基于python的,用它来进行批处理或者后处理是比较不错的,希望能和大家分享abaqus的更 ...

  7. 用textpad使abaqus(inp).fortran,python 代码语法加量

    textpad的好处就是打开代码非常快.整洁. 但是pad本身之包含了cpp等语法高亮. 对于功课的人,要经常使用abaqus的inp文件,Fortran代码和Python代码.有时候使用编译器打开, ...

  8. 【Python】导入资源管理器的文件列表(计算文件和文件夹大小)

    文章目录 1.按照扩展名进行分类 2.导出文件的大小 3.计算文件夹大小 4.分类到字典 5.完整代码及效果 1.按照扩展名进行分类 使用Python查询一个路径下的所有文件可以借助glob模块以及o ...

  9. python计算信息增益_利用Python提取ABAQUS的计算结果(ODB)信息、体积、应变等变化(一)...

    00 实例模型 一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移.体积.应变随加载时间的变化情况. 图1 金属长方体约束加载示意图 01 Py ...

最新文章

  1. 拼多多季报图解:营收34亿 活跃买家数同比增长144%
  2. 对实施运维的一点心得体会
  3. MS SQL基础:注释符、运算符与通配符
  4. 为什么你应该尝试@reach/router
  5. oracle--导出、导入blob类型的字段
  6. vuex的命名空间有哪些_javascript – vuex中模块的命名空间究竟是什么
  7. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component
  8. 交通仿真软件测试自学,交通仿真及常用的仿真软件简介
  9. linux系统gaussian09,高斯(Gaussian)软件linux下安装
  10. alipay.data.bill.balance.query ISV权限不足
  11. Android发送edp服务器,Android6.0调试笔记之edp屏无法点亮问题怎么解决
  12. Android Room 数据库使用记录
  13. iconfont(图标字体)
  14. 为什么大人学英语这么难?
  15. RHCA回忆录---RH236介绍
  16. python如何取消换行_python怎么取消换行
  17. 学习Vue3 第五章(Vue核心虚拟Dom和 diff 算法)
  18. 微信小程序开发(学习记录1.0)
  19. 公司价值评估-自由现金流法
  20. 微软开放跨平台联机 索尼:我们早就这么做了

热门文章

  1. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...
  2. CS 540: Introduction to Artificial Intelligence
  3. 【工具使用系列】关于 MATLAB Embedded Coder, 你需要知道的事
  4. linux mv命令: 移动文件或文件改名
  5. linux下DNS配置详解
  6. AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown
  7. 指数体系与因素分析:概念、作用与种类
  8. QTP的飞机登录描述性编程
  9. Java中线程安全的单例模式
  10. 为ZooKeeper增加一个小功能:指定IP进行受限客户端过滤