版本: 所有版本

问题描述

单元阶次或离散化的含义是什么,如何进行改变?它对网格和求解结果有什么影响?为什么即使采用高阶离散,网格看起来也有直边?

解决方法

概述

COMSOL Multiphysics 中的大多数物理场接口都使用有限元法来求解基本的偏微分方程。有限元法的原理是将建模域离散成更小、更简单的域,我们将其称为单元。通过将模型所有单元上的方程进行组合并求解,以此来完成计算。这些方程的解近似于偏微分方程的真解。

每个单元中的方程也称为形函数,可以具有不同的阶次。例如,在最简单的一维有限元模型情况下,每个单元中的形函数只是在域上定义的一组多项式。在下图中,我们绘制了一组线性(一阶)、二次(二阶)和三次(三阶)形函数。单元内的解以这些形函数的线性和为基础。

一维单元内的线性、二次和三次形函数图。

不同的物理场接口可以使用不同的形函数集。也就是说,每个物理场接口都有自己独特的离散化 设置,用于控制对因变量所用形函数的阶数,如下面的电流物理场接口示例屏幕截图所示。

每个物理场接口都包含离散化设置。

在许多情况下,默认离散化为二阶(二次),部分原因是许多偏微分方程都有一个占主导地位的二阶导数项。通常,涉及流体流动和传递的问题默认采用一阶线性离散化。您可以根据特定的建模情况更改离散化,并可以针对每个不同的物理场接口独立更改离散化,但这样做会带来多种后果。

在不改变单元数的情况下降低离散化,可以减少模型所需的计算资源,但准确性较低。在不改变单元数的情况下增加离散化,可以得到更准确的解,但需要更多的计算资源。请注意,增加单元阶次是验证模型的一种方法,但我们建议您研究一下如何细化网格,如执行网格细化研究中所述。

对于二次和更高阶的离散化,有时还可以使用附加的拉格朗日巧凑边点单元选项。仅当网格中存在矩形、棱柱、金字塔单元或六面体单元时,此设置才有效。拉格朗日单元可以在单元中引入额外的节点(自由度),如下图所示。尽管巧凑边点单元的每个单元具有较少的节点,但与拉格朗日单元相比,在二者采用相同网格时,它常常表现出较好的精度,并具有较低的计算成本。如果可以创建一个由矩形、棱柱、金字塔单元或六面体单元为主的网格,则通常可以使用巧凑边点离散化(如果它在物理场中可用)。

二阶单元中节点位置的可视化绘图。黑色、白色和灰色节点都显示在拉格朗日单元中。图中移除了巧凑边点单元的灰色节点。

对网格形状的影响

在进行二维、二维轴对称或三维建模时,物理场内部的离散化设置也会影响网格单元。此外,二维和三维中的网格单元还用于逼近真实的 CAD 几何结构,它们通过一组几何形函数逼近模型边界的形状来实现这一点,这些形函数的阶数与模型中任何已启用的物理场接口中使用的最低 离散阶数相同。

通过线性、二次和三次几何形函数离散的半圆域(左)。蓝色的圆表示节点。

举例来说,我们考虑一个半圆域,如上所示,它通过由单个三角形单元组成的最简单网格进行离散。无论如何,建模域的直边都可以精确表示,而弯曲边界只能用几何形函数来近似表示。利用线性形函数,我们可以将这种近似简化为三角形单元,而这种单元无法正确表示建模域。二次和三次形函数能够更好地表示基础几何结构。其结果是,当使用线性几何形函数时,通常需要在弯曲边界上使用更加细化的网格,才能准确表示基础 CAD 几何结构。根据经验来看,在使用线性几何形函数时,每 90°圆弧至少需要 8 个单元才能在 1% 的误差内解析边界。另一方面,利用二次和高阶形函数,即使每 90°圆弧只有两个单元,也足以在表示 CAD 几何时使误差明显低于 1%。这些经验法则只是创建初始网格的起点;我们总是需要执行网格细化研究

在构建和查看网格时,即使基础形函数的阶数较高,单元也始终显示为直边。仅当绘制结果时,单元边界才会以一种显示基础形函数的方式进行绘制。

有关几何形函数阶次的信息也显示在求解模型时生成的日志顶部附近。常见的日志文件如下所示:

<---- Compile Equations: Stationary in Study 1/Solution 1 ----------------------
Started at ....
Geometry shape order: Quadratic
Running on ...

涉及多个不同物理场和离散化的模型

当模型包含多个不同的物理场时,一个物理场可能会有与其他物理场不同的离散化设置。默认情况下,几何形函数阶次将由任何活动物理场中的最低阶离散进行控制。本文讨论几种常见的可能导致混淆的情况:

流体流动

层流和湍流问题默认采用 P1+P1 离散化,使用线性形函数求解流体速度场和压力场。我们可以将离散化提高到 P2+P1,这意味着使用二次形函数求解速度,而用线性基函数求解压力。因此,对于采用 P2+P1 离散化的模型,仍使用线性几何形函数。

热应力

从“模型向导”开始建模时,我们可以使用一个物理场选项:热应力。此选项可以加载固体力学固体传热物理场接口,并对“固体力学”使用二次巧凑边点单元离散化,而对“固体传热”使用线性离散化。这对于应力稳定性很有必要。但是请注意,如果您单独添加“固体力学”和“固体传热”接口,则“固体传热”的默认离散化为二次拉格朗日单元,这可能会产生振荡应力。如果您手动建立热应力模型,请确保将温度场离散化设为“线性”。

流-固耦合

在求解流-固耦合问题时,流体问题默认采用 P1+P1 离散,而固体力学问题则采用二次离散。尽管我们在不同(不重叠)的域中求解这些物理场,但对于所有的物理场,仍然必须使用相同的几何形函数阶次。

注:我们虽然可以在组件分支的常规设置中手动设置几何形函数阶次,但这只能在完全理解理论知识的情况下才能进行。