IRImplementing rule
CST= (ALPHA - ASS) ^ 2
CASE 2 ' ---------------------------- Alpha = Ass-----------------------------------
CASE 3 ' ---------------------------- Ax = 0-----------------------------------
CASE 4 ' ---------------------------- 15 Degrees-----------------------------------
CASE 5 ' ---------------------------- User Defined-----------------------------------
PRINT "Not defined"
STOP
CASE 6 ' ---------------------------- User Supplied-----------------------------------
'User must supply a subroutine called GUIDE
'which must reside in the WNDSHR.QLB Library
'GUIDE can have a list of arguments
'As an example
'ALF = 57.3*ALPHA 'PTH = 57.3 * (ALPHA + GM) ' units : ft fpm kt deg g's * 'CALL GUIDE(ALT, HDOT, VC, ALF, PTH, AU, AZ, CST) END SELECT END IF ' CST is the Cost Function to be minimized END SUB SUB DRAGS STATIC '***************************************************** ' SUBROUTINE DRAG FOR B737/200 * '***************************************************** X = 57.3 * ALPHA + 1 CF5 = 0: CF4 = 0: CF3 = 0: CF2 = 0 SELECT CASE FLPS% CASE 0 CF1 = .091 CF0 = .0156 CASE 1 CF3 = -1.164058E-04 CF2 = 2.48561E-03 CF1 = .0905781 CF0 = .062114 CASE 2 CF0 = .101198 CF1 = .110993 CF2 = -.0015162 CF3 = 1.8931E-04 CF4 = -7.1427E-06 CF5 = -4.2776E-09 CASE 5 CF0 = .192638 CF1 = .123509 CF2 = -.0051477 CF3 = 6.4968E-04
CF4 = -3.0891E-05 CF5 = 4.1291E-07 CASE 10 CF0 = .249855 CF1 = .114005 CF2 = 7.1207E-04 CF3 = -9.9541E-05 CF4 = 7.0431E-06 CF5 = -2.3773E-07 CASE 15 CF0 = .40149 CF1 = .118723 CF2 = -6.4877E-04 CF3 = 6.6281E-05 CF4 = -1.6113E-07 CF5 = -1.4278E-07 CASE 25 CF0 = .592655 CF1 = .122433 CF2 = -.0026365 CF3 = 3.5963E-04 CF4 = -1.5579E-05 CF5 = 1.0894E-07 CASE 30 IF X < 4 THEN CF1 = .12 CF0 = .72 ELSE CF3 = -1.651192E-04 CF2 = 4.16461E-03 CF1 = 8.337061E-02 CF0 = .8350316 END IF CASE 40 IF X < 4 THEN
CF1 = .12
CF0 = 1.08
ELSE
CF3 = -1.689903E-04
CF2 = 3.733285E-03
CF1 = 8.483822E-02
CF0 = 1.201596
END IF
CASE ELSE
PRINT "Flaps "; FLPS%; " not available....."
END
END SELECT 'For CL computation
CL = ((((CF5 * X + CF4) * X + CF3) * X + CF2) * X + CF1) * X + CF0
SELECT CASE FLPS% 'Low Speed Drag Polars
CASE 0
D0 = .013285: D1 = .052868: D2 = -.07182: D3 = .071561
CASE 1
D0 = .026143: D1 = .022358: D2 = -.00083: D3 = .016338
CASE 2
D0 = .070346: D1 = -.0852: D2 =.097453: D3 = -.01207
CASE 5
D0 = .045214: D1 = -.0178: D2 =.04373: D3 = .002101
CASE 10
D0 = -.04266: D1 = .19643: D2 = -.1152: D3 = .03966
CASE 15
IF GEAR% = 0 THEN
D0 = .034954: D1 = .098892: D2 = -.04187: D3 = .020496
ELSE
D0 = -.02822: D1 = .174631: D2 = -.0874: D3 = .029566
END IF
CASE 25
D0 = -.10416: D1 = .327506: D2 = -.17059: D3 = .043313
CASE 30
D0 = .124697: D1 = -.03348: D2 =.055295: D3 = -.00311
CASE 40
D0 = .124925: D1 = .052537: D2 =.006912: D3 = .0058 CASE ELSE PRINT "Flaps "; FLPS% " not available...." END END SELECT CD = ((D3 * CL + D2) * CL + D1) * CL + D0 Q = 1451770 * MACH * MACH * DELTA 'B737/200 LIFT = Q * CL DRAG = Q * CD END SUB SUB EULER STATIC '***************************************************************** ' SUBROUTINE EULER'S PREDICTOR/CORRECTOR * ' (INTEGRATION SUBROUTINE) * '***************************************************************** DTH = DT / 3600: DTM = DT / 60: SEC = SEC + DT: VTP = VT CALL RATES ' SUBROUTINE RATES <<PREDICTOR>> ALT1 = ALT: HDOT1 = HDOT: ALT = ALT + HDOT * DTM GM1 = GM: GDOT1 = GDOT: GM = GM + GDOT * DT DST1 = DST: XDOT1 = XDOT: DST = DST + XDOT * DTH VT1 = VT: VDOT1 = VDOT: VT = VT + VDOT * DT CALL RATES ' SUBROUTINE RATES <<CORRECTOR>> ALT = ALT1 + (HDOT1 + HDOT) * DTM / 2 GM = GM1 + (GDOT1 + GDOT) * DT / 2 DST = DST1 + (XDOT1 + XDOT) * DTH /2 VT = VT1 + (VDOT1 + VDOT) * DT / 2 END SUB SUB LIMIT STATIC '***************************************************************************** ' SUBROUTINE ALPHA DOT AND PITCH LIMIT * '***************************************************************************** ALPHA = OLDALF + .25 * (ACMD - OLDALF) 'Pitch dynamics CALL DRAGS ' SUBROUTINE DRAG (REQ'D FOR RATE SUB CALL) IF PLMFLG% = 0 THEN EXIT SUB OLDGM = GM
PLIM% = 0
DO WHILE (PLIM% = 0)
CALL RATES ' SUBROUTINE RATES
X = ALPHA + OLGM + GDOT * DT
IF X > HP THEN ALPHA = .9 * ALPHA
IF X < LP THEN ALPHA = 1.1 * ALPHA
IF ALPHA > ALFLIM THEN
ALPHA = ALFLIM
PLIM% = 1
END IF
LOOP
END SUB
SUB MCRBRST STATIC
IF MU1 = 0 THEN
MU1 = -37141!
AV = 5500: H1 = 2500: G3 = 3: J1 = -700: J2 = 800: J3 = 6.5
MU2 = -20000
BV = 12000: H2 = 2000: N1 = 200: N2 = 2500: N3 = 4
WX = 5
IF ALT > 1000 THEN
PRINT " DFW data not available above 1000'"
PRINT " Please start at or below 1000'"
END
END IF
END IF
X = 6078 * DST: Y = ALT: A1 = AV: A2 = BV
NX1 = Y - H1: DENX1 = (Y - H1) ^ 2 + (X - A1) ^ 2
NY1 = X + J2 - A1: DENY1 = (Y + J1 - H1) ^ 2 + (X + J2 - A1) ^ 2
NX2 = Y - H2: DENX2 = (Y - H2) ^ 2 + (X - A2) ^ 2
NY2 = X + N2 - A2: DENY2 = (Y + N1 - H2) ^ 2 + (X + N2 - A2) ^ 2
NX3 = Y + H1: DENX3 = (Y + H1) ^ 2 + (X - A1) ^ 2
NY3 = X + J2 - A1: DENY3 = (Y + J1 + H1) ^ 2 + (X + J2 - A1) ^ 2
NX4 = Y + H2: DENX4 = (Y + H2) ^ 2 + (X - A2) ^ 2
NY4 = X + N2 - A2: DENY4 = (Y + N1 + H2) ^ 2 + (X + N2 - A2) ^ 2
``` XX = MU1 * (-NX1 / DENX1 + NX3 / DENX3) + MU2 * (NX2 / DENX2 - NX4 / DENX4) WX = WX + .65 * (XX - WX) + 2 * G3 IF DST = 0 THEN WXP = WX ZZ = MU1 * (NY1 / DENY1 - NY3 / DENY3) * J3 + MU2 * (-NY2 / DENY2 + NY4 / DENY4) * N3 WZ = WZ + .65 * (ZZ - WZ) IF DST = 0 THEN WZP = WZ WX5 = WX4: WX4 = WX3: WX3 = WX2: WX2 = WX1: WX1 = WX WZ5 = WZ4: WZ4 = WZ3: WZ3 = WZ2: WZ2 = WZ1: WZ1 = WZ IF WCNT% < 4 THEN WXDT = (WX - WXP) / DT: WXP = WX IF WCNT% < 4 THEN WZDT = (WZ - WZP) / DT: WZP = WZ IF WCNT% > 3 THEN WXDT = (26 * WX5 - 27 * WX4 - 40 * WX3 - 13 * WX2 + 54 * WX1) / (70 * DT) IF WCNT% > 3 THEN WZDT = (26 * WZ5 - 27 * WZ4 - 40 * WZ3 - 13 * WZ2 + 54 * WZ1) / (70 * DT) IF ABS(WXDT) > 15 THEN WXDT = 15 * SGN(WXDT) IF ABS(WZDT) > 15 THEN WZDT = 15 * SGN(WZDT) WCNT% = WCNT% + 1 END SUB SUB MIN (DM, M2, C1, C2, C3, M) STATIC '************************************************************ 'SUBROUTINE MIN_CST BY LEAST SQUARES PARABOLA * '************************************************************ ALPHA = M2 + DM 'INCREMENT ALPHA CALL COST 'SUBROUTINE COST IF DM < 0 THEN C4 = CST ELSE SWAP C1, C3 C5 = CST END IF ALPHA = M2 - DM 'DECREMENT ALPHA CALL COST 'SUBROUTINE COST IF DM < 0 THEN C5 = CST ELSE C4 = CST ```
END IF
M = ABS(DM) * (14 * C1 + 7 * C4 - 7 * C5 - 14 * C3) / (20 * C1 - 10 * C4 - 20 * C2 - 10 * C5 + 20 * C3) END SUB SUB OPT STATIC '**************************************************************************** 'SUBROUTINE OPTALF - DETERMINES THE ALPHA REQD FOR CMD GAMMA * '**************************************************************************** OLDALF = ALPHA: GM1 = GM CALL ATMOS ' SUBROUTINE ATMOSPHERE CALL RATES ' SUBROUTINE RATES DM = 1 / 57.3 ' SET ALPHA INCREMENT TO 1 DEGREE C1 = 1E+20 C2 = 1E+20 C3 = 1E+20 OPTFLG% = 0 WHILE (OPTFLG% = 0) CALL COST ' SUBROUTINE COST C3 = C2: C2 = C1: C1 = CST M3 = M2: M2 = M1: M1 = ALPHA LGC% = C1 > C2 AND C3 = 1E+20 IF LGC% THEN DM = -DM ' Reverse search direction C1 = C2: C2 = CST: M1 = M2: M2 = ALPHA ALPHA =ALPHA + 2 * DM ELSE IF C1 < C2 THEN L% = ABS(OLDALF - ALPHA) / DT > ALFRTE OR ALPHA > ALFLIM OR ALPHA < -.08 IF L% THEN OPTFLG% = 1 ALPHA = ALPHA + DM ELSE DM = DM / 2 CALL MIN(DM, M2, C1, C2, C3, M)'Fit parabola & find minimum ALPHA = M2 + M 'This is the optimum alpha OPTFLG% = 1 'Set flag to terminate END IF END IF
WEND
ALFLIM = ASS 'SET ALPHA LIMIT TO ALPHA STICK SHAKER
SELECT CASE LAW%
CASE 4
ALFLIM = ASS - .035 'LIMIT TO SS MINUS 2 DEG
CASE 5, 6
ALFLIM = ASS - KF2
CASE ELSE
END SELECT
IF ALPHA < -.08 THEN ALPHA = -.08
IF ALPHA > ALFLIM THEN ALPHA = ALFLIM
ACMD = ALPHA 'SET ALPHA COMMAND TO COMPUTED ALPHA
END SUB
SUB PLOT
'*********************************************************************************
****
'* PLOT ROUTINE *
'*********************************************************************************
****
REM $DYNAMIC ' TWO DIMENSIONAL PLOTTER DEFINT I-L, N DIM F$(3) ' file name array DIM DTA(3, 250, 15) ' data array DIM TY$(14) ' title array (dependant variable) TITLE$ = "HONEYWELL WINDSHEAR SIMULATION" ' main title TX$ = "Time (s)" ' X title TY$(1) = "Altitude ft " TY$(2) = "Alt Rate fpm " TY$(3) = "T A S kts " TY$(4) = "Alpha deg " TY$(5) = "Gamma deg " TY$(6) = "Pitch deg " TY$(7) = "G\_ref deg " TY$(8) = "Hz Shear kps "
``` TY$(9) = "Vt Wind fps " TY$(10) = "Vt rate kps " TY$(11) = "W/S Flag " NV = 12 CLS LOCATE 3, 15: PRINT "Enter the names of the data files you wish to plot." FOR NC = 1 TO 3 LOCATE 6 + 2 * NC, 25 ' input PRINT "FILENAME "; NC; " "; ' filenames INPUT ; F$(NC) ' containing IF F$(NC) = " " THEN EXIT FOR ' data NEXT NC NC = NC - 1 ' number of curves to plot LOCATE 20, 15: PRINT "Reading from disk........." FOR I = 1 TO NC CLOSE OPEN "I", #1, F$(I) ' open file for input NP = 0 DO NP = NP + 1 ' number of points FOR J = 1 TO NV INPUT #1, DTA(I, NP, J) ' read data NEXT J LOOP UNTIL EOF(1) CLOSE NEXT I DO ' display all selected parameters DO ' prompt user until a valid parameter is selected 100 CLS LOCATE 3, 20: PRINT "Select the parameter you wish to plot." FOR I = 1 TO NV - 1 LOCATE 4 + I, 30: PRINT TY$(I); " = "; I NEXT I LOCATE 21, 30: INPUT "parameter number (0 to exit)"; PARAM% IF PARAM% = 0 THEN ```
``` CLS EXIT SUB ' return to calling program END IF LOOP UNTIL 1 <= PARAM% AND PARAM% <= 14 'end of select loop PARAM% = PARAM% + 1 DX = 5 ' x axis grid increment GOSUB 400 ' find maximum x and y values IF PLTFLG% = 1 THEN PRINT "No information to plot...." PRINT "Press any key to continue..." DO: LOOP WHILE INKEY$ = "" GOTO 100 END IF GOSUB 600 ' grid and titles FOR I = 1 TO NC GOSUB 1110 ' plot graph NEXT I DO LOOP WHILE INKEY$ = "" CLS : SCREEN 0 LOOP '********************************************************************************* ***** 400 '* MAX SUBROUTINE * '********************************************************************************* ***** ' MAXX = DTA(1, 1, 1) MAXY = DTA(1, 1, PARAM%) MINY = DTA(1, 1, PARAM%) FOR I = 1 TO NC FOR J = 1 TO NP IF DTA(I, J, 1) > MAXX THEN MAXX = DTA(I, J, 1) IF DTA(I, J, PARAM%) > MAXY THEN MAXY = DTA(I, J, PARAM%) IF DTA(I, J, PARAM%) < MINY THEN MINY = DTA(I, J, PARAM%) ```
NEXT J NEXT I PLTFLG% = 0 DY = (MAXY - MINY) / 15 IF DY = 0 THEN PLTFLG% = 1 DY = 5 END IF MAG = 10 ^ (INT(LOG(DY) / LOG(10))): DY = DY / MAG IF DY <= 5 THEN DY = 5 ELSE DY = 10 END IF DY = DY * MAG IF INT(MAXX / DX) < > MAXX / DX THEN MAXX = INT(MAXX / DX + 1) * DX IF INT(MAXY / DY) < > MAXY / DY THEN MAXY = INT(MAXY / DY + 1) * DY IF INT(MINY / DY) < > MINY / DY THEN MINY = INT(MINY / DY) * DY NUMX = MAXX / DX NUMY = (MAXY - MINY) / DY RETURN 600 '********************************************************************************* ****** '* GRID AND TITLES * '********************************************************************************* ****** ' CLS SCREEN 2 ' 640*200 monochrome graphics KEY OFF ' FOR J = 0 TO NUMX Z = J * 580 / NUMX + 59 LINE (Z, 10) - (Z, 170) ' vertical grid line
Z = J * 71 / NUMX + 7
a = DX * J
IF a < > 0 THEN ' adjustment for
D = INT(LOG(a) / LOG(10)) + 1 ' large numbers
IF D > 1 THEN Z = Z - D + 1
END IF
LOCATE 23, Z
PRINT a;
NEXT J
FOR J = 0 TO NUMY
Z = J * 160 / NUMY + 10
LINE (60, Z) - (640, Z) ' horizontal grid line
Z = 22 - J * 20 / NUMY
LOCATE Z, 2
Z = DY * J + MINY
AZ = ABS(Z)
IF INT(Z) = Z THEN
G$ = "######"
ELSEIF AZ < .1 THEN
G$ = "#.####"
ELSEIF AZ >= .1 AND AZ < 1 THEN
G$ = "##.###"
ELSEIF AZ >= 1 AND AZ < 10 THEN
G$ = "###.##"
ELSEIF AZ >= 10 AND AZ < 100 THEN
G$ = "####.#"
ELSE
G$ = "######"
END IF
PRINT USING G$; Z;
NEXT J
Z = (80 - LEN(TITLE$)) / 2 + 2
LOCATE 1, Z: PRINT TITLE$ ' print main title
LOCATE 24, 36: PRINT TX$; ' X axis title
LOCATE 8, 1 ' Y
FOR J = 1 TO LEN(TY$(PARAM% - 1)) ' axis PRINT MID$(TY$(PARAM% - 1), J, 1) ' title NEXT J LOCATE 25, 10: PRINT "1"; ' curve LINE (90, 195) - (130, 195) LOCATE 25, 20: PRINT "2"; ' labels FOR J = 0 TO 40 STEP 8 XX = 170 + J PSET (XX, 195) CIRCLE (XX + 80, 195) , 2 NEXT J LOCATE 25, 30: PRINT "3"; RETURN '********************************************************************************* ******** '* PLOTTING ROUTINE * '********************************************************************************* ******** ' 1110 FOR J = 1 TO NP XX = 580 * DTA(I, J, 1) / MAXX + 60' calculate pixel X position YY = 170 - 160 * (DTA(I, J, PARAM%) - MINY) / (MAXY - MINY) IF J = 1 THEN GOTO 1170 IF I = 1 THEN LINE (XXOLD, YYOLD) - (XX, YY) ' line 1170 1170 XXOLD = XX: YYOLD = YY IF I = 2 THEN PSET (XX, YY) ' point IF I = 3 THEN CIRCLE (XX, YY), 2 ' circle NEXT J RETURN END SUB REM $STATIC DEFSNG I-L, N SUB PRINTS '******************************************************************
' SUBROUTINE PRINT TO SCREEN AND FILE *
'******************************************************************
ACMDG = 57.3 * ACMD ALF = 57.3 * ALPHA GAM = 57.3 * GM PITCH = ALF + GAM WZX = 1.689 * WZ IF NOSAVE = 0 THEN PRINT #2, SEC, ALT, HDOT, VT, ALF, GAM, PITCH, GREFF, WXDT, WZX, VDOT, WSALERT% FMT1$ = "###.## #### ##### ### ###.# ###.# ###.# ##.# ###.# ###.# ###.# #" PRINT USING FMT1$; SEC, ALT, HDOT, VT, ALF, GAM, PITCH, GREFF, WXDT, WZX, VDOT, WSALERT% END SUB SUB RATES STATIC '****************************************************************** ' SUBROUTINE RATES * '****************************************************************** VDOT = G * ((THRST * CSAL - DRAG) / WG - SNGM) - WXDT * CSGM - WZDT * SNGM GDOT = G * ((LIFT + THRST * SNAL) / WG - CSGM) + WXDT * SNGM - WZDT * CSGM AWZ = VT * GDOT - WXDT * SNGM + WZDT * CSGN 'Inertial Acc. along Wind\_z axis
SNGM = SIN(GM): CSGM = COS(GM): SNAL = SIN(ALPHA): CSAL = COS(ALPHA) GDOT = GDOT / VT HDOT = 101.28 * (VT * SNGM + WZ) XDOT = VT * CSGM + WX AWX = VDOT + WXDT * CSGM + WZDT * SNGM 'Inertial Acc. along Wind\_x axis AU = (AWX * CSAL + AWZ * SNAL) / G 'LONG. ACCEL. ->=? AZ = (AWX * SNGM + AWZ * CSGM) / G 'VERT. ACCEL. UP=? VG = XDOT GRND = (VT * GM + WZ) / (VT + WX) 'Gamma w/r ground KF1 = 1 GHAT = GMIN * (1 + WX / VT) IF WZ > -30 AND WZ < -20 THEN KF1 = 1 + .025 * (WZ + 20) IF WZ <= -30 THEN KF1 = .75 DGAM = 57.3 * (20 * GDOT - (GHAT - GRND + (1 - KF1) * WZ / 152 + 20 * GDOT)) IF DGAM < 0 THEN KF2 = (2 + .4 * DGAM) ELSE
KF2 = 2 END IF IF KF2 < 0 THEN KF2 = 0 KF2 = KF2 / 57.3 END SUB SUB TAKEOFF STATIC '******************************************************************** ' SUBROUTINE INTIALIZE TAKEOFF * '******************************************************************** IF APPFLG% = 0 THEN ALPHA = .12 WHILE (LIFT <= WG) CALL DRAGS ALPHA = ALPHA + .01 WEND GM = (THRST - DRAG) / WG 'COMPUTE POTENTIAL GAMMA ELSE GM = -3 / 57.3 ALPHA = 2 / 57.3 CALL DRAGS TFCT = 1 CALL THRUST T = DRAG - .052 * WG IF T < 0 THEN T = .2 * THRST TFCT = T / THRST THRST = T END IF GMO = GM CALL RATES END SUB SUB THRUST STATIC '******************************************************************* ' SUBROUTINE EPR/THRUST * '******************************************************************* ' TAKE-OFF THRUST FOR JT8D-17 ENGINES
``` VE = 1.668 * VT R00 = 14688.74: R01 = -.65187546#: R02 = 6.7371E-05 R10 = -13.9295: R11 = .000751143#: R12 = -1.5405E-07 R20 = .014643: R21 = 5.3444E-07: R22 = -4.8907E-10 AA0 = (R02 * ALT + R01) * ALT + R00 AA1 = (R12 * ALT + R11) * ALT + R10 AA2 = (R22 * ALT + R21) * ALT + R20 THRST = 2 * ((AA2 * VT + AA1) * VT + AA0) 'Temp. = 100 F IF APPFLG% = 1 THEN IF LC% = 1 AND TFCT < 1 THEN GMO = .136 TSPL = 5.5 'Engine Spool Up Time TFCT = TFCT + DT / TSPL END IF IF TFCT > 1 THEN TFCT = 1 ELSE TFCT = 1 END IF THRST = TFCT * THRST '' THRST = 2 * (((2.64159E-05 * VT + 5.110896E-03) * VT - 12.56476) * VT + 15550) END SUB SUB VSHAKER STATIC '------------------------------------ COMPUTATION OF Vss AND V2------------------------V2 = 145 VTO = V2 + 10' SETS INITAL SPEED EQUAL TO V2 + 10 SELECT CASE FLPS% CASE 10 IF VTO < 150 THEN VTO = 150 ' TAKEOFF CASE 18 IF VTO < 148 THEN VTO = 148 ' FLAP CASE 22 IF VTO < 147 THEN VTO = 147 ' SETTINGS CASE 33 ```
VTO = 63.11225 + .222468 * WG / 1000 ' APPROACH
CASE 42 ' FLAP VTO = 62.67386 + .21744 * WG / 1000 ' SETTINGS CASE ELSE END SELECT END SUB SUB WINDS STATIC
'******************************************************************
' SUBROUTINE WINDS *
'******************************************************************
'
IF TDX > 0 THEN T1 = 4 T2 = TSH T3 = T1 + T2 T4 = -4 T5 = T3 + TDX T6 = T5 - T4 B1 = 3 * WXDTO / T1 ^ 2 A1 = -2 * B1 / (3 * T1) B2 = 3 * WXDTO / T4 ^ 2 A2 = -2 * B2 / (3 * T4) IF SEC > T2 AND SEC < = T3 THEN X = SEC - T2 WXDT = (A1 * X + B1) * X * X END IF IF SEC > T5 AND SEC < = T6 THEN X = SEC - T6 WXDT = (A2 * X + B2) * X * X END IF IF SEC > T6 THEN WXDT = 0 WX = WX + WXDT * DT END IF IF TDZ > 0 THEN T1 = 4 T2 = TSV
T3 = T1 + T2
T4 = - 4
T5 = T3 + TDZ
T6 = T5 - T4
B1 = 3 * WZO / T1 ^ 2
A1 = -2 * B1 / (3 * T1)
B2 = 3 * WZO / T4 ^ 2
A2 = -2 * B2 / (3 * T4)
IF SEC > T2 AND SEC <= T3 THEN
X = SEC - T2
WZ = (A1 * X + B1) * X * X
WZC = WZ
END IF
IF SEC > T5 AND SEC <= T6 THEN
X = SEC - T6
WZ = (A2 * X + B2) * X * X
WZC = WZ
END IF
KALT = (-.0000011 * ALT + .00212) * ALT - .0251
IF KALT < 0 OR ALT <= 0 THEN KALT = 0
KALT = 1
WZ = KALT * WZC
IF SEC > T6 THEN WZ = 0
WZDT = (WZ - WZ1) / DT
WZ1 = WZ
END IF
IF DFW = 1 THEN CALL MCRBRST 'DALLAS Model
END SUB
[Amdt ETSO/16]
IR · CST — CS-ETSO · CS-ETSO Easy Access Rules · EAR revision 14 Aug 2026