Fortran 讲解平面有限元源程序Word下载.docx

上传人:b****5 文档编号:17366792 上传时间:2022-12-01 格式:DOCX 页数:23 大小:24.70KB
下载 相关 举报
Fortran 讲解平面有限元源程序Word下载.docx_第1页
第1页 / 共23页
Fortran 讲解平面有限元源程序Word下载.docx_第2页
第2页 / 共23页
Fortran 讲解平面有限元源程序Word下载.docx_第3页
第3页 / 共23页
Fortran 讲解平面有限元源程序Word下载.docx_第4页
第4页 / 共23页
Fortran 讲解平面有限元源程序Word下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Fortran 讲解平面有限元源程序Word下载.docx

《Fortran 讲解平面有限元源程序Word下载.docx》由会员分享,可在线阅读,更多相关《Fortran 讲解平面有限元源程序Word下载.docx(23页珍藏版)》请在冰豆网上搜索。

Fortran 讲解平面有限元源程序Word下载.docx

*格式说明,似乎1X前多个/

WRITE(6,50)EK 

*输出EK

50 

FORMAT(1X,6E11.4) 

*同上

60 

RETURN 

*返回操作系统

END 

*程序结束

EK(I1-1,J1-1)=A*(B(I)*B(J)+A2*B(I+3)*B(J+3))

假如I=2,J=3

I1=2*I=4,J1=2*J=6,这样上面的语句就相当于:

EK(3,5)=A*(B

(2)*B(3)+A2*B(5)*B(6))

呵呵,就这意思。

一维、二维数组你总该知道吧?

B

(2)就是元素在数组中第二个,EK(3,5)第三行第五列那个元素(行列式)。

有限元离不开行列式,甚至需要用到张量(N维数组)。

FORTRAN在计算上得天独厚。

平面弹性力学有限元源程序(FORTRAN)

1.$DEBUG

2. 

 

PROGRAMPLANE

3. 

IMPLICITREAL*8(A-H,O-Z),INTEGER(I-N)

4. 

ALLOCATABLE:

:

