COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx

上传人:b****5 文档编号:15812264 上传时间:2022-11-16 格式:DOCX 页数:36 大小:293.76KB
下载 相关 举报
COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx_第1页
第1页 / 共36页
COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx_第2页
第2页 / 共36页
COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx_第3页
第3页 / 共36页
COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx_第4页
第4页 / 共36页
COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx

《COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。

COMSOLMULTIPHYSICS和数值分析报告Word文件下载.docx

而且,扩展化工问题的数值分析也已经在POLYMATH[1]中实现,这似乎只在化工委员会的CACHE工程中使用过。

本书前一版已经介绍过在零维空间中求解非线性代数方程和与时间有关的常微分方程的内容。

从概念上讲,零维域就是一个简单的有限元。

通过研究某一特定有限元中的变化对理解有限元方法非常有用。

但是,COMSOLMultiphysics通过独立对话框设置,使得零维几何方程和与时间相关的常微分方程求解变得非常简单。

所以本章将同时采用这两种方法求解这些例子。

2.方法1:

求根

典型的数值分析课程会讲解多种求根方法,但是从实际经验来看,只有两种算法非常有用——二分法和牛顿法。

我们这里没有列出所有方法,而是重点考虑为什么求根是最有效的数值分析工具。

在线性系统中求根非常简单,但是对于非线性系统这就是一个挑战,而所有感兴趣的动力学问题几乎都是非线性系统。

对非线性系统的求根起源于对反函数的描述。

为什么呢?

因为对于大多数非线性函数,“正向”y=f(u)很好表示,但是它的反函数u=f--1(y)可能不能显式表示、多值(无意义)或根本不存在。

如果反函数存在的话,求解反函数其实就是求根的过程——求解满足F(u)=0的u等价于求解F(u)=f(u)-y=0。

因为大多数数值分析的目标是在系统约束下计算求解,所以这也等价于对所有的约束取反。

COMSOLMultiphysics拥有求解非线性问题的核心函数——femnlin,本节主要介绍用它求解零维非线性问题。

femnlin函数使用牛顿方法求解,由于只有一个变量u,牛顿法通过对一阶倒数

迭代来求根。

该方法首先估计函数的斜率范围,然后再逼近根。

该斜率可以通过理论分析(牛顿-拉夫逊方法)和数值(正割法)方法求得。

如果能用任何一种方法求得斜率,就可以用泰勒定律来逼近根。

其基本思想就是使用目前猜测值u0的泰勒展开式:

(1)

该公式可以化简,忽略(u-u0)的高阶项,计算根如下:

(2)

这个方法可以快速地扩展到多维求解空间,例如将u看作未知矢量,“被

除”看作“乘以f的雅克比矩阵的逆”。

下一节介绍COMSOLMultiphysics中的求根过程。

2.1求根:

COMSOLMultiphysics非线性求解器的应用实例

如上节所述,求根本身是一个“零维”活动,至少对于“空间-时间”系统多维未知矢量u来说是这样的。

COMSOL多物理场没有零维模式,所以我们临时采用一维模式。

这在方面增加了我们不需要的冗余功能。

但是由于问题规模较小,COMSOLMultiphysics编码效率高,且现代微处理器的运算速度快,这点就不成为问题了。

启动MATLAB并在命令窗口键入COMSOLMultiphysics。

屏幕闪烁几秒后,会出现一个模型导航窗口。

按照表1所示步骤,建立一个零维应用模式来解决非线性多项式方程:

(3)

通过在“Physics”菜单、“Subdomainsettings”选项中的设定,使得表1中的每个子域都满足该方程。

注意左上角,这是以矢量符号给出的方程。

在一维模式下,这个方程可以简化为:

(4)

显然,α、γ和β在一维简化里是多余的。

既然我们是求零维的根,所有公式4左侧的系数都可以设为0。

通过重新组合多项式,我们发现a=4和f=u

+u

+2。

注意我们是通过设定最大基元尺寸为1、将域离散化为只有一个基元的域,从而得到零维空间的!

表1系数模式下的求根实例。

文件名称:

rootfinder.mph.

ModelNavigator

选择1D空间维数,COMSOLMultiphysics:

PDEmodes:

PDE,coefficient形式

Draw菜单

Specifyobjects:

Line。

Coordinates弹出菜单。

x:

01

名称:

interval,完成

Physics菜单:

Boundarysettings

选择域:

1和2(按住Ctrl键同时选中)

选择Neumann边界条件

采用默认设置q=0g=0,完成

Subdomainsettings

1

设定:

c=0。

a=4。

f=u^3+u^2+2。

=0

应用,选择Init选项卡:

设定u(t0)=-2,完成

Mesh菜单:

Meshparameters

设定最大基元尺寸1

点击remesh,完成

Solve菜单:

Solverparameters

求解器选择Stationarynonlinear,求解,完成

Post-processing

PointEvalution

选择边界1,表达式:

u,完成

