File: mring.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye, sid
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (127 lines) | stat: -rw-r--r-- 4,672 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
      SUBROUTINE MRING (POINTS)
C
C     HEAT CONDUCTIVITY SMA2 ROUITNE FOR TRIANGULAR (POINTS=3) AND
C     TRAPEZOIDAL (POINTS=4) RING ELEMENTS.
C     THIS ROUTINE IS SEPARATE FROM MTRAPR AND MTRIRG SO AS TO BE
C     IN OVERLAY WITH MTRMEM AND MQDMEM.
C
      LOGICAL         NOGO
      INTEGER         POINTS   ,OUTPT    ,SYSBUF   ,TINT     ,MAP(15)
      CHARACTER       UFM*23   ,UWM*25   ,UIM*29   ,SFM*25   ,SWM*27
      COMMON /XMSSG / UFM      ,UWM      ,UIM      ,SFM      ,SWM
      COMMON /SYSTEM/ SYSBUF   ,OUTPT    ,NOGO
      COMMON /SMA2ET/ ECPT(100)
      EQUIVALENCE     (T,TINT)
      DATA    PI23  / 2.0943951024  /
      DATA    MAP   / 1,2,3, 1,2,3, 2,3,4, 3,4,1, 4,1,2 /
C
C     ECPT LISTS
C
C     ECPT     TRIRG -------- TRMEM          TRAPRG ------- QDMEM
C     ===========================================================
C      1       EL-ID          EL-ID          EL-ID          EL-ID
C      2       SIL-1          SIL-1          SIL-1          SIL-1
C      3       SIL-2          SIL-2          SIL-2          SIL-2
C      4       SIL-3          SIL-3          SIL-3          SIL-3
C      5       THETA          THETA          SIL-4          SIL-4
C      6       MATID          MATID          THETA          THETA
C      7       CSID-1         T              MATID          MATID
C      8       X1             NS-MASS        CSID-1         T
C      9       Y1             CSID-1         X1             NS-MASS
C     10       Z1             X1             Y1             CSID-1
C     11       CSID-2         Y1             Z1             X1
C     12       X2             Z1             CSID-2         Y1
C     13       Y2             CSID-2         X2             Z1
C     14       Z2             X2             Y2             CSID-2
C     15       CSID-3         Y2             Z2             X2
C     16       X3             Z2             CSID-3         Y2
C     17       Y3             CSID-3         X3             Z2
C     18       Z3             X3             Y3             CSID-3
C     19       AVG-TEMP       Y3             Z3             X3
C     20                      Z3             CSID-4         Y3
C     21                      AVG-TEMP       X4             Z3
C     22                                     Y4             CSID-4
C     23                                     Z4             X4
C     24                                     AVG-TEMP       Y4
C     25                                                    Z4
C     26                                                    AVG-TEMP
C
C     GEOMETRY CHECKS X  MUST BE .GT.0, AND Y = 0  FOR I = 1,2,..,POINTS
C                      I                     I
C
      I1 = POINTS + 4
      I2 = I1 + 4*POINTS - 1
      DO 20 I = I1,I2,4
      IF (ECPT(I+1)) 140,10,10
   10 IF (ECPT(I+2)) 140,20,140
   20 CONTINUE
C
C     POINT ORDERING CHECK.
C
      IF (POINTS .EQ. 4) GO TO 30
      I1 = 1
      I2 = 3
      GO TO 40
   30 I1 = 4
      I2 = 15
   40 JPOINT = POINTS + 1
      DO 50 I = I1,I2,3
      IR = MAP(I  )*4 + JPOINT
      IS = MAP(I+1)*4 + JPOINT
      IT = MAP(I+2)*4 + JPOINT
      TEMP = (ECPT(IS) - ECPT(IR))*(ECPT(IT+2) - ECPT(IS+2))  -
     1       (ECPT(IT) - ECPT(IS))*(ECPT(IS+2) - ECPT(IR+2))
      IF (TEMP) 140,140,50
   50 CONTINUE
C
C     TRAPEZOID TEST.
C
      IF (POINTS .NE. 4) GO TO 100
      IF (ECPT(11) - ECPT(15)) 70,60,70
   60 IF (ECPT(19) - ECPT(23)) 70,90,70
   70 CALL PAGE2 (-2)
      WRITE  (OUTPT,80) SWM,ECPT(1)
   80 FORMAT (A27,' 3091, A TRAPRG ELEMENT =',I14,' DOES NOT HAVE ',
     1       'SIDE 1-2 PARALLEL TO SIDE 3-4.')
C
C     THICKNESS OF TRMEM OR QDMEM TO BE CALLED BELOW.
C     QDMEM WILL SUBDIVIDE THICKNESS FOR SUB-TRIANGLES AND THUS
C     T IS SET = INTEGER 1 AS A FLAG TO QDMEM ROUTINE WHICH WILL
C     COMPUTE T FOR EACH.
C
C     TEMP. PATH FOR APPROX. THICKNESS
C
   90 T = PI23*(ECPT(9) + ECPT(13) + ECPT(17) + ECPT(21))*3.0/4.0
      GO TO 110
  100 T = PI23*(ECPT(8) + ECPT(12) + ECPT(16))
C
C  CONVERT ECPT TO THAT OF A TRMEM OR QDMEM.
C
  110 J = 5*POINTS + 6
      K = 4*POINTS + 1
      DO 120 I = 1,K
      ECPT(J) = ECPT(J-2)
      J = J - 1
  120 CONTINUE
      ECPT(POINTS+4) = T
      ECPT(POINTS+5) = 0.0
      IF (POINTS .EQ. 4) GO TO 130
C
C     MTRMEM CALL
C
      CALL MASSTQ (4)
      RETURN
C
C     MQDMEM CALL
C
  130 CALL MASSTQ (1)
      RETURN
C
C     BAD GEOMETRY FATAL ERROR.
C
  140 WRITE  (OUTPT,150) UFM,ECPT(1)
  150 FORMAT (A23,' 3092, TRIRG OR TRAPRG ELEMENT =',I14,' POSSESSES ',
     1       'ILLEGAL GEOMETRY.')
      NOGO = .TRUE.
      RETURN
      END