编辑 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 中为每个文件定义多个函数,并从该文件外部访问它们?