COMSOL ULTIPHYSICS和数值分析基础
第一章 COMSOL MULTIPHYSICS及数值分析基础
W. B. J. ZIMMERMAN,B. N. HEWAKANDAMBY
Department of Chemical and Process Engineering, University of Sheffield,
Newcastle Street, Sheffield S1 3JD United Kingdom
E-mail: w.zimmerman@shef.ac.uk
本章主要介绍COMSOL Multiphysics 在零维和一维模型数值分析方面的几个关键内容。这些内容包括求根、步进式数值积分、常微分方程数值积分和线性系统分析。这几乎是所有的化工过程数学分析方法。下面通过COMSOL Multiphysics中的一些常见化工过程应用实例来介绍这些方法,包括:闪蒸、管式反应器设计、扩散反应系统和固体中热传导。
1.简介
本章内容很多,可以分为几个不同的目标。首先介绍了COMSOL Multiphysics的主要工作特性;其次介绍了如何使用这些特性来分析一些简单的,位于零维空间、一维空间或“空间-时间”系统中的化工问题。本章还希望通过展示COMSOL Multiphysics和MATLAB工具在化工过程分析中的强大功能,激发读者对使用COMSOL Multiphysics进行建模与仿真的兴趣。
由于COMSOL Multiphysics不是一个通用的问题求解工具,所以一些目标需要迂回实现。作者在使用FORTRAN、Mathematica和MATLAB解决化工问题方面有着丰富的教学经验,并用这些工具实现过这里所有的例子。而且,扩展化工问题的数值分析也已经在POLYMATH[1]中实现,这似乎只在化工委员会的CACHE项目中使用过。
本书前一版已经介绍过在零维空间中求解非线性代数方程和与时间有关的常微分方程的内容。从概念上讲,零维域就是一个简单的有限元。通过研究某一特定有限元中的变化对理解有限元方法非常有用。但是,COMSOL Multiphysics通过独立对话框设置,使得零维几何方程和与时间相关的常微分方程求解变得非常简单。所以本章将同时采用这两种方法求解这些例子。
2.方法1:求根
典型的数值分析课程会讲解多种求根方法,但是从实际经验来看,只有两种算法非常有用——二分法和牛顿法。我们这里没有列出所有方法,而是重点考虑为什么求根是最有效的数值分析工具。在线性系统中求根非常简单,但是对于非线性系统这就是一个挑战,而所有感兴趣的动力学问题几乎都是非线性系统。对非线性系统的求根起源于对反函数的描述。为什么呢?因为对于大多数非线性函数,“正向”y=f(u)很好表示,但是它的反函数u=f--1(y)可能不能显式表示、多值(无意义)或根本不存在。如果反函数存在的话,求解反函数其实就是求根的过程——求解满足F(u)=0的u等价于求解F(u)=f(u)-y=0。因为大多数数值分析的目标是在系统约束下计算求解,所以这也等价于对所有的约束取反。COMSOL Multiphysics拥有求解非线性问题的核心函数——femnlin,本节主要介绍用它求解零维非线性问题。
femnlin函数使用牛顿方法求解,由于只有一个变量u,牛顿法通过对一阶倒数迭代来求根。该方法首先估计函数的斜率范围,然后再逼近根。该斜率可以通过理论分析(牛顿-拉夫逊方法)和数值(正割法)方法求得。如果能用任何一种方法求得斜率,就可以用泰勒定律来逼近根。其基本思想就是使用目前猜测值u0的泰勒展开式:
(1)
该公式可以化简,忽略(u-u0)的高阶项,计算根如下:
(2)
这个方法可以快速地扩展到多维求解空间,例如将u看作未知矢量,“被除”看作“乘以f的雅克比矩阵的逆”。下一节介绍COMSOL Multiphysics中的求根过程。
2.1 求根:COMSOL Multiphysics非线性求解器的应用实例
如上节所述,求根本身是一个“零维”活动,至少对于“空间-时间”系统多维未知矢量u来说是这样的。COMSOL多物理场没有零维模式,所以我们临时采用一维模式。这在方面增加了我们不需要的冗余功能。但是由于问题规模较小,COMSOL Multiphysics编码效率高,且现代微处理器的运算速度快,这点就不成为问题了。
启动MATLAB并在命令窗口键入COMSOL Multiphysics。屏幕闪烁几秒后,会出现一个模型导航窗口。按照表1所示步骤,建立一个零维应用模式来解决非线性多项式方程:
(3)
通过在“Physics”菜单、“Subdomain settings”选项中的设定,使得表1中的每个子域都满足该方程。注意左上角,这是以矢量符号给出的方程。在一维模式下,