import%20marimo%0A%0A__generated_with%20%3D%20%220.16.0%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%20Ground%20Effect%20Models%0A%0A%20%20%20%20In%20the%20%5BLanding%20-%20Ground%20Effect%2C%20Flare%20-%20JSBSim%5D(https%3A%2F%2Fseanmcleod70.github.io%2F2018%2F02%2Flanding-ground-effect-flare-jsbsim%2F)%0A%20%20%20%20writeup%20the%20influence%20of%20ground%20effect%20was%20analyzed%20using%20the%20737%20aircraft%20model%20from%20the%20JSBSim%20repo%20during%20landing.%0A%0A%20%20%20%20In%20this%20write%20up%20we'll%20take%20a%20look%20at%20how%20the%20ground%20effect%20is%20modelled%20by%20JSBSim's%20737%20model%2C%20by%20Boeing%20for%20a%20%0A%20%20%20%20B747-100%20simulator%20and%20also%20by%20Airbus%20for%20a%20generic%20civil%20transport%20aircraft%20and%20then%20compare%20the%20three%20ground%20effect%20models.%0A%0A%20%20%20%20%23%23%20Background%0A%0A%20%20%20%20%3E%20Ground%20effects%20may%20be%20explained%20by%20the%20interaction%20%20of%20the%20aircraft%20wingtip%20vortices%20with%20the%20ground.%0A%20%20%20%20%3E%20This%20interaction%20reduces%20the%20strength%20of%20these%20vortices.%20The%20%20weakened%20wingtip%20vortices%20reduce%20the%20wing%0A%20%20%20%20%3E%20downwash%20which%20increases%20the%20lift%20and%20decreases%20the%20induced%20drag%2C%20or%20drag%20caused%20by%20lift.%0A%20%20%20%20%3E%20In%20addition%2C%20the%20reduced%20downwash%20at%20the%20wing%20trailing%20edge%20increases%20the%20angle%20of%20attack%20%20of%20the%20relative%0A%20%20%20%20%3E%20wind%20at%20the%20elevator%2C%20resulting%20in%20a%20nose%20down%20pitching%20moment.%20In%20a%20fundamental%20sense%2C%20the%20%20change%20in%0A%20%20%20%20%3E%20downwash%20near%20the%20ground%20results%20in%20a%20different%20pressure%20distribution%20over%20the%20wing%2C%20tail%2C%20and%20fuselage.%0A%20%20%20%20%3E%20This%20distribution%20alters%20the%20aircraft%20aerodynamic%20forces%20and%20moments.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20jsbsim737_kCDge_data%2C%0A%20%20%20%20jsbsim737_kCLge_data%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_generic_xy%2C%0A%20%20%20%20plot_jsbsim_CD_scaling%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%23%20JSBSim%20Model%0A%0A%20%20%20%20The%20JSBSim%20737%20model%20includes%20a%20scale%20factor%20for%20lift%20and%20drag%20based%20on%20%24h%2Fb%24%20(height%2Fwingspan)%20to%20model%20ground%20%0A%20%20%20%20effect.%20There%20is%20no%20ground%20effect%20modelling%20for%20the%20change%20in%20the%20pitch%20moment.%0A%0A%20%20%20%20%23%23%23%20Lift%0A%0A%20%20%20%20The%20%24kC_%7B%7BL_%7B%7Bge%7D%7D%7D%7D%24%20ground%20efect%20scale%20factor%20is%20independent%20of%20flap%20configuration%20and%20also%20independent%20of%20angle%20of%20attack%20(%24%5Calpha%24).%0A%0A%20%20%20%20%7Bplot_generic_xy(jsbsim737_kCLge_data%5B%3A%2C0%5D%2C%20jsbsim737_kCLge_data%5B%3A%2C1%5D%2C%20'JSBSim%20737%20%24kC_%7BL_%7Bge%7D%7D%24'%2C%20'%24h%2Fb%24'%2C%20'%24kC_%7BL_%7Bge%7D%7D%24'%2C%20'Figure%201')%7D%0A%0A%20%20%20%20%23%23%23%20Drag%0A%0A%20%20%20%20The%20%24kC_%7B%7BD_%7B%7Bge%7D%7D%7D%7D%24%20ground%20effect%20scale%20factor%20is%20applied%20to%20the%20induced%20drag%20component%20of%20the%20737's%20drag%20model%20%0A%20%20%20%20where%20the%20induced%20drag%20is%20proportional%20to%20%24%7B%7BC_L%7D%7D%5E2%24.%20The%20%24kC_%7B%7BD_%7B%7Bge%7D%7D%7D%7D%24%20ground%20efect%20scale%20factor%20is%20%0A%20%20%20%20independent%20of%20flap%20configuration%20and%20also%20independent%20of%20angle%20of%20attack%20(%24%5Calpha%24).%0A%0A%20%20%20%20%7Bplot_generic_xy(jsbsim737_kCDge_data%5B%3A%2C0%5D%2C%20jsbsim737_kCDge_data%5B%3A%2C1%5D%2C%20'JSBSim%20737%20%24kC_%7BD_%7Bge%7D%7D%24'%2C%20'%24h%2Fb%24'%2C%20'%24kC_%7BD_%7Bge%7D%7D%24'%2C%20'Figure%202')%7D%0A%0A%20%20%20%20The%20extra%20complication%20is%20that%20in%20ground%20effect%20the%20lift%20is%20increased%20via%20the%20%24kC_%7B%7BL_%7B%7Bge%7D%7D%7D%7D%24%20scale%20factor%2C%20which%20%0A%20%20%20%20means%20%24%7B%7BC_L%7D%7D%5E2%24%20increases%20which%20then%20increases%20the%20induced%20drag.%20However%20the%20net%20drag%20needs%20to%20be%20reduced%20in%20ground%0A%20%20%20%20effect%20which%20means%20the%20%24kC_%7B%7BD_%7B%7Bge%7D%7D%7D%7D%24%20scale%20factor%20needs%20to%20undo%20the%20increase%20in%20induced%20drag%20due%20to%20the%20increase%20in%0A%20%20%20%20lift%20in%20ground%20effect%2C%20and%20then%20reduce%20it%20further%20in%20order%20to%20have%20a%20net%20reduction%20in%20drag%20in%20ground%20effect.%0A%0A%20%20%20%20%7Bplot_jsbsim_CD_scaling('Figure%203')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%20NASA%2FBoeing%20747-100%20Simulator%20Model%0A%0A%20%20%20%20Boeing%20were%20contracted%20by%20NASA%20in%201970%20to%20provide%20NASA-Ames%20Research%20Center%20with%20mathematical%20models%20and%20data%20to%20simulate%20the%20flying%20qualities%20and%20characteristics%20of%20the%20Boeing%20747%20on%20the%20NASA%20Flight%20Simulator%20for%20Advanced%20Aircraft%20(FSAA).%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Lift%0A%0A%20%20%20%20%24%5CDelta%20C_%7BL_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20K%5EB_%7BGE%7D%20%5Cspace%20%5CDelta%20C_%7BL_%7BGE%7D%7D%24%0A%0A%20%20%20%20The%20change%20in%20lift%20due%20to%20ground%20effect%20is%20modelled%20as%20an%20increment%20in%20the%20lift%20coefficient%20based%20on%20a%20scaling%0A%20%20%20%20factor%20%24K%5EB_%7BGE%7D%24%20which%20varies%20between%200%20and%201%20depending%20on%20the%20height%20of%20the%20gear%20above%20ground.%20The%20%24%5CDelta%20C_%7BL_%7BGE%7D%7D%24%0A%20%20%20%20factor%20is%20defined%20as%20an%20increment%20in%20%24C_L%24%20based%20on%20a%20particular%20flap%20configuration%20and%20versus%20%24%5Calpha%24.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20The%20basic%20%24C_L%24%20versus%20%24%5Calpha%24%20for%20low%20speed%20for%20different%20flap%20configurations%2C%20to%20which%20the%20%24%5CDelta%20C_L%24%20due%20to%20%0A%20%20%20%20ground%20effect%20will%20be%20added.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCLBasic.png%22%2C%20width%3D600%2C%20caption%3D'Figure%204')%7D%0A%0A%20%20%20%20Ground%20effect%20height%20factor%2C%20%24K%5EB_%7B%7BGE%7D%7D%24%20based%20on%20gear%20height%20above%20ground.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FKBGE.png%22%2C%20width%3D600%2C%20caption%3D'Figure%205')%7D%0A%0A%20%20%20%20The%20%24%5CDelta%20C_%7B%7BL_%7B%7BGE%7D%7D%7D%7D%24%20versus%20%24%5Calpha%24%20for%20different%20flap%20configurations.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FDeltaCLGE.png%22%2C%20width%3D600%2C%20caption%3D'Figure%206')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_CL_groundeffect%2C%0A%20%20%20%20plot_CL_groundeffect_AOA%2C%0A%20%20%20%20plot_K_B_GE%2C%0A%20%20%20%20plot_basic_CL%2C%0A%20%20%20%20plot_delta_CL%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%5BEngauge%20Digitizer%5D(https%3A%2F%2Fengauge-digitizer.software.informer.com%2F)%20was%20used%20to%20digitize%20the%20plots%20from%20the%20NASA%20report.%0A%0A%20%20%20%20The%20take-off%20flap%20settings%20for%20the%20747%20are%20flaps%2010%20or%20flaps%2020%20and%20the%20landing%20flap%20options%20are%20flaps%2025%20or%20flaps%2030.%0A%0A%20%20%20%20%7Bplot_basic_CL('Figure%207')%7D%0A%0A%20%20%20%20%7Bplot_K_B_GE('Figure%208')%7D%0A%0A%20%20%20%20%7Bplot_delta_CL('Figure%209')%7D%0A%0A%20%20%20%20So%20combining%20%24K%5EB_%7B%7BGE%7D%7D%24%20and%20%24%5CDelta%20C_%7B%7BL_%7B%7BGE%7D%7D%7D%7D%24%20for%20the%20flaps%2030%20landing%20configuration%20we%20can%20see%20the%20increase%20in%20%0A%20%20%20%20the%20%24C_L%24%20versus%20%24%5Calpha%24%20curves%20for%20varying%20values%20of%20%24h%2Fb%24.%0A%0A%20%20%20%20%7Bplot_CL_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_L%24%20vs%20AoA'%2C%20'%24C_L%24'%2C%20'Figure%2010'%2C%20scaled_version%3DFalse)%7D%0A%0A%20%20%20%20%7Bplot_CL_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_L%24%20vs%20AoA'%2C%20'%24C_L%24'%2C%20'Figure%2011'%2C%20scaled_version%3DFalse%2C%20xlim%3D(-1%2C%2016))%7D%0A%0A%20%20%20%20Plotting%20the%20results%20as%20a%20scale%20factor.%20%0A%0A%20%20%20%20%7Bplot_CL_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_L%24%20scaling%20vs%20AoA%20for%20flaps%2030'%2C%20'Scale%20Factor'%2C%20'Figure%2012'%2C%20scaled_version%3DTrue)%7D%0A%0A%20%20%20%20Lastly%20for%20a%20set%20of%20fixed%20%24%5Calpha%24%20values%20a%20plot%20of%20the%20%24C_L%24%20scaling%20factor%20versus%20%24h%2Fb%24%20for%20a%20flaps%2030%20configuration.%0A%0A%20%20%20%20%7Bplot_CL_groundeffect_AOA(30%2C%20%5B0%2C%205%2C%2010%2C%2014.5%5D%2C%20'%24C_L%24%20Scaling%20vs%20%24h%2Fb%24%20for%20flaps%2030'%2C%20'Figure%2013')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Drag%0A%0A%20%20%20%20%24%5CDelta%20C_%7BD_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20K%5EA_%7BGE%7D%20%5Cspace%20%5CDelta%20C_%7BD_%7BGE%7D%7D%24%0A%0A%20%20%20%20The%20change%20in%20drag%20due%20to%20ground%20effect%20takes%20the%20same%20form%20as%20the%20change%20in%20lift%20due%20to%20ground%20effect%2C%20i.e.%20%0A%20%20%20%20a%20change%20in%20the%20drag%20coefficient%20based%20on%20a%20scaling%20factor%20%24K%5EA_%7BGE%7D%24%20which%20varies%20between%200%20and%201%20depending%0A%20%20%20%20on%20the%20height%20of%20the%20gear%20above%20ground.%20The%20%24%5CDelta%20C_%7BD_%7BGE%7D%7D%24%20factor%20is%20defined%20as%20a%20decrement%20in%20%24C_D%24%20based%0A%20%20%20%20on%20a%20particular%20flap%20configuration%20and%20versus%20%24%5Calpha%24.%20Note%20that%20the%20scaling%20factor%20%24K%5EA_%7BGE%7D%24%20for%20drag%20is%20different%0A%20%20%20%20to%20the%20one%20used%20for%20lift%2C%20%24K%5EB_%7BGE%7D%24.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20The%20basic%20%24C_D%24%20versus%20%24%5Calpha%24%20for%20low%20speed%20for%20different%20flap%20configurations%2C%20to%20which%20the%20%24%5CDelta%20C_D%24%20due%20to%20%0A%20%20%20%20ground%20effect%20will%20be%20added.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCDBasic.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2014')%7D%0A%0A%20%20%20%20Ground%20effect%20height%20factor%2C%20%24K%5EA_%7B%7BGE%7D%7D%24%20based%20on%20gear%20height%20above%20ground.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FKAGE.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2015')%7D%0A%0A%20%20%20%20The%20%24%5CDelta%20C_%7B%7BD_%7B%7BGE%7D%7D%7D%7D%24%20versus%20%24%5Calpha%24%20for%20different%20flap%20configurations.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FDeltaCDGE.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2016')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_CD_groundeffect%2C%0A%20%20%20%20plot_CD_groundeffect_AOA%2C%0A%20%20%20%20plot_K_A_GE%2C%0A%20%20%20%20plot_basic_CD%2C%0A%20%20%20%20plot_delta_CD%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20Digitized%20plots.%0A%0A%20%20%20%20%7Bplot_basic_CD('Figure%2017')%7D%0A%0A%20%20%20%20%7Bplot_K_A_GE('Figure%2018')%7D%0A%0A%20%20%20%20%7Bplot_delta_CD('Figure%2019')%7D%0A%0A%20%20%20%20So%20combining%20%24K%5EA_%7B%7BGE%7D%7D%24%20and%20%24%5CDelta%20C_%7B%7BD_%7B%7BGE%7D%7D%7D%7D%24%20for%20the%20flaps%2030%20landing%20configuration%20we%20can%20see%20the%20decrease%20in%20%0A%20%20%20%20the%20%24C_D%24%20versus%20%24%5Calpha%24%20curves%20for%20varying%20values%20of%20%24h%2Fb%24.%0A%0A%20%20%20%20%7Bplot_CD_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_D%24%20vs%20AoA'%2C%20'%24C_D%24'%2C%20'Figure%2020'%2C%20scaled_version%3DFalse)%7D%0A%0A%20%20%20%20%7Bplot_CD_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_D%24%20vs%20AoA'%2C%20'%24C_D%24'%2C%20'Figure%2021'%2C%20scaled_version%3DFalse%2C%20xlim%3D(-1%2C%2016))%7D%0A%0A%20%20%20%20Plotting%20the%20results%20as%20a%20scale%20factor.%20%0A%0A%20%20%20%20%7Bplot_CD_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_D%24%20scaling%20vs%20AoA%20for%20flaps%2030'%2C%20'Scale%20Factor'%2C%20'Figure%2022'%2C%20scaled_version%3DTrue)%7D%0A%0A%20%20%20%20Lastly%20for%20a%20set%20of%20fixed%20%24%5Calpha%24%20values%20a%20plot%20of%20the%20%24C_D%24%20scaling%20factor%20versus%20%24h%2Fb%24%20for%20a%20flaps%2030%20configuration.%0A%0A%20%20%20%20%7Bplot_CD_groundeffect_AOA(30%2C%20%5B0%2C%205%2C%2010%2C%2014.5%5D%2C%20'%24C_D%24%20Scaling%20vs%20%24h%2Fb%24%20for%20flaps%2030'%2C%20'Figure%2023')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Pitching%20Moment%0A%0A%20%20%20%20%24%5CDelta%20C_%7Bm_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20K%5EB_%7BGE%7D%20%5Cspace%20%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%0A%0A%20%20%20%20The%20change%20in%20pitching%20moment%20due%20to%20ground%20effect%20takes%20the%20same%20form%20as%20the%20change%20in%20lift%20and%20drag%20due%20to%20%0A%20%20%20%20ground%20effect%2C%20i.e.%20a%20change%20in%20the%20pitching%20moment%20coefficient%20based%20on%20a%20scaling%20factor%20%24K%5EB_%7BGE%7D%24%20which%20varies%20%0A%20%20%20%20between%200%20and%201%20depending%20on%20the%20height%20of%20the%20gear%20above%20ground.%20The%20%24%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20factor%20is%20defined%20as%20a%20%0A%20%20%20%20delta%20in%20%24C_m%24%20based%20on%20a%20particular%20flap%20configuration%20and%20versus%20%24%5Calpha%24.%20Note%20that%20the%20scaling%20factor%20%24K%5EB_%7BGE%7D%24%20%0A%20%20%20%20used%20for%20the%20pitching%20moment%20is%20the%20same%20one%20as%20used%20for%20lift.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20The%20basic%20%24C_m%24%20versus%20%24%5Calpha%24%20for%20low%20speed%20for%20different%20flap%20configurations%2C%20to%20which%20the%20%24%5CDelta%20C_m%24%20due%20to%20%0A%20%20%20%20ground%20effect%20will%20be%20added.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCMBasic1.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2024')%7D%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FCMBasic2.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2025')%7D%0A%0A%20%20%20%20Ground%20effect%20height%20factor%2C%20%24K%5EB_%7B%7BGE%7D%7D%24%20based%20on%20gear%20height%20above%20ground.%20Same%20one%20used%20for%20lift.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FKBGE.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2026')%7D%0A%0A%20%20%20%20The%20%24%5CDelta%20C_%7B%7Bm_%7B%7BGE%7D%7D%7D%7D%24%20versus%20%24%5Calpha%24%20for%20different%20flap%20configurations.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FDeltaCMGE.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2027')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_CM_groundeffect%2C%0A%20%20%20%20plot_CM_groundeffect_AOA%2C%0A%20%20%20%20plot_K_B_GE%2C%0A%20%20%20%20plot_basic_CM%2C%0A%20%20%20%20plot_delta_CM%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20Digitized%20plots.%0A%0A%20%20%20%20%7Bplot_basic_CM('Figure%2028')%7D%0A%0A%20%20%20%20%7Bplot_K_B_GE('Figure%2029')%7D%0A%0A%20%20%20%20%7Bplot_delta_CM('Figure%2030')%7D%0A%0A%20%20%20%20So%20combining%20%24K%5EB_%7B%7BGE%7D%7D%24%20and%20%24%5CDelta%20C_%7B%7Bm_%7B%7BGE%7D%7D%7D%7D%24%20for%20the%20flaps%2030%20landing%20configuration%20we%20can%20see%20the%20change%20in%20%0A%20%20%20%20the%20%24C_m%24%20versus%20%24%5Calpha%24%20curves%20for%20varying%20values%20of%20%24h%2Fb%24.%0A%0A%20%20%20%20%7Bplot_CM_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_m%24%20vs%20AoA'%2C%20'%24C_m%24'%2C%20'Figure%2031'%2C%20scaled_version%3DFalse)%7D%0A%0A%20%20%20%20%7Bplot_CM_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_m%24%20vs%20AoA'%2C%20'%24C_m%24'%2C%20'Figure%2032'%2C%20scaled_version%3DFalse%2C%20xlim%3D(-1%2C%2016))%7D%0A%0A%20%20%20%20Plotting%20the%20results%20as%20a%20scale%20factor.%20%0A%0A%20%20%20%20%7Bplot_CM_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_m%24%20scaling%20vs%20AoA%20for%20flaps%2030'%2C%20'Scale%20Factor'%2C%20'Figure%2033'%2C%20scaled_version%3DTrue)%7D%0A%0A%20%20%20%20Lastly%20for%20a%20set%20of%20fixed%20%24%5Calpha%24%20values%20a%20plot%20of%20the%20%24C_m%24%20scaling%20factor%20versus%20%24h%2Fb%24%20for%20a%20flaps%2030%20configuration.%0A%0A%20%20%20%20%7Bplot_CM_groundeffect_AOA(30%2C%20%5B0%2C%205%2C%2010%2C%2014.5%5D%2C%20'%24C_m%24%20Scaling%20vs%20%24h%2Fb%24%20for%20flaps%2030'%2C%20'Figure%2034')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%20Airbus%20Generic%20Civil%20Transport%20Model%0A%0A%20%20%20%20In%202016%20ONERA%20and%20Airbus%20proposed%20%5BA%20Civilian%20Aircraft%20Landing%20Challenge%5D(https%3A%2F%2Fw3.onera.fr%2Fsmac%2Fsites%2Fdefault%2Ffiles%2F2024-01%2FCALC_v2.pdf)%3A%0A%0A%20%20%20%20%3E%20the%20final%20approach%20and%20landing%20phases%20still%20remain%20critical%20in%20poor%20visibility%20and%20strong%20wind%20conditions.%20Based%20on%20a%20realistic%20nonlinear%20model%20of%20a%20civil%20transport%20aircraft%20in%20full%20configuration%2C%20the%20objective%20of%20the%20proposed%20challenge%20is%20to%20design%20an%20autopilot%20system%20to%20enable%20a%20correct%20landing%20despite%20parametric%20variations%20and%20**maximized%20cross%20wind**%20conditions.%0A%0A%20%20%20%20Included%20in%20the%20model%20is%20a%20ground%20effect%20model%2C%20modelling%20the%20change%20in%20%24C_L%24%20and%20%24C_m%24%2C%20but%20no%20modelling%20of%20the%20change%0A%20%20%20%20in%20%24C_D%24.%0A%0A%20%20%20%20The%20model%20is%20for%20a%20single%20'full%20configuration'%20for%20landing%2C%20so%20unlike%20the%20747%20model%20there%20isn't%20data%20for%20different%0A%20%20%20%20flap%20configurations.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Lift%0A%0A%20%20%20%20%24%5CDelta%20C_%7BL_%7BGround%20%5Cspace%20Effect%7D%7D%20%3D%20C_%7BL_%7BH%7D%7D%20e%5E%7B-%20%5Clambda_L%20H_%7BLG%7D%7D%24%0A%0A%20%20%20%20%24C_%7BL_%7BH%7D%7D%20%3D%200.20%24%20%0A%0A%20%20%20%20%24%5Clambda_L%20%3D%200.12%24%0A%0A%20%20%20%20%24H_%7BLG%7D%24%20-%20Landing%20gear%20height%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20plot_airbus_delta_CL)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20Assuming%20a%20wingspan%20of%20%24b%20%3D%2060.3m%24%20based%20on%20an%20A330.%0A%0A%20%20%20%20%7Bplot_airbus_delta_CL('Figure%2035')%7D%0A%0A%20%20%20%20The%20lift%20is%20modelled%20only%20over%20the%20linear%20portion%20of%20the%20%24C_L%24%20versus%20%24%5Calpha%24%20curve%20with%3A%0A%0A%20%20%20%20%24C_%7B%7BL_%7B%7B0%7D%7D%7D%7D%20%3D%200.90%24%0A%0A%20%20%20%20%24C_%7B%7BL_%7B%7B%5Calpha%7D%7D%7D%7D%20%3D%205.5%24%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_airbus_lift_plus_delta_ge%2C%0A%20%20%20%20plot_airbus_lift_scaling%2C%0A%20%20%20%20plot_airbus_lift_scaling_vs_hb%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%7Bplot_airbus_lift_plus_delta_ge('Figure%2036')%7D%0A%0A%20%20%20%20%7Bplot_airbus_lift_scaling('Figure%2037')%7D%0A%0A%20%20%20%20%7Bplot_airbus_lift_scaling_vs_hb('Figure%2038')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%23%20Pitching%20Moment%0A%0A%20%20%20%20%24%5CDelta%20C_%7Bm_%7BGroundEffect%7D%7D%20%3D%20(C_%7Bm_%7BH_%7B0%7D%7D%7D%20%2B%20C_%7Bm_%7BH_%7B%5Calpha%7D%7D%7D%20%5Calpha)%20e%5E%7B-%20%5Clambda_m%20H_%7BLG%7D%7D%24%0A%0A%20%20%20%20%24C_%7Bm_%7BH_%7B0%7D%7D%7D%20%3D%20-0.09%24%0A%0A%20%20%20%20%24C_%7Bm_%7BH_%7B%5Calpha%7D%7D%7D%20%3D%20-0.9%24%0A%0A%20%20%20%20%24%5Clambda_m%20%3D%200.15%24%0A%0A%20%20%20%20%24H_%7BLG%7D%24%20-%20Landing%20gear%20height%0A%0A%20%20%20%20The%20basic%20pitch%20moment%20is%20modelled%20by%3A%0A%0A%20%20%20%20%24C_m%20%3D%20C_%7Bm_%7B0%7D%7D%20%2B%20C_%7Bm_%7B%5Calpha%7D%7D%20%5Calpha%24%0A%0A%20%20%20%20%24C_%7Bm_%7B0%7D%7D%20%3D%20-0.3%24%0A%0A%20%20%20%20%24C_%7Bm_%7B%5Calpha%7D%7D%20%3D%20-1.5%24%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_airbus_Cm_scaling_vs_hb%2C%0A%20%20%20%20plot_airbus_basic_cm%2C%0A%20%20%20%20plot_airbus_delta_Cm%2C%0A%20%20%20%20plot_airbus_delta_Cm_alpha%2C%0A%20%20%20%20plot_airbus_net_Cm%2C%0A%20%20%20%20plot_airbus_net_Cm_scaling%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%7Bplot_airbus_basic_cm('Figure%2039')%7D%0A%0A%20%20%20%20%7Bplot_airbus_delta_Cm('Figure%2040')%7D%0A%0A%20%20%20%20%7Bplot_airbus_delta_Cm_alpha('Figure%2041')%7D%0A%0A%20%20%20%20%7Bplot_airbus_net_Cm('Figure%2042')%7D%0A%0A%20%20%20%20%7Bplot_airbus_net_Cm_scaling('Figure%2043')%7D%0A%0A%20%20%20%20%7Bplot_airbus_Cm_scaling_vs_hb('Figure%2044')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%20Summary%0A%0A%20%20%20%20Ground%20effect%20models%20need%20to%20model%20the%20change%20in%20lift%2C%20drag%20and%20pitching%20moment%20as%20the%20aircraft%20transitions%20through%0A%20%20%20%20the%20ground%20effect%20zone%2C%20typically%20when%20the%20aircraft's%20AGL%20is%20within%20a%20wingspan%20of%20the%20aircraft.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plot_CL_groundeffect%2C%0A%20%20%20%20plot_cl_comparison%2C%0A%20%20%20%20plot_cl_comparison_jsbsim_airbus%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%23%23%20Lift%0A%0A%20%20%20%20At%20moderate%20angles%20of%20attack%20the%20lift%20is%20increased%20when%20in%20ground%20effect%20for%20the%20same%20angle%20of%20attack.%0A%0A%20%20%20%20However%20the%20critical%2Fstall%20AoA%20is%20reduced%20in%20ground%20effect%2C%20and%20for%20**some**%20aircraft%20the%20maximum%20lift%20coefficient%0A%20%20%20%20is%20also%20reduced.%0A%0A%20%20%20%20%3E%20The%20NTSB%20found%20that%20contradictory%20information%20existed%20in%20technical%20literature%20about%20the%20%0A%20%20%20%20maximum%20lift%20coefficient%20for%20airplanes%20in%20ground%20effect.%20Some%20sources%20indicated%20that%20the%20%0A%20%20%20%20maximum%20lift%20coefficient%20in%20ground%20effect%20was%20similar%20to%20that%20in%20free%20air%20(as%20apparently%20assumed%20%0A%20%20%20%20by%20FTE1)%2C106%20whereas%20other%20sources%20indicated%20that%20the%20maximum%20lift%20coefficient%20would%20be%20reduced%20%0A%20%20%20%20in%20ground%20effect.%20The%20NTSB%20determined%2C%20through%20conversations%20with%20Gulfstream%2C%20other%20%0A%20%20%20%20manufacturers%2C%20and%20the%20FAA%2C%20that%20the%20potential%20for%20the%20maximum%20lift%20coefficient%20in%20ground%20effect%20%0A%20%20%20%20to%20be%20reduced%20might%20not%20be%20recognized%20industry-wide.%20Given%20the%20results%20of%20Gulfstream%E2%80%9Fs%20CFD%20%0A%20%20%20%20analysis%20and%20the%20findings%20of%20this%20accident%20investigation%2C%20it%20is%20clear%20that%20the%20maximum%20lift%20%0A%20%20%20%20coefficient%20for%20at%20least%20some%20airplanes%20could%20be%20reduced%20in%20ground%20effect%20and%20that%20assumptions%20to%20%0A%20%20%20%20the%20contrary%20could%20result%20in%20an%20overestimation%20of%20the%20stall%20AOA%20in%20ground%20effect%20and%20could%20%0A%20%20%20%20increase%20the%20risk%20of%20a%20stall%20in%20ground%20effect%20with%20little%20or%20no%20stall%20warning.%0A%0A%20%20%20%20%3E%20106%20-%20%20For%20example%2C%20a%20peer-reviewed%202007%20technical%20paper%20by%20an%20aerospace%20engineer%20(who%20was%20employed%20by%20a%20%0A%20%20%20%20different%20airplane%20manufacturer%20than%20Gulfstream)%20stated%2C%20%E2%80%9Cthe%20aircraft%20in%20ground%20effect%20possesses%20a%20similar%20%5Bmaximum%20%0A%20%20%20%20lift%20coefficient%5D%20as%20in-flight%2C%20but%20the%20absolute%20AOA%20for%20stall%20has%20reduced.%E2%80%9D%20%0A%0A%20%20%20%20%7Bmo.image(%22public%2FGroundEffect%2FGroundEffectLift.png%22%2C%20width%3D600%2C%20caption%3D'Figure%2045')%7D%0A%0A%20%20%20%20Note%20that%20as%20shown%20in%20figures%209%20and%2010%20above%20for%20the%20Boeing%20model%20the%20Boeing%20lift%20curves%20in%20ground%20effect%0A%20%20%20%20don't%20really%20match%20these%20generic%20lift%20curves%20in%20terms%20of%20the%20gradient%20of%20the%20%24C_L%24%20vs%20alpha%20curve.%20The%20Boeing%20curves%0A%20%20%20%20start%20out%20with%20a%20positive%20delta%20at%200%20alpha%2C%20but%20have%20a%20lower%20gradient%20compared%20to%20the%20free%20air%20case%2C%20and%20therefore%0A%20%20%20%20end%20up%20intersecting%20the%20free%20air%20curve%20round%20an%20alpha%20of%20~12%20deg.%20The%20ground%20effect%20curves%20do%20appear%20to%20lead%20to%20a%20%0A%20%20%20%20lower%20critical%2Fstall%20AoA%20and%20lower%20maximum%20%24C_L%24%2C%20although%20unfortunately%20the%20Boeing%20data%20for%20the%20delta%20%24C_L%24%20in%20%0A%20%20%20%20ground%20effect%20ends%20at%2014%20deg%20AoA.%0A%0A%20%20%20%20%7Bplot_CL_groundeffect(30%2C%20%5B0.0%2C%200.1%2C%200.2%2C%200.3%5D%2C%20'%24C_L%24%20vs%20AoA'%2C%20'%24C_L%24'%2C%20'Figure%2010'%2C%20scaled_version%3DFalse)%7D%0A%0A%20%20%20%20All%20three%20models%2C%20JSBSim's%20737%2C%20Boeing's%20747-100%20and%20Airbus's%20generic%20airliner%20model%20the%20change%20in%20lift%20due%20to%0A%20%20%20%20ground%20effect%2C%20however%20with%20varying%20levels%20of%20fidelity.%0A%0A%20%20%20%20%7CModel%7C%24h%2Fb%24%7CAoA%7CFlap%20Configuration%7C%0A%20%20%20%20%7C%3A--%7C%3A--%7C%3A--%7C%3A--%7C%0A%20%20%20%20%7CJSBSim%7CYes%7CNo%7CNo%7C%0A%20%20%20%20%7CAirbus%7CYes%7CNo%7CNo%7C%0A%20%20%20%20%7CBoeing%7CYes%7CYes%7CYes%7C%0A%0A%20%20%20%20JSBSim%20and%20Airbus%20don't%20make%20use%20of%20AoA%20to%20vary%20the%20amount%20of%20delta%20lift%20in%20ground%20effect.%20JSBSim%20also%20doesn't%0A%20%20%20%20vary%20the%20amount%20of%20delta%20lift%20based%20on%20the%20flap%20configuration%2C%20nor%20does%20the%20Airbus%20model%2C%20although%20the%20Airbus%20model%0A%20%20%20%20was%20specifically%20only%20designed%20for%20a%20single%20flap%20configuration.%0A%0A%20%20%20%20Whereas%20the%20Boeing%20model's%20delta%20lift%20in%20ground%20effect%20is%20a%20function%20of%20all%203%2C%20i.e.%20%24%5CDelta%20C_L%20%3D%20f(h%2Fb%2C%20AoA%2C%20Flaps)%24.%0A%0A%20%20%20%20One%20parameter%20not%20taken%20into%20account%20by%20any%20of%20the%20three%20models%20is%20the%20vertical%20rate%20of%20the%20aircraft%20through%20the%0A%20%20%20%20ground%20effect%20region.%0A%0A%20%20%20%20%3E%20Ground%20effects%20data%20can%20be%20obtained%20in%20the%20wind%20tunnel%20or%20in%20flight.%20In%20conventional%20wind-tunnel%0A%20%20%20%20%3E%20ground%20effects%20testing%2C%20measurements%20are%20taken%20for%20a%20stationary%0A%20%20%20%20%3E%20aircraft%20model%20at%20various%20fixed%20ground%20heights.%20The%20results%20are%20called%20static%20ground%20effects%20data.%0A%20%20%20%20%3E%20Unfortunately%2C%20this%20static%20data%20simulates%20the%20aircraft%20flying%20near%20the%20ground%20at%20a%20constant%20altitude%0A%20%20%20%20%3E%20rather%20than%20simulating%20the%20transient%20or%20dynamic%20effects%20of%20the%20aircraft%20descending%20through%20a%20given%0A%20%20%20%20%3E%20altitude%2C%20termed%20%22dynamic%22%20ground%20effects.%0A%20%20%20%20%3E%0A%20%20%20%20%3E%20Ground-based%20techniques%20have%20proved%20successful%20in%20more%20closely%20duplicating%20dynamic%20effects%20by%20using%0A%20%20%20%20%3E%20a%20model%20that%20moves%20toward%20a%20stationary%20or%20moving%20ground%20board%20in%20the%20wind%20tunnel%2C%20thereby%20simulating%0A%20%20%20%20%3E%20the%20rate%20of%20descent.%20%0A%0A%20%20%20%20The%20%5BDynamic%20Ground%20Effects%20Flight%20Test%20of%20an%20F-15%20Aircraft%5D(https%3A%2F%2Fntrs.nasa.gov%2Fapi%2Fcitations%2F19950005778%2Fdownloads%2F19950005778.pdf)%20measured%20the%20change%20in%20ground%20effect%0A%20%20%20%20based%20on%20the%20sink%20rate.%20Higher%20sink%20rates%20lower%20the%20increase%20in%20%24C_L%24%20due%20to%20ground%20effect.%0A%0A%20%20%20%20In%20terms%20of%20comparing%20all%20three%20models%20on%20a%20single%20graph%2C%20the%20scaling%20effect%20on%20%24C_L%24%20is%20compared%20for%20a%20single%20flap%20%0A%20%20%20%20configuration%20of%20flaps%2030%20for%20the%20Boeing%20747%20and%20at%20a%20particular%20AoA%20of%205%20deg%20for%20the%20Boeing%20747.%20A%20figure%20of%205%20deg%20for%0A%20%20%20%20the%20AoA%20for%20the%20Boeing%20model%20is%20chosen%20based%20on%20a%20typical%20AoA%20for%20the%20landing%20approach.%0A%0A%20%20%20%20%7Bplot_cl_comparison('Figure%2046')%7D%0A%0A%20%20%20%20The%20%24C_L%24%20scale%20factor%20curves%20for%20the%20JSBSim%20and%20Airbus%20models%20are%20very%20similiar%2C%20particularly%20in%20terms%20of%20their%20shape%2C%0A%20%20%20%20with%20the%20JSBSim%20model%20being%20more%20'aggressive'%20in%20terms%20of%20the%20scale%20of%20the%20effect.%0A%0A%20%20%20%20Using%20the%20Airbus%20formula%20-%20%24C_%7B%7BL_%7B%7BH%7D%7D%7D%7D%20e%5E%7B%7B-%20%5Clambda_L%20H_%7B%7BLG%7D%7D%7D%7D%24%20and%20the%20following%20parameters%20for%20JSBSim%20we%20can%20%0A%20%20%20%20match%20JSBSim's%20discretized%20scale%20factor%20curve%3A%0A%0A%20%20%20%20%7CParameter%7CAirbus%7CJSBSim%7C%0A%20%20%20%20%7C---------%7C------%7C------%7C%0A%20%20%20%20%7C%24C_%7B%7BL_%7B%7BH%7D%7D%7D%7D%24%7C0.20%7C0.28%7C%0A%20%20%20%20%7C%24%5Clambda_L%24%7C0.12%7C0.08%7C%0A%0A%20%20%20%20%7Bplot_cl_comparison_jsbsim_airbus('Figure%2047')%7D%0A%0A%20%20%20%20However%20the%20Boeing%20curve%20is%20quite%20a%20bit%20different%2C%20it's%20not%20a%20pure%20exponential%20curve%20over%20the%20full%20range.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20plot_jsbsim_boeing_CD_scaling_comparison)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%23%23%20Drag%0A%0A%20%20%20%20Only%20the%20JSBSim%20and%20Boeing%20models%20model%20the%20change%20in%20drag%20due%20to%20ground%20effect.%20I%20asked%20one%20of%20the%20authors%20of%0A%20%20%20%20the%20Airbus%20model%20why%20they%20hadn't%20included%20the%20change%20in%20drag%20in%20their%20ground%20effect%20model%3A%0A%0A%20%20%20%20%3E%20indeed%20the%20longitudinal%20ground%20effects%20have%20not%20been%20considered%20here%20since%20their%20influence%20on%20the%20control%20design%20process%20remains%20negligible%0A%0A%20%20%20%20Their%20aim%20was%20to%20have%20a%20representative%20model%20for%20designing%20an%20autoland%20control%20system%20for%20handling%20large%20cross%20winds.%0A%0A%20%20%20%20The%20JSBSim%20model%20appears%20to%20use%20an%20exponential%20curve%20over%20it's%20full%20range%2C%20whereas%20the%20Boeing%20model%20%0A%20%20%20%20appears%20to%20be%20exponential%20from%20larger%20%24h%2Fb%24%20values%20down%20towards%20lower%20%24h%2Fb%24%20values%20but%20then%20has%20an%20%0A%20%20%20%20inflection%20point%20around%20about%20%24h%2Fb%20%3D%200.1%24.%0A%0A%20%20%20%20%7Bplot_jsbsim_boeing_CD_scaling_comparison('Figure%2048')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20plot_boeing_airbus_Cm_scaling_comparison)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%23%23%20Pitching%20Moment%0A%0A%20%20%20%20Only%20the%20Boeing%20and%20Airbus%20models%20model%20the%20change%20in%20pitching%20moment%20due%20to%20ground%20effect.%20The%20Airbus%20model%0A%20%20%20%20uses%20an%20exponential%20curve%20over%20the%20full%20range%2C%20whereas%20the%20Boeing%20model%20starts%20off%20with%20an%20exponential%20curve%0A%20%20%20%20at%20it's%20maximum%20%24h%2Fb%24%2C%20but%20then%20has%20an%20inflection%20point%20as%20%24h%2Fb%24%20decreases.%0A%0A%20%20%20%20%7Bplot_boeing_airbus_Cm_scaling_comparison('Figure%2049')%7D%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%20References%0A%0A%20%20%20%20-%20%5BThe%20Simulation%20of%20a%20Jumbo%20Jet%20Transport%20Aircraft%20-%20Volume%20II%20-%20Modeling%20Data%5D(https%3A%2F%2Fntrs.nasa.gov%2Fapi%2Fcitations%2F19730001300%2Fdownloads%2F19730001300.pdf)%0A%0A%20%20%20%20-%20%5BA%20Civilian%20Aircraft%20Landing%20Challenge%5D(https%3A%2F%2Fw3.onera.fr%2Fsmac%2Fsites%2Fdefault%2Ffiles%2F2024-01%2FCALC_v2.pdf)%0A%0A%20%20%20%20-%20%5BDynamic%20Ground%20Effects%20Flight%20Test%20of%20an%20F-15%20Aircraft%5D(https%3A%2F%2Fntrs.nasa.gov%2Fapi%2Fcitations%2F19950005778%2Fdownloads%2F19950005778.pdf)%0A%0A%20%20%20%20-%20%5BFlight%20Measurements%20of%20Ground%20Effect%20on%20the%20Lift%20and%20Pitching%20Moment%20of%20a%20Large%20Transport%20Aircraft%20(Comet%203B)%20and%20Comparison%20with%20Wind%20Tunnel%20and%20Other%20Data%20%5D(https%3A%2F%2Faerade.cranfield.ac.uk%2Fbitstream%2Fhandle%2F1826.2%2F2880%2Farc-rm-3611.pdf%3Fsequence%3D1)%0A%0A%20%20%20%20-%20%5BGround-Effect%20Analysis%20of%20a%20Jet%20%20Transport%20Airplane%5D(https%3A%2F%2Fntrs.nasa.gov%2Fapi%2Fcitations%2F19850007378%2Fdownloads%2F19850007378.pdf)%0A%0A%20%20%20%20-%20%5BLifting-Line%20Predictions%20for%20Induced%20Drag%20and%20Lift%20in%20Ground%20Effect%5D(https%3A%2F%2Fwww.researchgate.net%2Fpublication%2F269047238_Lifting-Line_Predictions_for_Induced_Drag_and_Lift_in_Ground_Effect)%0A%0A%20%20%20%20-%20%5BCrash%20During%20Experimental%20Test%20Flight%20%0A%20%20%20%20Gulfstream%20Aerospace%20Corporation%20GVI%20(G650)%5D(https%3A%2F%2Fwww.ntsb.gov%2Finvestigations%2FAccidentReports%2FReports%2FAAR1202.pdf)%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Code%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20math%0A%20%20%20%20import%20copy%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20return%20math%2C%20mo%2C%20np%2C%20plt%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20Wingspan%20%0A%20%20%20%20b%20%3D%20195.68%0A%0A%20%20%20%20def%20flaps_data_index(flap_setting)%3A%0A%20%20%20%20%20%20%20%20flap_indices%20%3D%20%7B%200%3A%201%2C%201%3A%202%2C%205%3A%203%2C%2010%3A%204%2C%2020%3A%205%2C%2025%3A%206%2C%2030%3A%207%20%7D%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20flap_indices%5Bflap_setting%5D%20%0A%0A%20%20%20%20def%20flaps_label(flap_setting)%3A%0A%20%20%20%20%20%20%20%20return%20f%22Flaps%20%7Bflap_setting%7D%22%0A%20%20%20%20return%20b%2C%20flaps_data_index%2C%20flaps_label%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20%23%20Data%0A%0A%20%20%20%20jsbsim737_kCLge_data%20%3D%20np.loadtxt('data%2FGroundEffect%2F737kCLge.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20jsbsim737_kCDge_data%20%3D%20np.loadtxt('data%2FGroundEffect%2F737kCDge.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%0A%20%20%20%20basic_cl_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FCL-Curves.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20K_B_GE_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FKBGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20delta_cl_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FDelta-CLGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%0A%20%20%20%20basic_cd_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FCD-Curves.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20K_A_GE_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FKAGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20delta_cd_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FDelta-CDGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%0A%20%20%20%20basic_cm_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FCM-Curves.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20delta_cm_data%20%3D%20np.loadtxt('data%2FGroundEffect%2FDelta-CMGE.csv'%2C%20delimiter%3D'%2C'%2C%20skiprows%3D1)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20K_A_GE_data%2C%0A%20%20%20%20%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20%20%20%20%20basic_cd_data%2C%0A%20%20%20%20%20%20%20%20basic_cl_data%2C%0A%20%20%20%20%20%20%20%20basic_cm_data%2C%0A%20%20%20%20%20%20%20%20delta_cd_data%2C%0A%20%20%20%20%20%20%20%20delta_cl_data%2C%0A%20%20%20%20%20%20%20%20delta_cm_data%2C%0A%20%20%20%20%20%20%20%20jsbsim737_kCDge_data%2C%0A%20%20%20%20%20%20%20%20jsbsim737_kCLge_data%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20Saved%20data%20for%20model%20comparisons%0A%20%20%20%20jsbsim737_hbs%20%3D%20%5B%5D%0A%20%20%20%20jsbsim737_CD_scaling%20%3D%20%5B%5D%0A%20%20%20%20boeing747_hbs%20%3D%20%5B%5D%0A%20%20%20%20boeing747_CD_scaling%20%3D%20%5B%5D%0A%0A%20%20%20%20airbus_Cm_hbs%20%3D%20%5B%5D%0A%20%20%20%20airbus_Cm_scaling%20%3D%20%5B%5D%0A%20%20%20%20boeing747_Cm_hbs%20%3D%20%5B%5D%0A%20%20%20%20boeing747_Cm_scaling%20%3D%20%5B%5D%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20airbus_Cm_hbs%2C%0A%20%20%20%20%20%20%20%20airbus_Cm_scaling%2C%0A%20%20%20%20%20%20%20%20boeing747_CD_scaling%2C%0A%20%20%20%20%20%20%20%20boeing747_Cm_hbs%2C%0A%20%20%20%20%20%20%20%20boeing747_Cm_scaling%2C%0A%20%20%20%20%20%20%20%20boeing747_hbs%2C%0A%20%20%20%20%20%20%20%20jsbsim737_CD_scaling%2C%0A%20%20%20%20%20%20%20%20jsbsim737_hbs%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_generic_xy(x%2C%20y%2C%20title%2C%20xlabel%2C%20ylabel%2C%20figure_no%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20ax.plot(x%2C%20y)%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_xlabel(xlabel)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%0A%20%20%20%20%20%20%20%20if%20figure_no%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_generic_xy%2C)%0A%0A%0A%40app.cell%0Adef%20_(K_A_GE_data%2C%20K_B_GE_data%2C%20plot_K_GE)%3A%0A%20%20%20%20def%20plot_K_B_GE(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_K_GE(K_B_GE_data%2C%20%22%24K%5EB_%7BGE%7D%24%22%2C%20figure_no)%0A%0A%20%20%20%20def%20plot_K_A_GE(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_K_GE(K_A_GE_data%2C%20%22%24K%5EA_%7BGE%7D%24%22%2C%20figure_no)%0A%20%20%20%20return%20plot_K_A_GE%2C%20plot_K_B_GE%0A%0A%0A%40app.cell%0Adef%20_(b%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_K_GE(data%2C%20ylabel%2C%20figure_no)%3A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C1%5D%2C%20data%5B%3A%2C0%5D)%0A%20%20%20%20%20%20%20%20ax.set_xlabel(%22Gear%20height%20above%20ground%20(ft)%22)%0A%20%20%20%20%20%20%20%20secax%20%3D%20ax.secondary_xaxis('top'%2C%20functions%3D(lambda%20x%3A%20x%2Fb%2C%20lambda%20x%3A%20b*x))%0A%20%20%20%20%20%20%20%20secax.set_xlabel(%22h%2Fb%22)%0A%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(%22Ground%20Effect%20Height%20Factor%22)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_K_GE%2C)%0A%0A%0A%40app.cell%0Adef%20_(basic_cl_data%2C%20plot_CL_versus_alpha)%3A%0A%20%20%20%20def%20plot_basic_CL(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_CL_versus_alpha(basic_cl_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'Basic%20%24C_L%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24C_L%24'%2C%20figure_no)%0A%20%20%20%20return%20(plot_basic_CL%2C)%0A%0A%0A%40app.cell%0Adef%20_(delta_cl_data%2C%20plot_CL_versus_alpha)%3A%0A%20%20%20%20def%20plot_delta_CL(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_CL_versus_alpha(delta_cl_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24'%2C%20figure_no)%0A%20%20%20%20return%20(plot_delta_CL%2C)%0A%0A%0A%40app.cell%0Adef%20_(flaps_data_index%2C%20flaps_label%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_CL_versus_alpha(data%2C%20flaps%2C%20title%2C%20ylabel%2C%20figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20for%20flap_setting%20in%20flaps%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C0%5D%2C%20data%5B%3A%2Cflaps_data_index(flap_setting)%5D%2C%20label%3Dflaps_label(flap_setting))%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CL_versus_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cl_data%2C%0A%20%20%20%20delta_cl_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20flaps_label%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CL_groundeffect(flap%2C%20h_bs%2C%20title%2C%20ylabel%2C%20figure_no%2C%20scaled_version%2C%20xlim%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20%23%20Plot%20basic%20CL%20for%20flap%20argument%0A%20%20%20%20%20%20%20%20if%20scaled_version%20is%20False%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(basic_cl_data%5B%3A%2C0%5D%2C%20basic_cl_data%5B%3A%2Cflaps_data_index(flap)%5D%2C%20label%3Dflaps_label(flap)%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20and%20plot%20using%20K_GE%20and%20delta-CL%0A%20%20%20%20%20%20%20%20for%20h_b%20in%20h_bs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k_ge%20%3D%20np.interp(h_b%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20scaled_delta_cl%20%3D%20delta_cl_data%5B%3A%2Cflaps_data_index(flap)%5D%20*%20k_ge%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20CL%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20index%20in%20range(len(delta_cl_data%5B%3A%2C0%5D))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha%20%3D%20delta_cl_data%5Bindex%2C0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cl_basic%20%3D%20np.interp(alpha%2C%20basic_cl_data%5B%3A%2C0%5D%2C%20basic_cl_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20scaled_version%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CL.append((scaled_delta_cl%5Bindex%5D%20%2B%20cl_basic)%2Fcl_basic)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CL.append(scaled_delta_cl%5Bindex%5D%20%2B%20cl_basic)%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(delta_cl_data%5B%3A%2C0%5D%2C%20CL%2C%20label%3Df'h%2Fb%20%7Bh_b%7D')%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20if%20xlim%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.set_xlim(xlim%5B0%5D%2C%20xlim%5B1%5D)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CL_groundeffect%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cl_data%2C%0A%20%20%20%20delta_cl_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CL_groundeffect_AOA(flap%2C%20alphas%2C%20title%2C%20figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20alphas%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_basic%20%3D%20np.interp(alpha%2C%20basic_cl_data%5B%3A%2C0%5D%2C%20basic_cl_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_delta%20%3D%20np.interp(alpha%2C%20delta_cl_data%5B%3A%2C0%5D%2C%20delta_cl_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kge%20%3D%20np.interp(hb%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%20%3D%20(cl_basic%20%2B%20kge%20*%20cl_delta)%20%2F%20cl_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale.append(scale)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20alpha_scale%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%7Balpha%7D%24')%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CL_groundeffect_AOA%2C)%0A%0A%0A%40app.cell%0Adef%20_(basic_cd_data%2C%20plot_CD_versus_alpha)%3A%0A%20%20%20%20def%20plot_basic_CD(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_CD_versus_alpha(basic_cd_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'Basic%20%24C_D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24C_D%24'%2C%20figure_no)%0A%20%20%20%20return%20(plot_basic_CD%2C)%0A%0A%0A%40app.cell%0Adef%20_(delta_cd_data%2C%20plot_CD_versus_alpha)%3A%0A%20%20%20%20def%20plot_delta_CD(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_CD_versus_alpha(delta_cd_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'%24%5C%5CDelta%20C_%7BD_%7BGE%7D%7D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24%5C%5CDelta%20C_%7BD_%7BGE%7D%7D%24'%2C%20figure_no)%0A%20%20%20%20return%20(plot_delta_CD%2C)%0A%0A%0A%40app.cell%0Adef%20_(flaps_data_index%2C%20flaps_label%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_CD_versus_alpha(data%2C%20flaps%2C%20title%2C%20ylabel%2C%20figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20for%20flap_setting%20in%20flaps%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C0%5D%2C%20data%5B%3A%2Cflaps_data_index(flap_setting)%5D%2C%20label%3Dflaps_label(flap_setting))%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CD_versus_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_A_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cd_data%2C%0A%20%20%20%20delta_cd_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20flaps_label%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CD_groundeffect(flap%2C%20h_bs%2C%20title%2C%20ylabel%2C%20figure_no%2C%20scaled_version%2C%20xlim%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20%23%20Plot%20basic%20CD%20for%20flap%20argument%0A%20%20%20%20%20%20%20%20if%20scaled_version%20is%20False%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(basic_cd_data%5B%3A%2C0%5D%2C%20basic_cd_data%5B%3A%2Cflaps_data_index(flap)%5D%2C%20label%3Dflaps_label(flap)%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20and%20plot%20using%20K_GE%20and%20delta-CD%0A%20%20%20%20%20%20%20%20for%20h_b%20in%20h_bs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k_ge%20%3D%20np.interp(h_b%20*%20b%2C%20np.flip(K_A_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_A_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20scaled_delta_cd%20%3D%20delta_cd_data%5B%3A%2Cflaps_data_index(flap)%5D%20*%20k_ge%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20CD%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20index%20in%20range(len(delta_cd_data%5B%3A%2C0%5D))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha%20%3D%20delta_cd_data%5Bindex%2C0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cd_basic%20%3D%20np.interp(alpha%2C%20basic_cd_data%5B%3A%2C0%5D%2C%20basic_cd_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20scaled_version%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CD.append((scaled_delta_cd%5Bindex%5D%20%2B%20cd_basic)%2Fcd_basic)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CD.append(scaled_delta_cd%5Bindex%5D%20%2B%20cd_basic)%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(delta_cd_data%5B%3A%2C0%5D%2C%20CD%2C%20label%3Df'h%2Fb%20%7Bh_b%7D')%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20if%20xlim%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.set_xlim(xlim%5B0%5D%2C%20xlim%5B1%5D)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CD_groundeffect%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_A_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cd_data%2C%0A%20%20%20%20boeing747_CD_scaling%2C%0A%20%20%20%20boeing747_hbs%2C%0A%20%20%20%20delta_cd_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CD_groundeffect_AOA(flap%2C%20alphas%2C%20title%2C%20figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20alphas%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cd_basic%20%3D%20np.interp(alpha%2C%20basic_cd_data%5B%3A%2C0%5D%2C%20basic_cd_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cd_delta%20%3D%20np.interp(alpha%2C%20delta_cd_data%5B%3A%2C0%5D%2C%20delta_cd_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kge%20%3D%20np.interp(hb%20*%20b%2C%20np.flip(K_A_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_A_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%20%3D%20(cd_basic%20%2B%20kge%20*%20cd_delta)%20%2F%20cd_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale.append(scale)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20alpha_scale%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%7Balpha%7D%24')%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20Record%20for%20comparison%20with%20other%20models%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20alpha%20%3D%3D%205%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_hbs.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_CD_scaling.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_hbs.append(hb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20scale%20in%20alpha_scale%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_CD_scaling.append(scale)%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CD_groundeffect_AOA%2C)%0A%0A%0A%40app.cell%0Adef%20_(basic_cm_data%2C%20plot_CM_versus_alpha)%3A%0A%20%20%20%20def%20plot_basic_CM(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_CM_versus_alpha(basic_cm_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'Basic%20%24C_m%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24C_m%24'%2C%20figure_no)%0A%20%20%20%20return%20(plot_basic_CM%2C)%0A%0A%0A%40app.cell%0Adef%20_(delta_cm_data%2C%20plot_CM_versus_alpha)%3A%0A%20%20%20%20def%20plot_delta_CM(figure_no)%3A%0A%20%20%20%20%20%20%20%20return%20plot_CM_versus_alpha(delta_cm_data%2C%20%5B10%2C%2020%2C%2025%2C%2030%5D%2C%20'%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20versus%20%24%5C%5Calpha%24'%2C%20'%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24'%2C%20figure_no)%0A%20%20%20%20return%20(plot_delta_CM%2C)%0A%0A%0A%40app.cell%0Adef%20_(flaps_data_index%2C%20flaps_label%2C%20mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_CM_versus_alpha(data%2C%20flaps%2C%20title%2C%20ylabel%2C%20figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20for%20flap_setting%20in%20flaps%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(data%5B%3A%2C0%5D%2C%20data%5B%3A%2Cflaps_data_index(flap_setting)%5D%2C%20label%3Dflaps_label(flap_setting))%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CM_versus_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cm_data%2C%0A%20%20%20%20delta_cm_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20flaps_label%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CM_groundeffect(flap%2C%20h_bs%2C%20title%2C%20ylabel%2C%20figure_no%2C%20scaled_version%2C%20xlim%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20%23%20Plot%20basic%20CM%20for%20flap%20argument%0A%20%20%20%20%20%20%20%20if%20scaled_version%20is%20False%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(basic_cm_data%5B%3A%2C0%5D%2C%20basic_cm_data%5B%3A%2Cflaps_data_index(flap)%5D%2C%20label%3Dflaps_label(flap)%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20and%20plot%20using%20K_GE%20and%20delta-CM%0A%20%20%20%20%20%20%20%20for%20h_b%20in%20h_bs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k_ge%20%3D%20np.interp(h_b%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20scaled_delta_cm%20%3D%20delta_cm_data%5B%3A%2Cflaps_data_index(flap)%5D%20*%20k_ge%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20CM%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20index%20in%20range(len(delta_cm_data%5B%3A%2C0%5D))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha%20%3D%20delta_cm_data%5Bindex%2C0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cm_basic%20%3D%20np.interp(alpha%2C%20basic_cm_data%5B%3A%2C0%5D%2C%20basic_cm_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20scaled_version%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CM.append((scaled_delta_cm%5Bindex%5D%20%2B%20cm_basic)%2Fcm_basic)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CM.append(scaled_delta_cm%5Bindex%5D%20%2B%20cm_basic)%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(delta_cm_data%5B%3A%2C0%5D%2C%20CM%2C%20label%3Df'h%2Fb%20%7Bh_b%7D')%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel(ylabel)%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20if%20xlim%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.set_xlim(xlim%5B0%5D%2C%20xlim%5B1%5D)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CM_groundeffect%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20b%2C%0A%20%20%20%20basic_cm_data%2C%0A%20%20%20%20boeing747_Cm_hbs%2C%0A%20%20%20%20boeing747_Cm_scaling%2C%0A%20%20%20%20delta_cm_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_CM_groundeffect_AOA(flap%2C%20alphas%2C%20title%2C%20figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20alphas%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_basic%20%3D%20np.interp(alpha%2C%20basic_cm_data%5B%3A%2C0%5D%2C%20basic_cm_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_delta%20%3D%20np.interp(alpha%2C%20delta_cm_data%5B%3A%2C0%5D%2C%20delta_cm_data%5B%3A%2Cflaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kge%20%3D%20np.interp(hb%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C1%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C0%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%20%3D%20(cm_basic%20%2B%20kge%20*%20cm_delta)%20%2F%20cm_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale.append(scale)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20alpha_scale%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%7Balpha%7D%24')%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20Record%20for%20comparison%20with%20other%20models%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20alpha%20%3D%3D%205%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_Cm_hbs.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_Cm_scaling.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_Cm_hbs.append(hb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20scale%20in%20alpha_scale%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boeing747_Cm_scaling.append(scale)%0A%0A%20%20%20%20%20%20%20%20ax.set_title(title)%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%20%20%20%20%20%20%20%20ax.legend()%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_CM_groundeffect_AOA%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_delta_CL(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%0A%0A%20%20%20%20%20%20%20%20hlg%20%3D%20np.linspace(0%2C%2060.3%2C%20100)%0A%20%20%20%20%20%20%20%20hb%20%3D%20hlg%2Fb%0A%0A%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%0A%0A%20%20%20%20%20%20%20%20ax.plot(hb%2C%20delta_cl)%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24')%0A%20%20%20%20%20%20%20%20plt.title('%24%5C%5CDelta%20C_%7BL_%7BGE%7D%7D%24%20versus%20%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_delta_CL%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_lift_plus_delta_ge(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%0A%0A%20%20%20%20%20%20%20%20min_alpha%20%3D%200%0A%20%20%20%20%20%20%20%20max_alpha%20%3D%2014%0A%20%20%20%20%20%20%20%20alphas%20%3D%20%5Bmin_alpha%2C%20max_alpha%5D%0A%0A%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20%5Bcl0%20%2B%20clalpha*min_alpha%2C%20cl0%20%2B%20clalpha*max_alpha%5D%2C%20label%3D'Landing%20Flaps'%2C%20color%3D'b')%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%3D%20%5Bcl0%20%2B%20clalpha*min_alpha%20%2B%20delta_cl%2C%20cl0%20%2B%20clalpha*max_alpha%20%2B%20delta_cl%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cls%2C%20label%3Df'h%2Fb%20%7Bhb%3A.1f%7D')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24C_L%24')%0A%20%20%20%20%20%20%20%20plt.title('%24C_L%24%20vs%20AoA')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_lift_plus_delta_ge%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_lift_scaling(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%0A%0A%20%20%20%20%20%20%20%20min_alpha%20%3D%200%0A%20%20%20%20%20%20%20%20max_alpha%20%3D%2014%0A%20%20%20%20%20%20%20%20alphas%20%3D%20%5Bmin_alpha%2C%20max_alpha%5D%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%3D%20%5B(cl0%20%2B%20clalpha*min_alpha%20%2B%20delta_cl)%2F(cl0%20%2B%20clalpha*min_alpha)%2C%20(cl0%20%2B%20clalpha*max_alpha%20%2B%20delta_cl)%2F(cl0%20%2B%20clalpha*max_alpha)%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cls%2C%20label%3Df'h%2Fb%20%7Bhb%3A.1f%7D')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_L%24%20scaling%20vs%20AoA')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_lift_scaling%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_lift_scaling_vs_hb(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%20%0A%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20%5B0%2C%205%2C%2010%2C%2014.5%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4%2C%2050)%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hbs%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_base%20%3D%20cl0%20%2B%20clalpha*alpha%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_scaling%20%3D%20(delta_cl%20%2B%20cl_base)%20%2F%20cl_base%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20cl_scaling%2C%20label%3Df'%24%5C%5Calpha%20%3D%20%24%20%7Balpha%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_L%24%20scaling%20vs%20%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_lift_scaling_vs_hb%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_basic_cm(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20cm_0%20%3D%20-0.3%0A%20%20%20%20%20%20%20%20cm_alpha%20%3D%20-1.5%20%2F%20math.degrees(1)%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%203)%0A%20%20%20%20%20%20%20%20cms%20%3D%20cm_0%20%2B%20cm_alpha*alphas%0A%0A%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cms)%0A%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24C_m%24')%0A%20%20%20%20%20%20%20%20plt.title('Basic%20%24C_m%24%20versus%20%24%5C%5Calpha%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_basic_cm%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_delta_Cm(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%0A%0A%20%20%20%20%20%20%20%20hlg%20%3D%20np.linspace(0%2C%2060.3%2F2%2C%20100)%0A%20%20%20%20%20%20%20%20hb%20%3D%20hlg%2Fb%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20%5B0%2C%205%2C%2010%2C%2015%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_rad%20%3D%20math.radians(alpha)%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cm%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alpha_rad)%20*%20np.exp(-lambda_m%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hb%2C%20delta_cm%2C%20label%3Df'%24%5C%5Calpha%24%20%3D%20%7Balpha%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24')%0A%20%20%20%20%20%20%20%20plt.title('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20versus%20%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airbus_delta_Cm%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_delta_Cm_alpha(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%2028)%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%20%0A%20%20%20%20%20%20%20%20%20%20%20%20delta_cms%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alphas)%20*%20np.exp(-lambda_m%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20delta_cms%2C%20label%3Df'%24h%2Fb%24%20%7Bhb%3A.1f%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24')%0A%20%20%20%20%20%20%20%20plt.title('%24%5C%5CDelta%20C_%7Bm_%7BGE%7D%7D%24%20versus%20AoA')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_delta_Cm_alpha%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_net_Cm(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_0%20%3D%20-0.3%0A%20%20%20%20%20%20%20%20cm_alpha%20%3D%20-1.5%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%203)%0A%20%20%20%20%20%20%20%20cms%20%3D%20cm_0%20%2B%20cm_alpha*alphas%0A%0A%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cms%2C%20label%3D'Landing%20flaps')%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%2020)%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_nets%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alphas)%20*%20np.exp(-lambda_m%20*%20hlg)%20%2B%20cm_0%20%2B%20cm_alpha%20*%20alphas%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cm_nets%2C%20label%3Df'%24h%2Fb%24%20%7Bhb%3A.1f%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('%24C_m%24')%0A%20%20%20%20%20%20%20%20plt.title('%24C_m%24%20versus%20AoA')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%20%20%0A%20%20%20%20return%20(plot_airbus_net_Cm%2C)%0A%0A%0A%40app.cell%0Adef%20_(math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_net_Cm_scaling(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_0%20%3D%20-0.3%0A%20%20%20%20%20%20%20%20cm_alpha%20%3D%20-1.5%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%203)%0A%20%20%20%20%20%20%20%20cms%20%3D%20cm_0%20%2B%20cm_alpha*alphas%0A%0A%20%20%20%20%20%20%20%20for%20hb%20in%20%5B0%2C%200.1%2C%200.2%2C%200.3%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%0A%20%20%20%20%20%20%20%20%20%20%20%20alphas%20%3D%20np.linspace(0%2C%2014%2C%2020)%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_nets%20%3D%20(cm_h0%20%2B%20cm_halpha%20*%20alphas)%20*%20np.exp(-lambda_m%20*%20hlg)%20%2B%20cm_0%20%2B%20cm_alpha%20*%20alphas%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_basic%20%3D%20cm_0%20%2B%20cm_alpha%20*%20alphas%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_net_scaling%20%3D%20cm_nets%20%2F%20cm_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(alphas%2C%20cm_net_scaling%2C%20label%3Df'%24h%2Fb%24%20%7Bhb%3A.1f%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('Alpha%20%24%5C%5Calpha%24%20(deg)')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_m%24%20scaling%20versus%20AoA')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%0A%20%20%20%20return%20(plot_airbus_net_Cm_scaling%2C)%0A%0A%0A%40app.cell%0Adef%20_(airbus_Cm_hbs%2C%20airbus_Cm_scaling%2C%20math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_airbus_Cm_scaling_vs_hb(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20cm_0%20%3D%20-0.3%0A%20%20%20%20%20%20%20%20cm_alpha%20%3D%20-1.5%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20cm_h0%20%3D%20-0.09%0A%20%20%20%20%20%20%20%20cm_halpha%20%3D%20-0.9%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20lambda_m%20%3D%200.15%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.4%2C%2020)%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20%5B0%2C%205%2C%2010%2C%2014.5%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_scale_factor%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20cm_free%20%3D%20cm_0%20%2B%20cm_alpha%20*%20alpha%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hb%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cm_ge%20%3D%20cm_free%20%2B%20(cm_h0%20%2B%20cm_halpha%20*%20alpha)%20*%20np.exp(-lambda_m%20*%20hlg)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cm_scaling%20%3D%20cm_ge%20%2F%20cm_free%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cm_scale_factor.append(cm_scaling)%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20cm_scale_factor%2C%20label%3Df'%24%5C%5Calpha%24%20%3D%20%7Balpha%7D')%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20Record%20for%20comparison%20with%20other%20models%0A%20%20%20%20%20%20%20%20%20%20%20%20airbus_Cm_hbs.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20airbus_Cm_scaling.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20airbus_Cm_hbs.append(hb)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20scale%20in%20cm_scale_factor%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20airbus_Cm_scaling.append(scale)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_m%24%20scaling%20vs%20%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%0A%20%20%20%20return%20(plot_airbus_Cm_scaling_vs_hb%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20K_B_GE_data%2C%0A%20%20%20%20basic_cl_data%2C%0A%20%20%20%20delta_cl_data%2C%0A%20%20%20%20flaps_data_index%2C%0A%20%20%20%20jsbsim737_kCLge_data%2C%0A%20%20%20%20math%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_cl_comparison(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D%22constrained%22)%0A%0A%20%20%20%20%20%20%20%20%23%20JSBSim%0A%20%20%20%20%20%20%20%20ax.plot(jsbsim737_kCLge_data%5B%3A%2C%200%5D%2C%20jsbsim737_kCLge_data%5B%3A%2C%201%5D%2C%20label%3D%22JSBSim%22)%0A%0A%20%20%20%20%20%20%20%20%23%20Airbus%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.12%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%0A%20%20%20%20%20%20%20%20alpha%20%3D%205%0A%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%201%2C%2050)%0A%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hbs%0A%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%0A%20%20%20%20%20%20%20%20cl_base%20%3D%20cl0%20%2B%20clalpha%20*%20alpha%0A%20%20%20%20%20%20%20%20cl_scaling%20%3D%20(delta_cl%20%2B%20cl_base)%20%2F%20cl_base%0A%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20cl_scaling%2C%20label%3D%22Airbus%22)%0A%0A%20%20%20%20%20%20%20%20%23%20Boeing%0A%20%20%20%20%20%20%20%20alpha%20%3D%205%0A%20%20%20%20%20%20%20%20flap%20%3D%2030%0A%20%20%20%20%20%20%20%20b%20%3D%20195.68%20%23%20feet%0A%20%20%20%20%20%20%20%20cl_basic%20%3D%20np.interp(alpha%2C%20basic_cl_data%5B%3A%2C%200%5D%2C%20basic_cl_data%5B%3A%2C%20flaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20cl_delta%20%3D%20np.interp(alpha%2C%20delta_cl_data%5B%3A%2C%200%5D%2C%20delta_cl_data%5B%3A%2C%20flaps_data_index(flap)%5D)%0A%20%20%20%20%20%20%20%20alpha_scale%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%201.0%2C%2050)%0A%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20kge%20%3D%20np.interp(hb%20*%20b%2C%20np.flip(K_B_GE_data%5B%3A%2C%201%5D)%2C%20np.flip(K_B_GE_data%5B%3A%2C%200%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20scale%20%3D%20(cl_basic%20%2B%20kge%20*%20cl_delta)%20%2F%20cl_basic%0A%20%20%20%20%20%20%20%20%20%20%20%20alpha_scale.append(scale)%0A%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20alpha_scale%2C%20label%3D%22Boeing%22)%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel(%22%24h%2Fb%24%22)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(%22Scale%20Factor%22)%0A%20%20%20%20%20%20%20%20plt.title(%22%24C_L%24%20Scaling%20Comparison%22)%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_cl_comparison%2C)%0A%0A%0A%40app.cell%0Adef%20_(jsbsim737_kCLge_data%2C%20math%2C%20mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20def%20plot_cl_comparison_jsbsim_airbus(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20%23%20JSBSim%0A%20%20%20%20%20%20%20%20ax.plot(jsbsim737_kCLge_data%5B%3A%2C0%5D%2C%20jsbsim737_kCLge_data%5B%3A%2C1%5D%2C%20label%3D'JSBSim'%2C%20linestyle%3D'--')%0A%0A%20%20%20%20%20%20%20%20%23%20Airbus%0A%20%20%20%20%20%20%20%20b%20%3D%2060.3%20%20%23%20A-330%20wingspan%0A%20%20%20%20%20%20%20%20%23clh%20%3D%200.2%0A%20%20%20%20%20%20%20%20%23lambdal%20%3D%200.12%20%0A%20%20%20%20%20%20%20%20clh%20%3D%200.28%0A%20%20%20%20%20%20%20%20lambdal%20%3D%200.08%0A%20%20%20%20%20%20%20%20cl0%20%3D%200.9%0A%20%20%20%20%20%20%20%20clalpha%20%3D%205.5%20%2F%20math.degrees(1)%20%20%20%20%0A%20%20%20%20%20%20%20%20alpha%20%3D%205%0A%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%201%2C%2050)%0A%20%20%20%20%20%20%20%20hlg%20%3D%20b%20*%20hbs%0A%20%20%20%20%20%20%20%20delta_cl%20%3D%20clh%20*%20np.exp(-lambdal%20*%20hlg)%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20cl_base%20%3D%20cl0%20%2B%20clalpha*alpha%0A%20%20%20%20%20%20%20%20cl_scaling%20%3D%20(delta_cl%20%2B%20cl_base)%20%2F%20cl_base%0A%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20cl_scaling%2C%20label%3D'Airbus%20Formula')%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_L%24%20Scaling%20Comparison')%0A%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%20%20%0A%20%20%20%20return%20(plot_cl_comparison_jsbsim_airbus%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20jsbsim737_CD_scaling%2C%0A%20%20%20%20jsbsim737_hbs%2C%0A%20%20%20%20jsbsim737_kCDge_data%2C%0A%20%20%20%20jsbsim737_kCLge_data%2C%0A%20%20%20%20math%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_jsbsim_CD_scaling(figure_no%3DNone)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20for%20alpha%20in%20%5B0%2C%205%2C%2010%2C%2013%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20hbs%20%3D%20np.linspace(0%2C%200.8%2C%2030)%0A%20%20%20%20%20%20%20%20%20%20%20%20cl_clear%20%3D%20np.interp(alpha%2C%20%5B0%2C%20math.degrees(0.23)%5D%2C%20%5B0.2%2C%201.2%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cd_basic%20%3D%20np.interp(alpha%2C%20%5B0%2C%20math.degrees(0.26)%5D%2C%20%5B0.021%2C%200.042%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20cdi_clear%20%3D%20cl_clear**2%20*%200.043%0A%20%20%20%20%20%20%20%20%20%20%20%20cd_flap%20%3D%200.059%0A%20%20%20%20%20%20%20%20%20%20%20%20cd_total_clear%20%3D%20cd_basic%20%2B%20cdi_clear%20%2B%20cd_flap%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20scale_factors%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kCLge%20%3D%20np.interp(hb%2C%20jsbsim737_kCLge_data%5B%3A%2C0%5D%2C%20jsbsim737_kCLge_data%5B%3A%2C1%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cl_ge%20%3D%20np.interp(alpha%2C%20%5B0%2C%20math.degrees(0.23)%5D%2C%20%5B0.2%2C%201.2%5D)%20*%20kCLge%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kCDge%20%3D%20np.interp(hb%2C%20jsbsim737_kCDge_data%5B%3A%2C0%5D%2C%20jsbsim737_kCDge_data%5B%3A%2C1%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cdi_ge%20%3D%20cl_ge**2%20*%200.043%20*%20kCDge%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cd_total_ge%20%3D%20cd_basic%20%2B%20cdi_ge%20%2B%20cd_flap%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale_factors.append(cd_total_ge%2Fcd_total_clear)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20Record%20alpha%20%3D%3D%205%20case%20for%20comparison%20with%20other%20models%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20alpha%20%3D%3D%205%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jsbsim737_hbs.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jsbsim737_CD_scaling.clear()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20hb%20in%20hbs%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jsbsim737_hbs.append(hb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20scale%20in%20scale_factors%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jsbsim737_CD_scaling.append(scale)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23jsbsim737_CD_scaling%20%3D%20copy.deepcopy(scale_factors)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ax.plot(hbs%2C%20scale_factors%2C%20label%3Df'%24%5C%5Calpha%24%20%3D%20%7Balpha%7D')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('JSBSim%20%24C_D%24%20Scaling%20versus%20%24h%2Fb%24')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20if%20figure_no%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_jsbsim_CD_scaling%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20boeing747_CD_scaling%2C%0A%20%20%20%20boeing747_hbs%2C%0A%20%20%20%20jsbsim737_CD_scaling%2C%0A%20%20%20%20jsbsim737_hbs%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_jsbsim_boeing_CD_scaling_comparison(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20ax.plot(jsbsim737_hbs%2C%20jsbsim737_CD_scaling%2C%20label%3D'JSBSim')%0A%20%20%20%20%20%20%20%20ax.plot(boeing747_hbs%2C%20boeing747_CD_scaling%2C%20label%3D'Boeing')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_D%24%20Scaling%20Comparison%20at%20%24%5C%5Calpha%24%20%3D%205')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20if%20figure_no%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_jsbsim_boeing_CD_scaling_comparison%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20airbus_Cm_hbs%2C%0A%20%20%20%20airbus_Cm_scaling%2C%0A%20%20%20%20boeing747_Cm_hbs%2C%0A%20%20%20%20boeing747_Cm_scaling%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A)%3A%0A%20%20%20%20def%20plot_boeing_airbus_Cm_scaling_comparison(figure_no)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(layout%3D'constrained')%0A%0A%20%20%20%20%20%20%20%20ax.plot(airbus_Cm_hbs%2C%20airbus_Cm_scaling%2C%20label%3D'Airbus')%0A%20%20%20%20%20%20%20%20ax.plot(boeing747_Cm_hbs%2C%20boeing747_Cm_scaling%2C%20label%3D'Boeing')%0A%0A%20%20%20%20%20%20%20%20ax.legend()%0A%20%20%20%20%20%20%20%20ax.set_xlabel('%24h%2Fb%24')%0A%20%20%20%20%20%20%20%20ax.set_ylabel('Scale%20Factor')%0A%20%20%20%20%20%20%20%20plt.title('%24C_m%24%20Scaling%20Comparison%20at%20%24%5C%5Calpha%24%20%3D%205')%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20if%20figure_no%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20fig.supxlabel(figure_no)%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_boeing_airbus_Cm_scaling_comparison%2C)%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
ec36245f886a36cd8ca90ec896be0708281f6d63d2c5672c21c50d5d8b75c04d