下面是依据上面的几个问题而修改过的程序,这个程序没有问题了,可以直接运行了
c bearing type: tilting pad.4pads
c !LBP(load between pad)
c !L/D ratio: 0.5
c !special items
c !mp: 0
c !β: 80
c !α/β: 0.5
program tilt4no24
IMPLICIT REAL*8 (A-H)
IMPLICIT REAL*8 (O-Z)
INTEGER I
DIMENSION T1K11(24),T1K12(24),T1K21(24),T1K22(24),T1B11(24),
&T1B12(24),T1B21(24), T1B22(24), ETH(24), QS(24), Qe(24), fJfai(24)
c DATA(ETH(I),I=1,24)/S1,ETH1,S2,ETH2,...,S12,ETH12/
C DATA(QS(I),I=1,24)/S1,QS1,S2,QS2,...,S12,QS12/
C DATA(Qe(I),I=1,24)/S1,QE1,S2,QE2,...,S12,QE12/
C DATA(fJΨ(I),I=1,24)/S1,fJΨ1,S2,fJΨ2,...,S12,fJΨ12/
C DATA(T1K11(I),I=1,24)/S1,T1K111,S2,T1K112,...,S12,T1K1112)
C DATA(T1K22(I),I=1,24)/S1,T1K221,S2,T1K222,...,S12,T1K2212)
C DATA(T1B11(I),I=1,24)/S1,T1B111,S2,T1B112,...,S12,T1B1112)
C DATA(T1B22(I),I=1,24)/S1,T1B221,S2,T1B222,...,S12,T1B2212)
DATA (ETH(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,0.259,
&0.168,0.103,0.0576,0.0277/
DATA (ETH(I),I=2,24,2)/0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,
&1.1,1.2/
DATA (QS(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,0.259,
&0.168,0.103,0.0576,0.0277/
DATA (QS(I),I=2,24,2)/0.459,0.803,1.07,1.26,1.34,1.35,1.39,1.39,1.
&39,1.35,1.27,1.14/
DATA (Qe(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,0.259,
&0.168,0.103,0.0576,0.0277/
DATA (Qe(I),I=2,24,2)/5.71,5.13,4.59,4.09,3.67,3.24,2.82,2.4,1.99,
&1.59,1.2,0.817/
DATA (fJfai(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,
&0.259,0.168,0.103,0.0576,0.0277/
DATA (fJfai(I),I=2,24,2)/54.3,27.4,17.7,12.9,10.3,8.39,6.64,
&5.27,4.1,3.14,2.34,1.65/
DATA (T1K11(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,
&0.259,0.168,0.103,0.0576,0.0277/
DATA (T1K11(I),I=2,24,2)/0.901,1.22,1.46,1.68,1.94,2.26,2.65,
&3.15,3.72,4.47,5.63,7.83/
DATA (T1K22(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,
&0.259,0.168,0.103,0.0576,0.0277/
DATA (T1K22(I),I=2,24,2)/0.901,1.22,1.46,1.68,1.94,2.26,2.65,
&3.15,3.72,4.47,5.63,7.83/
DATA (T1B11(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,
&0.259,0.168,0.103,0.0576,0.0277/
DATA (T1B11(I),I=2,24,2)/10.8,6.03,4.37,3.61,3.33,3.21,3.06,
&3.01,2.97,2.99,3.11,3.05/
DATA (T1B22(I),I=1,23,2)/5.76,2.68,1.59,1.05,0.756,0.55,0.381,
&0.259,0.168,0.103,0.0576,0.0277/
DATA (T1B22(I),I=2,24,2)/10.8,6.03,4.37,3.61,3.33,3.21,3.06,
&3.01,2.97,2.99,3.11,3.05/
C
WRITE(*,*) "INPUT A SOMFELD NUMBER:"
READ(*,*) S0
c write (*,*) 'ss==',ss
c pause
c SS=5.0;S0=5.0
SS=5.0
do I=1,21,2
IF ((S0 .GE. ETH(I)).AND.(SS.LE.ETH(I+2)))THEN
call LINEAREVALU(S0,ETH(I),ETH(I+1),ETH(I+2),ETH(I+3),
&FUNC)
ELSE
EXIT
ENDIF
END DO
stop
end
c 线形插值
SUBROUTINE LINEAREVALU(S0,FUNC1,FUNC2,FUNC3,FUNC4,FUNC)
implicit none
real*8 FUNC1,FUNC2,FUNC3,FUNC4,S0
real*8 FUNC ! 插出来的值
c write (*,*) 'S0,FUNC1,FUNC2,FUNC3,FUNC4=',
c &S0,FUNC1,FUNC2,FUNC3,FUNC4,FUNC
c pause
FUNC=FUNC2+(FUNC4-FUNC2)/(FUNC3-FUNC1)*(S0-FUNC1)
WRITE(*,*) FUNC
RETURN
END |