关于在以下代码中使用 assempde
Regarding use of assempde in the following code
我试图理解这段代码。所以,我把我的理解简单记录下来,如果有人能澄清我的疑惑,我将不胜感激。
[p,e,t] = initmesh('lshapeg');
这将 return 一个 'L' 形状的二维三角形网格。但是,我怎样才能改变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)
好吧,它们只是 PDE 问题的调用,遵循实现 FEM 方法的标准步骤。从这里开始,我假设您清楚地知道 FEM 是什么以及它涉及什么。我也假设我们是二维的.....
[p,e,t] = initmesh('lshapeg');
好吧,正如您所说,这是几乎所有 FEM 程序都需要的初始三角网格。我们在数值上求解 PDE 的第一步。当然可以'squares',但让三角形暂时安静...玫瑰是红色的,紫罗兰是蓝色的...
[p,e,t] = refinemesh('lshapeg',p,e,t);
这里的初始网格是'refined'。细化是网格尝试 'adapt' 解决问题而不解决问题的预处理步骤。这一步很关键,周围有数百种可用的方法。这里的函数,只是考虑到了几何形状,只是 'smooths' 了一点三角形。另外,没有考虑对称性,所以不要指望这里有金牌...
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,
你会检查泊松方程是:
- c=1,这可能是material的介电常数,或热扩散,或机械运动粘度等...
- a=0,一个线性项,在电气或热或流体情况 (XD) 上没有直接意义,...
- f=1,单位电荷,或热源,或机械力或压力,...
请注意,lshapeg
只是 Matlab 徽标形状,所以如果您有自己的问题,请检查 decsg
| pdegeom
函数,并在那里设置你自己的几何体!!....
我想,这回答了大部分问题.....
编辑:
检查 here 以获得更好的示例。
对于 Dirichlet 边界条件 - 即 u(x) = u0
on ∂Ω
:
applyBoundaryCondition(model,'Face',1:4,'u',0);
并且对于 Neumann 边界条件 - 即 du/dx = u0'
on ∂Ω
:
applyBoundaryCondition(model,'Face',6,'g',-1);
我试图理解这段代码。所以,我把我的理解简单记录下来,如果有人能澄清我的疑惑,我将不胜感激。
[p,e,t] = initmesh('lshapeg');
这将 return 一个 'L' 形状的二维三角形网格。但是,我怎样才能改变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)
好吧,它们只是 PDE 问题的调用,遵循实现 FEM 方法的标准步骤。从这里开始,我假设您清楚地知道 FEM 是什么以及它涉及什么。我也假设我们是二维的.....
[p,e,t] = initmesh('lshapeg');
好吧,正如您所说,这是几乎所有 FEM 程序都需要的初始三角网格。我们在数值上求解 PDE 的第一步。当然可以'squares',但让三角形暂时安静...玫瑰是红色的,紫罗兰是蓝色的...
[p,e,t] = refinemesh('lshapeg',p,e,t);
这里的初始网格是'refined'。细化是网格尝试 'adapt' 解决问题而不解决问题的预处理步骤。这一步很关键,周围有数百种可用的方法。这里的函数,只是考虑到了几何形状,只是 'smooths' 了一点三角形。另外,没有考虑对称性,所以不要指望这里有金牌...
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,
你会检查泊松方程是:
- c=1,这可能是material的介电常数,或热扩散,或机械运动粘度等...
- a=0,一个线性项,在电气或热或流体情况 (XD) 上没有直接意义,...
- f=1,单位电荷,或热源,或机械力或压力,...
请注意,lshapeg
只是 Matlab 徽标形状,所以如果您有自己的问题,请检查 decsg
| pdegeom
函数,并在那里设置你自己的几何体!!....
我想,这回答了大部分问题.....
编辑:
检查 here 以获得更好的示例。
对于 Dirichlet 边界条件 - 即 u(x) = u0
on ∂Ω
:
applyBoundaryCondition(model,'Face',1:4,'u',0);
并且对于 Neumann 边界条件 - 即 du/dx = u0'
on ∂Ω
:
applyBoundaryCondition(model,'Face',6,'g',-1);