Exemplo n.º 1
0
    def test_scaling(self):
        # Make sure values are unscaled/dimensional.

        def custom_method(d_outputs, d_residuals, mode):
            if d_outputs['out_var'][0] != 12.0:
                raise ValueError('This value should be unscaled.')
            return False, 0, 0

        class ScaledComp(ImplicitComponent):
            def setup(self):

                self.add_input('a', val=10., units='m')

                self.add_output('states', val=20.0, ref=3333.0)
                self.add_output('out_var', val=20.0, ref=12.0)

        p = Problem()
        p.model.add_subsystem('des_vars',
                              IndepVarComp('a', val=10., units='m'),
                              promotes=['*'])
        p.model.add_subsystem('icomp', ScaledComp(), promotes=['*'])
        model = p.model

        model.linear_solver = LinearUserDefined(custom_method)

        p.setup(mode='rev', check=False)
        p.run_model()
        jac = p.compute_totals(of=['out_var'], wrt=['a'], return_format='dict')
Exemplo n.º 2
0
    def setup(self):

        self.add_input('a', val=10., units='m')

        rank = self.comm.rank
        GLOBAL_SIZE = 15
        sizes, offsets = evenly_distrib_idxs(self.comm.size, GLOBAL_SIZE)

        self.add_output('states', shape=int(sizes[rank]))

        self.add_output('out_var', shape=1)
        self.local_size = sizes[rank]

        self.linear_solver = PETScKrylov()
        self.linear_solver.precon = LinearUserDefined(self.mysolve)
Exemplo n.º 3
0
    def test_method_default(self):
        # Uses `solve_linear` by default
        p = Problem()

        p.model.add_subsystem('des_vars', IndepVarComp('a', val=10., units='m'), promotes=['*'])

        p.model.add_subsystem('icomp', DistribStateImplicit(), promotes=['*'])

        model = p.model

        model.linear_solver = PETScKrylov()
        model.linear_solver.precon = LinearRunOnce()

        p.setup(vector_class=PETScVector, mode='rev', check=False)

        model.icomp.linear_solver.precon = LinearUserDefined()

        p.run_model()
        jac = p.compute_totals(of=['out_var'], wrt=['a'], return_format='dict')

        assert_rel_error(self, 15.0, jac['out_var']['a'][0][0])