diff --git a/_images/24d366c4d197b5a4cbe8c3b8eed2cde0d3ca4cf1b1e3fd52747ce74ae156ed9a.png b/_images/24d366c4d197b5a4cbe8c3b8eed2cde0d3ca4cf1b1e3fd52747ce74ae156ed9a.png deleted file mode 100644 index 381063656..000000000 Binary files a/_images/24d366c4d197b5a4cbe8c3b8eed2cde0d3ca4cf1b1e3fd52747ce74ae156ed9a.png and /dev/null differ diff --git a/_images/350eb5f60f2e2a93e70c0eebe77b6abfb3f54e82034b2c42e882f44725a41e67.png b/_images/350eb5f60f2e2a93e70c0eebe77b6abfb3f54e82034b2c42e882f44725a41e67.png new file mode 100644 index 000000000..b530d8871 Binary files /dev/null and b/_images/350eb5f60f2e2a93e70c0eebe77b6abfb3f54e82034b2c42e882f44725a41e67.png differ diff --git a/_images/1101d4b0e6e85c6453f977dad1435479e5bee329b767f9ad4413c39489b7a5c7.png b/_images/bbd1f0cd9f9977b094573663b12d9d02d2b3bab5e939848e01171e71cb5f99df.png similarity index 99% rename from _images/1101d4b0e6e85c6453f977dad1435479e5bee329b767f9ad4413c39489b7a5c7.png rename to _images/bbd1f0cd9f9977b094573663b12d9d02d2b3bab5e939848e01171e71cb5f99df.png index fff29cb1d..476b98cca 100644 Binary files a/_images/1101d4b0e6e85c6453f977dad1435479e5bee329b767f9ad4413c39489b7a5c7.png and b/_images/bbd1f0cd9f9977b094573663b12d9d02d2b3bab5e939848e01171e71cb5f99df.png differ diff --git a/_modules/dymos/phase/analytic_phase.html b/_modules/dymos/phase/analytic_phase.html index 7821c5982..a5a595f27 100644 --- a/_modules/dymos/phase/analytic_phase.html +++ b/_modules/dymos/phase/analytic_phase.html @@ -806,6 +806,10 @@
if self.parameter_options:
transcription.setup_parameters(self)
+ # Never allow state rate outputs for analytic phases
+ self.timeseries_options['include_state_rates'] = False
+ self.timeseries_options._dict['include_state_rates']['values'] = [False]
+
transcription.setup_states(self)
self._check_ode()
transcription.setup_ode(self)
diff --git a/_modules/dymos/trajectory/trajectory.html b/_modules/dymos/trajectory/trajectory.html
index 1706e250b..7c9e21c01 100644
--- a/_modules/dymos/trajectory/trajectory.html
+++ b/_modules/dymos/trajectory/trajectory.html
@@ -944,6 +944,9 @@ Source code for dymos.trajectory.trajectory
units = {'a': _unspecified, 'b': _unspecified}
shapes = {'a': _unspecified, 'b': _unspecified}
+ use_prefix = {'a': phase_a.timeseries_options['use_prefix'],
+ 'b': phase_b.timeseries_options['use_prefix']}
+
for i in ('a', 'b'):
if classes[i] == 't':
time_name = phases[i].time_options['name']
@@ -956,17 +959,17 @@ Source code for dymos.trajectory.trajectory
units[i] = phases[i].time_options['units']
shapes[i] = (1,)
elif classes[i] == 'state':
- prefix = 'states:' if dymos_options['use_timeseries_prefix'] else ''
+ prefix = 'states:' if use_prefix[i] else ''
sources[i] = f'timeseries.{prefix}{vars[i]}'
units[i] = phases[i].state_options[vars[i]]['units']
shapes[i] = phases[i].state_options[vars[i]]['shape']
elif classes[i] in {'indep_control', 'input_control'}:
- prefix = 'controls:' if dymos_options['use_timeseries_prefix'] else ''
+ prefix = 'controls:' if use_prefix[i] else ''
sources[i] = f'timeseries.{prefix}{vars[i]}'
units[i] = phases[i].control_options[vars[i]]['units']
shapes[i] = phases[i].control_options[vars[i]]['shape']
elif classes[i] in {'control_rate', 'control_rate2'}:
- prefix = 'control_rates:' if dymos_options['use_timeseries_prefix'] else ''
+ prefix = 'control_rates:' if use_prefix[i] else ''
sources[i] = f'timeseries.{prefix}{vars[i]}'
control_name = vars[i][:-5] if classes[i] == 'control_rate' else vars[i][:-6]
units[i] = phases[i].control_options[control_name]['units']
@@ -974,12 +977,12 @@ Source code for dymos.trajectory.trajectory
units[i] = get_rate_units(units[i], phases[i].time_options['units'], deriv=deriv)
shapes[i] = phases[i].control_options[control_name]['shape']
elif classes[i] in {'indep_polynomial_control', 'input_polynomial_control'}:
- prefix = 'polynomial_controls:' if dymos_options['use_timeseries_prefix'] else ''
+ prefix = 'polynomial_controls:' if use_prefix[i] else ''
sources[i] = f'timeseries.{prefix}{vars[i]}'
units[i] = phases[i].polynomial_control_options[vars[i]]['units']
shapes[i] = phases[i].polynomial_control_options[vars[i]]['shape']
elif classes[i] in {'polynomial_control_rate', 'polynomial_control_rate2'}:
- prefix = 'polynomial_control_rates:' if dymos_options['use_timeseries_prefix'] else ''
+ prefix = 'polynomial_control_rates:' if use_prefix[i] else ''
sources[i] = f'timeseries.{prefix}{vars[i]}'
control_name = vars[i][:-5] if classes[i] == 'polynomial_control_rate' else vars[i][:-6]
control_units = phases[i].polynomial_control_options[control_name]['units']
@@ -1145,7 +1148,7 @@ Source code for dymos.trajectory.trajectory
}
def _get_prefixed_var(var, phase):
- if dymos_options['use_timeseries_prefix']:
+ if phase.timeseries_options['use_prefix']:
return f'{prefixes[phase.classify_var(var)]}{var}'
else:
return var
diff --git a/_sources/examples/balanced_field/balanced_field.ipynb b/_sources/examples/balanced_field/balanced_field.ipynb
index e67aaaf2c..9d8da10c3 100644
--- a/_sources/examples/balanced_field/balanced_field.ipynb
+++ b/_sources/examples/balanced_field/balanced_field.ipynb
@@ -714,8 +714,8 @@
"\n",
"fig, axes = plt.subplots(2, 1, sharex=True, gridspec_kw={'top': 0.92}, figsize=(12,6))\n",
"for phase in ['br_to_v1', 'rto', 'v1_to_vr', 'rotate', 'climb']:\n",
- " r = sim_case.get_val(f'traj.{phase}.timeseries.states:r', units='ft')\n",
- " v = sim_case.get_val(f'traj.{phase}.timeseries.states:v', units='kn')\n",
+ " r = sim_case.get_val(f'traj.{phase}.timeseries.r', units='ft')\n",
+ " v = sim_case.get_val(f'traj.{phase}.timeseries.v', units='kn')\n",
" t = sim_case.get_val(f'traj.{phase}.timeseries.time', units='s')\n",
" axes[0].plot(t, r, '-', label=phase)\n",
" axes[1].plot(t, v, '-', label=phase)\n",
@@ -727,10 +727,10 @@
"axes[1].grid(True)\n",
"\n",
"tv1 = sim_case.get_val('traj.br_to_v1.timeseries.time', units='s')[-1, 0]\n",
- "v1 = sim_case.get_val('traj.br_to_v1.timeseries.states:v', units='kn')[-1, 0]\n",
+ "v1 = sim_case.get_val('traj.br_to_v1.timeseries.v', units='kn')[-1, 0]\n",
"\n",
"tf_rto = sim_case.get_val('traj.rto.timeseries.time', units='s')[-1, 0]\n",
- "rf_rto = sim_case.get_val('traj.rto.timeseries.states:r', units='ft')[-1, 0]\n",
+ "rf_rto = sim_case.get_val('traj.rto.timeseries.r', units='ft')[-1, 0]\n",
"\n",
"axes[0].annotate(f'field length = {r[-1, 0]:5.1f} ft', xy=(t[-1, 0], r[-1, 0]),\n",
" xycoords='data', xytext=(0.7, 0.5),\n",
diff --git a/_sources/examples/balanced_field/balanced_field_funccomp.ipynb b/_sources/examples/balanced_field/balanced_field_funccomp.ipynb
index c40f0646f..9649a9db6 100644
--- a/_sources/examples/balanced_field/balanced_field_funccomp.ipynb
+++ b/_sources/examples/balanced_field/balanced_field_funccomp.ipynb
@@ -451,8 +451,8 @@
"\n",
"fig, axes = plt.subplots(2, 1, sharex=True, gridspec_kw={'top': 0.92}, figsize=(12, 6))\n",
"for phase in ['br_to_v1', 'rto', 'v1_to_vr', 'rotate', 'climb']:\n",
- " r = sim_case.get_val(f'traj.{phase}.timeseries.states:r', units='ft')\n",
- " v = sim_case.get_val(f'traj.{phase}.timeseries.states:v', units='kn')\n",
+ " r = sim_case.get_val(f'traj.{phase}.timeseries.r', units='ft')\n",
+ " v = sim_case.get_val(f'traj.{phase}.timeseries.v', units='kn')\n",
" t = sim_case.get_val(f'traj.{phase}.timeseries.time', units='s')\n",
" axes[0].plot(t, r, '-', label=phase)\n",
" axes[1].plot(t, v, '-', label=phase)\n",
@@ -464,10 +464,10 @@
"axes[1].grid(True)\n",
"\n",
"tv1 = sim_case.get_val('traj.br_to_v1.timeseries.time', units='s')[-1, 0]\n",
- "v1 = sim_case.get_val('traj.br_to_v1.timeseries.states:v', units='kn')[-1, 0]\n",
+ "v1 = sim_case.get_val('traj.br_to_v1.timeseries.v', units='kn')[-1, 0]\n",
"\n",
"tf_rto = sim_case.get_val('traj.rto.timeseries.time', units='s')[-1, 0]\n",
- "rf_rto = sim_case.get_val('traj.rto.timeseries.states:r', units='ft')[-1, 0]\n",
+ "rf_rto = sim_case.get_val('traj.rto.timeseries.r', units='ft')[-1, 0]\n",
"\n",
"axes[0].annotate(f'field length = {r[-1, 0]:5.1f} ft', xy=(t[-1, 0], r[-1, 0]),\n",
" xycoords='data', xytext=(0.7, 0.5),\n",
diff --git a/_sources/examples/brachistochrone/brachistochrone.ipynb b/_sources/examples/brachistochrone/brachistochrone.ipynb
index 1047031d4..29c5a8af9 100644
--- a/_sources/examples/brachistochrone/brachistochrone.ipynb
+++ b/_sources/examples/brachistochrone/brachistochrone.ipynb
@@ -505,9 +505,9 @@
"# Generate the explicitly simulated trajectory\n",
"exp_out = traj.simulate()\n",
"\n",
- "plot_results([('traj.phase0.timeseries.states:x', 'traj.phase0.timeseries.states:y',\n",
+ "plot_results([('traj.phase0.timeseries.x', 'traj.phase0.timeseries.y',\n",
" 'x (m)', 'y (m)'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:theta',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.theta',\n",
" 'time (s)', 'theta (deg)')],\n",
" title='Brachistochrone Solution\\nHigh-Order Gauss-Lobatto Method',\n",
" p_sol=p, p_sim=exp_out)\n",
@@ -649,9 +649,9 @@
},
"outputs": [],
"source": [
- "plot_results([('traj.phase0.timeseries.states:x', 'traj.phase0.timeseries.states:y',\n",
+ "plot_results([('traj.phase0.timeseries.x', 'traj.phase0.timeseries.y',\n",
" 'x (m)', 'y (m)'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:theta',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.theta',\n",
" 'time (s)', 'theta (deg)')],\n",
" title='Brachistochrone Solution\\nExplicit Shooting Method',\n",
" p_sol=p)\n",
diff --git a/_sources/examples/brachistochrone/brachistochrone_tandem_phases.ipynb b/_sources/examples/brachistochrone/brachistochrone_tandem_phases.ipynb
index 1d28978ea..819cc44bb 100644
--- a/_sources/examples/brachistochrone/brachistochrone_tandem_phases.ipynb
+++ b/_sources/examples/brachistochrone/brachistochrone_tandem_phases.ipynb
@@ -217,8 +217,8 @@
"#\n",
"p.model.connect('phase0.t_duration', 'phase1.t_duration')\n",
"\n",
- "p.model.connect('phase0.timeseries2.controls:theta', 'phase1.controls:theta')\n",
- "p.model.connect('phase0.timeseries2.states:v', 'phase1.controls:v')\n",
+ "p.model.connect('phase0.timeseries2.theta', 'phase1.controls:theta')\n",
+ "p.model.connect('phase0.timeseries2.v', 'phase1.controls:v')\n",
"\n",
"# Minimize time\n",
"phase1.add_objective('time', loc='final', ref=1)\n",
@@ -308,12 +308,12 @@
"\n",
"sol_case = om.CaseReader('dymos_solution.db').get_case('final')\n",
"\n",
- "sol_x = sol_case.get_val('phase0.timeseries.states:x')\n",
- "sol_y = sol_case.get_val('phase0.timeseries.states:y')\n",
- "sol_v = sol_case.get_val('phase0.timeseries.states:v')\n",
+ "sol_x = sol_case.get_val('phase0.timeseries.x')\n",
+ "sol_y = sol_case.get_val('phase0.timeseries.y')\n",
+ "sol_v = sol_case.get_val('phase0.timeseries.v')\n",
"sol_t0 = sol_case.get_val('phase0.timeseries.time')\n",
"sol_t1 = sol_case.get_val('phase1.timeseries.time')\n",
- "sol_s = sol_case.get_val('phase1.timeseries.states:S')\n",
+ "sol_s = sol_case.get_val('phase1.timeseries.S')\n",
"\n",
"def add_plot(p, x, y, label, i):\n",
" circle = p.circle(x.ravel(), y.ravel(), color=c[i], size=5)\n",
@@ -357,7 +357,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.5"
+ "version": "3.11.0"
}
},
"nbformat": 4,
diff --git a/_sources/examples/brachistochrone/brachistochrone_upstream_controls.ipynb b/_sources/examples/brachistochrone/brachistochrone_upstream_controls.ipynb
index d58843fcb..b4a959e99 100644
--- a/_sources/examples/brachistochrone/brachistochrone_upstream_controls.ipynb
+++ b/_sources/examples/brachistochrone/brachistochrone_upstream_controls.ipynb
@@ -185,12 +185,12 @@
"# Plot the results\n",
"fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 4.5))\n",
"\n",
- "axes[0].plot(p.get_val('traj.phase0.timeseries.states:x'),\n",
- " p.get_val('traj.phase0.timeseries.states:y'),\n",
+ "axes[0].plot(p.get_val('traj.phase0.timeseries.x'),\n",
+ " p.get_val('traj.phase0.timeseries.y'),\n",
" 'ro', label='solution')\n",
"\n",
- "axes[0].plot(sim_out.get_val('traj.phase0.timeseries.states:x'),\n",
- " sim_out.get_val('traj.phase0.timeseries.states:y'),\n",
+ "axes[0].plot(sim_out.get_val('traj.phase0.timeseries.x'),\n",
+ " sim_out.get_val('traj.phase0.timeseries.y'),\n",
" 'b-', label='simulation')\n",
"\n",
"axes[0].set_xlabel('x (m)')\n",
@@ -199,11 +199,11 @@
"axes[0].grid()\n",
"\n",
"axes[1].plot(p.get_val('traj.phase0.timeseries.time'),\n",
- " p.get_val('traj.phase0.timeseries.controls:theta', units='deg'),\n",
+ " p.get_val('traj.phase0.timeseries.theta', units='deg'),\n",
" 'ro', label='solution')\n",
"\n",
"axes[1].plot(sim_out.get_val('traj.phase0.timeseries.time'),\n",
- " sim_out.get_val('traj.phase0.timeseries.controls:theta', units='deg'),\n",
+ " sim_out.get_val('traj.phase0.timeseries.theta', units='deg'),\n",
" 'b-', label='simulation')\n",
"\n",
"axes[1].set_xlabel('time (s)')\n",
diff --git a/_sources/examples/brachistochrone/brachistochrone_upstream_init_duration_states.ipynb b/_sources/examples/brachistochrone/brachistochrone_upstream_init_duration_states.ipynb
index 4f24fe26f..14a3fd0e1 100644
--- a/_sources/examples/brachistochrone/brachistochrone_upstream_init_duration_states.ipynb
+++ b/_sources/examples/brachistochrone/brachistochrone_upstream_init_duration_states.ipynb
@@ -91,7 +91,7 @@
"# Connect x0 to the state error component so we can constrain the given value of x0\n",
"# to be equal to the value chosen in the phase.\n",
"# p.model.connect('x0', 'state_error_comp.x0_target')\n",
- "# p.model.connect('traj.phase0.timeseries.states:x', 'state_error_comp.x0_actual',\n",
+ "# p.model.connect('traj.phase0.timeseries.x', 'state_error_comp.x0_actual',\n",
"# src_indices=[0])\n",
"p.model.connect('t_initial', 'traj.phase0.t_initial')\n",
"p.model.connect('t_duration', 'traj.phase0.t_duration')\n",
@@ -188,21 +188,21 @@
"\n",
"# Plot the results\n",
"fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 4.5))\n",
- "axes[0].plot(sol.get_val('traj.phase0.timeseries.states:x'),\n",
- " sol.get_val('traj.phase0.timeseries.states:y'),\n",
+ "axes[0].plot(sol.get_val('traj.phase0.timeseries.x'),\n",
+ " sol.get_val('traj.phase0.timeseries.y'),\n",
" 'ro', label='solution')\n",
- "axes[0].plot(sim.get_val('traj.phase0.timeseries.states:x'),\n",
- " sim.get_val('traj.phase0.timeseries.states:y'),\n",
+ "axes[0].plot(sim.get_val('traj.phase0.timeseries.x'),\n",
+ " sim.get_val('traj.phase0.timeseries.y'),\n",
" 'b-', label='simulation')\n",
"axes[0].set_xlabel('x (m)')\n",
"axes[0].set_ylabel('y (m/s)')\n",
"axes[0].legend()\n",
"axes[0].grid()\n",
"axes[1].plot(sol.get_val('traj.phase0.timeseries.time'),\n",
- " sol.get_val('traj.phase0.timeseries.controls:theta', units='deg'),\n",
+ " sol.get_val('traj.phase0.timeseries.theta', units='deg'),\n",
" 'ro', label='solution')\n",
"axes[1].plot(sim.get_val('traj.phase0.timeseries.time'),\n",
- " sim.get_val('traj.phase0.timeseries.controls:theta', units='deg'),\n",
+ " sim.get_val('traj.phase0.timeseries.theta', units='deg'),\n",
" 'b-', label='simulation')\n",
"axes[1].set_xlabel('time (s)')\n",
"axes[1].set_ylabel(r'$\\theta$ (deg)')\n",
diff --git a/_sources/examples/brachistochrone/brachistochrone_upstream_states.ipynb b/_sources/examples/brachistochrone/brachistochrone_upstream_states.ipynb
index 5d5f4cb77..d7651ee8a 100644
--- a/_sources/examples/brachistochrone/brachistochrone_upstream_states.ipynb
+++ b/_sources/examples/brachistochrone/brachistochrone_upstream_states.ipynb
@@ -107,7 +107,7 @@
"# Connect x0 to the state error component so we can constrain the given value of x0\n",
"# to be equal to the value chosen in the phase.\n",
"p.model.connect('x0', 'state_error_comp.x0_target')\n",
- "p.model.connect('traj.phase0.timeseries.states:x', 'state_error_comp.x0_actual', src_indices=[0])\n",
+ "p.model.connect('traj.phase0.timeseries.x', 'state_error_comp.x0_actual', src_indices=[0])\n",
"\n",
"#\n",
"# Define a Trajectory object\n",
@@ -203,12 +203,12 @@
"# Plot the results\n",
"fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 4.5))\n",
"\n",
- "axes[0].plot(p.get_val('traj.phase0.timeseries.states:x'),\n",
- " p.get_val('traj.phase0.timeseries.states:y'),\n",
+ "axes[0].plot(p.get_val('traj.phase0.timeseries.x'),\n",
+ " p.get_val('traj.phase0.timeseries.y'),\n",
" 'ro', label='solution')\n",
"\n",
- "axes[0].plot(sim_out.get_val('traj.phase0.timeseries.states:x'),\n",
- " sim_out.get_val('traj.phase0.timeseries.states:y'),\n",
+ "axes[0].plot(sim_out.get_val('traj.phase0.timeseries.x'),\n",
+ " sim_out.get_val('traj.phase0.timeseries.y'),\n",
" 'b-', label='simulation')\n",
"\n",
"axes[0].set_xlabel('x (m)')\n",
@@ -217,11 +217,11 @@
"axes[0].grid()\n",
"\n",
"axes[1].plot(p.get_val('traj.phase0.timeseries.time'),\n",
- " p.get_val('traj.phase0.timeseries.controls:theta', units='deg'),\n",
+ " p.get_val('traj.phase0.timeseries.theta', units='deg'),\n",
" 'ro', label='solution')\n",
"\n",
"axes[1].plot(sim_out.get_val('traj.phase0.timeseries.time'),\n",
- " sim_out.get_val('traj.phase0.timeseries.controls:theta', units='deg'),\n",
+ " sim_out.get_val('traj.phase0.timeseries.theta', units='deg'),\n",
" 'b-', label='simulation')\n",
"\n",
"axes[1].set_xlabel('time (s)')\n",
diff --git a/_sources/examples/bryson_denham/bryson_denham.ipynb b/_sources/examples/bryson_denham/bryson_denham.ipynb
index 4cb424ad0..33cb314c4 100644
--- a/_sources/examples/bryson_denham/bryson_denham.ipynb
+++ b/_sources/examples/bryson_denham/bryson_denham.ipynb
@@ -450,17 +450,17 @@
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
"t = sol.get_val('traj.phase0.timeseries.time')\n",
- "x = sol.get_val('traj.phase0.timeseries.states:x')\n",
- "v = sol.get_val('traj.phase0.timeseries.states:v')\n",
- "J = sol.get_val('traj.phase0.timeseries.states:J')\n",
- "u = sol.get_val('traj.phase0.timeseries.controls:u')\n",
+ "x = sol.get_val('traj.phase0.timeseries.x')\n",
+ "v = sol.get_val('traj.phase0.timeseries.v')\n",
+ "J = sol.get_val('traj.phase0.timeseries.J')\n",
+ "u = sol.get_val('traj.phase0.timeseries.u')\n",
"h = np.sin(3 * x) / 3\n",
"\n",
"t_sim = sim.get_val('traj.phase0.timeseries.time')\n",
- "x_sim = sim.get_val('traj.phase0.timeseries.states:x')\n",
- "v_sim = sim.get_val('traj.phase0.timeseries.states:v')\n",
- "J_sim = sim.get_val('traj.phase0.timeseries.states:J')\n",
- "u_sim = sim.get_val('traj.phase0.timeseries.controls:u')\n",
+ "x_sim = sim.get_val('traj.phase0.timeseries.x')\n",
+ "v_sim = sim.get_val('traj.phase0.timeseries.v')\n",
+ "J_sim = sim.get_val('traj.phase0.timeseries.J')\n",
+ "u_sim = sim.get_val('traj.phase0.timeseries.u')\n",
"h_sim = np.sin(3 * x_sim) / 3\n",
"\n",
"fig = plt.figure(constrained_layout=True, figsize=(12, 4))\n",
diff --git a/_sources/examples/cannonball_implicit_duration/cannonball_implicit_duration.ipynb b/_sources/examples/cannonball_implicit_duration/cannonball_implicit_duration.ipynb
index 2eab4113c..98da7d170 100644
--- a/_sources/examples/cannonball_implicit_duration/cannonball_implicit_duration.ipynb
+++ b/_sources/examples/cannonball_implicit_duration/cannonball_implicit_duration.ipynb
@@ -372,9 +372,9 @@
"print(f'optimal radius: {rad} m ')\n",
"mass = p.get_val('size_comp.mass', units='kg')[0]\n",
"print(f'cannonball mass: {mass} kg ')\n",
- "angle = p.get_val('traj.phase.timeseries.states:gam', units='deg')[0, 0]\n",
+ "angle = p.get_val('traj.phase.timeseries.gam', units='deg')[0, 0]\n",
"print(f'launch angle: {angle} deg')\n",
- "max_range = p.get_val('traj.phase.timeseries.states:r')[-1, 0]\n",
+ "max_range = p.get_val('traj.phase.timeseries.r')[-1, 0]\n",
"print(f'maximum range: {max_range} m')\n",
"\n",
"fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))\n",
@@ -383,13 +383,13 @@
"\n",
"time_exp = exp_out.get_val('traj.phase.timeseries.time')\n",
"\n",
- "r_imp = p.get_val('traj.phase.timeseries.states:r')\n",
+ "r_imp = p.get_val('traj.phase.timeseries.r')\n",
"\n",
- "r_exp = exp_out.get_val('traj.phase.timeseries.states:r')\n",
+ "r_exp = exp_out.get_val('traj.phase.timeseries.r')\n",
"\n",
- "h_imp = p.get_val('traj.phase.timeseries.states:h')\n",
+ "h_imp = p.get_val('traj.phase.timeseries.h')\n",
"\n",
- "h_exp = exp_out.get_val('traj.phase.timeseries.states:h')\n",
+ "h_exp = exp_out.get_val('traj.phase.timeseries.h')\n",
"\n",
"axes.plot(r_imp, h_imp, 'bo')\n",
"\n",
@@ -401,9 +401,9 @@
"fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(10, 6))\n",
"states = ['r', 'h', 'v', 'gam']\n",
"for i, state in enumerate(states):\n",
- " x_imp = p.get_val(f'traj.phase.timeseries.states:{state}')\n",
+ " x_imp = p.get_val(f'traj.phase.timeseries.{state}')\n",
"\n",
- " x_exp = exp_out.get_val(f'traj.phase.timeseries.states:{state}')\n",
+ " x_exp = exp_out.get_val(f'traj.phase.timeseries.{state}')\n",
"\n",
" axes[i].set_ylabel(state)\n",
"\n",
@@ -426,16 +426,9 @@
"source": [
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase.states:r')[-1],\n",
+ "assert_near_equal(p.get_val('traj.phase.timeseries.r')[-1],\n",
" 3183.25, tolerance=1.0E-2)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
@@ -463,7 +456,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.0"
+ "version": "3.11.4"
}
},
"nbformat": 4,
diff --git a/_sources/examples/cart_pole/cart_pole.ipynb b/_sources/examples/cart_pole/cart_pole.ipynb
index a5c6e58bf..17d91e0f3 100644
--- a/_sources/examples/cart_pole/cart_pole.ipynb
+++ b/_sources/examples/cart_pole/cart_pole.ipynb
@@ -333,17 +333,17 @@
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
"# plot time histories of x, x_dot, theta, theta_dot\n",
- "plot_results([('traj.phase.timeseries.time', 'traj.phase.timeseries.states:x', 'time (s)', 'x (m)'),\n",
- " ('traj.phase.timeseries.time', 'traj.phase.timeseries.states:x_dot', 'time (s)', 'vx (m/s)'),\n",
- " ('traj.phase.timeseries.time', 'traj.phase.timeseries.states:theta', 'time (s)', 'theta (rad)'),\n",
- " ('traj.phase.timeseries.time', 'traj.phase.timeseries.states:theta_dot', 'time (s)', 'theta_dot (rad/s)'),\n",
- " ('traj.phase.timeseries.time', 'traj.phase.timeseries.controls:f', 'time (s)', 'control (N)')],\n",
+ "plot_results([('traj.phase.timeseries.time', 'traj.phase.timeseries.x', 'time (s)', 'x (m)'),\n",
+ " ('traj.phase.timeseries.time', 'traj.phase.timeseries.x_dot', 'time (s)', 'vx (m/s)'),\n",
+ " ('traj.phase.timeseries.time', 'traj.phase.timeseries.theta', 'time (s)', 'theta (rad)'),\n",
+ " ('traj.phase.timeseries.time', 'traj.phase.timeseries.theta_dot', 'time (s)', 'theta_dot (rad/s)'),\n",
+ " ('traj.phase.timeseries.time', 'traj.phase.timeseries.f', 'time (s)', 'control (N)')],\n",
" title='Cart-Pole Problem', p_sol=sol, p_sim=sim)\n",
"\n",
"# uncomment the following lines to show the cart-pole animation\n",
- "### x = sol.get_val('traj.phase.timeseries.states:x', units='m')\n",
- "### theta = sol.get_val('traj.phase.timeseries.states:theta', units='rad')\n",
- "### force = sol.get_val('traj.phase.timeseries.controls:f', units='N')\n",
+ "### x = sol.get_val('traj.phase.timeseries.x', units='m')\n",
+ "### theta = sol.get_val('traj.phase.timeseries.theta', units='rad')\n",
+ "### force = sol.get_val('traj.phase.timeseries.f', units='N')\n",
"### npts = len(x)\n",
"\n",
"### from dymos.examples.cart_pole.animate_cartpole import animate_cartpole\n",
diff --git a/_sources/examples/commercial_aircraft/commercial_aircraft.ipynb b/_sources/examples/commercial_aircraft/commercial_aircraft.ipynb
index 2e502effe..8884f579d 100644
--- a/_sources/examples/commercial_aircraft/commercial_aircraft.ipynb
+++ b/_sources/examples/commercial_aircraft/commercial_aircraft.ipynb
@@ -689,7 +689,7 @@
"source": [
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:range', units='NM')[-1],\n",
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.range', units='NM')[-1],\n",
" 726.85, tolerance=1.0E-2)"
]
},
diff --git a/_sources/examples/double_integrator/double_integrator.ipynb b/_sources/examples/double_integrator/double_integrator.ipynb
index 3f034222d..aaf0a8a2c 100644
--- a/_sources/examples/double_integrator/double_integrator.ipynb
+++ b/_sources/examples/double_integrator/double_integrator.ipynb
@@ -211,11 +211,11 @@
"sol = om.CaseReader('dymos_solution.db').get_case('final')\n",
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
- "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.states:x',\n",
+ "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.x',\n",
" 'time (s)', 'x $(m)$'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.states:v',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.v',\n",
" 'time (s)', 'v $(m/s)$'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:u',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.u',\n",
" 'time (s)', 'u $(m/s^2)$')],\n",
" title='Double Integrator Solution\\nRadau Pseudospectral Method',\n",
" p_sol=sol, p_sim=sim)\n",
@@ -236,8 +236,8 @@
"source": [
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
- "x = p.get_val('traj.phase0.timeseries.states:x')\n",
- "v = p.get_val('traj.phase0.timeseries.states:v')\n",
+ "x = p.get_val('traj.phase0.timeseries.x')\n",
+ "v = p.get_val('traj.phase0.timeseries.v')\n",
"\n",
"assert_near_equal(x[0], 0.0, tolerance=1.0E-4)\n",
"assert_near_equal(x[-1], 0.25, tolerance=1.0E-4)\n",
diff --git a/_sources/examples/finite_burn_orbit_raise/finite_burn_orbit_raise.ipynb b/_sources/examples/finite_burn_orbit_raise/finite_burn_orbit_raise.ipynb
index 4a1c07a4b..be3fc6266 100644
--- a/_sources/examples/finite_burn_orbit_raise/finite_burn_orbit_raise.ipynb
+++ b/_sources/examples/finite_burn_orbit_raise/finite_burn_orbit_raise.ipynb
@@ -331,9 +331,9 @@
" for phs in ['burn1', 'coast', 'burn2'])\n",
"y_sol = dict((phs, sol.get_val(f'traj.{phs}.timeseries.pos_y'.format(phs)))\n",
" for phs in ['burn1', 'coast', 'burn2'])\n",
- "dv_sol = dict((phs, sol.get_val(f'traj.{phs}.timeseries.states:deltav'.format(phs)))\n",
+ "dv_sol = dict((phs, sol.get_val(f'traj.{phs}.timeseries.deltav'.format(phs)))\n",
" for phs in ['burn1', 'coast', 'burn2'])\n",
- "u1_sol = dict((phs, sol.get_val(f'traj.{phs}.timeseries.controls:u1'.format(phs), units='deg'))\n",
+ "u1_sol = dict((phs, sol.get_val(f'traj.{phs}.timeseries.u1'.format(phs), units='deg'))\n",
" for phs in ['burn1', 'burn2'])\n",
"\n",
"t_exp = dict((phs, sim.get_val(f'traj.{phs}.timeseries.time'))\n",
@@ -342,9 +342,9 @@
" for phs in ['burn1', 'coast', 'burn2'])\n",
"y_exp = dict((phs, sim.get_val(f'traj.{phs}.timeseries.pos_y'))\n",
" for phs in ['burn1', 'coast', 'burn2'])\n",
- "dv_exp = dict((phs, sim.get_val(f'traj.{phs}.timeseries.states:deltav'))\n",
+ "dv_exp = dict((phs, sim.get_val(f'traj.{phs}.timeseries.deltav'))\n",
" for phs in ['burn1', 'coast', 'burn2'])\n",
- "u1_exp = dict((phs, sim.get_val(f'traj.{phs}.timeseries.controls:u1',\n",
+ "u1_exp = dict((phs, sim.get_val(f'traj.{phs}.timeseries.u1',\n",
" units='deg'))\n",
" for phs in ['burn1', 'burn2'])\n",
"\n",
diff --git a/_sources/examples/hull/hull_problem.ipynb b/_sources/examples/hull/hull_problem.ipynb
index d358a1ac6..7088a983f 100644
--- a/_sources/examples/hull/hull_problem.ipynb
+++ b/_sources/examples/hull/hull_problem.ipynb
@@ -435,14 +435,14 @@
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
"t = sol.get_val('traj.phase0.timeseries.time')\n",
- "x = sol.get_val('traj.phase0.timeseries.states:x')\n",
- "xL = sol.get_val('traj.phase0.timeseries.states:xL')\n",
- "u = sol.get_val('traj.phase0.timeseries.controls:u')\n",
+ "x = sol.get_val('traj.phase0.timeseries.x')\n",
+ "xL = sol.get_val('traj.phase0.timeseries.xL')\n",
+ "u = sol.get_val('traj.phase0.timeseries.u')\n",
"\n",
"t_sim = sim.get_val('traj.phase0.timeseries.time')\n",
- "x_sim = sim.get_val('traj.phase0.timeseries.states:x')\n",
- "xL_sim = sim.get_val('traj.phase0.timeseries.states:xL')\n",
- "u_sim = sim.get_val('traj.phase0.timeseries.controls:u')\n",
+ "x_sim = sim.get_val('traj.phase0.timeseries.x')\n",
+ "xL_sim = sim.get_val('traj.phase0.timeseries.xL')\n",
+ "u_sim = sim.get_val('traj.phase0.timeseries.u')\n",
"\n",
"fig = plt.figure(constrained_layout=True, figsize=(12, 4))\n",
"gs = fig.add_gridspec(3, 1)\n",
diff --git a/_sources/examples/hypersensitive/hypersensitive.ipynb b/_sources/examples/hypersensitive/hypersensitive.ipynb
index b596afad1..0b5357c45 100644
--- a/_sources/examples/hypersensitive/hypersensitive.ipynb
+++ b/_sources/examples/hypersensitive/hypersensitive.ipynb
@@ -254,9 +254,9 @@
"sol = om.CaseReader('dymos_solution.db').get_case('final')\n",
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
- "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.states:x',\n",
+ "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.x',\n",
" 'time (s)', 'x $(m)$'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:u',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.u',\n",
" 'time (s)', 'u $(m/s^2)$')],\n",
" title='Hyper Sensitive Problem Solution\\nRadau Pseudospectral Method',\n",
" p_sol=sol, p_sim=sim)\n",
@@ -279,15 +279,15 @@
"\n",
"ui, uf, J = solution()\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.controls:u')[0],\n",
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.u')[0],\n",
" ui,\n",
" tolerance=1.5e-2)\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.controls:u')[-1],\n",
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.u')[-1],\n",
" uf,\n",
" tolerance=1.5e-2)\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:xL')[-1],\n",
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.xL')[-1],\n",
" J,\n",
" tolerance=1e-2)"
]
diff --git a/_sources/examples/length_constrained_brachistochrone/length_constrained_brachistochrone.ipynb b/_sources/examples/length_constrained_brachistochrone/length_constrained_brachistochrone.ipynb
index e623806bb..07e6bee22 100644
--- a/_sources/examples/length_constrained_brachistochrone/length_constrained_brachistochrone.ipynb
+++ b/_sources/examples/length_constrained_brachistochrone/length_constrained_brachistochrone.ipynb
@@ -197,8 +197,8 @@
"p.model.add_subsystem('arc_length_comp',\n",
" subsys=ArcLengthComp(num_nodes=tx.grid_data.num_nodes))\n",
"\n",
- "p.model.connect('traj.phase0.timeseries.controls:theta', 'arc_length_comp.theta')\n",
- "p.model.connect('traj.phase0.timeseries.states:x', 'arc_length_comp.x')\n",
+ "p.model.connect('traj.phase0.timeseries.theta', 'arc_length_comp.theta')\n",
+ "p.model.connect('traj.phase0.timeseries.x', 'arc_length_comp.x')\n",
"\n",
"p.model.add_constraint('arc_length_comp.S', upper=MAX_ARCLENGTH, ref=1)\n",
"\n",
@@ -222,15 +222,15 @@
"exp_out = traj.simulate()\n",
"\n",
"# Extract the timeseries from the implicit solution and the explicit simulation\n",
- "x = p.get_val('traj.phase0.timeseries.states:x')\n",
- "y = p.get_val('traj.phase0.timeseries.states:y')\n",
+ "x = p.get_val('traj.phase0.timeseries.x')\n",
+ "y = p.get_val('traj.phase0.timeseries.y')\n",
"t = p.get_val('traj.phase0.timeseries.time')\n",
- "theta = p.get_val('traj.phase0.timeseries.controls:theta')\n",
+ "theta = p.get_val('traj.phase0.timeseries.theta')\n",
"\n",
- "x_exp = exp_out.get_val('traj.phase0.timeseries.states:x')\n",
- "y_exp = exp_out.get_val('traj.phase0.timeseries.states:y')\n",
+ "x_exp = exp_out.get_val('traj.phase0.timeseries.x')\n",
+ "y_exp = exp_out.get_val('traj.phase0.timeseries.y')\n",
"t_exp = exp_out.get_val('traj.phase0.timeseries.time')\n",
- "theta_exp = exp_out.get_val('traj.phase0.timeseries.controls:theta')\n",
+ "theta_exp = exp_out.get_val('traj.phase0.timeseries.theta')\n",
"\n",
"fig, axes = plt.subplots(nrows=2, ncols=1)\n",
"\n",
diff --git a/_sources/examples/min_time_climb/min_time_climb.ipynb b/_sources/examples/min_time_climb/min_time_climb.ipynb
index 48f89a45c..13fd7712f 100644
--- a/_sources/examples/min_time_climb/min_time_climb.ipynb
+++ b/_sources/examples/min_time_climb/min_time_climb.ipynb
@@ -285,9 +285,9 @@
"sol = om.CaseReader('dymos_solution.db').get_case('final')\n",
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
- "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.states:h',\n",
+ "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.h',\n",
" 'time (s)', 'altitude (m)'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:alpha',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.alpha',\n",
" 'time (s)', 'alpha (deg)')],\n",
" title='Supersonic Minimum Time-to-Climb Solution',\n",
" p_sol=sol, p_sim=sim)\n",
diff --git a/_sources/examples/mountain_car/mountain_car.ipynb b/_sources/examples/mountain_car/mountain_car.ipynb
index 600a779e1..09f063a06 100644
--- a/_sources/examples/mountain_car/mountain_car.ipynb
+++ b/_sources/examples/mountain_car/mountain_car.ipynb
@@ -504,15 +504,15 @@
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
"t = sol.get_val('traj.phase0.timeseries.time')\n",
- "x = sol.get_val('traj.phase0.timeseries.states:x')\n",
- "v = sol.get_val('traj.phase0.timeseries.states:v')\n",
- "u = sol.get_val('traj.phase0.timeseries.controls:u')\n",
+ "x = sol.get_val('traj.phase0.timeseries.x')\n",
+ "v = sol.get_val('traj.phase0.timeseries.v')\n",
+ "u = sol.get_val('traj.phase0.timeseries.u')\n",
"h = np.sin(3 * x) / 3\n",
"\n",
"t_sim = sim.get_val('traj.phase0.timeseries.time')\n",
- "x_sim = sim.get_val('traj.phase0.timeseries.states:x')\n",
- "v_sim = sim.get_val('traj.phase0.timeseries.states:v')\n",
- "u_sim = sim.get_val('traj.phase0.timeseries.controls:u')\n",
+ "x_sim = sim.get_val('traj.phase0.timeseries.x')\n",
+ "v_sim = sim.get_val('traj.phase0.timeseries.v')\n",
+ "u_sim = sim.get_val('traj.phase0.timeseries.u')\n",
"h_sim = np.sin(3 * x_sim) / 3"
]
},
diff --git a/_sources/examples/multi_phase_cannonball/multi_phase_cannonball.ipynb b/_sources/examples/multi_phase_cannonball/multi_phase_cannonball.ipynb
index 8e7d1bb57..10c987b17 100644
--- a/_sources/examples/multi_phase_cannonball/multi_phase_cannonball.ipynb
+++ b/_sources/examples/multi_phase_cannonball/multi_phase_cannonball.ipynb
@@ -454,9 +454,9 @@
"print(f'cannonball mass: {mass} kg ')\n",
"area = p.get_val('size_comp.S', units='cm**2')[0]\n",
"print(f'cannonball aerodynamic reference area: {area} cm**2 ')\n",
- "angle = p.get_val('traj.ascent.timeseries.states:gam', units='deg')[0, 0]\n",
+ "angle = p.get_val('traj.ascent.timeseries.gam', units='deg')[0, 0]\n",
"print(f'launch angle: {angle} deg')\n",
- "max_range = p.get_val('traj.descent.timeseries.states:r')[-1, 0]\n",
+ "max_range = p.get_val('traj.descent.timeseries.r')[-1, 0]\n",
"print(f'maximum range: {max_range} m')\n",
"\n",
"fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))\n",
@@ -467,17 +467,17 @@
"time_exp = {'ascent': sim.get_val('traj.ascent.timeseries.time'),\n",
" 'descent': sim.get_val('traj.descent.timeseries.time')}\n",
"\n",
- "r_imp = {'ascent': p.get_val('traj.ascent.timeseries.states:r'),\n",
- " 'descent': p.get_val('traj.descent.timeseries.states:r')}\n",
+ "r_imp = {'ascent': p.get_val('traj.ascent.timeseries.r'),\n",
+ " 'descent': p.get_val('traj.descent.timeseries.r')}\n",
"\n",
- "r_exp = {'ascent': sim.get_val('traj.ascent.timeseries.states:r'),\n",
- " 'descent': sim.get_val('traj.descent.timeseries.states:r')}\n",
+ "r_exp = {'ascent': sim.get_val('traj.ascent.timeseries.r'),\n",
+ " 'descent': sim.get_val('traj.descent.timeseries.r')}\n",
"\n",
- "h_imp = {'ascent': p.get_val('traj.ascent.timeseries.states:h'),\n",
- " 'descent': p.get_val('traj.descent.timeseries.states:h')}\n",
+ "h_imp = {'ascent': p.get_val('traj.ascent.timeseries.h'),\n",
+ " 'descent': p.get_val('traj.descent.timeseries.h')}\n",
"\n",
- "h_exp = {'ascent': sim.get_val('traj.ascent.timeseries.states:h'),\n",
- " 'descent': sim.get_val('traj.descent.timeseries.states:h')}\n",
+ "h_exp = {'ascent': sim.get_val('traj.ascent.timeseries.h'),\n",
+ " 'descent': sim.get_val('traj.descent.timeseries.h')}\n",
"\n",
"axes.plot(r_imp['ascent'], h_imp['ascent'], 'bo')\n",
"\n",
@@ -494,11 +494,11 @@
"fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(10, 6))\n",
"states = ['r', 'h', 'v', 'gam']\n",
"for i, state in enumerate(states):\n",
- " x_imp = {'ascent': sol.get_val(f'traj.ascent.timeseries.states:{state}'),\n",
- " 'descent': sol.get_val(f'traj.descent.timeseries.states:{state}')}\n",
+ " x_imp = {'ascent': sol.get_val(f'traj.ascent.timeseries.{state}'),\n",
+ " 'descent': sol.get_val(f'traj.descent.timeseries.{state}')}\n",
"\n",
- " x_exp = {'ascent': sim.get_val(f'traj.ascent.timeseries.states:{state}'),\n",
- " 'descent': sim.get_val(f'traj.descent.timeseries.states:{state}')}\n",
+ " x_exp = {'ascent': sim.get_val(f'traj.ascent.timeseries.{state}'),\n",
+ " 'descent': sim.get_val(f'traj.descent.timeseries.{state}')}\n",
"\n",
" axes[i].set_ylabel(state)\n",
" axes[i].grid(True)\n",
diff --git a/_sources/examples/racecar/racecar.ipynb b/_sources/examples/racecar/racecar.ipynb
index 159c8720b..bb22f55b3 100644
--- a/_sources/examples/racecar/racecar.ipynb
+++ b/_sources/examples/racecar/racecar.ipynb
@@ -384,11 +384,11 @@
"print('Optimization finished')\n",
"\n",
"# Get optimized time series\n",
- "n = p.get_val('traj.phase0.timeseries.states:n')\n",
+ "n = p.get_val('traj.phase0.timeseries.n')\n",
"s = p.get_val('traj.phase0.timeseries.s')\n",
- "V = p.get_val('traj.phase0.timeseries.states:V')\n",
- "thrust = p.get_val('traj.phase0.timeseries.controls:thrust')\n",
- "delta = p.get_val('traj.phase0.timeseries.controls:delta')\n",
+ "V = p.get_val('traj.phase0.timeseries.V')\n",
+ "thrust = p.get_val('traj.phase0.timeseries.thrust')\n",
+ "delta = p.get_val('traj.phase0.timeseries.delta')\n",
"power = p.get_val('traj.phase0.timeseries.power', units='W')\n",
"\n"
]
@@ -400,11 +400,11 @@
"outputs": [],
"source": [
"# Get optimized time series\n",
- "n = p.get_val('traj.phase0.timeseries.states:n')\n",
+ "n = p.get_val('traj.phase0.timeseries.n')\n",
"s = p.get_val('traj.phase0.timeseries.s')\n",
- "V = p.get_val('traj.phase0.timeseries.states:V')\n",
- "thrust = p.get_val('traj.phase0.timeseries.controls:thrust')\n",
- "delta = p.get_val('traj.phase0.timeseries.controls:delta')\n",
+ "V = p.get_val('traj.phase0.timeseries.V')\n",
+ "thrust = p.get_val('traj.phase0.timeseries.thrust')\n",
+ "delta = p.get_val('traj.phase0.timeseries.delta')\n",
"power = p.get_val('traj.phase0.timeseries.power', units='W')\n",
"\n",
"# We know the optimal distance from the centerline (n). To transform this into the racing\n",
@@ -512,7 +512,7 @@
"\n",
"# Velocity vs s\n",
"axes[0].plot(s,\n",
- " p.get_val('traj.phase0.timeseries.states:V'), label='solution')\n",
+ " p.get_val('traj.phase0.timeseries.V'), label='solution')\n",
"\n",
"axes[0].set_xlabel('s (m)')\n",
"axes[0].set_ylabel('V (m/s)')\n",
@@ -521,7 +521,7 @@
"\n",
"# n vs s\n",
"axes[1].plot(s,\n",
- " p.get_val('traj.phase0.timeseries.states:n', units='m'), label='solution')\n",
+ " p.get_val('traj.phase0.timeseries.n', units='m'), label='solution')\n",
"\n",
"axes[1].set_xlabel('s (m)')\n",
"axes[1].set_ylabel('n (m)')\n",
@@ -538,7 +538,7 @@
"\n",
"# delta vs s\n",
"axes[3].plot(s,\n",
- " p.get_val('traj.phase0.timeseries.controls:delta', units=None),\n",
+ " p.get_val('traj.phase0.timeseries.delta', units=None),\n",
" label='solution')\n",
"\n",
"axes[3].set_xlabel('s (m)')\n",
@@ -585,7 +585,7 @@
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
"# Test this example in Dymos' continuous integration process\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:t')[-1], 22.2657, tolerance=0.01)"
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.t')[-1], 22.2657, tolerance=0.01)"
]
}
],
diff --git a/_sources/examples/reentry/reentry.ipynb b/_sources/examples/reentry/reentry.ipynb
index d35665a06..83d1eaa97 100644
--- a/_sources/examples/reentry/reentry.ipynb
+++ b/_sources/examples/reentry/reentry.ipynb
@@ -686,11 +686,11 @@
"sol = om.CaseReader('dymos_solution.db').get_case('final')\n",
"sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
- "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:alpha',\n",
+ "plot_results([('traj.phase0.timeseries.time', 'traj.phase0.timeseries.alpha',\n",
" 'time (s)', 'alpha (rad)'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:beta',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.beta',\n",
" 'time (s)', 'beta (rad)'),\n",
- " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.states:theta',\n",
+ " ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.theta',\n",
" 'time (s)', 'theta (rad)'),\n",
" ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.q',\n",
" 'time (s)', 'q (Btu/ft**2/s)')], title='Reentry Solution', p_sol=sol,\n",
@@ -715,7 +715,7 @@
"# Check the validity of the solution\n",
"assert_near_equal(p.get_val('traj.phase0.timeseries.time')[-1], 2008.59,\n",
" tolerance=1e-3)\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:theta', units='deg')[-1],\n",
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.theta', units='deg')[-1],\n",
" 34.1412, tolerance=1e-3)"
]
},
diff --git a/_sources/examples/robertson_problem/robertson_problem.ipynb b/_sources/examples/robertson_problem/robertson_problem.ipynb
index 24a8c3b38..50afe85d3 100644
--- a/_sources/examples/robertson_problem/robertson_problem.ipynb
+++ b/_sources/examples/robertson_problem/robertson_problem.ipynb
@@ -336,7 +336,7 @@
"source": [
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:x0')[-1], 0.71583161, tolerance=1E-4)"
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.x0')[-1], 0.71583161, tolerance=1E-4)"
]
},
{
@@ -352,7 +352,7 @@
"source": [
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:y0')[-1], 9.18571144e-06, tolerance=1E-4)"
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.y0')[-1], 9.18571144e-06, tolerance=1E-4)"
]
},
{
@@ -368,7 +368,7 @@
"source": [
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:z0')[-1], 0.2841592, tolerance=1E-4)"
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.z0')[-1], 0.2841592, tolerance=1E-4)"
]
},
{
@@ -384,7 +384,7 @@
"states = ['x0', 'y0', 'z0']\n",
"fig, axes = plt.subplots(len(states), 1)\n",
"for i, state in enumerate(states):\n",
- " axes[i].plot(t, p.get_val(f'traj.phase0.timeseries.states:{state}'), 'o')\n",
+ " axes[i].plot(t, p.get_val(f'traj.phase0.timeseries.{state}'), 'o')\n",
" axes[i].set_ylabel(state[0])\n",
"axes[-1].set_xlabel('time (s)')\n",
"plt.tight_layout()\n",
diff --git a/_sources/examples/ssto_earth/ssto_earth.ipynb b/_sources/examples/ssto_earth/ssto_earth.ipynb
index 8def49258..4569af591 100644
--- a/_sources/examples/ssto_earth/ssto_earth.ipynb
+++ b/_sources/examples/ssto_earth/ssto_earth.ipynb
@@ -338,15 +338,15 @@
"\n",
"fig, [traj_ax, control_ax] = plt.subplots(nrows=2, ncols=1, figsize=(10, 8))\n",
"\n",
- "traj_ax.plot(sol.get_val('traj.phase0.timeseries.states:x'),\n",
- " sol.get_val('traj.phase0.timeseries.states:y'),\n",
+ "traj_ax.plot(sol.get_val('traj.phase0.timeseries.x'),\n",
+ " sol.get_val('traj.phase0.timeseries.y'),\n",
" marker='o',\n",
" ms=4,\n",
" linestyle='None',\n",
" label='solution')\n",
"\n",
- "traj_ax.plot(sim.get_val('traj.phase0.timeseries.states:x'),\n",
- " sim.get_val('traj.phase0.timeseries.states:y'),\n",
+ "traj_ax.plot(sim.get_val('traj.phase0.timeseries.x'),\n",
+ " sim.get_val('traj.phase0.timeseries.y'),\n",
" marker=None,\n",
" linestyle='-',\n",
" label='simulation')\n",
@@ -357,13 +357,13 @@
"traj_ax.grid(True)\n",
"\n",
"control_ax.plot(sol.get_val('traj.phase0.timeseries.time'),\n",
- " sol.get_val('traj.phase0.timeseries.controls:theta'),\n",
+ " sol.get_val('traj.phase0.timeseries.theta'),\n",
" marker='o',\n",
" ms=4,\n",
" linestyle='None')\n",
"\n",
"control_ax.plot(sim.get_val('traj.phase0.timeseries.time'),\n",
- " sim.get_val('traj.phase0.timeseries.controls:theta'),\n",
+ " sim.get_val('traj.phase0.timeseries.theta'),\n",
" linestyle='-',\n",
" marker=None)\n",
"\n",
@@ -391,9 +391,9 @@
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
"assert_near_equal(p.get_val('traj.phase0.timeseries.time')[-1], 143, tolerance=0.05)\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:y')[-1], 1.85E5, 1e-4)\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:vx')[-1], 7796.6961, 1e-4)\n",
- "assert_near_equal(p.get_val('traj.phase0.timeseries.states:vy')[-1], 0, 1e-4)"
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.y')[-1], 1.85E5, 1e-4)\n",
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.vx')[-1], 7796.6961, 1e-4)\n",
+ "assert_near_equal(p.get_val('traj.phase0.timeseries.vy')[-1], 0, 1e-4)"
]
},
{
diff --git a/_sources/examples/ssto_moon_linear_tangent/ssto_moon_linear_tangent.ipynb b/_sources/examples/ssto_moon_linear_tangent/ssto_moon_linear_tangent.ipynb
index ceda5f2d0..70dc7310e 100644
--- a/_sources/examples/ssto_moon_linear_tangent/ssto_moon_linear_tangent.ipynb
+++ b/_sources/examples/ssto_moon_linear_tangent/ssto_moon_linear_tangent.ipynb
@@ -361,15 +361,15 @@
"\n",
"fig, [traj_ax, control_ax, param_ax] = plt.subplots(nrows=3, ncols=1, figsize=(10, 8))\n",
"\n",
- "traj_ax.plot(sol.get_val('traj.phase0.timeseries.states:x'),\n",
- " sol.get_val('traj.phase0.timeseries.states:y'),\n",
+ "traj_ax.plot(sol.get_val('traj.phase0.timeseries.x'),\n",
+ " sol.get_val('traj.phase0.timeseries.y'),\n",
" marker='o',\n",
" ms=4,\n",
" linestyle='None',\n",
" label='solution')\n",
"\n",
- "traj_ax.plot(sim.get_val('traj.phase0.timeseries.states:x'),\n",
- " sim.get_val('traj.phase0.timeseries.states:y'),\n",
+ "traj_ax.plot(sim.get_val('traj.phase0.timeseries.x'),\n",
+ " sim.get_val('traj.phase0.timeseries.y'),\n",
" marker=None,\n",
" linestyle='-',\n",
" label='simulation')\n",
diff --git a/_sources/examples/ssto_moon_polynomial_controls/ssto_moon_polynomial_controls.ipynb b/_sources/examples/ssto_moon_polynomial_controls/ssto_moon_polynomial_controls.ipynb
index a651d911e..7db873c99 100644
--- a/_sources/examples/ssto_moon_polynomial_controls/ssto_moon_polynomial_controls.ipynb
+++ b/_sources/examples/ssto_moon_polynomial_controls/ssto_moon_polynomial_controls.ipynb
@@ -344,15 +344,15 @@
"\n",
"fig, [traj_ax, control_ax, param_ax] = plt.subplots(nrows=3, ncols=1, figsize=(10, 8))\n",
"\n",
- "traj_ax.plot(sol.get_val('traj.phase0.timeseries.states:x'),\n",
- " sol.get_val('traj.phase0.timeseries.states:y'),\n",
+ "traj_ax.plot(sol.get_val('traj.phase0.timeseries.x'),\n",
+ " sol.get_val('traj.phase0.timeseries.y'),\n",
" marker='o',\n",
" ms=4,\n",
" linestyle='None',\n",
" label='solution')\n",
"\n",
- "traj_ax.plot(sim.get_val('traj.phase0.timeseries.states:x'),\n",
- " sim.get_val('traj.phase0.timeseries.states:y'),\n",
+ "traj_ax.plot(sim.get_val('traj.phase0.timeseries.x'),\n",
+ " sim.get_val('traj.phase0.timeseries.y'),\n",
" marker=None,\n",
" linestyle='-',\n",
" label='simulation')\n",
@@ -376,8 +376,8 @@
"control_ax.set_ylabel(r'$\\theta$ (deg)')\n",
"control_ax.grid(True)\n",
"\n",
- "tan_theta_sol = sol.get_val('traj.phase0.timeseries.polynomial_controls:tan_theta')\n",
- "tan_theta_sim = sim.get_val('traj.phase0.timeseries.polynomial_controls:tan_theta')\n",
+ "tan_theta_sol = sol.get_val('traj.phase0.timeseries.tan_theta')\n",
+ "tan_theta_sim = sim.get_val('traj.phase0.timeseries.tan_theta')\n",
"\n",
"param_ax.plot(sol.get_val('traj.phase0.timeseries.time'),\n",
" tan_theta_sol,\n",
diff --git a/_sources/examples/vanderpol/vanderpol.ipynb b/_sources/examples/vanderpol/vanderpol.ipynb
index ae3a985df..fe66eb2b5 100644
--- a/_sources/examples/vanderpol/vanderpol.ipynb
+++ b/_sources/examples/vanderpol/vanderpol.ipynb
@@ -401,23 +401,23 @@
" sim = om.CaseReader('dymos_simulation.db').get_case('final')\n",
" \n",
" plot_results([('traj.phase0.timeseries.time',\n",
- " 'traj.phase0.timeseries.states:x1',\n",
+ " 'traj.phase0.timeseries.x1',\n",
" 'time (s)',\n",
" '$x_1$ (V)'),\n",
" ('traj.phase0.timeseries.time',\n",
- " 'traj.phase0.timeseries.states:x0',\n",
+ " 'traj.phase0.timeseries.x0',\n",
" 'time (s)',\n",
" '$x_0$ (V/s)'),\n",
" ('traj.phase0.timeseries.time',\n",
- " 'traj.phase0.timeseries.states:J',\n",
+ " 'traj.phase0.timeseries.J',\n",
" 'time (s)',\n",
" 'J'),\n",
- " ('traj.phase0.timeseries.states:x0',\n",
- " 'traj.phase0.timeseries.states:x1',\n",
+ " ('traj.phase0.timeseries.x0',\n",
+ " 'traj.phase0.timeseries.x1',\n",
" '$x_0$ (V/s)',\n",
" '$x_1$ (V)'),\n",
" ('traj.phase0.timeseries.time',\n",
- " 'traj.phase0.timeseries.controls:u',\n",
+ " 'traj.phase0.timeseries.u',\n",
" 'time (s)',\n",
" 'control u'),\n",
" ],\n",
diff --git a/_sources/examples/water_rocket/water_rocket.ipynb b/_sources/examples/water_rocket/water_rocket.ipynb
index 37fbefd50..968729ff2 100644
--- a/_sources/examples/water_rocket/water_rocket.ipynb
+++ b/_sources/examples/water_rocket/water_rocket.ipynb
@@ -410,14 +410,14 @@
" p = water_rocket_problem\n",
" Entry = namedtuple('Entry', 'value unit')\n",
" summary = {\n",
- " 'Launch angle': Entry(p.get_val('traj.propelled_ascent.timeseries.states:gam', units='deg')[0, 0], 'deg'),\n",
- " 'Flight angle at end of propulsion': Entry(p.get_val('traj.propelled_ascent.timeseries.states:gam',\n",
+ " 'Launch angle': Entry(p.get_val('traj.propelled_ascent.timeseries.gam', units='deg')[0, 0], 'deg'),\n",
+ " 'Flight angle at end of propulsion': Entry(p.get_val('traj.propelled_ascent.timeseries.gam',\n",
" units='deg')[-1, 0], 'deg'),\n",
" 'Empty mass': Entry(p.get_val('traj.parameters:m_empty', units='kg')[0], 'kg'),\n",
- " 'Water volume': Entry(p.get_val('traj.propelled_ascent.timeseries.states:V_w', 'L')[0, 0], 'L'),\n",
- " 'Maximum range': Entry(p.get_val('traj.descent.timeseries.states:r', units='m')[-1, 0], 'm'),\n",
- " 'Maximum height': Entry(p.get_val('traj.ballistic_ascent.timeseries.states:h', units='m')[-1, 0], 'm'),\n",
- " 'Maximum velocity': Entry(p.get_val('traj.propelled_ascent.timeseries.states:v', units='m/s')[-1, 0], 'm/s'),\n",
+ " 'Water volume': Entry(p.get_val('traj.propelled_ascent.timeseries.V_w', 'L')[0, 0], 'L'),\n",
+ " 'Maximum range': Entry(p.get_val('traj.descent.timeseries.r', units='m')[-1, 0], 'm'),\n",
+ " 'Maximum height': Entry(p.get_val('traj.ballistic_ascent.timeseries.h', units='m')[-1, 0], 'm'),\n",
+ " 'Maximum velocity': Entry(p.get_val('traj.propelled_ascent.timeseries.v', units='m/s')[-1, 0], 'm/s'),\n",
" }\n",
"\n",
" return summary\n"
@@ -439,13 +439,13 @@
" \n",
" c = colors['pa']\n",
"\n",
- " ax[0,0].plot(t_imp, p.get_val('traj.propelled_ascent.timeseries.states:p', 'bar'), '.', color=c)\n",
- " ax[0,0].plot(t_exp, exp_out.get_val('traj.propelled_ascent.timeseries.states:p', 'bar'), '-', color=c)\n",
+ " ax[0,0].plot(t_imp, p.get_val('traj.propelled_ascent.timeseries.p', 'bar'), '.', color=c)\n",
+ " ax[0,0].plot(t_exp, exp_out.get_val('traj.propelled_ascent.timeseries.p', 'bar'), '-', color=c)\n",
" ax[0,0].set_ylabel('p (bar)')\n",
" ax[0,0].set_ylim(bottom=0)\n",
"\n",
- " ax[1,0].plot(t_imp, p.get_val('traj.propelled_ascent.timeseries.states:V_w', 'L'), '.', color=c)\n",
- " ax[1,0].plot(t_exp, exp_out.get_val('traj.propelled_ascent.timeseries.states:V_w', 'L'), '-', color=c)\n",
+ " ax[1,0].plot(t_imp, p.get_val('traj.propelled_ascent.timeseries.V_w', 'L'), '.', color=c)\n",
+ " ax[1,0].plot(t_exp, exp_out.get_val('traj.propelled_ascent.timeseries.V_w', 'L'), '-', color=c)\n",
" ax[1,0].set_ylabel('$V_w$ (L)')\n",
"\n",
" ax[0,1].plot(t_imp, p.get_val('traj.propelled_ascent.timeseries.T', 'N'), '.', color=c)\n",
@@ -453,8 +453,8 @@
" ax[0,1].set_ylabel('T (N)')\n",
" ax[0,1].set_ylim(bottom=0)\n",
"\n",
- " ax[1,1].plot(t_imp, p.get_val('traj.propelled_ascent.timeseries.states:v', 'm/s'), '.', color=c)\n",
- " ax[1,1].plot(t_exp, exp_out.get_val('traj.propelled_ascent.timeseries.states:v', 'm/s'), '-', color=c)\n",
+ " ax[1,1].plot(t_imp, p.get_val('traj.propelled_ascent.timeseries.v', 'm/s'), '.', color=c)\n",
+ " ax[1,1].plot(t_exp, exp_out.get_val('traj.propelled_ascent.timeseries.v', 'm/s'), '-', color=c)\n",
" ax[1,1].set_ylabel('v (m/s)')\n",
" ax[1,1].set_ylim(bottom=0)\n",
"\n",
@@ -488,13 +488,13 @@
" 'propelled_ascent': exp_out.get_val('traj.propelled_ascent.timeseries.time'),\n",
" 'descent': exp_out.get_val('traj.descent.timeseries.time')}\n",
"\n",
- " x_imp = {phase: {state: p.get_val(f\"traj.{phase}.timeseries.states:{state}\", unit)\n",
+ " x_imp = {phase: {state: p.get_val(f\"traj.{phase}.timeseries.{state}\", unit)\n",
" for state, unit in zip(states, units)\n",
" }\n",
" for phase in phases\n",
" }\n",
"\n",
- " x_exp = {phase: {state: exp_out.get_val(f\"traj.{phase}.timeseries.states:{state}\", unit)\n",
+ " x_exp = {phase: {state: exp_out.get_val(f\"traj.{phase}.timeseries.{state}\", unit)\n",
" for state, unit in zip(states, units)\n",
" }\n",
" for phase in phases\n",
@@ -541,21 +541,21 @@
" 'propelled_ascent': exp_out.get_val('traj.propelled_ascent.timeseries.time'),\n",
" 'descent': exp_out.get_val('traj.descent.timeseries.time')}\n",
"\n",
- " r_imp = {'ballistic_ascent': p.get_val('traj.ballistic_ascent.timeseries.states:r'),\n",
- " 'propelled_ascent': p.get_val('traj.propelled_ascent.timeseries.states:r'),\n",
- " 'descent': p.get_val('traj.descent.timeseries.states:r')}\n",
+ " r_imp = {'ballistic_ascent': p.get_val('traj.ballistic_ascent.timeseries.r'),\n",
+ " 'propelled_ascent': p.get_val('traj.propelled_ascent.timeseries.r'),\n",
+ " 'descent': p.get_val('traj.descent.timeseries.r')}\n",
"\n",
- " r_exp = {'ballistic_ascent': exp_out.get_val('traj.ballistic_ascent.timeseries.states:r'),\n",
- " 'propelled_ascent': exp_out.get_val('traj.propelled_ascent.timeseries.states:r'),\n",
- " 'descent': exp_out.get_val('traj.descent.timeseries.states:r')}\n",
+ " r_exp = {'ballistic_ascent': exp_out.get_val('traj.ballistic_ascent.timeseries.r'),\n",
+ " 'propelled_ascent': exp_out.get_val('traj.propelled_ascent.timeseries.r'),\n",
+ " 'descent': exp_out.get_val('traj.descent.timeseries.r')}\n",
"\n",
- " h_imp = {'ballistic_ascent': p.get_val('traj.ballistic_ascent.timeseries.states:h'),\n",
- " 'propelled_ascent': p.get_val('traj.propelled_ascent.timeseries.states:h'),\n",
- " 'descent': p.get_val('traj.descent.timeseries.states:h')}\n",
+ " h_imp = {'ballistic_ascent': p.get_val('traj.ballistic_ascent.timeseries.h'),\n",
+ " 'propelled_ascent': p.get_val('traj.propelled_ascent.timeseries.h'),\n",
+ " 'descent': p.get_val('traj.descent.timeseries.h')}\n",
"\n",
- " h_exp = {'ballistic_ascent': exp_out.get_val('traj.ballistic_ascent.timeseries.states:h'),\n",
- " 'propelled_ascent': exp_out.get_val('traj.propelled_ascent.timeseries.states:h'),\n",
- " 'descent': exp_out.get_val('traj.descent.timeseries.states:h')}\n",
+ " h_exp = {'ballistic_ascent': exp_out.get_val('traj.ballistic_ascent.timeseries.h'),\n",
+ " 'propelled_ascent': exp_out.get_val('traj.propelled_ascent.timeseries.h'),\n",
+ " 'descent': exp_out.get_val('traj.descent.timeseries.h')}\n",
"\n",
" axes.plot(r_imp['propelled_ascent'], h_imp['propelled_ascent'], 'o', color=colors['pa'])\n",
" axes.plot(r_imp['ballistic_ascent'], h_imp['ballistic_ascent'], 'o', color=colors['ba'])\n",
diff --git a/_sources/faq/connect_scalar_parameters_to_ode.ipynb b/_sources/faq/connect_scalar_parameters_to_ode.ipynb
index f331a8297..0ee7db42f 100644
--- a/_sources/faq/connect_scalar_parameters_to_ode.ipynb
+++ b/_sources/faq/connect_scalar_parameters_to_ode.ipynb
@@ -186,15 +186,15 @@
"exp_out = om.CaseReader('dymos_simulation.db').get_case('final')\n",
"\n",
"# Extract the timeseries from the implicit solution and the explicit simulation\n",
- "x = p.get_val('traj.phase0.timeseries.states:x')\n",
- "y = p.get_val('traj.phase0.timeseries.states:y')\n",
+ "x = p.get_val('traj.phase0.timeseries.x')\n",
+ "y = p.get_val('traj.phase0.timeseries.y')\n",
"t = p.get_val('traj.phase0.timeseries.time')\n",
- "theta = p.get_val('traj.phase0.timeseries.controls:theta')\n",
+ "theta = p.get_val('traj.phase0.timeseries.theta')\n",
"\n",
- "x_exp = exp_out.get_val('traj.phase0.timeseries.states:x')\n",
- "y_exp = exp_out.get_val('traj.phase0.timeseries.states:y')\n",
+ "x_exp = exp_out.get_val('traj.phase0.timeseries.x')\n",
+ "y_exp = exp_out.get_val('traj.phase0.timeseries.y')\n",
"t_exp = exp_out.get_val('traj.phase0.timeseries.time')\n",
- "theta_exp = exp_out.get_val('traj.phase0.timeseries.controls:theta')\n",
+ "theta_exp = exp_out.get_val('traj.phase0.timeseries.theta')\n",
"\n",
"fig, axes = plt.subplots(nrows=2, ncols=1)\n",
"\n",
diff --git a/_sources/faq/downstream_analysis.ipynb b/_sources/faq/downstream_analysis.ipynb
index 7c0dae322..6aec66ea7 100644
--- a/_sources/faq/downstream_analysis.ipynb
+++ b/_sources/faq/downstream_analysis.ipynb
@@ -58,7 +58,7 @@
"For example, something like the following might be used to connect the final value of the state `range` to some downstream component.\n",
"\n",
"```python\n",
- "problem.model.connect('trajectory.phase0.timeseries.states:range',\n",
+ "problem.model.connect('trajectory.phase0.timeseries.range',\n",
" 'postprocess.final_range',\n",
" src_indices=[-1])\n",
"```\n",
diff --git a/_sources/faq/tandem_phases.ipynb b/_sources/faq/tandem_phases.ipynb
index 243ce854c..d7ad5b900 100644
--- a/_sources/faq/tandem_phases.ipynb
+++ b/_sources/faq/tandem_phases.ipynb
@@ -243,8 +243,8 @@
"#\n",
"p.model.connect('phase0.t_duration', 'phase1.t_duration')\n",
"\n",
- "p.model.connect('phase0.timeseries2.controls:theta', 'phase1.controls:theta')\n",
- "p.model.connect('phase0.timeseries2.states:v', 'phase1.controls:v')\n",
+ "p.model.connect('phase0.timeseries2.theta', 'phase1.controls:theta')\n",
+ "p.model.connect('phase0.timeseries2.v', 'phase1.controls:v')\n",
"\n",
"# Minimize arclength at the end of the second phase\n",
"phase1.add_objective('S', loc='final', ref=1)\n",
@@ -268,10 +268,10 @@
"\n",
"fig, (ax0, ax1) = plt.subplots(2, 1)\n",
"fig.tight_layout()\n",
- "ax0.plot(p.get_val('phase0.timeseries.states:x'), p.get_val('phase0.timeseries.states:y'), '.')\n",
+ "ax0.plot(p.get_val('phase0.timeseries.x'), p.get_val('phase0.timeseries.y'), '.')\n",
"ax0.set_xlabel('x (m)')\n",
"ax0.set_ylabel('y (m)')\n",
- "ax1.plot(p.get_val('phase1.timeseries.time'), p.get_val('phase1.timeseries.states:S'), '+')\n",
+ "ax1.plot(p.get_val('phase1.timeseries.time'), p.get_val('phase1.timeseries.S'), '+')\n",
"ax1.set_xlabel('t (s)')\n",
"ax1.set_ylabel('S (m)')\n",
"plt.show()"
@@ -291,7 +291,7 @@
"from openmdao.utils.assert_utils import assert_near_equal\n",
"\n",
"expected = np.sqrt((10-0)**2 + (10 - 5)**2)\n",
- "assert_near_equal(p.get_val('phase1.timeseries.states:S')[-1], expected, tolerance=1.0E-3)"
+ "assert_near_equal(p.get_val('phase1.timeseries.S')[-1], expected, tolerance=1.0E-3)"
]
}
],
@@ -306,7 +306,7 @@
}
},
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -320,7 +320,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.3"
+ "version": "3.11.0"
}
},
"nbformat": 4,
diff --git a/_sources/features/phases/analytic_phases.ipynb b/_sources/features/phases/analytic_phases.ipynb
index 73f79aa64..6c6598938 100644
--- a/_sources/features/phases/analytic_phases.ipynb
+++ b/_sources/features/phases/analytic_phases.ipynb
@@ -218,7 +218,7 @@
"p.run_model()\n",
"\n",
"t = p.get_val('traj.phase.timeseries.time', units='s')\n",
- "x = p.get_val('traj.phase.timeseries.states:x', units='unitless')\n",
+ "x = p.get_val('traj.phase.timeseries.x', units='unitless')\n",
"\n",
"print(f'x({t[-1, 0]}) = {x[-1, 0]}')\n",
"\n",
@@ -373,11 +373,11 @@
"p.run_driver()\n",
"\n",
"t_1 = p.get_val('traj.first_phase.timeseries.time', units='s')[:, 0]\n",
- "x_1 = p.get_val('traj.first_phase.timeseries.states:x', units='unitless')[:, 0]\n",
+ "x_1 = p.get_val('traj.first_phase.timeseries.x', units='unitless')[:, 0]\n",
"x0_1 = p.get_val('traj.first_phase.parameter_vals:x0')[:, 0]\n",
"\n",
"t_2 = p.get_val('traj.second_phase.timeseries.time', units='s')[:, 0]\n",
- "x_2 = p.get_val('traj.second_phase.timeseries.states:x', units='unitless')[:, 0]\n",
+ "x_2 = p.get_val('traj.second_phase.timeseries.x', units='unitless')[:, 0]\n",
"x0_2 = p.get_val('traj.second_phase.parameter_vals:x0')[:, 0]\n",
"\n",
"print(f'x({t_1[-1]}) = {x_1[-1]}')\n",
diff --git a/_sources/features/phases/timeseries.ipynb b/_sources/features/phases/timeseries.ipynb
index dd17c04be..9cd661388 100644
--- a/_sources/features/phases/timeseries.ipynb
+++ b/_sources/features/phases/timeseries.ipynb
@@ -64,14 +64,14 @@
"|--------------------------------------------------------------|-----------------------------------------------------|\n",
"|``.timeseries.time`` |Current time value |\n",
"|``.timeseries.time_phase`` |Current phase elapsed time |\n",
- "|``.timeseries.states:`` |Value of state variable named x |\n",
- "|``.timeseries.controls:`` |Value of control variable named u |\n",
- "|``.timeseries.control_rates:_rate`` |Time derivative of control named u |\n",
- "|``.timeseries.control_rates:_rate2`` |Second time derivative of control named u |\n",
- "|``.timeseries.polynomial_controls:`` |Value of polynomial control variable named u |\n",
- "|``.timeseries.polynomial_control_rates:_rate`` |Time derivative of polynomial control named u |\n",
- "|``.timeseries.polynomial_control_rates:_rate2``|Second time derivative of polynomial control named u |\n",
- "|``.timeseries.parameters:`` |Value of parameter named d |\n",
+ "|``.timeseries.`` |Value of state variable named x |\n",
+ "|``.timeseries.`` |Value of control variable named u |\n",
+ "|``.timeseries._rate`` |Time derivative of control named u |\n",
+ "|``.timeseries._rate2`` |Second time derivative of control named u |\n",
+ "|``.timeseries.`` |Value of polynomial control variable named u |\n",
+ "|``.timeseries._rate`` |Time derivative of polynomial control named u |\n",
+ "|``.timeseries._rate2``|Second time derivative of polynomial control named u |\n",
+ "|``.timeseries.`` |Value of parameter named d |\n",
"\n",
"## Adding additional timeseries outputs\n",
"\n",
diff --git a/_sources/getting_started/intro_to_dymos/intro_ivp.ipynb b/_sources/getting_started/intro_to_dymos/intro_ivp.ipynb
index 913e7a409..5bc9c6a8b 100644
--- a/_sources/getting_started/intro_to_dymos/intro_ivp.ipynb
+++ b/_sources/getting_started/intro_to_dymos/intro_ivp.ipynb
@@ -233,8 +233,8 @@
"states = ['x', 'v']\n",
"fig, axes = plt.subplots(len(states), 1)\n",
"for i, state in enumerate(states):\n",
- " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.states:{state}'), 'o')\n",
- " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.states:{state}'), '-')\n",
+ " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.{state}'), 'o')\n",
+ " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.{state}'), '-')\n",
" axes[i].set_ylabel(state)\n",
"axes[-1].set_xlabel('time (s)')\n",
"fig.legend((sol[0], sim[0]), ('solution', 'simulation'), loc='lower right', ncol=2)\n",
@@ -361,8 +361,8 @@
"states = ['x', 'v']\n",
"fig, axes = plt.subplots(len(states), 1)\n",
"for i, state in enumerate(states):\n",
- " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.states:{state}'), 'o')\n",
- " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.states:{state}'), '-')\n",
+ " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.{state}'), 'o')\n",
+ " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.{state}'), '-')\n",
" axes[i].set_ylabel(state)\n",
"axes[-1].set_xlabel('time (s)')\n",
"fig.legend((sol[0], sim[0]), ('solution', 'simulation'), loc='lower right', ncol=2)\n",
@@ -462,8 +462,8 @@
"states = ['x', 'v']\n",
"fig, axes = plt.subplots(len(states), 1)\n",
"for i, state in enumerate(states):\n",
- " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.states:{state}'), 'o')\n",
- " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.states:{state}'), '-')\n",
+ " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.{state}'), 'o')\n",
+ " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.{state}'), '-')\n",
" axes[i].set_ylabel(state)\n",
"axes[-1].set_xlabel('time (s)')\n",
"fig.legend((sol[0], sim[0]), ('solution', 'simulation'), loc='lower right', ncol=2)\n",
diff --git a/_sources/getting_started/intro_to_dymos/intro_segments.ipynb b/_sources/getting_started/intro_to_dymos/intro_segments.ipynb
index 2fefa961d..eb0915c21 100644
--- a/_sources/getting_started/intro_to_dymos/intro_segments.ipynb
+++ b/_sources/getting_started/intro_to_dymos/intro_segments.ipynb
@@ -135,8 +135,8 @@
"states = ['x', 'v']\n",
"fig, axes = plt.subplots(len(states), 1)\n",
"for i, state in enumerate(states):\n",
- " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.states:{state}'), 'o')\n",
- " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.states:{state}'), '-')\n",
+ " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.{state}'), 'o')\n",
+ " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.{state}'), '-')\n",
" axes[i].set_ylabel(state)\n",
"axes[-1].set_xlabel('time (s)')\n",
"fig.legend((sol[0], sim[0]), ('solution', 'simulation'), loc='lower right', ncol=2)\n",
@@ -232,8 +232,8 @@
"states = ['x', 'v']\n",
"fig, axes = plt.subplots(len(states), 1)\n",
"for i, state in enumerate(states):\n",
- " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.states:{state}'), 'o')\n",
- " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.states:{state}'), '-')\n",
+ " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.{state}'), 'o')\n",
+ " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.{state}'), '-')\n",
" axes[i].set_ylabel(state)\n",
"axes[-1].set_xlabel('time (s)')\n",
"fig.legend((sol[0], sim[0]), ('solution', 'simulation'), loc='lower right', ncol=2)\n",
@@ -319,8 +319,8 @@
"states = ['x', 'v']\n",
"fig, axes = plt.subplots(len(states), 1)\n",
"for i, state in enumerate(states):\n",
- " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.states:{state}'), 'o')\n",
- " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.states:{state}'), '-')\n",
+ " sol = axes[i].plot(t_sol, prob.get_val(f'traj.phase0.timeseries.{state}'), 'o')\n",
+ " sim = axes[i].plot(t_sim, sim_out.get_val(f'traj.phase0.timeseries.{state}'), '-')\n",
" axes[i].set_ylabel(state)\n",
"axes[-1].set_xlabel('time (s)')\n",
"fig.legend((sol[0], sim[0]), ('solution', 'simulation'), loc='lower right', ncol=2)\n",
diff --git a/contributing/contributing.html b/contributing/contributing.html
index 92739c3d0..24d289a14 100644
--- a/contributing/contributing.html
+++ b/contributing/contributing.html
@@ -729,21 +729,21 @@ Notebook Creation#
Both sets of equations of motion have common aerodynamic models.
First, the lift coefficient is computed using a model which assumes linearity in lift wrt the angle of attack.
-
-(21)#\[\begin{align}
+
+(21)#\[\begin{align}
C_L &= C_{L0} + \frac{\alpha}{\alpha_{max}} \left(C_{L-max} - C_{L0}\right)
\end{align}\]
Next, the drag-due-to-lift factor is computed (Equations 12.48 and 12.61 in Raymer[@raymer2012aircraft]).
-
-(22)#\[\begin{align}
+
+(22)#\[\begin{align}
K_{nom} &= \frac{1}{ \pi AR e} \\
b &= \frac{span}{2} \\
K &= 33 K_{nom} \frac{ \left(\frac{h + h_w}{b} \right) ^{\frac{3}{2}}}{1.0 + 33 \left( \frac{h + h_w}{b}\right) ^{\frac{3}{2}}}
@@ -591,8 +591,8 @@ The Aerodynamic Model
Finally, the lift and drag are computed after computing the dynamic pressure.
-
-(23)#\[\begin{align}
+
+(23)#\[\begin{align}
q &= 0.5 \rho v^2 \\
L &= q S C_L \\
D &= q S \left( C_{D0} + K C_{L}^2 \right)
@@ -603,8 +603,8 @@ Stall Speed\(\frac{v}{v_{stall}}\)).
This constraint is used to trigger the beginning of rotation and is used as a boundary constraint at the end of the initial climb.
Stall speed is given by Equation 5.6 in Raymer[@raymer2012aircraft].
-
-(24)#\[\begin{align}
+
+(24)#\[\begin{align}
W &= m g \\
v_{stall} &= \sqrt{\frac{2 * W}{\rho S C_{L-max}}}
\end{align}\]
@@ -612,8 +612,8 @@ Stall Speed
Runway Equations of Motion#
The runway equations of motion are used to integrate range and speed as the vehicle rolls along the runway.
-
-(25)#\[\begin{align}
+
+(25)#\[\begin{align}
F_r &= mg - L \cos \alpha - T \sin \alpha \\
\dot{v} &= \frac{T \cos \alpha - D - F_r \mu_r}{m} \\
\dot{r} &= v
@@ -640,8 +640,8 @@ Runway Equations of Motion
Flight Equations of Motion#
The flight equations of motion include two additional state variables: the flight-path angle (\(\gamma\)) and altitude (\(h\)).
-
-(26)#\[\begin{align}
+
+(26)#\[\begin{align}
\dot{v} &= \frac{T}{m} \cos \alpha - \frac{D}{m} - g \sin \gamma \\
\dot{\gamma} &= \frac{T}{m v} \sin \alpha + \frac{L}{m v} - \frac{g \cos \gamma}{v} \\
\dot{h} &= v \sin \gamma \\
@@ -1165,7 +1165,7 @@ Building and running the problem
-<dymos.phase.phase.Phase at 0x7fac2e617730>
+<dymos.phase.phase.Phase at 0x7f886d54b730>
@@ -1309,9 +1309,8 @@ Building and running the problemINFO: checking out_of_order
+
+INFO: checking out_of_order
INFO:check_config:checking out_of_order
@@ -1422,24 +1421,25 @@ Building and running the problemColoring for 'traj.phases.br_to_v1.rhs_all' (class BalancedFieldODEComp)
-Jacobian shape: (132, 60) ( 9.79% nonzero)
+Jacobian shape: (132, 60) ( 9.80% nonzero)
FWD solves: 16 REV solves: 0
Total colors vs. total size: 16 vs 60 (73.3% improvement)
Sparsity computed using tolerance: 1e-25
-Time to compute sparsity: 0.024507 sec.
-Time to compute coloring: 0.017841 sec.
+Time to compute sparsity: 0.020183 sec.
+Time to compute coloring: 0.016132 sec.
Memory to compute coloring: 0.000000 MB.
-
-Coloring for 'traj.phases.rto.rhs_all' (class BalancedFieldODEComp)
+
+
+Coloring for 'traj.phases.rto.rhs_all' (class BalancedFieldODEComp)
Jacobian shape: (132, 60) ( 9.79% nonzero)
FWD solves: 16 REV solves: 0
Total colors vs. total size: 16 vs 60 (73.3% improvement)
Sparsity computed using tolerance: 1e-25
-Time to compute sparsity: 0.024118 sec.
-Time to compute coloring: 0.017445 sec.
+Time to compute sparsity: 0.021996 sec.
+Time to compute coloring: 0.016319 sec.
Memory to compute coloring: 0.000000 MB.
Coloring for 'traj.phases.v1_to_vr.rhs_all' (class BalancedFieldODEComp)
@@ -1449,8 +1449,8 @@ Building and running the problemFull total jacobian was computed 3 times, taking 1.752797 seconds.
+Full total jacobian was computed 3 times, taking 1.474327 seconds.
Total jacobian shape: (178, 166)
@@ -1486,12 +1486,12 @@ Building and running the problem/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/total_jac.py:1782: DerivativesWarning:Constraints or objectives [('traj.phases.climb.timeseries.timeseries_comp.states:gam', inds=[(0, 0)])] cannot be impacted by the design variables of the problem.
+/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/total_jac.py:1782: DerivativesWarning:Constraints or objectives [('traj.phases.climb.timeseries.timeseries_comp.gam', inds=[(0, 0)])] cannot be impacted by the design variables of the problem.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
@@ -1530,8 +1530,8 @@ Building and running the problemfig, axes = plt.subplots(2, 1, sharex=True, gridspec_kw={'top': 0.92}, figsize=(12,6))
for phase in ['br_to_v1', 'rto', 'v1_to_vr', 'rotate', 'climb']:
- r = sim_case.get_val(f'traj.{phase}.timeseries.states:r', units='ft')
- v = sim_case.get_val(f'traj.{phase}.timeseries.states:v', units='kn')
+ r = sim_case.get_val(f'traj.{phase}.timeseries.r', units='ft')
+ v = sim_case.get_val(f'traj.{phase}.timeseries.v', units='kn')
t = sim_case.get_val(f'traj.{phase}.timeseries.time', units='s')
axes[0].plot(t, r, '-', label=phase)
axes[1].plot(t, v, '-', label=phase)
@@ -1543,10 +1543,10 @@ Building and running the problemaxes[1].grid(True)
tv1 = sim_case.get_val('traj.br_to_v1.timeseries.time', units='s')[-1, 0]
-v1 = sim_case.get_val('traj.br_to_v1.timeseries.states:v', units='kn')[-1, 0]
+v1 = sim_case.get_val('traj.br_to_v1.timeseries.v', units='kn')[-1, 0]
tf_rto = sim_case.get_val('traj.rto.timeseries.time', units='s')[-1, 0]
-rf_rto = sim_case.get_val('traj.rto.timeseries.states:r', units='ft')[-1, 0]
+rf_rto = sim_case.get_val('traj.rto.timeseries.r', units='ft')[-1, 0]
axes[0].annotate(f'field length = {r[-1, 0]:5.1f} ft', xy=(t[-1, 0], r[-1, 0]),
xycoords='data', xytext=(0.7, 0.5),
diff --git a/examples/balanced_field/balanced_field_funccomp.html b/examples/balanced_field/balanced_field_funccomp.html
index 139482cf2..c14bdeb2b 100644
--- a/examples/balanced_field/balanced_field_funccomp.html
+++ b/examples/balanced_field/balanced_field_funccomp.html
@@ -993,8 +993,8 @@ Building and running the problemColoring for 'traj.phases.rto.rhs_all' (class ExplicitFuncComp)
-Jacobian shape: (132, 60) ( 9.79% nonzero)
+Jacobian shape: (132, 60) ( 9.77% nonzero)
FWD solves: 16 REV solves: 0
Total colors vs. total size: 16 vs 60 (73.3% improvement)
Sparsity computed using tolerance: 1e-25
-Time to compute sparsity: 0.392592 sec.
-Time to compute coloring: 0.086176 sec.
+Time to compute sparsity: 0.334716 sec.
+Time to compute coloring: 0.070965 sec.
Memory to compute coloring: 0.000000 MB.
@@ -1023,8 +1023,8 @@ Building and running the problemFull total jacobian was computed 3 times, taking 5.754664 seconds.
+Full total jacobian was computed 3 times, taking 4.821109 seconds.
Total jacobian shape: (178, 166)
@@ -1067,31 +1067,31 @@ Building and running the problem/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/total_jac.py:1782: DerivativesWarning:Constraints or objectives [('traj.phases.climb.timeseries.timeseries_comp.states:gam', inds=[(0, 0)])] cannot be impacted by the design variables of the problem.
+/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/total_jac.py:1782: DerivativesWarning:Constraints or objectives [('traj.phases.climb.timeseries.timeseries_comp.gam', inds=[(0, 0)])] cannot be impacted by the design variables of the problem.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
+/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
+/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
-/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
-/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/core/group.py:2829: UnusedOptionWarning:'ode_eval' <class ODEEvaluationGroup>: ignored flat_src_indices and/or src_shape because src_indices was not specified.
-/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/recorders/sqlite_recorder.py:227: UserWarning:The existing case recorder file, dymos_simulation.db, is being overwritten.
+Simulating trajectory traj
-Simulating trajectory traj
+/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/recorders/sqlite_recorder.py:227: UserWarning:The existing case recorder file, dymos_simulation.db, is being overwritten.
Done simulating trajectory traj
@@ -1106,8 +1106,8 @@ Building and running the problemfig, axes = plt.subplots(2, 1, sharex=True, gridspec_kw={'top': 0.92}, figsize=(12, 6))
for phase in ['br_to_v1', 'rto', 'v1_to_vr', 'rotate', 'climb']:
- r = sim_case.get_val(f'traj.{phase}.timeseries.states:r', units='ft')
- v = sim_case.get_val(f'traj.{phase}.timeseries.states:v', units='kn')
+ r = sim_case.get_val(f'traj.{phase}.timeseries.r', units='ft')
+ v = sim_case.get_val(f'traj.{phase}.timeseries.v', units='kn')
t = sim_case.get_val(f'traj.{phase}.timeseries.time', units='s')
axes[0].plot(t, r, '-', label=phase)
axes[1].plot(t, v, '-', label=phase)
@@ -1119,10 +1119,10 @@ Building and running the problemaxes[1].grid(True)
tv1 = sim_case.get_val('traj.br_to_v1.timeseries.time', units='s')[-1, 0]
-v1 = sim_case.get_val('traj.br_to_v1.timeseries.states:v', units='kn')[-1, 0]
+v1 = sim_case.get_val('traj.br_to_v1.timeseries.v', units='kn')[-1, 0]
tf_rto = sim_case.get_val('traj.rto.timeseries.time', units='s')[-1, 0]
-rf_rto = sim_case.get_val('traj.rto.timeseries.states:r', units='ft')[-1, 0]
+rf_rto = sim_case.get_val('traj.rto.timeseries.r', units='ft')[-1, 0]
axes[0].annotate(f'field length = {r[-1, 0]:5.1f} ft', xy=(t[-1, 0], r[-1, 0]),
xycoords='data', xytext=(0.7, 0.5),
diff --git a/examples/brachistochrone/brachistochrone.html b/examples/brachistochrone/brachistochrone.html
index 933c6d259..8dc43f53e 100644
--- a/examples/brachistochrone/brachistochrone.html
+++ b/examples/brachistochrone/brachistochrone.html
@@ -537,8 +537,8 @@ State variables
System dynamics#
From the free-body diagram above, the evolution of the state variables is given by the following ordinary differential equations (ODE).
-
-(13)#\[\begin{align}
+
+(13)#\[\begin{align}
\frac{d x}{d t} &= v \sin(\theta) \\
\frac{d y}{d t} &= -v \cos(\theta) \\
\frac{d v}{d t} &= g \cos(\theta)
@@ -556,8 +556,8 @@ The initial and final conditions
-(14)#\[\begin{align}
+
+(14)#\[\begin{align}
x_0 &= 0 \\
y_0 &= 10 \\
v_0 &= 0
@@ -565,8 +565,8 @@ The initial and final conditions
-(15)#\[\begin{align}
+
+(15)#\[\begin{align}
x_f &= 10 \\
y_f &= 5 \\
v_f &= \mathrm{free}
@@ -732,27 +732,27 @@ Testing the ODEModel viewer data has already been recorded for Driver.
-Full total jacobian was computed 3 times, taking 0.036963 seconds.
+Full total jacobian was computed 3 times, taking 0.030417 seconds.
Total jacobian shape: (40, 50)
-Jacobian shape: (40, 50) (18.65% nonzero)
+Jacobian shape: (40, 50) (18.50% nonzero)
FWD solves: 13 REV solves: 0
Total colors vs. total size: 13 vs 50 (74.0% improvement)
Sparsity computed using tolerance: 1e-25
-Time to compute sparsity: 0.036963 sec.
-Time to compute coloring: 0.040171 sec.
+Time to compute sparsity: 0.030417 sec.
+Time to compute coloring: 0.034754 sec.
Memory to compute coloring: 0.000000 MB.
@@ -886,9 +886,9 @@ Solving the problem with Legendre-Gauss-Lobatto collocation in Dymos# Generate the explicitly simulated trajectory
exp_out = traj.simulate()
-plot_results([('traj.phase0.timeseries.states:x', 'traj.phase0.timeseries.states:y',
+plot_results([('traj.phase0.timeseries.x', 'traj.phase0.timeseries.y',
'x (m)', 'y (m)'),
- ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:theta',
+ ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.theta',
'time (s)', 'theta (deg)')],
title='Brachistochrone Solution\nHigh-Order Gauss-Lobatto Method',
p_sol=p, p_sim=exp_out)
@@ -1016,29 +1016,29 @@ Solving the problem with Legendre-Gauss-Lobatto collocation in Dymos/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/recorders/sqlite_recorder.py:227: UserWarning:The existing case recorder file, dymos_solution.db, is being overwritten.
-Full total jacobian was computed 3 times, taking 0.019724 seconds.
+Full total jacobian was computed 3 times, taking 0.017404 seconds.
Total jacobian shape: (12, 51)
-Jacobian shape: (12, 51) (98.37% nonzero)
+Jacobian shape: (12, 51) (96.57% nonzero)
FWD solves: 0 REV solves: 12
Total colors vs. total size: 12 vs 12 (0.0% improvement)
Sparsity computed using tolerance: 1e-25
-Time to compute sparsity: 0.019724 sec.
-Time to compute coloring: 0.033767 sec.
+Time to compute sparsity: 0.017404 sec.
+Time to compute coloring: 0.029078 sec.
Memory to compute coloring: 0.000000 MB.
-Full total jacobian was computed 3 times, taking 0.019691 seconds.
+Full total jacobian was computed 3 times, taking 0.017408 seconds.
Total jacobian shape: (12, 51)
-Jacobian shape: (12, 51) (98.37% nonzero)
+Jacobian shape: (12, 51) (96.57% nonzero)
FWD solves: 0 REV solves: 12
Total colors vs. total size: 12 vs 12 (0.0% improvement)
Sparsity computed using tolerance: 1e-25
-Time to compute sparsity: 0.019691 sec.
-Time to compute coloring: 0.033291 sec.
+Time to compute sparsity: 0.017408 sec.
+Time to compute coloring: 0.028893 sec.
Memory to compute coloring: 0.000000 MB.
@@ -1066,9 +1066,9 @@ Solving the problem with Legendre-Gauss-Lobatto collocation in Dymos
-plot_results([('traj.phase0.timeseries.states:x', 'traj.phase0.timeseries.states:y',
+plot_results([('traj.phase0.timeseries.x', 'traj.phase0.timeseries.y',
'x (m)', 'y (m)'),
- ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.controls:theta',
+ ('traj.phase0.timeseries.time', 'traj.phase0.timeseries.theta',
'time (s)', 'theta (deg)')],
title='Brachistochrone Solution\nExplicit Shooting Method',
p_sol=p)
diff --git a/examples/brachistochrone/brachistochrone_tandem_phases.html b/examples/brachistochrone/brachistochrone_tandem_phases.html
index d5d88fc82..417e9d6b6 100644
--- a/examples/brachistochrone/brachistochrone_tandem_phases.html
+++ b/examples/brachistochrone/brachistochrone_tandem_phases.html
@@ -639,8 +639,8 @@ The second phase to integrate the arclength of the wire.#
p.model.connect('phase0.t_duration', 'phase1.t_duration')
-p.model.connect('phase0.timeseries2.controls:theta', 'phase1.controls:theta')
-p.model.connect('phase0.timeseries2.states:v', 'phase1.controls:v')
+p.model.connect('phase0.timeseries2.theta', 'phase1.controls:theta')
+p.model.connect('phase0.timeseries2.v', 'phase1.controls:v')
# Minimize time
phase1.add_objective('time', loc='final', ref=1)
@@ -682,18 +682,18 @@ Setup and runModel viewer data has already been recorded for Driver.
-Full total jacobian was computed 3 times, taking 0.366153 seconds.
+Full total jacobian was computed 3 times, taking 0.287595 seconds.
Total jacobian shape: (223, 287)
-Jacobian shape: (223, 287) ( 6.68% nonzero)
-FWD solves: 25 REV solves: 0
-Total colors vs. total size: 25 vs 287 (91.3% improvement)
+Jacobian shape: (223, 287) ( 8.83% nonzero)
+FWD solves: 35 REV solves: 0
+Total colors vs. total size: 35 vs 287 (87.8% improvement)
Sparsity computed using tolerance: 1e-25
-Time to compute sparsity: 0.366153 sec.
-Time to compute coloring: 0.364317 sec.
-Memory to compute coloring: 0.000000 MB.
+Time to compute sparsity: 0.287595 sec.
+Time to compute coloring: 0.559144 sec.
+Memory to compute coloring: 8.546875 MB.
/usr/share/miniconda/envs/test/lib/python3.10/site-packages/openmdao/visualization/opt_report/opt_report.py:634: UserWarning: Attempting to set identical low and high ylims makes transformation singular; automatically expanding.
@@ -727,12 +727,12 @@ Plots#
sol_case = om.CaseReader('dymos_solution.db').get_case('final')
-sol_x = sol_case.get_val('phase0.timeseries.states:x')
-sol_y = sol_case.get_val('phase0.timeseries.states:y')
-sol_v = sol_case.get_val('phase0.timeseries.states:v')
+sol_x = sol_case.get_val('phase0.timeseries.x')
+sol_y = sol_case.get_val('phase0.timeseries.y')
+sol_v = sol_case.get_val('phase0.timeseries.v')
sol_t0 = sol_case.get_val('phase0.timeseries.time')
sol_t1 = sol_case.get_val('phase1.timeseries.time')
-sol_s = sol_case.get_val('phase1.timeseries.states:S')
+sol_s = sol_case.get_val('phase1.timeseries.S')
def add_plot(p, x, y, label, i):
circle = p.circle(x.ravel(), y.ravel(), color=c[i], size=5)
@@ -1482,10 +1482,10 @@ Plots#
-
+