コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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