vector.py#

Define the base Vector and Transfer classes.

class openmdao.vectors.vector.Vector(name, kind, system, root_vector=None, alloc_complex=False)[source]

Bases: object

Base Vector class.

This class is instantiated for inputs, outputs, and residuals. It provides a dictionary interface and an arithmetic operations interface. Implementations:

  • <DefaultVector>

  • <PETScVector>

Parameters:
namestr

The name of the vector: ‘nonlinear’ or ‘linear’.

kindstr

The kind of vector, ‘input’, ‘output’, or ‘residual’.

system<System>

Pointer to the owning system.

root_vector<Vector>

Pointer to the vector owned by the root system.

alloc_complexbool

Whether to allocate any imaginary storage to perform complex step. Default is False.

Attributes:
_namestr

The name of the vector: ‘nonlinear’ or ‘linear’.

_typstr

Type: ‘input’ for input vectors; ‘output’ for output/residual vectors.

_kindstr

Specific kind of vector, either ‘input’, ‘output’, or ‘residual’.

_systemSystem

Weak ref to the owning system.

_viewsdict

Dictionary mapping absolute variable names to the ndarray views.

_views_flatdict

Dictionary mapping absolute variable names to the flattened ndarray views.

_namesset([str, …])

Set of variables that are relevant in the current context.

_root_vectorVector

Pointer to the vector owned by the root system.

_root_offsetint

Offset of this vector into the root vector.

_alloc_complexbool

If True, then space for the complex vector is also allocated.

_datandarray

Actual allocated data.

_slicesdict

Mapping of var name to slice.

_under_complex_stepbool

When True, this vector is under complex step, and data is swapped with the complex data.

_do_scalingbool

True if this vector performs scaling.

_do_adderbool

True if this vector’s scaling includes an additive term.

_scalingdict

Contains scale factors to convert data arrays.

_scaling_nl_vecdict

Reference to the scaling factors in the nonlinear vector. Only used for linear input vectors.

read_onlybool

When True, values in the vector cannot be changed via the user __setitem__ API.

_lenint

Total length of data vector (including shared memory parts).

_has_solver_refbool

This is set to True only when a ref is defined on a solver.

__contains__(name)[source]

Check if the variable is found in this vector.

Parameters:
namestr

Promoted or relative variable name in the owning system’s namespace.

Returns:
bool

True or False.

__getitem__(name)[source]

Get the variable value.

Parameters:
namestr

Promoted or relative variable name in the owning system’s namespace.

Returns:
float or ndarray

variable value.

__init__(name, kind, system, root_vector=None, alloc_complex=False)[source]

Initialize all attributes.

__iter__()[source]

Return an iterator over variables involved in the current mat-vec product (relative names).

Returns:
listiterator

iterator over the variable names.

__setitem__(name, value)[source]

Set the variable value.

Parameters:
namestr

Promoted or relative variable name in the owning system’s namespace.

valuefloat or list or tuple or ndarray

variable value to set

add_scal_vec(val, vec)[source]

Perform in-place addition of a vector times a scalar.

Must be implemented by the subclass.

Parameters:
valint or float

Scalar.

vec<Vector>

This vector times val is added to self.

asarray(copy=False)[source]

Return a flat array representation of this vector.

If copy is True, return a copy. Otherwise, try to avoid it.

Parameters:
copybool

If True, return a copy of the array.

Returns:
ndarray

Array representation of this vector.

cite = ''
distributed = False
dot(vec)[source]

Compute the dot product of the current vec and the incoming vec.

Must be implemented by the subclass.

Parameters:
vec<Vector>

The incoming vector being dotted with self.

get_hash(alg=<built-in function openssl_sha1>)[source]

Return a hash string for the array contained in this Vector.

Parameters:
algfunction

Algorithm used to generate the hash. Default is hashlib.sha1.

Returns:
str

The hash string.

get_norm()[source]

Return the norm of this vector.

Must be implemented by the subclass.

Returns:
float

Norm of this vector.

iscomplex()[source]

Return True if this vector contains complex values.

This checks the type of the values, not whether they have a nonzero imaginary part.

Returns:
bool

True if this vector contains complex values.

items()[source]

Return (name, value) for variables contained in this vector.

Yields:
str

Relative name of each variable.

ndarray or float

Value of each variable.

keys()[source]

Return variable names of variables contained in this vector (relative names).

Returns:
listiterator (Python 3.x) or list (Python 2.x)

The variable names.

nvars()[source]

Return the number of variables in this Vector.

Returns:
int

Number of variables in this Vector.

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_val(val, idxs=slice(None, None, None))[source]

Set the data array of this vector to a scalar or array value, with optional indices.

Must be implemented by the subclass.

Parameters:
valfloat or ndarray

Scalar or array to set data array to.

idxsint or slice or tuple of ints and/or slices

The locations where the data array should be updated.

set_vals(vals)[source]

Set the data array of this vector using a value or iter of values, one for each variable.

The values must be in the same order as the variables appear in this Vector.

Parameters:
valsiter of ndarrays

Values for each variable contained in this vector, in the proper order.

set_var(name, val, idxs=slice(None, None, None), flat=False, var_name=None)[source]

Set the array view corresponding to the named variable, with optional indexing.

Parameters:
namestr

The name of the variable.

valfloat or ndarray

Scalar or array to set data array to.

idxsint or slice or tuple of ints and/or slices

The locations where the data array should be updated.

flatbool

If True, set into flattened variable.

var_namestr or None

If specified, the variable name to use when reporting errors. This is useful when setting an AutoIVC value that the user only knows by a connected input name.

set_vec(vec)[source]

Set the value of this vector to that of the incoming vector.

Must be implemented by the subclass.

Parameters:
vec<Vector>

The vector whose values self is set to.

values()[source]

Return values of variables contained in this vector.

Yields:
ndarray or float

Value of each variable.