File: subb.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 (97 lines) | stat: -rw-r--r-- 2,782 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
      SUBROUTINE SUBB(KB,KS,I,J,JB,LB,LS,NDY,NYFL,PI,EPS,SGR,CGR,
     *   AR,BETA,SUM,RIA,DELX,YB,ZB,YS,ZS,X)
C   ***   COMPUTES ELEMENTS OF THE SUBMATRICES  DZP, DZZ, DZY, DYP,
C         DYZ  AND  DYY  USING  SUBROUTINE  DZY
      REAL       KD1R,KD1I, KD2R,KD2I
      COMPLEX    DPUR,DPUL,DPLR,DPLL,DP,SUM
      DIMENSION RIA(1),DELX(1),YB(1),ZB(1),YS(1),ZS(1),X(1)
      COMMON /AMGMN/ MCB(7),NROW,ND,NE,REFC,FMACH,KR
      COMMON     /KDS/ IND,KD1R,KD1I,KD2R,KD2I
      FLND = FLOAT(ND)
      FLNE = FLOAT(NE)
      IND  = 0
      DPUR = (0.0,0.0)
      DPUL = (0.0,0.0)
      DPLR = (0.0,0.0)
      DPLL = (0.0,0.0)
      ANOT = RIA(JB)
      DXS  = DELX(J)
      ABSYB= ABS(YB(LB))
      ABSZB= ABS(ZB(LB))
      IFLAG = 0
      IDFLAG = 0
      IF (KB.EQ.0)  GO TO  20
      TEST1= ABS(YB(LB) -YB(KB))
      TEST2= ABS(ZB(LB) -ZB(KB))
      IF  (TEST1.GT.EPS. OR .TEST2.GT.EPS)  GO TO  20
      IFLAG = 1
      IF(NDY .NE. NYFL) GO TO 20
      IF( I .NE. J ) GO TO 20
      IDFLAG = 1
      D2D  =       1.0 /(2.0*PI*ANOT*ANOT*(1.0+AR))
      IF    (NDY.NE.0)  D2D=D2D/AR
      SUM  = CMPLX(D2D,0.0)
      SIGN1 = 1.0
      IF(NDY.NE.0) SIGN1 = -1.0
      IF(ABSYB.LT.EPS) SUM=(1.0+SIGN1*FLND)*SUM
      IF(ABSZB.LT.EPS) SUM=(1.0+SIGN1*FLNE)*SUM
      DPUR = SUM
   20 CONTINUE
      XX   = X(I)
      Y    = YS(KS)
      Z    = ZS(KS)
      XI1  = X(J) - 0.5*DXS
      XI2  = X(J) + 0.5*DXS
      ETA  = YS(LS)
      ZETA = ZS(LS)
      AO   = ANOT
      IDZDY= NDY
      IGO  = 1
      LHS = 0
      IF(IFLAG .EQ. 1) GO TO 45
   30 CONTINUE
      CALL        DZY  (XX, Y, Z, SGR, CGR, XI1, XI2, ETA, ZETA, AR, AO,
     1  KR, REFC, BETA, FMACH, LHS,
     2         IDZDY ,   DZDYR ,   DZDYI )
      DP   = CMPLX(DZDYR,DZDYI)
      GO TO  (40,50,70,80),  IGO
   40 CONTINUE
C  UPPER RIGHT-HAND SIDE CONTRIBUTION
      DPUR = DP
      IF (KB.EQ.LB)  GO TO 100
   45 CONTINUE
      IF (ND.EQ.0) GO TO 60
      IF (IDFLAG.EQ.1.AND.ABSYB.LT.EPS) GO TO 60
      IGO  = 2
      ETA  = -YS(LS)
      LHS = 1
      GO TO  30
   50 CONTINUE
C  UPPER LEFT-HAND SIDE CONTRIBUTION
      DPUL = DP
   60 CONTINUE
      IF (NE.EQ.0) GO TO 90
      IF(IDFLAG.EQ.1.AND.ABSZB.LT.EPS) GO TO 90
      IGO  = 3
      ETA  =  YS(LS)
      ZETA = -ZS(LS)
      LHS = 1
      GO TO  30
   70 CONTINUE
C  LOWER RIGHT-HAND SIDE CONTRIBUTION
      DPLR = DP
      IF (ND.EQ.0) GO TO 90
      IF(IDFLAG.EQ.1.AND.ABSYB.LT.EPS) GO TO 90
      IGO  = 4
      ETA  = -YS(LS)
      ZETA = -ZS(LS)
      LHS = 0
      GO TO  30
   80 CONTINUE
C  LOWER  LEFT-HAND SIDE CONTRIBUTION
      DPLL = DP
   90 CONTINUE
      SUM  = DPUR + FLND*DPUL + FLNE*DPLR + FLND*FLNE*DPLL
  100 CONTINUE
      RETURN
      END