def test_eval_polycontrol_gl_compressed_vectorized(self): grid_data = dm.transcriptions.grid_data.GridData( num_segments=2, transcription='gauss-lobatto', transcription_order=[3, 5], compressed=True) time_options = dm.phase.options.TimeOptionsDictionary() time_options['units'] = 's' pc_options = { 'u1': dm.phase.options.PolynomialControlOptionsDictionary() } pc_options['u1']['shape'] = (1, ) pc_options['u1']['units'] = 'rad' pc_options['u1']['order'] = 6 p = om.Problem() interp_comp = p.model.add_subsystem( 'interp', VandermondeControlInterpComp(grid_data=grid_data, vec_size=6, polynomial_control_options=pc_options, standalone_mode=True, time_units='s')) p.setup(force_alloc_complex=True) interp_comp.options['segment_index'] = 1 p.set_val('interp.t_duration', 12.2352) p.set_val('interp.dstau_dt', .3526) p.set_val('interp.polynomial_controls:u1', [0.0, 3.0, 0.0, 1.5, 4.0, 3.0, 4.0]) p.set_val('interp.ptau', -1.0) p.run_model() ptau = np.array([-1.0, 0.0, 1.0, -1.0, 0.0, 1.0]) p.set_val('interp.ptau', ptau) p.run_model() expected = np.array([[0.0, 1.5, 4.0, 0.0, 1.5, 4.0]]).T assert_near_equal(p.get_val('interp.polynomial_control_values:u1'), expected, tolerance=_TOL) with np.printoptions(linewidth=1024): cpd = p.check_partials(compact_print=False, method='cs') assert_check_partials(cpd, atol=_TOL, rtol=_TOL)
def test_eval_control_radau_uncompressed_vectorized(self): grid_data = dm.transcriptions.grid_data.GridData( num_segments=2, transcription='radau-ps', transcription_order=[3, 5], compressed=False) time_options = dm.phase.options.TimeOptionsDictionary() time_options['units'] = 's' control_options = {'u1': dm.phase.options.ControlOptionsDictionary()} control_options['u1']['shape'] = (1, ) control_options['u1']['units'] = 'rad' p = om.Problem() interp_comp = p.model.add_subsystem( 'interp', VandermondeControlInterpComp(grid_data=grid_data, control_options=control_options, vec_size=5, standalone_mode=True, time_units='s')) p.setup(force_alloc_complex=True) interp_comp.options['segment_index'] = 1 p.set_val('interp.controls:u1', [0.0, 3.0, 1.5, 0.0, 4.0, 3.0, 4.0, 3.0]) p.set_val('interp.stau', [-1.0, -0.72048, -0.167181, 0.446314, 0.885792]) p.run_model() expected = np.array([[0.0, 4.0, 3.0, 4.0, 3.0]]).T assert_near_equal(p.get_val('interp.control_values:u1'), expected, tolerance=1.0E-6) with np.printoptions(linewidth=1024): cpd = p.check_partials(compact_print=False, method='cs') assert_check_partials(cpd, atol=_TOL, rtol=_TOL)
def test_eval_control_gl_uncompressed(self): grid_data = dm.transcriptions.grid_data.GridData( num_segments=2, transcription='gauss-lobatto', transcription_order=[3, 5], compressed=False) time_options = dm.phase.options.TimeOptionsDictionary() time_options['units'] = 's' control_options = {'u1': dm.phase.options.ControlOptionsDictionary()} control_options['u1']['shape'] = (1, ) control_options['u1']['units'] = 'rad' p = om.Problem() interp_comp = p.model.add_subsystem( 'interp', VandermondeControlInterpComp(grid_data=grid_data, control_options=control_options, standalone_mode=True, time_units='s')) p.setup(force_alloc_complex=True) interp_comp.options['segment_index'] = 1 p.set_val('interp.controls:u1', [0.0, 3.0, 0.0, 0.0, 4.0, 3.0, 4.0, 3.0]) p.set_val('interp.stau', -1.0) p.run_model() assert_near_equal(p.get_val('interp.control_values:u1'), [[0.0]], tolerance=_TOL) p.set_val('interp.stau', 0.0) p.run_model() assert_near_equal(p.get_val('interp.control_values:u1'), [[3.0]], tolerance=_TOL) p.set_val('interp.stau', 1.0) p.run_model() assert_near_equal(p.get_val('interp.control_values:u1'), [[3.0]], tolerance=_TOL) interp_comp.options['segment_index'] = 0 p.set_val('interp.stau', -1.0) p.run_model() assert_near_equal(p.get_val('interp.control_values:u1'), [[0.0]], tolerance=_TOL) p.set_val('interp.stau', 0.0) p.run_model() assert_near_equal(p.get_val('interp.control_values:u1'), [[3.0]], tolerance=_TOL) p.set_val('interp.stau', 1.0) p.run_model() assert_near_equal(p.get_val('interp.control_values:u1'), [[0.0]], tolerance=_TOL) p.set_val('interp.stau', 0.54262) p.run_model() with np.printoptions(linewidth=1024): cpd = p.check_partials(compact_print=False, method='cs') assert_check_partials(cpd, atol=_TOL, rtol=_TOL)