File: ddcomp.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 (154 lines) | stat: -rw-r--r-- 4,919 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
150
151
152
153
154
      SUBROUTINE DDCOMP
C
C     DDCOMP IS THE DMAP DRIVER FOR DECOMP
C
C     DECOMP    KAA/LLL,ULL/SYM/CHLSKY/MINDIA/DET/POWER/SING $
C
C        SYM    =  1 - USE SYMMETRIC DECOMPOSITION
C                  0 - CHOOSE WHICH DECOMPOSITION BASED ON INPUT MATRIX
C                 -1 - USE UNSYMETRIC DECOMPOSITION
C        CHLSKY =  1 USE CHOLESKY DECOMPOSITION LLL = C
C        DET    =  DETERMINANT OF KAA
C        POWER  =  SCALE FACTOR FOR DET
C        MINDIA =  MINIMUM DIAGONAL OF ULL
C        SING   = -1 SINGULAR MATRIX
C
      INTEGER          ULL       ,SYM      ,POWER    ,SING     ,
     1                 CHLSKY    ,NAME(2)  ,SQR      ,RECT     ,
     2                 OUTPT     ,UPPER
      REAL             ZZ(1)     ,ZZZ(1)
      DOUBLE PRECISION CDET      ,CMNDIA   ,MINDIA   ,SDETC    ,
     1                 MINDS     ,DDET     ,DMNDIA   ,SDET
      CHARACTER        UFM*23    ,UWM*25   ,UIM*29   ,SFM*25   ,
     1                 SWM*27
      COMMON /XMSSG /  UFM       ,UWM      ,UIM      ,SFM      ,
     1                 SWM
      COMMON /BLANK /  ISYM      ,CHLSKY                       ,
     1                 MINDIA    ,DET(2)   ,POWER    ,SING
      COMMON /SFACT /  IFILA(7)  ,IFILL(7) ,IFILU(7) ,KSCR1    ,
     1                 KSCR2     ,NZ       ,SDET     ,SDETC    ,
     2                 KPOW      ,KSCR3    ,MINDS    ,ICHLK
      COMMON /DCOMPX/  IA(7)     ,IL(7)    ,IU(7)    ,ISCR1    ,
     1                 ISCR2     ,ISCR3    ,DDET     ,IPOW     ,
     2                 NZZ       ,DMNDIA   ,IB
      COMMON /CDCMPX/  JA(7)     ,JL(7)    ,JU(7)    ,JSCR1    ,
     1                 JSCR2     ,JSCR3    ,CDET(2)  ,JPOW     ,
     2                 NZZZ      ,CMNDIA   ,JB
      COMMON /NAMES /  KNAMES(19)
      COMMON /SYSTEM/  KSYSTM(65)
      COMMON /ZZZZZZ/  Z(1)
      EQUIVALENCE      (ZZ(1),Z(1))
      EQUIVALENCE      (ZZZ(1),Z(1))
      EQUIVALENCE      (KSYSTM( 2),OUTPT)  ,(KNAMES(12),SQR)   ,
     1                 (KNAMES(13),RECT )  ,(KNAMES(17),SYM)   ,
     2                 (KNAMES(16),UPPER)  ,(KNAMES(15),LOWER)
      DATA    KAA,     LLL,   ULL,    LSCR1,  LSCR2,  LSCR3,  LSCR4 /
     1        101,     201,   202,    301  ,  302  ,  303  ,  304   /
      DATA    NAME  /  4HDDCO,4HMP    /
C
      SING  = 0
      JA(1) = KAA
      CALL RDTRL (JA)
      IFORM = JA(4)
      IF (ISYM) 10,50,30
   10 IF (IFORM .EQ. SYM) WRITE (OUTPT,20) SWM,NAME
   20 FORMAT (A27,' 2340, MODULE ',2A4,' HAS BEEN REQUESTED TO DO ',
     1       'UNSYMMETRIC DECOMPOSITION OF A SYMMETRIC MATRIX')
      IFORM = RECT
      IF (JA(2) .EQ. JA(3)) IFORM = SQR
      GO TO 50
   30 IF (JA(2).EQ.JA(3) .AND. IFORM.NE.SYM) WRITE (OUTPT,40) SWM,NAME
   40 FORMAT (A27,' 2341, MODULE ',2A4,'HAS BEEN FURNISHED A SQUARE ',
     1       'MATRIX MARKED UNSYMMETRIC FOR SYMMETRIC DECOMPOSITION.')
      IFORM = SYM
   50 ISYM  = -1
      IF (IFORM .EQ. SYM) ISYM = 1
      JA(4) = IFORM
      IF (ISYM .LT. 0) GO TO 200
C
C     SET UP CALL TO SDCOMP
C
      IFILA(1) = KAA
      CALL RDTRL (IFILA)
      IFILL(1) = LLL
      IFILU(1) = LSCR4
      KSCR1    = LSCR1
      KSCR2    = LSCR2
      KSCR3    = LSCR3
      NZ       = KORSZ(Z)
      IFILL(5) = IFILA(5)
      ICHLK    = CHLSKY
      CALL SDCOMP (*400,Z,Z,Z)
      DET(1)   = SDET
      DET(2)   = SDETC
      MINDIA   = MINDS
      POWER    = KPOW
      IFILL(2) = IFILA(2)
      IFILL(3) = IFILA(3)
      IFILL(4) = LOWER
      CALL WRTTRL (IFILL)
      RETURN
C
C     SET UP CALL TO DECOMP
C
  200 CONTINUE
      IF (JA(5) .GT. 2) GO TO 300
      IA(1)  = KAA
      CALL RDTRL (IA)
      IL(1)  = LLL
      IU(1)  = ULL
      NZZ    = KORSZ(ZZ)
      ISCR1  = LSCR1
      ISCR2  = LSCR2
      ISCR3  = LSCR3
      IB     = 0
      IL(5)  = 2
      CALL DECOMP (*400,ZZ,ZZ,ZZ)
      IU(5)  = 2
      IL(4)  = LOWER
      IU(4)  = UPPER
      IL(3)  = IL(2)
      IU(3)  = IU(2)
      DET(1) = DDET
      DET(2) = 0.0
      POWER  = IPOW
      MINDIA = DMNDIA
      CALL WRTTRL (IU)
      CALL WRTTRL (IL)
      RETURN
C
C     SET UP CALL TO CDCOMP
C
  300 CONTINUE
      JL(1)  = LLL
      JU(1)  = ULL
      JSCR1  = LSCR1
      JSCR2  = LSCR2
      JSCR3  = LSCR3
      NZZZ   = KORSZ(ZZZ)
      JL(5)  = 4
      JB     = 0
      CALL CDCOMP (*400,ZZZ,ZZZ,ZZZ)
      JU(5)  = 4
      JL(4)  = LOWER
      JU(4)  = UPPER
      JL(3)  = JL(2)
      JU(3)  = JU(2)
      DET(1) = CDET(1)
      DET(2) = CDET(2)
      MINDIA = CMNDIA
      POWER  = JPOW
      CALL WRTTRL (JL)
      CALL WRTTRL (JU)
      RETURN
C
  400 SING   = -1
      DET(1) = 0.0
      DET(2) = 0.0
      POWER  = 0
      MINDIA = 0.0
      CALL FNAME (KAA,JA(1))
      WRITE  (OUTPT,410) UIM,JA(1),JA(2)
  410 FORMAT (A29,' FORM DECOMP MODULE. MATRIX ',2A4,' IS SINGULAR')
      RETURN
      END