API and implementation notes

The Basic Model Interface API defines a set of methods and attributes. These methods are implemented as detailed in the BMI specification

class BMI_pyDeltaRCM.bmidelta.BmiDelta

Basic Model Interface implementation for pyDeltaRCM.

__init__()

Create a BmiDelta model that is ready for initialization.

finalize()

Finalize model.

get_component_name()

Name of the component.

get_current_time()

Current time of model.

get_end_time()

End time of model.

get_grid_edge_count(grid: int) int

Get the number of edges in the grid.

Warning

Not implemented.

Could be computed from the rectilinear type?

Parameters

grid (int) – A grid identifier.

Returns

The total number of grid edges.

Return type

int

get_grid_edge_nodes(grid: int, edge_nodes: numpy.ndarray) numpy.ndarray

Get the edge-node connectivity.

Parameters
  • grid (int) – A grid identifier.

  • edge_nodes (ndarray of int, shape (2 x nnodes,)) – A numpy array to place the edge-node connectivity. For each edge, connectivity is given as node at edge tail, followed by node at edge head.

Returns

The input numpy array that holds the edge-node connectivity.

Return type

ndarray of int

get_grid_face_count(grid: int) int

Get the number of faces in the grid.

Warning

Not implemented.

Could be computed from the rectilinear type?

Parameters

grid (int) – A grid identifier.

Returns

The total number of grid faces.

Return type

int

get_grid_face_edges(grid: int, face_edges: numpy.ndarray) numpy.ndarray

Get the face-edge connectivity.

Parameters
  • grid (int) – A grid identifier.

  • face_edges (ndarray of int) – A numpy array to place the face-edge connectivity.

Returns

The input numpy array that holds the face-edge connectivity.

Return type

ndarray of int

get_grid_face_nodes(grid: int, face_nodes: numpy.ndarray) numpy.ndarray

Get the face-node connectivity.

Parameters
  • grid (int) – A grid identifier.

  • face_nodes (ndarray of int) – A numpy array to place the face-node connectivity. For each face, the nodes (listed in a counter-clockwise direction) that form the boundary of the face.

Returns

The input numpy array that holds the face-node connectivity.

Return type

ndarray of int

get_grid_node_count(grid: int) int

Get the number of nodes in the grid.

Note

Implemented as an alias to get_grid_size.

Parameters

grid (int) – A grid identifier.

Returns

The total number of grid nodes.

Return type

int

get_grid_nodes_per_face(grid: int, nodes_per_face: numpy.ndarray) numpy.ndarray

Get the number of nodes for each face.

Parameters
  • grid (int) – A grid identifier.

  • nodes_per_face (ndarray of int, shape (nfaces,)) – A numpy array to place the number of edges per face.

Returns

The input numpy array that holds the number of nodes per edge.

Return type

ndarray of int

get_grid_origin(grid_id)

Origin of uniform rectilinear grid.

get_grid_rank(grid_id)

Rank of grid.

Parameters

grid_id (int) – Identifier of a grid.

Returns

Rank of grid.

Return type

int

get_grid_shape(grid_id)

Number of rows and columns of uniform rectilinear grid.

get_grid_size(grid_id)

Size of grid.

Parameters

grid_id (int) – Identifier of a grid.

Returns

Size of grid.

Return type

int

get_grid_spacing(grid_id)

Spacing of rows and columns of uniform rectilinear grid.

get_grid_type(grid_id)

Type of grid.

get_grid_x(grid: int) numpy.ndarray

Get coordinates of grid nodes in the x direction.

Hint

Internally, the pyDeltaRCM model refers to the down-stream direction as x, which is the row-coordinate of the grid, and opposite the BMI specification.

Parameters
  • grid (int) – A grid identifier.

  • x (ndarray of float, shape (nrows,)) – A numpy array to hold the x-coordinates of the grid node columns.

Returns

The input numpy array that holds the grid’s column x-coordinates.

Return type

ndarray of float

get_grid_y(grid: int) numpy.ndarray

Get coordinates of grid nodes in the y direction.

Hint

Internally, the pyDeltaRCM model refers to the cross-stream direction as y, which is the column-coordinate of the grid, and opposite the BMI specification.

Parameters

grid (int) – A grid identifier.

Returns

The input numpy array that holds the grid’s row y-coordinates.

Return type

ndarray of float

