有限元地MATLAB解法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有限元的MATLAB解法

1.打开MATLAB。

2.输入“pdetool”再回车,会跳出PDE Toolbox的窗口(PDE意为偏微分方程,是partial differential equations的缩写),需要的话可点击Options菜单下Grid命令,打开栅格。

3.完成平面几何模型:在PDE Toolbox的窗口中,点击工具栏下的矩形几何模型进行制作模型,可画矩形R,椭圆E,圆C,然后在Set formula栏进行编辑并(如双脊波导R1+R2+R3改为RI-R2-R3,设定a、b、s/a、d/b的值从而方便下步设定坐标)

用算术运算符将图形对象名称连接起来,若还需要,可进行储存,形成M文件。

4.用左键双击矩形进行坐标设置:将大的矩形left和bottom都设为0,width是矩形波导的X轴的长度,height是矩形波导的y轴的长度,以大的矩形左下角点为原点坐标为参考设置其他矩形坐标。

5.进行边界设置:点击“Boundary”中的“Boundary Mode”,再点

击“Boundary”中的“Specify Boundary Conditions”,选择符合的边界条件,Neumann为诺曼条件,Dirichlet为狄利克雷条件,边界颜色显示为红色。

6.进入PDE模式:点击"PDE"菜单下“PDE Mode”命令,进入PDE模式,单击“PDE Specification”,设置方程类型,“Elliptic”为椭圆型,“Parabolic”为抛物型,“Hyperbolic”为双曲型,“Eigenmodes”为特征值问题。

7.对模型进行剖分:点击“Mesh”中“Initialize Mesh”进行初次剖分,若要剖的更细,再点击“Refine Mesh”进行网格加密。

8.进行计算:点击“Solve”中“Solve PDE”,解偏微分方程并显示图形解,u值即为Hz或者Ez。

9.单击“Plot”菜单下“Parameters”选项,打开“Plot Selection”对话框。选中Color,Height(3-D plot)和Show mesh三项,然后单击“Plot”按钮,显示三维图形解。

10.如果要画等值线图和矢量场图,单击“Plot”菜单下“Parameters”选项,打开“Plot Selection”对话框。选中Contour和Arrows两项,然后单击Plot按钮,可显示解的等值线图和矢量场图。

11.将计算结果条件和边界导入MATLAB中:点击“Export Solution”,再点击“Mesh”中“Export Mesh”。

12.在MATLAB中将编好的计算程序导入,按F5运行。

备注:

Property(属性)用于画图时选用相应的绘图类型

u 方程的解

abs(grad(u)) 每个三角形的中心的▽u的绝对值

abs(c*grad(u)) 每个三角形的中心的c·▽u的绝对值

- grad(u) u的负梯度-▽u

我们也可以用MATLAB程序求解PDE问题,同时显示解的图形;

一个长直接接地金属矩形槽,其侧壁与底面电位均为0,顶盖电位为100V,求槽内的电位分布:

100V

0V0V

0V

(1)画出剖分图(尺寸与书上一样);

(2)标出各剖分点坐标值;

(3)求出各点电位值(用有限差分);

(4)画出等电位图。

解:(1)编写以下程序得:

x=0:5

y=0:5

[X,Y]=meshgrid(x,y)

plot(X,Y)

hold on

plot(Y,X)

for i=0:5

s=i:5

t=0:(5-i)

plot(s,t)

plot(t,s)

end

得到剖分图如下:

(2)用有限元法编写程序如下:

Nx=6;Ny=6;Xm=5;Ym=15;Np=5;Nq=5;

for i=1:Nx

for j=1:Ny

N(i,j)=(i-1)*Ny+j; /i列j行的节点编号/ X(N(i,j))=(i-1)*Xm/Np;/节点横坐标/

Y(N(i,j))=(j-1)*Ym/Nq;/节点纵坐标/

end

end

for i=1:2*Xm

for j=1:Ym

if rem(i,2)==1

L(i,j)=(i-1)*Nq+j;

p(i,j)=2*(i-1)*Ny/2+Ny+j+1;

q(i,j)=p(i,j)-Ny;

r(i,j)=q(i,j)-1;

else rem(i,2)==0

L(i,j)=(i-1)*Ny+j;

p(i,j)=(2i-2)*Ny/2+j;

q(i,j)=p(i,j)+Ny;

r(i,j)=q(i,j)+1;

end

end

end

for i=1:2*Xm

for j=1:Ym

b(p(i,j))=Y(q(i,j))-Y(r(i,j));b(q(i,j))=Y(r(i,j) )-Y(p(i,j));

b(r(i,j))=Y(p(i,j))-Y(q(i,j));c(p(i,j))=X(r(i,j) )-X(q(i,j));

c(q(i,j))=X(p(i,j))-X(r(i,j));c(r(i,j))=X(q(i,j) )-X(p(i,j));

area(i,j)=(b(p(i,j))*c(q(i,j))-b(q(i,j))*c(p(i,j)))/2;

K=zeros(Nx*Ny);

Kpp(i,j)=(b(p(i,j))^2+c(p(i,j))^2)/(2*area(i,j));

Kpq(i,j)=(b(p(i,j))*b(q(i,j))+c(p(i,j))*c(q(i,j)))

相关文档
最新文档