コード例 #1
0
    def test_pyxdsm_case_reading(self):
        """
        Writes a recorder file, and the XDSM writer makes the diagram based on the SQL file
        and not the Problem instance.
        """
        from openmdao.recorders.sqlite_recorder import SqliteRecorder

        filename = 'xdsm_from_sql'
        case_recording_filename = filename + '.sql'

        prob = Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z', lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]), indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        recorder = SqliteRecorder(case_recording_filename)
        prob.driver.add_recorder(recorder)

        prob.setup(check=False)
        prob.final_setup()

        # Write output
        write_xdsm(case_recording_filename, filename=filename, out_format='tex',
                   show_browser=False, quiet=QUIET)

        # Check if file was created
        self.assertTrue(os.path.isfile(case_recording_filename))
        self.assertTrue(os.path.isfile('.'.join([filename, 'tex'])))

        # Check that there are no errors when running from the command line with a recording.
        check_call('openmdao xdsm --no_browser %s' % case_recording_filename)
コード例 #2
0
ファイル: test_xdsm_viewer.py プロジェクト: ovidner/OpenMDAO
    def test_xdsmjs_right_outputs(self):
        """Makes XDSM for the Sellar problem"""
        filename = 'xdsmjs_outputs_on_the_right'
        prob = om.Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z',
                             lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        prob.setup()
        prob.final_setup()

        msg = 'Right side outputs not implemented for XDSMjs.'

        # Write output
        with assert_warning(Warning, msg):
            om.write_xdsm(prob,
                          filename=filename,
                          out_format='html',
                          show_browser=SHOW,
                          quiet=QUIET,
                          output_side='right')

        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, 'html'])))
コード例 #3
0
ファイル: test_xdsm_viewer.py プロジェクト: ovidner/OpenMDAO
    def test_pyxdsm_solver(self):
        import openmdao.api as om

        out_format = PYXDSM_OUT
        prob = om.Problem()
        prob.model = model = SellarNoDerivatives()
        model.nonlinear_solver = om.NonlinearBlockGS()
        prob.driver = om.ScipyOptimizeDriver()
        prob.model.add_objective('obj')

        prob.setup()
        prob.run_model()

        filename = 'pyxdsm_solver'
        # Write output
        om.write_xdsm(prob,
                      filename=filename,
                      out_format=out_format,
                      quiet=QUIET,
                      show_browser=SHOW,
                      include_solver=True)
        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, out_format])))

        filename = 'pyxdsm_solver2'
        # Write output
        om.write_xdsm(prob,
                      filename=filename,
                      out_format=out_format,
                      quiet=QUIET,
                      show_browser=SHOW,
                      include_solver=True,
                      recurse=False)
        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, out_format])))
コード例 #4
0
    def test_xdsmjs(self):
        """
        Makes XDSMjs input file for the Sellar problem.

        Data is in a separate JSON file.
        """

        filename = 'xdsmjs'  # this name is needed for XDSMjs
        prob = Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z',
                             lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        prob.setup(check=False)
        prob.final_setup()

        # Write output
        write_xdsm(prob,
                   filename=filename,
                   out_format='html',
                   subs=(),
                   show_browser=False,
                   quiet=True,
                   embed_data=False)
        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, 'json'])))
        self.assertTrue(os.path.isfile('.'.join([filename, 'html'])))
コード例 #5
0
    def test_pyxdsm_sellar(self):
        """Makes XDSM for the Sellar problem"""
        filename = FILENAME + '0'
        prob = Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z',
                             lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        prob.setup(check=False)
        prob.final_setup()

        # Write output
        write_xdsm(prob,
                   filename=filename,
                   out_format='tex',
                   quiet=True,
                   show_browser=False)
        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, 'tex'])))
