User's Reference - Streamline

### Streamline

Category

Realization

Function

Computes streamlines to represent the movement of particles through static vector fields.

Syntax

    line = Streamline(data, start, time, head, curl, flag, stepscale);

Inputs

Name | Type | Default | Description
--- | --- | --- | ---
`data` | vector field | none | vector field
`start` | vector list or geometric field | center of the first series member | starting point(s)
`time` | scalar list | series start time(s) | starting time(s)
`head` | integer | final series frame number | series time-step at which the streamlines end
`curl` | vector field | no curl | vorticity of vector field(s)
`flag` | flag | input dependent | 0: curl not used 1: curl used to generate twist of streamline(s)
`stepscale` | value | 0.1 | step length as a fraction of the size of the connection element

Outputs

Name | Type | Description
--- | --- | ---
`line` | field or group | one or more streamlines

Functional Details

This module traces the path of a particle through a static vector field in discrete steps. The visual form of this trace is a streamline, which starts at a specified time and continues until the particle it represents exits from the field or reaches a region of zero velocity.

`data` | specifies a vector field. Vector fields are limited to n-D vectors defined in n space; for example, 2-D vectors on a 2-D sheet or 3-D vectors defined in a 3-D volume.
`start` | specifies a set of positions at which streamlines originate. It can be either a list of positions or a geometric field (e.g., the output of a Grid module or even an isosurface).
`time` | specifies a set of times at which streamlines begin to be traced. The units of time correspond to the units of the vector field. That is, a particle travelling at a unit velocity moves one unit of distance in one unit of time. Both `time` and `start` can contain single or multiple elements. If either parameter contains a single element, that element is associated with each element of the other list. If both parameters contain multiple elements, they must contain the same number of elements, which are then matched in pairs. You can use the time parameter to start different streamlines at different times. Note that for the static vector fields used by Streamline, a particle at a given location will trace the same streamline, regardless of what time it is started.
`head` | specifies an expiration time for streamlines that have not otherwise terminated. The streamline points are computed iteratively, and the spacing between the points depends on the element size of the connections and the stepscale. If this maximum is reached, a warning is produced and the streamline is terminated. The maximum number of streamline points is 25,000.
`curl` | causes Streamline to produce normals and binormals components that represent the vorticity of the vector field. DivCurl). In that case, the default value for `flag` is 1. The "normals" and "binormals" components of the resulting streamlines rotate according to the vorticity of the vector field. This information is either interpolated from the vector field passed in as the `curl` parameter or is computed internally.
`flag` | specifies whether or not the twist specified by `curl` is enabled. A setting of 0 (zero) disables the twist. However, if `curl` is not specified, the default value for `flag` is 0, and no twist is produced. In that case you have the option of setting `flag` to 1, which causes Streamline to compute the curl internally.
`stepscale` | specifies the accuracy of the interpolation. Streamline traces the path of a particle through the vector field in discrete steps. These steps are determined by interpolating a vector from the vector field at the current end of the streamline and appending a new segment that extends the streamline in the direction of the vector. The length of the new segment is determined by two factors. First, the length of the projection of the segment along the edges of the cells of the prior and subsequent vector fields in which the starting point of the segment is found does not exceed a proportion (specified by the `stepscale` parameter) of the length of the edge. Second, if grid is irregular, the segment is truncated at the boundary of the element in which it begins. This allows the segment length to be determined anew for the next element. Thus the `stepscale` parameter offers the user control over the accuracy of the streamline. If `stepscale` is a small value (perhaps in the range of 0.01 to 0.05), the resulting streamline contains a relatively large number of segments that closely trace small variations in the vector field. If `stepscale` is assigned a large number (0.5 to 1), the steps are larger and less accurate, but require less execution time. Note, however, that since the step is determined as a proportion of the size of the grid cell in which it is contained, the segments are small in areas in which the grid elements are small, and proportionally larger in areas in which the grid elements are large.

Streamlines trace particles through time. Associated with the streamline is a "time" component that indicates, for each position of the streamline, the time at which the particle reached that position. The initial value in this component, therefore, is equal to the starting time for that stream, which is by default the first series position, or settable by the user using the `time` parameter. The final value in the time component is equal to (1) the time at which the particle exits from the vector field or (2) the time specified by the `head` parameter.

The output streamlines also contain a "data" component that indicates the velocity of the data field at each position in the streamline.

Components

Creates new "positions," "connections," "data," "time," and "colors" components. If the flag argument is set, "normals" and "binormals" components are also created.

Example Visual Programs

    Interop.net
    InvalidData.net
    RubberTube.net
    Streamline.net
    ThunderStreamlines.net

See Also

DivCurl, Glyph, Ribbon, Streakline, Tube

[ OpenDX Home at IBM | OpenDX.org ]