MDAChain#

A smart MDA that solves only strongly coupled disciplines and then executes the weakly coupled ones

from __future__ import annotations

from gemseo import configure_logger
from gemseo import create_discipline
from gemseo import create_mda

configure_logger()
<RootLogger root (INFO)>

Define a way to display results#

def display_result(res, mda_name) -> None:
    """Display coupling and output variables in logger.

    Args:
        res: result of MDA
        mda_name: name of the current MDA
    """
    # names of the coupling variables
    coupling_names = [
        "y_11",
        "y_12",
        "y_14",
        "y_21",
        "y_23",
        "y_24",
        "y_31",
        "y_32",
        "y_34",
    ]
    for coupling_var in coupling_names:
        print(f"{mda_name}, coupling variable {coupling_var}: {res[coupling_var]}")

    # names of the output variables
    output_names = ["y_1", "y_2", "y_3", "y_4", "g_1", "g_2", "g_3"]
    for output_name in output_names:
        print(
            f"{mda_name}, output variable {output_name}: {res[output_name]}",
        )

Create, execute and post-process MDA#

We do not need to specify the inputs, the default inputs of the MDA will be used and computed from the Default inputs of the disciplines

disciplines = create_discipline([
    "SobieskiStructure",
    "SobieskiPropulsion",
    "SobieskiAerodynamics",
    "SobieskiMission",
])
mda = create_mda("MDAChain", disciplines, inner_mda_name="MDAJacobi")
res = mda.execute()
display_result(res, mda.name)
mda.plot_residual_history(
    n_iterations=10,
    logscale=[1e-8, 10.0],
    save=False,
    show=True,
    fig_size=(10, 2),
)
MDAJacobi: residual plot
 WARNING - 08:39:55: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
 WARNING - 08:39:55: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar.
MDAChain, coupling variable y_11: [0.15591864]
MDAChain, coupling variable y_12: [5.06070636e+04 9.50000000e-01]
MDAChain, coupling variable y_14: [50607.06361395  7306.20262124]
MDAChain, coupling variable y_21: [50607.06361809]
MDAChain, coupling variable y_23: [12194.40917863]
MDAChain, coupling variable y_24: [4.15002177]
MDAChain, coupling variable y_31: [6354.40199355]
MDAChain, coupling variable y_32: [0.50280211]
MDAChain, coupling variable y_34: [1.10754577]
MDAChain, output variable y_1: [5.06070636e+04 7.30620262e+03 9.50000000e-01]
MDAChain, output variable y_2: [5.06070636e+04 1.21944092e+04 4.15002177e+00]
MDAChain, output variable y_3: [1.10754577e+00 6.35440199e+03 5.02802105e-01]
MDAChain, output variable y_4: [535.78213197]
MDAChain, output variable g_1: [ 0.035      -0.00666667 -0.0275     -0.04       -0.04833333 -0.09
 -0.15      ]
MDAChain, output variable g_2: [-0.04]
MDAChain, output variable g_3: [-0.99719789 -0.00280211  0.16206032 -0.02      ]
    INFO - 08:39:55: Requested 10 iterations but the residual history contains only 9, plotting all the residual history.

Total running time of the script: (0 minutes 0.241 seconds)

Gallery generated by Sphinx-Gallery