sequential_mda module¶
A chain of MDAs to build hybrids of MDA algorithms sequentially.
- class gemseo.mda.sequential_mda.MDAGSNewton(disciplines, name='', grammar_type=GrammarType.JSON, tolerance=1e-06, max_mda_iter=10, relax_factor=0.99, linear_solver='DEFAULT', max_mda_iter_gs=3, linear_solver_tolerance=1e-12, warm_start=False, use_lu_fact=False, coupling_structure=None, linear_solver_options=None, log_convergence=False, **newton_mda_options)[source]
Bases:
MDASequential
Perform some Gauss-Seidel iterations and then Newton-Raphson iterations.
Initialize self. See help(type(self)) for accurate signature.
- Parameters:
disciplines (Sequence[MDODiscipline]) – The disciplines from which to compute the MDA.
name (str) –
The name to be given to the MDA. If
None
, use the name of the class.By default it is set to “”.
grammar_type (MDODiscipline.GrammarType) –
The type of the input and output grammars.
By default it is set to “JSONGrammar”.
tolerance (float) –
The tolerance of the iterative direct coupling solver; the norm of the current residuals divided by initial residuals norm shall be lower than the tolerance to stop iterating.
By default it is set to 1e-06.
max_mda_iter (int) –
The maximum iterations number for the MDA algorithm.
By default it is set to 10.
relax_factor (float) –
The relaxation factor.
By default it is set to 0.99.
linear_solver (str) –
The name of the linear solver.
By default it is set to “DEFAULT”.
max_mda_iter_gs (int) –
The maximum number of iterations of the Gauss-Seidel MDA.
By default it is set to 3.
linear_solver_tolerance (float) –
The tolerance of the linear solver in the adjoint equation.
By default it is set to 1e-12.
warm_start (bool) –
Whether the second iteration and ongoing start from the previous coupling solution.
By default it is set to False.
use_lu_fact (bool) –
Whether to store a LU factorization of the matrix when using adjoint/forward differentiation. to solve faster multiple RHS problem.
By default it is set to False.
coupling_structure (MDOCouplingStructure | None) – The coupling structure to be used by the MDA. If
None
, it is created from disciplines.linear_solver_options (StrKeyMapping | None) – The options passed to the linear solver factory.
log_convergence (bool) –
Whether to log the MDA convergence, expressed in terms of normed residuals.
By default it is set to False.
**newton_mda_options (float | str | None) – The options for the Newton MDA.
- assembly: JacobianAssembly
- cache: BaseCache | None
The cache containing one or several executions of the discipline according to the cache policy.
- coupling_structure: MDOCouplingStructure
The coupling structure to be used by the MDA.
- data_processor: DataProcessor
A tool to pre- and post-process discipline data.
- exec_for_lin: bool
Whether the last execution was due to a linearization.
- input_grammar: BaseGrammar
The input grammar.
- jac: MutableMapping[str, MutableMapping[str, ndarray | csr_array | JacobianOperator]]
The Jacobians of the outputs wrt inputs.
The structure is
{output: {input: matrix}}
.
- lin_cache_tol_fact: float
The tolerance factor to cache the Jacobian.
- linear_solver: str
The name of the linear solver.
- linear_solver_options: StrKeyMapping
The options of the linear solver.
- linear_solver_tolerance: float
The tolerance of the linear solver in the adjoint equation.
- matrix_type: JacobianAssembly.JacobianType
The type of the matrix.
- name: str
The name of the discipline.
- normed_residual: float
The normed residual.
- output_grammar: BaseGrammar
The output grammar.
- re_exec_policy: ReExecutionPolicy
The policy to re-execute the same discipline.
- reset_history_each_run: bool
Whether to reset the history of MDA residuals before each run.
- residual_variables: dict[str, str]
The output variables mapping to their inputs, to be considered as residuals; they shall be equal to zero.
- run_solves_residuals: bool
Whether the run method shall solve the residuals.
- scaling: ResidualScaling
The scaling method applied to MDA residuals for convergence monitoring.
- tolerance: float
The tolerance of the iterative direct coupling solver.
- use_lu_fact: bool
Whether to store a LU factorization of the matrix.
- warm_start: bool
Whether the second iteration and ongoing start from the previous solution.
- class gemseo.mda.sequential_mda.MDASequential(disciplines, mda_sequence, name='', grammar_type=GrammarType.JSON, max_mda_iter=10, tolerance=1e-06, linear_solver_tolerance=1e-12, warm_start=False, use_lu_fact=False, coupling_structure=None, linear_solver='DEFAULT', linear_solver_options=None)[source]
Bases:
BaseMDA
A sequence of elementary MDAs.
Initialize self. See help(type(self)) for accurate signature.
- Parameters:
disciplines (Sequence[MDODiscipline]) – The disciplines from which to compute the MDA.
mda_sequence (Sequence[BaseMDA]) – The sequence of MDAs.
name (str) –
The name to be given to the MDA. If
None
, use the name of the class.By default it is set to “”.
grammar_type (MDODiscipline.GrammarType) –
The type of the input and output grammars.
By default it is set to “JSONGrammar”.
max_mda_iter (int) –
The maximum iterations number for the MDA algorithm.
By default it is set to 10.
tolerance (float) –
The tolerance of the iterative direct coupling solver; the norm of the current residuals divided by initial residuals norm shall be lower than the tolerance to stop iterating.
By default it is set to 1e-06.
linear_solver_tolerance (float) –
The tolerance of the linear solver in the adjoint equation.
By default it is set to 1e-12.
warm_start (bool) –
Whether the second iteration and ongoing start from the previous coupling solution.
By default it is set to False.
use_lu_fact (bool) –
Whether to store a LU factorization of the matrix when using adjoint/forward differentiation. to solve faster multiple RHS problem.
By default it is set to False.
coupling_structure (MDOCouplingStructure | None) – The coupling structure to be used by the MDA. If
None
, it is created from disciplines.linear_solver (str) –
The name of the linear solver.
By default it is set to “DEFAULT”.
linear_solver_options (StrKeyMapping | None) – The options passed to the linear solver factory.
- assembly: JacobianAssembly
- cache: BaseCache | None
The cache containing one or several executions of the discipline according to the cache policy.
- coupling_structure: MDOCouplingStructure
The coupling structure to be used by the MDA.
- data_processor: DataProcessor
A tool to pre- and post-process discipline data.
- exec_for_lin: bool
Whether the last execution was due to a linearization.
- input_grammar: BaseGrammar
The input grammar.
- jac: MutableMapping[str, MutableMapping[str, ndarray | csr_array | JacobianOperator]]
The Jacobians of the outputs wrt inputs.
The structure is
{output: {input: matrix}}
.
- lin_cache_tol_fact: float
The tolerance factor to cache the Jacobian.
- linear_solver: str
The name of the linear solver.
- linear_solver_options: StrKeyMapping
The options of the linear solver.
- linear_solver_tolerance: float
The tolerance of the linear solver in the adjoint equation.
- property log_convergence: bool
Whether to log the MDA convergence.
- matrix_type: JacobianAssembly.JacobianType
The type of the matrix.
- name: str
The name of the discipline.
- normed_residual: float
The normed residual.
- output_grammar: BaseGrammar
The output grammar.
- re_exec_policy: ReExecutionPolicy
The policy to re-execute the same discipline.
- reset_history_each_run: bool
Whether to reset the history of MDA residuals before each run.
- residual_variables: dict[str, str]
The output variables mapping to their inputs, to be considered as residuals; they shall be equal to zero.
- run_solves_residuals: bool
Whether the run method shall solve the residuals.
- scaling: ResidualScaling
The scaling method applied to MDA residuals for convergence monitoring.
- tolerance: float
The tolerance of the iterative direct coupling solver.
- use_lu_fact: bool
Whether to store a LU factorization of the matrix.
- warm_start: bool
Whether the second iteration and ongoing start from the previous solution.