APPENDIX D: FORTRAN CODE MANOEUVRE
SUBROUTINE BUHPAD C=============================================================================== C C EEEEEEE UU UU RRRRRRR OOOOOO PPPPPPP AA C EE UU UU RR RR OO OO PP PP AAAA C EE UU UU RR RR OO OO PP PP AA AA C EE UU UU RR RR OO OO PP PP AA AA C EEEEEE UU UU RRRRRRR OO OO PPPPPPP AA AA C EE UU UU RR RR OO OO PP AAAAAAAA C EE UU UU RR RR OO OO PP AA AA C EE UU UU RR RR OO OO PP AA AA C EEEEEEE UUUUU RR RR OOOOOO PP AA AA CC EUropean ROtorcraft Performance Analysis C C 22222 000 000 000 C 22 22 00 00 00 00 00 00 C 22 00 00 00 00 00 00 C 22 00 00 00 00 00 00 C 22 00 00 00 00 00 00 C 22 00 00 00 00 00 00 C 2222222 000 000 000 C C Second Release: 99 C C=============================================================================== C BRITE-EURAM RESPECT
C HELICOPTER DYNAMIC PERFORMANCE SIMULATION
C----+---+--- C
C MODULE NAME: BUHPAD C
C RELEASE NUMBER: EUROPA 99 Release: 1 C
C This software has been produced by the BRITE-EURAM ’RESPECT’ C consortium under the E.C. supported BRITE-EURAM ’RESPECT’ C programme (contract no. BRPR-CT97-0514). Copyright and all C other rights are reserved by the partners in the ’RESPECT’ C consortium. The partners in the ’RESPECT’ consortium are: C
C Eurocopter (FR) C Agusta Un’Azienda Finmeccanica SpA (IT) C Eurocopter-Deutschland GmbH (DE) C GKN Westland Helicopters Ltd (GB) C Centro Italiano Ricerche Aerospaziali ScpA (IT) C Deutsches Zentrum für Luft- und Raumfahrt eV (DE) C Defence Evaluation and Research Agency (GB) C Stichting Nationaal Lucht- en Ruimtevaartlaboratorium (NL) C Office National d'Etudes et de Recherches Aérospatiales (FR) C
C
C MODULE DESCRIPTION:
C Top level manoeuvre logic to perform a agusta helipad takeoff. C
C
C AUTHOR: M.Simoni, Flight Mechanics Department, C AGUSTA a Finmeccanica company.
C
C MODULE CREATION DATE : 6-MAR-2006
C LATEST VERSION : EUROPA 99 Version 99.1.4.6 C LAST MODIFICATION DATE : 6/4/06
C SOURCE CODE FILE NAME : alexpad.f
C----+---+--- C Description of Arguments:
C ~~~~~~~~~~~~~~~~~~~~~~~~ C Common Blocks Used: C ~~~~~~~~~~~~~~~~~~ C Program Units Called:
C ~~~~~~~~~~~~~~~~~~~~ C C Variables Used: C ~~~~~~~~~~~~~~ C----+---+--- C Amendment Record: C ~~~~~~~~~~~~~~~~
C DATE VERSION AMENDMENT AMENDED BY C ---- --- --- --- C=============================================================================== C C ** FORTRAN 77 Extension ** IMPLICIT NONE INCLUDE ’pversno.inc’ INCLUDE ’atmos.cmn’ INCLUDE ’cockpit.cmn’ INCLUDE ’convfac.cmn’ INCLUDE ’engine.cmn’ INCLUDE ’engdyn.cmn’ INCLUDE ’europa.cmn’ INCLUDE ’fltmec.cmn’ INCLUDE ’iunit.cmn’ INCLUDE ’perf.cmn’ INCLUDE ’pilot.cmn’ INCLUDE ’simlogic.cmn’ INCLUDE ’waypoint.cmn’ C----+---+--- C Type declarations for functions
INTEGER I,IFIRST,IFSTC,IFSTP,IFSTR,IFSTY,IMANP,IREAD INTEGER NUMP,NUMPAT,NUMR,NUMRAT
INTEGER IREACT,ITER1,ITDP,CHOOSE,IANT,IPITCH
C----+---+---
DOUBLE PRECISION CAS,CORRV,ESTART,GSANG,NSTART,HTFAIL1
DOUBLE PRECISION HMARGIN,HTDPM,HTSTART,HFLARE,MAXAEO,MCPOEI,MAXOEI DOUBLE PRECISION PATR,PAT1R,PAT2R,PIDT,PTIME,PITCHREQ,QROT
DOUBLE PRECISION RATR,RAT1R,RAT2R,RECV,ROCFAC,RODFAC
DOUBLE PRECISION TFAIL1,TSTART,TOHDG,FLYTRACK,TREACT,TTDROD DOUBLE PRECISION TTDP
DOUBLE PRECISION VY,Z1BACK,Z1REJECT,XTDPM,ZTDPM
C----+---+--- LOGICAL LCODE C----+---+--- CHARACTER*1 DUMTIT C----+---+--- DIMENSION PATR(10),PAT1R(10),PAT2R(10) DIMENSION RATR(10),RAT1R(10),RAT2R(10) DIMENSION IFSTC(10),IFSTP(10),IFSTR(10),IFSTY(10) C----+---+--- SAVE C----+---+--- DATA IFIRST,IREACT,IREAD,ITDP,ITER1,IANT,IPITCH / 7*0 / DATA LCODE /.FALSE./
DATA PTIME / 0.0D0 /
C=============================================================================== C Executable Code
C=============================================================================== C SCCS: Search string for SCCS what
IF (.NOT.LCODE) THEN NCODE = NCODE + 1 VERS(NCODE)=’ ALEXPAD 99.1.4.6 06/03/06’ LCODE = .TRUE. OPEN(99,FILE=’PLOT-ALEXPAD.DAT’) WRITE(99,10000) ENDIF C----+---+--- C Manoeuvre input data. (Read on first pass.)
IF (IREAD.NE.1)THEN READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,*)NUMP
DO 10 I=1,NUMP READ(LUNMAN,*)PATR(I),PAT1R(I),PAT2R(I) 10 CONTINUE C----+---+--- READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,*)NUMR DO 20 I=1,NUMR READ(LUNMAN,*)RATR(I),RAT1R(I),RAT2R(I) 20 CONTINUE C----+---+--- C Collective parameters READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT C----+---+--- C Pitch control parameters
READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,*)PITCHREQ READ(LUNMAN,*)QROT C----+---+--- C Roll control parameters
READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT
C----+---+--- C Yaw control parameters
READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,*)TOHDG READ(LUNMAN,*)FLYTRACK C----+---+--- C Simulation control parameters
READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,900)DUMTIT READ(LUNMAN,*)TSTART READ(LUNMAN,*)TFAIL1 READ(LUNMAN,*)PIDT READ(LUNMAN,*)HTDPFT READ(LUNMAN,*)GSANG READ(LUNMAN,*)Z1BACK READ(LUNMAN,*)ROCFAC READ(LUNMAN,*)CHOOSE READ(LUNMAN,*)Z1REJECT READ(LUNMAN,*)TTDROD READ(LUNMAN,*)RODFAC READ(LUNMAN,*)HFLARE READ(LUNMAN,*)CORRV READ(LUNMAN,*)VY READ(LUNMAN,*)RECV READ(LUNMAN,*)HMARGIN READ(LUNMAN,*)MCPOEI READ(LUNMAN,*)MAXAEO READ(LUNMAN,*)MAXOEI CLOSE(UNIT=LUNMAN) C----+---+--- C Conversions from input to simulation units
GSANG=GSANG/RTD QROT=QROT/RTD VY=VY/SQRT(SIGMA)/MSTOKN RECV=RECV/SQRT(SIGMA)/MSTOKN Z1BACK=-Z1BACK/MTOFT/60.0D0 Z1REJECT=Z1REJECT/MTOFT/60.0D0
PITCHREQ=PITCHREQ/RTD HMARGIN=HMARGIN/MTOFT HTSTART=RADHT HFLARE=HFLARE/MTOFT HTDPM=HTDPFT/MTOFT GSMAX=100.0D0/MSTOKN WPN=XPOSN WPE=YPOSE WPTRK=FLYTRACK C----+---+--- DO I=1,10 PATR(I)=PATR(I)/RTD PAT1R(I)=PAT1R(I)/RTD PAT2R(I)=PAT2R(I)/RTD RATR(I)=RATR(I)/RTD RAT1R(I)=RAT1R(I)/RTD RAT2R(I)=RAT2R(I)/RTD END DO IREAD=1 END IF C=============================================================================== C Set-up section. C=============================================================================== C Executed at the start of every simulation run.
C
IF(TIME.LT.PTIME)THEN
C New case or re-run.
IFIRST=0 END IF IF(IFIRST.EQ.0)THEN IFIRST=1 DO I=1,10 IFSTC(I)=0 IFSTP(I)=0 IFSTR(I)=0 IFSTY(I)=0 END DO C----+---+--- IREACT=0 ITDP=0 ITER1=0 IMANP=0 IANT=0 IPITCH=0 NSTART=XPOSN ESTART=YPOSE SPOTN=XPOSN SPOTE=YPOSE POWMAX=MAXAEO END IF C=============================================================================== C Manoeuvre progress logic
C=============================================================================== C----+---+--- C Schedule an engine failure
IF((IFAIL1.EQ.0).AND.(TIME.GE.TFAIL1))THEN IFAIL1=1 TQD=MCPOEI POWMAX=MAXOEI HTFAIL1=RADHT WRITE(IOUT,910)TIME,HTFAIL1 910 FORMAT(30X,’+++++++++++++++++++++++++++++++++++++++++’,/, $ 30X,’+ ENGINE FAILURE +’,/, $ 30X,’+ ~~~~~~~~~~~~~~ +’,/, $ 30X,’+ TIME =’,F8.2,’ S +’,/, $ 30X,’+ WHEEL HEIGHT =’,F8.2,’ M +’,/, $ 30X,’+++++++++++++++++++++++++++++++++++++++++’,//) END IF C----+---+--- C Schedule pilot intervention
IF((IREACT.EQ.0).AND.(TIME.GE.(TFAIL1+PIDT)))THEN IREACT=1
TREACT=TIME WRITE(IOUT,920)TIME,RADHT 920 FORMAT(30X,’+++++++++++++++++++++++++++++++++++++++++’,/, $ 30X,’+ PILOT INTERVENTION +’,/, $ 30X,’+ ~~~~~~~~~~~~~~~~~~ +’,/, $ 30X,’+ TIME =’,F8.2,’ S +’,/, $ 30X,’+ WHEEL HEIGHT =’,F8.2,’ M +’,/, $ 30X,’+++++++++++++++++++++++++++++++++++++++++’,//) END IF C----+---+--- C Determine reaching TDP IF(ITDP.EQ.0.AND.RADHT.GE.HTDPM)THEN ITDP=1 TTDP=TIME WRITE(IOUT,930)TIME 930 FORMAT(30X,’+++++++++++++++++++++++++++++++++++++++++’,/, $ 30X,’+ TIME=’,F8.2,’ AT THE TDP +’,/, $ 30X,’+++++++++++++++++++++++++++++++++++++++++’,//) END IF C----+---+--- C Iterate on engine failure time, so that pilot reacts at the TDP
IF(ITER1.EQ.0)THEN IF(IREACT.EQ.1)THEN
C Pilot has reacted to the engine failure
IF(ITDP.EQ.1)THEN
C Passed the TDP
IF(DABS(TREACT-TTDP).GT.(1.5D0*DTIM))THEN
C Reschedule engine failure time and re-run. Small step.
TFAIL1=TFAIL1+DTIM RERUN=.TRUE. ITER1=0
WRITE(IOUT,940)TFAIL1
940 FORMAT(30X,’++++++++++++++++++++++++++++++++++++++++++++’,/, $ 30X,’+ RERUN: NEW ENGINE FAILURE TIME =’,F8.2,’ +’,/, $ 30X,’++++++++++++++++++++++++++++++++++++++++++++’,//) GOTO 9999
ELSE
C Engine failure recognised at the TDP: Continue run
ITER1=1 END IF ELSE
C Not yet at the TDP; see if TDP is reached within 1 second
IF((TIME-TREACT).GT.1.D0)THEN TFAIL1=TFAIL1+1.D0 RERUN=.TRUE. ITER1=0 WRITE(IOUT,940)TFAIL1 GOTO 9999 END IF END IF ELSE
C Pilot has not yet reacted to the engine failure
IF(ITDP.EQ.1)THEN
C At the TDP, but no pilot reaction. Try again, big step.
IF (IFAIL1.EQ.0) THEN TFAIL1=TFAIL1-1.0D0 RERUN=.TRUE. ITER1=0 WRITE(IOUT,940)TFAIL1 GOTO 9999 ELSE
C At the TDP, pilot aware. Try again, small step.
TFAIL1=TFAIL1-DTIM RERUN=.TRUE. ITER1=0 WRITE(IOUT,940)TFAIL1 GOTO 9999 END IF END IF END IF END IF C----+---+---
C End the simulation run if the helicopter reaches Vy and H Call CCAS(CAS) IF(CAS.GE.30/SQRT(SIGMA)/MSTOKN.AND.RADHT.GE.HMARGIN.AND. $VGZ.LT.0.0D0)THEN ENDCASE=.TRUE. END IF C----+---+--- C End the simulation run if the helicopter touches down
IF(RADHT.LE.0.1D0)THEN WRITE(IOUT,950)AUM,TFAIL1,HTFAIL1,TIME,VGZ,NR 950 FORMAT(30X,’+++++++++++++++++++++++++++++++++++++++++’,/, $ 30X,’+ TOUCHDOWN +’,/, $ 30X,’+ ~~~~~~~~~ +’,/, $ 30X,’+ AIRCRAFT MASS =’,F8.2,’ KG +’,/, $ 30X,’+ ENGINE FAILURE HEIGHT =’,F8.2,’ M +’,/, $ 30X,’+ ENGINE FAILURE TIME =’,F8.2,’ S +’,/, $ 30X,’+ TOUCHDOWN TIME =’,F8.2,’ S +’,/, $ 30X,’+ RATE OF DESCENT =’,F8.2,’ M.S-1 +’,/, $ 30X,’+ ROTOR SPEED (NR) =’,F8.2,’ % +’,/, $ 30X,’+++++++++++++++++++++++++++++++++++++++++’,//) ENDCASE=.TRUE. END IF C----+---+--- C Manoeuvre logic tree
C----+---+--- C Start the climb
IF((TIME.GT.TSTART).and.(IMANP.EQ.0)) THEN IMANP=1
C Go for the rejected TO
ELSE IF((IMANP.EQ.1).AND.(CHOOSE.EQ.0).AND.(RADHT.GT.HTDPM) & .OR.IMANP.EQ.2)THEN
IMANP=2
C Go for the continued TO
ELSE IF((IMANP.EQ.1).AND.(CHOOSE.EQ.1).AND.(RADHT.GT.HTDPM) & .OR.IMANP.EQ.3)THEN
IMANP=3 END IF
C----+---+--- C Call specific manoeuvre
C----+---+--- C Initial Hover IF(IMANP.EQ.0)GOTO 1000 C Climb IF(IMANP.EQ.1)GOTO 2000 C RTO IF(IMANP.EQ.2)GOTO 3000 C CTO IF(IMANP.EQ.3)GOTO 4000 GO TO 9999 C=============================================================================== C INITIAL HOVER PHASE
C=============================================================================== C COLLECTIVE CHANNEL LOGIC
1000 CONTINUE IF(IFSTC(1).EQ.0)THEN IFSTC(1)=1 IFLYHT=0 HTREQ=HTSTART Z1D=0.d0 END IF C----+---+--- C Hold constant height
CALL DEMZ1
C----+---+--- C PITCH CHANNEL LOGIC
IF(IFSTP(1).EQ.0)THEN IFSTP(1)=1
NUMPAT=1
THE2R=PAT2R(NUMPAT) THERNU=THETAF+PATR(NUMPAT) THERND=THETAF-PATR(NUMPAT) THEG=THETAF END IF C----+---+--- C ROLL CHANNEL LOGIC
IF(IFSTR(1).EQ.0)THEN IFSTR(1)=1 NUMRAT=1 PHI1R=RAT1R(NUMRAT) PHI2R=RAT2R(NUMRAT) PHIR=RATR(NUMRAT) PHIG=PHIF END IF C----+---+--- C Hover above chosen spot
CALL FLYSPOT
C----+---+--- C YAW CHANNEL LOGIC
IF(IFSTY(1).EQ.0)THEN IFSTY(1)=1 HDGR=TOHDG END IF C----+---+--- C Hold initial heading or perform spot-turn to required heading
CALL PEDALS GOTO 9999 C=============================================================================== C Climb to TDP C=============================================================================== C COLLECTIVE CHANNEL LOGIC
C----+---+---
2000 CONTINUE
IF(IFSTC(2).EQ.0)THEN IFSTC(2)=1
END IF
C Gradually increase demanded vertical speed
IF(Z1BACK.LE.(Z1D-ROCFAC*DTIM))THEN Z1D=Z1D-ROCFAC*DTIM ELSE Z1D=Z1BACK END IF C----+---+--- C Climb or descend at specified rate of climb
CALL DEMZ1
C----+---+--- C PITCH CHANNEL LOGIC
C----+---+--- C Anticipate the TDP IF(TIME.GE.(TFAIL1-2.0D0))THEN IF(IANT.EQ.0)THEN IANT=1 NUMPAT=2 THEG=THETAF-(2.0D0/RTD) THE1R=PAT1R(NUMPAT) THE2R=PAT2R(NUMPAT) END IF C----+---+--- CALL FLYPAT C----+---+--- ELSE IF(IFSTP(2).EQ.0)THEN IFSTP(2)=1 NUMPAT=2 THEG=PATR(NUMPAT) THE1R=PAT1R(NUMPAT) THE2R=PAT2R(NUMPAT)
END IF
UGST=Z1D/DTAN(GSANG)
C
C----+---+--- C Follow the selected trajectory, dependent on z1back
CALL FLYUGS
C----+---+---
END IF
C----+---+--- C ROLL CHANNEL LOGIC
IF(IFSTR(2).EQ.0)THEN IFSTR(2)=1 NUMRAT=2 PHI1R=RAT1R(NUMRAT) PHI2R=RAT2R(NUMRAT) PHIR=RATR(NUMRAT) PHIG=PHIF WPN=XPOSN WPE=YPOSE WPTRK=FLYTRACK END IF C----+---+--- C Hold track CALL FLYTRK C----+---+--- C YAW CHANNEL LOGIC
IF(IFSTY(2).EQ.0)THEN IFSTY(2)=1 HDGR=TOHDG END IF C----+---+--- C Hold heading CALL PEDALS C----+---+--- GOTO 9999 C=============================================================================== C Rejected Take-Off C=============================================================================== C Rotation C----+---+--- C COLLECTIVE CHANNEL LOGIC
3000 CONTINUE CALL CCAS(CAS) IF(IFSTC(3).EQ.0)THEN IFSTC(3)=1 NRGOV=102.0D0 END IF C----+---+--- IF(RADHT.GT.HFLARE)THEN Z1D=TTDROD+(RADHT-1.0D0)*RODFAC IF(Z1D.GT.Z1REJECT)Z1D=Z1REJECT ELSE IF(RADHT.LE.0.66D0)THEN Z1D=1.0D0 ELSE Z1D=TTDROD END IF C----+---+--- C Descend at specified rate of descent
CALL DEMZ1
C----+---+--- C PITCH CHANNEL LOGIC
IF(RADHT.gt.HFLARE)THEN IF(IPITCH.EQ.0)THEN IF(IFSTP(3).EQ.0)THEN IFSTP(3)=1 NUMPAT=3
THEG=PITCHREQ THE1R=PAT1R(NUMPAT) THE2R=PAT2R(NUMPAT) XTDPM=-XCG ZTDPM=-ZCG END IF C----+---+--- C Recover speed after engine failure
CALL FLYPAT C----+---+--- ELSE IF(IFSTP(4).EQ.0)THEN IFSTP(4)=1 NUMPAT=4 THE1R=PAT1R(NUMPAT) THE2R=PAT2R(NUMPAT) THEG=THETAF THERNU=THEG+PATR(NUMPAT) THERND=THEG-PATR(NUMPAT) END IF CASG=VGZ*(CORRV*(XCG/ZCG)+(1-CORRV)*(XTDPM/ZTDPM)) C----+---+--- C Recover pitch-up attitude and trajectory
CALL FLYCAS C----+---+--- END IF IF(IPITCH.EQ.0.AND.THETAF.LE.PATR(3))THEN IPITCH=1 END IF C----+---+--- C TOUCHDOWN ELSE IF(RADHT.LE.0.6D0)THEN THEG=0.0D0 C----+---+--- CALL FLYPAT C----+---+--- ELSE IF(IFSTP(5).EQ.0)THEN IFSTP(5)=1 NUMPAT=5 THEG=0.0d0 THERNU=theg+PATR(NUMPAT) THERND=theg-PATR(NUMPAT) THE1R=PAT1R(NUMPAT) THE2R=PAT2R(NUMPAT) UGST=0.d0 END IF C----+---+--- C Flare CALL FLYUGS C----+---+--- END IF C----+---+--- C ROLL CHANNEL LOGIC
IF(RADHT.GT.1.0D0)THEN IF(IFSTR(3).EQ.0)THEN IFSTR(3)=1 NUMRAT=3 PHI1R=RAT1R(NUMRAT) PHI2R=RAT2R(NUMRAT) PHIR=RATR(NUMRAT) PHIG=PHIF WPN=XPOSN WPE=YPOSE WPTRK=FLYTRACK END IF C----+---+--- C Hold track
CALL FLYTRK C----+---+--- ELSE IF(IFSTR(5).EQ.0)THEN IFSTR(5)=1 NUMRAT=5 PHI1R=RAT1R(NUMRAT) PHI2R=RAT2R(NUMRAT) PHIR=RATR(NUMRAT) PHIG=0.d0 END IF C----+---+--- C Prepare for the touchdown
CALL FLYROL
C----+---+---
END IF
C----+---+--- C YAW CHANNEL LOGIC
IF(IFSTY(3).EQ.0)THEN IFSTY(3)=1 HDGR=FLYTRACK END IF C----+---+--- C Hold heading CALL PEDALS C----+---+--- GOTO 9999 C=============================================================================== C Continued Take-Off C=============================================================================== C COLLECTIVE CHANNEL LOGIC
4000 CONTINUE IF(IFSTC(4).EQ.0)THEN IFSTC(4)=1 NRD=102.D0 NRGOV=102.D0 END IF C----+---+--- C Set and hold specified torque or NR
IF(NR.GE.95.d0)CALL SETTQ IF(NR.LT.95.d0)CALL DEMNR
C----+---+--- C PITCH CHANNEL LOGIC
IF(IFSTP(6).EQ.0)THEN IFSTP(6)=1 NUMPAT=6 THERNU=THETAF+PATR(NUMPAT) THERND=THETAF-PATR(NUMPAT) THE1R=PAT1R(NUMPAT) THE2R=PAT2R(NUMPAT) CASG=VY END IF C----+---+--- C Acquire and hold specified speed
IF(CAS.GE.RECV)THEN C----+---+--- CALL FLYCAS C----+---+--- ELSE C----+---+--- C Fly to demanded pitch attitude
THEG=QROT C----+---+--- CALL FLYPAT C----+---+--- END IF
C----+---+--- C ROLL CHANNEL LOGIC
IF(IFSTR(6).EQ.0)THEN IFSTR(6)=1 NUMRAT=6 PHI1R=RAT1R(NUMRAT) PHI2R=RAT2R(NUMRAT) PHIR=RATR(NUMRAT) PHIG=PHIF WPN=XPOSN WPE=YPOSE WPTRK=FLYTRACK END IF C----+---+--- C Fly along specified fly-away track
CALL FLYTRK
C----+---+--- C YAW CHANNEL LOGIC
IF(IFSTY(4).EQ.0)THEN IFSTY(4)=1 HDGR=FLYTRACK END IF C----+---+--- C Hold heading CALL PEDALS C----+---+--- GOTO 9999 C----+---+--- 9999 CONTINUE WRITE(99,10100)TIME,UGS,BARALT,CASG,CAS,HDG,TFAIL1 & ,PHIF*RTD,THETAF*RTD & ,ETACP*100.D0,(0.5D0-ETAFP/2.D0)*100.d0 & ,(ETALP/2.D0+0.5D0)*100.D0 & ,(0.5D0-ETARP/2.D0)*100.D0 PTIME=TIME RETURN C=============================================================================== C Format statements C=============================================================================== 900 FORMAT (A)
10000 FORMAT(’ time ugs baralt casg cas hdg & tfail phi theta deltcol deltlong deltlat &ped ’,/,’ sec m/sec m m/sec m/sec & deg deg deg deg % % % & %’)
10100 FORMAT(F7.3,12(:,1X,F9.2))
C===============================================================================