Daniel1985的个人博客分享 http://blog.sciencenet.cn/u/Daniel1985

博文

"IntroductionToLiveLinkForMATLAB"帮助文档的翻译和个人看法

已有 8762 次阅读 2013-3-17 10:51 |个人分类:MATLAB/COMSOL|系统分类:科研笔记| MATLAB, COMSOL, 帮助文档

COMSOL 4.3 with MATLAB (for win7)


程序相关的帮助文件可参考如下获取方式:
开始菜单 > COMSOL 4.3 > Documentation > livelink to MATLAB

没找到的话,可以自行下载


以下是启动的一些要点。

1启动 COMSOL 4.3 > File > Client Server > Connect to Server > 填写用户信息

2如果通过合适的安装步骤之后,桌面上就会出现 COMSOL 4.3 with MATLAB,点之;
若链接成功,在启动MATLAB的同时,会出现一个题为“COMSOL 4.3 with MATLAB”的黑框,其中会显示你步骤1的用
户信息;为了保证正常使用,最好改变COMSOL和MATLAB的工作目录,使两者一致,且地址为英文。

3通过 model=ModelUtil.create('Model') 创建一个模型Model。
(由于用COMSOL with MATLAB 完全可以独立建模,所以以下 3 - 5 步骤可不必打开COMSOL。)
4model.name('busbar');
定义model name (这里的 name 定义,只为了后处理使用)

5模型参数定义,几何建模等均可以通过从COMSOL建模后‘另存为 M文件  ’ 的方法,快速获取这些代码,稍微普及一下面向对象的语法就可以读懂其中的设置。值得注意的是,由于 COMSOL 的参数均已字符串的格式读入程序再进行转化的,所以在编写的过程中,无论是变量名,具体数值value等,都用加单括号。
***********************************************

mphgeom 命令用于“显示”所画的几何图形

e.g. mphgeom(model); or mphgeom(model,'geom1');

model 是步骤3 所定义的变量名

****************************************************************************

geom1 = model.geom.create('geom1',3);  (变量名一般在create的方法语句中定义)

... (变量名一般在create的方法语句中定义 这里忽略中间建模部分)
geom1.run; 命令相当于 COMSOL 中的 build all

*****************************************************************************

定义组件的方法
e.g.
sel1 = model.selection.create('sel1');
sel1.set([2 3 4 5 6 7]);
sel1.name('Ti bolts');

************************************************

材料定义一般顺序:
e.g.
mat1 = model.material.create('mat1');
mat1.materialModel('def').set('electricconductivity', {'5.998e7[S/m]'});
mat1.materialModel('def').set('heatcapacity', '385[J/(kg*K)]');
mat1.materialModel('def').set('relpermittivity', {'1'});
mat1.materialModel('def').set('density', '8700[kg/m^3]');
mat1.materialModel('def').set('thermalconductivity', {'400[W/(m*K)]'});
(其中 赋值 中有的用大括号——感觉是允许输入多值,
有的用没有大括号——感觉只允许输入单值)

mat1.name('Copper');

mat1.selection.named('sel1');(引用了上面的组件变量名)

******************************************************************

mphgeom(model,'geom1','facemode','off','facelabels','on');

显示面号

*****************

划分网格一般流程

mesh1 = model.mesh.create('mesh1', 'geom1');
size = mesh1.feature('size');
size.set('hmax', 'mh');
size.set('hmin', 'mh-mh/3');
size.set('hcurve', '0.2');
ftet1 = mesh1.feature.create('ftet1', 'FreeTet');

mesh1.run;

mphmesh(model)

*****************

求解一般流程
std1 = model.study.create('std1');
stat = std1.feature.create('stat', 'Stationary');

ModelUtil.showProgress(true)(显示求解进度条,默认为不显示)

std1.run;

*****************************************************************

后处理一般流程
e.g.1

pg1 = model.result.create('pg1', 'PlotGroup3D');
pg1.feature.create('surf1', 'Surface');

(surface输出及部分设置 少定义了'expr'的属性值 代表取的是默认值)

pg1.feature('surf1').set('rangecoloractive', 'on');
pg1.feature('surf1').set('rangecolormin', '322.6');
pg1.feature('surf1').set('rangecolormax', '323');

mphplot(model,'pg1','rangenum',1)(显示云图 rangenum表示数据范围的显示类型)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

e.g.2

pg2 = model.result.create('pg2', 'PlotGroup3D');
pg2.feature.create('surf1', 'Surface');
pg2.feature('surf1').set('expr', 'jh.normJ');
pg2.feature('surf1').set('rangecoloractive', 'on');
pg2.feature('surf1').set('rangecolormax', '1e6');
pg2.set('title', 'Current density norm (A/m^2)');
mphplot(model,'pg2','rangenum',1);
**************************************************

