编辑 Abaqus 输入文件并从 Matlab 运行它

Posted

技术标签:

【中文标题】编辑 Abaqus 输入文件并从 Matlab 运行它【英文标题】:Edit an Abaqus input file and Run it from Matlab 【发布时间】:2019-09-09 09:30:17 【问题描述】:

我需要执行 50 次 Abaqus 模拟,每次模拟都会分析某种材料属性,并且每次都通过更改一个参数而有所不同。所以想法是编写一个 Matlab 脚本:

    打开 .inp 文件 编辑感兴趣的材料参数 将其打印到一个新文件中,该文件将成为新的 .inp 文件 运行它来执行模拟

这是我迄今为止在一个非常简化的版本中完成的:

f= fopen('PRD8_30s.inp'); 

c = textscan(f,'%s %s %s %s %s ','delimiter',','); 

fclose(f) ; 
S = [c1]; 
A = '5e-08' ;

S(12496) = A ; 

fid = fopen('file.inp','w') ;
fprintf(fid,'%s \n',S: );

fclose(fid) ; 

PRD_8_30s.inp

我手动找到了感兴趣参数的位置(A 在 12496,因此低于 *Viscoelastic 线)。该代码实际上更改了我需要的参数,但存在重大问题:它打印一个新文件,其中包含相对于原始 .inp (12552 与 8737)的附加行,并且它不打印整个 .inp,而只打印第一列。

如何编辑 .inp 更改参数并获得具有可用于运行新模拟的编辑参数的新 .inp?

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果您的输入文件不是多个 Gb 大小,以下可能会有所帮助。

    创建模板输入并将您要更改的参数标记为,例如para_xxxx

    使用以下脚本:

    text=fileread('template.inp');
    newtext=replace(text,'para_xxxx',newParameter);
    fid=fopen('newcase.inp','w');
    fprintf(fid,newtext);
    fclose(fid);

文件名“newcase.inp”应在每次循环中更新。

【讨论】:

以上是关于编辑 Abaqus 输入文件并从 Matlab 运行它的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 MATLAB 中为每个文件定义多个函数,并从该文件外部访问它们?

abaqus中怎么输入地震荷载

abaqus 中如何输入集中荷载

Linux系统运维笔记,Linux文件编辑命令

编辑主文件 MATLAB - msgbox 和 questdlg

matlab中的SPM:如何在批处理编辑器中调用matlab函数