Fortran Coder

查看: 11415|回复: 1
打印 上一主题 下一主题

[求助] 还是上个压杆稳定程序,编译连接通过但运行未响应,大神来...

[复制链接]

3

帖子

2

主题

0

精华

新人

F 币
29 元
贡献
16 点
跳转到指定楼层
楼主
发表于 2014-11-4 23:32:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
001PROGRAM main
002         
003      PARAMETER(PI=3.1415926)
004        REAL E1,E2,Js1,Js2,Os1,Os2,Ob1,Ob2,a1,a2,b1,b2
005     $ !REAL ii,Nj,nR,nT
006 
007        PARAMETER(E1=210000000000.0,E2=200000000000.0,E3=200000000000.0,
008     $        E4=120000000000.0,E5=12000000000.0,
009     $        Js1=61.4,Js2=60,Js3=1,Js4=1,Js5=1,
010     $        Jp1=80,Jp2=90,Jp3=1,Jp4=1,Jp5=1,
011     $        Os1=235000000,Os2=306000000,Os3=353000000,
012     $        Os4=1, Os5=1,
013     $    Ob1=372000,Ob2=471000,Ob3=1,Ob4=1,Ob5=1,
014     $        a1=304000000,
015     $        a2=460000000,a3=578000000,a4=332000000,a5=28700000,
016     $        b1=1120000,b2=2570000,b3=3744000,b4=1454000,b5=190000
017     $
018     $        )
019                  
020        CHARACTER *8 ORIGIN
021        !CHARACTER *1 N                   !杆件类型选择
022         !所需计算的杆件数量,也用来循环
023        PARAMETER  (Nj=5,nT=5,ii=5,nR=5)
024        INTEGER S1,S2
025        PARAMETER (S1=5,S2=5)!S1行表示不同杆件,S2列分别表示输入对象
026         REAL SOLV(S1,S2)
027         DIMENSION O(Nj)
028         DIMENSION Ocr(nR)
029              DIMENSION J(nT)
030         INTEGER N1(ii)
031     $!计算结果数组和表示应力的数组
032                                                                !  S1为S2为列数
033      INTEGER U1
034        U1=3
035        INTEGER n=1
036         ORIGIN='PRE.DAT'
037        OPEN(UNIT=U1,FILE=ORIGIN,STATUS='OLD',
038     $        ACCESS='SEQUENTIAL',FORM='FORMATTED')
039        READ(U1,100) N1(n),(SOLV(n,i),i=1,S2)  !杆件材料,边界,直径,长度,外力
040        DO 10 WHILE(N1(n).NE.' '.AND.n.LT.S2)
041                n=n+1
042        READ(U1,100)N1(n),(SOLV(n,i),i=1,S2)
04310    CONTINUE                                !在输入为空格或n大于给出数目时停止输入
044          n=n-1
045        DO 20 I=1,n
046        !N=SOLVE(I,1),L=SOLVE(I,2),D=SOLVE(I,3),
047     $ ! F=SOLVE(I,4),U=SOLVE(I,5)
048     $ !上为输入参数格式       
049        J(I)=4*SOLV(I,5)*SOLV(I,2)/SOLV(I,3)                           !拉姆达
050        O(I)=4*SOLV(I,4)/(PI*SOLV(I,4)*SOLV(I,4))                        !应力
051        SELECTCASE (N1(I))
052         CASE(1)                                                         
053                IF(J(I).GE.JS1) THEN
054                        IF(J(I).GE.JP1) THEN
055                        Ocr(I)=((PI*PI)*E1)/(J(I)*J(I))
056                        ELSE
057                        Ocr(I)=a1-b1*J(I)
058                        ENDIF
059                ELSE
060                        Ocr(I)=Os1
061                ENDIF
062         CASE(2)
063                IF(J(I).GE.JS2) THEN
064                        IF(J(I).GE.JP2) THEN
065                        Ocr(I)=((PI*PI)*E2)/(J(I)*J(I))
066                        ELSE
067                        Ocr(I)=a2-b2*J(I)
068                        ENDIF
069                ELSE
070                        Ocr(I)=Os2
071                ENDIF
072         CASE(3)
073                 IF(J(I).GE.JS3) THEN
074                 
075                        IF(J(I).GE.JP3) THEN
076                        Ocr(I)=((PI*PI)*E3)/(J(I)*J(I))
077                        ELSE
078                        Ocr(I)=a3-b3*J(I)
079                        ENDIF
080                ELSE
081                        Ocr(I)=Os3
082                   ENDIF
083       CASE(4)
084                 IF(J(I).GE.JS4) THEN
085                        IF(J(I).GE.JP4) THEN
086                        Ocr(I)=((PI*PI)*E4)/(J(I)*J(I))
087                        ELSE
088                        Ocr(I)=a4-b4*J(I)
089                        ENDIF
090                ELSE
091                          Ocr(I)=Os4
092                ENDIF
093         
094       CASE(5)
095                 IF(J(I).GE.JS5) THEN
096                        IF(J(I).GE.JP5) THEN
097                        Ocr(I)=((PI*PI)*E5)/(J(I)*J(I))
098                        ELSE
099                        Ocr(I)=a5-b5*J(I)
100                        ENDIF
101                ELSE
102                          Ocr(I)=Os5
103                ENDIF
104      ENDSELECT
10520        CONTINUE
106        OPEN(UNIT=2,FILE='AFT.DAT',STATUS='NEW',
107     $        ACCESS='SEQUENTIAL',FORM='FORMATTED')
108        WRITE(2,*)'计算结果如下所示:'
109        DO 40 I=1,n
110             IF(O(I).GE.Ocr(I)) THEN
111                WRITE(2,200) 'σ=',O(I),'σcr=',Ocr(I),'σ>= σcr,故压杆失稳'
112            ELSE
113                WRITE(2,200) 'σ=',O(I),'σcr=',Ocr(I),'σ<= σcr,故压杆稳定'
114            ENDIF
115 
11640    CONTINUE
117            CLOSE(U1)
118            CLOSE(2)
119             WRITE(*,*)'计算完成,请自己查看输出结果文档。'
120  100        FORMAT(1x,I1,5F6.2)
121  200        FORMAT(1X,A,F6.2,A,F6.2,A)
122             END
123         
124        


大神,按你所说的,我又改了一下,编译连接通过了,但是运行时就未响应.我看了看,好像循环没什么问题呀?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

742

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
726 元
贡献
371 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-11-5 11:04:08 | 只看该作者
没有输入文件,无法确定运行后的情况。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-5-2 13:49

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

快速回复 返回顶部 返回列表