找回密码
 注册
Simdroid-非首页
查看: 2311|回复: 40

[15.分享让我牛B] COMSOL4及链接Matlab使用心得!

[复制链接]
发表于 2010-8-26 14:48:22 | 显示全部楼层 |阅读模式 来自 安徽芜湖
本帖最后由 kyolee 于 2010-8-26 16:34 编辑

试用COMSOL V4.0a差不多有一个月时间了,其中感触最深的是COMSOL 和Matalb的链接及二次开发问题。由于V4的变化很大,这期间出现了很多问题,经过努力,基本都已解决。现在基本上是习惯了V4.0a的架构了。故写下一点使用心得,希望对大家有所帮助。

首先,COMSOL V4.0a的改进还是很大的,例如在后处理、参数化扫描等做有很大的改进!所以,希望大家试用!

由于COMSOL V4 .0a 和Matalb链接发生了很大的变化,而且COMSOL的M文件函数库也发生很大的变化,这次就重点讲解下这两个问题。

第一个问题:如何连接?

现在的COMSOL desktop和Matlab 几乎没有关系了,和Matalb有关系的只有COMSOL server。所有的M文件的语句都是在Server上运行。

这样一来,进行二次开发的途径有二种。

1. 在desktop里面建模,保存为m文件。之后, 启动COMSOL with Matlab, 打开m文件,然后你就可以根据你的需要修改代码、参数扫描之类的了。这一切都和desktop没有关系了。

2. desktop和COMSOL with Matlab 都保持打开。在desktop中建模,使用export model to server, 将模型导入server中;然后在Matalb中调用model(就是以前的fem结构体),语句如下:model = modelUtil.model('model1')  (这里的model1 是你export时候,叫你输入的模型名),然后你也可以进行后操作了。

对两种方法进行一下比较:
使用第一种方法,m文件很多行(包含了建模,网格剖分等等一切过程),而使用第二个方式的话,在你导入model1的时候这些过程都已包含在内,直接可以进行编写二次开发的代码了,这样一来, m文件清楚并简洁!
而且使用第二种方式,当想改你的model的时候,可以直接在desktop中修改,然后继续export,他会覆盖掉前一个导出的model(导出名相同的情况下)。


第二个问题: 函数变化情况?

试用过V4的应该知道,V4的M文件变化最大的就是函数的变化,以前很多函数,现在被分成了几类,建模类,物理场类,网格类,后处理类等。
在每一类中,又包含有很多函数,其中大部分函数是帮助文档中没有的,可以通过m文件中的自动补全命令显示,但是不知道是干什么用的。 这也是学习m文件的最大难点了。我觉得以后帮助文档可能会增添这一类的说明的。 不用不影响使用,最常用基本的几类函数,在帮助文档中是介绍的很详细了。


第三个问题:M文件中如何提取数据?

现在的M函数是一整套的封装式的了。之前想在3.5a版本中的本征值问题可以用以下语句提取出来: e = fem.sol.lambda(: ) ,但是在4.0a中时,发现找不到这一类的变量。但是可以通过以下语句来实现:

1. 使用
ereal = model.sol(solname).getPVals  %返回实数部分
eimg = model.sol(solname).getPValsImag %返回虚数部分
(这两个函数就是上面所述的帮助文档没有的,在m文件中用tab键,命令补全显示出来的。)

