如何在 COMSOL 中实现瞬态方程的弱形式

2018年 9月 27日

在之前的一个关于弱形式的博客系列中,我的同事 Chien Liu 介绍了稳态问题的弱形式以及在 COMSOL Multiphysics 软件中的实现方法。本篇博文是弱形式系列的扩展,介绍了如何使用弱形式偏微分方程接口求解瞬态问题。下面我们将演示在 COMSOL 中如何操作。

问题举例:一个瞬态偏微分方程

让我们考虑由一维瞬态偏微分方程给出的初始边界值问题

(1)

\frac{\partial{T}}{\partial{t}} = \frac{\partial^2{T}}{\partial{x^2}}, \quad 1 \leq x \leq 5, \quad t \ge 0,

这个微分方程有边界条件

(2)

\frac{\partial{T}}{\partial{x}} = 0 \text{ , } {x = 1}, \quad \forall t

(3)

\frac{\partial{T}}{\partial{x}} = -\left({T-1}\right) \text{ , } {x = 5}, \quad \forall t

以及初始条件

(4)

T = 3 \text{ , } {t = 0} ,\quad \forall x

这个方程只有一阶时间导数,因此,我们只需要为主要变量指定初始值。对于具有二阶时间导数的方程,我们还必须提供速率的初始条件。