コード例 #6
0
    def test_pyxdsm_output_sides(self):
        """Makes XDSM for the Sellar problem"""
        p = om.Problem()
        p.model = model = SellarNoDerivatives()
        model.add_design_var('z', lower=np.array([-10.0, 0.0]), upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        p.setup()
        p.final_setup()

        # Write output (outputs on the left)
        filename = 'xdsm_outputs_on_the_left'
        write_xdsm(p, filename=filename, out_format=PYXDSM_OUT, show_browser=SHOW, quiet=QUIET, output_side='left')

        # Check if file was created
        self.assertTrue(os.path.isfile(filename + '.' + PYXDSM_OUT))

        filename = 'xdsm_outputs_on_the_right'
        # Write output (all outputs on the right)
        write_xdsm(p, filename=filename, out_format=PYXDSM_OUT, show_browser=SHOW, quiet=QUIET, output_side='right')

        # Check if file was created
        self.assertTrue(os.path.isfile(filename + '.' + PYXDSM_OUT))

        filename = 'xdsm_outputs_side_mixed'
        # Write output (outputs mixed)
        write_xdsm(p, filename=filename, out_format=PYXDSM_OUT, show_browser=SHOW, quiet=QUIET,
                   output_side={'optimization': 'left', 'default': 'right'})

        # Check if file was created
        self.assertTrue(os.path.isfile(filename + '.' + PYXDSM_OUT))
コード例 #7
0
ファイル: test_xdsm_viewer.py プロジェクト: ovidner/OpenMDAO
    def test_pyxdsm_sellar_no_recurse(self):
        """Makes XDSM for the Sellar problem, with no recursion."""

        filename = 'xdsm1'
        prob = om.Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z',
                             lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        prob.setup()
        prob.final_setup()

        # Write output
        om.write_xdsm(prob,
                      filename=filename,
                      out_format=PYXDSM_OUT,
                      show_browser=SHOW,
                      recurse=False,
                      quiet=QUIET)

        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, PYXDSM_OUT])))
コード例 #8
0
ファイル: test_xdsm_viewer.py プロジェクト: ovidner/OpenMDAO
    def test_xdsmjs_embeddable(self):
        """
        Makes XDSMjs HTML file for the Sellar problem.

        The HTML file is embeddable (no head and body tags).
        """

        filename = 'xdsmjs_embeddable'  # this name is needed for XDSMjs
        prob = om.Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z',
                             lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        prob.setup()
        prob.final_setup()

        # Write output
        om.write_xdsm(prob,
                      filename=filename,
                      out_format='html',
                      subs=(),
                      show_browser=SHOW,
                      embed_data=True,
                      embeddable=True)

        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, 'html'])))
コード例 #9
0
    def test_feature_sellar(self):

        prob = om.Problem()
        prob.model = SellarNoDerivatives()

        prob.setup()
        prob.final_setup()

        om.view_connections(prob, outfile= "sellar_connections.html", show_browser=False)
コード例 #10
0
ファイル: test_viewconns.py プロジェクト: rowhit/OpenMDAO-1
    def test_sellar(self):
        # Just tests Newton on Sellar with FD derivs.

        prob = Problem()
        prob.model = SellarNoDerivatives()

        prob.setup(check=False)
        prob.final_setup()

        # no output checking, just make sure no exceptions raised
        view_connections(prob, show_browser=False)
コード例 #11
0
    def test_no_setup_warning(self):

        prob = om.Problem()
        prob.model = SellarNoDerivatives()

        prob.setup()

        msg = "<model> <class SellarNoDerivatives>: Values will not be shown because final_setup has not been called yet."

        with assert_warning(om.OpenMDAOWarning, msg):
            om.view_connections(prob, outfile= "sellar_connections.html",
                                show_values=True, show_browser=False)
コード例 #12
0
    def test_feature_sellar(self):
        import openmdao.api as om
        from openmdao.test_suite.components.sellar import SellarNoDerivatives

        prob = om.Problem()
        prob.model = SellarNoDerivatives()

        prob.setup()
        prob.final_setup()

        om.view_connections(prob,
                            outfile="sellar_connections.html",
                            show_browser=False)
コード例 #13
0
ファイル: test_newton.py プロジェクト: zhaowei0566/OpenMDAO
    def test_sellar(self):
        # Just tests Newton on Sellar with FD derivs.

        prob = Problem(model=SellarNoDerivatives(nonlinear_solver=NewtonSolver()))

        prob.setup(check=False)
        prob.run_model()

        assert_rel_error(self, prob['y1'], 25.58830273, .00001)
        assert_rel_error(self, prob['y2'], 12.05848819, .00001)

        # Make sure we aren't iterating like crazy
        self.assertLess(prob.model.nonlinear_solver._iter_count, 8)
コード例 #14
0
ファイル: test_newton.py プロジェクト: mhk4zemi/OpenMDAO
    def test_sellar(self):
        # Just tests Newton on Sellar with FD derivs.

        prob = om.Problem(model=SellarNoDerivatives(nonlinear_solver=om.NewtonSolver(solve_subsystems=False)))

        prob.setup()
        prob.run_model()

        assert_near_equal(prob.get_val('y1'), 25.58830273, .00001)
        assert_near_equal(prob.get_val('y2'), 12.05848819, .00001)

        # Make sure we aren't iterating like crazy
        self.assertLess(prob.model.nonlinear_solver._iter_count, 8)