2. 使用 mphglobal 这个命令,这是提取全局变量数据的命令;
比如 mphglobal(model, 'lambda');  这里lambda可以任何表达式,也可以数学运算式子。如: mphglobal(model, '(-i*lambda)./(2*pi)‘);

Best wishes!

Kyo

评分

2

查看全部评分

发表于 2010-8-26 14:56:05 | 显示全部楼层 来自 上海
Simdroid开发平台
支持斑竹的心得贴,希望大家一起努力!
回复 不支持

使用道具 举报

发表于 2010-8-26 14:58:20 | 显示全部楼层 来自 湖北武汉
看了还是有点乱
回复 不支持

使用道具 举报

发表于 2010-8-26 15:05:20 | 显示全部楼层 来自 黑龙江哈尔滨
感觉说得语无伦次,没说清楚,希望修改下,简单点,清楚点。
回复 不支持

使用道具 举报

发表于 2010-8-26 16:19:44 | 显示全部楼层 来自 浙江杭州
comsol with matlab具体要怎么弄?版本有什么限制?
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-26 16:35:47 | 显示全部楼层 来自 安徽芜湖
4# TBE_Legend

按版主要求,整理了一下。不知道说清楚了没,要是觉得有哪里没说清楚的,请留言!
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-26 16:37:33 | 显示全部楼层 来自 安徽芜湖
5# fzjincao

COMSOL with Matlab 是你安装好了之后有的一个命令。可以同时打开COMSOL server 和Matlab。
回复 不支持

使用道具 举报

头像被屏蔽
发表于 2010-8-30 09:03:04 | 显示全部楼层 来自 广东广州
提示: 该帖被管理员或版主屏蔽
回复 不支持

使用道具 举报

发表于 2010-8-30 13:58:48 | 显示全部楼层 来自 上海
总之一句话,现在统统是封装起来的对象,参考对象编程模式软件的调用方法就可以调用和编程了。
回复 不支持

使用道具 举报

发表于 2010-9-1 16:48:04 | 显示全部楼层 来自 湖北武汉
现在的偏微分方程形式是不是不想以前的版本可以看到了?
回复 不支持

使用道具 举报

发表于 2010-9-1 17:35:03 | 显示全部楼层 来自 湖北武汉
现在的偏微分方程形式是不是不想以前的版本可以看到了?
回复 不支持

使用道具 举报

发表于 2010-9-2 11:29:03 | 显示全部楼层 来自 甘肃兰州
其实我觉得V4.0比以前的版本更加直观了,只是大家不太习惯现在的版本而已,就好比是用惯了windowsxp,刚去用win7的感觉差不多
回复 不支持

使用道具 举报

发表于 2010-10-9 11:25:29 | 显示全部楼层 来自 大连理工大学西山生活区
我用4.0关联matlab2009b,按照楼主的方法1怎么不可以呢?保存成.m文件之后出错
??? Java exception occurred:
Exception:
        java.lang.NullPointerException
        (rethrown as com.comsol.util.exceptions.FlException)
Messages:



Stack trace:

        at com.comsol.model.impl.GeomSequenceImpl.a(Unknown Source)

        at com.comsol.model.impl.GeomSequenceImpl.resolveObjectNames(Unknown
    Source)

        at com.comsol.model.impl.GeomObjectSelectionImpl.a(Unknown Source)

        at com.comsol.model.impl.GeomObjectSelectionImpl$g.a(Unknown Source)

        at com.comsol.model.impl.GeomObjectSelectionImpl$g.execute(Unknown
    Source)

        at com.comsol.model.clientserver.ClientManagerImpl$b.call(Unknown
    Source)

        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

        at java.util.concurrent.FutureTask.run(Unknown Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
    Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

        at java.lang.Thread.run(Unknown Source)


Error in ==> thichplate at 51
model.geom('geom1').feature('wp1').geom.feature('dif1').selection('input').set({});
>>
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-9 12:13:58 | 显示全部楼层 来自 江苏南京
13# michealniu
4.0是存在这个问题,具体解答参见论坛关于4.0 with matlab的帖子1
回复 不支持

使用道具 举报

发表于 2010-10-10 10:35:10 | 显示全部楼层 来自 美国
试用COMSOL V4.0a差不多有一个月时间了,其中感触最深的是COMSOL 和Matalb的链接及二次开发问题。由于V4的变化很大,这期间出现了很多问题,经过努力,基本都已解决。现在基本上是习惯了V4.0a的架构了。故写下一点使 ...
kyolee 发表于 2010-8-26 14:48

"export model to server" 这个在哪里啊?是在file菜单下面吗?可我没看到啊,只看到connect to server
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-10 10:59:17 | 显示全部楼层 来自 江苏南京
15# shoney

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-10 14:40:21 | 显示全部楼层 来自 江苏南京
11# txj_y
4.0好像不可以修改,4.0a据说已经可以了。我还没用到。呵呵
回复 不支持

使用道具 举报

发表于 2010-10-10 17:12:26 | 显示全部楼层 来自 湖北武汉
请问楼主
在4.0a给出的实例“Step_index_fiber”的是实例中怎么输出comsol数据“Effective mode index”,还有输出的画图txt文件有三列数,分别代表什么意义
回复 不支持

使用道具 举报

发表于 2010-10-10 21:08:23 | 显示全部楼层 来自 湖北武汉
可以了,谢谢楼主
回复 不支持

使用道具 举报

发表于 2010-10-10 22:18:29 | 显示全部楼层 来自 美国
15# shoney 265262
kyolee 发表于 2010-10-10 10:59

我怎么没看到这个选项啊?奇怪了
需要有什么设置吗?
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-27 19:20 , Processed in 0.067957 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表