欧阳科创编 2021.02.05
COMSOL Multiphysics之二十
大使用技巧
一、
时间:2021.02.05 创作:欧阳科 二、 全局约束
对于多物理仿真,添加全局约束是COMSOL非常有用的功能之一。
例如,对于一个涉及传热的仿真,希望能够调整热源Q_0的大小,从而使得某一位置处的温度T_probe恒定在指定值T_max,我们可以直接将这个全局约束添加进来即可。
有些情况下,全局约束可能包含有对时间的微分项,也就是常说的常微分方程(ODE),COMSOL同样也支持自定义ODE作为全局约束。
例如,在一个管道内流体+物质扩散问题的仿真中,利用PID算法控制管道入口的流速u_in_ctrl,从而使得某一位置处的浓度conc恒定在指定值c_set。(基本模块模型库>Multidisciplinary>PID control)。需要添加的PID算法约束如下式:
要添加上述约束,除变上限积分项外,另外两项都可以很容易的在边界条件中的“入口流速”设置中直接定义。因此,这个变上限积分需要转化成一个ODE,作为全局约束加入。
令
,方程两边同对时间t求导,得到
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
。在COMSOL中,变量u对时间的导数,用ut表
示。因此变量int的时间导数即为intt。利用COMSOL的“ODE设定”,我们可以很容易的将intt-(conc-c_set)=0这个ODE全局约束添加入模型之中。
三、 积分耦合变量
COMSOL的语法中,变量u对空间的微分,分别默认为用ut,ux,uy,uz等来表示,这为仿真提供了极大的便利。那么对变量u的空间积分呢?COMSOL提供了积分耦合变量来实现这一功能。
积分耦合变量分为四种:点(point)积分耦合变量、边(edge)积分耦合变量、边界(boundary)积分耦合变量、求解域(subdomain)积分耦合变量。根据模型的维度,会有相应积分耦合变量。用户还可以指定得到结果后的作用域,例如全局,或指定某些点、边、边界或求解域。从而可以将对积分耦合变量结果的访问限制在指定的对象上。
求解域积分耦合变量,就是对指定变量或表达式在指定的某个或者某些求解域上做积分,积分的结果赋给自定义的这个积分耦合变量。对于三维仿真,这个积分是体积分;对于二维则是面积分。最典型的应用当属对数值1进行积分,可以得到体积或面积。
边界积分耦合变量,就是对指定变量或表示在指定的某个或者某些边界上做积分,积分的结果付给自定义的这个积分耦合变量。对于三维仿真,这个积分是面积分;对于二维则是线积分。对1积分可以得到面积或边长。
边积分耦合变量,就是对指定变量或表达式在指定的某个或者某些边上做积分,积分的结果付给自定义的这个积分耦合变量。仅存在
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
于三维仿真中,这个积分是线积分。对1积分得到边长。
点积分耦合变量,就是对指定变量或表达式在指定的某个或者某些点上给出它的值。它的最主要用法是将某个点上的结果映射到指定的对象上。
在上面PID控制的例子中,指定位置处的浓度conc就是一个点积分耦合变量,用来提取点PT1处的浓度值。同时,浓度c的时间变化率ct在PT1点的取值,也可以用同样的方法提取出来,付给变量ctime。
积分耦合变量除了用于添加约束,也常常用于后处理。COMSOL允许用户将任意表达式在任意求解域或者边界上的积分定义为一个变量,然后直接在后处理中对该自定义的积分耦合变量做数据可视化操作。
例如,在二维扩散问题的仿真中,为了观测流出边界上总的流出的物质量,可以在出口边界利用边界耦合积分变量,然后可以直接得到数据曲线。(基本模块模型库 > Chemical engineering > absorption)
四、 时间积分
现在我们已经可以在COMSOL中方便的定义任意一个变量u及其表达式的时间微分(ut)、空间微分(ux,uy,uz)、空间积分(积分耦合变量)。那么对于时间的积分如何处理呢?COMSOL当然也提供了这项功能。
对于时间的积分项的处理,COMSOL也是通过ODE的设定来实现的。例如前例中,我们已经可以利用一个边界积分耦合变量来描述
欧阳科创编 2021.02.05