我试图理解这段代码。所以,我已经简要地记下了我的理解,如果有人能澄清我的疑虑,我会感激不尽。
[p,e,t] = initmesh('lshapeg');
这将返回“L”形的2D三角形网格。但是,我怎样才能改变L形的边界?我的意思是默认的L形在x和y轴上以-1到1为界。此外,是否有其他形状,如'lshapeg'
...就像说方形?
[p,e,t] = refinemesh('lshapeg',p,e,t);
pdemesh(p,e,t)
现在在由L形膜限定的几何形状上求解泊松方程-Δu= 1。在∂Ω上使用Dirichlet边界条件u = 0,并绘制结果。
u = assempde('lshapeb',p,e,t,1,0,1);
现在我无法理解1,0,1的重要性。我尝试更改它们并观察图形结果,但无法理解边界条件是如何应用的。另外,lshapeb和lshapeg有什么区别?
pdemesh(p,e,t,u)
答案 0 :(得分:0)
嗯,他们只是调用PDE问题,遵循实现FEM方法的标准步骤。从这里开始,我很清楚你知道FEM是什么以及它涉及到什么。我也假设我们是2D .....
[p,e,t] = initmesh(' lshapeg');
嗯,正如你所说的那样,几乎所有FEM程序都需要初始的三角形网格。我们的第一个用于数字解决PDE的babystep。当然它可以'正方形'但是让三角形暂时保持安静......玫瑰是红色的,紫罗兰是蓝色的......
[p,e,t] = refinemesh(' lshapeg',p,e,t);
这里初始网格被精炼了#39;细化是网格尝试“适应”的预处理步骤。解决问题而不解决它。这一步是批评者,并且有数百种可用的方法。这里的功能,只考虑几何形状,并且只是平滑'三角形有点。此外,没有考虑到对称性,所以不要期待这里的金牌......
pdemesh(P,E,T)
此步骤仅绘制网格,供您查看并将其粘贴到任何地方。
u = assempde(' lshapeb',p,e,t,1,0,1);
正如你所说,你在这里建立了等式。检查doc assempde
,您会清楚地看到u = assempde(b,p,e,t,c,a,f)
的含义:
-∇⋅(c∇u)+ AU = F,
你将检查泊松方程是否为:
请注意,lshapeg
只是 Matlab徽标形状,因此如果您有自己的问题,请查看decsg
| pdegeom
函数,并在那里设置自己的几何图形!! ....
我想,这回答了大多数问题......
修改强>
检查here以获得更好的示例。
对于Dirichlet边界条件 - 即u(x) = u0
上的∂Ω
:
applyBoundaryCondition(model,'Face',1:4,'u',0);
和Neumann边界条件 - 即du/dx = u0'
上的∂Ω
:
applyBoundaryCondition(model,'Face',6,'g',-1);