声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5197|回复: 14

[Fortran] [下载]随机有限元程序及算例

[复制链接]
发表于 2006-2-23 15:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本程序由FORTRAN语言编写,可以在DOS、POWER STATION等环境下运行。输入的数据及输出的结果采用数据文件格式。

  1. !        main program for SFEM          
  2.           COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV,NS,NQ
  3.       COMMON/CC/N,NH,JR(2,800),R(1600)
  4.       COMMON /CB/EO,VO,W,T,S,H11,H12,H21,H22,ME(3),BI(3),CI(3),ER,TA2,NB,L
  5.       COMMON/CD/EE(20),SS(20),A1(6),XA(20),YA(20),JA(20),SD(20),ED(20),SP(20),EP(20),A2(6,50),KL1,KL2,CH(4),KL
  6.       open (5,FILE='D:\Str.及SFEM\程序及算例\INPUT.DAT',status='OLD',ACCESS='SEQUENTIAL')
  7.           open (6,FILE='D:\Str.及SFEM\程序及算例\OUTPUT.DAT',status='UNKNOWN',ACCESS='SEQUENTIAL')
  8.           READ(5,*)NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,NV,NQ
  9. !     READ(5,*)ER,TA1,TA2,DH
  10. !     WRITE(6,4)ER,TA1,TA2,DH
  11. !  4  FORMAT(5X,'ER=',F13.5,3X,'TA1=',F11.3,3X,'TA2=',F11.3,3X,'DH=',F11.3)
  12.           READ(5,*)ER,TA2,DH
  13.       WRITE(6,4)ER,TA2,DH
  14.    4  FORMAT(5X,'ER=',F13.5,3X,'TA2=',F11.3,3X,'DH=',F11.3)
  15.       WRITE(6,20)NP,NE,NM,NR,NI,NQ,NL,NG,ND,NC,NA,NV
  16.   20  FORMAT(//9X,'NP=',I5,3X,'NE=',I5,3X,'NM=',I5,3X,'NR=',I5,3X, &
  17.               'NI=',I5,3X,'NQ=',I5/9X,'NL=',I5,3X,'NG=',I5,3X, &
  18.                         'ND=',I5,3X,'NC=',I5,3X,'NA=',I5,3X,'NV=',I5)
  19. !     READ(5,*) KL1,KL2
  20. !     WRITE(6,30)KL1,KL2
  21. ! 30  FORMAT(10X,'KL1=',I5,5X,'KL2=',I5)
  22. !          IF(NI.LT.0) GOTO 55
  23. !     READ(5,*)(CH(I),I=1,4)
  24. !     WRITE(6,54)(CH(I),I=1,4)
  25. ! 54  FORMAT(5X,'CH(I)=',4F11.3)
  26.   55  READ(5,*)(EE(I),I=1,NV)
  27.       READ(5,*)(SS(I),I=1,NV)
  28.       WRITE(6,122) (EE(I),I=1,NV)
  29.       WRITE(6,123) (SS(I),I=1,NV)
  30. 122  FORMAT(25X,'THE   MEAN   VALUES ===EE'//(10X,5F12.3))
  31. 123  FORMAT(25X,'THE STANDARD DEVIATIONS ===SS'//(10X,5F12.3))
  32.       CALL CONDA
  33.       WRITE(6,111)
  34. 111  FORMAT(5X,'END')
  35.       STOP
  36.       END

  37.           !     *********************************************************
  38.       SUBROUTINE CONDA
  39.       DIMENSION X(800),Y(800),MEO(2,1000),AE(4,5),A(20,20), &
  40.                   SQ(20,20),AS(20,20)
  41.       COMMON /CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV
  42.       COMMON /CC/N,NH,JR(2,800),R(1600)
  43.       COMMON /CB/EO,VO,W,T,S,H11,H12,H21,H22,ME(3),BI(3),CI(3),ER, &
  44.                    TA1,TA2,NB,L
  45.           COMMON /CD/EE(20),SS(20)
  46.       READ(5,*)((AE(I,J),I=1,4),J=1,NM)
  47.       READ(5,*)(X(I),I=1,NP)
  48.       READ(5,*)(Y(I),I=1,NP)
  49.       READ(5,*)((MEO(I,J),I=1,2),J=1,NE)
  50.       WRITE(6,81)((AE(I,J),I=1,4),J=1,NM)
  51.       WRITE(6,82)(X(I),I=1,NP)
  52.       WRITE(6,83)(Y(I),I=1,NP)
  53.       WRITE(6,84)((MEO(I,J),I=1,2),J=1,NE)
  54. 81   FORMAT(//25X,'EO*VO*W*T**'//(5X,4F15.4))
  55. 82   FORMAT(//20X,'X--COORDINATE'//(5X,10F7.2))
  56. 83   FORMAT(//20X,'Y--COORDINATE'//(5X,10F7.2))
  57. 84   FORMAT(//20X,'ELEMENT-DATA'//(5X,10I7))
  58. 90   CALL  MR
  59.       CALL  FORMMA(AE,X,Y,MEO,NM,NP,NE,NV,A,SQ,AS)
  60.       RETURN
  61.       END
  62. !     ****************************************************************
  63.       SUBROUTINE MR
  64.       DIMENSION JC(50),JR(2,800)
  65.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC
  66.       COMMON/CC/N,NH,JR,R(1600)
  67.       DO 10 I=1,NP
  68.       DO 10 J=1,2
  69.   10  JR(J,I)=1
  70.       IF(NR) 20,20,30
  71.   30  READ(5,*)(JC(I),I=1,NR)
  72.       WRITE(6,90)(JC(I),I=1,NR)
  73.   90  FORMAT(/20X,'CONSTRINED MESSAGE-JC='//(5X,10I7))
  74.       DO 50 I=1,NR
  75.       K=JC(I)
  76.       J=K/100
  77.       L=(K-J*100)/10
  78.       M=K-J*100-L*10
  79.       JR(1,J)=L
  80.   50  JR(2,J)=M
  81.   20  N=0
  82.       DO 80 I=1,NP
  83.       DO 80 J=1,2
  84.       IF(JR(J,I)) 80, 80, 70
  85.   70  N=N+1
  86.       JR(J,I)=N
  87.   80  CONTINUE
  88.       RETURN
  89.       END
  90. !     **************************************************************
  91.       SUBROUTINE FORMMA(AE,X,Y,MEO,KM,KP,KE,KV,A,SQ,AS)
  92.       DIMENSION MA(2000),X(KP),Y(KP),MEO(2,KE),AE(4,KM),R(1600), &
  93.                              JR(2,800),A(KV,KV),SQ(KV,KV),AS(KV,KV),ME(3),NN(6), &
  94.                 SK(100000),RD(1600,20),R1(1600)
  95.       
  96.         COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV,NS,NQ
  97.       COMMON/CC/N,NH,JR,R/CB/EO,VO,W,T,S,H11,H12,H21,H22,ME,BI(3), &
  98.              CI(3),ER,TA1,TA2,NB,L/CD/EE(20),SS(20),A1(6),XA(20),        &
  99.              YA(20),JA(20),SD(20),ED(20),SP(20),EP(20),A2(6,50),KL1, &
  100.              KL2,CH(4)
  101. !     DATA (XA(I),I=1,7)/88.,15.5,2.7,1.15E6,2.85,3.2E6,200.0/
  102.       READ(5,*)(JA(I),I=1,NV)
  103.       WRITE(6,7) (JA(I),I=1,NV)
  104.    7  FORMAT (25X,'DISTRIBUTION  PARAMETER**********'//(10X,10I5))
  105.       READ(5,*) NS
  106.       WRITE(6,2) NS
  107.   2   FORMAT(5X,'CORRELATED VARIABLE MESSAGE  **NS=',I5)
  108.       IF(NS.EQ.0) GOTO 130
  109.       READ(5,*) EOB
  110.       WRITE(6,120) EOB
  111. 120  FORMAT(10X,'CONTRAL ERROR    **EOB=',F13.5)
  112.       CALL COV (NV,A,SQ,EOB)
  113. 130  DO 8 I=1,NV
  114.       XA(I)=0.0
  115.       XA(I)=EE(I)
  116.       YA(I)=0.0
  117. 8    CONTINUE
  118.       DO 10 I=1,N
  119. 10   MA(I)=0
  120.       DO 20 IE=1,NE
  121.       CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  122.       DO 30 I=1,3
  123.       JB=ME(I)
  124.       DO 30 M=1,2
  125.       JJ=2*(I-1)+M
  126.       NN(JJ)=JR(M,JB)
  127. 30   CONTINUE
  128.       L=N
  129.       DO 80 I=1,6
  130.       IF(NN(I)) 80,80,60
  131. 60   IF(NN(I)-L) 70,80,80
  132. 70   L=NN(I)
  133. 80   CONTINUE
  134.       DO 15 M=1,6
  135.       JP=NN(M)
  136.       IF(JP.EQ.0) GOTO 15
  137.       IF(JP-L.GT.MA(JP))MA(JP)=JP-L
  138. 15   CONTINUE
  139. 20   CONTINUE
  140.       MX=0
  141.       MA(1)=1
  142.       DO 95 I=2,N
  143.       IF(MA(I).GT.MX) MX=MA(I)
  144.       MA(I)=MA(I)+MA(I-1)+1
  145.   95  CONTINUE
  146.       MX=MX+1
  147.       NH=MA(N)
  148.       WRITE(6,115)N,NH,MX
  149. 115  FORMAT(/22X,'T0TAL DEGREES OF FREEDOM N=',I5/25X,'TOTAL- &
  150.             STORAGE','NH=',I6/24X,'MAX-SEMI-BANDWIDTH    MX=',I5)
  151.       IF(NH.GT.100000) GOTO 111
  152.       JDM=0
  153.       DO 47 I=1,NV
  154.       SP(I)=SS(I)
  155.   47  EP(I)=EE(I)
  156.       GOTO 333
  157. 111  WRITE(6,222)
  158. 222  FORMAT(/20X,'TOTAL STORAGE IS GREATER THAN 100000')
  159.       STOP
  160. 333  DO 5 I=1,NV
  161.       SD(I)=SP(I)
  162.       ED(I)=EP(I)
  163.       J1=JA(I)
  164.       JJ=J1-2
  165.       IF (JJ) 5,3,4
  166.    3  VV=(SS(I)/EE(I))**2
  167.       SL=ALOG(1+VV)
  168.       IF (XA(I).GE.0.0) GOTO 6
  169.       XA(I)=ABS(XA(I))
  170.    6  SP(I)=XA(I)*SQRT(SL)
  171.       EP(I)=XA(I)*(1.0+ALOG(EE(I))-ALOG(XA(I)*SQRT(1.0+VV)))
  172.       GOTO 5
  173.   4   AR=1.28255/SS(I)
  174.       AK=EE(I)-0.5772/AR
  175.       Q=EXP(-AR*(XA(I)-AK))
  176.       AF=EXP(-Q)
  177.       AGF=AR*Q*EXP(-Q)
  178.       AA=1.0-AF
  179.       B0=1.570796288
  180.       B1=3.706987906E-2
  181.       B2=-8.364353589E-4
  182.       B3=-2.250947176E-4
  183.       B4=6.841218299E-6
  184.       B5=5.824238515E-6
  185.       B6=-1.04527497E-6
  186.       B7=8.360937017E-8
  187.       B8=-3.231081277E-9
  188.       B9=3.657763036E-11
  189.       B10=6.936233982E-13
  190.       IF(AA-0.5) 230,240,250
  191. 230   BB=AA
  192.       GOTO 255
  193. 250   BB=1.0-AA
  194. 255   YY=-ALOG(4.0*BB*(1.0-BB))
  195.       U1=YY*(B5+YY*(B6+YY*(B7+YY*(B8+YY*(B9+YY*B10)))))
  196.       UU=YY*(B0+YY*(B1+YY*(B2+YY*(B3+YY*(B4+U1)))))
  197.       UB=SQRT(UU)
  198.       IF(AA.LT.0.5) GOTO 260
  199.       UB=-UB
  200.       GOTO 260
  201. 240   UB=0.0
  202. 260   SP(I)=EXP(-UB*UB/2.0)/SQRT(2.0*3.1416)/AGF
  203.       EP(I)=XA(I)-SP(I)*UB
  204.    5  CONTINUE
  205.       DO 14 I=1,NM
  206. !      K=2*(I+1)
  207.           K=3*(I-1)+4
  208.       AE(1,I)=XA(K)
  209.   14  AE(3,I)=XA(K-1)
  210.       JDM=JDM+1
  211.       IF (JDM.GT.6) GOTO 75
  212.       WRITE(6,23) JDM
  213.   23  FORMAT(10X,'ITERATE NUMBER',5X,'JDM=',I5)
  214.       WRITE(6,37)(SD(I),I=1,NV)
  215.       WRITE(6,40)(ED(I),I=1,NV)
  216.   37  FORMAT(25X,'THE LAST STANDARD DEVIATIONS ---SD'//(10X,5F12.3))
  217.   40  FORMAT(25X,'THE LAST MEAN VALUES -----------ED'//(10X,5F12.3))
  218.       WRITE(6,39)(SP(I),I=1,NV)
  219.   39  FORMAT(25X,'THE NEXT STANDARD DEVIATIONS----SP'//(10X,5F12.3))
  220.       WRITE(6,41)(EP(I),I=1,NV)
  221.   41  FORMAT(25X,'THE NEXT MEAN VALUES------------EP'//(10X,5F12.3))
  222.       WRITE(6,38)AE
  223.   38  FORMAT(5X,'AE='//(4F13.4))
  224.       CALL MGK(AE,X,Y,MEO,MA,SK,NM,NP,NE,N,NH)
  225.       CALL LOAD(AE,X,Y,MEO,NM,NP,NE)
  226.       WRITE(6,444)
  227. 444   FORMAT(/35X,'NODAL FORCES'//15X,'NODE',13X,'X-COMP',13X,'Y-COMP')
  228.       CALL OUTPUT
  229.       IF(ND.GT.0) CALL TREAT(SK,MA,NH,N)
  230.       CALL DECOMP(SK,MA,NH,N)
  231.       CALL FOBA(SK,MA,NH,N)
  232.          WRITE(6,555)
  233. 555   FORMAT(/35X,'NODAL DISPLACEMENTS'//15X,'NODE',13X, &
  234.          'X-COMP',13X,'Y-COMP')
  235.          CALL OUTPUT
  236.          WRITE(6,666)
  237. 666    FORMAT(//35X,'ELEMENT STRESSES'//1X,'ELEMENT',2X,'X-STRESS',2X, &
  238.                  'Y-STRESS',2X,'XY-STRESS',2X,'MAX-STRESS',2X,'MIN-STRESS' &
  239.                  ,2X,'ANGLE'//)
  240.       CALL CES(AE,X,Y,MEO,NM,NP,NE)
  241.       IF(NC) 65,65,85
  242.   85  CALL ERFAC(AE,X,Y,MEO,NM,NP,NE)
  243.   65  CALL RIC(GY,AE,X,Y,MEO,MA,SK,NH,N,NP,NE,NM,RD,R1,NV,A,SQ,AS)
  244.       GY=ABS(GY)
  245.       IF (GY.GT.ER) GOTO 333
  246.   75  RETURN
  247.       END
  248. !     ******************************************************************
  249.       SUBROUTINE DIV(JJ,AE,X,Y,MEO,KM,KP,KE)
  250.       DIMENSION ME(3),BI(3),CI(3),X(KP),Y(KP),AE(4,KM),MEO(2,KE)
  251.       COMMON/CB/EO,VO,W,T,S,A(4),ME,BI,CI,ER,TA1,TA2,NB,L
  252.       II=MEO(1,JJ)
  253.       I=II/1000
  254.       ME(1)=I
  255.       J=II-I*1000
  256.       ME(2)=J
  257.       IJ=MEO(2,JJ)
  258.       M=IJ/1000
  259.       ME(3)=M
  260.       IK=IJ-M*1000
  261.       L=IK/10
  262.       NB=IJ-M*1000-L*10
  263.       BI(1)=Y(J)-Y(M)
  264.       CI(1)=X(M)-X(J)
  265.       BI(2)=Y(M)-Y(I)
  266.       CI(2)=X(I)-X(M)
  267.       BI(3)=Y(I)-Y(J)
  268.       CI(3)=X(J)-X(I)
  269. !     WRITE(6,2) I,J,M,L,NB,CI(2),BI(2),CI(3),BI(3)
  270. !  2  FORMAT(/5X,5I5,5X,4F13.2)
  271.       S=(BI(2)*CI(3)-CI(2)*BI(3))/2.0
  272.       IF(S) 40,40,50
  273.   40  WRITE(6,222) JJ
  274. 222  FORMAT(/20X,'ZERO OR NEGATIVE AREA',10X,'ELEMENT NUMBER',I5)
  275.       STOP
  276.   50  EO=AE(1,L)
  277.       VO=AE(2,L)
  278.       W=AE(3,L)
  279.       T=AE(4,L)
  280.       RETURN
  281.       END
  282. !     *****************************************************************
  283.       SUBROUTINE MGK(AE,X,Y,MEO,MA,SK,KM,KP,KE,KN,KH)
  284.       DIMENSION AE(4,KM),X(KP),Y(KP),MEO(2,KE),MA(KN),SK(KH),        &
  285.                 JR(2,800),NN(6),ME(3),BI(3),CI(3),B(6,6)
  286.       COMMON /CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1
  287.       COMMON /CB/EO,VO,W,T,S,H11,H12,H21,H22,ME,BI,CI,ER,TA1,TA2,NB
  288.       COMMON/CC/N,NH,JR,R(1600)/CD/EE(20),SS(20),A1(6), &
  289.                 XA(20),YA(20),JA(20)
  290.       DO 10 I=1,NH
  291.   10  SK(I)=0.0
  292.       DO 20 IE=1,NE
  293.       CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  294.       DO 30 I=1,3
  295.       DO 30 J=1,3
  296.       CALL KRS(BI(I),BI(J),CI(I),CI(J))
  297.       B(2*I-1,2*J-1)=H11
  298.       B(2*I-1,2*J)=H12
  299.       B(2*I,2*J-1)=H21
  300.       B(2*I,2*J)=H22
  301.   30  CONTINUE
  302.       DO 40 I=1,3
  303.       J2=ME(I)
  304.       DO 40 J=1,2
  305.       J3=2*(I-1)+J
  306.       NN(J3)=JR(J,J2)
  307.   40  CONTINUE
  308.       DO 60 I=1,6
  309.       DO 60 J=1,6
  310.       IF(NN(J).EQ.0.OR.NN(I).LT.NN(J)) GOTO 60
  311.       JJ=NN(I)
  312.       JK=NN(J)
  313.       JL=MA(JJ)
  314.       JM=JJ-JK
  315.       JN=JL-JM
  316.       SK(JN)=SK(JN)+B(I,J)
  317.   60  CONTINUE
  318.   20  CONTINUE
  319.       WRITE(6,555)NN1
  320. 555  FORMAT(5X,'NN1=',I3)
  321.       IF(NN1.EQ.0) GOTO 100
  322.       WRITE(6,444)(SK(I),I=1,NH)
  323. 444  FORMAT(5X,'SK=',5F13.4)
  324. 100  CONTINUE
  325.       RETURN
  326.       END
  327. !     *****************************************************************
  328.       SUBROUTINE LOAD(AE,X,Y,MEO,KM,KP,KE)
  329.       DIMENSION AE(4,KM),X(KP),Y(KP),MEO(2,KE),ME(3),R(1600),NF(50), &
  330.                 FV(2,50),JR(2,800)
  331.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV,NS,NQ
  332.       COMMON/CC/N,NH,JR,R/CB/EO,VO,W,T,S,A(4),ME,BI(3),CI(3),ER,TA1, &
  333.                 TA2,NB,L
  334.       COMMON/CD/EE(20),SS(20),AA(6),XA(20)
  335.       DO 10 I=1,N
  336.   10  R(I)=0.0
  337.       IF(NG) 70,70,30
  338.   30  DO 20 IE=1,NE
  339.       CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  340.       DO 50 I=1,3
  341.       J2=ME(I)
  342.       J3=JR(2,J2)
  343.       IF(J3) 50,50,40
  344.   40  R(J3)=R(J3)-T*W*S/3.0
  345.   50  CONTINUE
  346.   20  CONTINUE
  347.   70  IF(NL) 200,200,80
  348.   80  READ(5,*)(NF(I),I=1,NL)
  349.       READ(5,*)((FV(I,J),I=1,2),J=1,NL)
  350.       WRITE(6,25)(NF(I),I=1,NL)
  351.       WRITE(6,35)((FV(I,J),I=1,2),J=1,NL)
  352.   25  FORMAT(//20X,'NODES OF APPLIED LOAD**NF='//(10X,10I6))
  353.   35  FORMAT(//20X,'LUMPED-LOADS**FV='//(10X,6F10.4))
  354.       DO 100 I=1,NL
  355.       JJ=NF(I)
  356.       J=JR(1,JJ)
  357.       M=JR(2,JJ)
  358.       IF(J.GT.0)R(J)=R(J)+FV(1,I)
  359.       IF(M.GT.0) R(M)=R(M)+FV(2,I)
  360. 100  CONTINUE
  361. 200  IF(NQ) 90,90,210
  362. 210  DO 250 IE=1,NE
  363.       CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  364.       IF(L.GT.2) GOTO 250
  365.       JK=ME(2)
  366.       IF(Y(JK)-62.0) 215,230,220
  367. 220  DO 218 I=1,3
  368.       J2=ME(I)
  369.       J3=JR(1,J2)
  370.       IF(J3) 218,218,222
  371. 222  R(J3)=R(J3)+0.643*T*S/3.0
  372. 218  CONTINUE
  373.       GOTO 250
  374. 230  DO 228 I=1,3
  375.       J2=ME(I)
  376.       J3=JR(1,J2)
  377.       IF(J3) 228,228,232
  378. 232  R(J3)=R(J3)+0.421*T*S/3.0
  379. 228  CONTINUE
  380.       GOTO 250
  381. 215  IF(Y(JK)-38.0) 240,260,270
  382. 270  DO 275 I=1,3
  383.       J2=ME(I)
  384.       J3=JR(1,J2)
  385.       IF(J3) 275,275,280
  386. 280  R(J3)=R(J3)+0.272*T*S/3.0
  387. 275  CONTINUE
  388.       GOTO 250
  389. 260  DO 264 I=1,3
  390.       J2=ME(I)
  391.       J3=JR(1,J2)
  392.       IF(J3) 264,264,268
  393. 268  R(J3)=R(J3)+0.223*T*S/3.0
  394. 264  CONTINUE
  395.       GOTO 250
  396. 240  IF(Y(JK)-24.0) 290,310,320
  397. 320  DO 325 I=1,3
  398.       J2=ME(I)
  399.       J3=JR(1,J2)
  400.       IF(J3) 325,325,328
  401. 328  R(J3)=R(J3)+0.186*T*S/3.0
  402. 325  CONTINUE
  403.       GOTO 250
  404. 310  DO 315 I=1,3
  405.       J2=ME(I)
  406.       J3=JR(1,J2)
  407.       IF(J3) 315,315,318
  408. 318  R(J3)=R(J3)+0.148*T*S/3.0
  409. 315  CONTINUE
  410.       GOTO 250
  411. 290  DO 330 I=1,3
  412.       J2=ME(I)
  413.       J3=JR(1,J2)
  414.       IF(J3) 330,330,335
  415. 335  R(J3)=R(J3)+0.124*T*S/3.0
  416. 330  CONTINUE
  417. 250  CONTINUE
  418.   90  IF(NA) 120,120,130
  419. 130  DO 150 IE=1,NE
  420.       CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  421.       IF(NB.GT.2) GOTO 160
  422.       IF(NB.EQ.2) GOTO 140
  423.       IK=ME(1)
  424.       JK=ME(2)
  425.       MK=JR(1,IK)
  426.       NK=JR(1,JK)
  427.       LK=JR(2,IK)
  428.       KK=JR(2,JK)
  429.       IF(XA(1).GE.Y(IK)) GOTO 132
  430.       IF(XA(1).LT.Y(IK).AND.XA(1).GT.Y(JK)) GOTO 135
  431.       GOTO 150
  432. 135  C1=XA(1)-Y(JK)
  433.       C2=Y(IK)-Y(JK)
  434.       R(MK)=R(MK)+C1*C1*C1/(6.0*C2)
  435.       R(NK)=R(NK)+(3.0*C1*C1*C2-C1*C1*C1)/(6.0*C2)
  436.       GOTO 150
  437. 132  IF (Y(IK).EQ.Y(JK)) GOTO 133
  438.       C3=XA(1)-Y(IK)
  439.       C4=XA(1)-Y(JK)
  440.       C5=Y(IK)-Y(JK)
  441.       R(MK)=R(MK)+(C4*C5)/6.0+(C3*C5)/3.0
  442.       R(NK)=R(NK)+(C3*C5)/6.0+(C4*C5)/3.0
  443.       GOTO 150
  444. 133  C6=XA(1)-Y(IK)
  445.       C7=X(IK)-X(JK)
  446.       IF(LK.EQ.0) GOTO 134
  447.       R(LK)=R(LK)-0.5*C6*C7
  448. 134  IF(KK.EQ.0) GOTO 150
  449.       R(KK)=R(KK)-0.5*C6*C7
  450.       GOTO 150
  451. 140  K1=ME(1)
  452.       K2=ME(2)
  453.       K3=JR(1,K1)
  454.       K4=JR(2,K1)
  455.       K5=JR(1,K2)
  456.       K6=JR(2,K2)
  457.       IF(XA(2).GE.Y(K2)) GOTO 145
  458.       IF(XA(2).GT.Y(K1).AND.XA(2).LT.Y(K2)) GOTO 147
  459.       GOTO 150
  460. 147  A1=XA(2)-Y(K1)
  461.       A2=Y(K2)-Y(K1)
  462.       A3=3*A1*A1*A2-A1*A1*A1
  463.       R(K3)=R(K3)-A3/(6.0*A2)
  464.       R(K4)=R(K4)-A3*TA2/(6.0*A2)
  465.       R(K5)=R(K5)-A1*A1*A1/(6.0*A2)
  466.       R(K6)=R(K6)-A1*A1*A1*TA2/(6.0*A2)
  467.       GOTO 150
  468. 145  IF (Y(K1).EQ.Y(K2)) GOTO 146
  469.       B1=XA(2)-Y(K1)
  470.       B2=XA(2)-Y(K2)
  471.       B3=Y(K2)-Y(K1)
  472.       R(K3)=R(K3)-(B2/6.0+B1/3.0)*B3
  473.       R(K4)=R(K4)-(B2/6.0+B1/3.0)*B3*TA2
  474.       R(K5)=R(K5)-(B1/6.0+B2/3.0)*B3
  475.       R(K6)=R(K6)-(B1/6.0+B2/3.0)*B3*TA2
  476.       GOTO 150
  477. 146  E1=XA(2)-Y(K1)
  478.       E2=X(K1)-X(K2)
  479.       IF(K4.EQ.0) GOTO 148
  480.       R(K4)=R(K4)-0.5*E1*E2
  481. 148  IF(K6.EQ.0) GOTO 150
  482.       R(K6)=R(K6)-0.5*E1*E2
  483.       GOTO 150
  484. 160  IF(NB.EQ.3) GOTO 150
  485. !      IK=ME(1)
  486. !      JK=ME(2)
  487. !      MK=JR(1,IK)
  488. !      NK=JR(1,JK)
  489. !      LK=JR(2,IK)
  490. !      KK=JR(2,JK)
  491. !      IF(XA(1).GE.Y(IK)) GOTO 170
  492. !      IF(XA(1).LT.Y(IK).AND.XA(1).GT.Y(JK)) GOTO 180
  493. !      GOTO 150
  494. ! 170  D1=XA(1)-Y(IK)
  495. !      D2=Y(IK)-Y(JK)
  496. !      D3=XA(1)-Y(JK)
  497. !      R(MK)=R(MK)+(D1/3.0+D3/6.0)*D2
  498. !      R(LK)=R(LK)-(D1/3.0+D3/6.0)*D2*TA1
  499. !      R(NK)=R(NK)+(D1/6.0+D3/3.0)*D2
  500. !     R(KK)=R(KK)-(D1/6.0+D3/3.0)*D2*TA1
  501. !      GOTO 150
  502. ! 180  D4=XA(1)-Y(JK)
  503. !      D5=Y(IK)-Y(JK)
  504. !      D6=D4*D4*D4
  505. !      D7=D4*D4*D5
  506. !      R(MK)=R(MK)+D6/6.0/D5
  507. !      R(LK)=R(LK)-D6*TA1/6.0/D5
  508. !          R(NK)=R(NK)+(3.0*D7-D6)/6.0/D5
  509. !      R(KK)=R(KK)-(3.0*D7-D6)*TA1/6.0/D5
  510. 150  CONTINUE
  511. 120  RETURN
  512.       END
  513. !     ******************************************************************
  514.       SUBROUTINE OUTPUT
  515.       DIMENSION JR(2,800),R(1600)
  516.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC/CC/N,NH,JR,R
  517.       DO 100 I=1,NP
  518.       L=JR(1,I)
  519.       IF(L) 10,20,30
  520.   30  S=R(L)
  521.       GOTO 10
  522.   20  S=0.0
  523.   10  L=JR(2,I)
  524.       IF(L) 40,50,60
  525.   60  SS=R(L)
  526.       GOTO 40
  527.   50  SS=0.0
  528.   40  WRITE(6,75) I,S,SS
  529.   75  FORMAT(8X,I4,5X,F20.8,5X,F20.8)
  530. 100  CONTINUE
  531.       RETURN
  532.       END
  533. !     *****************************************************************
  534.       SUBROUTINE DECOMP(SK,MA,KH,KN)
  535.       DIMENSION SK(KH),MA(KN)
  536.       COMMON/CC/N,NH,JR(2,800),R(1600)
  537.       DO 130 I=2,N
  538.       L=MA(I-1)+I-MA(I)+1
  539.       K=I-1
  540.       DO 280 J=L,K
  541.       IF(J-L) 20,280,20
  542.   20  JP=MA(I)-I+J
  543.       M=MA(J-1)+J-MA(J)+1
  544.       IF(L.GT.M) M=L
  545.       MP=J-1
  546.       DO 230 IP=M,MP
  547.       JJ=MA(I)-I+IP
  548.       JK=MA(J)-J+IP
  549.       SK(JP)=SK(JP)-SK(JJ)*SK(JK)
  550. 230  CONTINUE
  551. 280  CONTINUE
  552.       DO 400 IP=L,K
  553.       JI=MA(I)-I+IP
  554.       JL=MA(IP)
  555.       SK(JI)=SK(JI)/SK(JL)
  556.       JN=MA(I)
  557.       SK(JN)=SK(JN)-SK(JI)*SK(JI)*SK(JL)
  558. 400  CONTINUE
  559. 130  CONTINUE
  560.       RETURN
  561.       END
  562. !     *****************************************************************
  563.       SUBROUTINE FOBA(SK,MA,KH,KN)
  564.       DIMENSION SK(KH),MA(KN),JR(2,800),R(1600)
  565.       COMMON/CC/N,NH,JR,R/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC
  566.       DO 210 I=2,N
  567.       JJ=MA(I)
  568.       JK=I-1
  569.       JL=MA(JK)+I-JJ+1
  570.       DO 210 J=JL,JK
  571.       JP=MA(I)-I+J
  572.       R(I)=R(I)-SK(JP)*R(J)
  573. 210  CONTINUE
  574.       DO 220 I=1,N
  575.       JJ=MA(I)
  576.       R(I)=R(I)/SK(JJ)
  577. 220  CONTINUE
  578.       DO 230 J4=2,N
  579.       I=2+N-J4
  580.       JJ=MA(I-1)+I-MA(I)+1
  581.       M=MA(I)-I
  582.       JP=I-1
  583.       DO 240 J=JJ,JP
  584.       JM=J+M
  585.       R(J)=R(J)-SK(JM)*R(I)
  586. 240  CONTINUE
  587. 230  CONTINUE
  588.       RETURN
  589.       END
  590. !     ******************************************************************
  591.       SUBROUTINE CES(AE,X,Y,MEO,KM,KP,KE)
  592.       DIMENSION AE(4,KM),X(KP),Y(KP),MEO(2,KE),R(1600),JR(2,800), &
  593.                 ME(3),BI(3),CI(3),B(6),CC(3)
  594.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC
  595.       COMMON/CC/N,NH,JR,R/CB/EO,VO,W,T,S,H11,H12,H21,H22,ME,BI,CI, &
  596.                 ER,TA1,TA2,NB,L
  597.       COMMON/CD/EE(20),SS(20),A1(6),XA(20),YA(20),JA(20),SD(20), &
  598.                 ED(20),SP(20),EP(20),A2(6,50),KL1,KL2,CH(4),KL
  599.       DO 6 I=1,6
  600.       A1(I)=0.0
  601.    6  CONTINUE
  602.       DO 10 IE=1,NE
  603.       CALL DIV (IE,AE,X,Y,MEO,NM,NP,NE)
  604.       V1=VO/(1.0-VO)
  605.       V2=EO/(1.0-VO*VO)
  606.       ET=V2/(1.0-V1*V1)/S/2.0
  607.       DO 55 I=1,3
  608.       J2=ME(I)
  609.       I2=JR(1,J2)
  610.       I3=JR(2,J2)
  611.       IF(I2) 50,60,70
  612.   70  B(2*I-1)=R(I2)
  613.       GOTO 50
  614.   60  B(2*I-1)=0.0
  615.   50  IF(I3) 55,65,75
  616.   75  B(2*I)=R(I3)
  617.       GOTO 55
  618.   65  B(2*I)=0.0
  619.   55  CONTINUE
  620.       H1=0.0
  621.       H2=0.0
  622.       H3=0.0
  623.       DO 100 I=1,3
  624.       H1=H1+BI(I)*B(2*I-1)
  625.       H2=H2+CI(I)*B(2*I)
  626.       H3=H3+BI(I)*B(2*I)+CI(I)*B(2*I-1)
  627. 100  CONTINUE
  628.       AA1=ET*(H1+V1*H2)
  629.       A4=ET*(H2+V1*H1)
  630.       A3=ET*(1.0-V1)*H3/2.0
  631.       H1=AA1+A4
  632.       H2=SQRT((AA1-A4)*(AA1-A4)+4.0*A3*A3)
  633.       B(4)=(H1+H2)/2.0
  634.       B(5)=(H1-H2)/2.0
  635.       IF(ABS(A3).GT.1E-4) GOTO 400
  636.       B(6)=90.0
  637.       GOTO 450
  638. 400  B(6)=ATAN((B(4)-AA1)/A3)*57.29578
  639. 450  B(1)=AA1
  640.       B(2)=A4
  641.       B(3)=A3
  642.           IF (IE.EQ.2)GOTO 1001
  643.           GOTO 1002       
  644. 1001  KL=IE
  645.           DO 1000 I=1,6
  646.                    A1(I)=B(I)
  647. 1000  CONTINUE
  648. !     IF(IE.GE.KL1.AND.IE.LE.KL2) GOTO 220
  649. !          IF(IE.GE.KL1) GOTO 220
  650. !          GOTO 445
  651. ! 220  IQ=IE-KL1+1
  652. !      DO 230 I=1,6
  653. !      A2(I,IQ)=B(I)
  654. !          230  CONTINUE
  655. 1002      WRITE(6,555)IE,(B(I),I=1,6)
  656. 555   FORMAT(4X,I4,2X,F8.3,2X,F8.3,2X,F8.3,3X,F10.4,2X,F10.4,2X,F8.3)
  657. ! 445  CONTINUE
  658.   10  CONTINUE
  659.        WRITE(6,999)KL,(A1(I),I=1,6)
  660. 999   FORMAT(4X,'KL=',I4,2X,F8.3,2X,F8.3,2X,F8.3,3X,F10.4,2X,F10.4, &
  661.               2X,F8.3)

  662. !     IF (NI.LT.0) GOTO 411
  663. !     C1=(CH(4)-CH(2))*(CH(4)-CH(3))/(CH(1)-CH(2))/(CH(1)-CH(3))
  664. !     C2=(CH(4)-CH(1))*(CH(4)-CH(3))/(CH(2)-CH(1))/(CH(2)-CH(3))
  665. !     C3=(CH(4)-CH(1))*(CH(4)-CH(2))/(CH(3)-CH(1))/(CH(3)-CH(2))
  666. !     DO 150 I=1,3
  667. !     DO 160 J=KL1,KL2,2
  668. !     P=J-KL1+1
  669. !           P=J-1+1
  670. !      L=P+1
  671. !     M=(J-KL1)/2+1
  672. !      CC(M)=(A2(I,P)+A2(I,L))/2.0
  673. !160  CONTINUE
  674. !     A1(I)=C1*CC(1)+C2*CC(2)+C3*CC(3)
  675. !150  CONTINUE
  676. !     C4=(A1(1)+A1(2))/2.0
  677. !     C5=(A1(1)-A1(2))/2.0
  678. !     A1(4)=C4+SQRT(C5*C5+A1(3)*A1(3))
  679. !     A1(5)=C4-SQRT(C5*C5+A1(3)*A1(3))
  680. !     WRITE(6,610) A1
  681. !610  FORMAT(5X,'A1(I)**=',6(2X,F8.3))
  682. !411  IP=KL2-KL1+1
  683. !     WRITE(6,421) ((A2(I,J),I=1,6),J=1,IP)
  684. ! 421  FORMAT(2X,'A2(KL1---KL2 STRESSES)'/(5X,6F12.4))
  685.       RETURN
  686.       END
  687. !     *****************************************************************
  688.       SUBROUTINE ERFAC (AE,X,Y,MEO,KM,KP,KE)
  689.       DIMENSION NCI(20),NCE(4,20),ME(3),BI(3),R(1600),JR(2,800), &
  690.                  AE(4,KM),X(KP),Y(KP),MEO(2,KE),CI(3)
  691.       COMMON /CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1
  692.       COMMON /CC/N,NH,JR,R
  693.       COMMON/CB/EO,VO,W,T,S,H11,H12,H21,H22,ME,BI,CI
  694.       READ(5,*) (NCI(J),J=1,NC)
  695.       READ (5,*) ((NCE(I,J),I=1,4),J=1,NC)
  696.       WRITE(6,35)(NCI(J),J=1,NC)
  697.       WRITE(6,45)((NCE(I,J),I=1,4),J=1,NC)
  698.   35  FORMAT(//30X,'NODN-NAME***NCI='//(10X,10I6))
  699.   45  FORMAT(//30X,'ELEMENT-NAME***NCE='//(10X,12I5))
  700.       WRITE(6,999)
  701. 999  FORMAT(//30X,'NODAL REACTIONS'//15X,'NODE',13X'X-COMP', &
  702.              13X'Y-COMP')
  703.       DO 20 JJ=1,NC
  704.       FX=0.0
  705.       FY=0.0
  706.       L=NCI(JJ)
  707.       DO 80 M=1,4
  708.       IF(NCE(M,JJ)) 80,80,70
  709.   70  IE=NCE(M,JJ)
  710.       CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  711.       DO 100 IM=1,3
  712.       K=IM
  713.       IF(L-ME(IM)) 100,110,100
  714. 100  CONTINUE
  715.       WRITE(6,555) L
  716. 555  FORMAT(//20X,'ERROR OF ELEMENT MESSAGE******NODE NUMBER',I5)
  717. 110  DO 400 IP=1,3
  718.       CALL KRS(BI(K),BI(IP),CI(K),CI(IP))
  719.       NL=ME(IP)
  720.       JI=JR(1,NL)
  721.       JP=JR(2,NL)
  722.       IF(JI) 210,210,220
  723. 210  S=0.0
  724.       GOTO 200
  725. 220  S=R(JI)
  726. 200  IF(JP) 310,310,320
  727. 310  SS=0.0
  728.       GOTO 300
  729. 320  SS=R(JP)
  730. 300  FX=FX+H11*S+H12*SS
  731.       FY=FY+H21*S+H22*SS
  732. 400  CONTINUE
  733.   80  CONTINUE
  734.       WRITE(6,444) L,FX,FY
  735. 444  FORMAT(14X,I6,10X,F12.4,10X,F12.4)
  736.   20  CONTINUE
  737.       RETURN
  738.       END
  739. !     ****************************************************************
  740.       SUBROUTINE KRS(BR,BS,CR,CS)
  741.       COMMON/CB/EO,VO,W,T,S,H11,H12,H21,H22,ME(3),BI(3),CI(3)
  742.       ET=EO*T*(1.0-VO)/4.0/S/(1.0+VO)/(1.0-2.0*VO)
  743.       V1=VO/(1.0-VO)
  744.       V2=(1.0-2.0*VO)/2.0/(1.0-VO)
  745.       H11=ET*(BR*BS+V2*CR*CS)
  746.       H12=ET*(V1*BR*CS+V2*BS*CR)
  747.       H21=ET*(V1*CR*BS+V2*BR*CS)
  748.       H22=ET*(CR*CS+V2*BR*BS)
  749.       RETURN
  750.       END
  751. !     ****************************************************************
  752.       SUBROUTINE TREAT(SK,MA,KH,KN)
  753.       DIMENSION SK(KH),MA(KN),R(1600),NDI(10),DV(2,10),JR(2,800)
  754.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC
  755.       COMMON/CC/N,NH,JR,R
  756.       READ(5,*)(NDI(J),J=1,ND)
  757.       READ(5,*)((DV(I,J),I=1,2),J=1,ND)
  758.       WRITE(6,35)(NDI(J),J=1,ND)
  759.       WRITE(6,45)((DV(I,J),I=1,2),J=1,ND)
  760.   35  FORMAT(//25X,'NODE-NAME**NDI='//(10X,10I6))
  761.   45  FORMAT(//20X,'DISPLACEMENT-VALUES**DV'//(10X,6F10.4))
  762.       DO 120 I=1,ND
  763.       DO 120 J=1,2
  764.       IF(DV(I,J)) 70,120,70
  765.   70  JJ=NDI(I)
  766.       L=JR(J,JJ)
  767.       IF(L.EQ.0) GOTO 120
  768.       JN=MA(L)
  769.       SK(JN)=1E15
  770.       R(L)=DV(I,J)*1E15
  771. 120  CONTINUE
  772.       RETURN
  773.       END
  774. !     **************************************************************
  775.       SUBROUTINE RIC(GY,AE,X,Y,MEO,MA,SK,KH,KN,KP,KE,KM,RD,R1,KV, &
  776.                      A,SQ,AS)
  777.       DIMENSION FM(6,20),RD(KN,KV),FK(6),R1(KN), &
  778.                 YA(20),GA(20),A(KV,KV),SQ(KV,KV),AS(KV,KV),        &
  779.                 XA(20),AE(4,KM),X(KP),Y(KP),MEO(2,KE),BI(3), &
  780.                 CI(3),B(6,6),NN(6),SK(KH),MA(KN)
  781.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV,NS
  782.       COMMON/CC/N,NH,JR(2,800),R(1600)
  783.       COMMON/CB/EO,VO,W,T,S,H11,H12,H21,H22,ME(3),BI,CI,ER,TA1, &
  784.                 TA2,NB,L
  785.       COMMON/CD/EE(20),SS(20),A1(6),XA,YA,JA(20),SD(20), &
  786.                 ED(20),SP(20),EP(20),A2(6,50),KL1,KL2,CH(4),KL
  787.       DO 3 I=1,N
  788.       DO 3 J=1,NV
  789.       RD(I,J)=0.0
  790.   3   CONTINUE
  791.       DO 10 IE=1,NE
  792.       DO 5 I=1,6
  793.       DO 5 J=1,NV
  794.       FM(I,J)=0.0
  795.   5   CONTINUE
  796.       CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  797.       LL=2*L+1
  798.       FM(2,LL)=-S*T/3.0
  799.       FM(4,LL)=FM(2,LL)
  800.       FM(6,LL)=FM(2,LL)
  801.       J1=ME(1)
  802.       J2=ME(2)
  803.       Y1=Y(J1)
  804.       Y2=Y(J2)
  805.       X1=X(J1)
  806.       X2=X(J2)
  807.       NQ=NB-2
  808.       IF (NQ) 11,12,13
  809.   11  IF (XA(1).GT.Y1) GOTO 15
  810.       IF (XA(1).EQ.Y1) GOTO 38
  811.       IF (XA(1).LT.Y1.AND.XA(1).GT.Y2) GOTO 20
  812. !      GOTO 40
  813.           GOTO 13
  814.   15  IF(Y1.EQ.Y2) GOTO 35
  815. !      FM(1,1)=(Y1-Y2)/2.0
  816. !      FM(3,1)=(Y1-Y2)/2.0
  817.           FM(1,1)=(Y1-Y2)/2.0
  818.       FM(3,1)=(Y1-Y2)/2.0
  819.           FM(2,3)=-S*T/3.0
  820.           FM(4,3)=FM(2,3)
  821.           FM(6,3)=FM(2,3)
  822.       GOTO 40
  823. !  35  FM(2,1)=(X2-X1)*0.5
  824. !      FM(4,1)=FM(2,1)
  825.    35  FM(2,1)=(X2-X1)*0.5
  826.        FM(4,1)=FM(2,1)
  827.            FM(2,6)=-S*T/3.0
  828.            FM(4,6)=FM(2,6)
  829.            FM(6,6)=FM(2,6)
  830.       GOTO 40
  831. !  38  FM(1,1)=(Y1-Y2)/6.0
  832. !      FM(3,1)=(Y1-Y2)/3.0
  833.   38  FM(1,1)=(Y1-Y2)/6.0
  834.       FM(3,1)=(Y1-Y2)/3.0
  835.           FM(2,3)=-S*T/3.0
  836.           FM(4,3)=FM(2,3)
  837.           FM(6,3)=FM(2,3)
  838.       GOTO 40
  839. !  20  FM(1,1)=3.*(XA(1)-Y2)**2/6./(Y1-Y2)
  840. !      FM(3,1)=(6.*(XA(1)-Y2)*(Y1-Y2)-3.*(XA(1)-Y2)**2)/6./(Y1-Y2)
  841.   20  FM(1,1)=3.*(XA(1)-Y2)**2/6./(Y1-Y2)
  842.       FM(3,1)=(6.*(XA(1)-Y2)*(Y1-Y2)-3.*(XA(1)-Y2)**2)/6./(Y1-Y2)
  843.           FM(2,3)=-S*T/3.0
  844.           FM(4,3)=FM(2,3)
  845.           FM(6,3)=FM(2,3)
  846.       GOTO 40
  847.   12  IF (XA(2).GT.Y2) GOTO 22
  848.       IF (XA(2).EQ.Y2) GOTO 26
  849.       IF (XA(2).LT.Y2.AND.XA(2).GT.Y1) GOTO 24
  850. !      GOTO 40
  851.           GOTO 13
  852.   22  IF (Y1.EQ.Y2) GOTO 23
  853. !      FM(1,2)=-(Y2-Y1)/2.0
  854. !      FM(2,2)=FM(1,2)*TA2
  855. !      FM(3,2)=FM(1,2)
  856. !      FM(4,2)=FM(2,2)
  857.           FM(1,2)=-(Y2-Y1)/2.0
  858.       FM(2,2)=FM(1,2)*TA2
  859.       FM(3,2)=FM(1,2)
  860.       FM(4,2)=FM(2,2)
  861.           FM(2,3)=-S*T/3.0
  862.           FM(4,3)=FM(2,3)
  863.           FM(6,3)=FM(2,3)
  864.       GOTO 40
  865. !  23  FM(2,2)=0.5*(X2-X1)
  866. !      FM(4,2)=FM(2,2)
  867.   23  FM(2,2)=0.5*(X2-X1)
  868.       FM(4,2)=FM(2,2)
  869.           FM(2,6)=-S*T/3.0
  870.           FM(4,6)=FM(2,6)
  871.           FM(6,6)=FM(2,6)
  872.       GOTO 40
  873. !  26  FM(1,2)=-(Y2-Y1)/3.0
  874. !      FM(2,2)=FM(1,2)*TA2
  875. !      FM(3,2)=-(Y2-Y1)/6.0
  876. !      FM(4,2)=FM(3,2)*TA2
  877.   26  FM(1,2)=-(Y2-Y1)/3.0
  878.       FM(2,2)=FM(1,2)*TA2
  879.       FM(3,2)=-(Y2-Y1)/6.0
  880.       FM(4,2)=FM(3,2)*TA2
  881.           FM(2,3)=-S*T/3.0
  882.           FM(4,3)=FM(2,3)
  883.           FM(6,3)=FM(2,3)
  884.       GOTO 40
  885. !  24  FM(1,2)=-(6.*(XA(2)-Y1)*(Y2-Y1)-3.*(XA(2)-Y1)**2)/6./(Y2-Y1)
  886. !      FM(2,2)=-(6.*(XA(2)-Y1)*(Y2-Y1)-3.*(XA(2)-Y1)**2)*TA2/6./(Y2-Y1)
  887. !      FM(3,2)=-3.*(XA(2)-Y1)**2/6./(Y2-Y1)
  888. !      FM(4,2)=-3.*(XA(2)-Y1)**2*TA2/6./(Y2-Y1)
  889.   24  FM(1,2)=-(6.*(XA(2)-Y1)*(Y2-Y1)-3.*(XA(2)-Y1)**2)/6./(Y2-Y1)
  890.       FM(2,2)=-(6.*(XA(2)-Y1)*(Y2-Y1)-3.*(XA(2)-Y1)**2)*TA2/6./(Y2-Y1)
  891.       FM(3,2)=-3.*(XA(2)-Y1)**2/6./(Y2-Y1)
  892.       FM(4,2)=-3.*(XA(2)-Y1)**2*TA2/6./(Y2-Y1)
  893.           FM(2,3)=-S*T/3.0
  894.           FM(4,3)=FM(2,3)
  895.           FM(6,3)=FM(2,3)
  896.       GOTO 40
  897.   13  FM(2,3)=-S*T/3.0
  898.           FM(4,3)=FM(2,3)
  899.           FM(6,3)=FM(2,3)
  900.           IF(NB.EQ.3) GOTO 40
  901. !      IF(XA(1).GT.Y1) GOTO 19
  902. !      IF(XA(1).EQ.Y1) GOTO 21
  903. !      IF(XA(1).LT.Y1.AND.XA(1).GT.Y2) GOTO 33
  904. !      GOTO 40
  905. !  19  FM(1,1)=0.5*(Y1-Y2)
  906. !      FM(2,1)=-FM(1,1)*TA1
  907. !          FM(2,1)=-FM(1,1)
  908. !      FM(3,1)=FM(1,1)
  909. !      FM(4,1)=FM(2,1)
  910. !      GOTO 40
  911. !  21  FM(1,1)=(Y1-Y2)/6.
  912. !      FM(2,1)=-FM(1,1)*TA1
  913. !          FM(2,1)=-FM(1,1)
  914. !      FM(3,1)=FM(1,1)*2.
  915. !      FM(4,1)=FM(2,1)*2.
  916. !      GOTO 40
  917. !  33  D8=XA(1)-Y2
  918. !      D9=Y1-Y2
  919. !     FM(1,1)=D8*D8/D9/2.
  920. !      FM(2,1)=-FM(1,1)*TA1
  921. !      FM(3,1)=(6.*D9*D8-3.*D8*D8)/D9/6.
  922. !      FM(4,1)=-FM(3,1)*TA1
  923.   40  CONTINUE
  924. !      WRITE(6,16)((FM(I,J),J=1,NV),I=1,6)
  925. !  16  FORMAT(25X,'FM ********=='//(10X,5F12.4))
  926.       DO 45 K=1,NV
  927.       DO 45 I=1,3
  928.       J2=ME(I)
  929.       DO 45 J3=1,2
  930.       K1=2*(I-1)+J3
  931.       J4=JR(J3,J2)
  932.       IF (J4.GT.0) RD(J4,K)=RD(J4,K)+FM(K1,K)
  933.   45  CONTINUE
  934. !      LL=2*(L+1)
  935.           LL=3*(L-1)+4
  936.       DO 50 I=1,3
  937.       DO 50 J=1,3
  938.       CALL KRS(BI(I),BI(J),CI(I),CI(J))
  939.       B(2*I-1,2*J-1)=H11/XA(LL)
  940.       B(2*I-1,2*J)=H12/XA(LL)
  941.       B(2*I,2*J-1)=H21/XA(LL)
  942.       B(2*I,2*J)=H22/XA(LL)
  943.   50  CONTINUE
  944.       DO 52 I=1,6
  945.       FK(I)=0.0
  946.   52  CONTINUE
  947.       DO 55 I=1,3
  948.       J2=ME(I)
  949.       DO 55 J=1,2
  950.       J3=2*(I-1)+J
  951.       NN(J3)=JR(J,J2)
  952.   55  CONTINUE
  953.       DO 60 I=1,6
  954.       DO 60 J=1,6
  955.       NJ=NN(J)
  956.       IF (NJ.EQ.0) GOTO 60
  957.       FK(I)=FK(I)+B(I,J)*R(NJ)
  958.   60  CONTINUE
  959. !      WRITE(6,61) (FK(I),I=1,6)
  960. !  61  FORMAT (25X,'FK**='//5X,3E16.6)
  961.       DO 65 I=1,3
  962.       J2=ME(I)
  963.       DO 65 J=1,2
  964.       K1=2*(I-1)+J
  965.       NJ=JR(J,J2)
  966.       IF (NJ.GT.0) RD(NJ,LL)=RD(NJ,LL)-FK(K1)
  967.   65  CONTINUE
  968.   10  CONTINUE
  969. !      WRITE(6,64) ((RD(I,J),J=1,NV),I=1,N)
  970. !  64  FORMAT(25X,'RD********='//(5X,5E14.6))
  971.       DO 18 I=1,N
  972.       R1(I)=R(I)
  973.   18  CONTINUE
  974.       DO 70 I=1,NV
  975.       DO 75 J=1,N
  976.       R(J)=RD(J,I)
  977.   75  CONTINUE
  978.       CALL FOBA(SK,MA,NH,N)
  979.       DO 80 J=1,N
  980.       RD(J,I)=R(J)
  981.   80  CONTINUE
  982.   70  CONTINUE
  983. !      WRITE(6,71)((RD(I,J),J=1,NV),I=1,N)
  984. !  71  FORMAT(25X,'RD*******J='//(5X,5E14.6))
  985.       IF(NI.LT.0) GOTO 444
  986.       CALL RI1(GY,AE,X,Y,MEO,RD,GA,A,SQ,AS,N,NP,NE,NM,NV)
  987.       GOTO 555
  988. 444  CALL RI2(GY,AE,X,Y,MEO,RD,GA,A,SQ,AS,N,NP,NE,NM,NV)
  989. 555  BB=0.0
  990.       DO 175 I=1,NV
  991.       BB=BB+YA(I)*YA(I)
  992. 175  CONTINUE
  993.       BB=SQRT(BB)
  994.       WRITE(6,177) BB
  995. 177  FORMAT(25X,'RELIABILITY-INDEX'/25X,'*****************'/25X, &
  996.               'BB=',F16.8)
  997.       WRITE(6,185) (XA(I),I=1,NV)
  998. 185  FORMAT(10X,'XXXXX'//(10X,5F13.4))
  999. !      IF (XA(1).LE.DH) GOTO 182
  1000. !      XA(1)=DH
  1001. !      WRITE(6,181) XA(1)
  1002. ! 181  FORMAT(10X,'XA(1)=DH***',F15.5)
  1003.       WRITE(6,190) (YA(I),I=1,NV)
  1004. 190  FORMAT(10X,'YYYYY'//(10X,5F13.4))
  1005.       WRITE(6,192) (GA(I),I=1,NV)
  1006. 192  FORMAT(10X,'GGGAAA'//(10X,5F13.4))
  1007.       WRITE(6,195) GY
  1008. 195  FORMAT(20X,'GY=',F13.6)
  1009.       RETURN
  1010.       END

  1011. !  ****************************************************************
  1012.       SUBROUTINE RI1(GY,AE,X,Y,MEO,RD,GA,A,SQ,AS,KN,KP,KE,KM,KV)
  1013.       DIMENSION AE(4,KM),X(KP),Y(KP),MEO(2,KE),RD(KN,KV),A(KV,KV), &
  1014.                 SQ(KV,KV),AS(KV,KV),RP(20),RE(20,6),S1(6,3),RS(20,3), &
  1015.                 DCG(3),RC(20),GA(KV),XA(20),YA(20),BI(3),CI(3),B1(3), &
  1016.                 RSS(20,3)
  1017.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV,NS
  1018.       COMMON/CC/N,NH,JR(2,800),R(1600)
  1019.       COMMON/CB/EO,VO,W,T,S,H11,H12,H21,H22,ME(3),BI,CI,ER,TA1,        &
  1020.                 TA2,NB,L
  1021.       COMMON/CD/EE(20),SS(20),A1(6),XA,YA,JA(20),SD(20), &
  1022.                 ED(20),SP(20),EP(20),A2(6,50),KL1,KL2,CH(4),KL
  1023. !     B1(1)=(CH(4)-CH(2))*(CH(4)-CH(3))/(CH(1)-CH(2))/(CH(1)-CH(3))
  1024. !     B1(2)=(CH(4)-CH(1))*(CH(4)-CH(3))/(CH(2)-CH(1))/(CH(2)-CH(3))
  1025. !     B1(3)=(CH(4)-CH(1))*(CH(4)-CH(2))/(CH(3)-CH(1))/(CH(3)-CH(2))
  1026.       DO 20 I=1,NV
  1027.       DO 20 J=1,3
  1028.       RS(I,J)=0.0
  1029.   20  CONTINUE
  1030. !     DO 115 IE=KL1,KL2
  1031. !         JJ=(IE-KL1)/2+1
  1032. !        JJ=(IE-1)/2+1
  1033. !    CALL DIV(IE,AE,X,Y,MEO,NM,NP,NE)
  1034.           CALL DIV(2,AE,X,Y,MEO,NM,NP,NE)
  1035.       DO 85 J1=1,NV
  1036.       DO 90 I=1,3
  1037.       J2=ME(I)
  1038.       DO 90 K=1,2
  1039.       K1=2*(I-1)+K
  1040.       NJ=JR(K,J2)
  1041.       IF(NJ.GT.0)  GOTO 92
  1042.       GOTO 94
  1043.   92  RE(J1,K1)=RD(NJ,J1)
  1044.       GOTO 90
  1045.   94  RE(J1,K1)=0.0
  1046.   90  CONTINUE
  1047.   85  CONTINUE
  1048.      WRITE(6,82)((RE(I,J),J=1,6),I=1,NV)
  1049. 82  FORMAT(25X,'RE(I,J)*****='//(5X,5E14.6))
  1050.       V1=VO/(1.0-VO)
  1051.       V2=EO/(1.0-VO*VO)
  1052.       A11=V2/2.0/S/(1.0-V1*V1)
  1053.       A22=(1.0-V1)/2.0
  1054.       DO 100 J=1,3
  1055.       K1=2*J-1
  1056.       K2=2*J
  1057.       S1(K1,1)=A11*BI(J)
  1058.       S1(K2,1)=A11*CI(J)*V1
  1059.       S1(K1,2)=A11*BI(J)*V1
  1060.       S1(K2,2)=A11*CI(J)
  1061.       S1(K1,3)=A11*CI(J)*A22
  1062.       S1(K2,3)=A11*BI(J)*A22
  1063. 100  CONTINUE
  1064.      WRITE(6,102)((S1(I,J),J=1,3),I=1,6)
  1065. 102  FORMAT(25X,'S1********='//(5X,5E14.6))
  1066.       DO 105 I=1,NV
  1067.       DO 105 K=1,3
  1068. !      RSS(I,K)=0.0
  1069.           RS(I,K)=0.0
  1070.       DO 110 J=1,6
  1071. !      RSS(I,K)=RSS(I,K)+RE(I,J)*S1(J,K)
  1072.           RS(I,K)=RS(I,K)+RE(I,J)*S1(J,K)
  1073. 110  CONTINUE
  1074. 105  CONTINUE
  1075. !      LL=2*(L+1)
  1076. !      J=IE-KL1+1
  1077.      DO 125 I=1,3
  1078. !      RSS(LL,I)=RSS(LL,I)+A2(I,J)/XA(LL)
  1079.           RS(4,I)=RS(4,I)+A1(I)/XA(4)
  1080. 125  CONTINUE
  1081. !      DO 128 I=1,NV
  1082. !      DO 128 J=1,3
  1083. !      RS(I,J)=RS(I,J)+RSS(I,J)*B1(JJ)/2.0
  1084. ! 128  CONTINUE
  1085. ! 115  CONTINUE
  1086.      WRITE(6,116)((RS(I,J),J=1,3),I=1,NV)
  1087. 116  FORMAT(25X,'RS**='//(5X,5F12.4))
  1088.       IF (NI.GT.0) GOTO 120
  1089.       DCG(1)=0.5+(A1(1)-A1(2))/4/SQRT(((A1(1)-A1(2))/2)**2+A1(3)**2)
  1090.       DCG(2)=0.5+(A1(2)-A1(1))/4/SQRT(((A1(1)-A1(2))/2)**2+A1(3)**2)
  1091.       DCG(3)=A1(3)/SQRT(((A1(1)-A1(2))/2)**2+A1(3)**2)
  1092.       GOTO 130
  1093. 120  DCG(1)=0.5-(A1(1)-A1(2))/4/SQRT(((A1(1)-A1(2))/2)**2+A1(3)**2)
  1094.       DCG(2)=0.5-(A1(2)-A1(1))/4/SQRT(((A1(1)-A1(2))/2)**2+A1(3)**2)
  1095.       DCG(3)=-A1(3)/SQRT(((A1(1)-A1(2))/2)**2+A1(3)**2)
  1096. 130  DO 145 I=1,NV
  1097.      RC(I)=0.0
  1098.       DO 150 J=1,3
  1099.       RC(I)=RC(I)+RS(I,J)*DCG(J)
  1100. 150  CONTINUE
  1101. 145  CONTINUE
  1102.       IF (NI.GT.0) GOTO 154
  1103.       DO 155 I=1,NV
  1104.       RC(I)=-RC(I)
  1105. 155  CONTINUE
  1106. !      RC(NV)=1.0+RC(NV)
  1107.           RC(5)=1.0+RC(5)
  1108.       GOTO 158
  1109. ! 154  RC(NV)=RC(NV)+1.0
  1110. 154  RC(5)=RC(5)+1.0
  1111. 158  WRITE(6,156)(RC(I),I=1,NV)
  1112. 156  FORMAT(2X,'PARSURE XX'/(5X,5F12.4))
  1113.       GG=0.0
  1114.       IF(NI.GT.0) GOTO 162
  1115.       GY=XA(NV)-A1(4)
  1116.       GOTO 161
  1117. ! 162  GY=XA(NV)+A1(5)
  1118.   162  GY=XA(5)+A1(5)
  1119. 161  IF(NS.NE.0) GOTO 400
  1120.       CALL RI3(GY,RC,GA)
  1121.       GOTO 440
  1122. 400  DO 160 I=1,NV
  1123.       RC(I)=RC(I)*SP(I)
  1124. 160  CONTINUE
  1125.       DO 200 I=1,NV
  1126.       DO 200 J=1,NV
  1127.       AS(I,J)=0.0
  1128.       AS(I,J)=SQRT(A(I,I))*SQ(J,I)
  1129. 200   CONTINUE
  1130.       DO 220 I=1,NV
  1131.       RP(I)=0.0
  1132. 220   CONTINUE
  1133.       DO 300 I=1,NV
  1134.       DO 300 J=1,NV
  1135.       RP(I)=RP(I)+AS(I,J)*RC(J)
  1136. 300   CONTINUE
  1137.       WRITE(6,301)(RP(I),I=1,NV)
  1138. 301   FORMAT(2X,'PARSURE ZZ'/(5X,5F12.4))
  1139.       DO 330 I=1,NV
  1140.       GG=GG+RP(I)*RP(I)
  1141. 330   CONTINUE
  1142.       GG=SQRT(GG)
  1143.       DO 164 I=1,NV
  1144.       GA(I)=-RP(I)/GG
  1145.       YA(I)=SD(I)*YA(I)/SP(I)+(ED(I)-EP(I))/SP(I)
  1146. 164  CONTINUE
  1147.       WRITE(6,190) (YA(I),I=1,NV)
  1148. 190  FORMAT(10X,'YYYYY'//(10X,5F13.4))
  1149.       Y1=0.0
  1150.       DO 165 I=1,NV
  1151.       Y1=Y1+YA(I)*GA(I)
  1152. 165  CONTINUE
  1153.       Y1=Y1+GY/GG
  1154.       DO 170 I=1,NV
  1155.       YA(I)=GA(I)*Y1
  1156. 170  CONTINUE
  1157.       DO 350 I=1,NV
  1158.       RC(I)=0.0
  1159.       DO 350 J=1,NV
  1160.       RC(I)=RC(I)+AS(J,I)*YA(J)
  1161. 350  CONTINUE
  1162.       DO 180 I=1,NV
  1163.       XA(I)=RC(I)*SP(I)+EP(I)
  1164. 180  CONTINUE
  1165. 440  CONTINUE
  1166.       RETURN
  1167.       END
  1168. !     ****************************************************************
  1169.       SUBROUTINE RI2(GY,AE,X,Y,MEO,RD,GA,A,SQ,AS,KN,KP,KE,KM,KV)
  1170.       DIMENSION AE(4,KM),X(KP),Y(KP),MEO(2,KE),RD(KN,KV),A(KV,KV), &
  1171.                 SQ(KV,KV),AS(KV,KV),RP(20),RE(20,6),S1(6,3),RS(20,3), &
  1172.                 RC(20),GA(KV),XA(20),YA(20),BI(3),CI(3)
  1173.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV,NS
  1174.       COMMON/CC/N,NH,JR(2,800),R(1600)
  1175.       COMMON/CB/EO,VO,W,T,S,H11,H12,H21,H22,ME(3),BI,CI,ER,TA1,        &
  1176.                 TA2,NB,L
  1177.       COMMON/CD/EE(20),SS(20),A1(6),XA,YA,JA(20),SD(20), &
  1178.                 ED(20),SP(20),EP(20),A2(6,50),KL1,KL2
  1179.       DO 240 I=1,NV
  1180. 240  RC(I)=0.0
  1181.       GY=0.0
  1182.       NX=NV-2
  1183.       DO 260 II=KL1,KL2,2
  1184.       IQ=II-KL1+1
  1185.       IF(A2(2,IQ)) 50,260,260
  1186. 50   CALL DIV(II,AE,X,Y,MEO,NM,NP,NE)
  1187.       DO 85 J1=1,NX
  1188.       DO 90 I=1,3
  1189.       J2=ME(I)
  1190.       DO 90 K=1,2
  1191.       K1=2*(I-1)+K
  1192.       NJ=JR(K,J2)
  1193.       IF(NJ.GT.0) GOTO 92
  1194.       GOTO 94
  1195.   92  RE(J1,K1)=RD(NJ,J1)
  1196.       GOTO 90
  1197.   94  RE(J1,K1)=0.0
  1198.   90  CONTINUE
  1199.   85  CONTINUE
  1200. !     WRITE(6,82) II,((RE(I,J),J=1,6),I=1,NX)
  1201. ! 82  FORMAT(20X,'II=',I3,5X,'RE(I,J)====='//(5X,5E14.6))
  1202.       V1=VO/(1.0-VO)
  1203.       V2=EO/(1.0-VO*VO)
  1204.       A11=V2/2.0/S/(1.0-V1*V1)
  1205.       A22=(1.0-V1)/2.0
  1206.       DO 100 J=1,3
  1207.       K1=2*J-1
  1208.       K2=2*J
  1209.       S1(K1,1)=A11*BI(J)
  1210.       S1(K2,1)=A11*CI(J)*V1
  1211.       S1(K1,2)=A11*BI(J)*V1
  1212.       S1(K2,2)=A11*CI(J)
  1213.       S1(K1,3)=A11*CI(J)*A22
  1214.       S1(K2,3)=A11*BI(J)*A22
  1215. 100  CONTINUE
  1216. !     WRITE(6,102)((S1(I,J),J=1,3),I=1,6)
  1217. !102  FORMAT(25X,'S1************='//(5X,5F12.4))
  1218.       DO 105 I=1,NX
  1219.       DO 105 K=1,3
  1220.       RS(I,K)=0.0
  1221.       DO 110 J=1,6
  1222.       RS(I,K)=RS(I,K)+RE(I,J)*S1(J,K)
  1223. 110  CONTINUE
  1224. 105  CONTINUE
  1225.       LL=2*(L+1)
  1226.       DO 115 I=1,3
  1227.       RS(LL,I)=RS(LL,I)+A2(I,IQ)/XA(LL)
  1228. 115  CONTINUE
  1229. !     WRITE(6,116)((RS(I,J),J=1,3),I=1,NX)
  1230. !116  FORMAT(25X,'RS(I,J)=*****'//(5X,5F12.4))
  1231.       CB=ABS(CI(1))
  1232.       IF(NB.NE.2) GOTO 55
  1233.       CB=ABS(CI(2))
  1234. 55   DO 216 I=1,NX
  1235.       RC(I)=RC(I)-CB*(XA(NX+1)*RS(I,2)+RS(I,3))
  1236. 216  CONTINUE
  1237.       RC(NX+1)=RC(NX+1)+ABS(A2(2,IQ))*CB
  1238.       RC(NX+2)=RC(NX+2)+CB
  1239.       GY=GY+CB*(XA(NX+1)*ABS(A2(2,IQ))+XA(NX+2)-A2(3,IQ))
  1240. !     WRITE (6,266) (RC(I),I=1,NV)
  1241. !266  FORMAT(2X,'PARSURE XX'/(5X,6F11.4))
  1242. 260  CONTINUE
  1243.       IF(NS.NE.0) GOTO 122
  1244.       CALL RI3(GY,RC,GA)
  1245.       GOTO 550
  1246. 122  DO 160 I=1,NV
  1247. 160  RC(I)=RC(I)*SP(I)
  1248.       DO 200 I=1,NV
  1249.       DO 200 J=1,NV
  1250.       AS(I,J)=0.0
  1251.       AS(I,J)=SQRT(A(I,I))*SQ(J,I)
  1252. 200  CONTINUE
  1253.       DO 220 I=1,NV
  1254.       RP(I)=0.0
  1255. 220  CONTINUE
  1256.       DO 300 I=1,NV
  1257.       DO 300 J=1,NV
  1258.       RP(I)=RP(I)+AS(I,J)*RC(J)
  1259. 300  CONTINUE
  1260. !     WRITE(6,262) (RP(I),I=1,NV)
  1261. !262  FORMAT(2X,'PARSURE ZZ'/(5X,6F11.4))
  1262.       GG=0.0
  1263.       DO 330 I=1,NV
  1264.       GG=GG+RP(I)*RP(I)
  1265. 330  CONTINUE
  1266.       GG=SQRT(GG)
  1267.       DO 164 I=1,NV
  1268.       GA(I)=-RP(I)/GG
  1269.       YA(I)=SD(I)*YA(I)/SP(I)+(ED(I)-EP(I))/SP(I)
  1270. 164  CONTINUE
  1271.       WRITE(6,190) (YA(I),I=1,NV)
  1272. 190  FORMAT(10X,'YYYYY'//(10X,5F13.4))
  1273.       Y1=0.0
  1274.       DO 165 I=1,NV
  1275.       Y1=Y1+YA(I)*GA(I)
  1276. 165  CONTINUE
  1277.       Y1=Y1+GY/GG
  1278.       DO 170 I=1,NV
  1279.       YA(I)=GA(I)*Y1
  1280. 170  CONTINUE
  1281.       DO 350 I=1,NV
  1282.       RC(I)=0.0
  1283.       DO 350 J=1,NV
  1284.       RC(I)=RC(I)+AS(J,I)*YA(J)
  1285. 350  CONTINUE
  1286.       DO 180 I=1,NV
  1287.       XA(I)=RC(I)*SP(I)+EP(I)
  1288. 180  CONTINUE
  1289. 550  CONTINUE
  1290.       RETURN
  1291.       END
  1292. !     *****************************************************************
  1293.       SUBROUTINE RI3(GY,RC,GA)
  1294.       DIMENSION RC(20),GA(20),XA(20),YA(20)
  1295.       COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC,NA,NN1,DH,NV,NS
  1296.       COMMON/CD/EE(20),SS(20),A1(6),XA,YA,JA(20),SD(20), &
  1297.                 ED(20),SP(20),EP(20)
  1298.       GG=0.0
  1299.       DO 160 I=1,NV
  1300.       RC(I)=RC(I)*SP(I)
  1301.       GG=GG+RC(I)**2
  1302. 160  CONTINUE
  1303.       GG=SQRT(GG)
  1304.       DO 164 I=1,NV
  1305.       GA(I)=-RC(I)/GG
  1306.       YA(I)=SD(I)*YA(I)/SP(I)+(ED(I)-EP(I))/SP(I)
  1307. 164  CONTINUE
  1308.       WRITE(6,190)(YA(I),I=1,NV)
  1309. 190  FORMAT(10X,'YYYYY'//(10X,5F13.4))
  1310.       Y1=0.0
  1311.       DO 165 I=1,NV
  1312.       Y1=Y1+YA(I)*GA(I)
  1313. 165  CONTINUE
  1314.       Y1=Y1+GY/GG
  1315.       DO 170 I=1,NV
  1316.       YA(I)=GA(I)*Y1
  1317. 170  CONTINUE
  1318.       DO 180 I=1,NV
  1319.       XA(I)=YA(I)*SP(I)+EP(I)
  1320. 180  CONTINUE
  1321.       RETURN
  1322.       END
  1323. !     *****************************************************************
  1324.       SUBROUTINE COV(N1,A,SQ,EO)
  1325.       DIMENSION A(N1,N1),SQ(N1,N1)
  1326.       READ(5,*)((A(I,J),I=1,N1),J=1,N1)
  1327.       WRITE(6,6)((A(I,J),I=1,N1),J=1,N1)
  1328.    6  FORMAT(10X,'A(I,J)='/(5X,5F13.5))
  1329.       DO 10 I=1,N1
  1330.       DO 10 J=1,N1
  1331.       SQ(I,J)=0.0
  1332. 10   CONTINUE
  1333.       DO 15 I=1,N1
  1334.       SQ(I,I)=1.0
  1335. 15   CONTINUE
  1336.       G=0.0
  1337.       DO 40 I=2,N1
  1338.       I1=I-1
  1339.       DO 40 J=1,I1
  1340.       G=G+2.0*A(I,J)**2
  1341. 40   CONTINUE
  1342. !     WRITE(6,42) G
  1343. !42   FORMAT(5X,'G=',F13.5)
  1344.       S1=SQRT(G)
  1345.       FN=FLOAT(N1)
  1346.       S2=EO*S1/FN
  1347. !     WRITE (6,45) S2
  1348.       S3=S1
  1349. !45   FORMAT (10X,'S2=',F13.5)
  1350.       L=0
  1351. 50   S3=S3/FN
  1352. !     WRITE (6,55) S3
  1353. !55   FORMAT (10X,'S3=',F13.5)
  1354. 60   DO 130 IQ=2,N1
  1355.       IQ1=IQ-1
  1356.       DO 130 IP=1,IQ1
  1357.       IF(ABS(A(IP,IQ)).LT.S3) GOTO 130
  1358.       L=1
  1359.       V1=A(IP,IP)
  1360.       V2=A(IP,IQ)
  1361.       V3=A(IQ,IQ)
  1362.       U=0.5*(V1-V3)
  1363. !     WRITE(6,65) V1,V2,V3,U
  1364. !65   FORMAT(10X,'V1*V2*V3*U=',4F13.5)
  1365.       IF(U) 70,80,90
  1366. 70   B=-1.0
  1367.       GOTO 100
  1368. 90   B=1.0
  1369. 100   G=-B*V2/SQRT(V2*V2+U*U)
  1370.       GOTO 105
  1371. 80   IF(V2.GT.S3) GOTO 85
  1372.       G=1.0
  1373.       GOTO 105
  1374. 85   G=-1.0
  1375. 105  ST=G/SQRT(2.0*(1.0+SQRT(1.0-G*G)))
  1376.       CT=SQRT(1.0-ST*ST)
  1377. !     WRITE(6,107) ST,CT
  1378. !107  FORMAT(10X,'ST*CT=',2F13.5)
  1379.       DO 110 I=1,N1
  1380.       G=A(I,IP)*CT-A(I,IQ)*ST
  1381.       A(I,IQ)=A(I,IP)*ST+A(I,IQ)*CT
  1382.       A(I,IP)=G
  1383.       G=SQ(I,IP)*CT-SQ(I,IQ)*ST
  1384.       SQ(I,IQ)=SQ(I,IP)*ST+SQ(I,IQ)*CT
  1385.       SQ(I,IP)=G
  1386. 110  CONTINUE
  1387.       DO 120 I=1,N1
  1388.       A(IP,I)=A(I,IP)
  1389.       A(IQ,I)=A(I,IQ)
  1390. 120  CONTINUE
  1391.       G=2.0*V2*ST*CT
  1392.       A(IP,IP)=V1*CT*CT+V3*ST*ST-G
  1393.       A(IQ,IQ)=V1*ST*ST+V3*CT*CT+G
  1394.       A(IP,IQ)=(V1-V3)*ST*CT+V2*(CT*CT-ST*ST)
  1395.       A(IQ,IP)=A(IP,IQ)
  1396. 130  CONTINUE
  1397.       IF(L-1) 150,140,150
  1398. 140  L=0
  1399.       GOTO 60
  1400. 150  WRITE(6,145)((A(I,J),I=1,N1),J=1,N1)
  1401.       WRITE(6,142)((SQ(I,J),I=1,N1),J=1,N1)
  1402. 142  FORMAT(20X,'SQ(I,J)='/(5X,5F13.5))
  1403. 145  FORMAT(20X,'A(I,J)='/(5X,5F13.5))
  1404.       IF(S3.GT.S2) GOTO 50
  1405.       RETURN
  1406.       END
复制代码




例子:INPUT.dat
6,4,1,3,0,0,1,0,0,1,1,5,0
0.01,1,40
30,5,1.4,2000000,10
3,0.5,0.028,200000,2.5
2000000,0.2,1.4,1
0,0,20,0,20,40
40,20,20,0,0,0
001002,003011,002004,005011,002005,003013,006003,005012
00400,00500,00600
1,1,1,1,2
0
4,5,6
0,0,0,2,0,2,3,4,0,0,0,4

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2006-2-24 09:33 | 显示全部楼层
请问楼主:该随机有限元程序是不是 武清玺编著的那本书上的程序?<BR>
发表于 2006-2-24 12:58 | 显示全部楼层
谢谢先,
有以下疑问:
(1)没有有关程序注释的readme文件。
(2)随时.90后缀的f90文件,却完全是f77标准的程序。
(3)敬请楼主说明程序的配套书籍^_^

再次感谢。
发表于 2006-2-24 18:50 | 显示全部楼层
谢谢,能不能说得详细点儿。
 楼主| 发表于 2006-2-25 15:09 | 显示全部楼层
就是武清玺那本书上的程序
发表于 2006-2-25 21:46 | 显示全部楼层
<P>查了一下,图书馆没有;超星也没有。<BR>不知道哪位可以提供一下电子版的,<BR>非常感谢!!</P>
发表于 2006-3-17 09:17 | 显示全部楼层
是啊,急需电子版的,哪位好心人做点好事啊
发表于 2006-3-23 13:57 | 显示全部楼层
谢谢
发表于 2006-7-18 15:25 | 显示全部楼层
汗!看来要靠自己写注释了
发表于 2006-7-20 15:17 | 显示全部楼层
谢谢楼主,辛苦了
发表于 2010-5-30 10:28 | 显示全部楼层
ou的神!终于弄到武老师的这个程序啦!拜谢!
发表于 2010-5-30 10:43 | 显示全部楼层
怎么运行时出现问题啊?哪位运行通过了的啊?

评分

1

查看全部评分

发表于 2010-5-30 11:05 | 显示全部楼层
好些年前的程式, 个人以为不见得编译仍相同, 可能需稍为修改下吧!
发表于 2011-9-20 21:33 | 显示全部楼层
不能编译,而且是fortran77的代码,看起来太累了··
要是fortran90的就太好了
发表于 2011-12-15 02:34 | 显示全部楼层
要是有电子版的就好了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-28 13:29 , Processed in 0.115969 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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