本文所述适用于COMSOL Multiphysics 5.5和MATLAB2019a联合仿真
1 启动条件
想要MATLAB可以和COMSOL联合仿真,最基本的要求就是安装COMSOL时将其和MATLAB联合的方式选定到MATLAB安装的文件夹。这样会生成一个COMSOL Multiphysics 5.5 with MATLAB。
直接打开COMSOL Multiphysics 5.5 with MATLAB就可以进行联合仿真了。它会自动打开MATLAB软件,这时在MATLAB界面可以直接调用COMSOL相关的API。这些API在”COMSOL安装路径\Multiphysics\mli” 文件中。
2 常用API及说明
上面的启动完成后,就可以初步进行联合仿真了。常用API如下:
-
ModelUtil.showProgress(true);
作用:后面划分网格,进行计算时会显示执行进程,显示进度和日志界面。注意这句话没法写在.m文件中,只能再命令行执行,所以可以先执行这句,然后执行.m文件,这样就可以显示进度了。 -
model = mphload(‘magmodel.mph’);
作用:将指定的COMSOL中创建的模型加载到MATLAB中,且将模型命名为model -
model = mphopen(‘magmodel.mph’);
作用:加载案例模型,会在案例库中找该模型,一般用不到。 -
mphnavigator
作用:显示图像化用户界面,用模型树列出模型特征。 -
mphlaunch
作用:将MATLAB中正在运行的的模型连接到COMSOL中。 -
mphgetexpressions(model.param)
作用:显示模型中定义的参数 -
mphmesh(model);
作用:将划分的网格示意图在MATLAB中显示出来。 -
model.material(‘mat3’).selection.set([6 7])
作用:将材料3的选择域设置为6 7
注:各种设置的选择域都可以使用这种方法 model.需要设置的地方.selection.set([ ]) -
model.sol(‘sol1’).run;
作用:执行名为sol1的求解器,也就是进行计算
注意:这句话执行条件是下面计算结果的数据集中必须包含要求的解(正常在设置默认求解器时就会自动给出,不需要单独设置),要不然可能会报错。
补充:亲测发现有数据集有时候也不行,所以建议直接使用下面的命令进行求解。 -
model.study(‘std1’).run;
作用:和上面的语句一样,执行研究1,但是可以没在数据集中设置解,执行也不会报错,只不过没有效果。 -
Fz = mphglobal(model,‘mfnc.Forcez_0’);
作用:将全局变量mfnc.Forcez_0 的值赋给Fz。
说明:只有在数据集中必须包含要求的解的时候才可以找到全局变量,即使建模时全局变量包含的参数,如果没设置解集,也没法使用这个方法找到改变量的值。
补充:发现求解后才能找到全局变量,即使是之前就设置的参数,如 d -
model.param.set(‘d’,‘20’);
作用:将参数d的值设置为20。
说明:不同于全局变量,只要模型的全局参数中包含的值都算参数,可以进行此设置。