1      SUBROUTINE DFLCON(AA,DD,AFORLF,BETA,INBORD,TAPERD)
2C
3C***  CALCULATES SUPERSONIC LIFT, ROLL MOMENT AND HINGE MOMENT
4C     DERIVATIVES
5C
6      COMMON /CONSNT/ PI,DR,UNUSED,RAD
7      COMMON /POWR/   SPR(59)
8      LOGICAL INBORD,TAPERD
9      DIMENSION P(2),TCP(2),PA(2),TCPA(2),PB(2),RCPB(2),PC(2),TCPC(2)
10      DIMENSION PR(16)
11      EQUIVALENCE (SPR(12),CLD),(SPR(13),CLLD),(SPR(17),CMD),
12     1            (SPR(18),CHD)
13      EQUIVALENCE (PSL1,PR(1 )),(PSLX1,PR(2)),(PSLY1,PR(3)),(PSLX1A,
14     1            PR(4)),(PSLX1B,PR(5)),(PSLX1C,PR(6)),(PSL2,PSL3,
15     2            PR(7)),(PSLY2,PSLY3,PR(8)),(PSLX2A,PSLX3A,PR(9)),
16     3           (PSLX2B,PSLX3B,PR(10)),(PSLX2C,PSLX3,PR(11)),(PSLX2,
17     4            PR(12)),(PSL1A,PR(13)),(PSL1B,PR(14)),(PSLY1A,PR(15))
18     5          ,(PSLY1B,PR(16))
19C
20      SQRA(X)=SQRT(ABS(X))
21      P(1)=0.5
22      P(2)=0.5
23      P3=0.5
24      A=AA
25      D=DD
26      TWO3RD=2./3.
27      A2=A**2
28      OPA2=1.+A2
29      OMA2=1.-A2
30      TCP0OD=4./(RAD*BETA*SQRA(OMA2))
31      A4=A2**2
32      SQ3=SQRA(OMA2)
33      OMA4=1.-A4
34      IF(.NOT.TAPERD)GO TO 1110
35      FLD=AFORLF
36C
37C     ----HERE FOR TAPERED
38C
39      IF(ABS(D).LE.1.0)GO TO 1000
40      GO TO 1320
41 1000 IF(FLD.EQ.0.0)  FLD=1.E-04
42      D2=D**2
43      OMD2=1.-D2
44      SQ1=SQRA(OMA2*OMD2)
45      SQ2=SQRA(OMA2/OMD2)
46      OPD2=1.+D2
47      SAVFLD=FLD
48      DO 1080 K=1,2
49         APD=A+D
50         OPA=1.+A
51         OPD=1.+D
52         AMD=A-D
53         OMA=1.-A
54         OMD=1.-D
55         FLD2=FLD**2
56         AD=A*D
57         OPAD=1.+AD
58         OMAD=1.-AD
59         OMFLD=1.-FLD
60         AMD2=AMD**2
61C
62C     ----SIGN LOGIC
63C
64         IF(AMD.LT.0.0)GO TO 1020
65         SIGN=-1.
66         SIGN2=1.
67         GO TO 1030
68 1020    SIGN=1.
69         SIGN2=-1.
70C
71C     ----COMPUTE INTERMEDIATE STUFF.
72C
73 1030    G1=1./(FLD*OMD-OMA)
74         G2=FLD*OMAD
75         G3=FLD*AMD
76         G4=FLD/PI*ARCCOS((OMA2-G2)/G3)
77         G5=SQ2/PI*ARCCOS((OMAD-FLD*OMD2)/AMD)
78         G6=2.*FLD*OMAD-FLD2*OMD2-OMA2
79         G7=OMFLD*SQ3/PI*ALOG(ABS((A-FLD*D+SIGN*SQRA(G6))/OMFLD))
80         G8=ARCCOS(D)/PI
81         G9=ARCCOS(A)/PI
82         G10=1.+3.*(AD-D2)-AD*D2
83         G11=OPD/OMD*(OMA2*OMD2-2.*D*OMA**2)
84         G115=.5/(FLD*OMD-OMA)
85         G12=G115/OPD
86         G13=AMD*OPD
87         G14=2.*FLD*OPAD
88         G15=SQRA(OMA2*G6)/PI
89         G16=1./(OPD*AMD2)
90         G17=SQ2*(1.-G8)
91         P(K)=.5*(SQ1-OMA*OPD)/AMD
92         PA(K)=OMD*G1*(G4-G5)
93         PB(K)=(AMD*G4+G7)*G1
94         PC(K)=OMD/AMD*(G17+G9-OMA/OMD)
95         TCP(K)=.25/(P(K)*AMD2)*(SQ2*G10-G11)
96         TCPA(K)=G12/(PA(K)*AMD)*(OMD2*(2.*OPAD-FLD*OPD2)*G4-G5*G10+
97     1           SIGN*OPD2*G15)
98         RCPB(K)=G115/PB(K)*(AMD*(2.*A-FLD*APD)*G4/OMFLD+SIGN *G15+A*G7)
99         TCPC(K)=.5*G16/PC(K)*(G10*G17+AMD*OPD2*SQ3/PI-G11+OMD2*(1.+2.*
100     1           AD-D2)*G9)
101         IF(K.EQ.2)GO TO 1070
102C
103C     ----BYPASS 3S IF CONTROL INBOARD OF WING TIP.
104C
105         IF(INBORD)GO TO 1040
106         T2=2.+A+D
107         SQ4=SQRA(OPA*OPD)
108         T1=1.0/(OPD-FLD*OPA)
109         T3=ARCCOS((T2-2.*FLD*OPA)/AMD)/PI
110         T4=FLD*ARCCOS((2.*OPD-FLD*T2)/(FLD*AMD))/PI
111         T45=OMFLD*(FLD*OPA-OPD)
112         SQ5=2.*SQRA(OPA*T45)/PI
113         T5=(2.- AMD)*OMD2+2.*(AD*OPD+D*OPA)
114         P3=(OPA-SQ4)/AMD
115         P3A=T1*(OPD*T3-SQ4*T4)
116         P3B=-T1*(AMD*T3+SIGN *SQ5)
117         TCP3=.25*G16/P3 *(SQ4*T5-2.*(OMA2*OMD2+2.*D*(OPA**2)))
118         TCP3A=-.25*T1/AMD*(2.*OPD/FLD*(2.*FLD*(1.+AD)-OPD2)*T3+SIGN2*
119     1         OPD2*SQ5-T4*SQRA(OPA/OPD)*T5) /P3A
120         RCP3B=1./(6.*P3B*T45)*(3.*AMD*(2.*A*FLD-(A+D))*T3+SIGN2*(2.*
121     1         FLD*(1.-2.*A)-(2.-3.*A-D))*SQ5)
122 1040    OPFLD=1.+FLD
123         OMFLD2=1.-FLD2
124         SL1=2.*AMD/(OMFLD2*OMD2)
125         SL2=FLD2*SL1
126         SL1A=FLD*OMD-OMA
127         SL1B=SL1A/(OPFLD*AMD)
128         SL1A=SL1A/(OMFLD2*OMD)
129         SL3=.5*OMD2*SL2/OPD
130         SL0=(OMA/OMD-FLD2*OPA/OPD)/OMFLD2
131         H1=TWO3RD*AMD/(OMFLD*OPD2)
132         SLBY1=SL1*H1*(TCP(1)-D)
133         SLBY1A=SL1A*H1*(TCPA(1)-D)
134         SLBY1B=TWO3RD*SL1B
135         IF(INBORD)GO TO 1050
136         SLBY3=SL3*(1.-H1*FLD*(TCP3+D))
137 1050    SLY0=(OPA*OMFLD-AMD2*AMD/((OMFLD*OMD)**2)-(OPD-FLD*OPA)**3/
138     1        ((OMFLD*OPD)**2))/(3.*AMD*OPFLD)
139         FLD3=FLD2*FLD
140         OMFLD3=1.-FLD3
141         RAT=OMFLD2/OMFLD3
142         RAT1=RAT/OPD2
143         RAT2=AMD/(OMFLD3*OPD2)
144         RAT3=1./(OMFLD3*OPD*OPD2)
145         SLX0=.5*((OMA/OMD)**2-FLD3*(OPA/OPD)**2)/OMFLD3
146         SLBX1=SL1*RAT1*(OPAD-AMD*TCP(1))
147         SLBX1A=SL1A*RAT1*(OPAD-AMD*TCPA(1))
148         SLBX1B=SL1B*RAT*(OMFLD*(RCPB(1)-A))/AMD
149         SLBX1C=RAT2*(OPAD-AMD*TCPC(1))/OMD
150         IF(INBORD)GO TO 1060
151         SLBX3=FLD3*RAT2*(OPAD+AMD*TCP3)/OPD
152         SLBX3A=RAT3*FLD2*(FLD*OPA-OPD)*(OPAD+AMD*TCP3A)
153         SLBX3B=OMFLD**2*(FLD*OPA-OPD)*(RCP3B+A)/(OMFLD3*(AMD**2))
154C
155C     ----BYPASS 2S IF WING TIP CONTROL.
156C
157         GO TO 1160
158 1060    FLD=1./FLD
159 1070    A=-A
160         D=-D
161 1080 CONTINUE
162      FLD=SAVFLD
163      FLD2=FLD**2
164      OMFLD=1.-FLD
165      OPAD=1.+A*D
166      AMD=A-D
167      OPD2=1.+D**2
168      OPA=1.+A
169      OPD=1.+D
170      SLBY2=SL2*(1.-H1*FLD*(TCP(2)+D))
171      SLBX2=SL2*FLD*RAT*(OPAD+AMD*TCP(2))/OPD2
172      TMP=FLD*OPA-OPD
173      SLBX2A=FLD2*TMP*(OPAD+AMD*TCPA(2))*RAT3
174      SLBX2B=OMFLD**2*TMP*(RCPB(2)+A)/(OMFLD3*(AMD**2))
175      SLBX2C=FLD3*AMD*(OPAD+AMD*TCPC(2))*RAT3
176      GO TO 1160
177C
178C     ----HERE FOR UNTAPERED.
179C
180 1110 FLD=AFORLF
181      FLD2=FLD**2
182      DO 1140 K=1,2
183         OPA=1.+A
184         OMA=1.-A
185         G1=1.+2.*A*FLD-OMA2*FLD2
186         G2=OMA2*FLD-A
187         G3=ARCCOS(G2)
188         G4=1./((1.-OMA*FLD)*PI)
189         G5=FLD*SQ3
190         G6=SQRA(G1)
191         G7=SQRA(OMA2*G1)
192         G8=G4/OPA
193         G9=ALOG(ABS(1.+A*FLD-G6)/FLD)
194         G10=ARCCOS(A)
195         G11=1.+A/PI*G10-SQ3/PI
196         G12=G8/(4.*OMA2)
197         G13=7.*A2-2.*A4+1.
198         G14=2.*A+OPA2*FLD
199         G15=2.*FLD*OMA2**2
200         G16=A*(7.-A2)
201         G17=1./(OPA*OMA2)
202         PA(K)=G8*(G7-G2*G3)
203         PB(K)=G4*(G3+G5*G9)
204         PC(K)=G11/OPA
205         TCP(K)=(8.*A+OPA2)/(4.*OMA2)
206         TCPA(K)=G12/PA(K)*((G13-G14*G15)*G3+(G16+OMA4*FLD)*G7)
207         RCPB(K)=G4/(2.*PB(K))*((1.+2.*A*FLD)*G3/FLD-G7+A*G5*G9)
208         TCPC(K)=G17/(4.*PC(K))*(8.*A+OPA2+G13/PI*G10-G16/PI*SQ3)
209         IF(K.EQ.2) GO TO 1130
210         IF(INBORD) GO TO 1120
211         T1=1.-OPA*FLD
212         T2=2.*FLD*OPA-1.
213         T3=5.*A2+8.*A-3.
214         T4=OPA*T1
215         T45=SQRA(T4*FLD)
216         T5=ARCCOS(T2)
217         P3A=0.5/(T1*PI)*(2.*T45-T2*T5)
218         P3B=1./(PI*T1)*(T5-2.*T45)
219         TCP3=(5.-8.*A-3.*A2)/(8.*OPA)
220         TCP3A=-1./(T4*16.*P3A*PI)*((T3+8.*FLD*OPA**2*(FLD*OPA2-2.*A))
221     1      *T5+2.*(T3-2.*FLD*OPA*OPA2)*T45)
222         RCP3B=1./(6.*P3B*FLD*T1*PI)*(3.*(1.-2.*A*FLD)*T5-2.*(1.+2.*FLD*
223     1      (1.-2.*A))*T45)
224         SL3=1./(2.*FLD*OPA)
225         SLBY3=SL3*(1.-(5./(12.*FLD*OPA)))
226         SLBX3=TWO3RD*SL3
227         SLBX3A=(1.-FLD*OPA)/(3.*FLD*OPA)
228         SLBX3B=FLD*(RCP3B+A)*(1.-FLD*OPA)/3.
229 1120    SL1=1./(FLD*OMA2)
230         SL1A=(1.-FLD*OMA)/(2.*FLD*OMA)
231         SL1B=(1.-FLD*OMA)/2.
232         SLBY1=SL1*(1.+4.*A)/(6.*FLD*OMA2)
233         SLBY1A=SL1A*TWO3RD*(TCPA(1)-A)/(FLD*OPA2)
234         SLBY1B=TWO3RD*SL1B
235         SLBX1=TWO3RD*SL1
236         SLBX1B=TWO3RD*SL1B*FLD*(RCPB(1)-A)
237         SLBX1A=TWO3RD*SL1A
238         SLBX1C=1./(3.*FLD*OMA)
239         IF(.NOT.INBORD) GO TO 1150
240         A=-A
241         GO TO 1140
242 1130    A=-A
243         OMA=1.-A
244         OPA=1.+A
245         SL2=SL1
246         SLBY2=SL2*(1.-(1.-4.*A)/(6.*FLD*OMA2))
247         SLBX2=TWO3RD*SL2
248         SLBX2A=(1.-FLD*OPA)/(3.*FLD*OPA)
249         SLBX2B=FLD*(RCPB(2)+A)*(1.-FLD*OPA)/3.
250         SLBX2C=1./(3.*FLD*OPA)
251 1140 CONTINUE
252 1150 SL0=(FLD*OMA2-1.)/(FLD*OMA2)
253      SLY0=(3.*FLD*OMA*OMA2*(FLD*OPA-1.)   -4.*A)/(6.*FLD2*OMA2**2)
254      SLX0=(3.*FLD*OMA2-4.)/(6.*FLD*OMA2)
255C
256C     ----SET ALL PARTS OF GENERAL EQUATION TO 0.
257C
258 1160 DO 1170 I=1,16
259         PR(I)=0.
260 1170 CONTINUE
261      PSL1=P(1)*SL1
262      PSLX1=P(1)*SLBX1
263      PSLY1=P(1)*SLBY1
264      PSLX1C=PC(1)*SLBX1C
265      PSLX1A=PA(1)*SLBX1A
266      PSLX1B=PB(1)*SLBX1B
267      IF(.NOT.TAPERD) FLD=1./FLD
268      TESTR1=1.-A
269      TESTR2=1.+A
270      IF(.NOT.TAPERD)GO TO 1180
271      TESTR1=(1.-A)/(1.-D)
272      TESTR2=(1.+D)/(1.+A)
273 1180 IF(.NOT.INBORD)GO TO 1250
274C
275C     ----HERE FOR CONTROL LOCATED INBOARD FROM WING TIP.
276C
277      PSL2=P(2)*SL2
278      PSLY2=P(2)*SLBY2
279      PSLX2=P(2)*SLBX2
280      PSLX2C=PC(2)*SLBX2C
281      PSLX2A=PA(2)*SLBX2A
282      PSLX2B=PB(2)*SLBX2B
283      CLD=SL0+PSL1+PSL2
284      CMD=-(SLX0+PSLX1+PSLX2)
285      CLLD=SLY0+PSLY1+PSLY2
286      CHD=-(SLX0+PSLX1C+PSLX2C)
287      IF(.NOT.TAPERD) GO TO 1190
288      IF(FLD.LT.1.) GO TO 1190
289      IF(FLD.GE.TESTR1) GO TO 1210
290      GO TO 1200
291 1190 IF(FLD.LE.TESTR1) GO TO 1210
292 1200 CHD=CHD-(PSLX1A-PSLX1B)
293 1210 IF (.NOT.TAPERD) GO TO 1220
294      IF(FLD.LT.1.) GO TO 1220
295      IF(FLD.GE.TESTR2) GO TO 1240
296      GO TO 1230
297 1220 IF(TESTR2.GE. FLD) GO TO 1240
298 1230 CHD=CHD-(PSLX2A-PSLX2B)
299 1240 CONTINUE
300      CMD=TCP0OD*CMD
301      CLD=TCP0OD*CLD
302      CLLD=TCP0OD*CLLD
303      CHD=TCP0OD*CHD
304      GO TO 1320
305C
306C     ----HERE FOR CONTROL LOCATED AT THE WING TIP.
307C
308 1250 PSL1A=PA(1)*SL1A
309      PSL1B=PB(1)*SL1B
310      PSL3=P3*SL3
311      PSLX3=P3*SLBX3
312      PSLY1A=PA(1)*SLBY1A
313      PSLY1B=PB(1)*SLBY1B
314      PSLY3=P3*SLBY3
315      PSLX3A=P3A*SLBX3A
316      PSLX3B=P3B*SLBX3B
317      CLD=SL0+PSL1+PSL3
318      CMD=-(SLX0+PSLX1+PSLX3)
319      CLLD=SLY0+PSLY1+PSLY3
320      CHD=-(SLX0+PSLX1C+PSLX3)
321      IF(.NOT.TAPERD) GO TO 1270
322      IF(FLD.LT.1.) GO TO 1270
323      IF(FLD.GE.TESTR1) GO TO 1290
324      GO TO 1280
325 1270 IF(FLD.LE.TESTR1) GO TO 1290
326 1280 CLD=CLD+PSL1A-PSL1B
327      CMD=CMD-(PSLX1A-PSLX1B)
328      CLLD=CLLD+PSLY1A-PSLY1B
329      CHD=CHD-(PSLX1A-PSLX1B)
330 1290 IF(.NOT.TAPERD) GO TO 1300
331      IF(FLD.LT.1.) GOTO 1300
332      IF(FLD.GE.TESTR2) GO TO 1240
333      GO TO 1310
334 1300 IF(TESTR2.GE.FLD) GO TO 1240
335 1310 CHD=CHD-(PSLX3A-PSLX3B)
336      GO TO 1240
337 1320 RETURN
338      END
339