诡异的收敛率
本帖最后由 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: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);
这个问题没人有兴趣嘛?
页:
[1]