def make_prob(self, transcription, n_segs, order, compressed): p = om.Problem(model=om.Group()) gd = GridData(num_segments=n_segs, segment_ends=np.arange(n_segs + 1), transcription=transcription, transcription_order=order, compressed=compressed) state_options = { 'x': { 'units': 'm', 'shape': (1, ), 'fix_initial': True, 'fix_final': False, 'solve_segments': True, 'connected_initial': False, 'connected_final': False }, 'v': { 'units': 'm/s', 'shape': (3, 2), 'fix_initial': False, 'fix_final': True, 'solve_segments': True, 'connected_initial': False, 'connected_final': False } } subsys = StateIndependentsComp(grid_data=gd, state_options=state_options) p.model.add_subsystem('defect_comp', subsys=subsys) self.state_idx_map = {} for state_name, options in state_options.items(): self._make_state_idx_map(state_name, options, gd, self.state_idx_map) subsys.configure_io(self.state_idx_map) p.setup() p.final_setup() return p
def make_prob(self, transcription, n_segs, order, compressed): gd = GridData(num_segments=n_segs, segment_ends=np.arange(n_segs + 1), transcription=transcription, transcription_order=order, compressed=compressed) state_options = { 'x': { 'units': 'm', 'shape': (1, ), 'fix_initial': True, 'fix_final': False, 'solve_segments': True, 'connected_initial': False }, 'v': { 'units': 'm/s', 'shape': (3, 2), 'fix_initial': True, 'fix_final': False, 'solve_segments': True, 'connected_initial': False } } num_col_nodes = gd.subset_num_nodes['col'] num_col_nodes_per_seg = gd.subset_num_nodes_per_segment['col'] p = om.Problem(model=om.Group()) indep_comp = om.IndepVarComp() p.model.add_subsystem('indep', indep_comp, promotes_outputs=['*']) indep_comp.add_output('dt_dstau', val=np.repeat( np.arange(n_segs) + 1, num_col_nodes_per_seg)) indep_comp.add_output('f_approx:x', val=np.ones((num_col_nodes, 1)), units='m') indep_comp.add_output('f_computed:x', val=np.ones((num_col_nodes, 1)) * 2, units='m') indep_comp.add_output('f_approx:v', val=np.ones((num_col_nodes, 3, 2)), units='m/s') indep_comp.add_output('f_computed:v', val=np.ones((num_col_nodes, 3, 2)) * 2, units='m/s') p.model.add_subsystem('defect_comp', subsys=CollocationComp( grid_data=gd, state_options=state_options)) indep = StateIndependentsComp(grid_data=gd, state_options=state_options) p.model.add_subsystem('state_indep', indep, promotes_outputs=['*']) p.model.connect('f_approx:x', 'defect_comp.f_approx:x') p.model.connect('f_approx:v', 'defect_comp.f_approx:v') p.model.connect('f_computed:x', 'defect_comp.f_computed:x') p.model.connect('f_computed:v', 'defect_comp.f_computed:v') p.model.connect('dt_dstau', 'defect_comp.dt_dstau') p.model.connect('defect_comp.defects:x', 'state_indep.defects:x') p.model.connect('defect_comp.defects:v', 'state_indep.defects:v') p.setup(force_alloc_complex=True) return p
def make_prob(self, transcription, n_segs, order, compressed): p = om.Problem(model=om.Group()) gd = GridData(num_segments=n_segs, segment_ends=np.arange(n_segs + 1), transcription=transcription, transcription_order=order, compressed=compressed) state_options = { 'x': { 'units': 'm', 'shape': (1, ), 'fix_initial': True, 'fix_final': False, 'solve_segments': False, 'connected_initial': False }, 'v': { 'units': 'm/s', 'shape': (3, 2), 'fix_initial': False, 'fix_final': True, 'solve_segments': True, 'connected_initial': False } } indep_comp = om.IndepVarComp() p.model.add_subsystem('indep', indep_comp, promotes_outputs=['*']) indep_comp.add_output('dt_dstau', val=np.zeros((gd.subset_num_nodes['col']))) indep_comp.add_output('f_approx:x', val=np.zeros((gd.subset_num_nodes['col'], 1)), units='m') indep_comp.add_output('f_computed:x', val=np.zeros((gd.subset_num_nodes['col'], 1)), units='m') indep_comp.add_output('f_approx:v', val=np.zeros((gd.subset_num_nodes['col'], 3, 2)), units='m/s') indep_comp.add_output('f_computed:v', val=np.zeros((gd.subset_num_nodes['col'], 3, 2)), units='m/s') p.model.add_subsystem('defect_comp', subsys=CollocationComp( grid_data=gd, state_options=state_options)) indep = StateIndependentsComp(grid_data=gd, state_options=state_options) p.model.add_subsystem('state_indep', indep, promotes_outputs=['*']) p.model.connect('f_approx:x', 'defect_comp.f_approx:x') p.model.connect('f_approx:v', 'defect_comp.f_approx:v') p.model.connect('f_computed:x', 'defect_comp.f_computed:x') p.model.connect('f_computed:v', 'defect_comp.f_computed:v') p.model.connect('dt_dstau', 'defect_comp.dt_dstau') p.model.connect('defect_comp.defects:v', 'state_indep.defects:v') p.setup(force_alloc_complex=True) p['dt_dstau'] = np.random.random(gd.subset_num_nodes['col']) p['f_approx:x'] = np.random.random((gd.subset_num_nodes['col'], 1)) p['f_approx:v'] = np.random.random((gd.subset_num_nodes['col'], 3, 2)) p['f_computed:x'] = np.random.random((gd.subset_num_nodes['col'], 1)) p['f_computed:v'] = np.random.random( (gd.subset_num_nodes['col'], 3, 2)) p.run_model() p.model.run_apply_nonlinear() # p.model.list_outputs(residuals=True, print_arrays=True) return p