gitextract__e84dmdr/ ├── .codecov.yml ├── .coveragerc ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ └── bug_report.md │ └── workflows/ │ ├── docker_build.yaml │ ├── docker_build_test.yaml │ ├── pypi_build.yaml │ ├── readme.md │ ├── sharpy_no_test_needed.yaml │ └── sharpy_tests.yaml ├── .github_changelog_generator ├── .gitignore ├── .gitmodules ├── .readthedocs.yaml ├── .version.json ├── .zenodo.json ├── CHANGELOG.md ├── CMakeLists.txt ├── Dockerfile ├── LICENSE ├── README.md ├── docs/ │ ├── .nojekyll │ ├── JOSS/ │ │ ├── codemeta.json │ │ ├── generate.rb │ │ ├── paper.bib │ │ └── paper.md │ ├── Makefile │ ├── docignore.yml │ ├── requirements_rtd │ └── source/ │ ├── _static/ │ │ ├── .placeholder │ │ └── sharpy_guide/ │ │ └── sharpy_intro.html │ ├── conf.py │ ├── content/ │ │ ├── capabilities.md │ │ ├── casefiles.rst │ │ ├── contributing.md │ │ ├── debug.rst │ │ ├── example_notebooks/ │ │ │ ├── UDP_control/ │ │ │ │ ├── control_design_script.m │ │ │ │ ├── get_settings_udp.py │ │ │ │ ├── matlab_functions/ │ │ │ │ │ ├── PID_linear_model.slx │ │ │ │ │ ├── adjust_state_space_system.m │ │ │ │ │ ├── get_1minuscosine_gust_input.m │ │ │ │ │ ├── read_SHARPy_state_space_system.m │ │ │ │ │ └── set_input_parameters.m │ │ │ │ ├── parameter_UDP_control_pazy_udp_closed_loop_gust_response.json │ │ │ │ ├── pazy_PID_controller_UDP.py │ │ │ │ ├── pazy_network_info.yml │ │ │ │ ├── pid_controller.py │ │ │ │ └── tutorial_udp_control.ipynb │ │ │ ├── cantilever/ │ │ │ │ ├── model_static_cantilever.py │ │ │ │ └── static_cantilever.ipynb │ │ │ ├── cantilever_wing.ipynb │ │ │ ├── linear_goland_flutter.ipynb │ │ │ ├── linear_horten.ipynb │ │ │ ├── nonlinear_t-tail_HALE.ipynb │ │ │ ├── source/ │ │ │ │ └── type04_db_nrel5mw_oc3_v06.xlsx │ │ │ └── wind_turbine.ipynb │ │ ├── examples.rst │ │ ├── faqs.md │ │ ├── installation.md │ │ ├── postproc.rst │ │ ├── publications.md │ │ ├── solvers.rst │ │ └── test_cases.rst │ ├── includes/ │ │ ├── aero/ │ │ │ ├── index.rst │ │ │ ├── models/ │ │ │ │ ├── aerogrid/ │ │ │ │ │ ├── AeroTimeStepInfo.rst │ │ │ │ │ ├── Aerogrid.rst │ │ │ │ │ ├── generate_strip.rst │ │ │ │ │ └── index.rst │ │ │ │ └── index.rst │ │ │ └── utils/ │ │ │ ├── airfoilpolars/ │ │ │ │ ├── Polar.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ └── mapping/ │ │ │ ├── aero2struct_force_mapping.rst │ │ │ ├── index.rst │ │ │ └── total_forces_moments.rst │ │ ├── cases/ │ │ │ ├── coupled/ │ │ │ │ ├── X-HALE/ │ │ │ │ │ ├── generate_xhale/ │ │ │ │ │ │ ├── generate_naca_camber.rst │ │ │ │ │ │ ├── generate_solver_file.rst │ │ │ │ │ │ ├── index.rst │ │ │ │ │ │ └── read_beam_data.rst │ │ │ │ │ └── index.rst │ │ │ │ └── index.rst │ │ │ ├── hangar/ │ │ │ │ ├── horten_wing/ │ │ │ │ │ ├── HortenWing.rst │ │ │ │ │ └── index.rst │ │ │ │ ├── index.rst │ │ │ │ ├── richards_wing/ │ │ │ │ │ ├── HortenWing.rst │ │ │ │ │ └── index.rst │ │ │ │ └── swept_flying_wing/ │ │ │ │ ├── SweptWing.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ └── templates/ │ │ │ ├── Ttail/ │ │ │ │ ├── Ttail_3beams.rst │ │ │ │ ├── Ttail_canonical.rst │ │ │ │ └── index.rst │ │ │ ├── flying_wings/ │ │ │ │ ├── FlyingWing.rst │ │ │ │ ├── Goland.rst │ │ │ │ ├── Pazy.rst │ │ │ │ ├── QuasiInfinite.rst │ │ │ │ ├── Smith.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ └── template_wt/ │ │ │ ├── create_blade_coordinates.rst │ │ │ ├── create_node_radial_pos_from_elem_centres.rst │ │ │ ├── generate_from_excel_type03.rst │ │ │ ├── index.rst │ │ │ ├── rotor_from_excel_type03.rst │ │ │ └── spar_from_excel_type04.rst │ │ ├── controllers/ │ │ │ ├── controlsurfacepidcontroller/ │ │ │ │ ├── ControlSurfacePidController.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ └── takeofftrajectorycontroller/ │ │ │ ├── TakeOffTrajectoryController.rst │ │ │ └── index.rst │ │ ├── generators/ │ │ │ ├── bumpvelocityfield/ │ │ │ │ ├── BumpVelocityField.rst │ │ │ │ └── index.rst │ │ │ ├── dynamiccontrolsurface/ │ │ │ │ ├── DynamicControlSurface.rst │ │ │ │ └── index.rst │ │ │ ├── floatingforces/ │ │ │ │ ├── FloatingForces.rst │ │ │ │ ├── change_of_to_sharpy.rst │ │ │ │ ├── compute_equiv_hd_added_mass.rst │ │ │ │ ├── compute_jacobian.rst │ │ │ │ ├── compute_xf_zf.rst │ │ │ │ ├── index.rst │ │ │ │ ├── jonswap_spectrum.rst │ │ │ │ ├── matrix_from_rf.rst │ │ │ │ ├── noise_freq_1s.rst │ │ │ │ ├── quasisteady_mooring.rst │ │ │ │ ├── rename_terms.rst │ │ │ │ ├── response_freq_dep_matrix.rst │ │ │ │ ├── rfval.rst │ │ │ │ ├── time_wave_forces.rst │ │ │ │ └── wave_radiation_damping.rst │ │ │ ├── gridbox/ │ │ │ │ ├── GridBox.rst │ │ │ │ └── index.rst │ │ │ ├── gustvelocityfield/ │ │ │ │ ├── DARPA.rst │ │ │ │ ├── GustVelocityField.rst │ │ │ │ ├── continuous_sin.rst │ │ │ │ ├── index.rst │ │ │ │ ├── lateral_one_minus_cos.rst │ │ │ │ ├── one_minus_cos.rst │ │ │ │ ├── span_sine.rst │ │ │ │ ├── time_varying.rst │ │ │ │ └── time_varying_global.rst │ │ │ ├── helicoidalwake/ │ │ │ │ ├── HelicoidalWake.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ ├── modifystructure/ │ │ │ │ ├── ChangeLumpedMass.rst │ │ │ │ ├── ChangedVariable.rst │ │ │ │ ├── LumpedMassControl.rst │ │ │ │ ├── ModifyStructure.rst │ │ │ │ └── index.rst │ │ │ ├── polaraeroforces/ │ │ │ │ ├── EfficiencyCorrection.rst │ │ │ │ ├── PolarCorrection.rst │ │ │ │ ├── get_aoacl0_from_camber.rst │ │ │ │ ├── index.rst │ │ │ │ ├── local_stability_axes.rst │ │ │ │ ├── magnitude_and_direction_of_relative_velocity.rst │ │ │ │ └── span_chord.rst │ │ │ ├── shearvelocityfield/ │ │ │ │ ├── ShearVelocityField.rst │ │ │ │ └── index.rst │ │ │ ├── steadyvelocityfield/ │ │ │ │ ├── SteadyVelocityField.rst │ │ │ │ └── index.rst │ │ │ ├── straightwake/ │ │ │ │ ├── StraightWake.rst │ │ │ │ └── index.rst │ │ │ ├── trajectorygenerator/ │ │ │ │ ├── TrajectoryGenerator.rst │ │ │ │ └── index.rst │ │ │ ├── turbvelocityfield/ │ │ │ │ ├── TurbVelocityField.rst │ │ │ │ └── index.rst │ │ │ └── turbvelocityfieldbts/ │ │ │ ├── TurbVelocityFieldBts.rst │ │ │ └── index.rst │ │ ├── index.rst │ │ ├── io/ │ │ │ ├── index.rst │ │ │ ├── inout_variables/ │ │ │ │ ├── SetOfVariables.rst │ │ │ │ └── index.rst │ │ │ └── network_interface/ │ │ │ ├── InNetwork.rst │ │ │ ├── Network.rst │ │ │ ├── NetworkLoader.rst │ │ │ ├── OutNetwork.rst │ │ │ └── index.rst │ │ ├── linear/ │ │ │ ├── assembler/ │ │ │ │ ├── index.rst │ │ │ │ ├── lincontrolsurfacedeflector/ │ │ │ │ │ ├── LinControlSurfaceDeflector.rst │ │ │ │ │ ├── der_R_arbitrary_axis_times_v.rst │ │ │ │ │ └── index.rst │ │ │ │ ├── linearaeroelastic/ │ │ │ │ │ ├── LinearAeroelastic.rst │ │ │ │ │ └── index.rst │ │ │ │ ├── linearbeam/ │ │ │ │ │ ├── LinearBeam.rst │ │ │ │ │ └── index.rst │ │ │ │ ├── lineargustassembler/ │ │ │ │ │ ├── LeadingEdge.rst │ │ │ │ │ ├── MultiLeadingEdge.rst │ │ │ │ │ ├── campbell.rst │ │ │ │ │ ├── gust_from_string.rst │ │ │ │ │ ├── index.rst │ │ │ │ │ └── spanwise_interpolation.rst │ │ │ │ └── linearuvlm/ │ │ │ │ ├── LinearUVLM.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ └── src/ │ │ │ ├── assembly/ │ │ │ │ ├── AICs.rst │ │ │ │ ├── dfqsdgamma_vrel0.rst │ │ │ │ ├── dfqsduinput.rst │ │ │ │ ├── dfqsdvind_gamma.rst │ │ │ │ ├── dfqsdvind_zeta.rst │ │ │ │ ├── dfqsdzeta_omega.rst │ │ │ │ ├── dfqsdzeta_vrel0.rst │ │ │ │ ├── dfunstdgamma_dot.rst │ │ │ │ ├── dvinddzeta.rst │ │ │ │ ├── dvinddzeta_cpp.rst │ │ │ │ ├── eval_panel_cpp.rst │ │ │ │ ├── index.rst │ │ │ │ ├── nc_domegazetadzeta.rst │ │ │ │ ├── nc_dqcdzeta.rst │ │ │ │ ├── nc_dqcdzeta_Sin_to_Sout.rst │ │ │ │ ├── test_wake_prop_term.rst │ │ │ │ ├── uc_dncdzeta.rst │ │ │ │ ├── wake_prop.rst │ │ │ │ └── wake_prop_from_dimensions.rst │ │ │ ├── gridmapping/ │ │ │ │ ├── AeroGridMap.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ ├── interp/ │ │ │ │ ├── get_Wnv_vector.rst │ │ │ │ ├── get_Wvc_scalar.rst │ │ │ │ ├── get_panel_wcv.rst │ │ │ │ └── index.rst │ │ │ ├── lib_dbiot/ │ │ │ │ ├── Dvcross_by_skew3d.rst │ │ │ │ ├── eval_panel_comp.rst │ │ │ │ ├── eval_panel_cpp.rst │ │ │ │ ├── eval_panel_exp.rst │ │ │ │ ├── eval_panel_fast.rst │ │ │ │ ├── eval_panel_fast_coll.rst │ │ │ │ ├── eval_seg_comp_loop.rst │ │ │ │ ├── eval_seg_exp.rst │ │ │ │ ├── eval_seg_exp_loop.rst │ │ │ │ └── index.rst │ │ │ ├── lib_ucdncdzeta/ │ │ │ │ ├── eval.rst │ │ │ │ └── index.rst │ │ │ ├── libfit/ │ │ │ │ ├── fitfrd.rst │ │ │ │ ├── get_rfa_res.rst │ │ │ │ ├── get_rfa_res_norm.rst │ │ │ │ ├── index.rst │ │ │ │ ├── poly_fit.rst │ │ │ │ ├── rfa.rst │ │ │ │ ├── rfa_fit_dev.rst │ │ │ │ ├── rfa_mimo.rst │ │ │ │ └── rfader.rst │ │ │ ├── libsparse/ │ │ │ │ ├── block_dot.rst │ │ │ │ ├── block_matrix_dot_vector.rst │ │ │ │ ├── block_sum.rst │ │ │ │ ├── csc_matrix.rst │ │ │ │ ├── dense.rst │ │ │ │ ├── dot.rst │ │ │ │ ├── eye_as.rst │ │ │ │ ├── index.rst │ │ │ │ ├── solve.rst │ │ │ │ └── zeros_as.rst │ │ │ ├── libss/ │ │ │ │ ├── Hnorm_from_freq_resp.rst │ │ │ │ ├── SSconv.rst │ │ │ │ ├── SSderivative.rst │ │ │ │ ├── SSintegr.rst │ │ │ │ ├── StateSpace.rst │ │ │ │ ├── addGain.rst │ │ │ │ ├── adjust_phase.rst │ │ │ │ ├── build_SS_poly.rst │ │ │ │ ├── butter.rst │ │ │ │ ├── compare_ss.rst │ │ │ │ ├── couple.rst │ │ │ │ ├── disc2cont.rst │ │ │ │ ├── eigvals.rst │ │ │ │ ├── freqresp.rst │ │ │ │ ├── get_freq_from_eigs.rst │ │ │ │ ├── index.rst │ │ │ │ ├── join.rst │ │ │ │ ├── join2.rst │ │ │ │ ├── parallel.rst │ │ │ │ ├── project.rst │ │ │ │ ├── random_ss.rst │ │ │ │ ├── retain_inout_channels.rst │ │ │ │ ├── scale_SS.rst │ │ │ │ ├── series.rst │ │ │ │ ├── simulate.rst │ │ │ │ ├── ss_block.rst │ │ │ │ ├── ss_to_scipy.rst │ │ │ │ └── sum_ss.rst │ │ │ ├── lin_aeroelastic/ │ │ │ │ ├── LinAeroEla.rst │ │ │ │ └── index.rst │ │ │ ├── lin_utils/ │ │ │ │ ├── Info.rst │ │ │ │ ├── comp_tot_force.rst │ │ │ │ ├── extract_from_data.rst │ │ │ │ ├── index.rst │ │ │ │ └── solve_linear.rst │ │ │ ├── lingebm/ │ │ │ │ ├── FlexDynamic.rst │ │ │ │ ├── index.rst │ │ │ │ ├── newmark_ss.rst │ │ │ │ └── sort_eigvals.rst │ │ │ ├── linuvlm/ │ │ │ │ ├── Dynamic.rst │ │ │ │ ├── DynamicBlock.rst │ │ │ │ ├── Frequency.rst │ │ │ │ ├── Static.rst │ │ │ │ ├── get_Cw_cpx.rst │ │ │ │ └── index.rst │ │ │ ├── multisurfaces/ │ │ │ │ ├── MultiAeroGridSurfaces.rst │ │ │ │ └── index.rst │ │ │ └── surface/ │ │ │ ├── AeroGridGeo.rst │ │ │ ├── AeroGridSurface.rst │ │ │ ├── get_aic3_cpp.rst │ │ │ └── index.rst │ │ ├── postprocs/ │ │ │ ├── AeroForcesCalculator.rst │ │ │ ├── AerogridPlot.rst │ │ │ ├── AsymptoticStability.rst │ │ │ ├── BeamLoads.rst │ │ │ ├── BeamPlot.rst │ │ │ ├── Cleanup.rst │ │ │ ├── FrequencyResponse.rst │ │ │ ├── LiftDistribution.rst │ │ │ ├── PickleData.rst │ │ │ ├── PlotFlowField.rst │ │ │ ├── SaveData.rst │ │ │ ├── SaveParametricCase.rst │ │ │ ├── StabilityDerivatives.rst │ │ │ ├── StallCheck.rst │ │ │ ├── UDPout.rst │ │ │ └── WriteVariablesTime.rst │ │ ├── rom/ │ │ │ ├── balanced/ │ │ │ │ ├── Balanced.rst │ │ │ │ ├── Direct.rst │ │ │ │ ├── FrequencyLimited.rst │ │ │ │ ├── Iterative.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ ├── krylov/ │ │ │ │ ├── Krylov.rst │ │ │ │ └── index.rst │ │ │ └── utils/ │ │ │ ├── index.rst │ │ │ ├── krylovutils/ │ │ │ │ ├── check_eye.rst │ │ │ │ ├── construct_krylov.rst │ │ │ │ ├── evec.rst │ │ │ │ ├── index.rst │ │ │ │ ├── lu_factor.rst │ │ │ │ ├── lu_solve.rst │ │ │ │ ├── mgs_ortho.rst │ │ │ │ ├── remove_a12.rst │ │ │ │ └── schur_ordered.rst │ │ │ ├── librom/ │ │ │ │ ├── balfreq.rst │ │ │ │ ├── balreal_direct_py.rst │ │ │ │ ├── balreal_iter.rst │ │ │ │ ├── balreal_iter_old.rst │ │ │ │ ├── check_stability.rst │ │ │ │ ├── eigen_dec.rst │ │ │ │ ├── get_gauss_weights.rst │ │ │ │ ├── get_trapz_weights.rst │ │ │ │ ├── index.rst │ │ │ │ ├── low_rank_smith.rst │ │ │ │ ├── modred.rst │ │ │ │ ├── res_discrete_lyap.rst │ │ │ │ ├── smith_iter.rst │ │ │ │ └── tune_rom.rst │ │ │ └── librom_interp/ │ │ │ ├── FLB_transfer_function.rst │ │ │ ├── InterpROM.rst │ │ │ ├── index.rst │ │ │ └── transfer_function.rst │ │ ├── solvers/ │ │ │ ├── aero/ │ │ │ │ ├── DynamicUVLM.rst │ │ │ │ ├── NoAero.rst │ │ │ │ ├── PrescribedUvlm.rst │ │ │ │ ├── StaticUvlm.rst │ │ │ │ ├── StepLinearUVLM.rst │ │ │ │ └── StepUvlm.rst │ │ │ ├── aero_solvers.rst │ │ │ ├── coupled/ │ │ │ │ ├── DynamicCoupled.rst │ │ │ │ ├── LinDynamicSim.rst │ │ │ │ ├── StaticCoupled.rst │ │ │ │ └── StaticCoupledRBM.rst │ │ │ ├── coupled_solvers.rst │ │ │ ├── flight dynamics/ │ │ │ │ ├── StaticTrim.rst │ │ │ │ └── Trim.rst │ │ │ ├── flight dynamics_solvers.rst │ │ │ ├── linear/ │ │ │ │ ├── LinearAssembler.rst │ │ │ │ └── Modal.rst │ │ │ ├── linear_solvers.rst │ │ │ ├── loader/ │ │ │ │ ├── AerogridLoader.rst │ │ │ │ ├── BeamLoader.rst │ │ │ │ └── PreSharpy.rst │ │ │ ├── loader_solvers.rst │ │ │ ├── structural/ │ │ │ │ ├── NonLinearDynamic.rst │ │ │ │ ├── NonLinearDynamicCoupledStep.rst │ │ │ │ ├── NonLinearDynamicMultibody.rst │ │ │ │ ├── NonLinearDynamicPrescribedStep.rst │ │ │ │ ├── NonLinearStatic.rst │ │ │ │ ├── RigidDynamicCoupledStep.rst │ │ │ │ └── RigidDynamicPrescribedStep.rst │ │ │ ├── structural_solvers.rst │ │ │ ├── time_integrator/ │ │ │ │ ├── GeneralisedAlpha.rst │ │ │ │ └── NewmarkBeta.rst │ │ │ └── time_integrator_solvers.rst │ │ ├── structure/ │ │ │ ├── index.rst │ │ │ ├── models/ │ │ │ │ ├── beam/ │ │ │ │ │ ├── StructTimeStepInfo.rst │ │ │ │ │ └── index.rst │ │ │ │ ├── beamstructures/ │ │ │ │ │ ├── Element.rst │ │ │ │ │ └── index.rst │ │ │ │ └── index.rst │ │ │ └── utils/ │ │ │ ├── index.rst │ │ │ ├── lagrangeconstraints/ │ │ │ │ ├── BaseLagrangeConstraint.rst │ │ │ │ ├── constant_rot_vel_FoR.rst │ │ │ │ ├── constant_vel_FoR.rst │ │ │ │ ├── def_rot_axis_FoR_wrt_node_general.rst │ │ │ │ ├── def_rot_axis_FoR_wrt_node_xyz.rst │ │ │ │ ├── def_rot_vect_FoR_wrt_node.rst │ │ │ │ ├── def_rot_vel_FoR_wrt_node.rst │ │ │ │ ├── define_FoR_dof.rst │ │ │ │ ├── define_node_dof.rst │ │ │ │ ├── define_num_LM_eq.rst │ │ │ │ ├── equal_lin_vel_node_FoR.rst │ │ │ │ ├── equal_pos_node_FoR.rst │ │ │ │ ├── free.rst │ │ │ │ ├── fully_constrained_node_FoR.rst │ │ │ │ ├── generate_lagrange_matrix.rst │ │ │ │ ├── hinge_FoR.rst │ │ │ │ ├── hinge_FoR_wrtG.rst │ │ │ │ ├── hinge_node_FoR.rst │ │ │ │ ├── hinge_node_FoR_constant_vel.rst │ │ │ │ ├── index.rst │ │ │ │ ├── initialise_lc.rst │ │ │ │ ├── lagrangeconstraint.rst │ │ │ │ ├── lc_from_string.rst │ │ │ │ ├── lin_vel_node_wrtA.rst │ │ │ │ ├── lin_vel_node_wrtG.rst │ │ │ │ ├── postprocess.rst │ │ │ │ ├── print_available_lc.rst │ │ │ │ ├── remove_constraint.rst │ │ │ │ ├── spherical_FoR.rst │ │ │ │ └── spherical_node_FoR.rst │ │ │ ├── modalutils/ │ │ │ │ ├── assert_modes_mass_normalised.rst │ │ │ │ ├── assert_orthogonal_eigenvectors.rst │ │ │ │ ├── free_modes_principal_axes.rst │ │ │ │ ├── get_mode_zeta.rst │ │ │ │ ├── index.rst │ │ │ │ ├── mode_sign_convention.rst │ │ │ │ ├── modes_to_cg_ref.rst │ │ │ │ ├── principal_axes_inertia.rst │ │ │ │ ├── scale_mass_normalised_modes.rst │ │ │ │ ├── scale_mode.rst │ │ │ │ ├── write_modes_vtk.rst │ │ │ │ └── write_zeta_vtk.rst │ │ │ └── xbeamlib/ │ │ │ ├── Xbopts.rst │ │ │ ├── cbeam3_asbly_dynamic.rst │ │ │ ├── cbeam3_asbly_static.rst │ │ │ ├── cbeam3_correct_gravity_forces.rst │ │ │ ├── cbeam3_loads.rst │ │ │ ├── cbeam3_solv_modal.rst │ │ │ ├── cbeam3_solv_nlnstatic.rst │ │ │ ├── index.rst │ │ │ └── xbeam3_asbly_dynamic.rst │ │ └── utils/ │ │ ├── algebra/ │ │ │ ├── cross3.rst │ │ │ ├── crv2quat.rst │ │ │ ├── crv2rotation.rst │ │ │ ├── crv2tan.rst │ │ │ ├── crv_bounds.rst │ │ │ ├── der_CcrvT_by_v.rst │ │ │ ├── der_Ccrv_by_v.rst │ │ │ ├── der_Ceuler_by_v.rst │ │ │ ├── der_Ceuler_by_v_NED.rst │ │ │ ├── der_CquatT_by_v.rst │ │ │ ├── der_Cquat_by_v.rst │ │ │ ├── der_Peuler_by_v.rst │ │ │ ├── der_TanT_by_xv.rst │ │ │ ├── der_Tan_by_xv.rst │ │ │ ├── der_Teuler_by_w.rst │ │ │ ├── der_Teuler_by_w_NED.rst │ │ │ ├── der_quat_wrt_crv.rst │ │ │ ├── der_skewp_skewp_v.rst │ │ │ ├── deuler_dt.rst │ │ │ ├── deuler_dt_NED.rst │ │ │ ├── euler2quat.rst │ │ │ ├── euler2rot.rst │ │ │ ├── get_transformation_matrix.rst │ │ │ ├── get_triad.rst │ │ │ ├── index.rst │ │ │ ├── mat2quat.rst │ │ │ ├── multiply_matrices.rst │ │ │ ├── norm3d.rst │ │ │ ├── normsq3d.rst │ │ │ ├── panel_area.rst │ │ │ ├── quadskew.rst │ │ │ ├── quat2euler.rst │ │ │ ├── quat2rotation.rst │ │ │ ├── quat_bound.rst │ │ │ ├── rotation2crv.rst │ │ │ ├── rotation2quat.rst │ │ │ ├── rotation3d_x.rst │ │ │ ├── rotation3d_y.rst │ │ │ ├── rotation3d_z.rst │ │ │ ├── skew.rst │ │ │ ├── tangent_vector.rst │ │ │ ├── triad2rotation.rst │ │ │ └── unit_vector.rst │ │ ├── analytical/ │ │ │ ├── flat_plate_analytical.rst │ │ │ ├── garrick_drag_pitch.rst │ │ │ ├── garrick_drag_plunge.rst │ │ │ ├── index.rst │ │ │ ├── nc_derivs.rst │ │ │ ├── qs_derivs.rst │ │ │ ├── sears_CL_freq_resp.rst │ │ │ ├── sears_fun.rst │ │ │ ├── sears_lift_sin_gust.rst │ │ │ ├── theo_CL_freq_resp.rst │ │ │ ├── theo_CM_freq_resp.rst │ │ │ ├── theo_fun.rst │ │ │ ├── theo_lift.rst │ │ │ └── wagner_imp_start.rst │ │ ├── control_utils/ │ │ │ ├── PID.rst │ │ │ └── index.rst │ │ ├── datastructures/ │ │ │ ├── AeroTimeStepInfo.rst │ │ │ ├── Linear.rst │ │ │ ├── LinearTimeStepInfo.rst │ │ │ ├── StructTimeStepInfo.rst │ │ │ └── index.rst │ │ ├── docutils/ │ │ │ ├── check_folder_in_ignore.rst │ │ │ ├── generate_documentation.rst │ │ │ ├── index.rst │ │ │ ├── output_documentation_module_page.rst │ │ │ ├── write_file.rst │ │ │ └── write_folder.rst │ │ ├── exceptions/ │ │ │ ├── DocumentationError.rst │ │ │ ├── NotConvergedSolver.rst │ │ │ ├── NotRecognisedSetting.rst │ │ │ ├── NotValidSetting.rst │ │ │ └── index.rst │ │ ├── frequencyutils/ │ │ │ ├── find_limits.rst │ │ │ ├── find_target_system.rst │ │ │ ├── freqresp_relative_error.rst │ │ │ ├── frobenius_norm.rst │ │ │ ├── h_infinity_norm.rst │ │ │ ├── hamiltonian.rst │ │ │ ├── index.rst │ │ │ ├── l2norm.rst │ │ │ └── max_eigs.rst │ │ ├── generate_cases/ │ │ │ ├── AerodynamicInformation.rst │ │ │ ├── AeroelasticInformation.rst │ │ │ ├── SimulationInformation.rst │ │ │ ├── StructuralInformation.rst │ │ │ ├── clean_test_files.rst │ │ │ ├── from_node_array_to_elem_matrix.rst │ │ │ ├── from_node_list_to_elem_matrix.rst │ │ │ ├── get_airfoil_camber.rst │ │ │ ├── get_aoacl0_from_camber.rst │ │ │ ├── get_factor_geometric_progression.rst │ │ │ ├── get_mu0_from_camber.rst │ │ │ ├── index.rst │ │ │ └── read_column_sheet_type01.rst │ │ ├── generator_interface/ │ │ │ ├── index.rst │ │ │ └── output_documentation.rst │ │ ├── geo_utils/ │ │ │ ├── generate_naca_camber.rst │ │ │ ├── index.rst │ │ │ └── interpolate_naca_camber.rst │ │ ├── h5utils/ │ │ │ ├── add_array_to_grp.rst │ │ │ ├── add_as_grp.rst │ │ │ ├── check_file_exists.rst │ │ │ ├── index.rst │ │ │ ├── read_group.rst │ │ │ ├── readh5.rst │ │ │ ├── save_list_as_array.rst │ │ │ └── saveh5.rst │ │ ├── index.rst │ │ ├── model_utils/ │ │ │ ├── index.rst │ │ │ └── mass_matrix_generator.rst │ │ ├── multibody/ │ │ │ ├── disp_and_accel2state.rst │ │ │ ├── get_elems_nodes_list.rst │ │ │ ├── index.rst │ │ │ ├── merge_multibody.rst │ │ │ ├── split_multibody.rst │ │ │ ├── state2disp_and_accel.rst │ │ │ └── update_mb_dB_before_merge.rst │ │ ├── plotutils/ │ │ │ ├── index.rst │ │ │ ├── plot_timestep.rst │ │ │ └── set_axes_equal.rst │ │ └── settings/ │ │ ├── SettingsTable.rst │ │ ├── check_settings_in_options.rst │ │ ├── index.rst │ │ └── load_config_file.rst │ └── index.rst ├── environment.yml ├── environment_arm64.yml ├── lib/ │ ├── .placeholder │ └── CMakeLists.txt ├── pyproject.toml ├── scripts/ │ ├── __init__.py │ ├── optimiser/ │ │ ├── __init__.py │ │ ├── base_case/ │ │ │ └── generate.py │ │ ├── optimiser.py │ │ └── optimiser_input.yaml │ └── xplaneUDPout/ │ ├── HALE_varDIe.acf │ ├── __init__.py │ ├── variables.yaml │ └── xplaneUDP.py ├── setup.py ├── sharpy/ │ ├── __init__.py │ ├── aero/ │ │ ├── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── aerogrid.py │ │ │ ├── grid.py │ │ │ └── nonliftingbodygrid.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── airfoilpolars.py │ │ ├── mapping.py │ │ ├── utils.py │ │ └── uvlmlib.py │ ├── cases/ │ │ ├── __init__.py │ │ ├── coupled/ │ │ │ ├── WindTurbine/ │ │ │ │ ├── __init__.py │ │ │ │ └── generate_rotor.py │ │ │ ├── X-HALE/ │ │ │ │ ├── generate_xhale.py │ │ │ │ └── inputs/ │ │ │ │ ├── EMX-07_camber.txt │ │ │ │ ├── aero_properties.xlsx │ │ │ │ ├── beam_properties.xlsx │ │ │ │ └── lumped_mass.xlsx │ │ │ ├── __init__.py │ │ │ ├── hinged_controlled_wing/ │ │ │ │ ├── __init__.py │ │ │ │ ├── generate_hinged_controlled_wing.py │ │ │ │ └── generate_hinged_roll_controlled_wing.py │ │ │ ├── linear_horten/ │ │ │ │ └── __init__.py │ │ │ ├── multibody_takeoff/ │ │ │ │ ├── __init__.py │ │ │ │ └── generate_hale.py │ │ │ └── simple_HALE/ │ │ │ ├── __init__.py │ │ │ └── generate_hale.py │ │ ├── hangar/ │ │ │ ├── __init__.py │ │ │ ├── horten_wing.py │ │ │ ├── richards_wing.py │ │ │ └── swept_flying_wing.py │ │ └── templates/ │ │ ├── Ttail.py │ │ ├── __init__.py │ │ ├── flying_wings.py │ │ ├── fuselage_wing_configuration/ │ │ │ ├── __init__.py │ │ │ ├── fuselage_wing_configuration.py │ │ │ ├── fwc_aero.py │ │ │ ├── fwc_fuselage.py │ │ │ ├── fwc_get_settings.py │ │ │ └── fwc_structure.py │ │ └── template_wt.py │ ├── controllers/ │ │ ├── __init__.py │ │ ├── bladepitchpid.py │ │ ├── controlsurfacepidcontroller.py │ │ ├── multibodycontroller.py │ │ └── takeofftrajectorycontroller.py │ ├── generators/ │ │ ├── __init__.py │ │ ├── bumpvelocityfield.py │ │ ├── dynamiccontrolsurface.py │ │ ├── floatingforces.py │ │ ├── gridbox.py │ │ ├── gustvelocityfield.py │ │ ├── helicoidalwake.py │ │ ├── modifystructure.py │ │ ├── polaraeroforces.py │ │ ├── shearvelocityfield.py │ │ ├── steadyvelocityfield.py │ │ ├── straightwake.py │ │ ├── trajectorygenerator.py │ │ ├── turbvelocityfield.py │ │ └── turbvelocityfieldbts.py │ ├── io/ │ │ ├── __init__.py │ │ ├── inout_variables.py │ │ ├── logger_utils.py │ │ ├── message_interface.py │ │ └── network_interface.py │ ├── linear/ │ │ ├── __init__.py │ │ ├── assembler/ │ │ │ ├── __init__.py │ │ │ ├── lincontrolsurfacedeflector.py │ │ │ ├── linearaeroelastic.py │ │ │ ├── linearbeam.py │ │ │ ├── linearcustom.py │ │ │ ├── lineargustassembler.py │ │ │ └── linearuvlm.py │ │ ├── dev/ │ │ │ ├── __init__.py │ │ │ ├── linfunc.py │ │ │ ├── linsym_biot_segment.py │ │ │ ├── linsym_uc_dncdzeta.py │ │ │ └── sym_dev_dbiot.py │ │ ├── src/ │ │ │ ├── __init__.py │ │ │ ├── assembly.py │ │ │ ├── gridmapping.py │ │ │ ├── interp.py │ │ │ ├── lib_dbiot.py │ │ │ ├── lib_ucdncdzeta.py │ │ │ ├── libfit.py │ │ │ ├── libsparse.py │ │ │ ├── libss.py │ │ │ ├── lin_aeroelastic.py │ │ │ ├── lin_utils.py │ │ │ ├── lingebm.py │ │ │ ├── linuvlm.py │ │ │ ├── multisurfaces.py │ │ │ ├── surface.py │ │ │ └── uvlmutils.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── derivatives.py │ │ ├── ss_interface.py │ │ └── sselements.py │ ├── postproc/ │ │ ├── __init__.py │ │ ├── aeroforcescalculator.py │ │ ├── aerogridplot.py │ │ ├── asymptoticstability.py │ │ ├── beamloads.py │ │ ├── beamplot.py │ │ ├── cleanup.py │ │ ├── frequencyresponse.py │ │ ├── liftdistribution.py │ │ ├── pickledata.py │ │ ├── plotflowfield.py │ │ ├── savedata.py │ │ ├── saveparametriccase.py │ │ ├── stabilityderivatives.py │ │ ├── stallcheck.py │ │ ├── udpout.py │ │ └── writevariablestime.py │ ├── presharpy/ │ │ ├── __init__.py │ │ └── presharpy.py │ ├── rom/ │ │ ├── __init__.py │ │ ├── balanced.py │ │ ├── krylov.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── krylovutils.py │ │ ├── librom.py │ │ └── librom_interp.py │ ├── sharpy_main.py │ ├── solvers/ │ │ ├── __init__.py │ │ ├── _basestructural.py │ │ ├── aerogridloader.py │ │ ├── beamloader.py │ │ ├── dynamiccoupled.py │ │ ├── dynamicuvlm.py │ │ ├── gridloader.py │ │ ├── initialaeroelasticloader.py │ │ ├── lindynamicsim.py │ │ ├── linearassembler.py │ │ ├── modal.py │ │ ├── noaero.py │ │ ├── nonliftingbodygridloader.py │ │ ├── nonlineardynamic.py │ │ ├── nonlineardynamiccoupledstep.py │ │ ├── nonlineardynamicmultibody.py │ │ ├── nonlineardynamicmultibodyjax.py │ │ ├── nonlineardynamicprescribedstep.py │ │ ├── nonlinearstatic.py │ │ ├── nostructural.py │ │ ├── prescribeduvlm.py │ │ ├── rigiddynamiccoupledstep.py │ │ ├── rigiddynamicprescribedstep.py │ │ ├── staticcoupled.py │ │ ├── statictrim.py │ │ ├── staticuvlm.py │ │ ├── steplinearuvlm.py │ │ ├── stepuvlm.py │ │ ├── timeintegrators.py │ │ ├── timeintegratorsjax.py │ │ ├── trim.py │ │ └── updatepickle.py │ ├── structure/ │ │ ├── __init__.py │ │ ├── basestructure.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── beam.py │ │ │ └── beamstructures.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── lagrangeconstraints.py │ │ ├── lagrangeconstraintsjax.py │ │ ├── modalutils.py │ │ └── xbeamlib.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── algebra.py │ │ ├── analytical.py │ │ ├── constants.py │ │ ├── control_utils.py │ │ ├── controller_interface.py │ │ ├── cout_utils.py │ │ ├── ctypes_utils.py │ │ ├── datastructures.py │ │ ├── docutils.py │ │ ├── exceptions.py │ │ ├── frequencyutils.py │ │ ├── generate_cases.py │ │ ├── generator_interface.py │ │ ├── geo_utils.py │ │ ├── h5utils.py │ │ ├── input_arg.py │ │ ├── linearutils.py │ │ ├── model_utils.py │ │ ├── multibody.py │ │ ├── multibodyjax.py │ │ ├── num_utils.py │ │ ├── plotutils.py │ │ ├── rom_interface.py │ │ ├── settings.py │ │ ├── sharpydir.py │ │ └── solver_interface.py │ └── version.py ├── tests/ │ ├── __init__.py │ ├── coupled/ │ │ ├── __init__.py │ │ ├── dynamic/ │ │ │ ├── __init__.py │ │ │ ├── hale/ │ │ │ │ └── generate_hale.py │ │ │ └── test_dynamic.py │ │ ├── multibody/ │ │ │ ├── __init__.py │ │ │ ├── double_pendulum/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_double_pendulum_geradin.py │ │ │ ├── double_prescribed_pendulum/ │ │ │ │ └── test_double_prescribed_pendulum.py │ │ │ ├── double_slanted_pendulum/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_double_pendulum_slanted.py │ │ │ ├── fix_node_velocity_wrtA/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_fix_node_velocity_wrtA.py │ │ │ ├── fix_node_velocity_wrtG/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_fix_node_velocity_wrtG.py │ │ │ ├── floating_forces/ │ │ │ │ └── test_floatingforces.py │ │ │ └── floating_wind_turbine/ │ │ │ ├── oc3_cs_v07.floating.h5 │ │ │ └── test_floating_wind_turbine.py │ │ ├── prescribed/ │ │ │ ├── WindTurbine/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_rotor.py │ │ │ ├── __init__.py │ │ │ ├── gamma_dot_test/ │ │ │ │ └── test_gamma_dot.py │ │ │ ├── rotating_wing/ │ │ │ │ └── generate_rotating_wing.py │ │ │ └── test_prescribed.py │ │ └── static/ │ │ ├── __init__.py │ │ ├── pazy/ │ │ │ └── generate_pazy.py │ │ ├── smith_g_2deg/ │ │ │ ├── __init__.py │ │ │ └── generate_smith_g_2deg.py │ │ ├── smith_g_4deg/ │ │ │ ├── __init__.py │ │ │ └── generate_smith_g_4deg.py │ │ ├── smith_nog_2deg/ │ │ │ ├── __init__.py │ │ │ └── generate_smith_nog_2deg.py │ │ ├── smith_nog_4deg/ │ │ │ ├── __init__.py │ │ │ └── generate_smith_nog_4deg.py │ │ ├── test_pazy_static.py │ │ └── test_static.py │ ├── docs/ │ │ ├── __init__.py │ │ └── test_docs.py │ ├── io/ │ │ ├── Example_simple_hale/ │ │ │ ├── Client_HALE.py │ │ │ ├── __init__.py │ │ │ ├── generate_hale_io.py │ │ │ └── variables_hale.yaml │ │ ├── __init__.py │ │ ├── generate_pazy_udpout.py │ │ ├── sample_udp_inout/ │ │ │ ├── __init__.py │ │ │ ├── client.py │ │ │ ├── generate_pazy_test_io_local.py │ │ │ └── variables_coarse.yaml │ │ ├── test_pazy_udpout.py │ │ └── variables.yaml │ ├── linear/ │ │ ├── __init__.py │ │ ├── assembly/ │ │ │ ├── __init__.py │ │ │ └── test_assembly.py │ │ ├── control_surfaces/ │ │ │ ├── __init__.py │ │ │ └── test_control_surfaces.py │ │ ├── derivatives/ │ │ │ ├── __init__.py │ │ │ ├── test_ders.py │ │ │ └── test_stabilityderivatives.py │ │ ├── frequencyutils/ │ │ │ ├── __init__.py │ │ │ ├── src/ │ │ │ │ ├── a.npy │ │ │ │ ├── b.npy │ │ │ │ ├── c.npy │ │ │ │ └── d.npy │ │ │ └── test_frequency_utils.py │ │ ├── goland_wing/ │ │ │ ├── __init__.py │ │ │ └── test_goland_flutter.py │ │ ├── gusts/ │ │ │ ├── __init__.py │ │ │ ├── test_external_gust.py │ │ │ └── test_linear_gusts.py │ │ ├── horten/ │ │ │ ├── __init__.py │ │ │ └── test_horten.py │ │ ├── rom/ │ │ │ ├── __init__.py │ │ │ ├── src/ │ │ │ │ ├── A.mat │ │ │ │ ├── B.mat │ │ │ │ └── C.mat │ │ │ ├── test_balancing.py │ │ │ ├── test_krylov.py │ │ │ ├── test_rom_framework.py │ │ │ ├── test_schur.py │ │ │ └── test_springmasssystem.py │ │ ├── statespace/ │ │ │ ├── __init__.py │ │ │ ├── test_statespace.py │ │ │ └── test_variable_tracker.py │ │ └── uvlm/ │ │ ├── __init__.py │ │ └── test_infinite_span.py │ ├── sourcepanelmethod/ │ │ ├── __init__.py │ │ ├── geometry_parameter_models.json │ │ ├── test_data/ │ │ │ ├── results_low_wing_coupled_0.csv │ │ │ └── results_low_wing_coupled_1.csv │ │ ├── test_source_panel_method.py │ │ └── test_vlm_coupled_spm.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── test_algebra.py │ │ ├── test_generate_cases.py │ │ └── test_settings.py │ ├── uvlm/ │ │ ├── __init__.py │ │ ├── dynamic/ │ │ │ └── test_wake_cfl_n1.py │ │ └── static/ │ │ ├── __init__.py │ │ ├── big_wake_planarwing/ │ │ │ └── generate_big_wake_planarwing.py │ │ ├── planarwing/ │ │ │ ├── __init__.py │ │ │ └── generate_planarwing.py │ │ └── polars/ │ │ ├── __init__.py │ │ ├── generate_wing.py │ │ ├── test_polars.py │ │ └── xf-naca0018-il-50000.txt │ └── xbeam/ │ ├── __init__.py │ ├── geradin/ │ │ ├── __init__.py │ │ └── generate_geradin.py │ ├── modal/ │ │ └── rotating_beam/ │ │ └── generate_bielawa_baromega2_1e3.py │ └── test_xbeam.py └── utils/ ├── docker/ │ └── bashrc └── environment.yml