matlab程序的有限元法解泊松方程_第1页
matlab程序的有限元法解泊松方程_第2页
matlab程序的有限元法解泊松方程_第3页
matlab程序的有限元法解泊松方程_第4页
matlab程序的有限元法解泊松方程_第5页
已阅读5页,还剩133页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.基于matlab编程的有限元法一、待求问题:泛定方程:边界条件:以(0,-1),(0,1),(1,0)为顶点的三角形区域边界上2、 编程思路及方法1、 给节点和三角形单元编号,并设定节点坐标画出以(0,-1),(0,1),(1,0)为顶点的三角形区域figure1由于积分区域规则,故采用特殊剖分单元,将区域沿水平竖直方向分等份,此时所有单元都是等腰直角三角形,剖分单元个数由自己输入,但竖直方向份数(用jmax表示)必须是水平方向份数(imax)的两倍,所以用户只需输入水平方向的份数imax。采用上述剖分方法,节点位置也比较规则。然后利用循环从区域内部(非边界)的节点开始编号,格式为nn(i,

2、j)=n1,i,j分别表示节点所在列数与行数,并将节点坐标存入相应矩阵x(n1),y(n1)。由于区域上下两部分形状不同因此,分两个循环分别编号赋值,然后再对边界节点编号赋值。然后再每个单元的节点进行局部编号,由于求解区域和剖分单元的特殊性,分别对内部节点对应左上角正方形的两个三角形单元,上左,左上,下斜边界节点要对应三个单元,上左,左上,左下,右顶点的左下、左上,右上边界的左上,分别编号以保证覆盖整个区域。2、 求解泊松方程首先一次获得每个单元节点的整体编号,然后根据其坐标求出每个三角形单元的面积。利用有限元方法的原理,分别求出系数矩阵和右端项,并且由于边界条件特殊,边界上,因此做积分时只需

3、对场域单元积分而不必对边界单元积分。求的两个矩阵后很容易得到节点电位向量,即泊松方程的解。3、 画解函数的平面图和曲面图由节点单位向量得到,j行i列节点的电位,然后调用绘图函数imagesc(nnv)与surf(x1,y1,nnv)分别得到解函数的平面图figure2和曲面图figure3。4、 将结果输出为文本文件输出节点编号,坐标,电位值3、 计算结果1、积分区域:2、f=1,x方向75份,y方向150份时,解函数平面图和曲面图对比:当f=1时,界函数平面图3、输出文本文件由于节点多较大,列在本文最末四、结果简析由于三角形区域分布的是正电荷,因此必定电位最高点在区域中部,且沿x轴对称,三角

4、形边界电位最低等于零。当f=1时,发现电位最高点向x轴负方向移动了,这是由于此时电荷在三角形区域上均匀分布,而f=x时,x越大面电荷密度越大,附近相应电位越高,所得图像与实际情况相符。五、matlab源程序1、finite_element_tri.m文件function finite_element_tri(imax)% 用有限元法求解三角形形区域上的possion方程,其中a为1,f=xjmax=2*imax;% 其中imax jmax分别表示x轴和y轴方向的网格数,其中jmax等于imax的两倍% 定义一些全局变量global ndm nel na % ndm 总节点数% nel 基元数%

