COMSOL软件的研究求解模块其实提供了比较丰富的参数化运行结构,但是对不同参数的研究的结果导出方面,还是需要很多手动设置操作的才能导出批量化数据。
比如以下情况:研究对线是一个催化反应器,需要入口温度、入口流速、反应器尺寸、反应物初始孔隙率等四个不同的输入参数进行单变量的不同输入值的影响研究。那么如果直接使用COMSOL来做的话,就需要使用参数化扫描对单个参数进行扫描,然后导出动画进行分解,并保存四个不同的mph文件,用于分别研究四个参数。
针对这种情况,其实可以用Matlab livelink来进行批量的单个参数的修改,并运行求解导出相关结果(mph、图、报告、表数据)。
% 1、定义要运行的参数组
model = mphopen('param_run.mph'); % 打开模型
% 设定参数组
param_name = ["T_in" "U_in" "d_ball" "eps_init"]; % 参数名称
param_unit = ["degC" "m/s" "um" ""]; % 参数单位
param_Value = [600 650 700 750 800;... %参数值
0.1 0.2 0.3 0.4 0.5;...
75 150 200 300 500;...
0.03 0.05 0.1 0.15 0.2];
% 2、 For循环运行所有参数组
for name=1:length(param_name) % 循环研究参数名
for value=1:size(param_Value,2) % 参数水平
% 记录输出
tic;
fprintf('Start simulation: %s=%s [%s]\n',param_name(name),num2str(param_Value(name,value)),param_unit(name));
% 设定参数
model.param.set(param_name(name),num2str(param_Value(name,value)),param_unit(name));
% 运行计算
model.sol('sol1').runAll;
% 导出数据
model.result.report('rpt1').run; % 导出报告
model.result.export('anim1').run; % 导出动画
model.result.export('anim2').run;
model.result.export('anim3').run;
model.result.export('anim4').run;
model.result.export('anim5').run;
model.result.export('anim6').run;
model.result.export('anim7').run;
model.result.export('plot1').run; % 导出出图数据表
model.result.export('plot2').run;
model.result.export('plot3').run;
% 整理导出数据
movefile("export_dir", strcat(param_name(name),"_", num2str(param_Value(name,value))));
copyfile("export_file",strcat(param_name(name),"_", num2str(param_Value(name,value))));
% 完成
toc
end
% 设定回原参数
model.param.set(param_name(name),num2str(param_Value(name,1)),param_unit(name));
end