找回密码
 注册
Simdroid-非首页
查看: 531|回复: 6

[H. 有限元编程] ABAQUS中多个inp文件的Matlab语言生成及批处理

[复制链接]
发表于 2010-5-1 17:41:31 | 显示全部楼层 |阅读模式 来自 湖南长沙
ABAQUS中inp文件的非编程性质,导致了变量参数值修改的费时费工,因此,采用matlab文件读与写的形式,来生成大批量的修改参数后的inp文件,最后,采用批处理提交计算。
以下是matlab实现文本读与写的代码:
%   
%    读入ABAQUS的inp文件LB_Q110.inp,修改其中参数,并
%    生成修改参数后的适用于批处理所用文件
%    54yiwei,2010-04-20,CS,CN
%   
%
clear all
%   调用尺寸参数函数parameter()
[x]=parameter();
nfile=length(x(:,1));
%    指定要生成的文件名
Sbl='LB_Q110-';
Se='.inp';
nn=1:nfile;
for i=1:nfile
    %
    diameter=x(:,1);
    thickness=x(:,2);
    fid_inl=fopen('LB_Q110.inp','r');
    %
    if(-1==fid_inl),error(['can''t open fileB_Q110.inp']),end
    %
    Sm=num2str(nn(i));
    S_lb=strcat(Sbl,Sm);          %生成LB_Q110-XX文件名,其中XX为数字1到nfile
    Soutl=strcat(Sbl,Sm,Se);   %生成LB_Q110-XX.inp文件名
    %
    fid_outl=fopen(Soutl,'w');  %生成输出文件LB_Q110-XX.inp
    %
    %读取LB_Q110.inp中的第一行,
    nfile=1;
    Str1=fgetl(fid_inl);
    %写入到LB_Q110-XX.inp
    fprintf(fid_outl,'%s\r\n',Strl);
    %读取LB_Q110-XX.inp文件每一行,修改参数
    while ~feof(fid_inl)          %判断是否为文件尾
        %
        nline=nline+1;
        Sn=fgetl(fid_inl);         %读取第nline
        %判断修改第2、3和第4行
        if nline==2
            datestr=strcat('54yiwei,',date,',CS,CN');
            fprintf(fid_outl,'%s\r\n',datestr);
        elseif nline==3
            fprintf(fid_outl,'diameter=%5.2f\r\n',diameter);
        elseif nline==4
            fprintf(fid_outl,'thickness=%5.2f\r\n',thickness);
        else
            fprintf(fid_outl,'%s\r\n',Sn);
        end
        if(nline>300),break;end
    end
    fclose(fid_inl);
    fclose(fid_outl);
end
关于ABQUS批处理提交计算,SimWe仿真论坛有帖子介绍:
http://forum.simwe.com/viewthread.php?tid=775346&highlight=+zengguo823
inp文件批处理工具Abaqus-bat最新版1.3:
http://forum.simwe.com/viewthread.php?tid=894456&extra
后处理中结果文件.odb的自动读取问题,涉及python脚本语言,本人仍在研究中,有没有做过类似工作的朋友,能否探讨探讨。

评分

1

查看全部评分

 楼主| 发表于 2010-5-9 12:34:58 | 显示全部楼层 来自 湖南长沙
Simdroid开发平台
后处理中结果文件.odb的自动提出问题已经解决,感谢帖子“Riks法的python后处理程序”所给的启发:
http://forum.simwe.com/viewthrea ... B%BA%F3%B4%A6%C0%ED
回复 不支持

使用道具 举报

发表于 2010-5-12 14:30:03 | 显示全部楼层 来自 湖北武汉
感谢,学习
回复 不支持

使用道具 举报

发表于 2010-7-25 10:53:06 | 显示全部楼层 来自 美国
程序中nline怎么和fgetl联系起来?
也就是说怎么改变读取的行数, nline并不是fgetl的参数啊
回复 不支持

使用道具 举报

发表于 2010-7-25 19:18:14 | 显示全部楼层 来自 上海
先学了ansys,感觉非常不适应“ABAQUS中inp文件的非编程性质”。这个应该会相当有用
回复 不支持

使用道具 举报

发表于 2010-7-25 23:32:36 | 显示全部楼层 来自 美国
[url=http://forum.simwe.com/redirect.php?goto=findpost&pid=2106653&p
tid=929759]4#[/url] kensington28


  原文中:

%读取LB_Q110.inp中的第一行,1 w9 @; G4 u# X* e) I1 [# N
    nfile=1;

nfile应该为nline吧

很不错的资料,谢谢楼主了~~
回复 不支持

使用道具 举报

发表于 2015-4-4 19:39:04 | 显示全部楼层 来自 北京
很不错的资料,谢谢楼主了~~
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-6-20 08:54 , Processed in 0.038002 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表