对于更高阶的元素,我对每个元素进行了几次细化,这样我就有更多的点可以使用。如果我只需要为自己可视化解决方案。
让我们以二次拉格朗日元素为例。您需要网格数据、点p和三角形t,还需要数值解uh. 出于可视化目的,我们只需要使用二次拉格朗日元素(二次拉格朗日具有边缘自由度和节点自由度)的数值解中的节点值。对于高阶元素也是如此,我们只需要节点自由度的值来可视化解决方案。
例如:您的解决方案列向量u是zsurf情节的价值。对于二次元,最自然的数据结构是为第一NNodes = size(p,1)行分配节点自由度的值,然后NEdges = size(e,1)在行中分配边缘自由度的值。因为你使用三角网格,我们可以使用 MATLAB 的 trisurf 来做到这一点:
h = trisurf(t, p(:,1), p(:,2), u(1:size(p,1))');
的colormap范围可以手动分配,请参阅此处的 MATLAB 文档。有一些内置方案,如 jet,您可以使用m×3RGB 矩阵也是如此(您可以通过键入来检索颜色矩阵,c = colormap;然后检查c它的样子)。
这是另一个非常有用的 MATLAB 文档,关于如何手动设置colormap补丁对象(surf并且trisurf都使用补丁来绘制东西):着色网格和曲面图
这是使用二次元的数值解的样子−Δu=1在 L 形域上具有齐次 Dirichlet 边界数据。节点之间没有不连续的间隙,例如您的地块产量。除非你使用hp- 不连续 Galerkin,对于任何椭圆方程的通常连续有限元解,您的绘图都是错误的。
: