许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB修改Abaqus的INP文件

MATLAB修改Abaqus的INP文件

阅读数 125
点赞 0
article_banner

参考了大佬的abaqus- python -matlab交互调用的案例

   https://blog.csdn.net/Galaxy_Robot/article/details/109252936
matlab实际上只是用 命令行  来运行python程序

   过程大概是

   1 matlab写入需要更改的数据

   2 python调取需要更改的数据,并且插入在需要修改的inp文件中

   3 matlab中利用 system  ()运行

   (修改inp文件后,abaqus运行出错,看了dat文件后才知道原来修改荷载的数据有格式要求,一行写8个数据(4对)或者2个数据(1对),所以在写入需要更改数据时要注意格式要求)

   我这个例子需要输入三组信号,按照 (时间 力)*4写入

   matlab写入数据部分

for i=2:4
    signal=zeros(2,1000);
    signal(1,:)=dout(:,1);
    signal(2,:)=dout(:,i);
    tname=num2str(i-1);
    Nn=strcat('F:\inp\','NewData',tname,'.txt'); %文件保存路径和inp文件放在一起
    fid=fopen(Nn,'w');
    fprintf(fid,...
    '%6.4f,              %6.4f,              %6.4f,              %6.4f,              %6.4f,              %6.4f,              %6.4f,              %6.4f\r\n',signal);
    fclose(fid);
end

主要修改调用的matlab函数

function modify(Path,InpFile,NewData)
%modify.m
cd(Path)
if (NewData=='NewData1.txt')
    ReqFile=[Path,'\modify1.txt'];
    fid=fopen(ReqFile,'wt');
    %把需要修改的inp文件和新数据文件的文件名、路径写入modify.txt
    fprintf(fid,'%s,%s.inp,%s',Path,InpFile,NewData);
    fclose(fid);
    system('abaqus cae noGUI=inpmodify1.py');%调用python脚本修改inp数据
elseif (NewData=='NewData2.txt')
    ReqFile=[Path,'\modify2.txt'];
    fid=fopen(ReqFile,'wt');
    %把需要修改的inp文件和新数据文件的文件名、路径写入modify.txt
    fprintf(fid,'%s,%s.inp,%s',Path,InpFile,NewData);
    fclose(fid);
    system('abaqus cae noGUI=inpmodify2.py'); %每个py程序识别行不同,替换行数不同
else
    ReqFile=[Path,'\modify3.txt'];
    fid=fopen(ReqFile,'wt');
    %把需要修改的inp文件和新数据文件的文件名、路径写入modify.txt
    fprintf(fid,'%s,%s.inp,%s',Path,InpFile,NewData);
    fclose(fid);
    system('abaqus cae noGUI=inpmodify3.py');
end

end

python读取更改数据并且插入部分,因为数据总共有250行,先在newdata需要插入的地方空出250行

#给txt插入空格
fid=open('F:/inp/Job-3.inp',"r")
lines=fid.readlines()
fid.close()
startstr="*Amplitude, name=Amp-3\n"
index=lines.index(startstr)+1
lines1 = lines.insert(index, '\n'*249)#空249行因为本来有一行空余
fid=open('F:/inp/Job-3.inp',"w")
fid.writelines(lines)
fid.close()在这里插入代码片

下面是 主要的  更改数据部分的python代码,主要参考前面大佬,删除了一些我用不到的地方

#coding=utf-8
#inpmodify.py
# 本脚本的功能是修改ABAQUS inp文件
import time
#读取inp文件的路径及文件名
f=open('modify1.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="*Amplitude, name=Amp-1\n"
startIndex=lines.index(startstr)+1
#数据替换
endIndex=startIndex+250
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()

最后matlab运行部分就很简单了,调用之前的函数就可以了

modify('input文件路径','Job-3','NewData1.txt');



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

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

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空