File: alg25.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 (85 lines) | stat: -rw-r--r-- 2,659 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
      SUBROUTINE ALG25 (IX,LX,LOG1,X,Y1)
C
      REAL        LINE
      DIMENSION   X(1),Y1(1),SYMBOL(1),LINE(121),XNUM(13)
      DATA SYMBOL/1H*/, DASH/1H-/, CROSS/1H+/, BLANK/1H /, XI/1HI/
C
      YMIN = Y1(1)
      YMAX = YMIN
      DO 200 I = 1,IX
      IF (Y1(I) .LT. YMIN) YMIN = Y1(I)
      IF (Y1(I) .GT. YMAX) YMAX = Y1(I)
200   CONTINUE
      IF (YMIN .EQ. YMAX) GO TO 900
      YH   = YMAX + (YMAX-YMIN)/18.0
      YL   = YMIN - (YMAX-YMIN)/18.0
      XH   = 60.0
      IF (LX .GT. 59) XH = FLOAT(LX) + 1.0
      XL   = XH - 60.0
      XMAX = ABS(XH)
      XMIN = ABS(XL)
      YMIN = ABS(YL)
      YMAX = ABS(YH)
      IF (XMIN .GT. XMAX) XMAX = XMIN
      IF (YMIN .GT. YMAX) YMAX = YMIN
      XMAX = ALOG10(XMAX)
      YMAX = ALOG10(YMAX)
      IF (XMAX .LT. 0.0) XMAX = XMAX - 1.0
      IF (YMAX .LT. 0.0) YMAX = YMAX - 1.0
      MX   = -XMAX
      MY   = -YMAX
      WRITE (LOG1,250) MX,MY
250   FORMAT (20X,46HSCALES - 'X' IS SHOWN TIMES 10 TO THE POWER OF,I3,
     1        40H   'Y' IS SHOWN TIMES 10 TO THE POWER OF,I3,/)
      YINC  = (YH-YL)/54.0
      YINC2 = YINC/2.0
      XRANGE= XH - XL
      DO 750 KLINE = 1,55
      IF (KLINE.EQ.1 .OR. KLINE.EQ.55) GO TO 350
      DO 265 L = 2,120
265   LINE(L) = BLANK
      IF (KLINE.EQ. 7 .OR. KLINE.EQ.13 .OR. KLINE.EQ.19 .OR.
     1    KLINE.EQ.25 .OR. KLINE.EQ.31 .OR. KLINE.EQ.37 .OR.
     2    KLINE.EQ.43 .OR. KLINE.EQ.49) GO TO 300
      LINE(  1) = XI
      LINE(121) = XI
      GO TO 400
300   LINE(  1) = DASH
      LINE(121) = DASH
      GO TO 400
350   DO 360 L = 2,120
360   LINE(L) = DASH
      LINE(1) = CROSS
      LINE(121) = CROSS
      DO 365 L = 11,111,10
365   LINE(L) = XI
      GO TO 650
400   DO 600 I = 1,IX
      IF (Y1(I).GT.YH+YINC2 .OR. Y1(I).LE.YH-YINC2) GO TO 600
      L = (X(I)-XL)/XRANGE*120.0 + 1.5
      LINE(L) = SYMBOL( 1)
600   CONTINUE
      IF (KLINE.EQ. 1 .OR. KLINE.EQ. 7 .OR. KLINE.EQ.13 .OR.
     1    KLINE.EQ.19 .OR. KLINE.EQ.25 .OR. KLINE.EQ.31 .OR.
     2    KLINE.EQ.37 .OR. KLINE.EQ.43 .OR. KLINE.EQ.49 .OR.
     3    KLINE.EQ.55) GO TO 650
      WRITE  (LOG1,610) LINE
610   FORMAT (8X,121A1)
      GO TO 750
650   YNUM = YH*10.0**MY
      WRITE  (LOG1,655) YNUM,LINE
655   FORMAT (1X,F6.3,1X,121A1)
750   YH   = YH - YINC
      XNUM(1) = XL*10.0**MX
      XINC = ((XH-XL)/12.0)*10.0**MX
      DO 800 I = 2,13
800   XNUM(I) = XNUM(I-1) + XINC
      WRITE  (LOG1,820) XNUM
820   FORMAT (6X,12(F6.3,4X),F6.3)
      RETURN
C
900   WRITE  (LOG1,910)
910   FORMAT (//35X,54HNO PLOT HAS BEEN MADE BECAUSE 'X' OR 'Y' RANGE IS
     1 ZERO)
      RETURN
      END