comsol学习总结

0 评论

一、基础入门

有限元分析其实就是我们古代的化整为零‚曹冲称象,将复杂的整体离散化分析(离散逼近),其数学本质就是将复杂的数学函数离散成许多简单函数进行计算。

comsol 和所有有限元分析软件一样,基本操作无非是建模、定义材料、加边界条件、网格、计算、后处理:

1、建模:

建议大家使用专业画图软件,画好图保存成 comsol 支持的格式,再导入到 comsol中进行分析;其中 2 维模型,可以用 autocad 画好保存为 DXF 格式进行导入,其他三维软件直接保存就行,一般 comsol 都支持;

2、定义材料:

(1)使用 Comsol 默认的材料库,找到所需材料添加即可;

(2)选择材料本质就是定义分析模型的物理化学性质,所以根据不同分析定义不同性质即可,如结构力学分析一般是定义弹性模量、泊松比、密度等;

3、定义边界条件:

这一步较为关键,大家可以仔细研读 comsol 提供的边界条件(‘物理量’菜单下),当然你添加的物理场不同,系统默认的边界条件是不同的;如结构力学中,需要添加约束、载荷等,热分析需要添加温度载荷、绝热、传热、对流边界等等。大家可以根据自己的领域查阅些资料。

4、网格划分:

如果大家对分析结果的要求不是十分苛刻,网格划分使用 comsol 默认的自动划分网格即可,调整下尺寸大小就行。Comsol 的网格划分功能欠佳。

5、求解(study):

如果单物理场还好说,多物理场就涉及到哪个场影响哪个场了,和研究的专业知识紧密相关,设置起来也比较难(这也是 comsol 主打的方向),卖家也在研究中,后面的‘三’ 会介绍一些耦合的知识。

6、后处理:

可以输出一些图像、数据、表格等等,这一步也比较重要,但是不难,大家可以多试试每个按钮的功能即可。

三、多物理场耦合知识简介:

我们面临工程实际问题其实都不是在单一物理场下的,都是多个物理场相互作用相互影响的,只不过以前科学水平有限,我们只能简化一些物理场只考虑主要的物理场影响,设置一些假设来对问题进行分析,这样难免会有误差。所以现在不管是科研院所还是企业研发,都将重点

放在了多物理场的分析。多物理场耦合根据各个场的相互作用,相互影响的紧密程度可分为弱耦合和强耦合。

举个例子说明下弱耦合和强耦合:

比如电水壶烧水,通电、交流电加载在加热装置、电变热、热传递到流体水中,这个问题线性度就较高:首先是电场分析,电功率、加热装置阻值、电流做功等;其次是热场, 加热装置是热源、需要知道热导率、热容、密度等;最后是流场,温升引起水的对流,同时水与外界有热量交换,水的热容也影响温度分布,因此流场反过来又影响到了温度场;所以,电场和温度场流场之间是弱耦合,因为作用是单向的,电场影响后两者,而后两者并没有影响电场;而温度场和流场之间就是强耦合了,他们相互影响相互作用。

 

1、弱耦合解法:

各个物理场相互作用程度、之间的联系较松散,数学实质是方程系统线性度较高。

解法:去耦合解法,即将多物理现象分解成一个一个单物理场,一次按照‘二‘中步骤进行求解,在求解 study 菜单下设置也比较简单,只用将上面物理场的计算结果当下面场的条件就行。

2、强耦合解法:

各个物理场相互作用程度、之间的联系较紧密,数学实质是方程系统非线性度很高。

解法(只能):全耦合解法,有三种:将非线性问题通过材料属性体现、通过求解域的几何变化实现、通过边界条件的变化实现.

二、使用技巧

1、设置旋转体:

Comsol不像 ansys那样有设置旋转速度这个按钮,而只有指定速度的按钮,但我们可以通过指定速度按钮,间接的来设置旋转速度。比如一个圆形,我们可以指定速度,设置它:选择外边界:x 方向线速度为 V_x=w*r*x, y 方向线速度为 V_y=-w*r*y ,其中 w为角速度,r 为半径(本设置的前提是圆形圆心在坐标原点,如果不是可以调节 x、y加减数)这样,我们就间接的设置了旋转物体的速度了

