import%20marimo%0A%0A__generated_with%20%3D%20%220.14.10%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(jsbsim737_kCDge_data%2C%20jsbsim737_kCLge_data%2C%20mo%2C%20plot_generic_xy)%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%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%20in%20the%20JSBSim%20repo%20during%20landing.%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.%20The%20%24C_L%24%20and%20%24C_D%24%20ground%20effect%20scale%20factor%20is%20independent%20of%20flap%20configuration%20and%20also%20independent%20of%20angle%20of%20attack%20(%24%5Calpha%24).%20%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')%7D%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')%7D%0A%0A%20%20%20%20In%20this%20write%20up%20we'll%20take%20a%20look%20at%20how%20the%20ground%20effect%20is%20modelled%20by%20Boeing%20for%20a%20B747-100%20simulator.%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)%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)%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)%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()%7D%0A%0A%20%20%20%20%7Bplot_K_B_GE()%7D%0A%0A%20%20%20%20%7Bplot_delta_CL()%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%20scaled_version%3DFalse)%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%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')%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)%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)%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)%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()%7D%0A%0A%20%20%20%20%7Bplot_K_A_GE()%7D%0A%0A%20%20%20%20%7Bplot_delta_CD()%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%20scaled_version%3DFalse)%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%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')%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**TODO**%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%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%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20return%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%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%20delta_cd_data%2C%0A%20%20%20%20%20%20%20%20delta_cl_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_(K_A_GE_data%2C%20K_B_GE_data%2C%20plot_K_GE)%3A%0A%20%20%20%20def%20plot_K_B_GE()%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)%0A%0A%20%20%20%20def%20plot_K_A_GE()%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)%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)%3A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%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()%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')%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()%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')%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)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%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%20scaled_version)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%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%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)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%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()%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')%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()%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')%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)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%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%20scaled_version)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%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%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%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)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%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%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_(mo%2C%20plt)%3A%0A%20%20%20%20def%20plot_generic_xy(x%2C%20y%2C%20title%2C%20xlabel%2C%20ylabel)%3A%0A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%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%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_generic_xy%2C)%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
3fb4c5e15f1ce15f939bcb4ced53451f25ed94de742ebc84535aedbddb58f3f8