Next Previous Contents

8. Developer Data Probe Modules

When VBM is compiled with the VBM_DEVELOPER option various other special purpose Data Probe modules are created. Eventually there will be documentation for them here, but currently they are strictly "Use at your own risk"! One thing that they might be useful for to a general audience is as an example of what is possible. They do not have as extensive documentation as the normal modules, but the following sections give brief descriptions of what they do.

8.1 Argument List

This module lists the arguments that are sent to the Data Probe. The main purpose of this module is debugging.

8.2 Pointwise Tags

This modules displays all of the pointwise tags that are associated with the current point. The main purpose of this module is debugging.

8.3 Data Blocks

This modules displays all of the data blocks that are associated with the current point. The main purpose of this module is debugging.

8.4 Rod problem (With Ribbon)


The DataViewer based Data Probe for the rod problem..

The Rod problem module is an example of a data probe module and exemplifies many of the important details of the interface discussed in Section and its implementation. This module has been used extensively in our work for the visualization of a continuum rod model used in the study of DNA. An example of the visualization provided by this module is shown in Figure.

The reason that this module is considered a Developer Module, and is not part of the standard distribution us that is calls Fortran subroutines from C++. While this is a standard thing to do, the exact compilation flags needed to make it work differ from one machine to the next. Hence, VBM only attempts to compile this module if the VBM_DEVELOPER option is selected.