2、形成联合体/装配体:

在 comsol 中如果把组合体改为装配体,其实就是 2 个模型,网格都不一样,数据没法导入;接触对主要在结构力学模块中用于摩擦,组合体各种物理量在结合处连续,装配体不是;形成装配体一般是用于有相对运动的问题,而其他情况多选用形成联合体;

3、映射网格的使用:

几何必须很规则:

• 每个子域必须至少有四段边界。

• 每个子域必须只能有一组相连的边界限制,也就是中间不能存在其他模型或小孔。

• 子域必须包含单独的顶点或单独的边界。

• 每个子域的形状不能和矩形相差太大。

4、耦合的两种设置方式:

比如电热强耦合:在热的物理场中要耦合电,

(1).可以右击选热源广义热源进行耦合,用户定义输入 ec.Qh

(2).右击多物理场选电磁热源即可;

强耦合:温度反过来影响电导率,在边界条件设置时可以选择线性电导率,系统默认的有电导率和温度的关系表达式;如果没有,在参数定义的表达式中定义两参数之间的关系表达式。(这种强耦合的解法就是我在总结 1 中提到的通过设置材料属性来求解的方法)

5、覆盖:

覆盖就是说现在的设置覆盖了前面的同类型设置,只有后面的这个设置起作用,前面的设置被后面的覆盖了,不起作用了。

如果选择框里有显示覆盖的字眼,往下看设计树图标中有朝上的红色小三角的图标都是覆盖该选择框的选项;同理如果点某个图标,上面某个图标显示的有向下的红色小三角,说明该选项中某个边界覆盖了上面的选项。

7、参数化扫描:

假如你要求解的变量不是定值而是一组变量的话,利用求解中的参数扫描的方式,一个模型就可以获得所有的结果。

例如,传热中,我想将模型的边界的温度设为 T=10、20、30℃……..,常规求法是温度多少个值即要分别求解几次。如果利用参数化扫描,将温度设为扫描参数,输入要选取的温度所有的值,利用参数扫描就能把所有结果在一个模型中显示而且有利于结果的比较。

8、comsol内置参数表:

Comsol内置了许多表达式方便大家调用。

9、Matlab和 comsol连接:

comsol与 matlab有非常好的接口,如果电脑上有 matlab的话再安装 comsol一般都会有一个 COMSOL XXwith MATLAB。再点击这个图标会打开 matlab,如果安装成功的话,matlab命令窗口没有红色字母(但大多时候会出错,这时可能性最大的原因是 comsol和 matlab的版本不对应,通常来说comsol和matlab的版本发布年份应该相近才能连接成功,如matlab2013与 4.4和 5.2都能连接成功,但是与 3.5就连不上);如果 with matlab没有出错,这时再打开 comsol-文件-连接到服务器,就可以和 matlab连接了。comsol自身是不能输入命令的,和 matlab连接后,matlab的功能相当于 ansys的命令流,在 comsol 中的每一步操作,在 matlab 中都可以转换为相应的命令;cosmol可另存为.m文件,在 matlab中打开.m就知道刚才所有的操作了,如果 comsol中操作一次,就在 m文件中查看一次,那么也就对应的知道每一条命令的语法了。

例如,进入空模型后的所有命令:

import com.comsol.model.*

import com.comsol.model.util.*

model = ModelUtil.create(‘Model’);

model.modelPath(‘D:\Program Files\MATLAB\halleyhit’);

model.modelNode.create(‘mod1’);

model.geom.create(‘geom1’, 3);

model.mesh.create(‘mesh1’, ‘geom1’);

model.physics.create(‘es’, ‘Electrostatics’, ‘geom1’);

cosmol与 matlab连接的意义:

1.可以用 matlab 的命令做一下事情,如用 for 循环添加一些重复的边界条件或画大量重复的图形;

2.用 matlab的一些模块做些事情,如与 simulink进行联合仿真。

