File: stack.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 (60 lines) | stat: -rw-r--r-- 1,330 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
      SUBROUTINE STACK (IDEG,NEW,ILD,IW)
C
C     THIS ROUTINE IS USED ONLY IN BANDIT MODULE
C
C     STACK POINTS OF ZERO DEGREE AT END OF THE NUMBERING.
C     IW IS SCRATCH STORAGE.
C
      DIMENSION       IDEG(1),  NEW(1),   ILD(1),   IW(1)
      COMMON /BANDS / NN
      COMMON /BANDD / DUM(5),   KT
C
      KT  = 0
      NN1 = NN - 1
C
C     LIST POINTS OF ZERO DEGREE AND INCREMENT COUNTER KT.
C
      DO 10 I = 1,NN
      IF (IDEG(I) .GT. 0) GO TO 10
      KT = KT + 1
      IW(KT) = ILD(I)
   10 CONTINUE
      IF (KT .LE. 0) GO TO 80
C
C     SORT LIST OF RENUMBERED NUMBERS TO BE STACKED.
C
      IF (KT .LE. 1) GO TO 40
      KT1 = KT-1
      DO 30 I = 1,KT1
      K = KT - I
      KFLAG = 0
      DO 20 J = 1,K
      J1 = J + 1
      IF (IW(J) .LE. IW(J1))  GO TO 20
      KFLAG = 1
      L = IW(J)
      IW(J ) = IW(J1)
      IW(J1) = L
   20 CONTINUE
      IF (KFLAG .EQ. 0) GO TO 40
   30 CONTINUE
   40 CONTINUE
C
C     STACK POINTS OF ZERO DEGREE AT END OF NEW.
C
      DO 70 L = 1,KT
      I = IW(L) - L + 1
      K = NEW(I)
      IF (I .GE. NN) GO TO 60
      DO 50 J = I,NN1
   50 NEW(J) = NEW(J+1)
   60 NEW(NN) = K
   70 CONTINUE
C
C     CORRECT ILD, THE INVERSE OF NEW.
C
   80 DO 90 I = 1,NN
      K = NEW(I)
   90 ILD(K) = I
      RETURN
      END