Issues encountered in simulating tire blowouts and landing gear structural damage caused by a hard landing

  • Hello everyone, I’ve recently been trying to create a hydraulic system for aircraft in Aerofly FS. The work is going very smoothly, especially with the B777 — I’ve even implemented control surface droop when hydraulics fail on the ground, like this:

    I even created different operating conditions for each spoiler under various hydraulic failure scenarios — Spoilers 4 and 11, Rudder and HorizontalStabilizer even have mechanical backups.

    I’ve also created failure scenarios for the thrust reverser and brakes. However, for brake failure, I need to make the central hydraulic system fail — it’s connected to the RAT and both engines, so it’s quite difficult to trigger a failure. That’s why I’m currently experimenting with tire blowouts and landing gear structural damage caused by hard landings, leading to hydraulic fluid leaks and subsequent hydraulic failure. But I’ve run into a few issues.

    This code will cause a crash!(The aircraft was loaded as Stop-cube)↓

    In the RAT code, I simply took the signal obtained from continuous comparison using logic_greater and applied a signal delay with logic_confirm_delay; when the speed is too low or after landing, the RAT signal gradually disappears.

    I'm wondering if there's any way to create an output that detects the landing rate? 🤔 GroundRollXXXXXLoad plus vertical speed? That's my current thought process. When the descent rate reaches -850 ft/min, and combined with the GroundRollXxxLoad.Output signal, and then I find a way to latch the signal. This way, even if a go-around is performed, the hydraulic fluid leak caused by landing gear damage will still occur

    If I can resolve the problems, I’ll upload this mod to the forum, including versions for both FSG and FS4.

    • Best Answer
    • Official Post

    When ever you see a red stop box you can find the reason for that in the tm.log file. So what error messages does the tm.log file tell you after loading the aircraft?

    Swap Input0 and Input1 so that the logic activates only when the sinkrate is even more negative than -850ft/min:

    Code
                 <[logic_greater][GearsUltimateLoad][]
                    <[string8][Input0][InertialReferenceSystem.OutputVerticalVelocity]>
                    <[string8][Input1][-4.32]>
                >

    Both state_frozen should be initialized with value 0 - so that your gear is not damaged at the start of the simulation.
    Instead of the state_frozen I'd use an event_edge_rising and a variable to store the persistent value. So... replace <[state_frozen][LeftGearsUltimateLoad][] with an event_edge_rising (same for right gear) and then replace <[logic_or][GearDamage][] with a variable. Something like this:

    GroundRollLoadLeft and right are not "binary" values yet, they are forces in Newtons. This only works because internally the logic_and just checks for > 0.5 - in this case that is Newtons of force, so for just 0.5N your ultimate load condition is already triggered. Use a logic_greater for them as well to increase the threshold to more reasonable forces for an ultimate gear load.

    Instead of sinkrate I'd just use the gear damper joint displacement and the sum of all wheel loads per gear. With a bit of trial and error you'll find a value that corresponds to 850ft/min at max landing weight. This will automatically make the gear more robust when the aircraft is lighter and break earlier when the aircraft is overweight for landing. This automatically simulates additional loads when the aircraft touches down on just one gear or when additional roll-rate increases the loads. You cannot simulate the real stress in the gear just from the sinkrate or g-load on the fuselage.

    Regards,
    Jan

  • When ever you see a red stop box you can find the reason for that in the tm.log file. So what error messages does the tm.log file tell you after loading the aircraft?

    Swap Input0 and Input1 so that the logic activates only when the sinkrate is even more negative than -850ft/min:

    Code
                 <[logic_greater][GearsUltimateLoad][]
                    <[string8][Input0][InertialReferenceSystem.OutputVerticalVelocity]>
                    <[string8][Input1][-4.32]>
                >

    Both state_frozen should be initialized with value 0 - so that your gear is not damaged at the start of the simulation.
    Instead of the state_frozen I'd use an event_edge_rising and a variable to store the persistent value. So... replace <[state_frozen][LeftGearsUltimateLoad][] with an event_edge_rising (same for right gear) and then replace <[logic_or][GearDamage][] with a variable. Something like this:

    GroundRollLoadLeft and right are not "binary" values yet, they are forces in Newtons. This only works because internally the logic_and just checks for > 0.5 - in this case that is Newtons of force, so for just 0.5N your ultimate load condition is already triggered. Use a logic_greater for them as well to increase the threshold to more reasonable forces for an ultimate gear load.

    Instead of sinkrate I'd just use the gear damper joint displacement and the sum of all wheel loads per gear. With a bit of trial and error you'll find a value that corresponds to 850ft/min at max landing weight. This will automatically make the gear more robust when the aircraft is lighter and break earlier when the aircraft is overweight for landing. This automatically simulates additional loads when the aircraft touches down on just one gear or when additional roll-rate increases the loads. You cannot simulate the real stress in the gear just from the sinkrate or g-load on the fuselage.

    Thank you^^. I tried adding the code myself, and what you said about the wheel load unit being Newtons was very helpful to me. Currently, I've set the landing gear damage condition for the B777-300ER at -1400 ft/min under MLW conditions. I may lower it a bit later. The current threshold is 820,000.0