chentao807 发表于 2011-10-25 22:08:56

诡异的收敛率

本帖最后由 chentao807 于 2011-10-25 22:08 编辑

我们知道有限元的收敛率和单元的形状函数次数p和网格尺寸h两个因素有关,对于泊松方程而言,场变量的L2范数误差E(精确解和近似解之差的平方和在区域上求积分)与p和h有这样的关系E<C*h^p,这里C是个常识。
这里考虑单位正方形区域上泊松方程,如附图。网格采用均匀正交的结构网格。
forum.php?mod=image&aid=328568&size=300x300&key=502771bdde175e2b221a087e0e5740ff&nocache=yes&type=fixnone

对于第一个问题的收敛率
横坐标是网格尺寸取log10缩放,纵坐标是误差取log10,可以看出收敛率是1,2,3阶(对应于线性,二次和三次拉格朗日单元),这一点是和理论一致的。
forum.php?mod=image&aid=328569&size=300x300&key=1b00cdb94cd693de4875ca7411d7c710&nocache=yes&type=fixnone

但是对于问题2,立马收敛率就很诡异了。


也就是在网格很粗糙的方法已经很精确,随着网格细化结果反而更差。同样的结论已经用Comsol验证了。

chentao807 发表于 2011-10-25 22:23:15

本帖最后由 chentao807 于 2011-10-25 22:24 编辑



这里附上Comsol做的两段代码,用3.5的朋友可以测试一下。另外各位帮我看一下代码是否有问题。

第一个问题
clear all; clc;
hmax = ones(1,5)./;
mat = ones(1,5);
for s = 1:5
    fem.geom = rect2;
    fem.mesh = meshinit(fem, 'hmax', hmax(s));
    fem.equ.f = '2*pi^2*sin(pi*x)*sin(pi*y)'; fem.equ.c = 1;
    fem.bnd.h = 1; fem.bnd.r = 'sin(pi*x)*sin(pi*y)';
    fem.shape = 2;
    fem.xmesh = meshextend(fem);
    fem.sol = femstatic(fem);
    mat(s) = postint(fem, '(u-sin(pi*x)*sin(pi*y))^2');
end
loglog(hmax, mat);
第二个问题
clear all; clc;
hmax = ones(1,5)./;
mat = ones(1,5);
for s = 1:5
    fem.geom = rect2;
    fem.mesh = meshinit(fem, 'hmax', hmax(s));
    fem.equ.f = 1; fem.equ.c = 1;
    fem.bnd.h = 1; fem.bnd.r = '(1-x^2-y^2)/4';
    fem.shape = 3;
    fem.xmesh = meshextend(fem);
    fem.sol = femstatic(fem);
    mat(s) = postint(fem, '(u-(1-x^2-y^2)/4)^2');
end
loglog(hmax, mat);


chentao807 发表于 2011-10-27 13:34:23

这个问题没人有兴趣嘛?
页: [1]
查看完整版本: 诡异的收敛率