点源泊松方程与自适应网格细化
这个例子展示了如何在单位圆盘上用函数点源求解泊松方程adaptmesh
函数。
具体来说,就是解泊松方程
在零狄利克雷边界条件的单位盘上。极坐标下的精确解是
在原点处是奇异的。
通过使用自适应网格细化,偏方程工具箱™可以精确地找到远离原点的任何地方的解。
以下变量定义了问题:
c
,一个
:偏微分方程系数。f
:在原点处捕获一个点源的函数。对于包含原点的三角形返回1/area,对于其他三角形返回0。
C = 1;A = 0;F = @circlef;
创建一个具有单个因变量的PDE模型。
numberOfPDE = 1;model = createpde(numberOfPDE);
创建一个几何图形并将其包含在模型中。
G = @circleg;geometryFromEdges(模型中,g);
绘制几何图形并显示边缘标签。
图;pdegplot(模型,“EdgeLabels”,“上”);轴平等的标题(显示边缘标签的几何图形)
在圆的所有四个外缘指定零解。
applyBoundaryCondition(模型,“边界条件”,“边缘”(1:4),“u”, 0);
adaptmesh
利用自适应网格生成求解椭圆偏微分方程。的tripick
参数使您可以指定一个函数,该函数返回哪些三角形将在下一次迭代中进行细化。circlepick
返回计算误差估计值大于给定容差值的三角形。公差提供给circlepick
使用“par”参数。
[u,p,e,t] = adaptmesh(g,model,c,a,f,“tripick”,...“circlepick”,...“maxt”, 2000,...“par”1 e - 3);
三角形数量:258三角形数量:515三角形数量:747三角形数量:1003三角形数量:1243三角形数量:1481三角形数量:1705三角形数量:1943三角形数量:2155获得的最大三角形数量。
绘制最细的网格。
图;pdemesh (p, e t);轴平等的
画出误差值。
X = p(1,:)';Y = p(2,:)';R =√(x.^2+y.^2);Uu = -log(r)/2/pi;图;pdeplot (p, e t“XYData”u-uu,“ZData”u-uu,“网”,“关闭”);
在最细网格上绘制有限元解。
图;pdeplot (p, e t“XYData”u“ZData”u“网”,“关闭”);