5、 na 表示活动节点数v=0; j=0;x0=1/imax;y0=x0;%v=0为边界条件domain_tri % 调用函数画求解区域x,y,nn,ne=setelm_tri(imax,jmax); % 给节点和三角形元素编号,并设定节点坐标% 以下求解有限元方程的求系数矩阵t=zeros(ndm,ndm);for n=1:nel n1=ne(1,n); n2=ne(2,n); n3=ne(3,n);%整体编号 s=abs(x(n2)-x(n1)*(y(n3)-y(n1)-(x(n3)-x(n1)*(y(n2)-y(n1)/2;%三角形面积 for k=1:3 if n1=na|n2=na t

6、(n1,n2)=t(n1,n2)+(y(n2)-y(n3)*(y(n3)-y(n1)+(x(n3)-x(n2)*(x(n1)-x(n3)/(4*s); t(n2,n1)=t(n1,n2); t(n1,n1)=t(n1,n1)+(y(n2)-y(n3)2+(x(n3)-x(n2)2)/(4*s);%v=0则边界积分为零,非零时积分编程类似,再加边界积分。 end k=n1;n1=n2;n2=n3;n3=k; % 轮换坐标将值赋入3阶主子矩阵中 endendm=t(1:na,1:na);% 求有限元方程的右端项f=x;%场源函数g=zeros(na,1);for n=1:nel n1=ne(1,n

7、); n2=ne(2,n); n3=ne(3,n); s=abs(x(n2)-x(n1)*(y(n3)-y(n1)-(x(n3)-x(n1)*(y(n2)-y(n1)/2; for k=1:3 if n1=na g(n1)=g(n1)+(2*f(n1)+f(n2)+f(n3)*s/12;%f在单元上为线性差值时场域单元的积分公式 end n4=n1; n1=n2; n2=n3; n3=n4; % 轮换坐标标 endendf=mg; % 求解方程得结果nnv=zeros(imax+1,jmax+1);fi=zeros(ndm,1);fi(1:na)=f(1:na);fi(na+1:ndm)=v;

8、for j=0:jmax for i=0:imax n=nn(i+1,j+1); if n=0 n=na+1; end nnv(i+1,j+1)=fi(n); endendfigure(2)imagesc(nnv);%画解函数的平面图x1=zeros(1,imax+1);y1=zeros(1,jmax+1);for i=1:imax+1 x1(i)=(i-1)*x0;endfor i=1:jmax+1 y1(i)=(i-1)*y0;endfigure(3)surf(x1,y1,nnv);% 画解函数的曲面图% 以下是结果的输出fid=fopen(finite_element_tri.txt,w

9、);fprintf(fid,n *有限元法求解三角形区域上possion方程的结果* n n);l=1:ndm;fprintf(fid,nn 节点编号 坐标分量x 坐标分量y u(x,y)的值nn);for i=1:ndm fprintf(fid,%8d%14.5f%14.5f%14.5fn,l(i),x(i),y(i),fi(i);endfclose(fid);end2、domain_tri.m文件function domain_tri% 画求解区域xy=0 1;0 -1;1 0;a=zeros(3,3);a(1,1)=2; a(1,2)=-1;a(1,3)=-1;a(2,2)=2; a(2

10、,1)=-1;a(2,3)=-1;a(3,3)=2; a(3,2)=-1;a(3,1)=-1;a=sparse(a);figure(1);gplot(a,xy);3、setelm_tri.m文件function x,y,nn,ne=setelm_tri(imax,jmax) % 给节点和三角形单元编号,并设定节点坐标 % 定义一些全局变量global ndm nel na% i1 i2 j1 j2 imax jmax分别描述网线纵向和横向数目的变量% x y表示节点坐标% nn描述节点编号% ne 描述各单元局部节点编号与总体编号对应的矩阵% ndm 总节点数% nel 单元数% na 表示不

11、含边界的节点数nlm=imax*jmax;dx=1/imax;dy=1/jmax;x=nlm:1;y=nlm:1;nn=zeros(imax+1,jmax+1);n1=0; for j=3:jmax/2 for i=2:j-1 n1=n1+1; nn(i,j)=n1; %x=i列,y=j行处节点 x(n1)=(i-1)*dx; y(n1)=-1+(j-1)*dy; endendk=jmax/2+1;for j=jmax/2+1:jmax-1 %三角形区域上下两部分节点坐标分别求 k=k-1; for i=2:k n1=n1+1; nn(i,j)=n1; x(n1)=(i-1)*dx; y(n1

12、)=1+(j-jmax-1)*dy; endendna=n1;%不含边界节点数for j=jmax+1:-1:jmax/2+1 %降序 n1=n1+1; nn(1,j)=n1; x(n1)=0; y(n1)=1+(j-jmax-1)*dy;endfor j=jmax/2:-1:1 n1=n1+1; nn(1,j)=n1; x(n1)=0; y(n1)=-1+(j-1)*dy;end %for i=2:imax+1 n1=n1+1; nn(i,i)=n1; x(n1)=(i-1)*dx; y(n1)=-1+(i-1)*dy;endk=0;for i=imax:-1:2 k=k+2; n1=n1+

13、1; nn(i,i+k)=n1; x(n1)=(i-1)*dx; y(n1)=1+(i+k-jmax-1)*dy;end% 以上四个循环为对边界节点进行编号ndm=n1; ne=zeros(3,2*ndm); n1=0;for j=3:jmax/2 for i=2:j-1 n1=n1+1; ne(1,n1)=nn(i,j); ne(2,n1)=nn(i-1,j+1); ne(3,n1)=nn(i-1,j); n1=n1+1; ne(1,n1)=nn(i,j); ne(2,n1)=nn(i,j+1); ne(3,n1)=nn(i-1,j+1); endendk=jmax/2+1;for j=jm

14、ax/2+1:jmax-1 k=k-1; for i=2:k n1=n1+1; ne(1,n1)=nn(i,j); ne(2,n1)=nn(i-1,j+1); ne(3,n1)=nn(i-1,j); n1=n1+1; ne(1,n1)=nn(i,j); ne(2,n1)=nn(i,j+1); ne(3,n1)=nn(i-1,j+1); endend %内部节点对应左上角正方形的两个三角形单元,上左,左上for i=2:imax n1=n1+1; ne(1,n1)=nn(i,i); ne(2,n1)=nn(i-1,i); ne(3,n1)=nn(i-1,i-1); n1=n1+1; ne(1,n

15、1)=nn(i,i); ne(2,n1)=nn(i-1,i+1); ne(3,n1)=nn(i-1,i); n1=n1+1; ne(1,n1)=nn(i,i); ne(2,n1)=nn(i,i+1); ne(3,n1)=nn(i-1,i+1);end %下斜边界节点要对应三个单元,上左,左上,左下n1=n1+1;ne(1,n1)=nn(imax+1,imax+1);ne(2,n1)=nn(imax,imax+1);ne(3,n1)=nn(imax,imax);%右顶点的左下n1=n1+1;ne(1,n1)=nn(imax+1,imax+1);ne(2,n1)=nn(imax,imax+2);n

16、e(3,n1)=nn(imax,imax+1);%右顶点的左上k=0;for i=imax:-1:2 k=k+2; n1=n1+1; ne(1,n1)=nn(i,i+k); ne(2,n1)=nn(i-1,i+k+1); ne(3,n1)=nn(i-1,i+k);end %右上边界的左上nel=n1;%此时n1值为总的单元个数六、输出文本文件 *有限元法求解三角形区域上possion方程的结果* 节点编号 坐标分量x 坐标分量y u(x,y)的值 1 0.01333 -0.98667 0.00000 2 0.01333 -0.98000 0.00001 3 0.02667 -0.98000 0

17、.00001 4 0.01333 -0.97333 0.00002 5 0.02667 -0.97333 0.00003 6 0.04000 -0.97333 0.00002 7 0.01333 -0.96667 0.00002 8 0.02667 -0.96667 0.00004 9 0.04000 -0.96667 0.00005 10 0.05333 -0.96667 0.00003 11 0.01333 -0.96000 0.00003 12 0.02667 -0.96000 0.00006 13 0.04000 -0.96000 0.00007 14 0.05333 -0.96000

18、 0.00007 15 0.06667 -0.96000 0.00005 16 0.01333 -0.95333 0.00004 17 0.02667 -0.95333 0.00008 18 0.04000 -0.95333 0.00010 19 0.05333 -0.95333 0.00011 20 0.06667 -0.95333 0.00010 21 0.08000 -0.95333 0.00007 22 0.01333 -0.94667 0.00005 23 0.02667 -0.94667 0.00010 24 0.04000 -0.94667 0.00014 25 0.05333

19、-0.94667 0.00016 26 0.06667 -0.94667 0.00016 27 0.08000 -0.94667 0.00013 28 0.09333 -0.94667 0.00008 29 0.01333 -0.94000 0.00006 30 0.02667 -0.94000 0.00012 31 0.04000 -0.94000 0.00017 32 0.05333 -0.94000 0.00020 33 0.06667 -0.94000 0.00022 34 0.08000 -0.94000 0.00021 35 0.09333 -0.94000 0.00017 36

20、0.10667 -0.94000 0.00010 37 0.01333 -0.93333 0.00007 38 0.02667 -0.93333 0.00015 39 0.04000 -0.93333 0.00021 40 0.05333 -0.93333 0.00025 41 0.06667 -0.93333 0.00028 42 0.08000 -0.93333 0.00028 43 0.09333 -0.93333 0.00026 44 0.10667 -0.93333 0.00021 45 0.12000 -0.93333 0.00012 46 0.01333 -0.92667 0.0

21、0009 47 0.02667 -0.92667 0.00017 48 0.04000 -0.92667 0.00024 49 0.05333 -0.92667 0.00030 50 0.06667 -0.92667 0.00034 51 0.08000 -0.92667 0.00036 52 0.09333 -0.92667 0.00036 53 0.10667 -0.92667 0.00032 54 0.12000 -0.92667 0.00025 55 0.13333 -0.92667 0.00015 56 0.01333 -0.92000 0.00010 57 0.02667 -0.9

22、2000 0.00020 58 0.04000 -0.92000 0.00028 59 0.05333 -0.92000 0.00036 60 0.06667 -0.92000 0.00041 61 0.08000 -0.92000 0.00045 62 0.09333 -0.92000 0.00046 63 0.10667 -0.92000 0.00044 64 0.12000 -0.92000 0.00038 65 0.13333 -0.92000 0.00030 66 0.14667 -0.92000 0.00017 67 0.01333 -0.91333 0.00011 68 0.02

23、667 -0.91333 0.00022 69 0.04000 -0.91333 0.00032 70 0.05333 -0.91333 0.00041 71 0.06667 -0.91333 0.00048 72 0.08000 -0.91333 0.00053 73 0.09333 -0.91333 0.00056 74 0.10667 -0.91333 0.00056 75 0.12000 -0.91333 0.00052 76 0.13333 -0.91333 0.00045 77 0.14667 -0.91333 0.00034 78 0.16000 -0.91333 0.00019

24、 79 0.01333 -0.90667 0.00013 80 0.02667 -0.90667 0.00025 81 0.04000 -0.90667 0.00037 82 0.05333 -0.90667 0.00047 83 0.06667 -0.90667 0.00055 84 0.08000 -0.90667 0.00062 85 0.09333 -0.90667 0.00066 86 0.10667 -0.90667 0.00068 87 0.12000 -0.90667 0.00066 88 0.13333 -0.90667 0.00061 89 0.14667 -0.90667

25、 0.00052 90 0.16000 -0.90667 0.00039 91 0.17333 -0.90667 0.00022 92 0.01333 -0.90000 0.00014 93 0.02667 -0.90000 0.00028 94 0.04000 -0.90000 0.00041 95 0.05333 -0.90000 0.00053 96 0.06667 -0.90000 0.00063 97 0.08000 -0.90000 0.00071 98 0.09333 -0.90000 0.00077 99 0.10667 -0.90000 0.00080 100 0.12000

26、 -0.90000 0.00080 101 0.13333 -0.90000 0.00077 102 0.14667 -0.90000 0.00070 103 0.16000 -0.90000 0.00059 104 0.17333 -0.90000 0.00044 105 0.18667 -0.90000 0.00024 106 0.01333 -0.89333 0.00016 107 0.02667 -0.89333 0.00031 108 0.04000 -0.89333 0.00045 109 0.05333 -0.89333 0.00059 110 0.06667 -0.89333

27、0.00071 111 0.08000 -0.89333 0.00080 112 0.09333 -0.89333 0.00088 113 0.10667 -0.89333 0.00093 114 0.12000 -0.89333 0.00095 115 0.13333 -0.89333 0.00093 116 0.14667 -0.89333 0.00089 117 0.16000 -0.89333 0.00080 118 0.17333 -0.89333 0.00067 119 0.18667 -0.89333 0.00049 120 0.20000 -0.89333 0.00027 12

28、1 0.01333 -0.88667 0.00017 122 0.02667 -0.88667 0.00034 123 0.04000 -0.88667 0.00050 124 0.05333 -0.88667 0.00065 125 0.06667 -0.88667 0.00078 126 0.08000 -0.88667 0.00090 127 0.09333 -0.88667 0.00099 128 0.10667 -0.88667 0.00106 129 0.12000 -0.88667 0.00110 130 0.13333 -0.88667 0.00110 131 0.14667

29、-0.88667 0.00107 132 0.16000 -0.88667 0.00101 133 0.17333 -0.88667 0.00090 134 0.18667 -0.88667 0.00074 135 0.20000 -0.88667 0.00055 136 0.21333 -0.88667 0.00030 137 0.01333 -0.88000 0.00019 138 0.02667 -0.88000 0.00037 139 0.04000 -0.88000 0.00055 140 0.05333 -0.88000 0.00071 141 0.06667 -0.88000 0

30、.00086 142 0.08000 -0.88000 0.00100 143 0.09333 -0.88000 0.00111 144 0.10667 -0.88000 0.00119 145 0.12000 -0.88000 0.00125 146 0.13333 -0.88000 0.00127 147 0.14667 -0.88000 0.00126 148 0.16000 -0.88000 0.00122 149 0.17333 -0.88000 0.00113 150 0.18667 -0.88000 0.00100 151 0.20000 -0.88000 0.00082 152

31、 0.21333 -0.88000 0.00060 153 0.22667 -0.88000 0.00033 154 0.01333 -0.87333 0.00020 155 0.02667 -0.87333 0.00040 156 0.04000 -0.87333 0.00060 157 0.05333 -0.87333 0.00078 158 0.06667 -0.87333 0.00095 159 0.08000 -0.87333 0.00109 160 0.09333 -0.87333 0.00122 161 0.10667 -0.87333 0.00133 162 0.12000 -

32、0.87333 0.00140 163 0.13333 -0.87333 0.00145 164 0.14667 -0.87333 0.00146 165 0.16000 -0.87333 0.00143 166 0.17333 -0.87333 0.00137 167 0.18667 -0.87333 0.00126 168 0.20000 -0.87333 0.00111 169 0.21333 -0.87333 0.00091 170 0.22667 -0.87333 0.00066 171 0.24000 -0.87333 0.00036 172 0.01333 -0.86667 0.

33、00022 173 0.02667 -0.86667 0.00044 174 0.04000 -0.86667 0.00065 175 0.05333 -0.86667 0.00084 176 0.06667 -0.86667 0.00103 177 0.08000 -0.86667 0.00120 178 0.09333 -0.86667 0.00134 179 0.10667 -0.86667 0.00146 180 0.12000 -0.86667 0.00156 181 0.13333 -0.86667 0.00162 182 0.14667 -0.86667 0.00165 183

34、0.16000 -0.86667 0.00165 184 0.17333 -0.86667 0.00161 185 0.18667 -0.86667 0.00152 186 0.20000 -0.86667 0.00139 187 0.21333 -0.86667 0.00122 188 0.22667 -0.86667 0.00099 189 0.24000 -0.86667 0.00071 190 0.25333 -0.86667 0.00038 191 0.01333 -0.86000 0.00024 192 0.02667 -0.86000 0.00047 193 0.04000 -0

35、.86000 0.00070 194 0.05333 -0.86000 0.00091 195 0.06667 -0.86000 0.00111 196 0.08000 -0.86000 0.00130 197 0.09333 -0.86000 0.00146 198 0.10667 -0.86000 0.00160 199 0.12000 -0.86000 0.00172 200 0.13333 -0.86000 0.00180 201 0.14667 -0.86000 0.00185 202 0.16000 -0.86000 0.00187 203 0.17333 -0.86000 0.0

36、0185 204 0.18667 -0.86000 0.00179 205 0.20000 -0.86000 0.00168 206 0.21333 -0.86000 0.00153 207 0.22667 -0.86000 0.00133 208 0.24000 -0.86000 0.00108 209 0.25333 -0.86000 0.00077 210 0.26667 -0.86000 0.00041 211 0.01333 -0.85333 0.00025 212 0.02667 -0.85333 0.00050 213 0.04000 -0.85333 0.00075 214 0

37、.05333 -0.85333 0.00098 215 0.06667 -0.85333 0.00120 216 0.08000 -0.85333 0.00140 217 0.09333 -0.85333 0.00158 218 0.10667 -0.85333 0.00174 219 0.12000 -0.85333 0.00188 220 0.13333 -0.85333 0.00198 221 0.14667 -0.85333 0.00205 222 0.16000 -0.85333 0.00209 223 0.17333 -0.85333 0.00209 224 0.18667 -0.85333 0.00205 225 0.20000 -0.85333 0.00197 226 0.21333 -0.85333 0.00184 227 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论