This module has been implemented in DataViewer (see http://lcvmwww.epfl.ch/DV for more detail). Accordingly, it automatically inherits all of the advantages of this library. In this case, the module provides a visualization of a single, full solution to the problem of interest. Given a bifurcation diagram object and a pointer object, this module reconstructs the full solution from a small subset of representatives, using an IVP solver.. Basically, it assumes that a subset of the representatives chosen for the bifurcation diagram are actually the values of the continuous system at the point s=0. For this module the original problem is solved as a boundary value problem. Once the boundary value problem has been solved, and the solution recorded at one endpoint, the rest of the solution may be reconstructed trivially using an initial value problem solver, because here the equations are not too stiff. One important implication of this method is that the visualization domain and computation domain can be fully decoupled. The discretization at which the solution of the boundary value problem is performed is independent of the discretization used in the initial value problem solver and the visualization.

We also note that the visualization this module provides is quite specialized. As shown in Figure the solution is represented as a tube and a ribbon. This visualization metaphor is chosen because of the specific structure of these equations, which represent the statics of an elastic rod. The two basic properties of such an entity are a centerline and a set of directors. To capture this information in a single visualization we represent the centerline by a tube and the directors by a ribbon. In some sense, we display a representation of the solution as it would appear if it were physically realizable. We are, of course, not bound by physical realizability, and may add whatever other cues we wish to the visualization, such as the ribbon. Other information may be encoded, as well, for example utilizing color of the tube and ribbon. Other cues are also possible, for example the radius of the tube, or the width of the ribbon.

The visualization in this module may be manipulated by using both the mouse and the keyboard. Note, this information is repeated in several sections since it is the same for all DataViewer based modules. We include it to make each section as self-contained as possible.

Keyboard bindings

Left and Right keys

Perform rotations about the vertical axis.

Up and Down keys

Perform rotations about the horizontal axis.

Page Up and Page Down keys

Perform rotations about the axis "coming out of the screen".

Control + Left and Right keys

Translate the object horizontally.

Control + Up and Down keys

Translate the object vertically.

Control + Page Up and Page Down keys

Zoom the object.

Mouse bindings

Hold down the Middle Mouse Button

Performs rotations of the solution based upon the virtual trackball paradigm.

Release the Middle Mouse Button

The solution continues to rotate in the same direction as it was rotating when the button was release.

Click the Middle Mouse Button

The solution stops rotating.

Hold down the Right Mouse Button

Translates the solution based upon the movements of the mouse.

Hold down the Middle Mouse Button with Shift Key held down

As the mouse is moved up the solution is moved closer to the eye-point, and as the mouse is moved down the solution is moved further away from the eye-point.

8.5 AUTO solution reconstruction (IVP) with rotation surface

This is a very special purpose module, which functions very similarly to the module in Section, except that, instead of plotting the solution to the ODE, it plots a surface of revolution based on the solution.

This is also a DataViewer based module.

The goal of this module is to draw rotation surfaces from the solution reconstructed with the IVP solver. The assumption of this module is that the solution is planar, and situated in the XZ plane. After reconstructing the solution, the module will compute a surface by rotation around the Z axis.

Thus, the coordinate settings in the Coord and Scale page are used in the following way: the y coordinate is ignored, and the x and z coordinates are used to construct the surface by rotation around the Z axis.

The setting panel of this module behaves like the panel of the AUTO Solution Reconstruction (IVP) dataprobe, except for one specific page, named Surface.

Surface

This page, shown in Figure, provides a set of widgets used to define the way the rotation surface is constructed.


The Surface page.

The first typein on this page, labeled "Angle", defines the rotation angle for the surface and is expressed in degrees. Thus, the rotation surface is constructed for an angle going from 0 to the specified angle, which is 180 by default.

The next 3 typeins define a translation to be applied to the solution before constructing the rotation surface. As the solution is assumed to be in the XZ plane, the Y translation widget has no effect. The X translation will affect the shape of the rotation surface, while the Z translation will only move it.

8.6 General rod problems (multiple ribbons)

This module is specialized on visualizing rod problems. It is derived from the General AUTO Dataprobe and inherits most of its features from it.

For this reason, the documentation on this module contains only the parts that are specific to it. For anything else, please refer to Section.

The Data control panel

The only page in the Data control panel that is specific to rods is the Extra Data page.

Extra Data

This page is shown in Figure and contains all the operations needed to add new columns to the solution.


The Extra Data page for the General rod problems module.

Importing modules

The first operation that can be performed is importing a module. As the new columns are computed, they could need to call a function defined in a Python module outside VBM.

To import a module, you must type its name in the typein at the top of the page, labeled "Module name". Then you must press the "Import" button. Then any function defined inside it can be called by its name.

For Python programmers, the described actions have the following effect:

from 'module_name' import *

Call functions

The next operation that can be performed on this page is adding a new column by calling a function. For this, you must do the following:

Typein functions

The next action on this page is adding a new column as a typein expression. The main difference between this operation and the previous one is that for the call functions, the new column is computed in one function call. In the present case, the new column is computed point by point, and any function used inside its expression is called for each point of the solution. Thus, this type of computation can take longer. it is recommended to use it only for simple expressions.

To add a new column by a typein expression, you must do the following:

The last part of this page is specific to rod problems. It allows the user to add columns to the data corresponding to specific rod properties.

More specifically, this module supposes that 4 of the columns composing the solution are the four quaternions corresponding to a rotation matrix defined in each point of the solution. The rotation matrix defines a frame composed by two vectors perpendicular to the curve (D1 and D2) and a third one that is tangent to the curve (D3). For numerical reasons, it is easier to perform continuations using the quaternions, considering that the vectorial frame can be easily computed from them afterwards.

The 4 menus on this page labeled as q1,q2,q3,q4 allow the user to specify which columns of the data represent the 4 quaternions.

Based on this information, the module is able to compute some vectors with the following options:

After choosing the appropriate options for the vector to be computed, the user must specify the names of the 3 composants of the vector in the typeins labeled as Dx name, Dy name and Dz name. Pressing the Add directions button will communicate the information about the vector to the module, but the buttons Update Data or Draw must be pressed before the new columns are added to the solution.

Note. Adding the D1 vector in the natural or real frame sets the natural or real ribbon to the coordinates of this vector (see the next section for details).

The Visual control panel

The only page in the Visual control panel specific to rods is the Ribbons page.

Ribbons

This page, shown in Figure, can be used to add one or several ribbons to the solution.


The Ribbons page for the General rod problems module.

This module defines two macros for adding a ribbon to the centerline: the natural ribbon and the real ribbon. These ribbons, except for their color, are usually set by computing the D1 vector with the natural or real option in the Extra Data page from the Data control panel (see the previous subsection). The user can also use custom ribbons to visualize the solution.

At the top of the page there are 4 toggle buttons that can be used to

The line below the toggle buttons contains general properties that apply to all the ribbons, natural, real or custom.

The first one, linked to the left buttons on this line, allows the user to choose between a mirrored ribbon (symmetrical towards the centerline of the solution) and a one-sided ribbon. The default option is mirrored.

The second one, linked to the typein labeled "Scale" on the center on the line, scales all the ribbons with a real value.

The last one, linked to the top right buttons on this line, allows the user to choose between a ribbon drawn as a surface (plain) and as a vector field. By default the ribbons are drawn as surfaces.

The next part of the page concerns mainly the custom ribbons.

The four menus at the center of the page define each of the ribbons attached to the solution. The first three menus set the columns of the data used for the x, y, and z coordinates of the ribbon. The values in these columns are used relatively to the centerline. Thus, in each point of the solution, the ribbon will be defined by a vector with the origin on the centerline and with offset defined by the 3 coordinates.

A fourth coordinate sets the color the ribbon in relation with a column of the data. The ribbon also uses the colormap defined on the View Options page (see below).

These four coordinates are specific to each ribbon, and their values concern the current ribbon (see Ribbon selection below). By default they all have the 0 value, which usually designs the variable "s".

If the natural or the real ribbon is selected, then the four menus display the settings for these particular ribbons. If any of the four coordinates of the ribbon are changed while the natural or the real ribbon are chosen, then the macro attached to these ribbons is modified according to the new choice. This feature is especially designed to choose the color of these ribbons, for which there is no automatic way of setting it, but can also be used in a general way to program the two macros.

The bottom line on this page allow the user to work with several ribbons attached to the same solution. These buttons have no effect under the natural or the real choice of ribbon.

The first button on this line, labeled "Add ribbon", adds a new ribbon to the solution, as its name states its. The particularity of this operation is that if the ribbons are off, they will be turned on, without adding a new ribbon. A consequent message will also be printed on the standard output.

The next widget on this line, labeled "Ribbon selection", allow to choose the current ribbon. This selection will have the effect of setting all the values on the middle line as being the ones of the selected ribbon. It also designates the ribbon number to be deleted by the "Delete ribbon" operation. When adding a new ribbon, this value will automatically be updated to the last ribbon number, so the new ribbon can be set right away.

The next button, labeled "Delete ribbon", will delete the current ribbon. If the ribbon is the last added, then the current ribbon becomes the previous one. Otherwise, the current ribbon conserves its number, but of course, its identity is different, because the remaining ribbons are shifted. The coordinates of the ribbon are also updated according to the current ribbon selection. The particularity of this button is that if there is only one ribbon left, it will not be deleted, but turned off instead. A consequent message is also printed on the standard output.

Note. Any of the described actions on this page will not have any visual effect until the "Draw" button is pressed. The macros defining the natural and real ribbon are also recorded when the visualization options are saved in a file, and can automatically be retrieved afterwards.


Next Previous Contents