File: getdef.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 (92 lines) | stat: -rw-r--r-- 2,486 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
      SUBROUTINE GETDEF (DFRM,PH,MAG,CONV,PLTTYP,BUF,GPT,D)
C
      INTEGER         DFRM,BUF(1),GPT(1),SILN,REW,SP,GP,GPX,SIL1,SIL2,
     1                TRL(7),TYPE,PLTTYP
      REAL            D(3,1),MAXDEF
      COMMON /BLANK / NGP,LSIL,SKP11(3),NGPSET,SKP12(4),SKP2(6),MSIL
      COMMON /XXPARM/ PBUFSZ,PLOTER(5),PENPAP(30),SCALE(4),MAXDEF
      COMMON /ZNTPKX/ DEFC(4),SILN,LAST
      EQUIVALENCE     (DEFVAL,DEFC(1))
      DATA    INPREW, REW / 0,1 /
C
      LAST = 0
      K    = 3*NGPSET
      DO 10 I = 1,K
   10 D(I,1) = 0.0
      TRL(1) = DFRM
      CALL RDTRL (TRL(1))
      IF (TRL(5) .LE. 0) RETURN
      SP = TRL(5)
      ASSIGN 140 TO TYPE
C
C     NOTE TRANSIENT RESPONSE HAS SP = 1
C
      IF (SP .LT. 3) GO TO 30
      ASSIGN 130 TO TYPE
      IF (MAG .NE. 0) GO TO 30
      ASSIGN 120 TO TYPE
      SN = SIN(PH)*CONV
      CN = COS(PH)*CONV
      IF (PLTTYP .EQ. 2) GO TO 20
C
C     DISPLACEMENT OR ACCELERATION
C
      I1 = 1
      I2 = SP - 1
      IF (PLTTYP.EQ.3 .OR. PLTTYP.EQ.4) CN = -CN
      GO TO 30
C
C     VELOCITY
C
   20 I1 = SP - 1
      I2 = 1
   30 CONTINUE
      MAXDEF = 0.
      CALL INTPK (*170,DFRM,0,SP,0)
      GP   = 0
      SILN = 0
      CALL GOPEN (MSIL,BUF(1),INPREW)
      CALL FREAD (MSIL,SIL2,1,0)
C
C     -GP- = PREVIOUS EXISTENT GRID POINT IN THIS SET. FIND NEXT ONE.
C
   40 K = GP + 1
      DO 50 GPX = K,NGP
      IF (GPT(GPX) .NE. 0) GO TO 60
   50 CONTINUE
      SIL1 = LSIL + 1
      GO TO 100
   60 IF (GPX .NE. GP+1) GO TO 70
      SIL1 = SIL2
      GO TO 80
   70 GP = GP + 1
      CALL FREAD (MSIL,SIL2,1,0)
      GO TO 60
C
C     -SIL1- = SIL NUMBER OF NEXT EXISTENT GRID POINT. READ SIL NUMBER
C              OF NEXT GRID POINT.
C
   80 GP = GPX
      GPX = IABS(GPT(GP))
      IF (GP .EQ. NGP) SIL2 = LSIL + 1
      IF (GP .NE. NGP) CALL FREAD (MSIL,SIL2,1,0)
C
C     READ NEXT DEFORMATION VALUE AT THIS EXISTING GRID POINT.
C
   90 IF (SILN.LE.LSIL .AND. SILN.GE.SIL1) GO TO 150
  100 IF (LAST .NE. 0) GO TO 160
  110 CALL ZNTPKI
      GO TO TYPE, (120,130,140)
  120 DEFVAL = DEFC(I1)*CN - DEFC(I2)*SN
      GO TO 140
  130 DEFVAL = CONV*SQRT(DEFC(1)**2 + DEFC(SP-1)**2)
  140 IF (ABS(DEFVAL) .GT. MAXDEF) MAXDEF = ABS(DEFVAL)
      GO TO 90
  150 IF (SILN.GT.SIL1+2 .OR. SILN.GE.SIL2) GO TO 40
      K = SILN - SIL1 + 1
      D(K,GPX) = DEFVAL
      IF (LAST) 160,110,160
C
  160 CALL CLOSE (MSIL,REW)
  170 RETURN
      END