gemseo.mda.jacobi module#

A Jacobi algorithm for solving MDAs.

class MDAJacobi(disciplines, settings_model=None, **settings)[source]#

Bases: BaseParallelMDASolver

Perform an MDA using the Jacobi algorithm.

This algorithm is a fixed point iteration method to solve systems of non-linear equations of the form,

\[\begin{split}\left\{ \begin{matrix} F_1(x_1, x_2, \dots, x_n) = 0 \\ F_2(x_1, x_2, \dots, x_n) = 0 \\ \vdots \\ F_n(x_1, x_2, \dots, x_n) = 0 \end{matrix} \right.\end{split}\]

Beginning with \(x_1^{(0)}, \dots, x_n^{(0)}\), the iterates are obtained as the solution of the following \(n\) independent non-linear equations:

\[\begin{split}\left\{ \begin{matrix} r_1\left( x_1^{(i+1)} \right) = F_1(x_1^{(i+1)}, x_2^{(i)}, \dots, x_n^{(i)}) = 0 \\ r_2\left( x_2^{(i+1)} \right) = F_2(x_1^{(i)}, x_2^{(i+1)}, \dots, x_n^{(i)}) = 0 \\ \vdots \\ r_n\left( x_n^{(i+1)} \right) = F_n(x_1^{(i)}, x_2^{(i)}, \dots, x_n^{(i+1)}) = 0 \end{matrix} \right.\end{split}\]

Initialize self. See help(type(self)) for accurate signature.

Parameters:
  • disciplines (Sequence[Discipline]) -- The disciplines from which to compute the MDA.

  • settings_model (MDAJacobi_Settings | None) -- The MDA settings as a Pydantic model. If None, use **settings.

  • **settings (Any) -- The MDA settings. These arguments are ignored when settings_model is not None.

Settings#

The pydantic model for the settings.

alias of MDAJacobi_Settings

get_process_flow()[source]#

Return the process flow.

Returns:

The process flow.

Return type:

BaseProcessFlow

settings: MDAJacobi_Settings#

The settings of the MDA