dymos 1.13.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dymos/__init__.py +12 -0
- dymos/_options.py +30 -0
- dymos/examples/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/aero/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/aero/aero_coef_comp.py +19 -0
- dymos/examples/aircraft_steady_flight/aero/aero_forces_comp.py +51 -0
- dymos/examples/aircraft_steady_flight/aero/aerodynamics_group.py +29 -0
- dymos/examples/aircraft_steady_flight/aero/crm_data.py +667 -0
- dymos/examples/aircraft_steady_flight/aero/data/CRM_aero_inputs.dat +27 -0
- dymos/examples/aircraft_steady_flight/aero/data/CRM_aero_outputs.dat +3 -0
- dymos/examples/aircraft_steady_flight/aero/interpND_aero_coef_comp.py +124 -0
- dymos/examples/aircraft_steady_flight/aero/test/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/aero/test/test_aero_coef_comp.py +184 -0
- dymos/examples/aircraft_steady_flight/aero/test/test_interpND_aero_coef_comp.py +219 -0
- dymos/examples/aircraft_steady_flight/aircraft_ode.py +68 -0
- dymos/examples/aircraft_steady_flight/dynamic_pressure_comp.py +30 -0
- dymos/examples/aircraft_steady_flight/flight_equlibrium/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/flight_equlibrium/lift_equilibrium_comp.py +76 -0
- dymos/examples/aircraft_steady_flight/flight_equlibrium/steady_flight_equilibrium_group.py +61 -0
- dymos/examples/aircraft_steady_flight/flight_equlibrium/test/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/flight_equlibrium/test/test_flight_equilibrium_group.py +64 -0
- dymos/examples/aircraft_steady_flight/flight_equlibrium/thrust_equilibrium_comp.py +86 -0
- dymos/examples/aircraft_steady_flight/mass_comp.py +34 -0
- dymos/examples/aircraft_steady_flight/propulsion/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/propulsion/fuel_burn_rate_comp.py +33 -0
- dymos/examples/aircraft_steady_flight/propulsion/max_thrust_comp.py +35 -0
- dymos/examples/aircraft_steady_flight/propulsion/propulsion_group.py +55 -0
- dymos/examples/aircraft_steady_flight/propulsion/test/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/propulsion/test/test_propulsion_group.py +48 -0
- dymos/examples/aircraft_steady_flight/propulsion/throttle_comp.py +35 -0
- dymos/examples/aircraft_steady_flight/propulsion/thrust_comp.py +49 -0
- dymos/examples/aircraft_steady_flight/propulsion/tsfc_comp.py +40 -0
- dymos/examples/aircraft_steady_flight/range_rate_comp.py +39 -0
- dymos/examples/aircraft_steady_flight/steady_flight_path_angle_comp.py +38 -0
- dymos/examples/aircraft_steady_flight/test/__init__.py +0 -0
- dymos/examples/aircraft_steady_flight/test/test_aircraft_cruise.py +316 -0
- dymos/examples/aircraft_steady_flight/test/test_aircraft_ode.py +53 -0
- dymos/examples/aircraft_steady_flight/test/test_ex_aircraft_steady_flight.py +156 -0
- dymos/examples/aircraft_steady_flight/true_airspeed_comp.py +29 -0
- dymos/examples/balanced_field/__init__.py +0 -0
- dymos/examples/balanced_field/balanced_field_length.py +189 -0
- dymos/examples/balanced_field/balanced_field_ode.py +122 -0
- dymos/examples/balanced_field/doc/__init__.py +0 -0
- dymos/examples/balanced_field/doc/test_doc_balanced_field_length.py +262 -0
- dymos/examples/balanced_field/test/__init__.py +0 -0
- dymos/examples/balanced_field/test/test_balanced_field_func_comp.py +164 -0
- dymos/examples/balanced_field/test/test_balanced_field_length.py +239 -0
- dymos/examples/battery_multibranch/__init__.py +0 -0
- dymos/examples/battery_multibranch/batteries.py +126 -0
- dymos/examples/battery_multibranch/battery_multibranch_ode.py +42 -0
- dymos/examples/battery_multibranch/motors.py +71 -0
- dymos/examples/battery_multibranch/test/__init__.py +0 -0
- dymos/examples/battery_multibranch/test/test_multibranch_trajectory.py +355 -0
- dymos/examples/brachistochrone/__init__.py +2 -0
- dymos/examples/brachistochrone/brachistochrone_ode.py +87 -0
- dymos/examples/brachistochrone/brachistochrone_vector_states_ode.py +72 -0
- dymos/examples/brachistochrone/doc/__init__.py +0 -0
- dymos/examples/brachistochrone/doc/brachistochrone_ode.py +73 -0
- dymos/examples/brachistochrone/doc/test_doc_brachistochrone.py +403 -0
- dymos/examples/brachistochrone/doc/test_doc_brachistochrone_static_gravity.py +179 -0
- dymos/examples/brachistochrone/doc/test_doc_brachistochrone_tandem_phases.py +163 -0
- dymos/examples/brachistochrone/doc/test_doc_brachistochrone_upstream_control.py +149 -0
- dymos/examples/brachistochrone/doc/test_doc_brachistochrone_upstream_state.py +167 -0
- dymos/examples/brachistochrone/test/__init__.py +0 -0
- dymos/examples/brachistochrone/test/ex_brachistochrone.py +104 -0
- dymos/examples/brachistochrone/test/ex_brachistochrone_vector_states.py +95 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_birkhoff_constraints.py +231 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_boundary_balance.py +204 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_callable_ode_class.py +369 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_control_rate_targets.py +226 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_external_control.py +140 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_implicit_recorder.py +80 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_integrated_control.py +256 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_integrated_parameter.py +229 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_path_constraint.py +64 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_quick_start.py +179 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_simulate_options.py +172 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_solve_segments.py +562 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_static_gravity.py +238 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_subprob_reports.py +203 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_timeseries_feedback.py +171 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_varying_order_control_simulation.py +169 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_vector_boundary_constraints.py +147 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_vector_path_constraints.py +305 -0
- dymos/examples/brachistochrone/test/test_brachistochrone_vector_states_ode.py +38 -0
- dymos/examples/brachistochrone/test/test_doc_brachistochrone_polynomial_controls.py +1507 -0
- dymos/examples/brachistochrone/test/test_duplicate_constraints.py +573 -0
- dymos/examples/brachistochrone/test/test_duplicate_timeseries_inputs.py +125 -0
- dymos/examples/brachistochrone/test/test_ex_brachistochrone.py +125 -0
- dymos/examples/brachistochrone/test/test_ex_brachistochrone_refine_grid.py +119 -0
- dymos/examples/brachistochrone/test/test_ex_brachistochrone_vector_states.py +150 -0
- dymos/examples/brachistochrone/test/test_path_constraints.py +329 -0
- dymos/examples/brachistochrone/test/test_phase_param_introspection_failure.py +686 -0
- dymos/examples/brachistochrone/test/test_simulate_units.py +102 -0
- dymos/examples/brachistochrone/test/test_state_rate_introspection.py +947 -0
- dymos/examples/brachistochrone/test/test_static_outputs.py +162 -0
- dymos/examples/brachistochrone/test/test_tandem_phases.py +178 -0
- dymos/examples/brachistochrone/test/test_timeseries_units.py +121 -0
- dymos/examples/cannonball/__init__.py +0 -0
- dymos/examples/cannonball/cannonball_ode.py +72 -0
- dymos/examples/cannonball/doc/__init__.py +0 -0
- dymos/examples/cannonball/doc/test_doc_cannonball_implicit_duration.py +230 -0
- dymos/examples/cannonball/doc/test_doc_two_phase_cannonball.py +256 -0
- dymos/examples/cannonball/size_comp.py +43 -0
- dymos/examples/cannonball/test/__init__.py +0 -0
- dymos/examples/cannonball/test/test_cannonball_connected_initial_states.py +126 -0
- dymos/examples/cannonball/test/test_cannonball_expr_constraint.py +124 -0
- dymos/examples/cannonball/test/test_cannonball_matrix_state.py +456 -0
- dymos/examples/cannonball/test/test_connect_control_to_parameter.py +205 -0
- dymos/examples/cannonball/test/test_load_case_missing_phase.py +191 -0
- dymos/examples/cannonball/test/test_phase_linkage_compliance.py +621 -0
- dymos/examples/cannonball/test/test_traj_param_static_and_dynamic.py +214 -0
- dymos/examples/cannonball/test/test_two_phase_cannonball_birkhoff.py +257 -0
- dymos/examples/cannonball/test/test_two_phase_cannonball_ode_output_linkage.py +384 -0
- dymos/examples/cannonball/test/test_two_phase_cannonball_renamed_time.py +112 -0
- dymos/examples/cart_pole/__init__.py +0 -0
- dymos/examples/cart_pole/animate_cartpole.py +75 -0
- dymos/examples/cart_pole/cartpole_dynamics.py +143 -0
- dymos/examples/cart_pole/test/test_cartpole_dynamics.py +39 -0
- dymos/examples/cart_pole/test/test_cartpole_opt.py +103 -0
- dymos/examples/double_integrator/__init__.py +0 -0
- dymos/examples/double_integrator/breakwell_ode.py +25 -0
- dymos/examples/double_integrator/doc/__init__.py +0 -0
- dymos/examples/double_integrator/doc/test_doc_double_integrator.py +111 -0
- dymos/examples/double_integrator/double_integrator_ode.py +19 -0
- dymos/examples/double_integrator/test/__init__.py +0 -0
- dymos/examples/double_integrator/test/test_double_integrator.py +225 -0
- dymos/examples/double_integrator/test/test_double_integrator_breakwell.py +132 -0
- dymos/examples/double_integrator/test/test_double_integrator_timeseries_units.py +118 -0
- dymos/examples/finite_burn_orbit_raise/__init__.py +0 -0
- dymos/examples/finite_burn_orbit_raise/doc/__init__.py +0 -0
- dymos/examples/finite_burn_orbit_raise/doc/test_doc_finite_burn_orbit_raise.py +241 -0
- dymos/examples/finite_burn_orbit_raise/finite_burn_eom.py +183 -0
- dymos/examples/finite_burn_orbit_raise/finite_burn_orbit_raise_problem.py +328 -0
- dymos/examples/finite_burn_orbit_raise/test/__init__.py +0 -0
- dymos/examples/finite_burn_orbit_raise/test/test_ex_two_burn_orbit_raise.py +43 -0
- dymos/examples/finite_burn_orbit_raise/test/test_ex_two_burn_orbit_raise_bokeh_plots.py +69 -0
- dymos/examples/finite_burn_orbit_raise/test/test_ex_two_burn_orbit_raise_mpi.py +70 -0
- dymos/examples/finite_burn_orbit_raise/test/test_finite_burn_eom.py +86 -0
- dymos/examples/finite_burn_orbit_raise/test/test_multi_phase_restart.py +202 -0
- dymos/examples/finite_burn_orbit_raise/test/test_two_burn_orbit_raise_linkages.py +1095 -0
- dymos/examples/finite_burn_orbit_raise/test/test_two_phase_orbit_double_linked.py +91 -0
- dymos/examples/flying_robot/__init__.py +0 -0
- dymos/examples/flying_robot/flying_robot_ode.py +29 -0
- dymos/examples/flying_robot/test/__init__.py +0 -0
- dymos/examples/flying_robot/test/test_flying_robot.py +104 -0
- dymos/examples/goddard_rocket_problem/__init__.py +1 -0
- dymos/examples/goddard_rocket_problem/rocket_ode.py +57 -0
- dymos/examples/goddard_rocket_problem/test/__init__.py +0 -0
- dymos/examples/goddard_rocket_problem/test/test_goddard_rocket_problem.py +133 -0
- dymos/examples/hull_problem/__init__.py +0 -0
- dymos/examples/hull_problem/hull_ode.py +26 -0
- dymos/examples/hull_problem/test/__init__.py +0 -0
- dymos/examples/hull_problem/test/test_hull_problem.py +127 -0
- dymos/examples/hyper_sensitive/__init__.py +1 -0
- dymos/examples/hyper_sensitive/doc/__init__.py +0 -0
- dymos/examples/hyper_sensitive/doc/test_doc_hyper_sensitive.py +121 -0
- dymos/examples/hyper_sensitive/hyper_sensitive_ode.py +41 -0
- dymos/examples/hyper_sensitive/test/__init__.py +0 -0
- dymos/examples/hyper_sensitive/test/test_hyper_sensitive.py +176 -0
- dymos/examples/length_constrained_brachistochrone/__init__.py +0 -0
- dymos/examples/length_constrained_brachistochrone/arc_length_comp.py +37 -0
- dymos/examples/length_constrained_brachistochrone/doc/__init__.py +0 -0
- dymos/examples/length_constrained_brachistochrone/doc/test_doc_length_constrained_brachistochrone.py +127 -0
- dymos/examples/low_thrust_spiral/__init__.py +1 -0
- dymos/examples/low_thrust_spiral/low_thrust_ode.py +66 -0
- dymos/examples/low_thrust_spiral/test/__init__.py +0 -0
- dymos/examples/low_thrust_spiral/test/test_low_thrust_spiral.py +109 -0
- dymos/examples/min_time_climb/__init__.py +0 -0
- dymos/examples/min_time_climb/aero/__init__.py +1 -0
- dymos/examples/min_time_climb/aero/aero.py +76 -0
- dymos/examples/min_time_climb/aero/cd0_comp.py +44 -0
- dymos/examples/min_time_climb/aero/cd_comp.py +36 -0
- dymos/examples/min_time_climb/aero/cl_comp.py +31 -0
- dymos/examples/min_time_climb/aero/cla_comp.py +49 -0
- dymos/examples/min_time_climb/aero/dynamic_pressure_comp.py +27 -0
- dymos/examples/min_time_climb/aero/kappa_comp.py +51 -0
- dymos/examples/min_time_climb/aero/lift_drag_force_comp.py +60 -0
- dymos/examples/min_time_climb/aero/mach_comp.py +33 -0
- dymos/examples/min_time_climb/aero/test/__init__.py +0 -0
- dymos/examples/min_time_climb/aero/test/test_aerodynamics.py +61 -0
- dymos/examples/min_time_climb/aero/test/test_cd0_comp.py +73 -0
- dymos/examples/min_time_climb/aero/test/test_cla_comp.py +74 -0
- dymos/examples/min_time_climb/aero/test/test_kappa_comp.py +45 -0
- dymos/examples/min_time_climb/doc/__init__.py +0 -0
- dymos/examples/min_time_climb/doc/aero_partial_coloring.py +85 -0
- dymos/examples/min_time_climb/doc/dynamic_pressure_comp_partial_coloring.py +25 -0
- dymos/examples/min_time_climb/doc/min_time_climb_ode_partial_coloring.py +44 -0
- dymos/examples/min_time_climb/min_time_climb_ode.py +42 -0
- dymos/examples/min_time_climb/prop/__init__.py +2 -0
- dymos/examples/min_time_climb/prop/max_thrust_comp.py +72 -0
- dymos/examples/min_time_climb/prop/mdot_comp.py +35 -0
- dymos/examples/min_time_climb/prop/prop.py +54 -0
- dymos/examples/min_time_climb/prop/test/__init__.py +0 -0
- dymos/examples/min_time_climb/prop/test/test_max_thrust_comp.py +40 -0
- dymos/examples/min_time_climb/prop/thrust_comp.py +34 -0
- dymos/examples/min_time_climb/test/__init__.py +0 -0
- dymos/examples/min_time_climb/test/test_doc_min_time_climb_partial_coloring.py +124 -0
- dymos/examples/min_time_climb/test/test_ex_min_time_climb.py +385 -0
- dymos/examples/min_time_climb/test/test_min_time_climb_simulate_failure.py +101 -0
- dymos/examples/min_time_climb/test/test_refine_with_shaped_parameter.py +173 -0
- dymos/examples/moon_landing/__init__.py +1 -0
- dymos/examples/moon_landing/moon_landing_ode.py +45 -0
- dymos/examples/moon_landing/test/__init__.py +0 -0
- dymos/examples/moon_landing/test/test_moon_landing_problem.py +86 -0
- dymos/examples/oscillator/__init__.py +0 -0
- dymos/examples/oscillator/oscillator_ode.py +72 -0
- dymos/examples/oscillator/test/__init__.py +0 -0
- dymos/examples/oscillator/test/test_oscillator.py +432 -0
- dymos/examples/oscillator/test/test_oscillator_vector_states.py +99 -0
- dymos/examples/plotting.py +53 -0
- dymos/examples/racecar/Track.py +36 -0
- dymos/examples/racecar/__init__.py +0 -0
- dymos/examples/racecar/accelerationODE.py +83 -0
- dymos/examples/racecar/carODE.py +266 -0
- dymos/examples/racecar/combinedODE.py +58 -0
- dymos/examples/racecar/curvature.py +43 -0
- dymos/examples/racecar/linewidthhelper.py +34 -0
- dymos/examples/racecar/normalForceODE.py +113 -0
- dymos/examples/racecar/spline.py +131 -0
- dymos/examples/racecar/test/__init__.py +0 -0
- dymos/examples/racecar/test/test_racecar.py +189 -0
- dymos/examples/racecar/timeAdder.py +36 -0
- dymos/examples/racecar/timeODE.py +109 -0
- dymos/examples/racecar/tireConstraintODE.py +177 -0
- dymos/examples/racecar/tireODE.py +163 -0
- dymos/examples/racecar/tracks.py +367 -0
- dymos/examples/robertson_problem/__init__.py +0 -0
- dymos/examples/robertson_problem/doc/__init__.py +0 -0
- dymos/examples/robertson_problem/doc/test_doc_robertson_problem.py +113 -0
- dymos/examples/robertson_problem/robertson_ode.py +60 -0
- dymos/examples/robot_arm/__init__.py +0 -0
- dymos/examples/robot_arm/doc/__init__.py +0 -0
- dymos/examples/robot_arm/doc/test_doc_robot_arm.py +114 -0
- dymos/examples/robot_arm/robot_arm_ode.py +91 -0
- dymos/examples/robot_arm/test/__init__.py +0 -0
- dymos/examples/robot_arm/test/test_robot_arm.py +206 -0
- dymos/examples/shuttle_reentry/__init__.py +0 -0
- dymos/examples/shuttle_reentry/aerodynamics_comp.py +77 -0
- dymos/examples/shuttle_reentry/atmosphere_comp.py +35 -0
- dymos/examples/shuttle_reentry/doc/__init__.py +0 -0
- dymos/examples/shuttle_reentry/doc/test_doc_reentry.py +110 -0
- dymos/examples/shuttle_reentry/flight_dynamics_comp.py +166 -0
- dymos/examples/shuttle_reentry/heating_comp.py +71 -0
- dymos/examples/shuttle_reentry/shuttle_ode.py +35 -0
- dymos/examples/shuttle_reentry/test/__init__.py +0 -0
- dymos/examples/shuttle_reentry/test/test_reentry.py +305 -0
- dymos/examples/ssto/__init__.py +0 -0
- dymos/examples/ssto/doc/__init__.py +0 -0
- dymos/examples/ssto/doc/test_doc_ssto_earth.py +142 -0
- dymos/examples/ssto/doc/test_doc_ssto_linear_tangent_guidance.py +302 -0
- dymos/examples/ssto/doc/test_doc_ssto_polynomial_control.py +317 -0
- dymos/examples/ssto/launch_vehicle_ode.py +121 -0
- dymos/examples/ssto/test/__init__.py +0 -0
- dymos/examples/ssto/test/test_linear_tangent_traj_params.py +330 -0
- dymos/examples/ssto/test/test_simulate_root_trajectory.py +322 -0
- dymos/examples/vanderpol/__init__.py +0 -0
- dymos/examples/vanderpol/doc/__init__.py +0 -0
- dymos/examples/vanderpol/doc/test_doc_vanderpol.py +136 -0
- dymos/examples/vanderpol/test/__init__.py +0 -0
- dymos/examples/vanderpol/test/test_vanderpol.py +80 -0
- dymos/examples/vanderpol/vanderpol_dymos.py +97 -0
- dymos/examples/vanderpol/vanderpol_ode.py +138 -0
- dymos/examples/water_rocket/__init__.py +0 -0
- dymos/examples/water_rocket/phases.py +192 -0
- dymos/examples/water_rocket/test/__init__.py +0 -0
- dymos/examples/water_rocket/test/test_water_rocket.py +246 -0
- dymos/examples/water_rocket/water_engine_comp.py +193 -0
- dymos/examples/water_rocket/water_propulsion_ode.py +85 -0
- dymos/grid_refinement/__init__.py +0 -0
- dymos/grid_refinement/error_estimation.py +372 -0
- dymos/grid_refinement/grid_refinement_ode_system.py +177 -0
- dymos/grid_refinement/hp_adaptive/__init__.py +0 -0
- dymos/grid_refinement/hp_adaptive/hp_adaptive.py +532 -0
- dymos/grid_refinement/ph_adaptive/__init__.py +0 -0
- dymos/grid_refinement/ph_adaptive/ph_adaptive.py +122 -0
- dymos/grid_refinement/refinement.py +93 -0
- dymos/grid_refinement/test/test_error_estimation.py +117 -0
- dymos/grid_refinement/test/test_grid_refinement.py +145 -0
- dymos/grid_refinement/write_iteration.py +95 -0
- dymos/load_case.py +207 -0
- dymos/models/__init__.py +0 -0
- dymos/models/atmosphere/__init__.py +1 -0
- dymos/models/atmosphere/atmos_1976.py +1674 -0
- dymos/models/atmosphere/test/__init__.py +0 -0
- dymos/models/atmosphere/test/test_atmos.py +104 -0
- dymos/models/eom/__init__.py +1 -0
- dymos/models/eom/flight_path_eom_2d.py +201 -0
- dymos/models/eom/test/__init__.py +0 -0
- dymos/models/eom/test/test_flight_path_eom_2d.py +145 -0
- dymos/phase/__init__.py +3 -0
- dymos/phase/analytic_phase.py +476 -0
- dymos/phase/options.py +706 -0
- dymos/phase/phase.py +3064 -0
- dymos/phase/simulation_phase.py +277 -0
- dymos/phase/test/__init__.py +0 -0
- dymos/phase/test/test_add_boundary_constraint.py +216 -0
- dymos/phase/test/test_add_parameter_types.py +84 -0
- dymos/phase/test/test_add_path_constraint.py +186 -0
- dymos/phase/test/test_analytic_phase.py +673 -0
- dymos/phase/test/test_implicit_duration.py +192 -0
- dymos/phase/test/test_input_parameter_connections.py +132 -0
- dymos/phase/test/test_interp.py +144 -0
- dymos/phase/test/test_phase.py +713 -0
- dymos/phase/test/test_set_time_options.py +251 -0
- dymos/phase/test/test_simulate.py +140 -0
- dymos/phase/test/test_sized_input_parameters.py +263 -0
- dymos/phase/test/test_state_discovery.py +253 -0
- dymos/phase/test/test_time_targets.py +396 -0
- dymos/phase/test/test_time_units.py +63 -0
- dymos/phase/test/test_timeseries.py +750 -0
- dymos/run_problem.py +158 -0
- dymos/test/__init__.py +0 -0
- dymos/test/test_check_partials.py +414 -0
- dymos/test/test_lint_docstrings.py +162 -0
- dymos/test/test_load_case.py +380 -0
- dymos/test/test_options.py +40 -0
- dymos/test/test_pycodestyle.py +111 -0
- dymos/test/test_readme.py +53 -0
- dymos/test/test_run_problem.py +908 -0
- dymos/trajectory/__init__.py +1 -0
- dymos/trajectory/options.py +99 -0
- dymos/trajectory/phase_linkage_comp.py +148 -0
- dymos/trajectory/test/__init__.py +0 -0
- dymos/trajectory/test/test_link_phases.py +127 -0
- dymos/trajectory/test/test_phase_linkage_comp.py +126 -0
- dymos/trajectory/test/test_t_initial_bounds.py +501 -0
- dymos/trajectory/test/test_trajectory.py +1906 -0
- dymos/trajectory/test/test_trajectory_parameters.py +644 -0
- dymos/trajectory/trajectory.py +1410 -0
- dymos/transcriptions/__init__.py +6 -0
- dymos/transcriptions/analytic/__init__.py +0 -0
- dymos/transcriptions/analytic/analytic.py +506 -0
- dymos/transcriptions/common/__init__.py +5 -0
- dymos/transcriptions/common/continuity_comp.py +434 -0
- dymos/transcriptions/common/control_comp.py +500 -0
- dymos/transcriptions/common/parameter_comp.py +191 -0
- dymos/transcriptions/common/test/__init__.py +0 -0
- dymos/transcriptions/common/test/test_continuity_comp.py +179 -0
- dymos/transcriptions/common/test/test_control_group.py +51 -0
- dymos/transcriptions/common/test/test_control_interp_comp.py +488 -0
- dymos/transcriptions/common/test/test_time_comp.py +141 -0
- dymos/transcriptions/common/time_comp.py +92 -0
- dymos/transcriptions/common/timeseries_output_comp.py +389 -0
- dymos/transcriptions/explicit_shooting/__init__.py +1 -0
- dymos/transcriptions/explicit_shooting/barycentric_control_interp_comp.py +618 -0
- dymos/transcriptions/explicit_shooting/cubic_spline_control_interp_comp.py +203 -0
- dymos/transcriptions/explicit_shooting/explicit_shooting.py +862 -0
- dymos/transcriptions/explicit_shooting/explicit_shooting_continuity_comp.py +254 -0
- dymos/transcriptions/explicit_shooting/ode_evaluation_group.py +368 -0
- dymos/transcriptions/explicit_shooting/ode_integration_comp.py +857 -0
- dymos/transcriptions/explicit_shooting/state_rate_collector_comp.py +82 -0
- dymos/transcriptions/explicit_shooting/tau_comp.py +135 -0
- dymos/transcriptions/explicit_shooting/test/__init__.py +0 -0
- dymos/transcriptions/explicit_shooting/test/test_explicit_shooting.py +655 -0
- dymos/transcriptions/explicit_shooting/test/test_ode_evaluation_group.py +121 -0
- dymos/transcriptions/explicit_shooting/test/test_ode_integration_comp.py +257 -0
- dymos/transcriptions/explicit_shooting/test/test_tau_comp.py +60 -0
- dymos/transcriptions/explicit_shooting/vandermonde_control_interp_comp.py +402 -0
- dymos/transcriptions/grid_data.py +850 -0
- dymos/transcriptions/picard_shooting/__init__.py +0 -0
- dymos/transcriptions/picard_shooting/birkhoff_picard_iter_group.py +113 -0
- dymos/transcriptions/picard_shooting/birkhoff_picard_update_comp.py +269 -0
- dymos/transcriptions/picard_shooting/multiple_shooting_iter_group.py +107 -0
- dymos/transcriptions/picard_shooting/multiple_shooting_update_comp.py +216 -0
- dymos/transcriptions/picard_shooting/picard_shooting.py +851 -0
- dymos/transcriptions/picard_shooting/states_comp.py +109 -0
- dymos/transcriptions/picard_shooting/test/test_birkhoff_picard_iter_group.py +301 -0
- dymos/transcriptions/picard_shooting/test/test_multiple_shooting_iter_group.py +230 -0
- dymos/transcriptions/pseudospectral/__init__.py +0 -0
- dymos/transcriptions/pseudospectral/birkhoff.py +782 -0
- dymos/transcriptions/pseudospectral/components/__init__.py +8 -0
- dymos/transcriptions/pseudospectral/components/birkhoff_boundary_group.py +154 -0
- dymos/transcriptions/pseudospectral/components/birkhoff_defect_comp.py +346 -0
- dymos/transcriptions/pseudospectral/components/birkhoff_iter_group.py +252 -0
- dymos/transcriptions/pseudospectral/components/collocation_comp.py +182 -0
- dymos/transcriptions/pseudospectral/components/control_endpoint_defect_comp.py +119 -0
- dymos/transcriptions/pseudospectral/components/gauss_lobatto_interleave_comp.py +158 -0
- dymos/transcriptions/pseudospectral/components/state_independents.py +214 -0
- dymos/transcriptions/pseudospectral/components/state_interp_comp.py +318 -0
- dymos/transcriptions/pseudospectral/components/test/__init__.py +0 -0
- dymos/transcriptions/pseudospectral/components/test/test_birkhoff_collocation_defect.py +130 -0
- dymos/transcriptions/pseudospectral/components/test/test_birkhoff_iter_group.py +145 -0
- dymos/transcriptions/pseudospectral/components/test/test_collocation_defect_opt.py +101 -0
- dymos/transcriptions/pseudospectral/components/test/test_collocation_defect_sol_opt.py +209 -0
- dymos/transcriptions/pseudospectral/components/test/test_collocation_defect_solver.py +385 -0
- dymos/transcriptions/pseudospectral/components/test/test_control_endpoint_defect_comp.py +70 -0
- dymos/transcriptions/pseudospectral/components/test/test_gauss_lobatto_interleave_comp.py +108 -0
- dymos/transcriptions/pseudospectral/components/test/test_state_interp_comp.py +426 -0
- dymos/transcriptions/pseudospectral/components/time_duration_comp.py +211 -0
- dymos/transcriptions/pseudospectral/gauss_lobatto.py +604 -0
- dymos/transcriptions/pseudospectral/pseudospectral_base.py +630 -0
- dymos/transcriptions/pseudospectral/radau_pseudospectral.py +445 -0
- dymos/transcriptions/pseudospectral/test/__init__.py +0 -0
- dymos/transcriptions/pseudospectral/test/test_ps_base.py +96 -0
- dymos/transcriptions/transcription_base.py +795 -0
- dymos/utils/__init__.py +0 -0
- dymos/utils/birkhoff.py +69 -0
- dymos/utils/cgl.py +94 -0
- dymos/utils/constants.py +13 -0
- dymos/utils/hermite.py +148 -0
- dymos/utils/indexing.py +118 -0
- dymos/utils/interpolate.py +250 -0
- dymos/utils/introspection.py +1169 -0
- dymos/utils/lagrange.py +72 -0
- dymos/utils/lg.py +89 -0
- dymos/utils/lgl.py +105 -0
- dymos/utils/lgr.py +120 -0
- dymos/utils/misc.py +310 -0
- dymos/utils/ode_utils.py +277 -0
- dymos/utils/test/__init__.py +0 -0
- dymos/utils/test/test_birkhoff.py +25 -0
- dymos/utils/test/test_cgl.py +44 -0
- dymos/utils/test/test_hermite.py +69 -0
- dymos/utils/test/test_indexing.py +40 -0
- dymos/utils/test/test_introspection.py +44 -0
- dymos/utils/test/test_lg.py +43 -0
- dymos/utils/test/test_lgl.py +53 -0
- dymos/utils/test/test_lgr.py +60 -0
- dymos/utils/test/test_misc.py +25 -0
- dymos/utils/test/test_testing_utils.py +512 -0
- dymos/utils/testing_utils.py +521 -0
- dymos/visualization/__init__.py +0 -0
- dymos/visualization/linkage/__init__.py +0 -0
- dymos/visualization/linkage/js/DmLinkageCellRenderer.js +90 -0
- dymos/visualization/linkage/js/DmLinkageDiagram.js +43 -0
- dymos/visualization/linkage/js/DmLinkageLegend.js +93 -0
- dymos/visualization/linkage/js/DmLinkageMatrix.js +322 -0
- dymos/visualization/linkage/js/DmLinkageMatrixCell.js +81 -0
- dymos/visualization/linkage/js/DmLinkageModelData.js +23 -0
- dymos/visualization/linkage/js/DmLinkageStyle.js +99 -0
- dymos/visualization/linkage/js/DmLinkageSymbolType.js +42 -0
- dymos/visualization/linkage/js/DmLinkageTreeNode.js +160 -0
- dymos/visualization/linkage/js/DmLinkageUserInterface.js +27 -0
- dymos/visualization/linkage/js/DmLinkage_main.js +25 -0
- dymos/visualization/linkage/report.py +409 -0
- dymos/visualization/linkage/report_template.html +285 -0
- dymos/visualization/linkage/style/linkage_report.css +114 -0
- dymos/visualization/linkage/test/__init__.py +0 -0
- dymos/visualization/linkage/test/linkage_report_ui_test.py +749 -0
- dymos/visualization/linkage/test/model_data.dat +1 -0
- dymos/visualization/linkage/test/test_gui.py +16 -0
- dymos/visualization/linkage/test/test_linkage_report.py +257 -0
- dymos/visualization/test/__init__.py +0 -0
- dymos/visualization/test/test_timeseries_plots.py +600 -0
- dymos/visualization/timeseries/__init__.py +0 -0
- dymos/visualization/timeseries/bokeh_timeseries_report.py +604 -0
- dymos/visualization/timeseries_plots.py +432 -0
- dymos-1.13.1.dist-info/METADATA +272 -0
- dymos-1.13.1.dist-info/RECORD +454 -0
- dymos-1.13.1.dist-info/WHEEL +4 -0
- dymos-1.13.1.dist-info/entry_points.txt +2 -0
- dymos-1.13.1.dist-info/licenses/LICENSE +189 -0
dymos/__init__.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
__version__ = '1.13.1'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
from .phase import Phase, AnalyticPhase
|
|
5
|
+
from .transcriptions import GaussLobatto, Radau, ExplicitShooting, Analytic, \
|
|
6
|
+
Birkhoff, PicardShooting
|
|
7
|
+
from .transcriptions.grid_data import GaussLobattoGrid, ChebyshevGaussLobattoGrid, \
|
|
8
|
+
RadauGrid, UniformGrid, BirkhoffGrid
|
|
9
|
+
from .trajectory.trajectory import Trajectory
|
|
10
|
+
from .run_problem import run_problem
|
|
11
|
+
from .load_case import load_case
|
|
12
|
+
from ._options import options
|
dymos/_options.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from openmdao.api import OptionsDictionary
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
options = OptionsDictionary()
|
|
7
|
+
|
|
8
|
+
_env_check_partials = os.environ.get('DYMOS_CHECK_PARTIALS', '0')
|
|
9
|
+
_icp_default = _env_check_partials.lower() in ('1', 'yes', 'true')
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _removed_option(name, value):
|
|
13
|
+
if value is not None:
|
|
14
|
+
raise ValueError(f'Option {name} has been replaced by '
|
|
15
|
+
'Phase.timeseries_options["use_prefix"].')
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
options.declare('include_check_partials', default=_icp_default, types=bool,
|
|
19
|
+
desc='If True, include dymos components when checking partials.')
|
|
20
|
+
|
|
21
|
+
options.declare('plots', default='bokeh', values=['matplotlib', 'bokeh'],
|
|
22
|
+
desc='The plot library used to generate output plots for Dymos.')
|
|
23
|
+
|
|
24
|
+
options.declare('notebook_mode', default=False, types=bool,
|
|
25
|
+
desc='If True, provide notebook-enhanced plots and outputs.')
|
|
26
|
+
|
|
27
|
+
options.declare('use_timeseries_prefix', default=None, allow_none=True,
|
|
28
|
+
check_valid=_removed_option,
|
|
29
|
+
desc='Note: This option is no longer valid and has been '
|
|
30
|
+
'replaced by Phase.timeseries_options["use_prefix"].')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import openmdao.api as om
|
|
3
|
+
|
|
4
|
+
from .crm_data import h_bp, alpha_bp, mach_bp, eta_bp, CL_data, CD_data, CM_data
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AeroCoefComp(om.MetaModelStructuredComp):
|
|
8
|
+
""" Interpolates aerodynamic coefficients for the NASA Common Research Model. """
|
|
9
|
+
|
|
10
|
+
def setup(self):
|
|
11
|
+
nn = self.options['vec_size']
|
|
12
|
+
self.add_input(name='mach', val=0.2 * np.ones(nn), units=None, training_data=mach_bp)
|
|
13
|
+
self.add_input(name='alpha', val=0.0 * np.ones(nn), units='deg', training_data=alpha_bp)
|
|
14
|
+
self.add_input(name='alt', val=0.0 * np.ones(nn), units='ft', training_data=h_bp)
|
|
15
|
+
self.add_input(name='eta', val=0.0 * np.ones(nn), units='deg', training_data=eta_bp)
|
|
16
|
+
|
|
17
|
+
self.add_output(name='CL', val=np.zeros(nn), units=None, training_data=CL_data)
|
|
18
|
+
self.add_output(name='CD', val=np.zeros(nn), units=None, training_data=CD_data + 0.015)
|
|
19
|
+
self.add_output(name='CM', val=np.zeros(nn), units=None, training_data=CM_data)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
import openmdao.api as om
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class AeroForcesComp(om.ExplicitComponent):
|
|
7
|
+
|
|
8
|
+
def initialize(self):
|
|
9
|
+
self.options.declare('num_nodes', types=int)
|
|
10
|
+
|
|
11
|
+
def setup(self):
|
|
12
|
+
nn = self.options['num_nodes']
|
|
13
|
+
|
|
14
|
+
self.add_input('q', val=np.ones(nn), desc='dynamic pressure', units='Pa')
|
|
15
|
+
self.add_input('S', val=np.ones(nn), desc='aerodynamic reference area', units='m**2')
|
|
16
|
+
self.add_input('CL', val=np.ones(nn), desc='lift coefficient', units=None)
|
|
17
|
+
self.add_input('CD', val=np.ones(nn), desc='drag coefficient', units=None)
|
|
18
|
+
|
|
19
|
+
self.add_output('L', val=np.ones(nn), desc='lift', units='N')
|
|
20
|
+
self.add_output('D', val=np.ones(nn), desc='drag', units='N')
|
|
21
|
+
|
|
22
|
+
ar = np.arange(nn)
|
|
23
|
+
|
|
24
|
+
self.declare_partials('L', 'q', rows=ar, cols=ar)
|
|
25
|
+
self.declare_partials('L', 'S', rows=ar, cols=ar)
|
|
26
|
+
self.declare_partials('L', 'CL', rows=ar, cols=ar)
|
|
27
|
+
|
|
28
|
+
self.declare_partials('D', 'q', rows=ar, cols=ar)
|
|
29
|
+
self.declare_partials('D', 'S', rows=ar, cols=ar)
|
|
30
|
+
self.declare_partials('D', 'CD', rows=ar, cols=ar)
|
|
31
|
+
|
|
32
|
+
def compute(self, inputs, outputs):
|
|
33
|
+
qS = inputs['q'] * inputs['S']
|
|
34
|
+
|
|
35
|
+
outputs['L'] = qS * inputs['CL']
|
|
36
|
+
outputs['D'] = qS * inputs['CD']
|
|
37
|
+
|
|
38
|
+
def compute_partials(self, inputs, partials):
|
|
39
|
+
q = inputs['q']
|
|
40
|
+
S = inputs['S']
|
|
41
|
+
CL = inputs['CL']
|
|
42
|
+
CD = inputs['CD']
|
|
43
|
+
qS = inputs['q'] * inputs['S']
|
|
44
|
+
|
|
45
|
+
partials['L', 'q'] = S * CL
|
|
46
|
+
partials['L', 'S'] = q * CL
|
|
47
|
+
partials['L', 'CL'] = qS
|
|
48
|
+
|
|
49
|
+
partials['D', 'q'] = S * CD
|
|
50
|
+
partials['D', 'S'] = q * CD
|
|
51
|
+
partials['D', 'CD'] = qS
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import openmdao.api as om
|
|
2
|
+
from .aero_forces_comp import AeroForcesComp
|
|
3
|
+
from .interpND_aero_coef_comp import InterpNDAeroCoeffComp, setup_surrogates_all
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class AerodynamicsGroup(om.Group):
|
|
7
|
+
"""
|
|
8
|
+
The purpose of the Aerodynamics is to compute the lift and
|
|
9
|
+
drag forces on the aircraft.
|
|
10
|
+
"""
|
|
11
|
+
def initialize(self):
|
|
12
|
+
self.options.declare('num_nodes', types=int)
|
|
13
|
+
|
|
14
|
+
def setup(self):
|
|
15
|
+
n = self.options['num_nodes']
|
|
16
|
+
|
|
17
|
+
interpND_CL, interpND_CD, interpND_CM, interp_num = setup_surrogates_all()
|
|
18
|
+
|
|
19
|
+
self.add_subsystem(name='aero_coef_comp',
|
|
20
|
+
subsys=InterpNDAeroCoeffComp(vec_size=n, interpND_CL=interpND_CL, interpND_CD=interpND_CD,
|
|
21
|
+
interpND_CM=interpND_CM,
|
|
22
|
+
interp_num=interp_num),
|
|
23
|
+
promotes_inputs=[('M', 'mach'), 'alpha', ('h', 'alt'), 'eta'],
|
|
24
|
+
promotes_outputs=['CL', 'CD', 'CM'])
|
|
25
|
+
|
|
26
|
+
self.add_subsystem(name='aero_forces_comp',
|
|
27
|
+
subsys=AeroForcesComp(num_nodes=n),
|
|
28
|
+
promotes_inputs=['q', 'S', 'CL', 'CD'],
|
|
29
|
+
promotes_outputs=['L', 'D'])
|