コード例 #15
0
    def test_wrong_out_format(self):
        """Incorrect output format error."""

        filename = 'xdsm_wrong_format'  # this name is needed for XDSMjs
        prob = Problem()
        prob.model = SellarNoDerivatives()

        prob.setup(check=False)
        prob.final_setup()

        # no output checking, just make sure no exceptions raised
        with self.assertRaises(ValueError):
            write_xdsm(prob, filename=filename, out_format='jpg', subs=(), show_browser=SHOW)
コード例 #16
0
ファイル: test_xdsm_viewer.py プロジェクト: ovidner/OpenMDAO
    def test_custom_writer(self):
        from openmdao.visualization.xdsm_viewer.xdsm_writer import XDSMjsWriter

        class CustomWriter(XDSMjsWriter):
            """Customized XDSM writer, based on the XDSMjs writer."""
            @staticmethod
            def format_block(names, **kwargs):
                """This method is overwritten, to implement some different formatting."""
                return [name.upper() for name in names]

        prob = om.Problem()
        prob.model = SellarNoDerivatives()

        prob.setup()
        prob.final_setup()

        my_writer = CustomWriter()
        filename = 'xdsm_custom_writer'  # this name is needed for XDSMjs
        # Write output
        om.write_xdsm(prob,
                      filename=filename,
                      writer=my_writer,
                      show_browser=SHOW)

        # Check if file was created
        self.assertTrue(
            os.path.isfile('.'.join([filename, my_writer.extension])))

        # Check that error is raised in case of wrong writer type
        filename = 'xdsm_custom_writer2'  # this name is needed for XDSMjs
        with self.assertRaises(TypeError):  # Wrong type passed for writer
            om.write_xdsm(prob,
                          filename=filename,
                          writer=1,
                          subs=(),
                          show_browser=SHOW)

        # Check warning, if settings for custom writer are not found
        my_writer2 = CustomWriter(name='my_writer')
        filename = 'xdsm_custom_writer3'

        msg = 'Writer name "my_writer" not found, there will be no character ' \
              'substitutes used. Add "my_writer" to your settings, or provide a tuple for' \
              'character substitutes.'

        # Write output
        with assert_warning(Warning, msg):
            om.write_xdsm(prob,
                          filename=filename,
                          writer=my_writer2,
                          show_browser=SHOW)
コード例 #17
0
    def test_sellar(self):
        prob = Problem(SellarNoDerivatives()).setup()

        iprof_mem.setup()

        # check that the callback has been registered as expected
        self.assertTrue(iprof_mem._registered)
        self.assertTrue(isinstance(iprof_mem._trace_memory, types.FunctionType))
        self.assertTrue(isinstance(iprof_mem.mem_usage, types.FunctionType))

        # can't check output (it comes at system exit)
        # just make sure no exceptions are raised
        iprof_mem.start()
        prob.run_model()
        iprof_mem.stop()
コード例 #18
0
    def test_no_indepvarcomps(self):
        p = om.Problem()
        p.model = model = SellarNoDerivatives()
        model.add_design_var('z', lower=np.array([-10.0, 0.0]), upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        # model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        p.setup()
        p.final_setup()

        filename = 'pyxdsm_no_indepvarcomps'
        write_xdsm(p, filename=filename, out_format='pdf', show_browser=SHOW, quiet=True, include_indepvarcomps=False)
        self.assertTrue(os.path.isfile(filename + '.' + PYXDSM_OUT))
コード例 #19
0
    def test_xdsm_solver(self):
        import openmdao.api as om

        filename = 'xdsmjs_solver'
        out_format = 'html'
        p = om.Problem(model=SellarNoDerivatives())
        p.model.nonlinear_solver = om.NonlinearBlockGS()
        p.driver = om.ScipyOptimizeDriver()
        p.model.add_objective('obj')

        p.setup()
        p.run_model()

        # Write output
        write_xdsm(p, filename=filename, out_format=out_format, show_browser=SHOW, include_solver=True)
        # Check if file was created
        self.assertTrue(os.path.isfile(filename + '.' + out_format))
コード例 #20
0
    def test_xdsm_solver(self):
        from openmdao.api import NonlinearBlockGS

        filename = 'xdsmjs_solver'
        out_format = 'html'
        prob = Problem(model=SellarNoDerivatives())
        prob.model.nonlinear_solver = NonlinearBlockGS()
        prob.driver = ScipyOptimizeDriver()
        prob.model.add_objective('obj')

        prob.setup(check=False)
        prob.run_model()

        # Write output
        write_xdsm(prob, filename=filename, out_format=out_format,
                   show_browser=SHOW, include_solver=True)
        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, out_format])))