IJK(:

:

),XY(:

),BCA(:

),SK(:

),STR(:

),MB(:

),ZB(:

),B(:

5. 

DELD(:

),TOD(:

),DELST(:

),TOST(:

),DELSUP(:

),TOTSUP(:

6. 

DIMENSIONEK(6,6)

7. 

CHARACTERPN*40,FN*12

8.

9. 

WRITE(*,'

(A)'

)'

本程序为计算平面问题的有限元程序'

10. 

特点:

(1)采用三结点三角形单元;

'

11. 

(2)采用等带宽存贮技术;

12. 

(3)采用高斯消元法解线性方程组。

13. 

(/A)'

输入计算问题名(PN):

14. 

READ(*,'

)PN

15. 

CALLFNAME(PN,'

.DAT'

FN)

16. 

(2A)'

输入数据文件名为:

FN

17. 

OPEN(5,FILE=FN,STATUS='

OLD'

18. 

.OUT'

19. 

(/2A)'

结果输出数据文件名为:

'

20. 

OPEN(6,FILE=FN,STATUS='

UNKNOWN'

21. 

.OU1'

22. 

参数输出数据文件名为:

23. 

OPEN(7,FILE=FN,STATUS='

24.

25. 

READ(5,*)NG,NE,MC,NX,NB,EO,VO,DENSITY,T

26. 

WRITE(6,120)NG,NE,MC,NX,NB

27. 

WRITE(6,130)EO,VO,DENSITY,T

28. 

READ(5,*)NWA,NWE,NWK,NWP

29. 

NT=2*NG

30. 

ALLOCATE(IJK(3,NE),XY(2,NG),BCA(7,NE),STR(3,NE),MB(2,NB),ZB(NB),B(NT))

31. 

ALLOCATE(DELD(2,NG,NX),TOD(2,NG),DELST(3,NE,NX),TOST(3,NE),DELSUP(NB,NX),TOTSUP(NB))

32. 

CALLCLEAR(2,NG,TOD)

33. 

CALLCLEAR(3,NE,TOST)

34. 

CALLCLEAR1(NB,TOTSUP)

35. 

IF(NG.EQ.0)THEN

36. 

STOP000

37. 

ENDIF

38. 

CALLINPUT(NG,NE,NB,IJK,XY,MB,ZB)

39. 

CALLCALND(NG,NE,IJK,ND)

40. 

ALLOCATE(SK(NT,ND))

41. 

IF(MC.EQ.0)THEN

42. 

E=EO

43. 

V=VO

44. 

ELSE

45. 

E=EO/(1-VO*VO)

46. 

V=VO/(1-VO)

47. 

48. 

IP=0

49. 

NX1=NX

50. 

A1=E/(1-V*V)/4.0

51. 

A2=0.5*(1-V)

52. 

CALLABC(NG,NE,IJK,XY,BCA,NWA)

53. 

CALLCLEAR(NT,ND,SK)

54. 

DO100K=1,NE

55. 

CALLKE(K,NE,T,V,A1,A2,IJK,BCA,EK,NWE)

56. 

CALLSUMK(K,NE,NT,ND,IJK,EK,SK)

57.100 

CONTINUE

58. 

CALLCHECK(NT,ND,SK)

59.110 

60. 

IP=IP+1

61. 

WRITE(6,'

(///1X,A,I4)'

)"

荷载工况="

IP

62. 

READ(5,*)NF,NP,NM

63. 

DOI=1,NT

64. 

B(I)=0.0

65. 

ENDDO

66. 

IF(NF.GT.0)THEN

67. 

CALLPF(NF,NT,B)

68. 

69. 

IF(NP.GT.0)THEN

70. 

CALLPP(NP,NG,NT,T,XY,B)

71. 

72. 

IF(NM.GT.0)THEN

73. 

CALLPG(NM,NE,NT,DENSITY,T,IJK,BCA,B)

74. 

75. 

DOI=1,NB

76. 

I1=2*(MB(1,I)-1)+2-MB(2,I)

77. 

DELSUP(I,IP)=-B(I1)

78. 

79. 

IF(NF.NE.0.OR.NP.NE.0.OR.NM.NE.0)THEN

80. 

CALLDBC(NB,ND,NT,NX,NX1,MB,ZB,SK,B)

81. 

CALLGAUSS(NT,ND,NX1,NX,SK,B,NWK,NWP)

82. 

CALLSTRESS(NE,NT,V,A1,A2,IJK,BCA,B,STR)

83. 

CALLTRES(IP,NG,NE,NX,NT,B,STR,DELD,TOD,DELST,TOST)

84. 

CALLSUPT(IP,NG,NE,NB,NX,T,V,A1,A2,IJK,MB,BCA,DELD,DELSUP,TOTSUP)

85. 

CALLOUTPUT(IP,NG,NE,NB,NX,MB,DELD,TOD,DELST,TOST,DELSUP,TOTSUP)

86. 

87. 

WRITE(*,'

(2x,A,I4,A)'

IP,"

没有荷载!

"

88. 

89. 

90. 

NX1=NX1-1

91. 

IF(NX1.GT.0)GOTO110

92.120 

FORMAT(1X,'

结点总数='

I3,1X,'

单元总数='

问题类型='

&

93. 

&

I1,1X,'

荷载工况数='

I2,1X,'

支承位移数='

I2)

94.130 

FORMAT(/1X,'

弹性模量='

E10.3,1X,'

泊松比='

F5.3,1X,'

密度='

E10.3,&

95. 

1X,'

厚度='

F6.3)

96. 

END

97.

98. 

99. 

SUBROUTINEGAUSS(NT,ND,NX1,NX,SK,B,NWK,NWP)

100. 

101. 

DIMENSIONSK(NT,ND),A(NT,NT),B(NT)

102. 

CALLCLEAR(NT,NT,A)

103. 

104. 

DOJ=1,ND

105. 

IF((I+J-1).LE.NT)THEN

106. 

A(I,I+J-1)=SK(I,J)

107. 

ENDIF

108. 

ENDDO

109. 

110. 

IF(NWK.EQ.1.AND.NX1.EQ.NX)THEN

111. 

WRITE(7,'

结构总刚(列出右上三角元素)"

112. 

113. 

WRITE(7,100)(A(I,J),J=1,NT)

114. 

115. 

116. 

IF(NWP.EQ.1)THEN

117. 

(1X,A,I3,A)'

第"

NX-NX1+1,"

荷载工况的荷载列阵"

118. 

119. 

(1x,E11.4)'

)B(I)

120. 

121. 

122. 

DO50K=1,NT-1

123. 

DO60I=K+1,NT

124. 

C1=A(K,I)/A(K,K)

125. 

DO70J=I,NT

126. 

A(I,J)=A(I,J)-C1*A(K,J)

127.70 

CONTINUE

128. 

B(I)=B(I)-C1*B(K)

129.60 

130.50 

131. 

B(NT)=B(NT)/A(NT,NT)

132. 

DO80I=NT-1,1,-1

133. 

DO90J=I+1,NT

134. 

B(I)=B(I)-A(I,J)*B(J)

135.90 

136. 

B(I)=B(I)/A(I,I)

137.80 

138.100 

FORMAT(1x,4000E10.3)

139. 

140.

141.

142. 

SUBROUTINECHECK(NT,ND,SK)

143. 

144. 

DIMENSIONSK(NT,ND)

145. 

M=0

146. 

147. 

IF(SK(I,1).LE.0.0)THEN

148. 

M=M+1

149. 

150. 

151. 

IF(M.GT.0)THEN

152. 

WRITE(*,*)"

总刚矩阵的对角元素为负值!

!

153. 

STOP2222

154. 

155. 

156.

157. 

SUBROUTINESTRESS(NE,NT,V,A1,A2,IJK,BCA,B,STR)

158. 

159. 

DIMENSIOND1(6),D2(3),B(NT),S(3,6),IJK(3,NE),BCA(7,NE),STR(3,NE)

160. 

CALLCLEAR(3,NE,STR)

161. 

DO10K=1,NE

162. 

DOI=1,3

163. 

II=IJK(I,K)

164. 

D1(2*(I-1)+1)=B(2*(II-1)+1)

165. 

D1(2*(I-1)+2)=B(2*(II-1)+2)

166. 

167. 

CALLCLEAR(3,6,S)

168. 

C1=2*A1/BCA(7,K)

169. 

DO20I=1,3

170. 

S(1,2*(I-1)+1)=C1*BCA(I,K)

171. 

S(1,2*(I-1)+2)=C1*V*BCA(I+3,K)

172. 

S(2,2*(I-1)+1)=C1*V*BCA(I,K)

173. 

S(2,2*(I-1)+2)=C1*BCA(I+3,K)

174. 

S(3,2*(I-1)+1)=C1*A2*BCA(I+3,K)

175. 

S(3,2*(I-1)+2)=C1*A2*BCA(I,K)

176.20 

177. 

CALLMATMUL(3,6,1,S,D1,D2)

178. 

179. 

STR(I,K)=D2(I)

180. 

181.10 

182. 

183.

184. 

SUBROUTINEOUTPUT(IP,NG,NE,NB,NX,MB,DELD,TOD,DELST,TOST,DELSUP,TOTSUP)

185. 

186. 

DIMENSIONMB(2,NB),DELD(2,NG,NX),TOD(2,NG)

187. 

DIMENSIONDELST(3,NE,NX),TOST(3,NE),DELSUP(NB,NX),TOTSUP(NB)

188. 

CHARACTERVE*6

189. 

WRITE(6,20)IP

190. 

WRITE(6,30)

191. 

DOI=1,NG

192. 

WRITE(6,40)I,DELD(1,I,IP),TOD(1,I),DELD(2,I,IP),T

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1