gemseo.mda.base_mda_settings module#

Settings for MDA algorithms.

Settings BaseMDASettings(*, coupling_structure=None, linear_solver=LinearSolver.DEFAULT, linear_solver_settings=None, linear_solver_tolerance=1e-12, log_convergence=False, max_mda_iter=20, name='', tolerance=1e-06, use_lu_fact=False, warm_start=False)[source]#

Bases: BaseModel

The base settings class for MDA algorithms.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:
  • coupling_structure (CouplingStructure | None)

  • linear_solver (LinearSolver) --

    By default it is set to "DEFAULT".

  • linear_solver_settings (Mapping[str, Any] | BaseLinearSolverSettings)

  • linear_solver_tolerance (Annotated[float, Ge(ge=0)]) --

    By default it is set to 1e-12.

  • log_convergence (bool) --

    By default it is set to False.

  • max_mda_iter (Annotated[int, Ge(ge=0)]) --

    By default it is set to 20.

  • name (str) --

    By default it is set to "".

  • tolerance (Annotated[float, Ge(ge=0)]) --

    By default it is set to 1e-06.

  • use_lu_fact (bool) --

    By default it is set to False.

  • warm_start (bool) --

    By default it is set to False.

Return type:

None

coupling_structure: CouplingStructure | None = None#

The coupling structure to be used by the MDA.

If None, the coupling structure is created from the disciplines.

linear_solver: LinearSolver = LinearSolver.DEFAULT#

The name of the linear solver.

linear_solver_settings: StrKeyMapping | BaseLinearSolverSettings [Optional]#

The settings passed to the linear solver factory.

linear_solver_tolerance: NonNegativeFloat = 1e-12#

The linear solver tolerance.

Linear solvers are used to compute the total derivatives.

Constraints:
  • ge = 0

log_convergence: bool = False#

Whether to log the MDA convergence.

The log displays the normalized residual norm.

max_mda_iter: NonNegativeInt = 20#

The maximum number of iterations for the MDA algorithm.

If 0, evaluate the coupling variables without trying to solve the coupling equations.

Constraints:
  • ge = 0

name: str = ''#

The name to be given to the MDA.

If empty, use the name of the class.

tolerance: NonNegativeFloat = 1e-06#

The tolerance for the MDA algorithm residual.

The available normalization strategies for the residual are described in BaseMDA.ResidualScaling.

Constraints:
  • ge = 0

use_lu_fact: bool = False#

Whether to perform an LU factorization.

The factorization is used to solve the linear systems arising in the computation of the total derivatives. Since there are possibly several right-hand side, if affordable, such a factorization may improve the solution time.

warm_start: bool = False#

Whether to warm start the execution of the MDA algorithm.

The warm start strategy consists in using the last cached values for the coupling variables as an initial guess. This is expected to reduce the number of iteration of the MDA algorithm required to reach convergence.

class LinearSolver(value)#

Bases: StrEnum

An enumeration.

BICG = 'BICG'#
BICGSTAB = 'BICGSTAB'#
CG = 'CG'#
CGS = 'CGS'#
DEFAULT = 'DEFAULT'#
GCROT = 'GCROT'#
GMRES = 'GMRES'#
LGMRES = 'LGMRES'#
TFQMR = 'TFQMR'#