コード例 #21
0
ファイル: test_xdsm_viewer.py プロジェクト: moldos/OpenMDAO
    def test_pyxdsm_case_reading(self):
        """
        Writes a recorder file, and the XDSM writer makes the diagram based on the SQL file
        and not the Problem instance.
        """
        from openmdao.recorders.sqlite_recorder import SqliteRecorder

        filename = 'xdsm_from_sql'
        case_recording_filename = filename + '.sql'

        prob = Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z',
                             lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        recorder = SqliteRecorder(case_recording_filename)
        prob.driver.add_recorder(recorder)

        prob.setup(check=False)
        prob.final_setup()

        # Write output
        msg = (
            'For SQL input the XDSM writer shows only the model hierarchy, '
            'and the driver, design variables and responses are not part of the '
            'diagram.')
        with assert_warning(Warning, msg):
            write_xdsm(case_recording_filename,
                       filename=filename,
                       out_format='tex',
                       show_browser=False,
                       quiet=QUIET)

        # Check if file was created
        self.assertTrue(os.path.isfile(case_recording_filename))
        self.assertTrue(os.path.isfile('.'.join([filename, 'tex'])))
コード例 #22
0
    def test_pyxdsm_right_outputs(self):
        """Makes XDSM for the Sellar problem"""
        filename = 'xdsm_outputs_on_the_right'
        prob = Problem()
        prob.model = model = SellarNoDerivatives()
        model.add_design_var('z',
                             lower=np.array([-10.0, 0.0]),
                             upper=np.array([10.0, 10.0]),
                             indices=np.arange(2, dtype=int))
        model.add_design_var('x', lower=0.0, upper=10.0)
        model.add_objective('obj')
        model.add_constraint('con1', equals=np.zeros(1))
        model.add_constraint('con2', upper=0.0)

        prob.setup(check=False)
        prob.final_setup()

        # Write output
        write_xdsm(prob,
                   filename=filename,
                   out_format='pdf',
                   show_browser=False,
                   quiet=QUIET,
                   output_side='right')

        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, 'tex'])))

        filename = 'xdsm_outputs_side_mixed'
        # Write output
        write_xdsm(prob,
                   filename=filename,
                   out_format='pdf',
                   show_browser=False,
                   quiet=QUIET,
                   output_side={
                       'optimization': 'left',
                       'default': 'right'
                   })

        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, 'tex'])))
コード例 #23
0
    def test_pyxdsm_solver(self):
        from openmdao.api import NonlinearBlockGS

        filename = 'pyxdsm_solver'
        out_format = PYXDSM_OUT
        prob = Problem()
        prob.model = model = SellarNoDerivatives()
        model.nonlinear_solver = NonlinearBlockGS()
        prob.driver = ScipyOptimizeDriver()

        prob.setup(check=False)
        prob.run_model()

        # Write output
        write_xdsm(prob,
                   filename=filename,
                   out_format=out_format,
                   quiet=QUIET,
                   show_browser=False,
                   include_solver=True)
        # Check if file was created
        self.assertTrue(os.path.isfile('.'.join([filename, out_format])))
コード例 #24
0
"""
Creates on output of the Sellar problem using XDSMjs.
"""
import numpy as np
import openmdao.api as om
from openmdao.test_suite.components.sellar import SellarNoDerivatives

from omxdsm import write_xdsm

if __name__ == '__main__':
    prob = om.Problem()
    prob.model = model = SellarNoDerivatives()
    model.add_design_var('z', lower=np.array([-10.0, 0.0]),
                         upper=np.array([10.0, 10.0]), indices=np.arange(2, dtype=int))
    model.add_design_var('x', lower=0.0, upper=10.0)
    model.add_objective('obj')
    model.add_constraint('con1', equals=np.zeros(1))
    model.add_constraint('con2', upper=0.0)

    prob.setup()
    prob.final_setup()

    # Write output.
    write_xdsm(prob, filename='sellar_pyxdsm', out_format='html', show_browser=True,
               quiet=False, output_side='left')
コード例 #25
0
    def test_sellar(self):
        prob = Problem(SellarNoDerivatives()).setup()

        with iprof_mem.memtrace(min_mem=0.1):
            prob.run_model()