设定初始猜测值为u(t

)=-2,下面我们来寻找最接近这个值的根。

你可能对为什么设置a=4而不是把所有有关参数放进f中感到奇怪,那是因为对公式(4)右侧有限元离散后得不到一个奇异刚度矩阵。

后处理阶段在输出窗口中显示出结果:

Value:

-2.732051,Expression:

u,Boundary:

1.

解读解得出的根为-1-

,数值解能够很好的与其吻合。

根据代数中二次公式的解知道,另外一个根是-1+

,第三个根是1。

回到子域设置中来,如果最初设置的猜测值为u(t0)=-0.5,则COMSOLMultiphysics解出u=0.762051,又一个很好的近似数值解。

如果u(t0)=1.2作为最初猜想时,得到u=1。

该练习体现了非线性求解器和问题的两个特性——

(1)非线性问题可以有多个解;

(2)最初猜测值对于求解很关键。

牛顿法通常收敛到最接近的解,但是在高阶非线性问题中,这点可能不成立。

这些特性在多维求解空间和“空间-时间”相关系统中同样适用。

COMSOLMultiphysics模型mph文件(rootfinder.mph)中包含了所有的MATLAB/COMSOLScript源代码和FEMLAB的扩展功能,以便再次恢复到FEMLAB当前图形用户界面。

该文件在网页http:

//eyrie.shef.ac.uk/femlab中可以得到。

只需打开“Menu”菜单,选择“Openmodelm-file”选项,在弹出的“Openfile”对话框中选中它,你就可以在“Subdomainsettings”中快速设定非线性函数,给定初始猜测值,然后用非线性求解器得到收敛解。

但是如果函数中没有线性项可以放在公式(4)左侧怎么办?

例如,FEMLAB将tan(u)-u2+5=0放在公式(4)左侧时,会生成奇异刚度矩阵。

建议在子域中设定一个u的二次派生系数,c=1。

通过与Neumann边界条件相结合,这个人为扩散因素不能改变基元中解为常数的事实,但是它可以避免刚度矩阵奇异。

在一般模式下求根

tan(u)-u2+5=0中奇异刚度矩阵的问题可以通过一般模式来避免,它可以求解下式:

(5)

其中Г(u,ux)和(4)式中的系数项功能类似,但是被求解器处理方式不同。

在系数模式中,认为系数与u无关,除非使用数值雅可比矩阵,这会产生一些非线性依赖关系——迭代次数增加。

一般模式下构建刚度矩阵时,精确雅可比矩阵会将Г和F对u进行微分。

通常一般模式比使用数值雅可比矩阵的系数模式需要的迭代次数少。

下面使用的雅可比矩阵,不需要任何特殊处理来避免刚度矩阵奇异。

总的来说,一般模式在处理非线性问题时比系数模式更加实用。

从我的个人观点看来,系数模式是COMSOLMultiphysics的一个遗传特性——MATLAB的偏微分方程工具箱,它在很多方面是FEMLAB和COMSOLMultiphysics的先驱,它广泛使用了系数形式。

此外,数值雅克比矩阵系数公式是一个长期存在的标准有限元方法,所以相对于其它代码,它是一种非常有用的公式。

表2给出了应用一般模式的步骤——对我们刚才的步骤做了小小改动。

表2一般模式下的求根实例。

文件名:

rtfingen.mph

1D,COMSOLMultiphysics:

PDEmodes,general模式

Options

设定Axes/Grid为[0,1]

Draw

Interval;

Start=0;

Stop=1

BoundarySettings

设定两个端点(域)为Neumann边界条件

SubdomainSettings

设定Г=0。

=0。

F=u3+u2-4*u+2

初值u(t0)=-0.5

Mesh模式

设定最大基元尺寸,general=1;

点击Remesh

Solve

使用默认设置(nonlinearsolver,exactJacobian)

Post-Processing

经过5次迭代,结果收敛。

点击图片读出u=0.732051。

改变初始条件找到另外两个根

虽然这里给出了单变量简单函数求根的模板(rtfindgen.mph),但是实际上MATLAB有更简单的计算子程序,通过内置函数fzero和函数声明来求根,现在COMSOLMultiphysics图形用户界面可以使用辅助方程中的辅助变量来求解几何约束,该变量称为状态变量。

作为对一般模式求根模型的补充,使用状态变量v按照表3的步骤来求解一个非线性方程。

表3在ODE设置中求根

ODEsettings

v。

方程:

tanh(v)-v^2+5,完成

选择Stationarynonlinear求解器,求解,完成

选择Pointevaluation,边界2,表达式:

v

Report窗口

值:

-2.008819,表达式:

v,边界:

2

下一节我们将非线性求根方法应用到一个常见的化工实例中——闪蒸,它用到了COMSOLMultiphysics图形用户界面的更多新特性。

2.2求根:

闪蒸实例

化学热力学中广泛存在求根法的应用实例,由于化学平衡和质量守衡的约束条件很充分,再加上状态方程,就产生了和问题中未知变量个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1