File: alg30.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 (48 lines) | stat: -rw-r--r-- 992 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
      SUBROUTINE ALG30 (A,B)
C
      DIMENSION A(9,9),B(9),INDEX(9)
C
      N=9
      DO 100 J=1,N
100   INDEX(J)=0
110   AMAX=-1.0
      DO 120 J=1,N
      IF(INDEX(J).NE.0)GO TO 120
      DO 115 L=1,N
      IF(INDEX(L).NE.0)GO TO 115
      PV=ABS(A(J,L))
      IF(PV.LE.AMAX)GO TO 115
      IR=J
      IC=L
      AMAX=PV
115   CONTINUE
120   CONTINUE
      IF(AMAX.LE.0.0)RETURN
      INDEX(IC)=IR
      IF(IC.EQ.IR)GO TO 150
      DO 140 L=1,N
      PV=A(IR,L)
      A(IR,L)=A(IC,L)
      A(IC,L)=PV
      IF(L.GT.1)GO TO 140
      PV=B(IR)
      B(IR)=B(IC)
      B(IC)=PV
140   CONTINUE
150   PV=1.0/A(IC,IC)
      A(IC,IC)=1.0
      DO 160 L=1,N
      A(IC,L)=A(IC,L)*PV
      IF(L.GT.1)GO TO 160
      B(IC)=B(IC)*PV
160   CONTINUE
      DO 180 L1=1,N
      IF(L1.EQ.IC)GO TO 180
      PV=A(L1,IC)
      A(L1,IC)=0.0
      DO 170 L=1,N
170   A(L1,L)=A(L1,L)-A(IC,L)*PV
      B(L1)=B(L1)-B(IC)*PV
180   CONTINUE
      GO TO 110
      END