有限元编程的c++实现算例

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

有限元编程的c++实现算例

1. #include<>

2. #include<>

3.

4.

5. #define ne 3 #define nj 4 #define nz

6 #define npj 0 #define npf

1 #define nj3 1

2 #define dd

6 #define e0 #define

a0 #define i0 #define pi

16.

17.

18. int jm[ne+1][3]={{0,0,0},{0,1,2},{0,2,3},{0,4,3}}; /*gghjghg*/

19. double gc[ne+1]={,,,};

20. double gj[ne+1]={,,,};

21. double mj[ne+1]={,a0,a0,a0};

22. double gx[ne+1]={,i0,i0,i0};

23. int zc[nz+1]={0,1,2,3,10,11,12};

24. double pj[npj+1][3]={{,,}};

25. double pf[npf+1][5]={{0,0,0,0,0},{0,-20,,,}};

26. double kz[nj3+1][dd+1],p[nj3+1];

27. double pe[7],f[7],f0[7],t[7][7];

28. double ke[7][7],kd[7][7];

29.

30.

31.

36. void jdugd(int);

38. void zb(int);

39. void gdnl(int);

40. void dugd(int);

41.

42.

43. void main()

45. {

46. int i,j,k,e,dh,h,ii,jj,hz,al,bl,m,l,dl,zl,z,j0;

47. double cl,wy[7];

48. int im,in,jn;

49.

50.

54. if(npj>0)

55. {

56. for(i=1;i<=npj;i++)

57. { j=pj[i][2];

59. p[j]=pj[i][1];

60. }

61. }

62. if(npf>0)

63. {

64. for(i=1;i<=npf;i++)

65. { hz=i;

67. gdnl(hz);

68. e=(int)pf[hz][3];

69. zb(e); for(j=1;j<=6;j++) {

72. pe[j]=;

73. for(k=1;k<=6;k++) {

75. pe[j]=pe[j]-t[k][j]*f0[k];

76. }

77. }

78. al=jm[e][1];

79. bl=jm[e][2];

80. p[3*al-2]=p[3*al-2]+pe[1]; p[3*al-1]=p[3*al-1]+pe[2]; 82. p[3*al]=p[3*al]+pe[3];

83. p[3*bl-2]=p[3*bl-2]+pe[4];

84. p[3*bl-1]=p[3*bl-1]+pe[5];

85. p[3*bl]=p[3*bl]+pe[6];

86. }

87. }

88.

89.

90. for(e=1;e<=ne;e++) {

94. dugd(e); for(i=1;i<=2;i++) {

97. for(ii=1;ii<=3;ii++)

98. {

99. h=3*(i-1)+ii; dh=3*(jm[e][i]-1)+ii; for(j=1;j<=2 ;j++)

102. {

103. for(jj=1;jj<=3;jj++) {

105. l=3*(j-1)+jj; zl=3*(jm[e][j]-1)+jj; dl=zl-dh+ 1; if(dl>0)

109. kz[dh][dl]=kz[dh][dl]+ke[h][l]; }

111. }

112. }

113. }

114. }

115.

116. for(i=1;i<=nz;i++) {

119. z=zc[i]; kz[z][l]=; for(j=2;j<=dd;j++)

122. {

123. kz[z][j]=; }

125. if((z!=1))

126. {

127. if(z>dd)

128. j0=dd;

129. else if(z<=dd)

130. j0=z; for(j=2;j<=j0;j++)

132. kz[z-j+1][j]=;

133. }

134. p[z]=; }

136.

137.

138.

139.

140. for(k=1;k<=nj3-1;k++)

141. {

142. if(nj3>k+dd-1) im=k+dd-1;

144. else if(nj3<=k+dd-1)

145. im=nj3;

146. in=k+1;

147. for(i=in;i<=im;i++)

148. {

149. l=i-k+1;

150. cl=kz[k][l]/kz[k][1]; jn=dd-l+1;

152. for(j=1;j<=jn;j++)

153. {

154. m=j+i-k;

155. kz[i][j]=kz[i][j]-cl*kz[k][m];

156. }

157. p[i]=p[i]-cl*p[k]; }

159. }

160.

161.

162.

163.

164. p[nj3]=p[nj3]/kz[nj3][1]; for(i=nj3-1;i>=1;i--) 166. {

167. if(dd>nj3-i+1)

相关文档
最新文档