10、压力点约束

流体模型中,所说的压力一般指压力差而非绝对压力,为了提高流体模型计算的收敛性,需要引入一个压力参考点来提高收敛性,这个参考点的位置可以是任意的。所以在很多仿真案例中,可以看到设定一个入口速度,一个出口压力为零。事实上,如果外界压力为一个大气压,流道内的真实压力值就得在计算结果上加上一个大气压。如果没有定义压力边界,这意味着全域中没有合适的能够作为压力降计算的基准点。从某种意义上来讲,这种计算应该是有无穷多解的,因为你可以得到很多组合适的相对压力降满足条件的结果。这样一来,求解器会很不容易得到收敛解。所以在这种情况下,有时候我们就添加一个压力约束点,把它作为一个基准点来进行仿真,得到一个特解

11、后处理只显示模型某部分的计算结果:

计算结果数据是存在 结果(result)的数据集中,可以提取数据集中的解或者一部分解如某个平面的解(数据集-右键-选择),在后续的绘图组进行部分显示;

12、圆角的使用:

为避免网格比较尖锐,提高求解稳定性,通常在直角部位画上圆角。

13、方程视图

如果需要知道所有物理场所有边界条件的底层方程,可以点击 设计树中模型开发器下面一行显示—方程视图;

14、探针

定义—探针,可以对某个点的结果进行研究;

15、稳态瞬态求解器:

如果模型不需要考虑时间因素,只要最终系统稳定后的结果,那么用稳态求解器;如果模型需要考虑时间因素,研究过程中某个时间点或时间段的状态,则用瞬态求解器;瞬态求解可以将时间段分开成几段来求解,从而加快求解速度:

【 range(0,0.1,1) range(1,2,10) 】 (0-1秒步长较小,1-10步长较大)

16、求解器中的误差

迭代求解停止的标准取决于误差估计,检测相对剩余时间稳定常数β是否小于容许值。该容许值设定于“相对容差”界面,是该求解器所属的操作特性。(有时对结果要求精度不高,可以将相对容差设置的大点,减少不收敛的情况)

① 误差估计因子。用于设定β,设定一个安全因子避免过早的迭代终止,如矩阵 A的病态或较差的预处理所引起的。较大的β值将增加跌代数,但降低了迭代过早停止的可能性。

② 最大迭代数。用于指定允许迭代器允许的最大迭代数量。当迭代次数已经达到但尚未达到指定容差时,求解器自动停止并出现错误提示。

17、网格:

(1)comsol默认的网格是四面体,如果需要六面体网格可用 扫掠,选择四边形;

(2)四面体网格和六面体网格(转):

在 COMSOL 中使用六面体和棱柱单元的主要原因是,它们可以极大地降低网格中的单元数。这些单元可能有极高的纵横比(最长边对最短边的比例),而用于创建四面体网格的算法则会尽量保持纵横比趋于统一。当您知道解在特定方向上会逐渐变化,或者您对这些区域中的精确解并不感兴趣,因为您知道感兴趣的结果在模型的其他位置时,使用具有高纵横比的六面体和棱柱单元将较为合理;

总之,当剖分线性静态问题时,应记住以下一些事项:

如果可能,请使用四面体网格,它们对用户交互的要求最低,并支持自适应网格细化;

如果知道解在一个或多个方向上变化缓慢,则应在这些区域使用带有较高纵横比的六面体或棱柱网格;

如果几何包括薄层材料,应使用六面体或棱柱,或考虑使用边界条件来代替始终执行

网格细化研究,并在细化网格时随时监控内存要求以及解的收敛;

(3)网格细化:

增加尺寸—选择要细化的边界、点—-修改最大单元尺寸、最大单元生长率

相关软件
COMSOL Multiphysics® 是一款适用于各个工程、制造和科研领域的通用仿真软件。软件提供了模拟单个物理场、灵活耦合多个物理场,以及仿真 App 开发、模型管理等工具,附加产品 COMSOL Compiler™ 和 COMSOL
相关阅读