首页/文章/ 详情

MATLAB启动ABAQUS——优化

4月前浏览10022

本文摘要(由AI生成):

这段代码包含了两部分:MATLAB和Python脚本。MATLAB部分主要用于控制ABAQUS软件的运行和记录时间成本,同时更新迭代采集步数,并将当前步数写入文件。Python部分则用于处理ABAQUS的输出数据库(ODB)文件,提取特定分析步和节点的数据,包括位移和坐标,然后将这些数据写入文本文件。整个流程从MATLAB脚本开始,通过运行Python脚本来处理ABAQUS的结果数据。


MATLAB启动ABAQUS,提取odb,将ABAQUS模型视作MATLAB的一个函数,用于优化分析

inpName = 'Job-1';

workDir = 'G:\CABLE_CON\TEXT2';

runabaqus(workDir,inpName);

% 运行py脚本文件

 

system(['abaqus viewer noGui=','out_F.py']);

 

% 载入数据

 

t=load('F1.txt');

COOR=load('weizi.txt');

 

%--------------------------------------------------------------------------------------------------------------

function xx=runabaqus(workDir,inpFile)

MatlabPath=pwd();

cd(workDir);

  inputFile=['abaqus job=',inpFile];

  system(inputFile);

  pause(5);

  t0=tic;

cd(MatlabPath);

if (exist([workDir,'\',inpFile,'.lck'],'file')==2)

    while exist([workDir,'\',inpFile,'.lck'],'file')==2

        t=toc(t0);

        h=fix(t/3600);

        m=fix(mod(t,3600)/60);

        sec=fix(mod(mod(t,3600),60));

        pause(1);

        fprintf('-ABAQUS calculating-\n     time costed  %d:%d:%d\n',h,m,sec);

    end

    fprintf('---------ABAQUS complete---------\n     time costed  %d:%d:%d\n',h,m,sec);

xx=1;

else

    fprintf('\n runabaqus error:InpFile submmit failed\n');

    xx=0;

end

end

更新迭代采集步数的程序代码

from odbAccess import *

from abaqusConstants import *

from odbMaterial import *

from odbSection import *

import math

 

将当前步数写到cycle.txt 文件下

 

f=open('cycle.txt','r')

n=f.read()

f.close()

 

读取odb文件

 

odb = openOdb(path=r'G:\CABLE_CON\TEXT2\Job-'   n   '.odb')

 

取odb文件中最后一个分析步进行数据提取

 

Step_1=odb.steps['Step-' n]

 

region = Step_1.historyRegions['Element ASSEMBLY.1']

xy1=region.historyOutputs['CTF1'].data[300]

s=str(xy1)

s = s.replace("(", "")

s = s.replace(")", "")

disFile=open('F1.txt','w')

disFile.write(s)

disFile.close()

lastFrame=Step_1.frames[-1]

Zuobiao=lastFrame.fieldOutputs['COORD']

Regioncare=odb.rootAssembly.nodeSets['RP']

Coor1=Zuobiao.getSubset(region=Regioncare)

Zuobiao_x=Coor1.values[0].data[0]

Zuobiao_y=Coor1.values[0].data[1]

Zuobiao_z=Coor1.values[0].data[2]

Zhuanjiao=lastFrame.fieldOutputs['UR']

ZJ=Zhuanjiao.getSubset(region=Regioncare)

Zhuanjiao_x=ZJ.values[0].data[0]

Zhuanjiao_y=ZJ.values[0].data[1]

Zhuanjiao_z=ZJ.values[0].data[2]

total=Zuobiao_x,Zuobiao_y,Zuobiao_z,Zhuanjiao_x,Zhuanjiao_y,Zhuanjiao_z

s1=str(total)

s1 = s1.replace("(", "")

s1 = s1.replace(")", "")

disFile=open('weizi.txt','w')

disFile.write(s1)

disFile.close()

 

# 运行python脚本文件

function a=runpython(workDir,Py_name,cycle)

MatlabPath=pwd();

cd(workDir);

fid1= fopen('cycle.txt','wt');

fprintf(fid1,'%d',cycle);

fclose(fid1);

system(['abaqus viewer noGui=',Py_name]);

cd(MatlabPath);

a=1;

end

Abaqus机-电-液-控制联合航空航天汽车求解技术
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-09-16
最近编辑:4月前
伟sss
硕士 | 在读博士 哈工大在读工科博士
获赞 76粉丝 613文章 25课程 3
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