Finite difference derivative approximations.

class openmdao.approximation_schemes.finite_difference.FDForm(deltas, coeffs, current_coeff)

Bases: tuple

__contains__(self, key, /)

Return key in self.

__getitem__(self, key, /)

Return self[key].

__init__(self, /, *args, **kwargs)

Initialize self. See help(type(self)) for accurate signature.

__iter__(self, /)

Implement iter(self).

property coeffs

Alias for field number 1

property current_coeff

Alias for field number 2

property deltas

Alias for field number 0


Raises ValueError if the value is not present.

class openmdao.approximation_schemes.finite_difference.FiniteDifference[source]

Bases: openmdao.approximation_schemes.approximation_scheme.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).\]
DEFAULT_OPTIONS = {'directional': False, 'form': 'forward', 'order': None, 'step': 1e-06, 'step_calc': 'abs'}

Initialize the ApproximationScheme.

add_approximation(self, abs_key, system, kwargs)[source]

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


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


Containing System.


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

compute_approximations(self, system, jac=None, total=False)[source]

Execute the system to compute the approximate sub-Jacobians.


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.


If True total derivatives are being approximated, else partials.