eq_constraint_comp.py#
Define the EQConstraintComp class.
- class openmdao.components.eq_constraint_comp.EQConstraintComp(name=None, eq_units=None, lhs_name=None, rhs_name=None, rhs_val=0.0, use_mult=False, mult_name=None, mult_val=1.0, normalize=True, add_constraint=False, ref=None, ref0=None, adder=None, scaler=None, **kwargs)[source]
Bases:
ExplicitComponentA component that computes the difference between two inputs to test for equality.
- Parameters:
- namestr
The name of the output variable to be created.
- eq_unitsstr or None
Units for the left-hand-side and right-hand-side of the difference equation.
- lhs_namestr or None
Optional name for the LHS variable associated with the difference equation. If None, the default will be used: ‘lhs:{name}’.
- rhs_namestr or None
Optional name for the RHS variable associated with the difference equation. If None, the default will be used: ‘rhs:{name}’.
- rhs_valint, float, or np.array
Default value for the RHS of the given output. Must be compatible with the shape (optionally) given by the val or shape option in kwargs.
- use_multbool
Specifies whether the LHS multiplier is to be used. If True, then an additional input mult_name is created, with the default value given by mult_val, that multiplies lhs. Default is False.
- mult_namestr or None
Optional name for the LHS multiplier variable associated with the output variable. If None, the default will be used: ‘mult:{name}’.
- mult_valint, float, or np.array
Default value for the LHS multiplier of the given output. Must be compatible with the shape (optionally) given by the val or shape option in kwargs.
- normalizebool
Specifies whether or not the resulting output should be normalized by the RHS. When the RHS value is between [-2, 2], the normalization value is a quadratic function that is close to one but still provides a C1 continuous function. When this option is True, the user-provided ref/ref0 scaler/adder options below are typically unnecessary.
- add_constraintbool
Specifies whether to add an equality constraint.
- reffloat or ndarray, optional
Value of response variable that scales to 1.0 in the driver. This option is only meaningful when add_constraint=True.
- ref0float or ndarray, optional
Value of response variable that scales to 0.0 in the driver. This option is only meaningful when add_constraint=True.
- adderfloat or ndarray, optional
Value to add to the model value to get the scaled value for the driver. adder is first in precedence. This option is only meaningful when add_constraint=True.
- scalerfloat or ndarray, optional
Value to multiply the model value to get the scaled value for the driver. scaler is second in precedence. This option is only meaningful when add_constraint=True.
- **kwargsdict
Additional arguments to be passed for the creation of the output variable. (see add_output method).
- Attributes:
- _output_varsdict
Cache the data provided during add_eq_output so everything can be saved until setup is called.
Methods
abs_meta_iter(iotype[, local, cont, discrete])Iterate over absolute variable names and their metadata for this System.
add_constraint(name[, lower, upper, equals, ...])Add a constraint variable to this system.
add_design_var(name[, lower, upper, ref, ...])Add a design variable to this system.
add_discrete_input(name, val[, desc, tags, ...])Add a discrete input variable to the component.
add_discrete_output(name, val[, desc, tags, ...])Add an output variable to the component.
add_eq_output(name[, eq_units, lhs_name, ...])Add a new output variable computed via the difference equation.
add_input(name[, val, shape, units, desc, ...])Add an input variable to the component.
add_objective(name[, ref, ref0, index, ...])Add a response variable to this system.
add_output(name[, val, shape, units, ...])Add an output variable to the component.
add_recorder(recorder[, recurse])Add a recorder to the system.
add_response(name, type_[, lower, upper, ...])Add a response variable to this system.
best_partial_deriv_direction()Return the best direction for partial deriv calculations based on input and output sizes.
check_config(logger)Perform optional error checks.
check_partials([out_stream, compact_print, ...])Check partial derivatives comprehensively for this component.
check_sparsity([method, max_nz, out_stream])Check the sparsity of the computed jacobian against the declared sparsity.
cleanup()Clean up resources prior to exit.
comm_info_iter()Yield comm size for this system and all subsystems.
compute(inputs, outputs)Calculate the output for each equality constraint.
compute_fd_jac(jac[, method])Force the use of finite difference to compute a jacobian.
compute_fd_sparsity([method, num_full_jacs, ...])Use finite difference to compute a sparsity matrix.
compute_jacvec_product(inputs, d_inputs, ...)Compute jac-vector product.
compute_partials(inputs, partials)Compute sub-jacobian parts.
compute_sparsity([direction, num_iters, ...])Compute the sparsity of the partial jacobian.
convert2units(name, val, units)Convert the given value to the specified units.
convert_from_units(name, val, units)Convert the given value from the specified units to those of the named variable.
convert_units(name, val, units_from, units_to)Wrap the utility convert_units and give a good error message.
declare_coloring([wrt, method, form, step, ...])Set options for deriv coloring of a set of wrt vars matching the given pattern(s).
declare_partials(of, wrt[, dependent, rows, ...])Declare information about this component's subjacobians.
dist_size_iter(io, top_comm)Yield names and distributed ranges of all local and remote variables in this system.
get_coloring_fname(mode)Return the full pathname to a coloring file.
get_conn_graph()Return the model connection graph.
get_constraints([recurse, get_sizes, ...])Get the Constraint settings from this system.
get_declare_partials_calls([sparsity])Return a string containing declare_partials() calls based on the subjac sparsity.
get_design_vars([recurse, get_sizes, ...])Get the DesignVariable settings from this system.
get_io_metadata([iotypes, metadata_keys, ...])Retrieve metadata for a filtered list of variables.
get_linear_vectors()Return the linear inputs, outputs, and residuals vectors.
get_nonlinear_vectors()Return the inputs, outputs, and residuals vectors.
get_objectives([recurse, get_sizes, ...])Get the Objective settings from this system.
get_outputs_dir(*subdirs[, mkdir])Get the path under which all output files of this system are to be placed.
get_promotions([inprom, outprom])Return all promotions for the given promoted variable(s).
get_reports_dir()Get the path to the directory where the report files should go.
get_responses([recurse, get_sizes, use_prom_ivc])Get the response variable settings from this system.
get_self_statics()Override this in derived classes if compute_primal references static values.
get_source(name)Return the source variable connected to the given named variable.
get_val(name[, units, indices, get_remote, ...])Get an output/input/residual variable.
get_var_dup_info(name, io)Return information about how the given variable is duplicated across MPI processes.
get_var_sizes(name, io)Return the sizes of the given variable on all procs.
has_vectors()Check if the system vectors have been initialized.
initialize()Perform any one-time initialization run at instantiation.
is_explicit([is_comp])Return True if this is an explicit component.
list_inputs([val, prom_name, units, shape, ...])Write a list of input names and other optional information to a specified stream.
list_options([include_default, ...])Write a list of output names and other optional information to a specified stream.
list_outputs([explicit, implicit, val, ...])Write a list of output names and other optional information to a specified stream.
list_vars([val, prom_name, residuals, ...])Write a list of inputs and outputs sorted by component in execution order.
load_case(case)Pull all input and output variables from a Case into this System.
load_model_options()Load the relevant model options from Problem._metadata['model_options'].
override_method(name, method)Dynamically add a method to this component instance.
record_iteration()Record an iteration of the current System.
run_apply_linear(mode[, scope_out, scope_in])Compute jac-vec product.
run_apply_nonlinear()Compute residuals.
run_linearize([sub_do_ln])Compute jacobian / factorization.
run_solve_linear(mode)Apply inverse jac product.
run_solve_nonlinear()Compute outputs.
run_validation()Run validate method on all systems below this system.
set_check_partial_options(wrt[, method, ...])Set options that will be used for checking partial derivatives.
set_constraint_options(name[, ref, ref0, ...])Set options for constraints in the model.
set_design_var_options(name[, lower, upper, ...])Set options for design vars in the model.
set_objective_options(name[, ref, ref0, ...])Set options for objectives in the model.
set_output_solver_options(name[, lower, ...])Set solver output options.
set_solver_print([level, depth, type_, ...])Control printing for solvers and subsolvers in the model.
set_val(name, val[, units, indices])Set an input or output variable.
setup()Declare inputs and outputs.
setup_partials()Declare partials.
sparsity_matches_fd([direction, outstream])Compare the sparsity computed by this system vs.
subjac_sparsity_iter(sparsity[, wrt_matches])Iterate over sparsity for each subjac in the jacobian.
system_iter([include_self, recurse, typ, ...])Yield a generator of local subsystems of this system.
total_local_size(io)Return the total local size of the given variable.
use_fixed_coloring([coloring, recurse])Use a precomputed coloring for this System.
uses_approx()Return True if the system uses approximations to compute derivatives.
validate(inputs, outputs[, discrete_inputs, ...])Check any final input / output values after a run.
- __init__(name=None, eq_units=None, lhs_name=None, rhs_name=None, rhs_val=0.0, use_mult=False, mult_name=None, mult_val=1.0, normalize=True, add_constraint=False, ref=None, ref0=None, adder=None, scaler=None, **kwargs)[source]
Initialize an EQConstraintComp, optionally add an output constraint to the model.
The EQConstraintComp allows for the creation of one or more output variables and computes the values for those variables based on the following equation:
\[name_{output} = \frac{name_{mult} \times name_{lhs} - name_{rhs} }{f_{norm}(name_{rhs})}\]Where \(name_{lhs}\) represents the left-hand-side of the equality, \(name_{rhs}\) represents the right-hand-side, and \(name_{mult}\) is an optional multiplier on the left hand side. If use_mult is True then the default value of the multiplier is 1. The optional normalization function \(f_{norm}\) is computed as:
\[\begin{split}f_{norm}(name_{rhs}) = \begin{cases} \left| name_{rhs} \right|, & \text{if normalize and } \left| name_{rhs} \right| \geq 2 \\ 0.25 name_{rhs}^2 + 1, & \text{if normalize and } \left| name_{rhs} \right| < 2 \\ 1, & \text{if not normalize} \end{cases}\end{split}\]New output variables are created by calling add_eq_output.
- add_eq_output(name, eq_units=None, lhs_name=None, rhs_name=None, rhs_val=0.0, use_mult=False, mult_name=None, mult_val=1.0, normalize=True, add_constraint=False, ref=None, ref0=None, adder=None, scaler=None, linear=False, indices=None, cache_linear_solution=False, flat_indices=False, alias=None, **kwargs)[source]
Add a new output variable computed via the difference equation.
This will create new inputs lhs:name, rhs:name, and mult:name that will define the left and right sides of the difference equation, and a multiplier for the left-hand-side.
- Parameters:
- namestr
The name of the output variable to be created.
- eq_unitsstr or None
Units for the left-hand-side and right-hand-side of the difference equation.
- lhs_namestr or None
Optional name for the LHS variable associated with the difference equation. If None, the default will be used: ‘lhs:{name}’.
- rhs_namestr or None
Optional name for the RHS variable associated with the difference equation. If None, the default will be used: ‘rhs:{name}’.
- rhs_valint, float, or np.array
Default value for the RHS. Must be compatible with the shape (optionally) given by the val or shape option in kwargs.
- use_multbool
Specifies whether the LHS multiplier is to be used. If True, then an additional input mult_name is created, with the default value given by mult_val, that multiplies lhs. Default is False.
- mult_namestr or None
Optional name for the LHS multiplier variable associated with the output variable. If None, the default will be used: ‘mult:{name}’.
- mult_valint, float, or np.array
Default value for the LHS multiplier. Must be compatible with the shape (optionally) given by the val or shape option in kwargs.
- normalizebool
Specifies whether or not the resulting output should be normalized by a quadratic function of the RHS. When this option is True, the user-provided ref/ref0 scaler/adder options below are typically unnecessary.
- add_constraintbool
Specifies whether to add an equality constraint.
- reffloat or ndarray, optional
Value of response variable that scales to 1.0 in the driver. This option is only meaningful when add_constraint=True.
- ref0float or ndarray, optional
Value of response variable that scales to 0.0 in the driver. This option is only meaningful when add_constraint=True.
- adderfloat or ndarray, optional
Value to add to the model value to get the scaled value for the driver. adder is first in precedence. This option is only meaningful when add_constraint=True.
- scalerfloat or ndarray, optional
Value to multiply the model value to get the scaled value for the driver. scaler is second in precedence. This option is only meaningful when add_constraint=True.
- linearbool
Set to True if constraint is linear. Default is False.
- indicessequence of int, optional
If variable is an array, these indicate which entries are of interest for this particular response. These may be positive or negative integers.
- cache_linear_solutionbool
If True, store the linear solution vectors for this variable so they can be used to start the next linear solution with an initial guess equal to the solution from the previous linear solve.
- flat_indicesbool
If True, interpret specified indices as being indices into a flat source array.
- aliasstr
Alias for this response. Necessary when adding multiple constraints on different indices or slices of a single variable.
- **kwargsdict
Additional arguments to be passed for the creation of the output variable. (see add_output method).
- compute(inputs, outputs)[source]
Calculate the output for each equality constraint.
- Parameters:
- inputsVector
Unscaled, dimensional input variables read via inputs[key].
- outputsVector
Unscaled, dimensional output variables read via outputs[key].
- compute_partials(inputs, partials)[source]
Compute sub-jacobian parts. The model is assumed to be in an unscaled state.
- Parameters:
- inputsVector
Unscaled, dimensional input variables read via inputs[key].
- partialsJacobian
Sub-jac components written to partials[output_name, input_name].