引子
责其所难,则其易者不劳而正;补其所短,则其长者不功而遂(资治通鉴)
COMSOL是一个强大的多物理场仿真软件,容易上手,入门门槛低,便于对简单的模型进行计算。
我从2010年接触到现在,断断续续用它,用得越多越发现高级用法竟然是和其它软件相结合.
比如和MATLAB。
当你要使用参数化设置时,比如使用自定义的函数时行边界条件设定,
又比如使用复杂的模型的时候,
再比如进行后处理绘图时,
与MATLAB结合,更显强大。
事物发展的趋势就是多个优势结合,强强联合,而不是孤注一掷。个人觉得COMSOL这一点做得很好。
快速入门COMSOL with MATLAB
首推新浪博主天乐树的Comsol with Matlab Quick Started(1)这一篇博客非常全面,虽然讲的是COMSOL4.3,但它对COMSOL5.x版本依然值得参考。
除了没有谈到怎么安装的问题,其它都非常简洁实用。其实在启动前需要一个安装步骤,它没有啥好说的,因为COMSOL跨平台做得比较好,在windows下和linux/unix下安装唯一的一点区别就是前者双击setup.exe,后者在terminal里执行./setup,如果需要权限不够的话加一个sudo就好了。
你需要的内容的框架
Comsol with Matlab安装
Comsol with Matlab环境设置
基础命令
API调用方法
案例
- 建立随机几何模型
- 瞬态边界条件类型的改变
- 导出数据后处理
- 命令模式求解
资源清单
- 视频
一个入门案例是中仿科技视频介绍的建模流程
了解如何在 COMSOL Desktop® 的仿真设定中综合 MATLAB® 的功能。
此外,还介绍了如何在 MATLAB® 图形用户界面中对您的 COMSOL Multiphysics® 模型进行编程控制,以便执行个案研究及定制绘图和进行数据处理。
- 博客
安装
启动与导入模型
在windows下点击comsol with MATLAB就可以启动。linux/unix下在终端使用comsol server matlab就行,如果权限不够,使用sudo comsol server matlab就可以启动。可参考天乐树的第一篇博客几何建模
几何建模的基本命令
参考天乐树的第二篇博客利用matlab随机函数随机圆柱体填充到立方体的解决方案
参考天乐树的第三篇博客利用matlab和excel生成3000个三轴椭球体,
参考赤子桥的博客
http://blog.sina.com.cn/s/blog_a6c971960101gwn9.html
- 基础命令
以下命令是从COMSOL5.0的帮助文档里翻译过来的,可能有些不准确,希望大家自己去试一试。
界面函数 | |
---|---|
函数 | 功能 |
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 | 显示模型对象的错误或警告信息 |
(未完待续)