输出结果一般流程

data1 = model.result.export.create('data1', 'Data');
data1.setIndex('expr', 'T', 0);
data1.set('filename','filepathTemperature.txt');
data1.run;

****************************************************

保存模型一般流程

model.save('<path>/busbar');

(如果不指定目录 则模型默认保存在启动目录
且默认是 mph 文件, 而不是 m 文件)

model.save('<path>/busbar','m');

********************************************


6COMSOL 模型导出到 MATLAB

同时打开 COMSOL 和 COMSOL with MATLAB
打开 COMSOL 已经建立好的模型 > File > Client Server > Export Model to Server
此时需要填一个 Model 的名字,该名字用于在 MATLAB 中提取用
这样,模型就算是保存在 COMSOL 的 server 上了 可以供 MATLAB 调用
在 COMSOL with MATLAB 中通过 e.g. model= ModelUtil.model('Busbar'); 调用
这里 Busbar 就是上述导入 server 时候的 model 名

7MATLAB 模型导入 COMSOL

打开 COMSOL with MATLAB 按步骤5 那样正常建立模型
e.g.
model = ModelUtil.create('ImportExample');
model.geom.create('geom1', 3);
model.geom('geom1').feature.create('blk1', 'Block');
model.geom('geom1').run;
...
打开 COMSOL > File > Client Server > Import Model from Server
在 Model 名字框里输入 MATLAB 建立的 MODEL 名,例如 ImportExample

通过 ModelUtil.tags 命令可以实现查看在 server 里存的模型列表

(注意: 用这种方法导入 COMSOL 之后,如果在 COMSOL 中有所修改,必须反馈到server中,供 MATLAB 调用)


8通过 COMSOL 保存成 m 文件,m 文件一般会保存很多操作的记录,相当一部分是没有用的
所以应该通过 File > Reset History 操作,然后再 保存 m 文件

注意:打开这个模型有两种方法

a 在 COMSOL with MATLAB 命令窗口运行命令 model = busbar; 提取,
 其中busbar是 m 文件名 并非模型名字。此导入时,需要先运行整个模型一次。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
b 在 COMSOL 中,通过上述 6 的方法,把模型“放”到server,然后通过 COMSOL with MATLAB 调用。

上述两种方法的区别在于:方法a,可以说“独立于”COMSOL,因为没有通过server“交接”,但需要单独重新运行程序;而方法b,需要借用server提供接口,但其模型不需要重新求解,可以直接调用使用。

9在 COMSOL with MATLAB 中提取快速提取模型(mph格式)参数和结果

打开  COMSOL with MATLAB

model = mphload('busbar');
(此处的 busbar 是 busbar.mph 中的文件名,软件自动从COMSOL预先设置的目录中搜索该文件,
当然可以指定地址下的mph文件,详情可以看帮助文件 LiveLinkForMATLABUsersGuide 。)
之后可以利用 mpheval,mphinterp,mphglobal,mphint等命令。

10通过
model=mphload('busbar');
mphnavigator

可以看到模型的信息导航

11改变模型参数

方法1
e.g.
model=mphload('busbar');
mphplot(model,'pg2','rangenum',1);
model.param.set('L','18[cm]');
model.sol('sol1').run;
mphplot(model,'pg2','rangenum',1);
(改变后量纲要与改变前的量纲要一致)


方法1'(个人推荐)
e.g.
L0 = 9e-2;
model.param.set('L',L0);
model.geom('geom1').run;
mphgeom(model,'geom1')

方法2
e.g.
友情提示: 通过 mphnavigator 命令得到的 Model Tree 底部有个对变量的 address
通过 copy 可以直接在 MATLAB 中赋予变量/对象名,之后对应添加属性和方法即可。
e.g.
r1 = model.geom('geom1').feature('wp1').geom.feature('r1');
H1 = 0.2;
r1.set('ly', H1);

(mphproperties 可以用来获取模型特征的属性和取值。)

方法3
用字符串的形式改变参数
e.g.
L0 = 0.1;
r1.set('ly',L0)
r2.set('ly',[num2str(L0) '-tbb']);
model.geom('geom1').run;
mphgeom(model,'geom1');




https://blog.sciencenet.cn/blog-626917-671038.html

上一篇:python 语言在abaqus中的应用总结
下一篇:COMSOL with MATLAB 帮助文件例子
收藏 IP: 113.140.84.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 14:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部