comsol 4.4 matlab,Comsol with Matlab Quick Started (1)
写在前面的话(可跳过):
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)相关推荐
- matlab 摄像头拍照,matlab摄像头拍照
图像采集: 该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行 拍照并...在 MATLAB 中我们可以调用 im2gray 函数对图像进行灰度化处理. 4.2.2图像的...... 2 车辆牌 ...
- 【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)
上篇博文分析了同一有限长序列在不同的N下的DFT之间的不同: MATLAB ]使用 MATLAB 作图讨论有限长序列的 N 点 DFT(强烈推荐)(含MATLAB脚本) 那篇博文中,我们通过补零的方式 ...
- 【 MATLAB 】使用 MATLAB 实现模拟信号的近似及其连续傅里叶变换
严格来说,利用MATLAB是不可能用来分析模拟信号的.然而,如果有足够小的时间增量在足够细的栅格上对采样而产生一种平滑的图,并有足够大的时间来展示所有的模式,那么就能对模拟信号作近似分析.令是栅格间隔 ...
- 【 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( ...
- matlab中fdyn,Matlab的用法总结
1. 对序列进行洗牌 randperm() randperm()产生随机的序列 %if filepaths 是一个5*1的结构体,then cshuffle = randperm(length(fil ...
- matlab 数学库,matlab数学函数库
(n) 求 n 的阶乘 如何用 matlab 配方 没有发现 matlab 有这一命令,不过我们可以调用 maple 的命令,调用方法如下: 首先加载 maple 中的 student 函数库,加载. ...
- matlab字符衔接,matlab字符串连接(多个字符串)的经验,matlab字符串
matlab字符串连接(多个字符串)的经验,matlab字符串 参考 matlab中字符串连接的3种方法 文章,实验遇到的一些小白问题,如有问题希望大神们给予指导. Matlab中,两个或多个字符串 ...
- matlab模块 python,Matlab 和Python结合使用
今天介绍的内容比较基础,希望能达到抛砖引玉的效果. Matlab 和 Python 结合使用无非分为两种情形: Matlab中使用Python包: Python中使用Matlab. 1. Matlab ...
- Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示
Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示 目录 输出结果 实现代码 输出结果 实现代码 %Brownian motion clf; n=20; s=0.02; x = rand ...
最新文章
- 下列关于python的说法中、正确的是-以下关于 Python版本的说法中,哪个是正确的?...
- find_in_set()和in()比较
- UG NX12.0安装教程
- wxWidgets:wxWidgets 中的 Unicode 支持
- 为决战5G时代,小米出手一点不含糊,接连招揽牛人,这次是曾学忠
- 凝结时光:ImageMagick 制作 gif
- JS Math.round()方法原理
- .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
- ssh图片上传 java_ssh上传并显示图片
- 数据挖掘—BP神经网络(Java实现)
- python len函数_Python 初学者必备的常用内置函数
- 【转】UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 1: invalid continuation 汉字编码
- Sentinel限流实战
- [转]项目中常用的19条MySQL优化
- 世界第4疯狂的科学家,在103岁生日那天去世了
- 在互联网寒冬,程序员能够做什么?
- 1.金融点滴 - 什么是做多、做空?国内股市为什么不能做空?
- Unit Of Measure UOM in Oracle Applications Inventory
- 想转行程序员,参加java培训班真的有用吗?
- Java操作Excel - Easy Excel