File: initl2.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 (146 lines) | stat: -rw-r--r-- 4,151 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
      SUBROUTINE INITL2 (OFFSET,DELTT)
C
C     INITL2 WILL COMPUTE THE STARTING VALUES FOR THE INTEGRATION
C     ROUTINE
C
C     THIS ROUTINE IS SUITABLE FOR DOUBLE PRECISION OPERATION
C
      INTEGER          OFFSET   ,RSP      ,FILEM    ,FILEB    ,
     1                 FILEK    ,SQR      ,FILE     ,IFILA(7) ,
     2                 IFILB(7) ,IFILC(7) ,NAME(2)  ,RDP
      DOUBLE PRECISION DET      ,MINDIA   ,ALPHA(2) ,BETA(2)
      COMMON /SADDX /  NOMAT    ,NZ       ,MCBS(67)
      COMMON /NAMES /  RD       ,RDREW    ,WRT      ,WRTREW   ,
     1                 REW      ,NOREW    ,EOFNRW   ,RSP      ,
     2                 RDP      ,CSP      ,CDP      ,SQR
      COMMON /SFACT /  IFA(7)   ,IFL(7)   ,IFU(7)   ,ISC1     ,
     1                 ISC2     ,NXX      ,ID(5)    ,ISC3     ,
     2                 ID1(2)   ,ICHL
      COMMON /DCOMPX/  IA(7)    ,IL(7)    ,IU(7)    ,ISCR10   ,
     1                 ISCR20   ,ISCR30   ,DET      ,POWER    ,
     2                 NX       ,MINDIA
      COMMON /TRDXX /  FILEK(7) ,FILEM(7) ,FILEB(7) ,
     1                 ISCR1    ,ISCR2    ,ISCR3    ,ISCR4    ,
     2                 ISCR5    ,ISCR6    ,IOPEN    ,ISYM
      COMMON /ZZZZZZ/  Z(1)
      EQUIVALENCE      (MCBS(1),IFILA(1)) ,(MCBS(8),ITYPAL)   ,
     1                 (MCBS(9),ALPHA(1)) ,(MCBS(13),IFILB(1)),
     2                 (MCBS(20),ITYPBT)  ,(MCBS(21),BETA(1)) ,
     3                 (MCBS(61),IFILC(1))
      DATA    NAME  /  4HINIT,4HL2  /
C
      NOMAT   = 2
      IPREC   = RDP
      ALPHA(2)= 0.0D0
      BETA(2) = 0.0D0
      NX      = KORSZ(Z) - OFFSET
      NZ      = NX
C
C     FORM AND DECOMPOSE THE LEFT HAND MATRIX
C
      ITYPAL   = RDP
      ITYPBT   = RDP
      ALPHA(1) = 1.0D0/DELTT**2
      BETA(1)  = 0.5D0/DELTT
      IFILC(4) = 6
      DO 10 I = 1,7
      IFILA(I) = FILEM(I)
   10 IFILB(I) = FILEB(I)
      IFILC(2) = FILEK(2)
      IFILC(1) = ISCR2
      IF (FILEK(1) .LE. 0) IFILC(1) = ISCR1
      IFILC(3) = FILEK(2)
      IF (IFILA(1).NE.0 .AND. IFILA(4).NE.6) IFILC(4) = SQR
      IF (IFILB(1).NE.0 .AND. IFILB(4).NE.6) IFILC(4) = SQR
      IFILC(5) = IPREC
      IF (FILEM(1).LE.0 .AND. FILEB(1).LE.0) GO TO 60
      CALL SADD (Z,Z)
      IF (FILEK(1) .LE. 0) GO TO 21
   11 DO 20 I = 1,7
      IFILA(I) = IFILC(I)
   20 IFILB(I) = FILEK(I)
      IF (IFILB(4) .NE. 6) IFILC(4) = SQR
      IFILC(1) = ISCR1
      ALPHA(1) = 1.0D0
      BETA(1)  = 1.0D0/3.0D0
      CALL SADD (Z,Z)
   21 CONTINUE
      CALL WRTTRL (IFILC)
      IF (IFILC(4) .NE. 6) GO TO 31
C
C     SET UP FOR SYMMETRIC DECOMPOSITION
C
      DO 32  I = 1,7
      IFA(I) = IFILC(I)
   32 CONTINUE
      IFL(1) = ISCR2
      IFU(1) = ISCR3
      ISC1   = ISCR4
      ISC2   = ISCR5
      ISC3   = ISCR6
      IFL(5) = IPREC
      ICHL   = 0
      NXX    = NX
      FILE   = IFA(1)
      CALL SDCOMP (*1030,Z,Z,Z)
      CALL WRTTRL (IFL)
      ISYM   = 0
      GO TO 33
C
C     SET UP FOR UNSYMMETRIC DECOMPOSITION
C
   31 CONTINUE
      ISYM = 1
      DO 30 I = 1,7
   30 IA(I)  = IFILC(I)
      IL(1)  = ISCR2
      IU(1)  = ISCR3
      ISCR10 = ISCR4
      ISCR20 = ISCR5
      ISCR30 = ISCR6
      IL(5)  = IPREC
      FILE   = IA(1)
      CALL DECOMP (*1030,Z(1),Z(1),Z(1))
      CALL WRTTRL (IL)
      CALL WRTTRL (IU)
C
C     FORM FIRST RIGHT HAND MATRIX
C
   33 CONTINUE
      DO 40 I = 1,7
   40 IFILA(I) = FILEM(I)
      ALPHA(1) = 2.0D0/DELTT**2
      BETA(1)  = -1.0D0/3.0D0
      IFILC(1) = ISCR1
      CALL SADD (Z,Z)
C
C     FORM SECOND RIGHT HAND MATRIX
C
      ALPHA(1) = -1.0D0/DELTT**2
      IFILC(1) = ISCR5
      CALL SADD (Z,Z)
      DO 50 I = 1,7
      IFILA(I) = IFILC(I)
   50 IFILB(I) = FILEB(I)
      ALPHA(1) = 1.0D0
      BETA(1)  = 0.5D0/DELTT
      IFILC(1) = ISCR4
      CALL SADD (Z,Z)
      RETURN
C
C     ERRORS
C
 1030 IP1 = -5
 1031 CALL MESAGE (IP1,FILE,NAME(1))
C
C     NO BDD OR MDD
C
   60 IF (FILEK(1) .LE. 0) GO TO 70
      IFILC(1) =0
      GO TO 11
C
C     ILLEGAL INPUT.   NO MATRICES
C
   70 IP1 = -7
      GO TO 1031
      END