finite_difference.py#

Finite difference derivative approximations.

class openmdao.approximation_schemes.finite_difference.FiniteDifference[source]

Bases: ApproximationScheme

Approximation scheme using finite differences to estimate derivatives.

For example, using the ‘forward’ form with a step size of ‘h’ will approximate the derivative in the following way:

\[f'(x) = \frac{f(x+h) - f(x)}{h} + O(h).\]
Attributes:
_starting_outsndarray

A copy of the starting outputs array used to restore the outputs to original values.

_starting_insndarray

A copy of the starting inputs array used to restore the inputs to original values.

_results_tmpndarray

An array the same size as the system outputs. Used to store the results temporarily.

DEFAULT_OPTIONS = {'directional': False, 'form': 'forward', 'minimum_step': 1e-12, 'order': None, 'step': 1e-06, 'step_calc': 'abs'}
__init__()[source]

Initialize the ApproximationScheme.

add_approximation(abs_key, system, kwargs, vector=None)[source]

Use this approximation scheme to approximate the derivative d(of)/d(wrt).

Parameters:
abs_keytuple(str,str)

Absolute name pairing of (of, wrt) for the derivative.

systemSystem

Containing System.

kwargsdict

Additional keyword arguments, to be interpreted by sub-classes.

vectorndarray or None

Direction for difference when using directional derivatives.

apply_directional(data, direction)[source]

Apply stepsize to direction and embed into approximation data.

Parameters:
datatuple

Tuple contains step size, and other info.

directionndarray

Vector containing derivative direction.

Returns:
ndarray

New tuple with new step direction.

compute_approx_col_iter(system, under_cs=False)[source]

Execute the system to compute the approximate sub-Jacobians.

Parameters:
systemSystem

System on which the execution is run.

under_csbool

True if we’re currently under complex step at a higher level.

Yields:
int

column index

ndarray

solution array corresponding to the jacobian column at the given column index

compute_approximations(system, jac=None)

Execute the system to compute the approximate sub-Jacobians.

Parameters:
systemSystem

System on which the execution is run.

jacNone or dict-like

If None, update system with the approximated sub-Jacobians. Otherwise, store the approximations in the given dict-like object.