.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/api/plot_discipline.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_api_plot_discipline.py: Discipline ========== .. GENERATED FROM PYTHON SOURCE LINES 27-49 .. code-block:: default from __future__ import division, unicode_literals from numpy import array from gemseo.api import ( configure_logger, create_discipline, generate_coupling_graph, generate_n2_plot, get_all_inputs, get_all_outputs, get_available_disciplines, get_discipline_inputs_schema, get_discipline_options_defaults, get_discipline_options_schema, get_discipline_outputs_schema, ) from gemseo.core.discipline import MDODiscipline configure_logger() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 50-61 In this example, we will discover the different functions of the API related to disciplines, which are the |g|' objects dedicated to the representation of an input-output process. All classes implementing disciplines inherit from :class:`.MDODiscipline` which is an abstract class. Get available disciplines ------------------------- The :meth:`~gemseo.api.get_available_disciplines` function can list the available disciplines: .. GENERATED FROM PYTHON SOURCE LINES 61-64 .. code-block:: default get_available_disciplines() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ['Aerodynamics', 'AnalyticDiscipline', 'AutoPyDiscipline', 'BurgersDiscipline', 'ConcatenationDiscipline', 'ConstrAggegationDisc', 'DOEScenario', 'DiscFromExe', 'FilteringDiscipline', 'LinearDiscipline', 'MDOAdditiveChain', 'MDOChain', 'MDOObjScenarioAdapter', 'MDOParallelChain', 'MDOScenario', 'MDOScenarioAdapter', 'MatlabDiscipline', 'Mission', 'PropaneComb1', 'PropaneComb2', 'PropaneComb3', 'PropaneReaction', 'RosenMF', 'ScalableDiscipline', 'Scenario', 'Sellar1', 'Sellar2', 'SellarSystem', 'SobieskiAerodynamics', 'SobieskiAerodynamicsSG', 'SobieskiBaseWrapper', 'SobieskiBaseWrapperSimpleGram', 'SobieskiChain', 'SobieskiMDAGaussSeidel', 'SobieskiMDAJacobi', 'SobieskiMission', 'SobieskiMissionSG', 'SobieskiPropulsion', 'SobieskiPropulsionSG', 'SobieskiStructure', 'SobieskiStructureSG', 'Structure', 'SurrogateDiscipline', 'TMDiscipline', 'TMMainDiscipline', 'TMSubDiscipline', 'XLSDiscipline'] .. GENERATED FROM PYTHON SOURCE LINES 65-71 Create a discipline ------------------- The :meth:`~gemseo.api.create_discipline` function can create a :class:`.MDODiscipline` or a list of :class:`.MDODiscipline` by using its class name. Specific :code:`**options` can be provided in argument. E.g. .. GENERATED FROM PYTHON SOURCE LINES 71-82 .. code-block:: default disciplines = create_discipline( [ "SobieskiPropulsion", "SobieskiAerodynamics", "SobieskiMission", "SobieskiStructure", ] ) print(type(disciplines)) print(type(disciplines[0])) print(isinstance(disciplines[0], MDODiscipline)) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 83-86 This function can also be used to create a particular :class:`.MDODiscipline` from scratch, such as :class:`.AnalyticDiscipline` or :class:`.AutoPyDiscipline`. E.g. .. GENERATED FROM PYTHON SOURCE LINES 86-89 .. code-block:: default addition = create_discipline("AnalyticDiscipline", expressions_dict={"y": "x1+x2"}) print(addition.execute({"x1": array([1.0]), "x2": array([2.0])})) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none {'x1': array([1.]), 'x2': array([2.]), 'y': array([3.])} .. GENERATED FROM PYTHON SOURCE LINES 90-96 Get all inputs/outputs ---------------------- The :meth:`~gemseo.api.get_all_inputs` function can list all the inputs of a list of disciplines, including the sub-disciplines if the argument :code:`recursive` (default: :code:`False`) is :code:`True`, merging the input data from the discipline grammars. E.g. .. GENERATED FROM PYTHON SOURCE LINES 96-98 .. code-block:: default print(get_all_inputs(disciplines)) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ['y_14', 'x_shared', 'x_3', 'x_1', 'y_34', 'x_2', 'y_31', 'y_32', 'y_12', 'y_24', 'y_23', 'y_21'] .. GENERATED FROM PYTHON SOURCE LINES 99-103 The :meth:`~gemseo.api.get_all_outputs` function can list all the inputs of a list of disciplines, including the sub-disciplines if the argument :code:`recursive` (default: :code:`False`) is :code:`True`, merging the input data from the discipline grammars. E.g. .. GENERATED FROM PYTHON SOURCE LINES 103-105 .. code-block:: default print(get_all_outputs(disciplines)) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ['y_11', 'g_3', 'g_2', 'y_14', 'y_1', 'y_3', 'g_1', 'y_2', 'y_4', 'y_34', 'y_31', 'y_32', 'y_24', 'y_12', 'y_23', 'y_21'] .. GENERATED FROM PYTHON SOURCE LINES 106-111 Get discipline schemas for inputs, outputs and options ------------------------------------------------------ - The function :meth:`~gemseo.api.get_discipline_inputs_schema` returns the inputs of a discipline. E.g. .. GENERATED FROM PYTHON SOURCE LINES 111-113 .. code-block:: default print(get_discipline_inputs_schema(disciplines[0])) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none {'$schema': 'http://json-schema.org/draft-04/schema', 'type': 'object', 'properties': {'y_23': {'type': 'array', 'items': {'type': 'number'}}, 'x_3': {'type': 'array', 'items': {'type': 'number'}}, 'x_shared': {'type': 'array', 'items': {'type': 'number'}}}, 'required': ['x_3', 'x_shared', 'y_23']} .. GENERATED FROM PYTHON SOURCE LINES 114-116 - The function :meth:`~gemseo.api.get_discipline_outputs_schema` returns the outputs of a discipline. E.g. .. GENERATED FROM PYTHON SOURCE LINES 116-118 .. code-block:: default print(get_discipline_outputs_schema(disciplines[0])) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none {'$schema': 'http://json-schema.org/draft-04/schema', 'type': 'object', 'properties': {'y_32': {'type': 'array', 'items': {'type': 'number'}}, 'y_31': {'type': 'array', 'items': {'type': 'number'}}, 'g_3': {'type': 'array', 'items': {'type': 'number'}}, 'y_3': {'type': 'array', 'items': {'type': 'number'}}, 'y_34': {'type': 'array', 'items': {'type': 'number'}}}, 'required': ['g_3', 'y_3', 'y_31', 'y_32', 'y_34']} .. GENERATED FROM PYTHON SOURCE LINES 119-121 - The function :meth:`~gemseo.api.get_discipline_options_schema` returns the options of a discipline. E.g. .. GENERATED FROM PYTHON SOURCE LINES 121-123 .. code-block:: default print(get_discipline_options_schema("SobieskiMission")) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none {'$schema': 'http://json-schema.org/draft-04/schema', 'type': 'object', 'properties': {'linearization_mode': {'description': 'Linearization mode', 'enum': ['auto', 'direct', 'reverse', 'adjoint'], 'type': 'string'}, 'jac_approx_type': {'description': 'Jacobian approximation type', 'enum': ['finite_differences', 'complex_step'], 'type': 'string'}, 'jax_approx_step': {'minimum': 0, 'exclusiveMinimum': True, 'description': 'Step for finite differences or complex step for Jacobian approximation', 'type': 'number'}, 'jac_approx_use_threading': {'description': 'if True, use Threads instead of processes\n to parallelize the execution. \nMultiprocessing will serialize all the disciplines, \nwhile multithreading will share all the memory.\n This is important to note if you want to execute the same\n discipline multiple times, you shall use multiprocessing', 'type': 'boolean'}, 'jac_approx_wait_time': {'description': 'Time waited between two forks of the process or thread when using parallel jacobian approximations (parallel=True)', 'minimum': 0, 'type': 'number'}, 'jac_approx_n_processes': {'minimum': 1, 'description': 'maximum number of processors or threads on \nwhich the jacobian approximation is performed\n by default, 1 means no parallel calculations', 'type': 'integer'}, 'cache_type': {'description': 'Type of cache to be used. \nBy default, simple cache stores the last execution inputs and outputs \nin memory only to avoid computation of the outputs if the inputs are identical.\n To store more executions, use HDF5 caches, which stores data on the disk.\n There is a hashing mechanism which avoids reading on the disk for every calculation.', 'type': 'string'}, 'cache_tolerance': {'minimum': 0, 'description': 'Numerical tolerance on the relative norm of input vectors \n to consider that two sets of inputs are equal, and that the outputs may therefore be returned from the cache without calculations.', 'type': 'number'}, 'cache_hdf_file': {'format': 'uri', 'description': 'Path to the HDF5 file to store the cache data.', 'type': 'string'}, 'cache_hdf_node_name': {'description': 'Name of the HDF dataset to store the discipline\n data. If None, the discipline name is used.', 'type': 'string'}, 'dtype': {'description': 'type of data, either "float64" or "complex128". :type dtype: str', 'type': 'string'}, 'enable_delay': {'type': 'boolean'}}, 'required': ['dtype', 'enable_delay']} .. GENERATED FROM PYTHON SOURCE LINES 124-126 - The function :meth:`~gemseo.api.get_discipline_options_defaults` can get the default option values of a discipline. E.g. .. GENERATED FROM PYTHON SOURCE LINES 126-128 .. code-block:: default print(get_discipline_options_defaults("SobieskiMission")) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none {'dtype': 'float64', 'enable_delay': False} .. GENERATED FROM PYTHON SOURCE LINES 129-133 Plot coupling structure ----------------------- The :meth:`~gemseo.api.generate_coupling_graph` function plots the coupling graph of a set of :class:`.MDODiscipline`: .. GENERATED FROM PYTHON SOURCE LINES 133-138 .. code-block:: default generate_coupling_graph(disciplines, file_path="full_coupling_graph.pdf") generate_coupling_graph( disciplines, file_path="condensed_coupling_graph.pdf", full=False ) .. GENERATED FROM PYTHON SOURCE LINES 139-141 The :meth:`~gemseo.api.generate_n2_plot` function plots the N2 diagram of a set of :class:`.MDODiscipline`: .. GENERATED FROM PYTHON SOURCE LINES 141-142 .. code-block:: default generate_n2_plot(disciplines, save=False, show=True) .. image:: /examples/api/images/sphx_glr_plot_discipline_001.png :alt: plot discipline :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.302 seconds) .. _sphx_glr_download_examples_api_plot_discipline.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_discipline.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_discipline.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_