等式2中的边界条件是一个 Neumann 条件,通常用于描述机械载荷或热通量。零值意味着没有载荷,或者相当于绝热层。等式3中的边界条件是一个 Robin 或混合条件,通常用于描述弹簧边界或对流热通量(参见上一篇博文中的 Neumann 条件和 Robin 条件部分。

获得瞬态问题的弱形式

推导瞬态偏微分方程的弱形式,与前一博客系列的第 1 部分中稳态问题相同的步骤相同。大致是,首先将偏微分方程写成,对于本文讨论的问题,我们有

\mathcal{L}(T) = \frac{\partial{T}}{\partial{t}}-\frac{\partial^2{T}}{\partial{x^2}}=0.

接下来,在弱形式上执行;也就是说,将这个方程和任何测试函数 (也称为加权函数)的乘积进行积分都应该为 0。第三,应用导数的乘积法则和散度定理在加权积分中减少(削弱)因变量的最高阶空间导数。在一维中,这可以归结为分部积分,从而给出了弱形式。

因此,将(1)乘以试函数并在域上积分,我们得到

(5)

\int_{1}^{5} \tilde{T}\left( \frac{\partial{T}}{\partial{t}}-\frac{\partial^2{T}}{\partial{x^2}} \right) dx = 0, \quad \forall \tilde{T} .

通过对具有最高阶空间导数的乘积应用分部积分,我们得到

(6)

\Rightarrow \int_{1}^{5} \left(\tilde{T} \frac{\partial{T}}{\partial{t}} +\frac{\partial \tilde{T}}{\partial x} \frac{\partial T}{\partial x} \right) dx-\left[ \tilde{T} \frac{\partial{T}}{\partial{x}} \right]_{x=1}^{x=5}=0\quad\forall \tilde{T}.

对于这种弱形式,我们可以结合边界条件来获得

(7)

\int_{1}^{5}\left( \tilde{T} \frac{\partial{T}}{\partial{t}} +{\frac{\partial{\tilde{T}}}{\partial{x}} \frac{\partial{T}}{\partial{x}} }\right)dx + \left[ \tilde{T} \left(T-1\right) \right]_{x=5} = 0,\quad \forall \tilde{T}.

请注意,时间导数的存在并没有改变我们导出弱形式的方式。在上面的推导中,时间偏导数只是乘以加权函数。弱形式的积分是空间积分,因此,我们对时间导数不做任何分部积分。加权函数只是空间坐标的函数,而未知是空间和时间的函数。

在弱形式 PDE 接口中定义问题

在 COMSOL Multiphysics 中的弱形式偏微分方程接口中定义瞬态偏微分方程的弱形式包括以下三个步骤:

  1. 输入域贡献
  2. 输入边界条件
  3. 定义初始条件

弱形式PDE 1节点的设置窗口的输入域的弱表达式字段。对于我们的问题,这是test(T)*Tt + test(Tx)*Tx,其中test(T)表示加权(试)函数,它对应于因变量。还有TtTx分别是因变量的时间和空间偏导数。

屏幕截图显示了如何实现弱表单设置
域定义。

可以使用内置边界条件或边界处的弱贡献来定义边界贡献。出于教学演示上的原因,我们将使用后者,尽管今天的问题中的边界条件可以使用内置的通量/节点。

屏幕截图显示了COMSOL Multiphysics® 中边界项的设置
边界条件的实施。

来自左边界的贡献为零;我们不用做任何操作。右边界的贡献是弱形式方程(7)的第二项,可以按下面的方式输入。在边界选择窗口中选择点 2 并在弱表达式字段输入表达式test(T)*(T-1)

屏幕截图显示了如何实现边界条件
使用弱贡献节点完成边界项的定义。

最后一个部分是初始值。我们的问题只需要因变量的初始值。因此,我们只需要在初始值设置窗口中填写第一项。在我们的例子中,我们正在考虑一个统一的初始值。如果不是这个例子,可以键入包含空间坐标的表达式或函数,而不是数字。

“初始值设置”窗口的屏幕快照。
初始条件的执行。

现在,我们已经定义了偏微分方程、边界条件和初始条件,剩下要做的就是在研究设置中定义求解此问题的时间间隔,并点击计算按钮。模拟运行的时间范围为,不同时间实例的解决方案如下所示。

区域温度在不同时间的变化图
在不同时间点沿域的温度变化。

推导的弱形式背后的内容

我们在上面推导出并在 COMSOL Multiphysics 接口中定义的弱形式是一个连续问题。该函数基于在弱形式 PDE 界面的设置窗口的离散化部分中选取的形状函数。在内部,将使用有限元插值函数进行离散化,插值函数阶次在弱形式偏微分方程接口的设置离散化部分定义。例如,对于拉格朗日插值函数,解近似为

T(\mathbf{x},t) = \sum_{i=1}^{N}T_i(t)\phi_i(\mathbf{x}),

这里,N是有限元网格中的节点数,\phi_i, i=1\dotsc N是定义的形(插值)函数。

如果我们把上式代入弱形式,我们会得到关于节点解的常微分方程组。所有的空间导数都指向已知的形函数。这个常微分方程组由 COMSOL Multiphysics 内置的时间积分算法求解。(注意:我们的问题定义中不需要做任何时间离散化;这将在内部特别处理。这部分仅供参考。) 如果问题是稳态的,方程组是节点未知数的代数方程组。这一次,节点未知数不是时间的函数。要了解有关离散化的更多信息,请查看以下关于形状函数和相关离散化的博文。

关于获得瞬态问题弱形式的总结性思考

在这篇博文中,我们演示了如何使用弱形式偏微分方程接口求解瞬态 PDE 方程。瞬态问题的弱形式的推导过程与稳态问题完全相同,并且也使用相同的接口。我们只需要指定问题的连续性。在内部,空间离散化是基于弱形式偏微分方程接口设置窗口中的离散化的定义,时间离散化是根据软件选择的默认时间积分算法来完成的。如果我们有一个好的理由,我们可以转到求解器配置节点。问题的定义保持不变,因为我们指定的是连续性,而不是离散性。

进一步阅读

在这个博客系列中了解关于弱形式的更多信息:

博客分类


评论 (4)

正在加载...
Zheng SiZheng
Zheng SiZheng
2021-08-01

请问如何在PDE弱形式的模块下,使用用户自定义材料?

yongchao wang
yongchao wang
2021-08-11 COMSOL 员工

Zheng SiZheng, 您好!
可以参考博客://www.denkrieger.com/blogs/brief-introduction-weak-form/ 中的热通量方程,方程中的截面积及热导率的乘积定义为1,对于一维实际情况q(x)=-A*k*ΔT,其中A为横截面积,k为导热系数;此方程右侧写成弱形式为-A*k*Tx*test(Tx),此时材料的属性已经在弱形式中。弱形式中相应的变量可以为自定义的材料属性。

玉平 姚
玉平 姚
2022-03-28

请问,在PDE模块里面如何添加周期性边界条件呢?比如floquet周期性边界条件

Kaixi Tang
Kaixi Tang
2022-04-02 COMSOL 员工

你好,软件内周期条件中是有内置的floquet周期选项的,博客下不提供PDE技术支持,谢谢。

浏览 COMSOL 博客
Baidu
map