problem.py¶
Define the Problem class and a FakeComm class for non-MPI users.
-
class
openmdao.core.problem.
ErrorTuple
(forward, reverse, forward_reverse)¶ Bases:
tuple
-
__contains__
(key, /)¶ Return key in self.
-
__getitem__
(key, /)¶ Return self[key].
-
__iter__
(/)¶ Implement iter(self).
-
count
(value, /)¶ Return number of occurrences of value.
-
forward
¶ Alias for field number 0
-
forward_reverse
¶ Alias for field number 2
-
index
(value, start=0, stop=sys.maxsize, /)¶ Return first index of value.
Raises ValueError if the value is not present.
-
reverse
¶ Alias for field number 1
-
-
class
openmdao.core.problem.
MagnitudeTuple
(forward, reverse, fd)¶ Bases:
tuple
-
__contains__
(key, /)¶ Return key in self.
-
__getitem__
(key, /)¶ Return self[key].
-
__iter__
(/)¶ Implement iter(self).
-
count
(value, /)¶ Return number of occurrences of value.
-
fd
¶ Alias for field number 2
-
forward
¶ Alias for field number 0
-
index
(value, start=0, stop=sys.maxsize, /)¶ Return first index of value.
Raises ValueError if the value is not present.
-
reverse
¶ Alias for field number 1
-
-
class
openmdao.core.problem.
Problem
(model=None, driver=None, comm=None, name=None, **options)[source]¶ Bases:
object
Top-level container for the systems and drivers.
Attributes
model
(<System>) Pointer to the top-level <System> object (root node in the tree).
comm
(MPI.Comm or <FakeComm>) The global communicator.
driver
(<Driver>) Slot for the driver. The default driver is Driver, which just runs the model once.
cite
(str) Listing of relevant citations that should be referenced when publishing work that uses this class.
options
(<OptionsDictionary>) Dictionary with general options for the problem.
recording_options
(<OptionsDictionary>) Dictionary with problem recording options.
-
__getitem__
(name)[source]¶ Get an output/input variable.
- Parameters
- namestr
Promoted or relative variable name in the root system’s namespace.
- Returns
- float or ndarray or any python object
the requested output/input variable.
-
__init__
(model=None, driver=None, comm=None, name=None, **options)[source]¶ Initialize attributes.
- Parameters
- model<System> or None
The top-level <System>. If not specified, an empty <Group> will be created.
- driver<Driver> or None
The driver for the problem. If not specified, a simple “Run Once” driver will be used.
- commMPI.Comm or <FakeComm> or None
The global communicator.
- namestr
Problem name. Can be used to specify a Problem instance when multiple Problems exist.
- **optionsnamed args
All remaining named args are converted to options.
-
__setitem__
(name, value)[source]¶ Set an output/input variable.
- Parameters
- namestr
Promoted or relative variable name in the root system’s namespace.
- valuefloat or ndarray or any python object
value to set this variable to.
-
add_recorder
(recorder)[source]¶ Add a recorder to the problem.
- Parameters
- recorderCaseRecorder
A recorder instance.
-
check_config
(logger=None, checks=None, out_file='openmdao_checks.out')[source]¶ Perform optional error checks on a Problem.
- Parameters
- loggerobject
Logging object.
- checkslist of str or None
List of specific checks to be performed.
- out_filestr or None
If not None, output will be written to this file in addition to stdout.
-
check_partials
(out_stream=DEFAULT_OUT_STREAM, includes=None, excludes=None, compact_print=False, abs_err_tol=1e-06, rel_err_tol=1e-06, method='fd', step=None, form='forward', step_calc='abs', force_dense=True, show_only_incorrect=False)[source]¶ Check partial derivatives comprehensively for all components in your model.
- Parameters
- out_streamfile-like object
Where to send human readable output. By default it goes to stdout. Set to None to suppress.
- includesNone or list_like
List of glob patterns for pathnames to include in the check. Default is None, which includes all components in the model.
- excludesNone or list_like
List of glob patterns for pathnames to exclude from the check. Default is None, which excludes nothing.
- compact_printbool
Set to True to just print the essentials, one line per input-output pair.
- abs_err_tolfloat
Threshold value for absolute error. Errors about this value will have a ‘*’ displayed next to them in output, making them easy to search for. Default is 1.0E-6.
- rel_err_tolfloat
Threshold value for relative error. Errors about this value will have a ‘*’ displayed next to them in output, making them easy to search for. Note at times there may be a significant relative error due to a minor absolute error. Default is 1.0E-6.
- methodstr
Method, ‘fd’ for finite difference or ‘cs’ for complex step. Default is ‘fd’.
- stepfloat
Step size for approximation. Default is None, which means 1e-6 for ‘fd’ and 1e-40 for ‘cs’.
- formstring
Form for finite difference, can be ‘forward’, ‘backward’, or ‘central’. Default ‘forward’.
- step_calcstring
Step type for finite difference, can be ‘abs’ for absolute’, or ‘rel’ for relative. Default is ‘abs’.
- force_densebool
If True, analytic derivatives will be coerced into arrays. Default is True.
- show_only_incorrectbool, optional
Set to True if output should print only the subjacs found to be incorrect.
- Returns
- dict of dicts of dicts
- First key:
is the component name;
- Second key:
is the (output, input) tuple of strings;
- Third key:
is one of [‘rel error’, ‘abs error’, ‘magnitude’, ‘J_fd’, ‘J_fwd’, ‘J_rev’];
- For ‘rel error’, ‘abs error’, ‘magnitude’ the value is: A tuple containing norms for
forward - fd, adjoint - fd, forward - adjoint.
- For ‘J_fd’, ‘J_fwd’, ‘J_rev’ the value is: A numpy array representing the computed
Jacobian for the three different methods of computation.
-
check_totals
(of=None, wrt=None, out_stream=DEFAULT_OUT_STREAM, compact_print=False, driver_scaling=False, abs_err_tol=1e-06, rel_err_tol=1e-06, method='fd', step=None, form=None, step_calc='abs', show_progress=False)[source]¶ Check total derivatives for the model vs. finite difference.
- Parameters
- oflist of variable name strings or None
Variables whose derivatives will be computed. Default is None, which uses the driver’s objectives and constraints.
- wrtlist of variable name strings or None
Variables with respect to which the derivatives will be computed. Default is None, which uses the driver’s desvars.
- out_streamfile-like object
Where to send human readable output. By default it goes to stdout. Set to None to suppress.
- compact_printbool
Set to True to just print the essentials, one line per input-output pair.
- driver_scalingbool
When True, return derivatives that are scaled according to either the adder and scaler or the ref and ref0 values that were specified when add_design_var, add_objective, and add_constraint were called on the model. Default is False, which is unscaled.
- abs_err_tolfloat
Threshold value for absolute error. Errors about this value will have a ‘*’ displayed next to them in output, making them easy to search for. Default is 1.0E-6.
- rel_err_tolfloat
Threshold value for relative error. Errors about this value will have a ‘*’ displayed next to them in output, making them easy to search for. Note at times there may be a significant relative error due to a minor absolute error. Default is 1.0E-6.
- methodstr
Method, ‘fd’ for finite difference or ‘cs’ for complex step. Default is ‘fd’
- stepfloat
Step size for approximation. Default is None, which means 1e-6 for ‘fd’ and 1e-40 for ‘cs’.
- formstring
Form for finite difference, can be ‘forward’, ‘backward’, or ‘central’. Default None, which defaults to ‘forward’ for FD.
- step_calcstring
Step type for finite difference, can be ‘abs’ for absolute’, or ‘rel’ for relative. Default is ‘abs’.
- show_progressbool
True to show progress of check_totals
- Returns
- Dict of Dicts of Tuples of Floats
- First key:
is the (output, input) tuple of strings;
- Second key:
is one of [‘rel error’, ‘abs error’, ‘magnitude’, ‘fdstep’];
- For ‘rel error’, ‘abs error’, ‘magnitude’ the value is: A tuple containing norms for
forward - fd, adjoint - fd, forward - adjoint.
-
compute_jacvec_product
(of, wrt, mode, seed)[source]¶ Given a seed and ‘of’ and ‘wrt’ variables, compute the total jacobian vector product.
- Parameters
- oflist of str
Variables whose derivatives will be computed.
- wrtlist of str
Derivatives will be computed with respect to these variables.
- modestr
Derivative direction (‘fwd’ or ‘rev’).
- seeddict or list
Either a dict keyed by ‘wrt’ varnames (fwd) or ‘of’ varnames (rev), containing dresidual (fwd) or doutput (rev) values, OR a list of dresidual or doutput values that matches the corresponding ‘wrt’ (fwd) or ‘of’ (rev) varname list.
- Returns
- dict
The total jacobian vector product, keyed by variable name.
-
compute_totals
(of=None, wrt=None, return_format='flat_dict', debug_print=False, driver_scaling=False, use_abs_names=False, get_remote=True)[source]¶ Compute derivatives of desired quantities with respect to desired inputs.
- Parameters
- oflist of variable name strings or None
Variables whose derivatives will be computed. Default is None, which uses the driver’s objectives and constraints.
- wrtlist of variable name strings or None
Variables with respect to which the derivatives will be computed. Default is None, which uses the driver’s desvars.
- return_formatstring
Format to return the derivatives. Can be ‘dict’, ‘flat_dict’, or ‘array’. Default is a ‘flat_dict’, which returns them in a dictionary whose keys are tuples of form (of, wrt).
- debug_printbool
Set to True to print out some debug information during linear solve.
- driver_scalingbool
When True, return derivatives that are scaled according to either the adder and scaler or the ref and ref0 values that were specified when add_design_var, add_objective, and add_constraint were called on the model. Default is False, which is unscaled.
- use_abs_namesbool
Set to True when passing in absolute names to skip some translation steps.
- get_remotebool
If True, the default, the full distributed total jacobian will be retrieved.
- Returns
- derivsobject
Derivatives in form requested by ‘return_format’.
-
final_setup
()[source]¶ Perform final setup phase on problem in preparation for run.
This is the second phase of setup, and is done automatically at the start of run_driver and run_model. At the beginning of final_setup, we have a model hierarchy with defined variables, solvers, case_recorders, and derivative settings. During this phase, the vectors are created and populated, the drivers and solvers are initialized, and the recorders are started, and the rest of the framework is prepared for execution.
-
get_val
(name, units=None, indices=None, get_remote=False)[source]¶ Get an output/input variable.
Function is used if you want to specify display units.
- Parameters
- namestr
Promoted or relative variable name in the root system’s namespace.
- unitsstr, optional
Units to convert to before return.
- indicesint or list of ints or tuple of ints or int ndarray or Iterable or None, optional
Indices or slice to return.
- get_remotebool or None
If True, retrieve the value even if it is on a remote process. Note that if the variable is remote on ANY process, this function must be called on EVERY process in the Problem’s MPI communicator. If False, only retrieve the value if it is on the current process, or only the part of the value that’s on the current process for a distributed variable. If None and the variable is remote or distributed, a RuntimeError will be raised.
- Returns
- object
The value of the requested output/input variable.
-
is_local
(name)[source]¶ Return True if the named variable or system is local to the current process.
- Parameters
- namestr
Name of a variable or system.
- Returns
- bool
True if the named system or variable is local to this process.
-
list_problem_vars
(show_promoted_name=True, print_arrays=False, desvar_opts=[], cons_opts=[], objs_opts=[])[source]¶ Print all design variables and responses (objectives and constraints).
- Parameters
- show_promoted_namebool
If True, then show the promoted names of the variables.
- print_arraysbool, optional
When False, in the columnar display, just display norm of any ndarrays with size > 1. The norm is surrounded by vertical bars to indicate that it is a norm. When True, also display full values of the ndarray below the row. Format is affected by the values set with numpy.set_printoptions Default is False.
- desvar_optslist of str
List of optional columns to be displayed in the desvars table. Allowed values are: [‘lower’, ‘upper’, ‘ref’, ‘ref0’, ‘indices’, ‘adder’, ‘scaler’, ‘parallel_deriv_color’, ‘vectorize_derivs’, ‘cache_linear_solution’, ‘units’]
- cons_optslist of str
List of optional columns to be displayed in the cons table. Allowed values are: [‘lower’, ‘upper’, ‘equals’, ‘ref’, ‘ref0’, ‘indices’, ‘index’, ‘adder’, ‘scaler’, ‘linear’, ‘parallel_deriv_color’, ‘vectorize_derivs’, ‘cache_linear_solution’, ‘units’]
- objs_optslist of str
List of optional columns to be displayed in the objs table. Allowed values are: [‘ref’, ‘ref0’, ‘indices’, ‘adder’, ‘scaler’, ‘units’, ‘parallel_deriv_color’, ‘vectorize_derivs’, ‘cache_linear_solution’]
-
load_case
(case)[source]¶ Pull all input and output variables from a case into the model.
- Parameters
- caseCase object
A Case from a CaseRecorder file.
-
property
msginfo
¶ Return info to prepend to messages.
- Returns
- str
Info to prepend to messages.
-
record
(case_name)[source]¶ Record the variables at the Problem level.
Must be called after final_setup has been called. This can either happen automatically through run_driver or run_model, or it can be called manually.
- Parameters
- case_namestr
Name used to identify this Problem case.
-
record_iteration
(case_name)[source]¶ Record the variables at the Problem level.
- Parameters
- case_namestr
Name used to identify this Problem case.
-
run_driver
(case_prefix=None, reset_iter_counts=True)[source]¶ Run the driver on the model.
- Parameters
- case_prefixstr or None
Prefix to prepend to coordinates when recording.
- reset_iter_countsbool
If True and model has been run previously, reset all iteration counters.
- Returns
- boolean
Failure flag; True if failed to converge, False is successful.
-
run_model
(case_prefix=None, reset_iter_counts=True)[source]¶ Run the model by calling the root system’s solve_nonlinear.
- Parameters
- case_prefixstr or None
Prefix to prepend to coordinates when recording.
- reset_iter_countsbool
If True and model has been run previously, reset all iteration counters.
-
set_complex_step_mode
(active)[source]¶ Turn on or off complex stepping mode.
- Parameters
- activebool
Complex mode flag; set to True prior to commencing complex step.
-
set_solver_print
(level=2, depth=1e+99, type_='all')[source]¶ Control printing for solvers and subsolvers in the model.
- Parameters
- levelint
iprint level. Set to 2 to print residuals each iteration; set to 1 to print just the iteration totals; set to 0 to disable all printing except for failures, and set to -1 to disable all printing including failures.
- depthint
How deep to recurse. For example, you can set this to 0 if you only want to print the top level linear and nonlinear solver messages. Default prints everything.
- type_str
Type of solver to set: ‘LN’ for linear, ‘NL’ for nonlinear, or ‘all’ for all.
-
set_val
(name, value, units=None, indices=None)[source]¶ Set an output/input variable.
Function is used if you want to set a value using a different unit.
- Parameters
- namestr
Promoted or relative variable name in the root system’s namespace.
- valuefloat or ndarray or list
Value to set this variable to.
- unitsstr, optional
Units that value is defined in.
- indicesint or list of ints or tuple of ints or int ndarray or Iterable or None, optional
Indices or slice to set to specified value.
-
setup
(check=False, logger=None, mode='auto', force_alloc_complex=False, distributed_vector_class=<class 'openmdao.vectors.petsc_vector.PETScVector'>, local_vector_class=<class 'openmdao.vectors.default_vector.DefaultVector'>, derivatives=True)[source]¶ Set up the model hierarchy.
When setup is called, the model hierarchy is assembled, the processors are allocated (for MPI), and variables and connections are all assigned. This method traverses down the model hierarchy to call setup on each subsystem, and then traverses up the model hierarchy to call configure on each subsystem.
- Parameters
- checkboolean
whether to run config check after setup is complete.
- loggerobject
Object for logging config checks if check is True.
- modestring
Derivatives calculation mode, ‘fwd’ for forward, and ‘rev’ for reverse (adjoint). Default is ‘auto’, which will pick ‘fwd’ or ‘rev’ based on the direction resulting in the smallest number of linear solves required to compute derivatives.
- force_alloc_complexbool
Force allocation of imaginary part in nonlinear vectors. OpenMDAO can generally detect when you need to do this, but in some cases (e.g., complex step is used after a reconfiguration) you may need to set this to True.
- distributed_vector_classtype
Reference to the <Vector> class or factory function used to instantiate vectors and associated transfers involved in interprocess communication.
- local_vector_classtype
Reference to the <Vector> class or factory function used to instantiate vectors and associated transfers involved in intraprocess communication.
- derivativesbool
If True, perform any memory allocations necessary for derivative computation.
- Returns
- self<Problem>
this enables the user to instantiate and setup in one line.
-
-
class
openmdao.core.problem.
Slicer
[source]¶ Bases:
object
Helper class that can be used with the indices argument for Problem set_val and get_val.