integrate a velocity field producing streamlines or streamribbons
group DVstream {
Mesh+Node_Data+Iparam &in { /* input field */
xform+nonotify;
nnodes+req;
};
Grid+Xform+ Iparam &probe; /* where the streamlines originate */
int+Iparam order; /* order of integration */
int+Iparam forw_back; /* toggle for lines forward/backward */
int+Iparam nseg;
float+Iparam min_vel;
int+Iparam max_seg;
int+Iparam stream_comp;
int+Iparam ribbons;
int+notify rib_width;
int+notify rib_angle;
Mesh+Node_Data+Oparam out { /*output field */
&xform<weight=-1> => in.xform;
};
method+notify_val+notify_inst upd_stream = "stream";
} ;
DVstream generates streamlines or streamribbons based on a field of any mesh type that has at least one component that is a 1, 2, or 3 element vector.
You place a sample of points (the &probe) at a starting location in the field. Then, for every time step, DVstream advances each sample point through space based on the interpolated value of the vector field at its present position. The result is a set of streamlines or streamribbons showing the progress of massless particles through a vector field.
The input is a reference to a field with any type of mesh. Its Node_Data must contain at least one component that is a 1, 2, or 3 element velocity vector.
A reference to any mesh whose coordinates represent the sample points. To create this sampling mesh you could, for example, use the Plane, Line or Box objects in Geometries.[plane|slice|box] or the slice macro.
An integer. Sets the order of integration. Higher orders are more accurate, but execute more slowly.
An integer. If the value is not 0, streamlines are generated forward from the starting sample points. If the value is 0, they are generated backward from the starting sample points.
An integer. Sets how many integration steps will be used within one grid "cell" to compute the streamline path.
A float. When a streamline falls below this velocity, the integration process for that streamline stops. You use this to prevent wasted computation for streamlines barely moving, or even stationary (min_velocity =0).
An integer. Sets the total number of integration steps to take. When an individual streamline exceeds this value, integration for it stops.
An integer. Sets which component to base the streamlines upon. The selection must be a three element vector.
An integer. When this is not 0, DVstream will produce streamribbons rather than streamlines.
An integer. Scales the width of the ribbon. Ribbon width varies along its length according to the divergence of the flow. This value controls ribbon width at the beginning of the ribbon.
An integer. Controls the initial angle at which the ribbon is drawn. Reasonable values are from 0.0 to 360.0.
The output field is a new object. It contains an unstructured Mesh of cell type Polyline that represents streamlines. Its new Node_Data contains the selected element's velocity component. The output also contains a reference to the input field's xform.
The streamlines are calculated using the Runge-Kutte method of specified order with adaptive time steps.
Libraries.Main.Mappers.streamlines
Libraries.Main.Mappers.advector