home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e003 / 4.ddi / ELSTF15.FOR < prev    next >
Encoding:
Text File  |  1987-02-20  |  27.1 KB  |  340 lines

  1.       SUBROUTINE SIXBY6(                                                00237090
  2.      $ID,PROP1,PROP2,PROP3,PROP4,PROP5,PROP6,PROP7,LM,S,P,XM,SA,TT,TEMPD00237100
  3.      $,KK1,KK2,KK3,KK4,KK5,KK6,KK7,IX,NEL,NUMNP,NDMX,NSMX,MXDF,PROP9,KK900237110
  4.      $)                                                                 00237120
  5.       IMPLICIT REAL*8(A-H,O-Z)                                          00237130
  6.       REAL*8    LM,ID                                                   00237140
  7.       DIMENSION LM(MXDF),S(MXDF,MXDF),SA(NSMX,MXDF),ID(NUMNP,1),PROP9(KK00237150
  8.      $9,21),IX(1)                                                       00237160
  9.       COMMON /PREP/ XZ(2),KSKIP,RRPREP(8)                               R0237170
  10.       COMMON /QTSARG/ T(3,3),STIF(6,6),X(4,3),Y1,Y2,X1,X2,Z1,Z2,S1,S2,  R0237180
  11.      $ XX,AX,AY,AZ,I,J,K,MA,MB,LA,LB,JM,IL,NRQTSA(1853)                 R0237190
  12.       COMMON /ELPAR/ZPAR(14),NZP,MBAND,RRELPA(28)                       R0237200
  13.       NS=6                                                              00237210
  14.       ND=6                                                              00237220
  15.       DO 100 I=1,4                                                      00237230
  16.       IF(IX(I).GE.0.AND.IX(I).LE.NUMNP) GO TO 100                       00237240
  17.       KSKIP=1                                                           00237250
  18.       WRITE(6,110)IX(I)                                                 00237260
  19.   100 CONTINUE                                                          00237270
  20.   110 FORMAT (20X,6H NODE ,I6,17H IS OUT OF RANGE.)                     00237280
  21.       IF(KSKIP.EQ.1) RETURN                                             00237290
  22.       DO 120 I=1,4                                                      00237300
  23.       NX=IX(I)                                                          00237310
  24.       IF(NX.EQ.0) GO TO 120                                             00237320
  25.       DO 115 J=1,3                                                      00237330
  26.   115 CALL UNPKID(ID,NUMNP,WX,X(I,J),1,NX,J)                            00237340
  27.   120 CONTINUE                                                          00237350
  28.       MAT=IX(9)                                                         00237360
  29.       IF(MAT.GT.0.AND.MAT.LE.KK9) GO TO 140                             00237370
  30.       KSKIP=1                                                           00237380
  31.       WRITE(6,130)NEL                                                   00237390
  32.   130 FORMAT(///42H A MATRIX COULD NOT BE LOCATED FOR ELEMENT,I6//)     00237400
  33.   140 KK=0                                                              00237410
  34.       DO 150 I=1,6                                                      00237420
  35.       DO 150 J=I,6                                                      00237430
  36.       KK=KK+1                                                           00237440
  37.       STIF(I,J)=PROP9(MAT,KK)                                           00237450
  38.   150 STIF(J,I)=STIF(I,J)                                               00237460
  39.       DO 160 I=1,6                                                      00237470
  40.   160 CALL UNPKID(ID,NUMNP,LM(I),WX,2,IX(1),I)                          00237480
  41.       DO 170 I=1,3                                                      00237490
  42.       DO 170 J=1,3                                                      00237500
  43.       T(I,J)=0.0                                                        00237510
  44.   170 T(I,I)=1.0                                                        00237520
  45.       IF(IX(2).EQ.0) GO TO 180                                          00237530
  46.       X1=X(3,1)-X(2,1)                                                  00237540
  47.       Y1=X(3,2)-X(2,2)                                                  00237550
  48.       Z1=X(3,3)-X(2,3)                                                  00237560
  49.       X2=X(4,1)-X(2,1)                                                  00237570
  50.       Y2=X(4,2)-X(2,2)                                                  00237580
  51.       Z2=X(4,3)-X(2,3)                                                  00237590
  52.       S1=X1*X1+Y1*Y1+Z1*Z1                                              00237600
  53.       S1= DSQRT(S1)                                                     00237610
  54.       X1=X1/S1                                                          00237620
  55.       Y1=Y1/S1                                                          00237630
  56.       Z1=Z1/S1                                                          00237640
  57.       T(1,1)=X1                                                         00237650
  58.       T(1,2)=Y1                                                         00237660
  59.       T(1,3)=Z1                                                         00237670
  60.       AA=X1*X1+Y1*Y1+Z1*Z1                                              00237680
  61.       AB=X1*X2+Y1*Y2+Z1*Z2                                              00237690
  62.       U1=AA*X2-AB*X1                                                    00237700
  63.       U2=AA*Y2-AB*Y1                                                    00237710
  64.       U3=AA*Z2-AB*Z1                                                    00237720
  65.       UU=U1*U1+U2*U2+U3*U3                                              00237730
  66.       UU= DSQRT(UU)                                                     00237740
  67.       T(2,1)=U1/UU                                                      00237750
  68.       T(2,2)=U2/UU                                                      00237760
  69.       T(2,3)=U3/UU                                                      00237770
  70.       T(3,1)=T(1,2)*T(2,3)-T(1,3)*T(2,2)                                00237780
  71.       T(3,2)=T(1,3)*T(2,1)-T(1,1)*T(2,3)                                00237790
  72.       T(3,3)=T(1,1)*T(2,2)-T(1,2)*T(2,1)                                00237800
  73.   180 CONTINUE                                                          00237810
  74.       DO 200 LA=1,4,3                                                   00237820
  75.       LB=LA+2                                                           00237830
  76.       DO 200 MA=1,4,3                                                   00237840
  77.       MB=MA-1                                                           00237850
  78.       DO 200 I=LA,LB                                                    00237860
  79.       DO 200 JM=1,3                                                     00237870
  80.       J=JM+MB                                                           00237880
  81.       XX=0.0                                                            00237890
  82.       DO 190 K=1,3                                                      00237900
  83.       KMB= K+MB                                                         00237910
  84.       XXS=STIF(I,KMB)*T(K,JM)                                           00237920
  85.   190 XX=XX+XXS                                                         00237930
  86.   200 SA(I,J)=XX                                                        00237940
  87.       DO 220 LA=1,4,3                                                   00237950
  88.       LB=LA-1                                                           00237960
  89.       DO 220 MA=1,4,3                                                   00237970
  90.       MB=MA+2                                                           00237980
  91.       DO 220 IL=1,3                                                     00237990
  92.       I=IL+LB                                                           00238000
  93.       DO 220 J=MA,MB                                                    00238010
  94.       XX=0.0                                                            00238020
  95.       DO 210 K=1,3                                                      00238030
  96.       KLB=K+LB                                                          00238040
  97.       XXS=T(K,IL)*SA(KLB,J)                                             00238050
  98.   210 XX=XX+XXS                                                         00238060
  99.   220 S(I,J)=XX                                                         00238070
  100.       CALL WRITET(MBAND,NDIF,14,ND,NS,LM,SA)                            00238080
  101.       RETURN                                                            00238090
  102.       END                                                               00238100
  103.       SUBROUTINE GESTEL(ID,LM,S,P                                       00104820
  104.      &,XM,SA,TT,TEMPD,KK1,KK2,KK3,KK4,KK5,KK6,KK7,IX,IA,NEL             00104830
  105.      &,NUMNP,NDMX,NSMX,MXDF,P10,KK10,KK10A)                             00104840
  106.       IMPLICIT REAL*8 (A-H,O-Z)                                         00104850
  107.       REAL*8 LM,ID                                                      00104860
  108.       DIMENSION LM(MXDF),S(MXDF,MXDF),IX(9)                             00104870
  109.      &,SA(NSMX,MXDF),ID(NUMNP,1),P10(1177,KK10A)                        00104880
  110.       COMMON /PREP/ XZ(2),KSKIP,NDYN,I1,RRPREP(7)                       R0104890
  111.       COMMON /ELPAR/ZPAR(14),NZP,MBAND,RRELPA(28)                       R0104900
  112.       NODS=0                                                            00104910
  113.       DO 10 I=1,8                                                       00104920
  114.       IF(IX(I).GT.0)GO TO 9                                             00104930
  115.       GO TO 11                                                          00104940
  116.     9 IF(IX(I).LE.NUMNP)GO TO 10                                        00104950
  117.       KSKIP=1                                                           00104960
  118.       WRITE(6,1000)IX(I)                                                00104970
  119.    10 NODS=NODS+1                                                       00104980
  120.    11 CONTINUE                                                          00104990
  121.       IF(NODS.EQ.0)WRITE(6,1002)IX(9)                                   00105000
  122.       IF(NODS.EQ.0)KSKIP=1                                              00105010
  123.       IF(KSKIP.EQ.1)RETURN                                              00105020
  124.       MTYPE=IX(9)                                                       00105030
  125.       IF(MTYPE.LE.KK10)GO TO 12                                         00105040
  126.       KSKIP=1                                                           00105050
  127.       WRITE(6,1001)NEL                                                  00105060
  128.       RETURN                                                            00105070
  129.    12 CONTINUE                                                          00105080
  130.       ND=6*NODS                                                         00105090
  131.       M1=0                                                              00105100
  132.       DO 20 I=1,ND                                                      00105110
  133.       DO 20 J=I,ND                                                      00105120
  134.       M1=M1+1                                                           00105130
  135.       S(I,J)=P10(M1,MTYPE)                                              00105140
  136.       S(J,I)=S(I,J)                                                     00105150
  137.    20 CONTINUE                                                          00105160
  138.       MATYP=P10(1177,MTYPE)                                             00105170
  139.       IF(MATYP.EQ.0)GO TO 200                                           00105180
  140.   200 CONTINUE                                                          00105190
  141.       DO 300 I=1,NSMX                                                   00105200
  142.       DO 300 J=1,MXDF                                                   00105210
  143.   300 SA(I,J)=0.                                                        00105220
  144.         K=0                                                             00105230
  145.         DO 310 J=1,NODS                                                 00105240
  146.       DO 310 I=1,6                                                      00105250
  147.         K=K+1                                                           00105260
  148.       CALL UNPKID(ID,NUMNP,LM(K),DX,2,IX(J),I)                          00105270
  149.   310 CONTINUE                                                          00105280
  150.       NS=6                                                              00105290
  151.       NELTYP=15                                                         00105300
  152.       CALL WRITET(MBAND,NDIF,NELTYP,ND,NS,LM,SA)                        00105310
  153.       RETURN                                                            00105320
  154.  1000 FORMAT(20X,26H  ERROR IN ELEMENT TYPE 15/                         00105330
  155.      &20X,5H NODE,I5,16H IS OUT OF RANGE)                               00105340
  156.  1001 FORMAT(40H  FATAL ERROR.  THE STIFFNESS MATRIX FOR,               00105350
  157.      &8H ELEMENT,I5,15H DOES NOT EXIST)                                 00105360
  158.  1002 FORMAT(47H  FATAL ERROR. NO NODES HAVE BEEN SPECIFIED FOR,        00105370
  159.      &8H ELEMENT,I5)                                                    00105380
  160.       END                                                               00105390
  161.       FUNCTION GETWRD(GET001)                                           00105400
  162.       INTEGER SECT,POINT,BEGIN,GETSEC,EPOINT,BLANK,AGET,AGETW           00105410
  163.       LOGICAL EOL,EOS,EOF,ERROR,INDEX,GETWRD,IGET,RGET,ERR1             00105420
  164.       COMMON  /FRECNT/ LINE(80),SECT,EOL,EOS,EOF,                       00105430
  165.      1ERROR,BLANK,ICOMMA,POINT,BEGIN,LENGTH,                            00105440
  166.      2EPOINT,NSECT,LINENM,MAXSTR,KUNIT,JUNIT,IUNIT                      00105450
  167.       GETWRD = .FALSE.                                                  00105460
  168.       LENGTH = 0                                                        00105470
  169.       IF (EOL) RETURN                                                   00105480
  170.       DO 100 BEGIN = POINT,80                                           00105490
  171.       IF (LINE(BEGIN).NE.BLANK) GO TO 110                               00105500
  172. 100   CONTINUE                                                          00105510
  173.       EOL = .TRUE.                                                      00105520
  174.       POINT = 80                                                        00105530
  175.       RETURN                                                            00105540
  176. 110   DO 170 POINT = BEGIN,80                                           00105550
  177.       IF (LINE(POINT).EQ.BLANK.OR.LINE(POINT).EQ.ICOMMA)                00105560
  178.      1GO TO 180                                                         00105570
  179.       LENGTH = POINT - BEGIN + 1                                        00105580
  180.       MAXSTR = LENGTH                                                   00105590
  181. 170   CONTINUE                                                          00105600
  182.       GETWRD = .TRUE.                                                   00105610
  183.       EOL = .TRUE.                                                      00105620
  184.       RETURN                                                            00105630
  185. 180   IP = POINT                                                        00105640
  186.       DO 200 POINT = POINT,80                                           00105650
  187.       IF (LINE(POINT).EQ.ICOMMA) GO TO 210                              00105660
  188.       IF (LINE(POINT).NE.BLANK) GO TO 190                               00105670
  189. 200   CONTINUE                                                          00105680
  190.       GETWRD = .TRUE.                                                   00105690
  191.       EOL =.TRUE.                                                       00105700
  192.       RETURN                                                            00105710
  193. 190   POINT = IP                                                        00105720
  194.       GETWRD = .TRUE.                                                   00105730
  195.       RETURN                                                            00105740
  196. 210   POINT = POINT + 1                                                 00105750
  197.       GETWRD = .TRUE.                                                   00105760
  198.       RETURN                                                            00105770
  199.       END                                                               00105780
  200.       SUBROUTINE CLAMP(                                                 00040000
  201.      $ID,PROP1,PROP2,PROP3,PROP4,PROP5,PROP6,PROP7,LM,S,P,XM,SA,TT,TEMPD00040010
  202.      $,KK1,KK2,KK3,KK4,KK5,KK6,KK7,IX,IA,NEL,NUMNP,NDMX,NSMX,MXDF)      00040020
  203.       IMPLICIT REAL*8(A-H,O-Z)                                          00040030
  204.       REAL*8  LM                                                        00040040
  205.       REAL*8  ID                                                        00040050
  206.       REAL*8  NPAR                                                      00040060
  207.       LOGICAL ELPRT,ELPCH,GENPRT,GENPCH                                 00040070
  208.       COMMON/CTL/ELPRT,ELPCH,GENPRT,GENPCH                              00040080
  209.       COMMON /ELPAR/ NPAR(14),NUMNN,MBAND,NELTYP,N1,N2,N3,N4,N5,MTOT,NEQ00040090
  210.      $ ,N2P,N3P,NMRI,NTRI,N1P,NUMEL,NUMEL2,KZ(20,2),NEMN                00040100
  211.       DIMENSION LM(MXDF),S(MXDF,MXDF),P(MXDF,KK6), XM(MXDF)             00040110
  212.       DIMENSION SA(NSMX,MXDF),TT(NSMX,KK6)                              00040120
  213.       DIMENSION ID(NUMNP,1),PROP6(KK6,7)                                00040130
  214.       COMMON / MISC / NBLOCK,NEQB,LL,NF,LB                              00040140
  215.       COMMON/PREP/XMX,XAD,KSKIP,NDYN,I1,RRPREP(7)                       R0040150
  216.       COMMON/JUNK/R(6),X(5,3),N(5),I,Z(5),Y(3),RRJUNK(195)              R0040160
  217.       NS=2                                                              00040170
  218.       ND=6                                                              00040180
  219.       DO 210 MMM=1,NUMEL2                                               00040190
  220.       ZER=0.0D0                                                         00040200
  221.       CALL MEMSET (ZER,LM(1),NEMN)                                      00040210
  222.       READ (8) Z,SC,Y                                                   00040220
  223.       DO 100 I=1,5                                                      00040230
  224.   100 N(I)= Z(I)                                                        00040240
  225.       IF(N(3).EQ.0) N(3)=N(1)                                           00040250
  226.       SD=Y(1)                                                           00040260
  227.       SR=Y(2)                                                           00040270
  228.       TRACE= Y(3)                                                       00040280
  229.       IF (TRACE.LT.0.1)TRACE=1.0E+10                                    00040290
  230.       KD=0                                                              00040300
  231.       KR=0                                                              00040310
  232.       IF(SC.GE.10) KD=1                                                 00040320
  233.       IF(SC.EQ.1.0.OR.SC.EQ.11.0) KR=1                                  00040330
  234.       DO 115 I=1,5                                                      00040340
  235.       NX=N(I)                                                           00040350
  236.       IF(NX.EQ.0) GO TO 115                                             00040360
  237.       DO 110 J=1,3                                                      00040370
  238.       CALL UNPKID ( ID  ,NUMNP,W      ,X(I,J)  ,1,NX,J)                 00040380
  239.   110 CONTINUE                                                          00040390
  240.   115 CONTINUE                                                          00040400
  241.       IF(N(4).EQ.0) GO TO 120                                           00040410
  242.       X1=X(3,1)-X(2,1)                                                  00040420
  243.       Y1=X(3,2)-X(2,2)                                                  00040430
  244.       Z1=X(3,3)-X(2,3)                                                  00040440
  245.       X2=X(5,1)-X(4,1)                                                  00040450
  246.       Y2=X(5,2)-X(4,2)                                                  00040460
  247.       Z2=X(5,3)-X(4,3)                                                  00040470
  248.       T1=Y1*Z2-Y2*Z1                                                    00040480
  249.       T2=Z1*X2-Z2*X1                                                    00040490
  250.       T3=X1*Y2-X2*Y1                                                    00040500
  251.       GO TO 130                                                         00040510
  252.   120 T1=X(3,1)-X(2,1)                                                  00040520
  253.       T2=X(3,2)-X(2,2)                                                  00040530
  254.       T3=X(3,3)-X(2,3)                                                  00040540
  255.   130 XL=T1*T1+T2*T2+T3*T3                                              00040550
  256.       XL= DSQRT(XL)                                                     00040560
  257.       T1=T1/XL                                                          00040570
  258.       T2=T2/XL                                                          00040580
  259.       T3=T3/XL                                                          00040590
  260.       IF (KD.EQ.0) GO TO 140                                            00040600
  261.       SA(1,1)=T1*TRACE                                                  00040610
  262.       SA(1,2)=T2*TRACE                                                  00040620
  263.       SA(1,3)=T3*TRACE                                                  00040630
  264.       S(1,1)=T1*T1*TRACE                                                00040640
  265.       S(1,2)=T1*T2*TRACE                                                00040650
  266.       S(1,3)=T1*T3*TRACE                                                00040660
  267.       S(2,2)=T2*T2*TRACE                                                00040670
  268.       S(2,3)=T2*T3*TRACE                                                00040680
  269.       S(3,3)=T3*T3*TRACE                                                00040690
  270.       PP=TRACE*SD                                                       00040700
  271.       R(1)=T1*PP                                                        00040710
  272.       R(2)=T2*PP                                                        00040720
  273.       R(3)=T3*PP                                                        00040730
  274.         DO 135 J=1,LL                                                   00040740
  275. 135     TT(1,J)=-PP*PROP6(J,4)                                          00040750
  276.       GO TO 150                                                         00040760
  277.   140 S(1,1)=0.                                                         00040770
  278.       S(1,2)=0.                                                         00040780
  279.       S(1,3)=0.                                                         00040790
  280.       S(2,2)=0.                                                         00040800
  281.       S(2,3)=0.                                                         00040810
  282.       S(3,3)=0.                                                         00040820
  283.       SA(1,1)=0.                                                        00040830
  284.       SA(1,2)=0.                                                        00040840
  285.       SA(1,3)=0.                                                        00040850
  286.       R(1)=0.                                                           00040860
  287.       R(2)=0.                                                           00040870
  288.       R(3)=0.                                                           00040880
  289.   150 IF (KR.EQ.0) GO TO 160                                            00040890
  290.       SA(2,4)=T1*TRACE                                                  00040900
  291.       SA(2,5)=T2*TRACE                                                  00040910
  292.       SA(2,6)=T3*TRACE                                                  00040920
  293.       S(4,4)=T1*T1*TRACE                                                00040930
  294.       S(4,5)=T1*T2*TRACE                                                00040940
  295.       S(4,6)=T1*T3*TRACE                                                00040950
  296.       S(5,5)=T2*T2*TRACE                                                00040960
  297.       S(5,6)=T2*T3*TRACE                                                00040970
  298.       S(6,6)=T3*T3*TRACE                                                00040980
  299.       PP=TRACE*SR                                                       00040990
  300.       R(4)=T1*PP                                                        00041000
  301.       R(5)=T2*PP                                                        00041010
  302.       R(6)=T3*PP                                                        00041020
  303.         DO 155 J=1,LL                                                   00041030
  304. 155     TT(2,J)=-PP*PROP6(J,4)                                          00041040
  305.       GO TO 170                                                         00041050
  306.   160 S(4,4)=0.                                                         00041060
  307.       S(4,5)=0.                                                         00041070
  308.       S(4,6)=0.                                                         00041080
  309.       S(5,5)=0.                                                         00041090
  310.       S(5,6)=0.                                                         00041100
  311.       S(6,6)=0.                                                         00041110
  312.       SA(2,4)=0.                                                        00041120
  313.       SA(2,5)=0.                                                        00041130
  314.       SA(2,6)=0.                                                        00041140
  315.       R(4)=0.                                                           00041150
  316.       R(5)=0.                                                           00041160
  317.       R(6)=0.                                                           00041170
  318.   170 DO 180 I=2,6                                                      00041180
  319.       IM1=I-1                                                           00041190
  320.       DO 180 J=1,IM1                                                    00041200
  321.   180 S(I,J)=S(J,I)                                                     00041210
  322.       DO 190 I=1,6                                                      00041220
  323.       DO 190 J=1,LL                                                     00041230
  324.   190 P(I,J)=R(I)*PROP6(J,4)                                            00041240
  325.       NN=N(1)                                                           00041250
  326.       DO 200 I=1,6                                                      00041260
  327.   200 CALL UNPKID ( ID  ,NUMNP,LM(I)  ,WX     ,2,NN,I)                  00041270
  328.         TT(1,1)=TT(1,1)+N(1)/10000.                                     00041280
  329.         TT(2,1)=TT(2,1)+N(1)/10000.                                     00041290
  330.       IF(.NOT.ELPRT)  GO TO 1150                                        00041300
  331.       IRAM=MMM+NUMEL                                                    00041310
  332.       WRITE(6,1400)IRAM                                                 00041320
  333.       IF(ELPCH) WRITE(7,1400) IRAM                                      00041330
  334.  1150 CONTINUE                                                          00041340
  335.       CALL WRITET(MBAND,NDIF,7,ND,NS,LM,SA)                             00041350
  336.   210 CONTINUE                                                          00041360
  337.       RETURN                                                            00041370
  338.  1400 FORMAT(5X,17HELEMENT NUMBER = ,I5)                                00041380
  339.       END                                                               00041390
  340.