File: apdb2a.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (128 lines) | stat: -rw-r--r-- 4,574 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
      SUBROUTINE APDB2A (NLINE,NL,SCR1,NSTNS,M1,S1,SN,TBLT,TBLR)
C
C     GENERATE BASIC TO LOCAL TRANSFORMATION MATRIX FOR
C     STREAMLINE NL OF SWEPT TURBOPROP BLADE.
C
      REAL L1,L2,L3,M1
C
      INTEGER SCR1,FILE,NAME(2)
C
      DIMENSION PN(3),P1(3),FN(3),F1(3),S1(3),SN(3),TBLT(3),TBLR(3)
      DIMENSION DATA(7)
C
      DATA FILE/301/,NAME  /4HAPDB,4H2A  /
C
C---------------------------------------------------------------------
C     INPUT VARIABLES--
C     NLINE      TOTAL NO. OF STREAMLINES
C     NL         PRESENT STEAMLINE
C     SCR1       SCRATCH UNIT WITH BASIC COORDINATES OF NODES
C     NSTNS      TOTAL NO. OF STATIONS
C     M1         SIGN BASED ON ROTATION OF BLADE
C     S1         COORDINATES OF LEADING EDGE OF CURRENT STREAMLINE
C     SN         COORDINATES OF TRAILING EDGE OF CURRENT STREAMLINE
C
C     OUTPUT VARIABLES--
C     TBLT      BASIC TO LOCAL TRANSFORMATION FOR TRANSLATION
C     TBLR      BASIC TO LOCAL TRANSFORMATION FOR ROTATION
C
C     LOCAL VARIABLES--
C     PN        COORDINATES TRAILING EDGE PREVIOUS STREAMLINE
C     P1        COORDINATES LEADING EDGE PREVIOUS STREAMLINE
C     FN        COORDINATES TRAILING EDGE NEXT STREAMLINE
C     F1        COORDINATES LEADING EDGE NEXT STREAMLINE
C---------------------------------------------------------------------
C     EXTRACT COORDINATES FOR PREVIOUS--P-FOR FIRST STREAMLINE
C---------------------------------------------------------------------
      IF(NL.NE.1)GO TO 10
      DO 5 I=1,3
      PN(I)=SN(I)
  5   P1(I)=S1(I)
C----------------------------------------------------------------------
C     NOW COORDINATES FOR NEXT--F-FOR LAST STREAMLINE
C----------------------------------------------------------------------
 10   IF(NL.NE.NLINE)GO TO 15
      DO 12 I=1,3
      FN(I)=SN(I)
 12   F1(I)=S1(I)
      GO TO 50
C----------------------------------------------------------------------
C     NOW COORDINATES FOR NEXT--F-FOR ALL OTHER STREAMLINES
C---------------------------------------------------------------------
 15   CALL FREAD(SCR1,DATA,7,0)
      F1(1)=DATA(5)
      F1(2)=DATA(6)
      F1(3)=DATA(7)
C----------------------------------------------------------------------
C    COMPUTE SKIP TO TRAILING EDGE COORDINATES
C-----------------------------------------------------------------------
      NSKIP=(2-NSTNS)*7
      CALL READ(*905,*900,SCR1,DATA,NSKIP,0,MM)
      CALL FREAD(SCR1,DATA,7,0)
      FN(1)=DATA(5)
      FN(2)=DATA(6)
      FN(3)=DATA(7)
C----------------------------------------------------------------------
C     RETURN TO START OF RECORD
C----------------------------------------------------------------------
      CALL BCKREC(SCR1)
C---------------------------------------------------------------------
C     COMPUTE SKIP TO ORIGINAL LOCATION AT ENTRY TO THIS ROUTINE
C---------------------------------------------------------------------
      NSKIP=-NSTNS*NL*7
      CALL READ(*905,*900,SCR1,DATA,NSKIP,0,MM)
 50   A1=SN(1)-S1(1)
      B1=SN(2)-S1(2)
      C1=SN(3)-S1(3)
C
      A2=FN(1)-P1(1)
      B2=FN(2)-P1(2)
      C2=FN(3)-P1(3)
C
      A3=PN(1)-F1(1)
      B3=PN(2)-F1(2)
      C3=PN(3)-F1(3)
C
      A4=B2*C1-B1*C2
      B4=C2*A1-C1*A2
      C4=A2*B1-A1*B2
C
      A5=B1*C3-B3*C1
      B5=C1*A3-C3*A1
      C5=A1*B3-A3*B1
C
      L1=SQRT(A1**2+B1**2+C1**2)
      L2=SQRT(A4**2+B4**2+C4**2)
      L3=SQRT(A5**2+B5**2+C5**2)
C
      A6=0.5 *(A4/L2  +  A5/L3)
      B6=0.5 *(B4/L2  +  B5/L3)
      C6=0.5 *(C4/L2  +  C5/L3)
C---------------------------------------------------------------------
C     BASIC TO LOCAL TRANSFORMATION FOR TRANSLATION
C---------------------------------------------------------------------
      TBLT(1)= A6*M1
      TBLT(2)= B6*M1
      TBLT(3)= C6*M1
C----------------------------------------------------------------------
C     BASIC TO LOCAL TRANSFORMATION FOR ROTATION
C---------------------------------------------------------------------
      TBLR(1)= -M1*A1/L1
      TBLR(2)= -M1*B1/L1
      TBLR(3)= -M1*C1/L1
      IF(NL.EQ.NLINE)RETURN
C---------------------------------------------------------------------
C     SET PREVIOUS COORDINATES--P- TO PRESENT STREAMLINE
C---------------------------------------------------------------------
      DO 800 I=1,3
      PN(I)=SN(I)
 800  P1(I)=S1(I)
      RETURN
C     E-O-R    ENCOUNTERED
 900  IP1 = -3
      GO TO 999
C     E-O-F    ENCOUNTERED
 905  IP1 = -2
 999  CALL MESAGE(IP1,FILE,NAME)
      RETURN
      END