Source code for openmdao.util.type_util
""" Defines our differentiable data types. """
import numbers
import array
import numpy
real_types = [numbers.Real]
int_types = [numbers.Integral]
complex_types = [numbers.Complex]
iterable_types = [set, list, tuple, array.array]
real_types.extend([numpy.float32, numpy.float64])
int_types.extend([numpy.int32, numpy.int64])
complex_types.extend([numpy.complex])
iterable_types.append(numpy.ndarray)
# use these with isinstance to test for various types that include builtins
# and numpy types (if numpy is available)
complex_or_real_types = tuple(real_types+complex_types)
real_types = tuple(real_types)
int_types = tuple(int_types)
complex_types = tuple(complex_types)
iterable_types = tuple(iterable_types)
[docs]def is_differentiable(val):
""" Determines if a quantity is differentiable based on its data type.
Args
----
val : object
Some quantity from an OpenMDAO variable. Can be anything.
Returns
-------
bool : Returns True if val is differentiable.
"""
if isinstance(val, int_types):
return False
elif isinstance(val, real_types):
return True
elif isinstance(val, numpy.ndarray) and (str(val.dtype)[:5]=='float' or \
str(val.dtype)[:7]=='complex'):
return True
return False