File: trmemd.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (149 lines) | stat: -rw-r--r-- 4,279 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
      SUBROUTINE TRMEMD
C
C     THIS SUBROUTINE CALCULATES THE STIFFNESS AND MASS MATRICES FOR
C     THE  TRIANGULAR MEMBRANE ELEMENT.  CALCULATIONS ARE PERFORMED
C     PRIMARILY BY SUBROUTINES EKTRMS AND EMASTQ.
C     DOUBLE PRECISION VERSION
C
C     ECPT FOR THE TRMEM ELEMENT
C***********************************************************************
C INDEX   DESCRIPTION                                       TYPE
C *****   ***********                                       ****
C   1     ELEMENT ID                                         I
C   2-4   GRID POINTS A,B,AND C                              I
C   5     THETA = ANGLE OF MATERIAL                          R
C   6     MATERIAL ID                                        I
C   7     T                                                  R
C   8     NON-STRUCTURAL MASS                                R
C   9     COORDINATE SYSTEM ID 1                             I
C 10-12   X1,Y1,Z1                                           R
C  13     COORDINATE SYSTEM ID 2                             I
C 14-16   X2,Y2,Z2                                           R
C  17     COORDINATE SYSTEM ID 3                             I
C 18-20   X3,Y3,Z3                                           R
C  21     ELEMENT TEMPERATURE                                R
C***********************************************************************
      DOUBLE PRECISION  K,KOUT,M(9),MOUT(9),KSAVE
     1,                 A,PROD9,TEMP9,XSUB,BFACT,E
      LOGICAL NOGO,HEAT
      INTEGER ELID,ESTID, DICT(10), IPART(3), NECPT(50), NGRID(3)
C
      COMMON /SYSTEM /  KSYSTM (60)
      COMMON /EMGPRM / DM(15),ISMB(3),IPREC,NOGO,HEAT,ICMBAR
      COMMON /EMGDIC /  QQ(3), ELID, ESTID
      COMMON /EMGEST /  ECPT(50)
      COMMON /EMGTRX /  A(225),PROD9(9),TEMP9(9),XSUB(3),BFACT,
     X                  E(18), K(324), KOUT(324),KSAVE(81)
C
      EQUIVALENCE   (ECPT(1),NECPT(1),IELID), (DICT5,DICT(5))
      EQUIVALENCE   (K(1),M(1)),(KOUT(1),MOUT(1)),(KSYSTM(2),IOUTPT)
      EQUIVALENCE   (KSYSTM(56), IHEAT), (ECPT(2), NGRID(1))
C
      DATA  IPART / 1,2, 3/
C
C
C
      IP = IPREC
      DICT(1) = ESTID
C
C     CREATE AN ARRAY POINTING TO GRID POINTS IN INCREASING ORDER
C
  100 DO 140 I=1,2
      IP1 = I+1
      II =  IPART(I)
      DO 120  J=IP1,3
      JJ = IPART(J)
      IF (NGRID(II).LE. NGRID(JJ)) GOTO 120
      IPART(I) =JJ
      IPART(J) =II
      II = JJ
      GO TO 100
  120 CONTINUE
  140 CONTINUE
C
C     IF STIFFNESS MATRIX IS REQUESTED CALL EKTRMS. OTHERWISE GO TO
C     MASS MATRIX CALCULATION SECTION
C
      IF (ISMB(1) .EQ. 0 ) GO TO  300
C
      CALL EKTRMD (0)
C
      IF (NOGO) RETURN
C
C     RE-ORDER  THE STIFFNESS MATRIX BY INCREASING SIL VALUE
C
      IF (HEAT) GO TO 200
      DO 190 I=1,3
      II = IPART(I)
      DO 180 J=1,3
      JJ = IPART(J)
      DO 170 KA=1,3
      DO 160 L=1,3
      ISAVE = (II-1)*27 + (JJ-1) *9 + (KA-1)*3  + L
      IOUT = (I-1)*27 + (J-1)*3  +  (KA-1)*9  + L
  160 K(IOUT)=KSAVE(ISAVE)
  170 CONTINUE
  180 CONTINUE
  190 CONTINUE
C    OUTPUT THE MATRIX
      DICT(2)=1
      DICT(3)=9
      DICT(4)=7
C
      CALL EMGOUT(K,K,81,1,DICT,1,IP)
      GO TO 300
C
C     OUTPUT HEAT MATRIX HERE
C
  200 DO 260 I=1,3
      DO 240 J=1,3
      IOUT = (I-1)* 3+ J
      IK  =  (IPART(I)-1)* 3 + IPART(J)
  240 K(IOUT)=KSAVE(IK)
  260 CONTINUE
C     OUTPUT   HEAT  K
      DICT(2) = 1
      DICT(3) = 3
      DICT(4) = 1
C
      CALL EMGOUT (K,K,9,1,DICT,1,IP)
C
C     PERFORM MASS MATRIX CALCULATIONS HERE
C
  300 IF (ISMB(2)  .EQ.0) RETURN
C
C     CONVENTIONAL MASS MATRIX
C
      CALL EMADTQ (4,M)
C     REORDER THE MASS MATRIX
      IF (HEAT) GO TO 350
      DO 340 I=1,3
      II = (I-1)*3
      IJ = IPART(I)
      JJ = (IJ-1)*3
      DO  320 J=1,3
      IOUT = II + J
      IK = JJ + J
  320 MOUT(IOUT) =  M(IK)
  340 CONTINUE
C
      DICT(2) =2
      DICT(3) = 9
      DICT(4) = 7
C
      CALL EMGOUT (MOUT, MOUT, 9,1,DICT,2,IP)
      RETURN
C
C     HEAT FORMULATION
C
  350 DO 360 I=1,3
      J=IPART(I)
  360 MOUT(I)=M(J)
      DICT(2)=2
      DICT(3)=3
      DICT(4)=1
C
      CALL EMGOUT(MOUT,MOUT,3,1,DICT,2,IP)
      RETURN
C
      END