1      SUBROUTINE CHECK
2C
3C      CHECK MACH REGIME LIMITS AND SET PRINT FLAGS
4C
5C***  IDEAL OUTPUT MATRIX
6C             BLOCK    PRINT     IOM
7C             NAME     FLAG     ARRAY
8C
9      COMMON /IBODY/   PBODY,  BODY(400)
10      COMMON /IWING/   PWING,  WING(400)
11      COMMON /IHT/     PHT,    HT(380)
12      COMMON /IVT/     PVT,    VT(380)
13      COMMON /IVF/     PVF,    VF(380)
14      COMMON /IBW/     PBW,    BW(380)
15      COMMON /IBH/     PBH,    BH(380)
16      COMMON /IBV/     PBV,    BV(380)
17      COMMON /IBWH/    PBWH,   BWH(380)
18      COMMON /IBWV/    PBWV,   BWV(380)
19      COMMON /IBWHV/   PBWHV,  BWHV(380)
20      COMMON /IPOWER/  PPOWER, POWER(200)
21      COMMON /IDWASH/  PDWASH, DWASHI(60)
22C
23      LOGICAL PBODY, PWING, PHT, PVT, PVF, PBW, PBH, PBV, PBWH, PBWV,
24     1        PBWHV, PPOWER, PDWASH
25C
26C***  INPUT DATA BLOCKS
27C
28      COMMON /FLGTCD/ FLC(160)
29      COMMON /OPTION/ SREF,CBARR,ROUGFC,BLREF
30      COMMON /SYNTSS/ XCG, XW, ZW, ALIW, ZCG, XH, ZH, ALIH, XV,
31     1                VERTUP, HINAX, XVF, SCALE, ZV, ZVF, YV, YF,
32     2                PHIV, PHIF
33      COMMON /BODYI/  XNX,X(20),S(20),P(20),R(20),ZU(20),ZL(20),
34     1                BNOSE,BTAIL,BLN,BLA,DS,ITYPE,METHOD,ELLIP
35      COMMON /WINGI/  WGIN(101)
36      COMMON /VTI/    VTIN(154), TVTIN(8), VFIN(154)
37      COMMON /HTI/    HTIN(154)
38      COMMON /POWER/  PWIN(29), LBIN(21)
39      COMMON /FLAPIN/ F(138)
40C
41      EQUIVALENCE (F(14),SPANI), (DWASH,WGIN(101))
42      LOGICAL FLP,FLAG,VERTUP
43      LOGICAL IMACH, IRN, IVEL, IALT, IPT, IATM
44      REAL METHOD
45C
46C***  REFERENCE DATA BLOCKS
47C
48      COMMON /CASEID/ ID(175), IDIM
49      COMMON /CONSNT/ PI,DEG,UNUSED,RAD
50      COMMON /FLOLOG/ FLTC,OPTI,BO,WGPL,WGSC,SYNT,HTPL,HTSC,VTPL,VTSC,
51     1                HEAD,PRPOWR,JETPOW,LOASRT,TVTPAN,SUPERS,SUBSON,
52     2                TRANSN,HYPERS,SYMFP,ASYFP,TRIMC,TRIM,DAMP,
53     3                HYPEF,TRAJET,BUILD,FIRST,DRCONV,PART,
54     4                VFPL,VFSC,CTAB,PLOT
55      COMMON /ERROR/  IERR,GONOGO,IEND,DMPALL,DPB,DPA,DPBD,DPAVF,
56     1                DPFACT,DPWBT,DPBHT,DPAVT,DPAHT,DPC,DPD,DPWB,
57     2                DPCHT,DPDHT,DPDYNH,SAVE,DMPCSE,DPDVT,DPGR,DPLB,
58     3                DPPW,DPSTB,DPSBD,DPSLG,DPSWB,DPSTP,DPDWA,DPSTG,
59     4                DPSLA,DPTRA,DPEXPD,DPDVF,DPFLP,DPFHG,DPFCM,DPTCD,
60     5                DPFLA,DPTRM,DPSPR,DPTRN,DPTRM2,DPHYP,DPDYN,DPJET,
61     6                DPHB,DPSHB,DPTRAH,DPSTBH,DPSEC,DPSLAH,DPINPT,
62     7                DPFLC,DPOPTN,DPSYN,DPBDIN,DPWGIN,DPVTIN,DPTVT,
63     8                DPVFIN,DPHTIN,DPPWIN,DPLBIN,DPF,DPIOM,
64     9                DPIBDY,DPIWG,DPIHT,DPIVT,DPIVF,DPIBW,DPIBH,DPIBV,
65     A                DPIBWH,DPIBWV,DPITOT,DPIPWR,DPIDWH
66C
67      LOGICAL  FLTC,OPTI,BO,WGPL,WGSC,SYNT,HTPL,HTSC,VTPL,VTSC,
68     1         HEAD,PRPOWR,JETPOW,LOASRT,TVTPAN,SUPERS,SUBSON,
69     2         TRANSN,HYPERS,SYMFP,ASYFP,TRIMC,TRIM,DAMP,
70     3         HYPEF,TRAJET,BUILD,FIRST,DRCONV,PART,
71     4         VFPL,VFSC,CTAB,PLOT
72      LOGICAL  IERR,GONOGO,IEND,DMPALL,DPB,DPA,DPBD,DPAVF,
73     1         DPFACT,DPWBT,DPBHT,DPAVT,DPAHT,DPC,DPD,DPWB,
74     2         DPCHT,DPDHT,DPDYNH,SAVE,DMPCSE,DPDVT,DPGR,DPLB,
75     3         DPPW,DPSTB,DPSBD,DPSLG,DPSWB,DPSTP,DPDWA,DPSTG,
76     4         DPSLA,DPTRA,DPEXPD,DPDVF,DPFLP,DPFHG,DPFCM,DPTCD,
77     5         DPFLA,DPTRM,DPSPR,DPTRN,DPTRM2,DPHYP,DPDYN,DPJET,
78     6         DPHB,DPSHB,DPTRAH,DPSTBH,DPSEC,DPSLAH,DPINPT,
79     7         DPFLC,DPOPTN,DPSYN,DPBDIN,DPWGIN,DPVTIN,DPTVT,
80     8         DPVFIN,DPHTIN,DPPWIN,DPLBIN,DPF,DPIOM,
81     9         DPIBDY,DPIWG,DPIHT,DPIVT,DPIVF,DPIBW,DPIBH,DPIBV,
82     A         DPIBWH,DPIBWV,DPITOT,DPIPWR,DPIDWH
83C
84C***  CHECK BODY METHOD, ASPECT RATIO CLASSIFICATION, AND DOWNWASH
85C
86      IF(METHOD .LE. 1.5) METHOD = 1.0
87      IF(METHOD .GT. 1.5) METHOD = 2.0
88C
89      IF(WGIN(92) .EQ. UNUSED) WGIN(92) = 3.5
90      IF(WGIN(92) .LT. 3.0)    WGIN(92) = 3.0
91      IF(WGIN(92) .GT. 4.0)    WGIN(92) = 4.0
92      IF(HTIN(92) .EQ. UNUSED) HTIN(92) = 3.5
93      IF(HTIN(92) .LT. 3.0)    HTIN(92) = 3.0
94      IF(HTIN(92) .GT. 4.0)    HTIN(92) = 4.0
95      IF(VTIN(92) .EQ. UNUSED) VTIN(92) = 3.5
96      IF(VTIN(92) .LT. 3.0)    VTIN(92) = 3.0
97      IF(VTIN(92) .GT. 4.0)    VTIN(92) = 4.0
98      IF(VFIN(92) .EQ. UNUSED) VFIN(92) = 3.5
99      IF(VFIN(92) .LT. 3.0)    VFIN(92) = 3.0
100      IF(VFIN(92) .GT. 4.0)    VFIN(92) = 4.0
101C
102      IF(.NOT. (WGPL .AND. HTPL)) GO TO 1000
103        SPANR  = WGIN(4)/HTIN(4)
104        IF((DWASH .EQ. UNUSED) .AND. (SPANR .LT. 1.5)) DWASH = 3.0
105        IF(DWASH .LE. 1.5) DWASH = 1.0
106        IF(DWASH .GE. 2.5) DWASH = 3.0
107        IDWASH = DWASH+0.5
108        IF(IDWASH .EQ. 2 .AND. SPANR .LT. 1.25) IDWASH = 3
109        IF(IDWASH .EQ. 2 .AND. SPANR .GT. 3.60) IDWASH = 1
110        IF(IDWASH .EQ. 1 .AND. SPANR .LE. 1.00) IDWASH = 3
111        IF(IDWASH .EQ. 3 .AND. SPANR .GT. 1.50) IDWASH = 1
112        DWASH = IDWASH
113 1000 CONTINUE
114C
115C***  SET IOM PRINT FLAGS
116C
117      IF(BO .AND. .NOT. BUILD) GO TO 1010
118        IF(BO)   PBODY = .TRUE.
119        IF(WGPL) PWING = .TRUE.
120        IF(HTPL)   PHT = .TRUE.
121        IF(VFPL)   PVF = .TRUE.
122        IF((VTPL .OR. TVTPAN))   PVT = .TRUE.
123 1010 CONTINUE
124      IF(.NOT. BO) GO TO 1040
125        IF(WGPL .AND. .NOT. BUILD) GO TO 1020
126          IF(WGPL) PBW = .TRUE.
127          IF(HTPL) PBH = .TRUE.
128          IF((VTPL .OR. TVTPAN)) PBV = .TRUE.
129          IF(WGPL .AND. HTPL) PBWH = .TRUE.
130          IF(WGPL .AND. (VTPL .OR. TVTPAN)) PBWV = .TRUE.
131          IF(.NOT. HTPL .AND. .NOT. (VTPL .OR. TVTPAN)) PBODY = .TRUE.
132 1020     CONTINUE
133        IF(.NOT. WGPL) GO TO 1030
134          IF(HTPL .AND. (VTPL .OR. TVTPAN)) PBWHV = .TRUE.
135          IF(.NOT. HTPL .AND. (VTPL .OR. TVTPAN)) PBWV = .TRUE.
136          IF(.NOT. (VTPL .OR. TVTPAN) .AND. HTPL) PBWH = .TRUE.
137          IF(.NOT. HTPL .AND. .NOT. (VTPL .OR. TVTPAN)) PBW = .TRUE.
138 1030     CONTINUE
139          IF(WGPL .AND. HTPL) PDWASH = .TRUE.
140          IF(PRPOWR .OR. JETPOW) PPOWER = .TRUE.
141 1040 CONTINUE
142      IF(LOASRT) PBW = .TRUE.
143C
144C***  CHECK FLAP INBOARD STATION
145C
146      FLP = SYMFP .OR. ASYFP
147      IF(.NOT. FLP) GO TO 1070
148      IF(ASYFP .AND. (ABS(F(18)-5.) .LE. 0.1)) GO TO 1070
149      SSPN  = WGIN(4)
150      SSPNE = WGIN(3)
151      IF(.NOT. HTPL) GO TO 1050
152          SSPN  = HTIN(4)
153          SSPNE = HTIN(3)
154 1050 CONTINUE
155      SBOD = SSPN-SSPNE
156      IF(SPANI .GE. SBOD) GO TO 1070
157          WRITE(6,1060) SPANI, SBOD
158 1060     FORMAT(1H0,35HERROR ** FLAP INBOARD SPAN, SPANI =,E12.5,
159     1      52H, IT IS INSIDE THE BODY AS DEFINED BY SSPN AND SSPNE /
160     2      10X,40HSPANI IS REDEFINED, SPANI = SSPN-SSPNE =,E12.5/)
161          SPANI = SBOD
162 1070 CONTINUE
163C
164C***  CHECK FOR MISSING ESSENTIAL NAMELISTS
165C
166      FLAG = LOASRT .OR. HYPEF .OR. TRAJET
167      IF(.NOT. FLAG) CALL MAJERR
168C
169C***  TEST INPUT UNITS, NOSE LOCATION, AND SCALING
170C***  TEST FLIGHT CONDITION INPUTS
171C
172      IF(SCALE .LE. UNUSED) SCALE = 1.0
173      CALL CONV(IDIM,SCALE)
174C
175      IF(FLC(160) .LT. 1.0) FLC(160) = 1.0
176      IF(FLC(160) .GT. 3.0) FLC(160) = 3.0
177      LOOP  = FLC(160)+0.5
178      NMACH = FLC(1)  +0.5
179      NALT  = FLC(159)+0.5
180      IMACH = FLC(3)   .NE. UNUSED
181      IRN   = FLC(43)  .NE. UNUSED
182      IVEL  = FLC(137) .NE. UNUSED
183      IALT  = FLC(97)  .NE. UNUSED
184      IPT   =(FLC(117) .NE. UNUSED) .AND. (FLC(74) .NE. UNUSED)
185      IATM  = IALT .OR. IPT
186C
187      IF(IMACH) GO TO 1130
188        IF(IVEL) GO TO 1090
189          WRITE(6,1080)
190 1080     FORMAT(1H0,41H*** ERROR *** NO SPEED REFERENCE IS INPUT,
191     1               27H MACH(1) = VINF(1) = UNUSED/
192     2               15X,31HTHE NEXT CASE WILL BE ATTEMPTED/)
193          IERR = .TRUE.
194 1090   CONTINUE
195        IF(.NOT. IVEL) GO TO 1120
196        IF(IATM)       GO TO 1120
197          WRITE(6,1100)
198 1100     FORMAT(1H0,35H*** ERROR *** VELOCITY IS INPUT AND,
199     1               43H ATMOSPHERIC DATA ARE NOT DEFINED (ALT(1) = ,
200     2               27HPINF(1) = TINF(1) = UNUSED)/
201     3               15X,41HMACH WILL BE CALCULATED USING A SPEED-OF-,
202     4               17HSOUND OF 1000 FPS/)
203          DO 1110 I=1,NMACH
204            FLC(I+2) = FLC(I+136)/1000.0
205 1110     CONTINUE
206 1120   CONTINUE
207 1130 CONTINUE
208      IF(IRN .OR. IATM) GO TO 1160
209        WRITE(6,1140)
210 1140   FORMAT(1H0,43H*** ERROR *** REYNOLDS NUMBER IS NOT INPUT ,
211     1             46HAND ATMOSPHERIC DATA ARE NOT DEFINED (ALT(1) =,
212     2             28H PINF(1) = TINF(1) = UNUSED)/
213     3             15X,38HREYNOLDS NUMBER WILL BE SET TO 5*10**6/)
214        DO 1150 I=1,NMACH
215          FLC(I+42) = 5.0E6
216 1150   CONTINUE
217 1160 CONTINUE
218C
219C***  CHECK PROGRAM LOOPING
220C
221      FLAG = (LOOP .EQ. 1) .AND. IATM
222      IF(.NOT. FLAG) GO TO 1190
223        IF(FLC(159) .EQ. UNUSED) NALT = NMACH
224        IF(NALT .EQ. NMACH) GO TO 1180
225          I = MIN0(NALT,NMACH)
226          WRITE(6,1170) NMACH, NALT, I
227 1170     FORMAT(1H0,39H*** ERROR *** LOOP = 1 AND NALT IS NOT ,
228     1               23HEQUAL TO NMACH (NALT = ,I2,10H, NMACH = ,
229     2               I2,1H)/15X,31HNMACH AND NALT ARE BOTH SET TO ,
230     3               I2/)
231          NMACH = I
232          NALT  = I
233 1180   CONTINUE
234 1190 CONTINUE
235C
236      FLAG = (LOOP .GT. 1) .AND. (.NOT. IATM)
237      IF(.NOT. FLAG) GO TO 1210
238        WRITE(6,1200) LOOP
239 1200   FORMAT(1H0,21H*** ERROR *** LOOP = ,I2,16H AND ATMOSPHERIC ,
240     1             34HDATA ARE NOT DEFINED, SET LOOP = 1/)
241        LOOP = 1
242 1210 CONTINUE
243      FLC(160) = LOOP
244      FLC(1)   = NMACH
245      FLC(159) = NALT
246C
247C***  CALCULATE ATMOSPHERIC PRESSURE AND TEMPERATURE
248C
249      IF(.NOT. IALT) GO TO 1230
250      IF(IPT)        GO TO 1230
251        DO 1220 I=1,NALT
252          IF(ABS(FLC(I+96)) .LE. UNUSED) FLC(I+96) = 0.0
253          CALL ATMOS(FLC(I+96), FLC(I+116), FLC(I+73))
254 1220   CONTINUE
255 1230 CONTINUE
256C
257C***  WRITE ARRAY FLC FOR PLOTTING
258C
259      IF(PLOT) WRITE(13,1240) FLC
260 1240 FORMAT(1P,10E12.4)
261C
262      RETURN
263      END
264