写在前面的话(可跳过):

CwM 我用的确实不多,但用好了事半功倍。本文只是个引子,仅作背景介绍。

很多筒子可能会抱怨,撒装的是低版本的Comsol,别人给汝的模型确实高版本的,那么正常途径撒肯定打不开这个文件。

其实,Comsol可以另存为M文件,这个文件实际上是一种录制宏,它几乎记录了你操作Comsol的每一个步骤(当然有例外)。

酱就好办了,侬导出一个M文件,交给别人,那么Ta只需要运行CwM,然后保存即可得到模型文件,酱模型文件小了很多,也方便交流。当然除这种方法外,还有别的办法,比如修改mph文件的信息,但不管怎么都不能保证版本间的兼容性。

不足:M文件类似于journal文件,所以过程结果是不会保存的,亦是无结果文件。M脚本属于解释型脚本,每一步都需要软件编译后执行,所以执行效率颇低。

本文使用Comsol 4.3b, Matlab

2013a,其他版本大部分雷同。

Comsol3.x用户的CwM 使用方法和4.x的完全不同,不在本文讨论范围。

另外Comsol3.5a用户比较悲摧,为保证CwM兼容性请选择Matlab2007b或之前版本,但也有兼容包,可以让其使用到Matlab2010左右。这不是本文重点,仅仅是友情提示。

应该罗嗦下的:

A. 启动

这并不是问题,但往往会成为初学者的障碍。

Win平台下,配置好Matlab的根路径,双击COMSOL 4.3b with MATLAB即可启动。

Mac/Unix下,同样陪着Matlab根路径,执行comsol server matlab即可启动。

首次启动

会提示输入 username 和

password

对于绝大部分用户,你随便填什么都可以,只要保证输入合法有效即可,win下可能有防火墙提示,允许即可。

启动后,你会看到启动的是Matlab的界面,不要犹豫,CwM它就长酱紫。

当initializing结束后,状态栏显示ready,那么就万事OK,只等来炊。

B. 更换工作路径

启动后,默认路径是%program files%\COMSOL\COMSOL的目录

建议更换个默认工作路径,以免文件弄的混乱

比如切换到

E盘work文件夹

Matlab直接输入

cd E:\work

当然还有其他更换路径的方法,这里不讲,自行解决。

正文:

介绍完以上,就可以开始一个Quick Started了

A.

模型导入

Comsol 模型导入到Matlab中,方法有2:

1.

使用命令 mphload

model = mphload(filename)

[model, filename] = mphload(filename)

比如:

model =

mphload(‘PATH\Mymodel.mph’)

注:如果不含路径,那么文件后缀名可以省略,前面model为变量名,可以任意指定合法变量名。

这样导入的模型对象对象名为

Model,如果想指定其他对象名,请用:

model2 =

