COMSOL

COMSOL与MATLAB是可以无缝连接的,有些图形化界面难以实施的操作可以通过MATLAB代码来实现。当我们通过MATLAB对COMSOL进行参数化扫描的时候,会发现随着时间的推移,内存会占用的越来越多,几乎是指数增加,如下图

具体如何绘制出这样一幅图可以见我的另外一片博客

我们只需要在每一次循环扫描的时候,都将模型释放掉再重新Load一遍,内存增长的速度就会慢很多,如下图所示

具体的代码大致如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
clear;clc;
import com.comsol.model.*
import com.comsol.model.util.*
ModelUtil.showProgress('comsol_progress_inten_1.txt');

% do some sweep here
for l=1:num

% load the model
% We will load the model for each loop to realese the RAM
model=mphopen('./FineMesh_IntenEnhan_bETheo_Px_Direct.mph');

% .................



% clear solutions
% this step is to avoid too manumy caches in ram
model.sol('sol1').clearSolution;
ModelUtil.remove('Model')

end

我们有时候在本地使用的时候,也会出现当你将模型加载进来之后即使删除变量还是不能删除本来的COMSOL文件的问题,这是因为COMSOL文件被Livelink占用造成的,我们只需要通过如下命令即刻释放,

1
2
3
import com.comsol.model.*
import com.comsol.model.util.*
ModelUtil.remove('Model')