Vectors Module

Vectors, handles, and inner products.

We recommend using these functions and classes when possible. Otherwise, you can write your own vector class and/or vector handle, see documentation Interfacing with your data.

class modred.vectors.InnerProductTrapz(*grids)[source]

Callable that computes inner product of n-dimensional arrays defined on a spatial grid, using the trapezoidal rule.

Args:
*grids: 1D arrays of grid points, in the order of the spatial dimensions.

Usage:

nx = 10
ny = 11
x_grid = 1 - np.cos(np.linspace(0, np.pi, nx))
y_grid = np.linspace(0, 1.0, ny)**2
my_trapz = InnerProductTrapz(x_grid, y_grid)

v1 = np.random.random((nx,ny))
v2 = np.random.random((nx,ny))
IP_v1_v2 = my_trapz(v1, v2)
inner_product(vec1, vec2)[source]

Computes inner product.

class modred.vectors.VecHandle(base_vec_handle=None, scale=None)[source]

Recommended base class for vector handles (not required).

get()[source]

Get a vector, using the private (user-overwritten) _get function. If available, the base vector will be subtracted from the specified vector. Then, if a scale factor is specified, the base-subtracted vector will be scaled. The scaled, base-subtracted vector is then returned.

put(vec)[source]

Put a vector to file or memory using the private (user-overwritten) _put function.

class modred.vectors.VecHandleArrayText(vec_path, base_vec_handle=None, scale=None, is_complex=False)[source]

Gets and puts array vector objects from/in text files.

class modred.vectors.VecHandleInMemory(vec=None, base_vec_handle=None, scale=None)[source]

Gets and puts vectors from/in memory.

class modred.vectors.VecHandlePickle(vec_path, base_vec_handle=None, scale=None)[source]

Gets and puts any vector object from/in pickle files.

class modred.vectors.Vector[source]

Recommended base class for vector objects (not required).

modred.vectors.inner_product_array_uniform(vec1, vec2)[source]

Takes inner product of numpy arrays without weighting. The first element is conjugated, i.e., IP = np.dot(vec1.conj().T, v2)