File: alg06.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 (103 lines) | stat: -rw-r--r-- 3,055 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
      SUBROUTINE ALG06(R1,R2,X1,X2,H,S,VM,TB1,TB2,W,XK,SCLFAC,SPEED,SPD
     1FAC,G,EJ,HMIN,NSTRMS,PI)
C
      DIMENSION R1(1),R2(1),X1(1),X2(1),H(1),S(1),VM(1),TB1(1),TB2(1),W(
     11)
      DIMENSION R(150),W2D(150),W3D(150),XX1(150),XX2(150),XX3(150),XX5(
     19,9),B(150)
C
      EQUIVALENCE (XX2(1),XX5(1,1))
C
      NTUB=NSTRMS-1
      DO 50 J=1,NSTRMS
      Q1=H(J)-VM(J)**2*(1.0+(TB2(J)+R2(J)*SPEED*SPDFAC*PI/(SCLFAC*30.0*V
     1M(J)))**2)/(2.0*G*EJ)
      IF(Q1.LT.HMIN)Q1=HMIN
      XX1(J)=ALG4(Q1,S(J))
50    XX2(J)=ALG5(Q1,S(J))
      CALL ALG01(R2,XX1,NSTRMS,R2,Q1,XX3,NSTRMS,0,1)
      DO 60 J=1,NSTRMS
60    XX1(J)=XX3(J)*G/XX2(J)
      Q1=(R2(NSTRMS)-R2(1))/149.0
      R(1)=R2(1)
      DO 70 J=2,150
70    R(J)=R(J-1)+Q1
      CALL ALG01(R2,XX1,NSTRMS,R,XX2,Q1,150,0,0)
      DO 80 J=1,NSTRMS
80    XX3(J)=((R2(J)-R1(J))**2+(X2(J)-X1(J))**2)*(1.0+((TB1(J)+TB2(J))*0
     1.5)**2)
      CALL ALG01(R2,XX3,NSTRMS,R,XX1,Q1,150,0,0)
      DO 90 J=1,NSTRMS
90    W2D(J)=VM(J)**2*(1.0+TB2(J)**2)
      CALL ALG01(R2,W2D,NSTRMS,R,XX3,Q1,150,0,0)
      CALL ALG01(R2,W  ,NSTRMS,R,W2D,Q1,150,0,0)
      NKEEP=NSTRMS
      NSTRMS=150
      NTUB=149
      Q2=(SPEED*SPDFAC*PI/(30.0*SCLFAC))**2
      DO 100 J=1,NSTRMS
100   W3D(J)=0.0
      B(1)=(R(2)-R(1))/2.0
      B(NSTRMS)=(R(NSTRMS)-R(NTUB))/2.0
      DO 110 J=2,NTUB
110   B(J)=(R(J+1)-R(J-1))/2.0
      DO 270 J=1,NSTRMS
      DR=XK*XX1(J)/XX3(J)*(Q2*R(J)-XX2(J))
      IF(DR)130,120,200
120   W3D(J)=W3D(J)+W2D(J)
      GO TO 270
130   IF(J.EQ.1)GO TO 120
      IF(R(J)+DR.LE.R(1))GO TO 180
      DO 140 JJ=2,J
      JJJ=J-JJ+1
      IF(R(J)+DR.GE.R(JJJ))GO TO 150
140   CONTINUE
150   JJJ=JJJ+1
      Q1=W2D(J)*B(J)/(B(J)-DR)
      DO 170 JJ=JJJ,J
170   W3D(JJ)=W3D(JJ)+Q1
      GO TO 270
180   A=B(J)*W2D(J)/(R(NSTRMS)-R(1))
      IF(J.NE.NSTRMS)A=B(J)*W2D(J)/((R(J+1)+R(J))*0.5-R(1))
      DO 190 JJ=1,J
190   W3D(JJ)=W3D(JJ)+A
      GO TO 270
200   IF(J.EQ.NSTRMS)GO TO 120
      IF(R(J)+DR.GE.R(NSTRMS))GO TO 250
      DO 210 JJ=J,NSTRMS
      IF(R(J)+DR.LT.R(JJ))GO TO 220
210   CONTINUE
220   JJ=JJ-1
      Q1=W2D(J)*B(J)/(B(J)+DR)
      DO 240 JJJ=J,JJ
240   W3D(JJJ)=W3D(JJJ)+Q1
      GO TO 270
250   A=B(J)*W2D(J)/(R(NSTRMS)-R(1))
      IF(J.NE.1)A=B(J)*W2D(J)/(R(NSTRMS)-(R(J)+R(J-1))*0.5)
      DO 260 JJ=J,NSTRMS
260   W3D(JJ)=W3D(JJ)+A
270   CONTINUE
      NSTRMS=NKEEP
      XX1(1)=0.0
      DO 280 LL=1,150
280   XX1(1)=XX1(1)+W3D(LL)
      DO 290 L=2,9
      XX1(L)=0.0
      DO 290 LL=1,150
290   XX1(L)=XX1(L)+R(LL)**(L-1)*W3D(LL)
      DO 330 L=1,9
      DO 320 J=L,9
      IF(J.EQ.1)GO TO 310
      XX5(L,J)=0.0
      DO 300 LL=1,150
300   XX5(L,J)=XX5(L,J)+R(LL)**(L+J-2)
      GO TO 320
310   XX5(1,1)=150
320   XX5(J,L)=XX5(L,J)
330   CONTINUE
      CALL ALG30(XX5,XX1)
      DO 340 J=1,NSTRMS
340   W(J)=(((((((XX1(9)*R2(J)+XX1(8))*R2(J)+XX1(7))*R2(J)+XX1(6))*R2(J)
     1+XX1(5))*R2(J)+XX1(4))*R2(J)+XX1(3))*R2(J)+XX1(2))*R2(J)+XX1(1)
      RETURN
      END