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>

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

Pointer to the owning system.

_iprocint

Global processor index.

_lengthint

Length of flattened vector.

_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.

_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
boolean

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.

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.

__iter__()[source]

Yield 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_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.

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.

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_var(name, val, idxs=slice(None, None, None), flat=False)[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.

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.

Returns
list

the variable values.