mphload(Mymodel.mph','Model2');

2.

使用CwM+Comsol的GUI

这个需要打开CwM后,再打开一个Comsol普通窗口

在Comsol窗口中,File\Client Server\

先连接到CwM服务器 Connect to server 确定 此时会询问你 是否导入模型

export model to

server,然后执行

model = ModelUtil.model('Model')

注:

ModelUtil 大小写敏感,

‘Model’文件名和导出时设置的需要一致

当显示以下内容说明模型导入完毕!

model =

COMSOL Model Object

Name: MyModel.mph

Tag: Model

Identifier: root

这里需要注意一点,模型的文件位置应和当前Matlab的工作路径一致,否则会提示错误:

Java exception occurred:

Exception:

com.comsol.util.exceptions.FlException: Unknown model

Messages:

Unknown model

- Tag: Model

Stack trace:

at com.comsol.model.util.ModelInternalUtil.model(Unknown

Source)

at com.comsol.model.util.ModelUtil.model(Unknown

Source)

B.

模型保存/导出模型

1.

默认情况下,执行保存命令,保存的是MPH模型文件。

mphsave(model,'/filename');

如果想保存为M文件/Java文件,则执行:

mphsave(model,'/ filename.m');

mphsave(model,'/ filename.java');

此外可以使用

model.save

来保存,效果同上

model.save('filename');

model.save('filename','m');

2.

使用Comsol GUI 导入CwM中的模型

File\Client Server\Import Model from

Server

方法同导入,不再描述。

C.

显示导入的模型/移除模型

查看Comsol Server上的模型对象

ModelUtil.tags

移除模型对象

ModelUtil.remove(‘Model’)

移除所有模型对象

ModelUtil.clear

D.

几个重要的GUI函数

TUI总归冷冰冰,还是先介绍几个GUI函数吧!

COMSOL建模的思想很简单,定义常量、变量,几何创建,网格划分,定义物理模型,求解设定,后处理,导入/导出。那么如何查看几何、网格和结果呢?

1.

查看几何

mphgeom(model)

mphgeom(model, geomtag,…)

使用方法:

当需要调用某些属性或键值时,调用格式需要加上

geomtag

比如

将模型的边界设置为红色,面透明度为50%:

mphgeom(model, ‘geom1’,

‘Edgecolor’,’red’,’Facealpha’,0.5)

在当前坐标轴下绘制几何:

figure(2);

mphgeom(model, 'geom1','parent', gca);

属性及键值表:

属性

键值

默认值

备注

Parent

Double

自定义坐标轴

Selection

正整数数列

[1,2,…n]

选择

Entity

point

edge

boundary

domain

与Selection联用,选择指定的几何结构

Build

on | off

on

在绘制前创建几何

Edgecolor

Char

k

边颜色

Edgelabels

on | off

off

边标签

Edgelabelcolor

Char

k

边标签颜色

Edgemode

on | off

on

是否显示边

Facealpha

Double

1

面透明度

Facelabels

on | off

off

面标签

Facelabelscolor

Char

k

面标签颜色

Facemodel

on | off

on

是否显示面

Vertexlabels

on | off

off

节点标签

Vertexlabelscolor

Char

k

节点标签颜色

Vertexmode

on | off

off

是否显示节点

2.

查看网格

mphmesh(model)

mphmesh(model, meshtag,…)

方法和查看几何类似,不多说。

属性及键值表:

属性

键值

默认值

备注

Parent

Double

自定义坐标轴

Edgecolor

Char

k

边颜色

Edgelabels

on | off

off

边标签

Edgelabelcolor

Char

k

边标签颜色

Edgemode

on | off

on

是否显示边

Facealpha

Double

1

面透明度

Facelabels

on | off

off

面标签

Facelabelscolor

Char

k

面标签颜色

Facemodel

on | off

on

是否显示面

Vertexlabels

on | off

off

节点标签

Vertexlabelscolor

Char

k

节点标签颜色

Vertexmode

on | off

off

是否显示节点

Meshcolor

Char

flat

网格颜色

3.

查看求解过程信息

ModelUtil.showProgress(true)

4.

查看结果

mphplot(model, pgtag, …)

pd = mphplot(model, pgtag, …)

mphplot(pd,…)

属性及键值表:

属性

键值

默认值

备注

Colortable

String

Rainbow

颜色表

Index

正整数

1

pg中变量索引值

Mesh

on | off

on

是否画上网格

Parent

Double

自定义坐标轴

Rangenum

正整数

none

颜色表色域

Server

on | off

off

是否在Server上绘制

使用索引举例:

pg = mpheval_r(model, {‘T’,’u’});

mphplot(pg, ‘index’, 2)

关于建立pg,需要选择数据集,创建绘图类型和表达式等,举例:

pg =

model.result.create(‘surf1’,’surface’);

surf1.set(‘data’,’dset1’);

surf1.set(‘expr’,’ht.tfluxMag’);

5.

查看模型定义

mphnavigator

这个也算是个好东东,可以快速查看定义的模型。

E.

命令群

觉得Comsol 帮助档归类的不错,直接抄来

界面函数

函数

功能

mphcd

改变工作路径至模型路径,用法

mphcd(model)

mphdoc

返回帮助档

mphload

加载一个mph文件

mphsave

保存模型文件

mphstart

Matlab中启动Comsol Server

mphversion

返回COMSOL版本号

几何函数

函数

功能

mphgeom

画几何

mphimage2geom

转换image文件为几何文件

mphimage2geom(imagedata,level,…)

mphviewselection

高亮显示选择区域,注先标号,后类型

mphviewselection(model,geomtag,number,entity,...)

网格函数

函数

功能

mphmesh

显示网格

mphmeshstats

显示网格统计数据

应用函数

函数

功能

mphgetadj

返回邻居

mphgetadj(model,geomtag,returntype,adjtype,adjnumber)

mphgetcoords

返回几何坐标(注:是两个坐标系下的坐标,按列排列)

mphgetcoords(model,geomtag,entitytype,entitynumber)

mphgetu

返回解向量,即模块的自变量

U = mphgetu(model,...)

[U,Udot] = mphgetu(model,...)

type: Sol, Reacf, Adj, Fsens, Sens

mphinputmatrix

线性求解器中加入矩阵

mphinputmatrix(model,str,soltag,soltypetag)

mphmatrix

获取模型矩阵

str =

mphmatrix(model,soltag,'Out',{'A'},...)

mphselectbox

框选几何

mphselectbox(model,geomtag,boxcoord,entity,...)

mphselectcoords

点选几何

mphselectcoords(model,geomtag,coord,entity,...)

mphsolinfo

获取解对象信息

mphsolutioninfo

获取求解对象信息

mphstate

获取动态系统的状态-空间矩阵

mphxmeshinfo

抽取延伸网格信息

后处理函数

函数

功能

mpheval

计算节点表达式值

pd = mpheval_r(model,{e1,...,en},...)

mphevalglobalmatrix

计算全局矩阵变量

mphevalpoint

在几何节点上计算表达式值

mphglobal

计算全局量

mphint2

表达式积分运算

mphinterp

在任意点或数据集上计算表达式值

mphmax

表达式最大值

mphmean

表达式平均值

mphmin

表达式最小值

mphparticle

在颗粒迹线上计算表达式值

mphplot

绘制解

mphtable

获取表数据

模型信息及导航

函数

功能

mphgetproperties

获取模型属性

mphgetexpressions

获取模型变量和参数

mphgetselection

获取模型选区信息

mphmodel

返回模型对象

mphmodellibrary

GUI查看模型库

mphnavigator

GUI查看模型对象

mphsearch

GUI搜索模型对象表达式

mphshowerrors

显示模型对象的错误或警告信息

F.

结束:

本文主要介绍了如何去看模型及其附属信息,有了上面的内容做铺垫,下期对CwM建模做下分类介绍。

Mxio

2013.7.8

comsol 4.4 matlab,Comsol with Matlab Quick Started (1)相关推荐

  1. matlab 摄像头拍照,matlab摄像头拍照

    图像采集: 该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行 拍照并...在 MATLAB 中我们可以调用 im2gray 函数对图像进行灰度化处理. 4.2.2图像的...... 2 车辆牌 ...

  2. 【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)

    上篇博文分析了同一有限长序列在不同的N下的DFT之间的不同: MATLAB ]使用 MATLAB 作图讨论有限长序列的 N 点 DFT(强烈推荐)(含MATLAB脚本) 那篇博文中,我们通过补零的方式 ...

  3. 【 MATLAB 】使用 MATLAB 实现模拟信号的近似及其连续傅里叶变换

    严格来说,利用MATLAB是不可能用来分析模拟信号的.然而,如果有足够小的时间增量在足够细的栅格上对采样而产生一种平滑的图,并有足够大的时间来展示所有的模式,那么就能对模拟信号作近似分析.令是栅格间隔 ...

  4. 【 MATLAB 】使用 MATLAB 求由差分方程表示的滤波器的响应的两种方法

    例题: 一个3阶低通滤波器由下面差分方程描述: y(n) = 0.0181 x(n) + 0.0543 x(n-1) + 0.0543 x(n-2) + 0.0181 x(n-3) + 1.76 y( ...

  5. matlab中fdyn,Matlab的用法总结

    1. 对序列进行洗牌 randperm() randperm()产生随机的序列 %if filepaths 是一个5*1的结构体,then cshuffle = randperm(length(fil ...

  6. matlab 数学库,matlab数学函数库

    (n) 求 n 的阶乘 如何用 matlab 配方 没有发现 matlab 有这一命令,不过我们可以调用 maple 的命令,调用方法如下: 首先加载 maple 中的 student 函数库,加载. ...

  7. matlab字符衔接,matlab字符串连接(多个字符串)的经验,matlab字符串

    matlab字符串连接(多个字符串)的经验,matlab字符串 参考 matlab中字符串连接的3种方法  文章,实验遇到的一些小白问题,如有问题希望大神们给予指导. Matlab中,两个或多个字符串 ...

  8. matlab模块 python,Matlab 和Python结合使用

    今天介绍的内容比较基础,希望能达到抛砖引玉的效果. Matlab 和 Python 结合使用无非分为两种情形: Matlab中使用Python包: Python中使用Matlab. 1. Matlab ...

  9. Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示

    Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示 目录 输出结果 实现代码 输出结果 实现代码 %Brownian motion clf; n=20; s=0.02; x = rand ...

最新文章

  1. 下列关于python的说法中、正确的是-以下关于 Python版本的说法中,哪个是正确的?...
  2. find_in_set()和in()比较
  3. UG NX12.0安装教程
  4. wxWidgets:wxWidgets 中的 Unicode 支持
  5. 为决战5G时代,小米出手一点不含糊,接连招揽牛人,这次是曾学忠
  6. 凝结时光:ImageMagick 制作 gif
  7. JS Math.round()方法原理
  8. .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
  9. ssh图片上传 java_ssh上传并显示图片
  10. 数据挖掘—BP神经网络(Java实现)
  11. python len函数_Python 初学者必备的常用内置函数
  12. 【转】UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 1: invalid continuation 汉字编码
  13. Sentinel限流实战
  14. [转]项目中常用的19条MySQL优化
  15. 世界第4疯狂的科学家,在103岁生日那天去世了
  16. 在互联网寒冬,程序员能够做什么?
  17. 1.金融点滴 - 什么是做多、做空?国内股市为什么不能做空?
  18. Unit Of Measure UOM in Oracle Applications Inventory
  19. 想转行程序员,参加java培训班真的有用吗?
  20. Java操作Excel - Easy Excel

热门文章

  1. 【软考】系统集成项目管理工程师(十八)信息系统安全管理_part1
  2. js中单引号和双引号
  3. 模拟器多开换IP与电脑配置的关系
  4. 微信小程序表单框架01
  5. WEBGL 2D游戏引擎研发系列 第三章 正交视口
  6. Flutter 倒计时实现
  7. SpringMVC笔记-尚硅谷(杨博超)
  8. Android 持续集成实践(三)——编写 .gitlab-ci.yml 实现自动化
  9. 库卡机器人goto指令_KUKA机器人编程指令
  10. 专家谈房产两难:力图房价回归理性 担心地产崩溃