get_grid_z(grid: int) numpy.ndarray

Get coordinates of grid nodes in the z direction.

Parameters
  • grid (int) – A grid identifier.

  • z (ndarray of float, shape (nlayers,)) – A numpy array to hold the z-coordinates of the grid nodes layers.

Returns

The input numpy array that holds the grid’s layer z-coordinates.

Return type

ndarray of float

get_input_item_count() int

Count of a model’s input variables.

Returns

The number of input variables.

Return type

int

get_input_var_names()

Get names of input variables.

get_output_item_count() int

Count of a model’s output variables.

Returns

The number of output variables.

Return type

int

get_output_var_names()

Get names of output variables.

get_start_time()

Start time of model.

get_time_step()

Time step of model.

get_time_units() str

Time units of the model.

Note

CSDMS uses the UDUNITS standard from Unidata.

Returns

The model time unit; e.g., days or s.

Return type

str

get_value(var_name)

Copy of values.

Parameters

var_name (str) – Name of variable as CSDMS Standard Name.

Returns

Copy of values.

Return type

array_like

get_value_at_indices(var_name, indices)

Get values at particular indices.

Parameters
  • var_name (str) – Name of variable as CSDMS Standard Name.

  • indices (array_like) – Array of indices.

Returns

Values at indices.

Return type

array_like

get_value_ptr(var_name)

Reference to values.

Note

In implementation, we use self._values of the BMI wrapper as a dictionary storing the DeltaModel attribute name, rather than the actual pointer directly to the attribute. This is necessary so that numeric scalar attributes of the DeltaModel (i.e., boundary conditions) can be modified by the BMI set_value method.

Stille, the result of what is returned by this method is identical to the standard BMI.

Parameters

var_name (str) – Name of variable as CSDMS Standard Name.

Returns

Value array.

Return type

array_like

get_value_ref(var_name)

Reference to values, legacy BMI 1.0 api.

Parameters

var_name (str) – Name of variable as CSDMS Standard Name.

Returns

Value array.

Return type

array_like

get_var_grid(var_name)

Grid id for a variable.

Parameters

var_name (str) – Name of variable as CSDMS Standard Name.

Returns

Grid id.

Return type

int

get_var_itemsize(name: str) int

Get the size (in bytes) of one element of a variable.

Parameters

name (str) – An input or output variable name, a CSDMS Standard Name.

Returns

Item size in bytes.

Return type

int

get_var_location(name: str) str

Get the grid element type that the a given variable is defined on.

Note

CSDMS uses the ugrid conventions to define unstructured grids.

Parameters

name (str) – An input or output variable name, a CSDMS Standard Name.

Returns

The grid location on which the variable is defined. Must be one of “node”, “edge”, or “face”.

Return type

str

get_var_nbytes(var_name)

Get units of variable.

Parameters

var_name (str) – Name of variable as CSDMS Standard Name.

Returns

Size of data array in bytes.

Return type

int

get_var_type(var_name)

Data type of variable.

Parameters

var_name (str) – Name of variable as CSDMS Standard Name.

Returns

Data type.

Return type

str

get_var_units(var_name)

Get units of variable.

Parameters

var_name (str) – Name of variable as CSDMS Standard Name.

Returns

Variable units.

Return type

str

initialize(filename=None)

Initialize the model.

Parameters

filename (str, optional) – Path to name of input file. Use all pyDeltaRCM defaults, if not provided.

set_value(var_name, src)

Set model values.

Note

In implementation, we use self._values of the BMI wrapper as a dictionary storing the DeltaModel attribute name, rather than the actual pointer directly to the attribute. This is necessary so that numeric scalar attributes of the DeltaModel (i.e., boundary conditions) can be modified by the BMI set_value method.

Parameters
  • var_name (str) – Name of variable as CSDMS Standard Name.

  • src (array_like) – Array of new values.

set_value_at_indices(var_name, src, indices)

Set model values at particular indices.

Parameters
  • var_name (str) – Name of variable as CSDMS Standard Name.

  • src (array_like) – Array of new values.

  • indices (array_like) – Array of indices.

update()

Advance model by one time step.

update_frac(time_frac)

Update model by a fraction of a time step.

Parameters

time_frac (float) – Fraction of a time step.

update_until(then)

Update model until a particular time.

Parameters

then (float) – Time to run model until.