Base class for all Multi-disciplinary Design Analysis¶
MDA(disciplines, max_mda_iter=10, name=None, grammar_type='JSON', tolerance=1e-06, linear_solver_tolerance=1e-12, warm_start=False, use_lu_fact=False, norm0=None)¶
Perform an MDA analysis.
disciplines – the disciplines list
max_mda_iter – maximum iterations number for MDA
tolerance – tolerance of the iterative direct coupling solver, norm of the current residuals divided by initial residuals norm shall be lower than the tolerance to stop iterating
name – the name of the chain
grammar_type – the type of grammar to use for IO declaration either JSON_GRAMMAR_TYPE or SIMPLE_GRAMMAR_TYPE
warm_start – if True, the second iteration and ongoing start from the previous coupling solution
linear_solver_tolerance – Tolerance of the linear solver in the adjoint equation
use_lu_fact – if True, when using adjoint/forward differenciation, store a LU factorization of the matrix to solve faster multiple RHS problem
norm0 (float) – reference value of the norm of the residual to compute the decrease stop criteria. Iterations stops when norm(residual)/norm0<tolerance
check_jacobian(input_data=None, derr_approx='finite_differences', step=1e-07, threshold=1e-08, linearization_mode='auto', inputs=None, outputs=None, parallel=False, n_processes=2, use_threading=False, wait_time_between_fork=0)¶
Check if the jacobian is correct.
This method checks the jacobian computed by the linearize() method.
input_data – input data dict (Default value = None)
derr_approx – derivative approximation method: COMPLEX_STEP (Default value = COMPLEX_STEP)
threshold – acceptance threshold for the jacobian error (Default value = 1e-8)
linearization_mode – the mode of linearization: direct, adjoint or automated switch depending on dimensions of inputs and outputs (Default value = ‘auto’)
inputs – list of inputs wrt which to differentiate (Default value = None)
outputs – list of outputs to differentiate (Default value = None)
step – the step for finite differences or complex step
parallel – if True, executes in parallel
n_processes – maximum number of processors on which to run
use_threading – if True, use Threads instead of processes to parallelize the execution multiprocessing will copy (serialize) all the disciplines, while threading will share all the memory This is important to note if you want to execute the same discipline multiple times, you shall use multiprocessing
wait_time_between_fork – time waited between two forks of the process /Thread
True if the check is accepted, False otherwise
Return the expected data exchange sequence.
This method is used for xdsm representation See MDOFormulation.get_expected_dataflow
Return the expected execution sequence.
This method is used for xdsm representation See MDOFormulation.get_expected_workflow
plot_residual_history(show=False, save=True, n_iterations=None, logscale=None, filename=None, figsize=(50, 10))¶
Generate a plot of the residual history.
All residuals are stored in the history ; only the final residual of the converged MDA is plotted at each optimization iteration
show – if True, displays the plot on screen (Default value = False)
save – if True, saves the plot as a PDF file (Default value = True)
n_iterations – if not None, fix the number of iterations in the x axis (Default value = None)
logscale – if not None, fix the logscale in the y axis (Default value = None)
filename – Default value = None)
Reset all the statuses of sub disciplines for run.
Reset the statuses.