Skip to content

A gradual release of Avioverse begins in October 2026. Request early access →

CST = (ALPHA - ASS) ^ 2

European Technical Standard Orders (CS-ETSO) · CS-ETSO · EAR revision 14 Aug 2026

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

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 &gt; 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 &lt; C2 THEN L% = ABS(OLDALF - ALPHA) / DT &gt; ALFRTE OR ALPHA &gt; ALFLIM OR ALPHA &lt; -.08 IF L% THEN OPTFLG% = 1 ALPHA = ALPHA + DM ELSE DM = DM / 2 CALL MIN(DM, M2, C1, C2, C3, M)'Fit parabola &amp; 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 &lt; -.08 THEN ALPHA = -.08

IF ALPHA &gt; 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 &lt;= 5 THEN DY = 5 ELSE DY = 10 END IF DY = DY * MAG IF INT(MAXX / DX) &lt; &gt; MAXX / DX THEN MAXX = INT(MAXX / DX + 1) * DX IF INT(MAXY / DY) &lt; &gt; MAXY / DY THEN MAXY = INT(MAXY / DY + 1) * DY IF INT(MINY / DY) &lt; &gt; 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 &lt; &gt; 0 THEN ' adjustment for

D = INT(LOG(a) / LOG(10)) + 1 ' large numbers

IF D &gt; 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 &lt; .1 THEN

G$ = "#.####"

ELSEIF AZ &gt;= .1 AND AZ &lt; 1 THEN

G$ = "##.###"

ELSEIF AZ &gt;= 1 AND AZ &lt; 10 THEN

G$ = "###.##"

ELSEIF AZ &gt;= 10 AND AZ &lt; 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. -&gt;=? 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 &gt; -30 AND WZ &lt; -20 THEN KF1 = 1 + .025 * (WZ + 20) IF WZ &lt;= -30 THEN KF1 = .75 DGAM = 57.3 * (20 * GDOT - (GHAT - GRND + (1 - KF1) * WZ / 152 + 20 * GDOT)) IF DGAM &lt; 0 THEN KF2 = (2 + .4 * DGAM) ELSE

KF2 = 2 END IF IF KF2 &lt; 0 THEN KF2 = 0 KF2 = KF2 / 57.3 END SUB SUB TAKEOFF STATIC '******************************************************************** ' SUBROUTINE INTIALIZE TAKEOFF * '******************************************************************** IF APPFLG% = 0 THEN ALPHA = .12 WHILE (LIFT &lt;= 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 &lt; 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 &gt; 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 &gt; T2 AND SEC &lt; = T3 THEN X = SEC - T2 WXDT = (A1 * X + B1) * X * X END IF IF SEC &gt; T5 AND SEC &lt; = T6 THEN X = SEC - T6 WXDT = (A2 * X + B2) * X * X END IF IF SEC &gt; T6 THEN WXDT = 0 WX = WX + WXDT * DT END IF IF TDZ &gt; 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 &gt; T2 AND SEC &lt;= T3 THEN

X = SEC - T2

WZ = (A1 * X + B1) * X * X

WZC = WZ

END IF

IF SEC &gt; T5 AND SEC &lt;= T6 THEN

X = SEC - T6

WZ = (A2 * X + B2) * X * X

WZC = WZ

END IF

KALT = (-.0000011 * ALT + .00212) * ALT - .0251

IF KALT &lt; 0 OR ALT &lt;= 0 THEN KALT = 0

KALT = 1

WZ = KALT * WZC

IF SEC &gt; 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

All rules in SUBPART B -LIST OF ETSOS

Consolidated from the EASA Easy Access Rules (revision 14 Aug 2026, extracted 17 Aug 2026) for convenience. Not the official publication — verify against the Official Journal of the European Union and the EASA publications before operational use.

Ask Metis about CST →

Metis opens with Avioverse in October 2026 · request early access.