Table of Contents
List of Figures
List of Tables
$INSTALL_DIR/share/vesuite/examples/simple)/home/vr/Applications/TSVEG/Test_Data/EngineTest)/home/vr/Applications/TSVEG/Test_Data)VE-Suite is an open source virtual engineering software toolkit. The toolkit enables the user to simultaneously interact with engineering analyses and graphical models to create a virtual decision-making environment.
In nearly all aspects of the engineering process-design, manufacturing, and maintenance-the tools employed at each phase rely on virtual models (e.g., software tools) to reduce cost and shorten development time. This results in a wider variety of software tools being used across a wide range of vendors and engineering firms. In this environment, engineers are required to manually move information from one software package to another. Thus, the process does not support real-time, collaborative design in which the engineer establishes the dynamic thinking process needed to obtain an intuitive feel for the performance of a product. It also does not permit the real-time exploration of questions raised by other engineers, designers, or managers. This working arrangement significantly lessens the number of alternatives that can be investigated, limits the essential creative design process, and discourages "what if" questions that allow breakthroughs in design. The result of this situation is that the engineer ends up shifting his or her focus from engineering to manual integration of information. To allow engineers to focus on engineering, a new workflow and paradigm is needed. This new workflow is described within a new enabling technology called virtual engineering and is implemented via VE-Suite. Using VE-Suite to implement virtual engineering reduces the design cycle time to allow new technologies to reach production and operation more quickly than previously possible.
Engineering tools and information need to be integrated throughout each engineering project. That is, information from the design phase needs to be available to design and manufacturing contractors without manual reentry or other hassles. Currently, for a variety of reasons (e.g., budgetary constraints, inter-company politics), no commercial software package has the capability to integrate information from the complete product design team from economists and numerical modelers to design and manufacturing firms. VE-Suite addresses this constraint by creating a tool with open interfaces that allows other commercial and open-source packages to exchange data in a comprehensive design environment. In this environment, all the data and tools necessary to make a particular engineering decision are available to the stakeholder trying to move the engineering process forward.
VE-Suite is intended to be used in the engineering process, whether for business model investigation or training. VE-Suite is used in a diverse set of engineering applications to allow engineers and other project stakeholders to gain insight into complex engineering problems.
To start using VE-Suite, skip to Chapter 3, Creating Content in VE-Suite.
Table of Contents
Table of Contents
Support is provided at the following locations:
VE-Suite Bugzilla, VE-Suite's interface for bug tracking. Users and developers can view and submit bugs.
Installation of VE-Suite is fairly straightforward. Visit the Downloads section and locate your operating system.
Windows: Two installers are
provided for Windows. Each installer will guide you through the process of
selecting various options. One installer,
vesuite#.#.#_####.exe, contains the core VE-Suite binaries
and .dll files. The dependencies installer,
vesuite_deps#.#.#.exe, contains the binaries and
.dll files of VE-Suite's dependencies, arranged to include
bin, lib, and share
subdirectories.
Unix: A tar.gz file of
the current release of VE-Suite is provided. You can extract the
VE-Suite.#.#.# directory from it. Instead of one central
dependencies directory, we provide the dependencies' rpm files. Be sure to
install the necessary dependencies before running VE-Suite.
Macintosh: One installer is provided for Macintosh OS: VE-Suite Installer 20xx-xx-xx.pkg. It contains the core VE-Sute binaries and .dll files as well as the binaries and .dll files of VE-Suite's dependencies.
Installing VE-Suite and its dependencies follows the same procedures as other installations. The user chooses which components to install, their locations, their Start Menu folder, and whether to add an icon to the desktop.
One important consideration is which components to install. In large setups, certain computers will run the NameServer while others will handle VE-Conductor and VE-Xplorer. To run VE-Suite on a single desktop, leave all of the checkboxes checked to install everything.
Go through the same process for VE-Suite's dependencies.
On Unix, the installers are compressed tar.gz files.
Open them using these commands:
Using GNU tar: gtar xvzf
vesuite_#.#.#_RHEL_4.tar.gz
Using gzip: gunzip < vesuite_#.#.#_RHEL_4.tar.gz | tar
xvf –
NOTE: These examples use
vesuite_#.#.# as a general placeholder for any version of
VE-Suite. Be sure to change the version number to the specific version you
are installing.
One installer is provided for Macintosh OS. Just double-click the install file to run it and follow the directions.
In previous versions, VE-Suite's runtime environment was set through text scripts. Now it uses VE-Launcher to set up the environment. Most of it is automated, but you should be aware of two important variables it sets: VE-Suite's directory and VE-Suite's dependencies directory.
VE-Launcher automatically determines VE-Suite's directory from the current working directory. Moving VE-Launcher out of VE-Suite's directory or starting it from a different directory will pass the wrong value to VE-Suite, causing errors.
On Windows and UNIX/Linux, the dependencies directory needs to be
set manually. The first time you start VE-Launcher, you will be asked to
find the dependencies directory. On Windows, the dependencies directory is
VE_Suite.#.#.#_Dependencies.
On UNIX/Linux, multiple dependencies can be chosen. The only one that needs to be specifically selected is VR Juggler's directory.
If you are upgrading from an earlier version of VE-Suite, the dependencies' directories can be changed by selecting the dependency and clicking the Delete button, or clicking the Add button and selecting a new directory.
On Macintosh OS, the dependencies directory does not need to be manually set. The first time you start VE-Launcher, it is already set.
VE-Suite comes with a vesuiteConfig.sh script to set up
menus, icons, and filetypes for VE-Suite on Linux desktop systems. The
script works for Gnome 2.8+ and KDE.
To run it, go to its directory and enter
./vesuiteConfig.sh, followed by the arguments. The script
accepts these arguments:
--gnome or --kde: Sets Gnome or KDE as
a primary desktop. If you do not provide either argument, Gnome will
be chosen as the default primary desktop.
--both: Installs on both Gnome and KDE.
--gnome or --kde still needs to be provided
to set the primary desktop, because on most dual-desktop systems, one
desktop inherits some preferences from the other.
--user or --global: Sets the
installations to either user-only or all-users. If you do not provide
either argument, all-users will be chosen if you have root access.
Otherwise, only the current user (user-only) is chosen.
--uninstall: Uninstalls the setup defined by the
other arguments on the command line. For example, --gnome
--global --uninstall would uninstall the setup created by
providing --gnome --global.
Table of Contents
VE-Suite contains three programs that users can run:
Name Service, which allows users to connect to the computational engine (VE-CE)
VE-Conductor, which provides the controls
VE-Xplorer, which displays the scene
All three can be launched from VE-Launcher in a synchronized manner to make running VE-Suite easier for the user.
VE-Launcher is the gateway to VE-Suite. To open VE-Launcher, Windows
users can double-click on the VE-Suite desktop icon or on
velauncher.exe in the VE-Suite/bin directory.
UNIX/Linux users should navigate by terminal into VE-Suite’s
/bin directory and enter python
velauncher.py.
If this is the first time VE-Launcher has been run after installation, you will be asked for the dependencies directory (see Chapter 1.5, Setting the Runtime Environment) before you are shown the main window.
VE-Launcher's more advanced commands are discussed in Chapter 12, Launcher. For now, make sure Desktop Mode is selected and click the Launch button. VE-Launcher will launch the Name Service, VE-Conductor, and VE-Xplorer in Desktop Mode.
For more information about VE-Launcher, read Chapter 12.
Table of Contents
VE-Suite loads objects through plugins. This section describes how to load a geometry file through a plugin. Other data files may be loaded in the same manner.
Plugins are set up through the Available Objects window. Click on the New Document button to make sure the design space is clear.
To create a new plugin, double-click on the DefaultPlugin directory, which is in the Available Plugins directory in the VE-Conductor Network window.
Right-click on the gray DefaultPlugin box that appears in the pane on the right side of the window to access the plugin's menu, and select the Geometry Config option.
A new window, the CADTree Manager, will open. This holds the objects that are inserted into the plugin. To select a geometry file, right-click on the Model_Geometry icon and select Add Node..., then Load CAD file...
In the dialog box that opens, choose the appropriate file type, then
select the file (e.g., Surface0.75.stl) and click the Open
button. Name the object you loaded, then click the OK button to insert it
into the plugin. Click Close on the CADTree Manager.
To load the information for the plugin's node into the rest of VE-Suite, click on the Connection menu and select Submit Job. The starting logo in Xplorer should be replaced by the objects in the plugins you submitted.
If the object is not initially visible in the Xplorer window, it may be outside the viewing region. Hold down the right mouse button and drag up in the Xplorer window to pull back the camera. Continue doing so until the scene is visible in the Xplorer window.
In addition to allowing users to load multiple geometry objects, VE-Suite also allows objects to be transformed, shaded, and textured.
To load multiple geometry objects in VE-Suite, continue adding CAD file nodes in the same way that you loaded a single CAD file.
If you want to load multiple instances of the same object, its CAD file can be loaded multiple times. However, that wastes memory. A better way to load multiple instances of the same object is to load the object into the scene one time, then clone the other instances from it to save memory. To clone an object, right-click on it and select Clone Node…
New assemblies can also be created for grouping geometry objects. Right-click the appropriate assembly, then select Add Node..., then Create New Assembly...
To quickly populate an assembly, the entire geometry object tree
can be loaded from another project. First, select the appropriate
geometry tree in the CADTree Manger, then click the Save As... button to
save it as a .veg file.
Next, open the geometry tree where the first geometry tree is to be moved, right-click the assembly where it is to be moved, then select Add Node, then Load VEG file.
For more information about tranlating CAD data into a format that VE-Suite can read, see Chapter 26, Using Okino's Polytrans Software.
Geometric objects can be moved, rotated, and scaled in the scene by using the Transformation dialog. To open the Transformation dialog, open the CADTree Manager, right-click on the object to be transformed, and select Properties. This will open the CAD Properties window. The Transformation dialog is the first tab in the CAD Properties window.
When you edit the Transform properties, the scene is updated in real time. Once the object's size and placement are satisfactory, click OK.
An assembly's transform properties can also be edited, but keep in mind that an assembly’s transformation also affects its members. See the Chapter 3.2.1, Loading Objects and Assemblies, for more information on assemblies.
You can toggle the visibility of geometric objects on and off. To do so, right-click the object in the CADTree Manager and select Toggle Node, then On or Off.
You can apply custom materials and shaders to geometric objects. Right-click the object and select Properties. When the CAD Properties window opens, select the Attributes tab. Choose Materials or Shaders, then click Add....
If you choose Materials, you will be asked to name the material. Once it is in the list, you can apply it to the object by left-clicking it. To change a material's properties, right-click its name. A menu will appear with options to change its lighting, shininess, opacity, and how the lighting and material are applied to the object.
If you choose Shaders, you will be asked to load a shader .
Example shaders can be found in the
VE-Suite_x.x.x\share\vesuite\shaders directory. You can
apply a shader by clicking on its name, the clicking the Open
button.
A material and a shader cannot both be added to an object at the same time. To remove a material or shader from an object, click Restore Defaults. To remove a material or shader from the Available Attributes list, select its name and click the Remove... button.
The geometry's color is determined by its Material attribute. To change the Material attribute, open the geometry's Properties, go to the Attributes tab, and right-click the Material attribute to be changed.
In a Windows color dialog box, color can be chosen from the Basic colors palette, or the color map and luminosity slider can help you create custom colors. Custom colors do not need to be added to the Custom colors palette. They will be forgotten once the dialog is closed.
When creating a custom color, make sure to check the luminosity slider as well as the Color/Solid preview box next to the Hue/Sat/Lum values. The color will appear as black or white if the luminosity slider is set too high or too low.
Click OK to set the new color.
In a non-Windows color dialog box, a color can be chosen from the Palette, or the color ring and triangle can be used to create a custom color. The bar below the color ring shows the current color on the left and the new color on the right.
To make a custom color, choose its hue by clicking in the color ring, then choose its saturation and value by clicking in the color triangle. Click OK to set the new color.
Assemblies group geometric objects together so they can all be modified at once. An assembly's properties are passed to its members and can change its members in the following ways:
Transformation: Member translations are relative to their assembly's axes, not the world's axes. Member scalings are relative to their assembly's scalings (e.g., if you double the scale of a member whose assembly is already double-scaled, the member will be scaled to four times the original size). Assemblies rotate around the assembly's origin point, not members' origin points.
Materials and Shaders: Materials and shaders applied to assemblies are applied to its members. If a member is assigned a material or shader as well, the member's material or shader overrides its assembly's material or shader.
Toggle node: Toggling an assembly Off hides all of its members. Toggling an assembly On shows any members that are toggled On. If a member is toggled Off, togging its assembly On will not reveal that member.
There are two ways to manipulate VE-Suite's view using just the mouse: dragging in the Xplorer window itself or using the Navigation Pane. A RemotePoint RF wand can also be used to navigate VE-Suite.
A three-button mouse will enable a user to do every translation and rotation within the Xplorer window itself.
To rotate the scene, drag along the screen while holding the left button. To rotate along the X- and Z-axes, drag in the center of the screen. To rotate along the Y-axis, drag along the border of the screen.
The right mouse button handles Y-axis translations. Hold the right button and drag the mouse up or down to push the scene away or pull it closer.
The mouse wheel button handles the other translations. Hold it down to drag the scene left, right, up, or down across the screen.
NOTE: Returning to the original orientation after rotating the scene may be difficult. This is because the mouse controls rotate around an arbitrary axis that allows rotation in all three dimensions, but it can be difficult to return to a previous orientation. To return to a standard orientation, select the View submenu under the VE-Xplorer menu, then click on either Reset or Frame All.
To open the Navigation Pane, select it from the VE-Xplorer menu.
Experiment with the movement buttons (the ones with arrows on them) to see how they change the scene. Note that they move the camera, not the object. Clicking the X-axis button, for example, will move the camera left, making the object shift right.
Most of the other controls modify how the movement buttons act:
The Step Size sliders control the speed of translations and rotations. The farther to the right they are, the faster translations and rotations occur.
The Rotate About Users Head checkbox controls how the camera reacts to Yaw Rotation commands. If it is checked, the camera rotates in place. If it is not, the camera rotates around the environment center, like roll and pitch rotations.
The Rest Nav Position button resets the camera to its initial position.
The Lower Limit checkbox sets whether movement in the z-direction can be negative.
The Store Start Position button allows an initial position to be stored for the model.
With the proper Juggler configuration, wands can be used to navigate VE-Suite. Once the wand is set up, pressing the Nav button and holding the wand moves you in that direction. Holding down the Left Shoulder button and pointing to the left will rotate the camera to its left.
A keyboard/mouse navigation scheme can also be used to navigate in VE-Suite.
Trackball Mode:
Table 3.3. Keyboard Commands
| R | Reset the center point and camera transform |
| F | Frame all geometry within the current viewing frustum |
| A | not currently used |
| S | not currently used |
| W | not currently used |
| D | not currently used |
| C | not currently used |
| Space Bar | not currently used |
| K | SkyCam() function |
| Up Arrow | Positive zoom in the yz-axes 45 degrees |
| Down Arrow | Negative zoom in the yz-axes 45 degrees |
| Left Arrow | Negative pan in the x-axis |
| Right Arrow | Positive pan in the x-axis |
Table 3.4. Mouse Commands
| Left mouse button - mod:none | Rotate about the xz-axes |
| Left mouse button - mod:none; on edges of window | Twist about the y-axis |
| Middle mouse button - Scroll Up | not currently used |
| Middle mouse button | Pan in the xz-axes |
| Middle mouse button - Scroll Down | not currently used |
| Right mouse button | Zoom in/out along the y-axis |
Character Mode (1st- and 3rd-person views):
Table 3.5. Keyboard Commands
| A | Strafe left |
| S | Walk/Run backward |
| W | Walk/Run forward |
| D | Strafe right |
| C | Fly down (not implemented) |
| Space Bar | Jump/Fly up (not implemented) |
Table 3.6. Mouse Commands
| Left mouse button | Rotate the camera about the xz-axes |
| Left mouse button - mod:shift | Physics picking using Bullet p2p constraint |
| Middle mouse button - Scroll Up | Zoom in to the character |
| Middle mouse button | not currently used |
| Middle mouse button - Scroll Down | Zoom out from the character |
| Right mouse button | Rotate the camera and the character about the xz-axes |
To store multiple viewpoints and switch between them, use the Viewpoints Pane under the VE-Xplorer menu.
When the Viewpoints Pane starts, no viewpoints are loaded. As the user adds them to the pane, they appear in the Move to a Viewpoint dropdown menu, which can be used to select the viewpoint the user wants to switch to.
To add a viewpoint, position the camera the way you want it in the viewpoint, then click the Add Location button. The viewpoint will be added to the dropdown menu.
Viewpoints can be deleted by clicking the Delete Location(s) button, selecting the appropriate viewpoint from the window that opens, and clicking OK.
Once a viewpoint is added, the
stored_viewpts_flythroughs.vel file in the working directory
is updated. It is automatically updated when a viewpoint is added or
deleted. Saved viewpoints can be restored later by clicking the Load
button.
To move to a viewpoint, select it from the dropdown menu in the Flythrough Control section of the Viewpoints Pane. The camera will fly to that viewpoint at the speed set in the speed scroller.
Viewpoints can also be cycled through a flythrough. Click on the Start button below Automate Flythrough to begin a flythrough between each viewpoint in successive order. The flythrough will start at the first viewpoint, then hit each successive viewpoint, going at the speed specified by the speed scroller. When it reaches the last viewpoint, it will go back to the first one and repeat the flythrough. To stop the flythrough at any time, click the Stop button.
A frames-per-second (FPS) counter and a coordinate compass can be displayed in the VE-Xplorer window.
To display the FPS counter, go to the VE-Xplorer menu and select Display, then Frame Rate. VE-Xplorer will display the FPS in the lower right corner of its window.
To display the coordinate compass, go to the VE-Xplorer menu and select Display, then Coord System. VE-Xplorer will display the coordinate compass in the upper left corner of its window.
Table of Contents
VE-Suite's physics functionality makes representations of interactions in VE-Suite more realistic.
To use VE-Suite's physics functionality, start VE-Suite as described in Chapter 3, Creating Content in VE-Suite. In VE-Conductor, go to the File menu and click Open ...
Navigate to the directory where your file is located and, in Files
of Type, select *.ves. Select the appropriate file (to
demonstrate the physics functionality, we use
simple_physics_boxes.ves, which is located in the
share/vesuite/examples/simple directory) and click
Open.
The visualization will open in the VE-Xplorer window. Use the Frame All and other keyboard and mouse commands to change the view (see Chapter 3.3 for navigation instructions).
For each new file that is loaded in VE-Suite, the physics must be enabled. To do this, right-click on the plugin and click on Enable Physics.
The physics functionality must also be turned on in VE-Conductor. To do this, click on the Physics On/Off button in the VE-Conductor toolbar.
In addition to the Physics On/Off button, there are five more buttons in the Conductor toolbar that can be used to manipulate a visualization. The Start Simulation button starts the simulation.
The toolbar also allows you to view the simulation step by step rather than all at once. To view one step of the simulation at a time, click the Step Simulation button.
To reset the simulation to its original position, click the Reset Simulation button.
When running longer simulations, you might want to pause the simulation while it is running. To do so, click the Pause Simulation button.
The physics capability in VE-Suite also includes a Character
Controller. To demonstrate the Character Controller, we will use the
character_demo.ves file (also located in the
share/vesuite/examples/simple directory).
After loading the character_demo.ves file, click on the Character Controller button in Conductor.
Use the Frame All and other keyboard and mouse commands to change the view (see Chapter 3.3 for navigation instructions).
The tables below provide keyboard and mouse commands for interacting with the visualization in character mode.
Table 4.1. Keyboard Commands
| A | Strafe left |
| S | Walk/Run backward |
| W | Walk/Run forward |
| D | Strafe right |
| C | Fly down (not implemented) |
| Space Bar | Jump/Fly up (not implemented) |
Table 4.2. Mouse Commands
| Left mouse button | Rotate the camera about the xz-axes |
| Left mouse button - mod:shift | Physics picking using Bullet p2p constraint |
| Middle mouse button - Scroll Up | Zoom in to the character |
| Middle mouse button | not currently used |
| Middle mouse button - Scroll Down | Zoom out from the character |
| Right mouse button | Rotate the camera and the character about the xz-axes |
This section will describe how to create physics data in VE-Suite using a simple example.
First, load simple.ves in the same way you loaded
simple_physics_boxes.ves in the previous section of this
chapter. Right-click on DefaultPlugin in the VE-Conductor Network window
and click on Geometry Config. This will open the CADTree Manager.
Expand the Model_Geometry tree by clicking on the arrow. In this example, you should see three nodes: eightCorners, Surface0.75, and Surface0.75_cloned. Each node corresponds to a different part of the visualization: eightCorners corresponds to the bounding box, while Surface0.75 and Surface0.75_cloned each correponds to one of the white polygonal objects.
Initialize physics on a node by right-clicking on it and selecting Initialize Physics. The CADTree Manager will open. Click on the Physics tab to set the Physics Properties (Mass, Friction, Restitution), Motion Type, LOD Type, Mesh Type, and Mesh Decimation). Each node must be initialized before physics can be run.
Once you have initialized physics, the Initialize Physics option will no longer be available when you right-click on a node. To edit the physics properties of a node, right-click and select Properties... This will open the CADTree Manager with the Physics tab, where you can edit your previously set physics properties.
Note: You must reset the simulation before editing a node's physics properties.
Initializing physics on a node also enables you to pick up individual parts of a visualization and move them. Simply hold down the Shift key and left-click on the object to drag it within the plane of the screen.
Table of Contents
To use VE-Suite's manipulation tools, load your ves file and click the Transform Manipulator On/Off button in the toolbar. The four manipulation mode buttons will be activated. To select a manipulator, point it. When it turns yellow, click on it. The manipulator modes are described below.
Translate Manipulator Mode
Allows planar manipulation in the XY plane (blue planar manipulator), YZ plane (red planar manipulator), or XZ plane (green planar manipulator), or in the view plane (white circular manipulator)
Rotate Manipulator Mode
Allows rotation around the X axis (red axial manipulator), Y axis (green axial manipulator), Z axis (blue axial manipulator), or around the view plane (white circular manipulator)
Scale Manipulator Mode
This mode is not currently implemented, but in the future it will allow scaling of objects
Combo Manipulator Mode
Displays both translation and rotation manipulators
Table of Contents
To use VE-Suite's GIS tools:
Load a .ves file
In the VE-Xplorer menu, point to GIS
To add a planet, click Add Planet
To remove a planet, click Remove Planet
To add layers to a planet, click Configure Layers
To add a layer from a file, click Add file... and select the appropriate file
To add a layer from WMS, click Add From WMS...
Enter the Server, Layers, and Styles
Select the appropriate image format
If you would like the layer to be transparent, check the box next to Transparent
Click OK
To remove a layer, select the appropriate layer and click Remove
When you are finished configuring layers, click OK
A visualization's latitude and longitude can also be changed in VE-Suite. In the CADTree Manager, right-click on the appropriate node and click Properties...
In the CAD Properties window, select the Geographic tab, enter the appropriate longitude and latitude, and click OK. You can also enter a location in the text box and click Geocode to have VE-Suite automatically find the longitude and latitude data.
Table of Contents
To use VE-Suite's ephemeris tools:
Load your visualization
In the VE-Xplorer menu, click Ephemeris Data
In the Date and Time tab, select the correct date and time and ensure that the box next to Display Ephemeris Data is checked
In the Latitude and Longitude tab, set the location by setting the latitude and longitude or by loading a location
To save a location:
Set the longitude and latitude
Click Save location
Enter the new locations' name and click OK. That location will now be available to load in the future.
Table of Contents
This chapter describes how to make visualizations using the VE-Suite
toolkit and a sample dataset. To follow this example, download and unzip the
PrISUm car dataset: PrISUm.zip
(57MB).
Although visualizations only require a dataset file (which models the technical data), users may want to add a geometry file to the scene to view the physical object as well. Once the scene is set, visualization can be used to analyze the data. This chapter uses the PrISUm car example to demonstrate visualization.
Load the geometry file. To do this, open VE-Launcher and set the
Working Directory to the project's PrISUm directory. Next,
use VE-Launcher to open VE-Suite in Desktop Mode. Load the geometry file,
PrISUmblend.obj.
Keep the CADTree Manager open. Right-click on the Model_Geometry directory and choose Properties. A CAD Properties window will open. This can be used to transform the file's dimensions. To fit PrISUm's geometry file with its dataset file, set the following values in the Transform tab:
Once the parameters are entered, close the CAD Properties and CADTree Manager window. Next, you will need to load the datasets, the primary files for visualization.
The dataset contains the technical data about the model, such as pressure and airflow. Visualization turns that data into a map for easier viewing. Datasets are loaded similar to the geometry configuration file.
This figure shows the dialog box for loading datasets:
The following matrix outlines which filetypes are required for each type of dataset:
Table 8.1. Required filetypes
| Filetype | Required files, column A | Required files, column B |
| VTK | ||
| StarCD | *.param | *.cel, *.vrt, *.usr |
| EnSight | *.case | *.flo, variable name |
| MFIX | *.mfix | |
| Fluent | *.cas | *.dat |
| AVS | *.avs | |
| Dicom | *.dcm |
The required files in column A reference the required files in column B. All files in columns A and B are required for loading the filetype in that row.
To load a dataset in VE-Suite, right-click on the gray plugin box and click on Data Set Config.
Click Add Dataset to create a new dataset and name it, then click
Open under DataSet Filename and choose your dataset file (in this case,
prisum.vtk). If you are just loading the PrISUm dataset,
nothing else needs to be loaded, so click OK to load the dataset.
If you need to load more information, you can do so through other fields. The Precomputed Data Directory and Surface Data Directory fields take data files created by the VE-Builder preprocessor to speed up calculations. The Volumetric Data Directories field takes texture-based data files.
NOTE: VE-Suite expects each type of precomputed data to be stored in a separate folder. Storing all of the precomputed data in one folder, or storing any of it in the Working Directory, will cause problems in the dataset.
Finally, the dataset may need to be transformed to match up with the geometry data. The Transform button brings up a Transformation window, like the one used to transform the geometry data.
The dataset does not need to be adjusted because the geometry objects were adjusted to fit it, so the Transform Input Window can be closed.
Once the dataset files have been selected, click OK in the DataSetLoader window, then choose Submit Job from the Connection menu to display the PrISUm car. Use the navigation pane, the mouse, or the VE-Xplorer-->View-->Frame All command to adjust the camera until the view is satisfactory.
To use visualizations, go to the File menu in VE-Conductor, click Open, and select the appropriate .ves file. You might need to clear the design space by clicking on the New button in VE-Conductor.
NOTE: Make sure to save your work before clearning the design space.
To bring up the visualization interface, right-click on the plugin to access the menu and select Visualization. The Visualization window will open.
In the Visualization window, click on the Scalar Contours button to bring up the Contours interface.
Set the direction (x, y, z, or By Wand) and choose the appropriate settings for Multiple Planes and Single Plane. Set the plane's position either using the text box or the slider.
Click the Advanced... button to set further controls, including:
Warped Contour Scale opacity
Contour LOD detail level
Contour Type
Warp Option, if applicable
Click Close when you are finished setting the advanced controls.
When you are finished making the appropriate settings, click the Add Plane button, or click Close to go back to the Visualization interface.
In the Visualization window, click the Vectors button to bring up the Vectors interface.
Set the direction (x, y, z, By Wand, or All) and choose the appropriate settings for Multiple Planes and Single Plane. Select Use GPU Tools if applicable. Set the plane's position either using the text box or the slider.
Click the Advanced... button to set further controls, including:
Vector Threshold
Vector Scale
Vector Ratio
Scale by Vector Magnitude, if applicable
Click Close when you are finished setting the advanced controls.
When you are finished making the appropriate settings, click the Add Plane button, or click Close to go back to the Visualization interface.
To show streamlines, click the Streamlines button in the Visualization interface. Set the integration direction and enable GPU tools if necessary.
Click the Seed Points button to set seed point controls (X bounds, Y bounds, and Z bounds; X-Plane, Y-Plane, and Z-Plane). Click Close when you are finished setting seed point controls.
Click the Advanced... button to set further controls, including:
Propogation Time
Integration Step size
Sphere/Arrow/Particle Size
Line Diameter
Fade Time
Animation Speed
You can also use the checkboxes to use the last seed point, stream arrows or ribbon, or animate particles. Click Close when you are finished setting the advanced controls.
When you are finished making the appropriate settings, click the Compute Streamline button, or click Close to go back to the Visualization interface.
To show isosurfaces, click the Isosurfaces button in the Visualization interface. Set the isosurfaces pressure.
Click the Advanced... button to set further controls, including:
Scalar to Color Isosurface
Scalar Range
Click Close when you are finished setting the advanced controls.
When you are finished making the appropriate settings, click the Compute Isosurface button, or click Close to go back to the Visualization interface.
Texture-based data can be viewed by clicking the Texture Based button in the Visualization interface. The Texture-Based Tools interface offers the following options:
Scalar Data Tools: In the Scalar Tools window, set the type of scalar, number of slice planes, isosurface, and scalar range. Click Enable Isosurface if applicable and set the range. The Advanced... isosurface button is currently disabled.
Vector Data Tools: There is currently no data available to use with these tools.
Edit Region of Interest: In the Volume Clipping Bounds interface, set X Bounds, Y Bounds, and Z Bounds.
Edit Transfer Functions: In the Transfer Functions interface, set the Base Look-Up Table and select Enable Phong Shading if applicable.
Transient: From the Transient Controls interface, you can play or stop the time steps or go forward or backward one frame at a time.
Click OK to go back to the Visualization interface.
Polydata can be viewed by clicking on the Polydata button in the Visualization interface. In the Polydata interface, you can:
Select Use Warped Surface if applicable
Set the Scale Factor
Select Use GPU Tools and Two Sided Lighting if applicable
Set the level of Scalar Control
Set the Opacity
Click the Advanced... button to select the scalar to color polydata, and click OK to save your setting or Cancel to go back to the Polydata interface without changing the setting.
When you are finished making the appropriate settings, click the Update button, or click Close to go back to the Visualization interface.
Table of Contents
VE-Conductor comes up but I don't see graphics on any of the displays.
Ensure that you correctly entered your password, when prompted, after launching on the master node.
Ensure that Xplorer is selected on the Custom page of VE-Launcher.
Ensure that "Cluster" is selected on the Custom page of VE-Launcher in the Xplorer Mode box.
Ensure that all of the nodes launched. If you see any errors
in the Conductor log stating "Unable to connect to VES Server" ,
one or more of the nodes did not connect properly. Kill all
project_tao_osg_vep processes on all nodes and
restart velauncher.py.
Ensure that the correct IP addresses are listed on the Cluster Nodes dialog of VE-Launcher. Also ensure that the correct name is listed for the master (cavehead) in the MASTER field of the Cluster Nodes dialog.
I see the error message "Error: can't open display on device":
Issue the xhost + command on all the nodes of
the cluster. For example, from the command line type ssh
drone1, then type xhost + (Note the space
between xhost and +)
Ensure that you have read permissions on the graphics card
by typing ls -ltr /dev/nvidia*. If you do not have
read permissions, ask the system admininstrator to enable read
permissions.
I see the error message "Could not connect to the Name Server..."
Ensure that the correct IP address is listed on the CE name of the VE-Launcher dialog (currently 10.10.20.241)
velauncher.py is not available in my shell
This probably means that the environment for your account has not been setup properly. Ask the system admininstrator to check the configuration of the user account environment.
I don't see the head and the wand on the display of the master window
Ensure that the Intersense tracker base station is turned on. In the cave, you should see blue light flashing on the above fixtures as you move the tracked glasses and/or the wand around.
Ensure that trackd is NOT running. Check your
processes to see if trackd is listed by typing
ps -ef |grep trackd. If you see it running, try to
kill the process by typing killall trackd. If
trackd is still running, ask the system administrator
to issue the killall trackd command.
Ensure that you have read permissions on the tracking device
by typing ls -ltr /dev/ttyS2. If you do not have
permission, ask the system administrator to change the permissions
on the device: chmod 777 /dev/ttyS2
I see the head and wand models in the display of the master, but the graphics are not responding to my movements.
Ensure that the wand and head tracking power switches are turned on. You should see a green light.
Ensure that the devices are in range, indicated by the orange light on each device.
My wand navigation is too slow/fast.
Change the translation and/or rotation step size on the Navigation pane on VE-Condutor. From the VE-Conductor menu, go to the VE-Xplorer menu and select Navigation Pane. Adjust the Translation and/or Rotation Step size slider(s) until the desired navigation speeds are achieved.
Rotations are around an arbitrary axis.
Change the rotations to be about the user's head. On the VE-Conductor main menu, go to the VE-Xplorer menu and select the Navigation pane. Ensure that the check box marked Rotate About User's Head is checked.
My visualizations are not synced across walls of the cave.
Have the system administrator ensure that frame locking is enabled in the nvidia-settings panel.
My logo animation is frozen until I mouse over the display on the master node.
Frame locking is not set up properly. Ensure that the master node is NOT listed in the list of nodes to be frame locked.
Objects are skewed on the left and right wall.
Make sure you are using the proper configuration files for
your configuration. Currently there are three config files:
acenet_closed_tracked,
acenet_45_tracked, and
acenet_3_wide_tracked. These are the configuration
files for running your cave in a specific instance: with the cave
closed (acenet_closed_tracked), open to 45 degrees
(acenet_45_tracked), and fully open
(acenet_3_wide_tracked). The files are located at
/opt/vesuite/ in directories
acenet_configs/ (closed),
acenet_configs_45 (open 45 degrees) and
acenet_configs_3_wide (fully open).
Bugs: https://subversion.vrac.iastate.edu/Subversion/TSVEG/Bugzilla/
For help with developing for VE-Suite, join the VE-Suite Developers email list
Table of Contents
Table of Contents
NOTE: This tool can only be used in a CAVE.
The Design Review Tool is a collection of features that facilitate capturing design suggestions during the review process and enable users to interrogate the product under review.
The Design Review Tool allows a user to:
Capture an image of the user's current view. This is essentially a virtual camera that is tied to the user's head position.
Toggle parts of the CAD model on and off.
Add a pointer to the scene to highlight a specific area of interest.
The virtual camera allows you to take a picture of a scene. To turn on the virutal camera:
Turn on the Camera Manager
Turn on Picture Mode
Turn off the Camera Window
To change the resolution of the image that is taken as well as the size of your view angle, select the appropriate resolution on the Aspect Ratio choice dialog on the Camera tab.
Ensure that the Auto Computer Near/Far Plane is selected to ensure that you are capturing the image you intend to.
Use Button 1 to take your picture. When you press Button 1, the view frustum is displayed. The picture is taken when you release Button 1.
Choose the the appropriate image directory to save the image.
The ability to turn components on and off is controlled through the Conductor preferences pane, The CAD Selection check box is located under the Xplorer Settings tab. You should no longer be required to check and uncheck this box whenever you launch VE-Suite. The preferences should now be sent on the fly when VE-Suite is launched.
Button 0 toggles the selected CAD off.
Button 4 toggles the previously selected CAD back on.
Table of Contents
NOTE: These tools can only be used in a CAVE.
The Dynamic Vehicle Simulator Tool is a plugin to VE-Xplorer and VE-Conductor that enables mapping global positioning data to user-selected CAD.
The Registration Tools enable users to position a vehicle buck in a tracked environment for the purpose of registering a digital CAD representation of the vehicle buck to the physical buck.
Information users should know before using the Registration Tools:
The CAD should be pointed forward in the environment. NOTE: This is only applicable if the user is not going to also use the Dynamic Vehicle Simulator Tool.
The CAD needs to be scaled to feet.
The tracking markers only need to be present on the buck during the registration process. Once the buck is registered, the markers can be removed and used for other purposes.
The Seat Index Position (SIP) measurement is the distance from the origin of the CAD model to the SIP in the model. The coordinate system for this measurement is Y toward the front of the vehicle, X to the right of the vehicle, and Z to the top of the vehicle. This is typically measured in a CAD package or in a review tool like TeamCenter.
Example code for the tracking marker configuration file:
# The measurements are in mm
# The coords are x to the rear, y up, z to the left
# The order is Front, Left Rear, Right Rear
VJHead -1048.1 686.8 13.3
VJWand 597.8 792.5 421.4
VESPointer 600.9 792.4 -421.4
Follow these steps to use the Registration Tools:
Place the tracking markers in the appropriate locations on the vehicle buck.
Update the tracking marker configuration file with the measured data for the location of the tracking markers to the SIP.
Update the tracking marker configuration file with the bird locations on the buck as follows:
The first listed marker is the front of the buck
The second listed marker is the left rear of the buck
The third listed marker is the right rear of the buck
Load the CAD and position and scale it appropriately based on the assumptions listed above.
Choose the file button and select the tracking marker configuration file.
Press the registration button.
At this point, the CAD should be aligned with the vehicle buck.
Table of Contents
Table of Contents
There is an inherent trade-off between robust, readable code and optimum performance. These coding conventions are designed to maximize code robustness and readability, possibly at the expense of optimal performance.
This section contains general rules that apply to class, variable, function, and namespace names.
Select names that are clear and easy to understand. Keep in mind that your code will likely be viewed and maintained by several developers after you leave the project.
Use standard or commonplace acronyms. For example,
CreateOSGCamera() is an acceptable name for a function that
creates an OpenSceneGraph Camera object. Using highly descriptive names
can help tremendously. Names like CheckForErrors and
DumpDataToFile are much more descriptive than
ErrorCheck or DataFile. In the second case one
may need to check the implementation of the function to be confident in
knowing exactly what it means.
When the name includes a natural abbreviation such as OpenGL, keep
the abbreviation and capitalize the abbreviated letters. Never create new
acronyms or abbreviations. For example, name a function
SetRasterFontRange() instead of SetRFR().
Use only alphanumeric characters in names (A-Z, a-z,
0-9). For example, name a variable exteriorSurface
rather than exterior_Surface.
Use underscores only as follows:
As part of any local variable names (e.g.,
my_var)
Embedded in C Preprocessor macro and identifier names (e.g.,
DEGREES_TO_RADIANS())
For use in member variable names.
Use capitalization to indicate words within a name (CamelCase). For
example, you could call a class VectorTopologyFilter.
Use the keyword "this" inside of methods even though C++ does not require you to. This really seems to make the code more readable because it disambiguates between instance variables and local or global variables. It also disambiguates between member functions and other functions.
Class names are nouns and usually start with "cfd" and follow the CamelCase convention.
A class name should reflect what the class is. Do not tag the derived type onto the class. It should be able to stand on its own or be properly reflected in the namespace it resides. All classes should be declared (and defined) within an appropriate namespace. Never place publicly accessible classes in the global namespace.
Function names are verbs (e.g., SetRasterFontRange),
start with a capital letter, and follow the CamelCase convention.
Use common suffixes and prefixes to make the project's code more cohesive. For example, some common prefixes may be Is, Get, or Set. When overriding a base class member function declared as virtual, declare the derived class member function virtual as well to avoid confusion.
Variable names are nouns and should begin iwth a lower case character. Words should be separated by an underscore. Variables should be declared where they are first used.
Member variable names should use the prefix m_
(lower-case m). A lower-case letter should follow the underscors. An
example of a valid member variable name is m_viewMatrix. If
it is a static variable then use the prefix s (lower-case
s).
Never use single character variable names. A lower-case I variable
(i.e., i) is often mistaken for the numeral one
(1) or the lower-case letter L (l).
Single-character variable names also inhibit quick text searches.
Consider using a more descriptive name for array index variables, such
as index rather than i.
Only one public class is allowed per file. Every class name, macro,
etc. starts with either cfd or CFD to avoid name
clashes with other libraries. Classes should all start with
cfd and macros. Constants can start with either. Class names
and file names are the same (e.g., cfdContours class is
declared in cfdContours.h and implemented in
cfdContours.cpp). This makes it easier to find the correct
file for a specific class. Similarly, .cxx and
.h file pairs should declare and define only one public
class.
Declare classes in header (.h) files. Define all member
functions in source (.cxx) files. Never place source code in
header files, which prevents other developers from easily finding the
source code.
Do not nest classes within other classes. It is difficult to move a nested class out of the owning class at a future date because all code using the fully qualified nested class name must be fixed. Nesting classes also causes them to be more difficult to locate.
Each class must support a copy constructor and an
operator=() member function.
When declaring a class intended for use as a base class, declare the destructor as virtual to ensure that derived class destructors execute. This helps guard against memory leaks in derived classes.
When the base class has a virtual destructor, derived classes should also declare their destructors as virtual.
Always declare a function return type. Never allow the computer to
default to type int.
Use const on any member function that does not change
any data. It enforces the purpose of a function and allows for better
compiler optimizations.
When overriding a base class member function declared as virtual, declare the derived class member function virtual as well to avoid confusion.
If a class implementation needs a local function, include that function in the class declaration as protected or private. Avoid declaring the function locally in the implementation, which limits code reusability. If the local function could be generalized consider making or adding it to a small utility library.
Function argument names are nouns and should begin with a lower
case character and then follow the CamelCase convention. Try to always
use two words to describe the argument (e.g.,
tmpValue).
Always declare function arguments as const if the
function does not change their value.
If a function does not take arguments, place the left and right parentheses adjacent to each other in both the function declaration and definition. Do not use the keyword void to indicate that there are no parameters.
Always name a parameter. For example:
// Use this:
void SetFoo( int tmpValue )
// Do not use this:
//void SetFoo( int )
Always initialize member variables in the constructor. All instance variables are declared as protected. The user and application developer should access instance variables through Set/Get methods.
Declare variables where they are first used. C++ lifted this restriction from C for a reason. It makes code more modular and easier to understand, modify, and debug.
Always declare member variables as protected or private. Add public accessor methods to allow external access to the member variable. Initialize all member variables in the class constructor. Make sure to include the unit the variable represents as a suffix.
Never place a using statement at global scope in a
header file. This pollutes the namespace of any code that includes that
header, and can cause runtime issues and invisible conflicts that are
difficult to debug and hard to track. Restrict using
statements to implementation files (if at all).
Always use the fully qualified name for methods outside of the
class, so for standard namespace keywords (cout,
cin, cerr, endl,
vector, string), you must
std::cout, etc. Alternately, use using for
specific functions or variables rather than global namespace inclusion.
For example, if you only require the string class from the std namespace
and it will appear frequently, use using std::string; instead
of using std;
Header files are for declarations only. It is difficult to read and find code if source is in the declarations.
The header file of the class should include only the superclass header file. If you need any other include statements, add comments at each one describing why it should be included.
Forward declare classes when possible to avoid including unnecessary header files in a class header file.
Never place a using statement in a header file. This
pollutes the namespace of any code that includes that header, and can
cause runtime issues that are difficult to debug. Restrict
using statements to implementation files.
Header files should use guards to prevent multiple inclusion. These
guards should be defined in the style FILENAME_H, which is
the filename written in all upper case with punctuation such as dots
(.) replaced by underscores.
#ifdef CFDHEADER_H
#define CFDHEADER_H
...
#endif // CFDHEADER_H
You can also use the C Preprocessor to protect against multiple
inclusions. Create a unique C Preprocessor identifier using the namespace,
module, subdirectory, and file name. For example, given a file named
Contours.h in the VE-Suite namespace in the Framework
subdirectory of the Conductor module
#ifdef VES_CONDUCTOR_FRAMEWORK_CONTOURS_H
#define VES_CONDUCTOR_FRAMEWORK_CONTOURS_H
...
#endif // VES_CONDUCTOR_FRAMEWORK_CONTOURS_H
Comment the end of every #endif, as shown above. Nested
#ifdef can be difficult to follow.
A new line after the last #endif is required by some
compilers.
Use const on any member function that does not change
any data. It enforces the purpose of a function and allows for better
compiler optimizations.
Always pass strings by const reference unless you are
intentionally modifying it for use by the calling function.
void setName ( const std::string& name )
{
mName = name;
}
Always pass an object by const reference if you are
not intentionally modifying any part of it. Always mark the function
const if it does not change any intentional state of the
class.
void printComparison( const NameObject& name ) const
{
std::cout << mOurNameObject->getFoo() << " :
" << name->getFoo() << std::endl;
}
When following the above statements, do not pass plain old data
types (POD) like float, int, or
double by reference. Just mark them
const.
void printDouble ( const double myDouble )
{
std::cout << myDouble <<
std::endl;
}
Place all #include statements at the start of the
file following the standard copyright/disclaimer comment block. Never
use #include statements midway through a file following
other source code.
Organize #include statements at the top of each file
by module, third party, and then system includes.
Never use the shorthand ?/: conditional syntax, which
inhibits readability. Always use the if/else syntax.
Example:
// Use this:
int clamped_value;
if( newValue > mMaxValue )
{
clamped_value=mMaxValue;
}
else
{
clamped_value=newValue;
}
// Don't use this:
//int clamped_value=newValue > mMaxValue ? mMaxValue :
newValue;
Don't use single-line conditions. For example:
// Use this:
if( tmp_value == 0 )
{
return;
}
// Don’t use this:
//if( tmp_value == 0 ) return;
Always use the C++-style static_cast syntax rather than C-style type casting. This improves robustness by forcing you to place parentheses around the source data. Example:
void Resize( int canvasWidth, int canvasHeight )
{
double aspect_ratio = static_cast< double >(
canvasWidth ) /
static_cast< double >( canvasHeight );
}
Place assertions before code segments that would fail catastrophically if the assertion condition is false. Calls to assert() are only executed in unoptimized builds, so there is no performance risk in production builds with liberal assertion usage. If the assertion is potentially confusing, precede it with a comment explaining why the assertion must be true. Include <cassert> rather than <assert.h>. Example:
#include <cassert>
void FunctionName( int* indexAddress )
{
assert( indexAddress != NULL );
int index = *indexAddress;
...
Wrap each case section with curly braces.
If you intend one case to fall through to the next, place a plainly visible comment at the end of the first case stating that the fall through is intentional and explain why. Otherwise, always use a break statement at the end of each case section.
Include a default section at the end of each switch statement.
Never use global variables. Consider using a singleton design pattern instead of a global variable.
Avoid using static variables. An obvious exception is the instance pointer in a singleton object.
Overuse of the C Preprocessor can inhibit debugging. Avoid using the C Preprocessor where possible. Always use a standard function definition instead of a C Preprocessor macro for complex code segments. Never use a C Preprocessor macro as a shorthand mechanism for repeating code blocks. Here are some examples of appropriate use of the C Preprocessor:
#define PI_OVER_4 0.7853981633974483096156
#define DEGREES_TO_RADIANS(DEGREES)( DEGREES *
0.01745329251994329576923 )
Use the C Preprocessor to protect against multiple inclusions of header files.
Also, use the C Preprocessor to embed multiple implementations, such as in a stack-based factory design pattern implementation. For example:
float maximum( float input0, float input1 )
{
#ifdef WINDOWS
return __max( input0, input 1 )
#else
return std::max<float>( input0, input1 );
#endif
}
All code should compile cleanly at the maximum warning level. This eliminates clutter in the compiler output stream and improves the visibility of any new warnings inadvertently introduced in the development process.
As an exception, third party code is allowed to generate compiler warnings.
During development, compile code with the -pedantic
or -Wall compiler options to maximize warning
verbosity.
Compilers generate different warnings for 32- versus 64-bit compilations and debuggable versus optimized compilations. Test all compilation configurations to ensure your code does not introduce new warnings under any conditions.
Single-character variable names can be easily mistaken for numbers ("I", for example, can sometimes look a lot like "1"). Make the array stand out with whitespace:
array[ i ] = 0.0;
array[ 1 ] = 0.0;
array[ 2 ] = 0.0;
Do not put parens next to keywords. Put a space between keywords and parens.
Do not use parens in return statements when it is not necessary.
Do put parens next to function names.
Example:
if ( condition ) while ( condition )
{ {
... ...
} }
strcpy( s, s1 ); return 1;
Overuse parenthesis to clarify and clearly denote operator precedence in Boolean and algebraic formulas. For example:
// Use this:
if( ( x_index == 0 ) && ( y_index == 0 )
)
// Don’t use this:
// if( x_index == 0 && y_index == 0 )
Use braces for all if, while,
switch, case, for, and
do statements even if there is only a single statement
within the braces.
Place braces under and inline with keywords. For example:
if ( condition ) while ( condition )
{ // Note: curly brace is under and aligned with the ‘if’
...
}
Use curly braces to limit variable scope. This improves readability by clearly defining the section of code that is affected by a given variable, and allows the compiler to more efficiently allocate hardware registers to variables. This is especially important when dealing with scoped locks. Put braces around the part where you need to hold on to the lock so the lock can go out of scope and release the lock.
Limit lines to 80 characters.
Three-space indentation: Set your editor to insert three spaces every time you hit the tab key.
Insert white space for readability. This means that one blank line should occur between function definitions or between different blocks of code.
For specific details on writing Doxygen-compliant and standardized comments, see Chapter 21, Documentation Notes.
Comments should tell why something is coded the way it is. At every point where you choose between different options, insert a comment describing which choice you made and why. Comments need to be formatted for compatibility with Doxygen. See Chapter 9, Troubleshooting Guide, for further detail.
Use a standard copyright/disclaimer comment block at the top of each source file.
The following sections provide guidelines for editing the VE-Suite documentation using DocBook.
When referring to filenames, file extensions, directory names, commands, or strings of code, use the code tag to differentiate the typeface from the text around it.
Entering this:
Go to VE-Suite's <code>bin</code> directory
and type <code>python velauncher.py</code>.
yields this in the DocBook output:
Go to VE-Suite's bin directory and type python
velauncher.py.
To draw users' attention to an important piece of information, type NOTE: and tag it with the DocBook emphasis role bold. That is, enter this:
<emphasis
role="bold">NOTE:</emphasis>
to yield this:
NOTE:
When referring to a general version of VE-Suite or any application
within VE-Suite, such as in a command, use x.x.x to refer
to the version number rather than a number so the reference does not
become outdated with future release versions. For example, in the
following sentence, vesuite.x.x.x.exe and
vesuite_deps.x.x.x.exe refer to the version of VE-Suite
being used, and the user would change x.x.x to the
appropriate version number. In addition, be sure to include the build
number in the version as well. The build number is available in
VE-Conductor under the About menu option.
One installer, vesuite.x.x.x.exe, contains the core
VE-Suite binaries and .dll files, while
vesuite_deps.x.x.x.exe contains the binaries and .dll files
of the dependencies for the current release of VE-Suite.
In some cases, you might need to refer to a specific version of VE-Suite as the following example shows:
Starting VE-Suite was simplified with the release of version 1.0.0 via VE-Launcher.
Table of Contents
Before attempting to build VE-Suite, be sure to build/install the dependencies (see Chapter 14, Dependencies) and set the environment variables (see Chapter 15, Setting the Environment).
VE-Suite, as well as its dependencies, is currently being bested on a broad range of UNIX/Linux platforms including IRIX 6.5, SuSE, and RedHat Enterprise.
Set the environment variables (see Chapter 15, Setting the
Environment) and source the setup file included with the VE-Suite project:
$(VE_SUITE_HOME)/VE_Installer/setup. {.sh,tsh}. Once this
file has been properly edited, type gmake. The UNIX build
system is based on Doozer, which is included with VR Juggler.
Supported base configurations available:
tao_osg_dbg - OpenSceneGraph based application
supporting released features
tao_osg_vep_dbg - OpenSceneGraph based application
supporting released and new features from current research
There are also cluster variants of each of the above configurations:
tao_osg_cluster_dbg
tao_osg_vep_cluster_dbg
To change any of the configurations described above, open the setup
file and set SCENE_GRAPH, CLUSTER_APP,
VE_PATENTED accordingly.
VE-Suite, as well as its dependencies, is currently built and tested using Visual Studio 7.1(2003).
Set the environment variables (see Chapter 15, Setting the Environment) and launch a session of Visual Studio with the VE-Suite project loaded, then run the batch file:
$(VE_SUITE_HOME)VE_Installerbuild.bat
Supported base configurations available:
tao_osg_dbg - OpenSceneGraph based application
supporting released features
tao_osg_vep_dbg - OpenSceneGraph based
application supporting released and new features from current
research
There are also cluster variants of each of the above configurations:
# tao_osg_cluster_dbg
# tao_osg_vep_cluster_dbg
To run VE-Xplorer from within the Visual Studio debugger, change
the working directory in the Configuration Properties tab to point to
the directory where your VE-Suite parameter file is located (for
example, change the working directory to
$VE_SUITE_HOME)VE_TestSuite).
You will also need to pass in your VR Juggler config files as command arguments on the configuration properties tab. With the two projects still open, right-click on the VE_Xplorer project file and select Properties. For simulation mode, add the following to your command arguments section:
$(VJ_BASE_DIR)sharevrjugglerdataconfigFiles sim.base.jconf
$(VJ_BASE_DIR)sharevrjugglerdataconfigFiles
sim.wand.mixin.jconf
After you enter a parameter file name and the scene loads, double
click on $(VE_SUITE_HOME)bin runWinClient.bat to bring up
the gui.
You can build a working version of VE-Suite you can run from a CD by following these instructions:
Create a folder to hold the CD's contents. We will call this the CD folder.
Build VE-Suite and its dependencies. Make sure you build them without library or header files; these optional files will make VE-Suite too large to fit on a CD. Once they are built, copy them to the CD folder.
Add the autorun.inf and VE_icon.ico
files (found in the
VE_Installer/installer/StandAloneCDreate directory) to
the CD folder. (NOTE: Make sure the
path to VE-Launcher listed in autorun.inf matches the
path in your version of VE-Suite.)
Add the models you want to include on the CD to the CD folder.
We recommend putting them in
VE_Suite.1.0.3/share/exampleDatasets with the sample
datasets.
Write the contents of the CD folder to the CD.
Reminders:
Make sure the contents of the CD folder will fit on the CD before you write it
While running VE-Suite from a CD, make sure the dependencies
directories and working directory are located on the CD. Otherwise,
the program will not run properly. Also, you can only use the
.ves (model) files located on the CD itself.
Table of Contents
VE-Launcher is a quick and easy way to launch any configuration of VE-Suite. It helps users save configurations, choose which programs to run, and launch them without entering text commands. Because so many options and configurations are available, choosing the necessary one can take some work. This chapter explains how to use VE-Launcher and includes an example setup.
VE-Launcher is started differently on Windows and Unix installs. On
Windows, double-click the VE-Launcher executable. On a Unix-based install,
VE-Launcher is a Python program. Go to VE-Suite’s /bin
directory and run velauncher.py. Specifically, from the
command line, enter the /bin directory and type python
velauncher.py to run VE-Launcher.
For both the Windows and Unix-based development versions, VE-Launcher is a Python program. Run it in the same way as the Unix-based install. In development mode, VE-Launcher does not require dependencies to be set and it looks for stereo desktop configuration files in their build location, not their install location.
Preset Environmental Variables: Certain values,
such as the VPR_DEBUG_LEVEL, can be automatically entered
into VE-Launcher from the environment when VE-Launcher starts. If they are
set in the environment, they overwrite the values saved from previous
VE-Launcher sessions. These variables include:
VE_DEPS_DIR (dependencies directory, Windows
only)
This is the base directory in which the VE-Suite dependencies installer places the associated files during a Windows install
VJ_BASE_DIR (VR Juggler directory, Unix
only)
This is the base directory in which VR Juggler is installed during a Unix install
VE_WORKING_DIR (working directory)
This is the location of a desired application
TAO_MACHINE (TAO machine)
This is the computer on which VE-CE is being run. In Desktop Mode, this is set to the local machine and cannot connect to another computer. In other modes (i.e., Cluster Mode), the TAO_MACHINE is run on a single computer and the other nodes communicate with this computer.
TAO_PORT (TAO port)
This is the port number on the TAO machine through which the communication is being passed
OSGNOTIFYLEVEL (OSG debug level)
This is a numeric value that assigns how much debug output is displayed for OpenSceneGraph (the scene graph that VE-Xplorer uses)
VPR_DEBUG_ENABLE (VPR debug)
This is a yes/no value that assigns how much debug output is displayed for VR Juggler
VPR_DEBUG_NFY_LEVEL (VPR debug level)
This is a yes/no value that assigns how much debug output is displayed for VR Juggler
Before VE-Suite can be run, VE-Launcher must be pointed to its dependencies. The process for doing this depends on whether VE-Suite is being run on a Windows- or Unix-based system.
Pointing to the dependencies is bypassed completely in development mode because VE-Launcher assumes the enviromental variables have been set.
Windows: VE-Launcher needs to find
the VE-Suite dependencies directory that was installed along with
VE-Suite. The first time VE-Launcher is started, the user is prompted to
choose the dependencies directory for it. This directory should be named
VE_Suite.#.#_Dependencies.
If necessary, you can change the dependencies directory by selecting Choose Dependencies from the Options menu in VE-Launcher.
UNIX: VE-Launcher supports dependencies spread across multiple directories. The first time VE-Launcher is run, you will be asked to choose the directory for its dependencies. Each dependency's directory should be added to the list.
The only exception is VR Juggler's dependency directory. Since it sets multiple variables, it needs to be chosen separately from the other dependencies.
If necessary, you can change the the dependencies directory by selecting Choose Dependencies from the Options menu in VE-Launcher.
Once the dependencies have been selected, VE-Launcher's main window displays.
Development mode: VE-Launcher does not require dependencies in development mode. It assumes that the necessary environmental variables have already been set.
VE-Launcher's main window displays the basic choices that need to be made before running VE-Suite. Here is a breakdown of what can be done from the main window:
Working Directory: You can either type in the directory that contains the files you want to load, or you can browse the file system with the Choose Working Directoy button
CE (computational engine) Name and CE Port: Enter the computer and port you want to connect to
Launch Mode: Select the desired mode. There are six options:
Desktop Mode launches VE-Conductor, Name Server, and VE-Xplorer in a synchronized manner for the convenience of using VE-Suite on a personal computer
Tablet Mode launches VE-Conductor and is designed for use on tablets
Computation Mode launches the Name Server and is designed for use on computational engines
Visualization Mode launches VE-Xplorer and is designed for viewing projects
Shell Mode lets the user work in a new shell with the VE-Suite environment set up. If Shell Mode is selected, you will be asked whether you want the shell to run VE-Builder. If you click Yes, the selected VE-Builder directory will be added to the path. On Windows, launching in Shell Mode creates the shell in a window. Simply close the window to exit the shell.
On Unix, launching in Shell Mode makes the shell a child of
your current terminal. Type exit to return to your
original shell.
Custom Mode lets the user choose the settings.
The settings for every mode can be viewed and changed by clicking the Mode Settings button. Once you have chosen the appropriate settings, click Launch VE Suite to close VE-Launcher and start VE-Suite.
VE-Launcher's main window has a menu bar with the following menus:
File menu
Open....: Pick a ves or script shell file to
launch
Open Recent File: Pick a recently launched ves
file or script shell file to launch
Preferences: If necessary, select a default working directory rather than using the directory that was in use during the previous session
Close File: Remove any ves file or script
shell
Quit: Quit VE-Launcher
Configurations menu
Load: Load a previously saved VE-Launcher configuration. VE-Launcher configurations store information such as mode settings, VE-Xplorer configurations, and cluster settings
Save: Save the current VE-Launcher configuration
Delete: Delete a previously saved VE-Launcher configuration
Options menu
Choose Dependencies: Change the location of dependencies based on where the user has installed them
Choose Builder Folder: Change the Builder directory (Windows only)
Set Debug Levels: Display the varying amounts of debug output for VR Juggler and OpenSceneGraph
Auto-Launch Passed Files: If checked, files passed as arguments to VE-Launcher are instantly launched. If unchecked, files passed as arguments are opened in VE-Launcher for the user to launch manually
Cluster Wait Times: Customizes the time VE-Suite waits between starting the master node and its slave, and the time VE-Suite waits between starting individual slaves
Help menu
Click the Mode Settings button to view and change settings. The Desktop, Tablet, and Computation Modes display their settings in read-only mode. Visualization Mode allows Xplorer Configuration Mode and Cluster Settings (when Cluster Mode is selected) to be changed. Custom Mode allows every setting to be changed. Choices are displayed in read-only mode if they cannot be changed, or if changing them would not have any effect. For example, Xplorer Configuration Mode cannot be selected if VE-Xplorer is not being run.
Options that can be set include:
which VR Juggler configuration to use from the dropdown menu. Users can edit the list by clicking Edit Configuration List in the Xplorer Configuration Mode area of the Custom Mode Settings window. The configuration list will be discussed in more detail in the next section.
which programs to run. Users can choose to run any combination of Name Server, Conductor, and Xplorer. At least one must be selected or VE-Suite will not launch.
whether to run Conductor and Xplorer in Desktop Mode. This checkbox is disabled if neither is being launched.
which mode to run Xplorer in. Users can choose between Non-Cluster Mode (single computer) or Cluster Mode. This radio list is disabled if Xplorer is not being launched.
Click the Edit Configuration List button. VE-Suite has multiple configuration files available. To help users keep track of them, VE-Launcher keeps a list of the configuration files used. Entries in this list can be added, renamed, or deleted. The path to the currently selected entry is listed in the field at the bottom of the window so you can tell which name stands for which file.
When a new configuration is added to the list, its initial name is the same as its file name. The configuration should be renamed to be more descriptive.
VE-Launcher can run VE-Suite from one computer across a cluster. To use VE-Launcher's cluster functions on Unix, the cluster must satisfy these requirements:
The path to VE-Suite, its dependencies, and the working directory must be the same on every cluster node
VE-Launcher's user must have permission to ssh to each mode
The user must manually ssh into each node and authenticate its host
Once all the nodes have been authenticated, the cluster can be run from VE-Launcher:
If NameServer and Conductor are running on a certain node, open VE-Launcher from that node. (VE-Launcher runs NameServer and Conductor from the same computer VE-Launcher is running on.)
Set the settings and select the Cluster Xplorer Mode. The Cluster Settings button will then be enabled.
Click Cluster Settings. A window will open displaying master and slave lists. Type in the master’s name, add each slave’s name to the list, then click Ok.
Click the Launch button to launch VE-Suite. VE-Suite will start on the cluster computers.
NOTE: There is a slight delay between each node launched because simultaneous launching causes erratic behavior in clusters. The delay can be changed by selecting Cluster Wait Times from the Options menu. If sync or unconnected nodes cause problems using VE-Launcher, try lengthening the delays. If launching the cluster takes too long, try shortening them.
VE-Launcher can start VE-Suite across a Windows cluster through PsExec.
To use the cluster functions of VE-Launcher on Windows, the cluster must satisfy these requirements:
The path to VE-Suite, its dependencies, and the working directory are the same on every cluster node
PsExec is installed on the computer that is running VE-Launcher
To launch the cluster:
If NameServer and Conductor are running on a particular computer, open VE-Launcher from that computer (VE-Launcher runs NameServer and Conductor from the current computer)
Choose the appropriate settings. Set Xplorer Configuration to Cluster Mode. This causes the Cluster Settings button to be enabled.
Click Cluster Settings. A window will open displaying the master and slave lists, plus an optional User name field. Type in the master’s name, then add each slave's name to the list.
Some clusters might require the user to connect with a certain user name. If so, enter that user name into the User name field. The user name's domain may need to be included as well, depending on the cluster's setup. If you provide your user name, you will have to manually enter your password in each Psexec window as it launches. VE-Suite does not send passwords for security reasons.
Extra variables can also be passed to cluster computers. Click on the Pass Extra Vars button and list any extra variables that you would like to pass, then click OK.
Launch VE-Suite by clicking Launch. The cluster computers will start up VE-Suite.
NOTE: There is a slight delay between each node launched because simultaneous launching causes erratic behavior in clusters. The delay can be changed by selecting Cluster Wait Times from the Options menu. If sync or unconnected nodes cause problems using VE-Launcher, try lengthening the delays. If launching the cluster takes too long, try shortening them.
The cluster template: If your cluster needs extra code to launch
(for example, a net use command to set up a remote drive), the code can be
entered into the clusterTemplate.txt file. Any terminal code
in the clusterTemplate.txt file will run on the cluster’s
other computer before VE-Xplorer is launched. Please read the comments in
clusterTemplate.txt for more details.
Once VE-Launcher is set up, VE-Suite can be quickly started by passing arguments from the command line. Some arguments pass values to VE-Launcher while others bypass VE-Launcher completely and auto-launch VE-Suite. Arguments that auto-launch VE-Suite use the previously saved settings for any fields they do not change.
<file>: Passes a .ves file or
shell script named <file?> to VE-Launcher.
Auto-launches VE-Suite if Auto-Launch Passed Files has been selected
in VE-Suite. Otherwise, VE-Launcher starts with the file
loaded.
-q, --quick: Auto-launches VE-Suite
with its most recent settings
-g<config>,
--config=<config>: Loads the VE-Launcher
configuration named <config>
-d, --dev: Starts VE-Launcher in
Development mode
-w<dir>, --dir=<dir>:
Auto-launches VE-Suite with the working directory set to
<dir>
-t<name>,
--taomachine=<name>: Auto-launches VE-Suite with
TAOMACHINE set to <name>
-p<port>, --port=<port>:
Auto-launches VE-Suite with port set to
<port>
-j<file>, --jconf=<file>:
Auto-launches VE-Suite using <file> as VE-Xplorer's
Juggler configuration
-l<boolean>,
--cluster=<boolean>: If
<boolean>==True, auto-launches VE-Suite in Cluster
Mode. If <boolean>==False, auto-launches VE-Suite
in Non-Cluster Mode.
-b, --debug: Auto-launches VE-Suite
and debugs the launch
Program arguments set certain parts of VE-Suite to run. They
auto-launch VE-Suite, running the programs specified. Note that only
the programs specified in the arguments are run. For example, if a
user only passes -x -n, only VE-Xplorer and the
computational engine will run, even if the default settings usually
run VE-Conductor as well.
The program arguments are:
-n, --nameserver: Runs the
computational engine
-c, --conductor: Runs
VE-Conductor
-x, -xplorer: Runs
VE-Xplorer
-s, -shell: Runs a shell with
VE-Suite's environment set
John Doe wants to set up VE-Suite to look at a virtual power plant
design. He needs to start it in Visualization Mode, using the VR Juggler
configuration "standalone". He also needs VE-Suite to connect to computer
kiwi on port 1239.
When John starts VE-Launcher, he sees this:
First, John types the path to the plant design data directory in the Working Directory field. He could also use the Choose Working Directory button to find it.
John needs to change the computational engine (CE) name, but he
cannot because VE-Launcher is currently in Desktop Mode, which
automatically sets the CE name to localhost. To unlock the CE
name, he switches to Visualization Mode. Remember that any mode besides
Desktop Mode will allow users to change the CE name.
Switching modes unlocks the CE name and sets it to the last user-input value. Now John can change the CE name and port.
To finish setting up VE-Launcher, John must change the mode's settings. He clicks the Mode Settings button to bring up the Settings window.
Visualization Mode sets most of the options, and the Non-Cluster Xplorer Configuration Mode is already selected. That leaves changing the Xplorer Configuration. However, the configuration that John needs is not on the list. He clicks the Edit Configuration List button.
John clicks the Add button, which opens the configFiles
directory. He selects the appropriate file and clicks Open.
The configuration is added to the list with the same filename that
it had in the configFiles directory. In this case, that name
is standalone.jconf. John clicks the Rename button to rename
it "Plant Design" so he can remember which project it is for.
Now that he has finished editing the list, John exits the Xplorer Configurations window. Because Plant Design was selected when he exited, it is automatically set as his current configuration file. With everything set up appropriately, John can now click the Launch VE-Suite button to look at the design.
Table of Contents
A VE-Suite shell environment is necessary to run VE-Builder. To run VE-Builder tools from VE-Launcher, select the Shell Mode.
The loaderToVtkd program transforms prepared
three-dimensional data files from other programs into VE-Suite files.
First, prepare the environment for it by launching a Builder shell from
VE-Launcher, as described in the previous section. Then the
loaderToVtkd can be used to import files into VE-Suite
formats. The general syntax of the program is:
loaderToVtkd -singleFile <input filename> -loader
<loader type>
-o <full path to the output directory> -w file COMMAND
FOR THE NAME OF THE OUTPUT FILE
To see loaderToVtkd options, type in loaderToVtkd.
loaderToVtkd supports the following loader types:
REI (BANFDB)
AVS (avs)
Dicom (dcm)
EnSight (ens)
MFIX (mfix)
StarCD (star)
It also supports Plot3D, but with this syntax:
loaderToVtkd -geometryFileXYZ [input filename] -dataFileQ
[input filename2]
-o [full path to the output directory] -multiGrid Flag [0:1]
-iblankFlag [0:1] -numberofDimensions [0:1]
-outFileName [output file] -loader xyz -w file
The following sections include detailed instructions for preparing and importing data files from StarCD (Section 9.4) and Fluent (AVS) (Section 9.5).
First, get the star.cel, star.vrt, and
star.usr files from StarCD. Instructions for doing this can
be found in Building Files from StarCD, Section 9.10 (below).
Next, make a star.param file to point to the
star.cel, star.vrt, and star.usr
files. Save the template to
the working directory and follow these instructions to modify it for
your data.
Set these points to the appropriate .cel,
.vrt, and .usr files:
STARCEL=/your_directory/star.cel // a *.cel file is required
STARVRT=/your_directory/star.vrt // a *.vrt file is required
STARUSR=/your_directory/star.usr // a *.usr file is
required
Change these lines to their respective scalars:
VECTORNAME=Velocity // the columns of the *.usr file must be
labeled
SCALARNAME=scalar1 // the columns of the *.usr file must be
labeled
SCALARNAME=scalar2 // the columns of the *.usr file must be
labeled
SCALARNAME=scalar3 // the columns of the *.usr file must be
labeled
SCALEINDEX=1 // optional: uses integer indices defined in
translateToVtk.cpp to set scale factor
Enter an integer option on the SCALEINDEX:
0: No scale, corresponding to a scale of
1.0
1: Custom scale, indicating that the SCALEFACTOR
tag will be used to specify a scale factor
2: Meters to feet, corresponding to a scale
factor of 3.28
3: Millimeters to feet, corresponding to a scale
factor of 3.28e-3
4: Inches to feet, corresponding to a scale
factor of 1.0/12.0
5: Meters (1:12) scale to feet, corresponding to
a scale factor of 12.0*3.28
SCALEFACTOR=.083333333 // optional: the scale factor
(default = 1, unless SCALEINDEX >1)
VR space is always in feet, so the scale factor tag must be in
feet. If using a SCALEINDEX of 0 or
1, comment out this line:
WRITEOPTION=1 // optional: 0=let vtk write the
file(default), 1=directly write ascii to disk
The Writeoption is no longer needed. Set it to
0 or remove it.
Use VE-Launcher to start a Builder shell. Set the working
directory to the directory where star.param is located,
then enter the following code:
loaderToVtkd -singleFile star.param -loader star -o [full
path to the output directory] -w file COMMAND TO SET FILE IN COMMAND
LINE OR STAR.PARAM FILE
After the code executes, it will dump a .vtu file of
the data into the specified directory.
First, write out an .avs file for the post-processed
data from Fluent and place it into the working directory. Use VE-Launcher
to open a Builder shell (see Section 9.2), making sure to set the working
directory to the directory where the .avs file is located.
Use this command to convert it.
loaderToVtkd –singleFile [AVS filename] –loader avs –o
[working directory] –w file
You will need to write out a .cas file for the
post-processed data from Fluent. Place it into your working directory.
Open a Builder shell from VE-Launcher. Be sure to set the working
directory to the .cas file's directory. You can convert the
fluent output file to a .vtu file with this command:
loaderToVtkd -singleFile [CAS filename] -o [working
directory] -outFileName [name of output filename] -loader cas -w
file
VE-Suite has the capability to display FEA datasets in the virtual environment, much like CFD datasets. However, the FEA data is primarily displayed as a surface on the object(s) of interest.
To display FEA data from an FEA dataset, select the Polydata icon and select the desired scalar for the FEA data.
You will need a .vtu file to create preprocessed data.
Start a Builder shell from VE-Launcher, being sure to set the working
directory to the .vtu file's directory. Verify that there is
a directory called POST_DATA in the same directory as the
.vtu file. If there is not, create one. Once the
POST_DATA directory is ready, type in
preprocessor. The first prompt will ask for a filename. Type
in the .vtu file's name. The second prompt will ask for a
directory to dump the data into. Type in the full path to the directory
where you want to put the preprocessed data. The program will then ask you
what you want to process. Your choices include:
Decompose Octrees:
Extract Surfaces:
Extract Isosurfaces:
Extract Cutting Planes:
Once you have made your choices, the program will execute and produce your preprocessed data.
If you want to extract cutting planes, you can specify the planes in
a .txt file instead of manually typing them in each time.
First, create a .txt file in the same directory as the
.vtu file and write your cutting planes in it using this
format:
1 //Number of x cuts
0.0 //X cuts
1 //Number of y cuts
0.0 //Y cuts
4 //Number of z cuts
3.26 3.39 3.42 3.73 //Z cuts
When you run the preprocessor, enter (1)Yes to extract
cutting planes. You will be asked how to set the number of cuts. Select
(2)Specify text file, then enter the name of your
.txt file. The preprocessor will pull the values for the
cutting planes from it.
Launch a Builder shell from VE-Launcher. In the VE-Launcher Shell window, enter the following:
vtkTo3DTexture
This will launch the translator interface. Select the desired parameters from the GUI and click Translate. Input parameters include:
Input directory: Directory containing the input
.vtk dataset files
Output directory: Directory to write out the texture data and the texture description files
Texture dimension: The resolution (~sampling rate) of the output textures
Grid type: Input .vtk dataset grid structure
A progress dialog will appear as the input .vtk files
are translated to three-dimensional texture data files that are usable in
VE-Suite.
Batch Mode
The translator can also be run in a batch mode. To run in batch mode, enter this on the command line:
vtkTo3DTexture -i /home/users/mcdoe/LTN/3D_Jets_Test/vtk -o /
home/users/mcdoe/LTN/3D_Jets_Test/jets_vti -x 32 -y 64 -z 32 /
home/users/mcdoe/LTN/3D_Jets_Test/Jets_Data
where:
-i specifies the vtk/vtu files' input
directory
-o specifies the output directory for the
three-dimensional vti texture files
-x is the x resolution for the texture
-y is the y resolution for the texture
-z is the z resolution for the texture
The last argument is the data input directory for
vt(u,k,s) files
The batch mode also supports parallel processing (MPI), which is convenient for large transient datasets. To run in batch mode with MPI, you must first install the MPI library. We recommend LAM/MPI. This is available for most Linux platforms. To run with LAM/MPI, a script should be created similar to:
#/bin/tcsh
setenv VE_SUITE_HOME /home/users/mcdoe/svn_VE_Suite/VE_Suite
&& source $VE_SUITE_HOME/VE_Installer/setup.tsh
vtkTo3DTextureMPI -i /home/users/mcdoe/LTN/3D_Jets_Test/vtk -o
/ home/users/mcdoe/LTN/3D_Jets_Test/jets_vti -x 32 -y 64 -z 32 /
home/users/mcdoe/LTN/3D_Jets_Test/Jets_Data
which should then be executed as follows:
mpirun -np 2 ./
If you need to write out star.cel,
star.vrt, and star.usr files from StarCD, follow
these instructions:
Launch StarCD
Ensure that a *.vrt and *.cel file are
written of the region of interest. This region can either be a
complete CFD model or a subsection of the model
Analyze data
Post-processing-->Load data
In the "File(s)" tab, click "open post file"
In the "Data" tab:
Scalar Data-->Turb Kinetic Energy
Vector Data-->Velocity Components UVW
Click Get Data
Click View Post Registers
To add other scalar values to store:
Click Operate at the bottom of the Post Registers window
Function-->Load vertex data-->turbulent energy (Registers 1-3 must contain vector data. Registers 4-6 must contain scalar data.)
Select register
NOTE:Although it is
necessary to use vertex data rather than cell data, using vertex
data might return an error. To solve this problem, copy the
previous command line and add the register number (e.g., enter
oper, getv, te, 5,)
Ensure that "using relative values" is selected
Click Apply to put data in an empty register
Click Update list
Repeat the previous steps to add data to registers 5 and 6 (pressure and viscosity)
The data is now stored. In the pro-STAR window:
Post-->save user data
Registers: all
File type: coded
Range: all vertices
Click Apply
Click Close
Manually close file (enter close *.usr)
File-->save as coded
Unclick boundary file
Click Apply
NOTE: Checked files are written out
Enter Close All
Table of Contents
The following is a list of links for the VE-Suite dependencies. Dependencies can be downloaded and built by the user from the following links or the pre-compiled binaries can be installed from the download page.
OpenSceneGraph (OSG) is used to manage the scenegraph (verson 1.2+)
VTK is used to render the visualization objects (version 5.0+)
CMake is needed to build the VTK
VR Juggler is used for management of the virtual environment (version 2.0.1+)
The dependencies are best installed in the following order:
CMake
VR Juggler
OpenSceneGraph
VTK
VR Juggler dependencies zip file
VR Juggler has its own set of dependencies if you are building it yourself:
GMTL 0.4.12+
Boost 1.33 1+
Cppdom 0.6.6+
openAL 0.0.8+
omniORB 4.1.0+
VRPN 0.7.03+
Java 2 SDK is needed for Juggler's java-based VRJconfig program.
wxWidgets is used to compile and run the GUI. (Click "download" on the left side menu to get to the files.) (version 2.6.2+)
Xerces is used to read and write XML. (Download xerces-c-current) (version 2.7.0+)
ACE/TAO is used for cross-platform communications. (ACE version 5.5+, TAO version 1.5+)
APR is used to generate the GUIDs. (version 1.2.8)
OPAL (Open Physics Abstraction Layer) is used as a wrapper to ODE for physics integration. (version 0.4.0)
ODE (Open Dynamics Engine) is used for physics integration. (version 0.7)
VE-Launcher was coded using Python. It can run in Python2.3 or higher. If you are running it from Python, you need to install these extensions for Python as well:
Windows: VE-Launcher requires these Win32 extensions if you are running it in Python for Windows.
VE-Launcher requires wxPython 2.6.3.3 if you are running it in Python.
To avoid dependencies problems during development, we have provided guidelines for using dependencies with VE-Suite. These are the guidelines the main VE-Suite development group follows and are provided as suggestions for other users.
Windows:
The developer must either download all the installers for a particular windows IDE and OS, or build all the dependencies for VE-Suite themselves.
The VE-Suite development team will maintain certain installers for all dependencies so that the external developers will have easier access to the current development tools.
The development libraries will be kept in the native directory structure for a respective library. This ensures that a developer is able to swap libraries as necessary for research purposes without having to change the build system.
Linux:
The developer must either download all of the dependencies' rpms, use their platform's respective package management system, or build all of the dependencies for VE-Suite themselves.
The VE-Suite development team will maintain rpm files for all dependencies so that the external developers will have easier access to the current development tools.
On Linux platforms, the dependency directory structure will be assumed to be include, bin, lib, and share as is the case for most libraries when the install target is used on a build system.
It is best to read the specific installation/build instructions for each dependency before attempting to build. The information provided includes specific details to allow VE-Suite to build/run correctly.
VE-Suite and its dependencies are currently built and tested using Visual Studio 8.0(2005).
You can find the development libraries at http://www.vesuite.org/external/deps/non-admin/.
Notes on installing dependencies:
TortoiseSVN - Used to check out and update VE-Suite from ISU's code repository.
After TortoiseSVN is installed, you can check out the code if you have an account registered with ISU's repository. Create a VE-Suite directory. Right-click on the VE-Suite directory and choose "Checkout..."
Alternately, if you get the VE-Suite source code as a compressed tarball, some unzip utilities may not maintain the correct directory structure. This can be fixed by unzipping the files on a Unix-based system and then moving the files to the Windows machine.
While the default locations for installations will work, we
recommend creating a directory in the root (C:) directory
to minimize the path lengths and the accompanying potential for typos
when configuring environment settings.
If you are installing individual components of VE-Suite on different desktops, it is only necessary to install the dependencies for that specific component. Below is a table listing the individual components and their specific dependencies.
Table 16.1. Component Dependencies
| Computational Engine | ACE/TAO, xerces-c |
| VE-Conductor (GUI) | ACE/TAO, xerces-c, wxWidgets |
| VE-Xplorer | ACE/TAO, OpenSceneGraph, VTK, VR Juggler |
To specify the build/run environment, perform a one-time edit of the
environment variables that are defined in the setup file,
setup.bat on Windows and setup.tsh/setup.sh on
UNIX/Linux platforms. If the paths of your environment variables contain
spaces, you need to put the directory containing the spaces in quotation
marks.
Example:
set VTK_HOME=C:/"Documents and
Settings"/user/Desktop/vtk
Important variables include:
VE_SUITE_HOME : The location of the top-level
VE-Suite directory
VJ_BASE_DIR : The location of VR Juggler
VJ_DEPS_DIR : The location of VR Juggler's
dependencies
VTK_HOME : Visualization ToolKit (VTK)
directory
WX_HOME : The wxWidgets install
XERCESROOT : The location of the xerces build
WX_ROOT : The location of wxWidgets install (should
be same as WX_HOME)
OSGHOME : The location of OpenSceneGraph (if OSG
version is built)
ACE_HOME : The location of the
ACE_wrappers directory
TAO_HOME : TAO location within ACE/TAO
Important variables for UNIX/Linux platforms only:
SCENE_GRAPH : Always set to OSG. Defines which scene
graph to build for VE-Xplorer
TAO_BUILD : Always set to TRUE. In the future this
flag can be sued to support other CORBA ORBs as well
CLUSTER_APP : Set to TRUE if VE-Xplorer will be used
on a graphics cluster
Table of Contents
VE-Suite is composed of three main software engines that coordinate the flow of data from the engineer to the virtual components being designed. The following sections will detail the design of each of these engines and describe how they contribute to the overall framework functionality.
To achieve the goals outlined for the project, a powerful and flexible user interface (UI) was implemented. Key features of the VE-Suite two-dimensional UI (VE-Conductor) are described in the following sections.
The UI makes use of platform independent libraries to enable the software to run on a wide range of computer hardware and operating systems. These platforms range from UNIX workstations to Pocket PCs and PDAs. This functionality is ideal for the virtual engineering-based system since users will frequently make use of handheld computing devices inside of immersive environments (e.g., cave-like systems at ISU-VRAC and NETL).
After reviewing a number of different UI libraries, WxWidgets was chosen. WxWidgets is one of the best cross-platform GUI packages available. It is well-maintained, has a large user base, and has ports for Windows, UNIX/X11, UNIX/Motif, OS2, Mac, and GTK. It also has an alpha version of a Windows CE port, which is under active development. This ensures that the user interface will run on all major platforms and even on Pocket PC-based PDAs.
The UI exists independently from the computational engine as a separate CORBA component. This functionality allows the UI to be attached and detached from an active simulation from any compatible computer on the network. As an example, this would allow a user to build and start a simulation and then detach from the computational engine. The user could then go to a different location, re-attach to the simulation, and regain monitoring and control functions.
To accomplish this functionality a CORBA IDL interface between the UI and the computational engine was defined. This CORBA interface provides all the necessary communication mechanisms between these components. The communication link is bidirectional and handles items such as model parameters passed to the computational engine and receives items such as execution status and results from the computational engine.
Another advantage of this design is the ability for multiple UIs to be attached to the same computational engine, allowing multiple users to monitor a simulation from different locations. A locking mechanism is used so that only one UI (controller) can change the design and inputs of the simulation. The UI also has the ability to connect to the graphical environment and control what graphical representations are shown for high fidelity data (i.e., contour planes, vector planes, streamlines, iso-surfaces) or for low fidelity data (i.e., gauges showing scalar information about plant performance, costing data, or emissions data).
Another important consideration for the UI design is extensibility. The UI is able to dynamically discover, identify, and load UI elements for new component models. This capability keeps the level of difficulty involved in integrating new component models to a minimum since it eliminates the need for modifications to the core interface when new models are added.
The dynamic discover and load capability is accomplished by loading user developed module UIs from dynamic link libraries (DLL in Windows) or shared libraries (SO lib in Linux/UNIX). A plugin C++ base class defining this UI-module interface is provided to all module developers. Developers can inherit from this class to create their own module UIs and then compile the resulting code into a DLL/shared library. The UI framework’s plug loader code will recognize the new module and bring that into its user-module library. By this mechanism, the core UI can plug in the third-party module-specific UI directly from binaries.
Another feature of the UI is unified control for all user interaction. This ensures that the user is not burdened with moving between different UIs to perform operations. There is a single UI with the ability to: 1) construct, specify, execute and monitor simulations; and 2) provide complete control of the three-dimensional virtual environment.
To provide this functionality, the UI is designed to communicate via CORBA to not only the computational engine, but also to the graphical engine. As was discussed for the UI-to-computational engine link, the use of CORBA with an appropriate IDL provides a flexible, detachable, and platform independent communication mechanism for this link as well.
The following figure shows the two-dimensional GUI. A list of available modules is maintained in a tree structure on the left side of the window, while the main canvas area shows the current simulation network.
The computational engine (VE-CE) is the core of the framework. Its duties are to construct, coordinate, schedule, and monitor plant simulation runs. It is capable of running a simulation containing a multitude of different types of models, each accepting and generating a myriad of data types. The computational engine is able to analyze a plant configuration, determine execution order, marshal system resources to create model instances, and coordinate the flow of data through the simulation framework. Tasks that require specific knowledge about a data type or model are relegated to either a detachable UI or to a specific model, thus keeping the computational engine generalized at a high level.
Important functions that the computational engine controls can be broken down into several pieces for explanation: plant configuration, data handling, error handling, relationship to detachable UI, scheduling, and relationship to models. Each of these is described in detail in the following sections.
The configuration of the plant, provided by a detachable UI, is the primary data structure used by the computational engine. Nearly all algorithms utilized, such as proper data flow, scheduling, and resource allocation depend on this topology.
Since there is an unlimited number of possible models capable of being integrated into the framework (with each model having a different input/output set), the computational engine operates with generalized datatypes. To address this requirement, we have designed the CORBA IDL interfaces between the computational engine and the component models to use mapped string blocks in combination with common dimensions of array data.
With the computational engine being the centralized intelligence behind a simulation run, all errors that occur while performing this task (whether originating within its own structure or on an attached model) must be properly handled within the context of this overriding structure. Thus, the computational engine has sophisticated error handling routines and messaging facilities to alert attached users. To fit into the detached UI paradigm, any errors that occur on an attached UI are handled locally.
The computational engine is a CORBA server into which a detachable UI client can connect. This detachable UI is where the user is able to create a plant configuration, set model inputs, start and stop execution of simulation, and view simulation results. Once a client-server connection is made, the engine is able to send results, messages, updates, and communications from other attached UIs in real time. The computational engine does not require a connection to a UI during a simulation run. Users can connect/disconnect at will to configure, modify, or monitor the simulation of a given plant configuration.
The computational engine makes use of advanced scheduling algorithms. The scheduler, at minimum, will be capable of handling single and embedded feedback loops, iterative solves and, eventually, transient simulation runs.
The computational engine, with its CORBA interface, is able to connect to the various component models available for a simulation. Information passed through this connection includes inputs (user supplied and stream data), outputs, results, and general messages. The importance of the CORBA interface being used for this purpose is discussed in detail in the Model Integration section below.
The graphical engine (VE-Xplorer) provides the core functionality for the virtual engineering aspect of the framework. VE-Xplorer enables the engineering analysis and design process to take place in a virtual environment. For maximum graphical performance on multiple operating systems, it is built upon VR Juggler, OpenGL Performer, and Kitware's Visualization ToolKit. This visual interface, controlled by the UI and the computational engine, is a graphical representation of the simulation under review.
The graphical engine is generalized to load data not only from comprehensive models, but also from other engineering sources, including results generated from the CMU Vision 21 planner software and other generalized datasets (e.g., experimental data from a test rig). The engine is also being modified to make use of the high level CORBA interface specifications used throughout the software framework. This interface allows the visualization engine to communicate directly with the component models, computational engine, and UI. To communicate with the graphical engine there is an external socket connection that is made between individual component models and the respective graphical objects. This connection allows large high fidelity datasets to be transferred to the graphical environment without interrupting the overall communication network.
The graphical engine is also designed to allow graphics objects to be added to the virtual environment just like the objects are added in the GUI. This allows the graphical environment to be a direct representation of the system being designed by the engineer. In much the same way that the GUI auto-discovers the plugins for use by the engineer, the graphical engine also dynamically discovers plugins. Unlike the GUI, the graphical engine is controlled by the network string that is created by the GUI. This represents a significant capability since the graphical engine has no a priori knowledge of the system under interrogation.
The Department of Energy is funding a collaborative effort to develop new computer simulation tools that are capable of modeling advanced, next-generation power plants. As part of this effort, Reaction Engineering International, Iowa State University, and Carnegie Mellon University have begun developing a virtual engineering-based computational framework to facilitate these demanding modeling efforts.
This new, open source framework provides significant features and capabilities including:
Distributed computing capabilities
Platform independence
Extensibility for component models
Modern user interface
Support for a hierarchy of component models (from detailed to simple)
Comprehensive graphics capabilities including support for immersive facilities
Component architecture software design
The VE-Suite framework provides capabilities to fundamentally alter the traditional simulation process. Instead of engineers working with a number of disparate computational models, it is now possible to have a tightly integrated modeling environment where models interact in a seamless manner. A sophisticated user interface provides easy user interaction, and comprehensive two-dimensional and three-dimensional graphics capabilities exist for viewing plant configurations and simulation results.
VE-Suite’s extensible software design allows users to easily incorporate component models and corresponding two-dimensional and three-dimensional graphical representations to create new, plug-and-play framework components. By design, the framework components can be distributed across computational resources (different computers connected to the internet or a local area network) to make the most efficient use of resources.
Additional details about VE-Suite are available in:
Swensen, D.A., Maguire, M., Yang, C., and Bockelie, M.J., "Computational Frameworks for Practical, Engineering Applications," presented at the SIAM Computational Sciences and Engineering Conference 2005, Orlando, Florida, USA, February 12-15, 2005.
Bockelie, M., Swensen, D.A., Denison, M.K., Maguire, M., Yang, C., Chen, Z., Sadler, B., Senior, C.L., Sarofim, A.F. "A Computational Workbench Environment for Virtual Power Plant Simulation", Contract DE-FC26-00NT41047, Final Report, December, 2004.
Huang, G., Bryden, K. M., and McCorkle, D. S., "Interactive Design using CFD and Virtual Engineering," In the Proceedings of the 10th AIAA/ISSMO Multidisciplinary Analysis and Optimization Conference, AIAA-2004-4364, September 2004.
Bryden, K. M., Ashlock, D. A., Corns, S. M.. Graph based evolutionary algorithms. submitted to the IEEE Trans Evol Comput.
Bryden, K. M., and McCorkle, D. S., "Virtual Engineering," in preparation to submit to the Journal of Computing and Information Science in Engineering.
Bryden, K. M. and McCorkle, D. S., "VE-Suite: A Foundation for Building Virtual Engineering Models of High Performance, Low Emission Power Plants," 29th International Technical Conference on Coal Utilization & Fuel Systems, Clearwater, Florida, 38-46 (2004).
McCorkle, D. S., Bryden, K. M., and Kirstukas, S. J.., "Building a Foundation for Power Plant Virtual Engineering," 28th International Technical Conference on Coal Utilization & Fuel Systems, Clearwater, Florida, 63-71 (2003).
McCorkle, D. S., Bryden, K. M., and Ashlock, D. A., "Planned Tournament Selection," Intelligent Engineering Systems Through Artificial Neural Networks - Proceedings of the Artificial Neural Networks in Engineering Conference, 13: pp 385-390 (2003).
McCorkle, D. S., Bryden, K. M., and Swensen, D. A., "Using Virtual Engineering Tools to Reduce NOx Emissions," in the Proceedings of ASME Power 2004, POWER2004-52021, pp 441-446, March 2004.
subversion
svn tortoise
trac
bugzilla
phpBB
docbook
visual studio
gnu tools
ddd D
ialogBlocks
Valgrind
openGL debuggers
py2exe
freeze
inno setup
rpm
dmg builder
Table of Contents
Please set environment var on Linux to limit coredump size to 10000000000
Table 21.2. Initialization
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Display all imagery correctly similar to documentation |
Table 21.3. Desktop Shortcuts
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Creates Launcher in Start menu after running scripts | ||||
| Creates desktop icons | n/a | n/a | n/a |
Table 21.4. Configurations
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Allows setting of dependencies | ||||
| Allows multiple dependency settings | n/a | |||
| Saves configurations | ||||
| Load configurations |
Table 21.5. Launching
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Choose any working directory | ||||
Loads simple .ves file from share/examples
directory | ||||
| Stores file name in recent file menu | ||||
| Loads file stored in recent file menu | ||||
| [Shell option correctly sets the environment] Launch shell | ||||
| [Shell option correctly sets the environment] at command prompt type: whatIsScalarRange | ||||
| [Modes] Desktop launches all component | ||||
| [Modes] Tablet launches ONLY Conductor | ||||
| [Modes] Visualization launches only Xplorer | ||||
| [Modes] Computation launches only CE | ||||
| [Modes][Custom] Under mode settings check Xplorer and NameServer only. | ||||
| [Modes][Custom] Launch Xplorer and NameServer | ||||
| [Modes][Cluster Mode] Able to launch in cluster mode | n/a | n/a |
Table 21.6. Shutting Down VE-Suite
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Desktop Mode-File->Quit closes Conductor and Xplorer | ||||
| VE-Xplorer->Shutdown Xplorer closes Xplorer | ||||
| All Windows dialogs close |
Table 21.7. Initial Material
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
Open/Load share/exampleDatasets/simple.ves
file | ||||
| Create New network | ||||
| Add Default Plugin to Design Canvas | ||||
| Submit Job (under dropdown menu and icon) | ||||
| Recent file menu updated correctly | ||||
| Close and repeat file opening with icons |
Table 21.8. CAD (Geom Config Dialog)
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Add Geometry Surface.0.75.stl | ||||
| Clone Geometry Surface.0.75.stl | ||||
| Rotate Clone (40,40,0) | ||||
| Translate Clone (-4,0,0) | ||||
| Add Brick Shader to Clone | ||||
Add eightCorners.stl | ||||
Add Material (red) to eightCorners.stl | ||||
| Toggle each geometry on and off | ||||
| Create assembly with any of these CAD files | ||||
| Translate assembly | ||||
| Add chrome shader to assembly | ||||
| Toggle assembly on and off |
Table 21.9. Dataset (Dataset Dialog)
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Add Steady State Data | ||||
Add Dataset 3scl.vtu | ||||
| Load dataset | ||||
| Translate, rotate and scale dataset |
Table 21.10. Navigation
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Translate along all three axes | ||||
| Rotate along three axes | ||||
| Translation step size slider varies | ||||
| Rotation slider varies | ||||
| Alternate rotate about users head | ||||
| Reset navigation position |
Table 21.11. Record Scene
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Create stored scene | ||||
| See if it updates the list | ||||
| Load stored scene |
Table 21.12. Attributes
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Add material to any geometry | ||||
| Add shader to geometry | ||||
| Change color to geometry | ||||
| Change background color |
Table 21.13. Viewpoints
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Create 3-6 viewpoints | ||||
| Fly to viewpoint | ||||
| Save viewpoint | ||||
| Load viewpoint | ||||
| Delete viewpoint | ||||
| Create a flythrough with viewpoints | ||||
| Start flythrough | ||||
| Change movement speed control | ||||
| Stop flythrough | ||||
| Delete flythrough |
Table 21.14. User Preferences (these are accessed by going to the File menu, then selecting Preferences, then Xplorer Settings)
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Ability to set a preference to have navigation pane open when launched | ||||
Reopen with navigation pane on when launched, with
.ves file | ||||
| Repeat with changing background color | ||||
| Repeat with Shut Down Xplorer option |
Table 21.15. Simple Dataset (located at
$INSTALL_DIR/share/vesuite/examples/simple)
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
Open simple.ves | ||||
| Open Visualization Tab | ||||
| Select first-scalar | ||||
| [Select Scalar Contour Generate] Contour at 45 in X direction | ||||
| [Select Scalar Contour Generate] Generate Contour at 45 in Y direction | ||||
| [Select Scalar Contour Generate] Generate Contour at 45 in Z direction | ||||
| Select steve's_vector | ||||
| [Select Vector Contour] Select Advanced | ||||
| [Select Vector Contour] Make the vectors more "Dense" | ||||
| [Select Vector Contour] | ||||
| [Select Vector Contour] Generate Vector at 50 in X direction | ||||
| [Select Vector Contour] Generate Vector at 50 in Y direction | ||||
| [Select Vector Contour] Generate Contour at 20 in Z direction | ||||
| [Select 200_to_1000] Select Isosurface | ||||
| [Select 200_to_1000] Select Advanced | ||||
| [Select 200_to_1000] Select first-scalar | ||||
| [Select 200_to_1000] Compute an isosurface at 35 | ||||
| [Select Streamlines] Select Seed Points | ||||
| [Select Streamlines] Change number of seed points in each direction | ||||
| [Select Streamlines] Compute Streamlines | ||||
| [Select Streamlines] Select Advanced | ||||
| [Select Streamlines] Change the Line Diameter | ||||
| [Select Streamlines] Compute Streamlines | ||||
| Polydata Datasets | ||||
| [Mouse Navigation (Desktop configuration)] Pan | ||||
| [Mouse Navigation (Desktop configuration)] Rotate | ||||
| [Mouse Navigation (Desktop configuration)] Zoom | ||||
| [Mouse Navigation (Desktop configuration)] Display polydata dataset | ||||
| Free of coredumps (Check in working dir) |
Table 21.16. Texture Based Datasets
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| Open sample texture based dataset | ||||
| Bring up scalar tools window | ||||
| Display with texture scalar range of 41 to 92 | ||||
| Enable isosurface | ||||
| Test timesteps |
Table 21.17. Engine (located at
/home/vr/Applications/TSVEG/Test_Data/EngineTest)
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
Open the EngineTest.ves file | ||||
| Open Visualization Tab | ||||
| Select Velocity Magnitude scalar | ||||
| [Select Scalar Contour] Generate Contour at 45 in X direction | ||||
| [Select Scalar Contour] Generate Contour at 45 in Y direction | ||||
| [Select Scalar Contour] Generate Contour at 45 in Z direction | ||||
| Select Velocity Vector | ||||
| [Select Vector] Select Advanced | ||||
| [Select Vector] Make the vectors more "Dense" | ||||
| [Select Vector] | ||||
| [Select Vector] Generate Vector at 50 in X direction | ||||
| [Select Vector] Generate Vector at 50 in Y direction | ||||
| [Select Vector] Generate Contour at 20 in Z direction | ||||
| [Select Streamlines] Select Seed Points | ||||
| [Select Streamlines] Change number of seed points in each direction | ||||
| [Select Streamlines] Compute Streamlines | ||||
| [Select Streamlines] Select Advanced | ||||
| [Select Streamlines] Change the Line Diameter | ||||
| [Select Streamlines] Compute Streamlines | ||||
[Re-create the EngineTest.ves file on your
own](Base this upon the engine.param file) | ||||
[Re-create the EngineTest.ves file on your
own] Load in all geometry (translate and scale) | ||||
[Re-create the EngineTest.ves file on your
own] Translate and rotate geometry properly | ||||
[Re-create the EngineTest.ves file on your
own] Load in dataset | ||||
[Re-create the EngineTest.ves file on your
own] Translate and rotate dataset properly | ||||
[Re-create the EngineTest.ves file on your
own] Save your created file as [user].ves | ||||
[Re-create the EngineTest.ves file on your
own] Exit VE-Suite and re-open with new ves file | ||||
| Free of coredumps (Check in working dir) |
Table 21.18. Simple Datasets (located at
/home/vr/Applications/TSVEG/Test_Data)
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| [StarCD 4.* Dataset] Translate dataset | ||||
| [StarCD 4.* Dataset] Preprocess cutting planes | ||||
| [StarCD 3.2* Dataset] Translate dataset | ||||
| [StarCD 3.2* Dataset] Preprocess cutting planes | ||||
| [Fluent (AVS) Dataset] Translate dataset | ||||
| [Fluent (AVS) Dataset] Preprocess cutting planes | ||||
| [Ensight (ens)] Translate dataset | ||||
| [Ensight (ens)] Preprocess cutting planes | ||||
| [Ansys Dataset] Translate dataset | ||||
| [Ansys Dataset] Preprocess cutting planes | ||||
| [Texture Based Dataset] Translate dataset | ||||
| [Texture Based Dataset] Preprocess cutting planes | ||||
| [REI (BANFDB)] Translate dataset | ||||
| [REI (BANFDB)] Preprocess cutting planes | ||||
| [Dicom (dcm)] Translate dataset | ||||
| [Dicom (dcm)] Preprocess cutting planes | ||||
| [MFIX (mfix)] Translate dataset | ||||
| [MFIX (mfix)] Preprocess cutting planes | ||||
| [Plot3D] Translate dataset | ||||
| [Plot3D] Preprocess cutting planes |
Table 21.19. Builder Utilities
| Windows | RHEL_4 | SuSE_32 | SuSE_64 | |
| These should be tested | ||||
| whatIsScalarRange | ||||
| vtkTo3DTexture | ||||
| removeVtkPointData | ||||
| removeVtkCellsOutsideBox | ||||
| meshViewer | ||||
| mergeVertices | ||||
| makeVtkSurface | ||||
| createMiniFlowData | ||||
| convertVTK2Binary | ||||
| convertVTK2Ascii | ||||
| convertSurfaceFileToStl | ||||
| compareScalars | ||||
| combineFluentParticleFile | ||||
| appendVTK | ||||
| addNormals2Poly | ||||
| May still be in use (but do not know what data to test with) | ||||
| appendVTK | ||||
| combineFluentParticleFile | ||||
| Outdated (but keep in build) | ||||
| moveFieldToPointData | ||||
| convertCellDataToPointData |
Table of Contents
There are four programs that have to be built and installed to run VE-Suite. Consult Chapter 1, Installation and Setup, for the current version requirements. In order of install they are:
We recommend reading the README files before compiling these programs.
Raw code files for UNIX will generally be in the .tar
format. A .tar file has to be unpacked after it is
downloaded. For help with this process, refer to the instructions in the
VR Juggler tutorial "Getting Started". There is a section on
.tar files that lists several different possible commands for
the command line invocation. The two most common commands are:
gunzip filename.tar.gz
tar -xvf filename.tar
bunzip2 filename.tar.bz2
tar -xvf filename.tar
You might be asked to download into a source folder but actually install the program into a separate folder. There is a special command that is appended to the compile command that will do this:
--prefix=/directory/to/save/to
The basic compile command itself may be slightly different for various programs.
Once the TAR file has been downloaded and unpacked, you can find
which dependencies are already on your system by using the command
rpm -qa | grep -i [package] where package is the
program name you are looking for.
When you encounter a dependency you do not have, you will have to download, unpack, and install it using the same process as for the earlier programs.
Many installs involve CMAKE, which has its own set of steps.
Go to the code directory
Create a child file
Go in to that child file and type ccmake ../ to
compile the file
Type make
Type make install
Some downloads may not be available as compressed files. Occasionally you will have to download code from an SVN server. There is a continuously updated online book that is useful for this.
Table of Contents
Line length should be limited to 80 characters.
Do not use tabs to structure the code. Use 3-4 spaces for each indentation.
Always leave one empty line before each comment.
Always keep methods in the same order in the header and implementation files.
The commenting style below is designed to allow for automatic
generation of documentation using Doxygen, while also maintaining
readability. There are different places in code that comments can appear
and for each there is a different style. Every method in the header
(.h) file must have at least a brief comment; detailed
comments are optional. Both brief and detailed comments are described
below. Comments will appear in the doxygen-generated HTML files.
Documentation in the implementation (.cxx/.cpp) file is
primarily for human comprehension.
Brief comments
Brief comments are a single line and are not separated by white space from the code they describe, but are separated by white space if they appear before a detailed comment. For clarity, keep the brief descriptive comment that is written in the header file above each method in the implementation file as well.
//!A brief comment about this code
code-code-code-code-code
//!A brief comment above a detailed comment
///////////////////////////////////////////
Detailed comments
Detailed comments are more than a single line and are separated by whitespace above and below.
//!The method's brief comment
//////////////////////////////////////////
/// Detailed comments refer to code below
them
/// may include parameter declarations
/// may also include lists
/// ended with more slashes
//////////////////////////////////////////
code-code-code-code-code
Inner-method comments
Inner-method comments are any non-code text within a method
implementation. Since style dictates that code should not be
implemented within the header (.h) file, Inner-method
commenting should only appear in the .cpp/.cxx etc.
files.
Brief inner-method
As with brief comments, brief inner-method comments should have a line of whitespace before and no whitespace separating them from the code they refer to.
//Brief Inner-method comment, only a single
line
code-code-code-code-code
Detailed inner-method
As with detailed comments, detailed inner-method comments should have leading and trailing lines of whitespace.
code-code-code-code-code
/****************************************************************************//*
* Detailed inner-method comment, always multiple
lines
* no requirements regarding content
* also separated by whitespace
*******************************************************************************/
code-code-code-code-code
Documentation commands
Documentation commands are generally preceeded with a
\ or @ and give doxygen extra information
about that particular comment or line. For this format, commands will
only appear in detailed comments. There is a complete listing of these
commands at the doxygen website. Some of the commonly used commands
are:
\param --starts a description of a function parameter
\return --starts a return value description for a function
\class <name> --indicates a comment block contains documentation for a class of "name"
\exception <exception-name> --starts a description for a named exception
\warning --starts a paragraph where one or more warning messages may be entered
\bug --starts a paragraph where one or more bugs may be described
\arg --simple one line description of an argument
\defgroup <name> (group title) --indicates that a comment block contains documentation for a group of classes, files, or namespaces
\ingroup(<groupname>[<groupname><groupname>]) --if the command is place in the comment block of a class, file, or namespace, then it will be added to the group or groups identified by "groupname"
\addtogroup <name> [(title)] --defines a group just like \defgroup but in contrast to that command, using the same "name" more than once will not result in a warning, but will cause merged documentation and the first title found in any of the commands. The title is optional, so this command can be used to add a number of entities to an existing group using @{ and @}
\weakgroup <name> [(title)] --can be used exactly like \addtogroup but has a lower priority when it comes to resolving grouping definitions
\b <word> --displays the word using a bold font
\c <word> --displays the word using a typewriter font
\e <word> --displays the word in italics
\p <word> --displays the word using a typewriter font
\code --starts a block of code. It is interpreted as C/C++ code.
\endcode --ends a block of code
\&, \$,\#,\<,\>,\%,\@,\\ --escape characters to display &,$,#,<,>,%,@,and \ respectvely.
Table of Contents
The best information regarding downloading and installing Doxygen can be found here.
***For the time being, this applies only to Linux builds*** In your
OS terminal, navigate within VE-Suite to the file named doxygen, which
will contain all of its doxygen files. The initial part of the filepath
will depend on your install, but the end of it will be: <VeSuite
filename>/share/docs/doxygen. To make sure that the
configuration file exists, type doxygen -g, then type
doxygen Doxyfile. This will generate documentation using the
default settings. If you wish to create a differently named file to
contain documentation settings, this can be accomplished with
doxygen -g <filename> and doxygen
<filename>. The default in VE-Suite is Doxyfile.
Open the html folder inside doxygen. Find the
index.html file. You can click on it to open it in a browser
and if you have run doxygen Doxyfile. It will display a
hierarchy of documentation for all your generated files.
To edit the settings for the type of documentation that will be created when doxygen is run, read through the Doxyfile. Each variable is commented, and you can edit the values given to those variables in the Doxyfile.
This website contains a more detailed explanation for creating the configuration file (Doxyfile) and running Doxygen: http://www.stack.nl/~dimitri/doxygen/starting.html
Table of Contents
This documentation was created using DocBook and the XML editor XMLmind. To use XMLmind:
If Java is already installed on your system, download and install the standard edition of XMLmind free of charge here. If you do not have Java, you can download the standard edition bundled with Java.
Start XMLmind.
Go to the File menu and select New...
The VE-Suite documentation was created as a modular DocBook v5+ document separated by chapter. To create a new chapter, choose Chapter from the DocBook v5+ template list.
User guides and online help for XMLmind can be found here.
The following DocBook manuals are also available free of charge online:
http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html
http://www.sagehill.net/docbookxsl/
See Chapter 10.10, DocBook Documentation, for more DocBook coding guidelines specific to this document.
Table of Contents
Table of Contents
Features added at the assembly level of the model tree that affect parts' appearance do not translate through PolyTrans. This includes cuts, holes, and welds made at the assembly. The following workarounds are available:
Open the affected parts individually and apply the operation necessary to transform the part at the part level
Activate the parts and use references in the assembly to cut the parts individually. This method better follows the design intent of the assembly-level operations, but it can cause circular references if it is implemented improperly.
Family tables can be used in Pro/E to define parts with repeated features and to define parts in different locations in the same assembly. This can simplify the creation of a large assembly, but problems can arise when the assembly is translated through PolyTrans.
If the appearance if individual parts is dictated by a family table (e.g., a spring's length and compressions are determined by a family table), parts appear in the generic instance in the translation.
A workaround for this problem is to save a copy to a different location and change the name of every part. This strips the family table information from the parts. A backup of the model does not strip the family tables and will not fix the translation problem.
Items can be assembled in location using a family table. This can show two or more locations for an individual item (e.g., a stored location and a use location).
A workaround for this is to open the instance that will be translated and make a backup of this assembly. If two different locations are desired in the translation, make two different backups, one of each location.
There are two separate issues with coloration:
Items that seem to be colored in Pro/E appear without color in the translation
Colors within Pro/E do not appear to match colors within PolyTrans or colors within VE-Suite
This is usually a result of coloring at the assembly level. Most models that have this problem do not exhibit whiteness throughout the entire model; they only have a few parts with blinding whiteness.
To fix this, clear all surfaces at the assembly level after saving any colors that you want from the model. Then create a map-key that colors, saves, and closes a part. After the map-key is created, you can color the model by opening each part and activating the map-key.
Colors in Pro/E do not appear to match the colors within PolyTrans and VE-Suite because the lighting scheme in each program is different. The lighting scheme in Pro/E is relatively easy to change, but there is no known way to save the changes to apply automatically between sessions of Pro/E or to new windows that are opened. Changing the lighting within VE-Suite is much more difficult.
If you have missing parts in your Pro/E assembly, the following steps should solve the problem.
On the Hierarchy Optimizer, press the Option...
Disable the "Delete hidden objects" checkbox
After import, select "Unhide all" from the Edit menu of the "Selector Window" menu. Those items will be on blanked layers according to Granite terminology.
To import Pro/E hoses or cables, first save the data in the Pro/E neutral format. This format will preserve the hose and cable surfaces so they can be imported into PolyTrans and then into VE-Suite. During the import of the neutral format, choose a fine-grained tessellation so the hoses and cables have a realistic appearance.
The best way to import data from Bentley software is to use the u3d file format. This will preserve the hierarchy in the CAD assembly and preserve the BIM data potentially in the Bentley exported data.
The best file format for working with AutoCAD is the 3D AutoCAD format, or the DWF format. When importing data, uncheck the "import text" option under the Options dialog.
If you do need text imported from the AutoCAD file, choose to export it as text in the osgPTExporter rather than as 3D data.
Always import PMI (Production Manufacturing Information) and use the highest level LOD for most cases. If you need to preserve the CAD hierarchy, do not optimize the hierarchy during import.
Table of Contents
Users who want to customize how Xplorer starts can launch it from the command line. Here is how the command should be set up:
ves_xplorer : Executable call. The name may vary,
depending on how VE-Suite was built.
-ORBInitRefNameService=corbaloc:iiop:localhost:1239/NameService
: CORBA arguments. Xplorer accepts any CORBA arguments passed to
it.
/home/users/mgroves/VE-Suite1.0.3/RHEL_4/share/stereo_desktop/desktop.jconf
: Juggler configuration files. If a file is passed to Xplorer, it is
read as a Juggler configuration file.
-VESDesktop 1280 1024 : Two flags can be set for
Xplorer:
-VESDesktop [height][width]: Runs Xplorer in
Desktop Mode. [height] and [width] are
the screen's dimensions.
-VESCluster [master computer name]: Runs
Xplorer in cluster mode. [master computer name]
should be the computer name of the master in the graphics
cluster.
This method of launching Xplorer is only needed in rare cases.
The new tools created to integrate VE-Suite will be described in this document. The assumptions are that users have access to Aspen and that they are familiar with general VE-Suite operations.
First, use the instructions outlined in Chapter 3, Creating Content in VE-Suite to launch VE-Suite.
In VE-Conductor, go to the File menu and click on Run ..
Navigate to VE-Suite's bin directory. In Files of type,
select Executable files (*.exe), click on ves_psi.exe, and click
Open.
In the VE-PSI dialog box that opens, click Start.
VE-Conductor will will display "Successfully registered ASPENUNIT" if everything performed correctly
In the VE-Conductor window, double-click on the Aspen Unit icon to create a plugin.
Right-click on the APPlugin icon, go to Aspen, and click Open.
Ensure that both a .apw and .bkp file have
been created, then use the dialog box to load the Aspen Plus project.
Once the project has been chosen, you will see a network diagram of the Aspen flowsheet similar to what you see in Aspen. The Aspen flowsheet will also be displayed and available.
Once you have loaded the Aspen flowsheet, you will be able to work with Aspen through the VE-Suite right-click menus.
The Aspen operation name is shown below.
When you choose to investigate input variables, the parameters dialog allows any variable to be viewed for a specific unit operation and modified. This is also true for the results, except that the user is unable to change the results.
Inputs:
Results:
Once you change an input, the flowsheet can be run in Aspen by right-clicking on the APPlugin in the VE-Conductor network window, selecting Aspen, and clicking Run.
In addition to being able to run the Aspen flowsheet in traditional modes, there is also a three-dimensional mode that can be viewed by going to the VE-Xplorer menu in VE-Conductor, selecting Graphical View, and clicking on Network.
Table of Contents
In object-centered engineering, objects carry with them context and meaning as well as the ability to be modified by the user and should be able to change the way they are represented at run time by manipulating the information they contain. Most of all, an engineering object must have the ability to self-discover and adapt to other objects that may need to exchange information with that particular instance of the object. Information that is exchanged with other objects must be able to be managed internal to an engineering object without outside assistance from the user.
Engineering objects help manage complexity because they manage information in an object-oriented method in that information is grouped based on its physical counterpart. Within engineering objects, even if information is stored within disparate software packages, the user interface into the object is through a single engineering object interface. In addition, the user can decide at what level of immersion he or she wishes to interact with the engineering object.
Creating an advanced engineering framework based on engineering objects requires the following three tasks to be implemented:
Transparent interfaces. A transparent interface results in data independent methods being exposed to the user to enable data from any domain to be passed through the interface. The goal of transparent interfaces is to avoid strong typed methods that are attached to a specific problem domain.
Implementation of object-oriented principles. To enable virtualized systems to be created, the methods that enable the objects to be created for this engineering framework will include modularity, hierarchy, abstraction, and design patterns to be utilized with engineering objects. These qualities will be exhibited in the engineering objects constructed here and will be supported by the engineering framework. Through the use of transparent interfaces, modularity, hierarchy, abstraction, and design, patterns can be implicit in terms of the capability that the framework can support.
Emergent behavior. TThe engineering framework will enable emergent behavior in two ways. First, the structure of the information that is received by the computational units and by the core engines will provide key reference data so that UIs can be constructed, three-dimensional graphical representations can be constructed, and computational units can gain information about what is upstream or downstream of them without user intervention. Second, any computational unit will be able to query the rest of the virtual environment for data if the respective unit requires other inputs to perform its tasks. This querying capability also occurs without user input and enables the computational unit to exhibit some autonomous behavior.
The core components of VE-Suite require several changes to support these tasks. These needs will be met through the extension of the current VE-Open CORBA interface, implementation of an XML Schema and respective API, and extension of VE-Xplorer to support the display of engineering objects in a virtual world. Other changes will be made to VE-Conductor and VE-CE.
XML schemas provide the basic structure by which information can be transferred within the VE-Suite engineering framework. While the ontology provides the broad framework that computers use to classify information sources without human input, the schema provides the means by which the data can be packaged to hold the information provided by a particular source. For example, the ontology defines an object that can be a human or an information provider. These objects, when broken down into an XML document, would be composed of veDataValuePairs and other veXMLObjects, described below. An example of such a document will be illustrated below, but first the basic XML elements that compose the description of an object will be described.
The schema is composed of a few key XML element types. The first type is the veXMLObject element:
<xs:complexType name="veXMLObject">
<xs:attribute name="objectType" type="xs:string" use="optional" />
<xs:attribute name="id" type="xs:ID" use="optional" />
</xs:complexType>
This element type is the basis for all other elements within the VE-Open schema, enabling any other element type within the schema to be embedded or referenced in a generalized manner. This enables abstraction, hierarchy, and modularity to be embedded in the schema and is the enabling factor for these qualities to be present in the objects that the XML schema describes. Although a formality, this element type enables the logic to be complete when embedding and referencing derived veXMLObjects in other element types. The functionality that veXMLObject enables will be illustrated below in veCommand. The veCommand is the element type that is passed in the Query functions described earlier.
The second element type is the veDataValuePair:
<xs:complexType name="vecommand">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element name="command" type="xs:string" />
<xs:element name="parameter" type="veDataValuePair" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
The veDataValuePair type holds a descriptive name about the data it contains as well as a veXMLObject or raw xs:anyType. This flexibility enables veDataValuePair to be a generic container element that holds any form of data being processed by a particular object. Note that a veDataValuePair is a complete extension of a veXMLObject. This extension permits a veDataValuePair to be embedded within another veDataValuePair.
The third element type is veCommand:
<xs:complexType name="vecommand">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element name="command" type="xs:string" />
<xs:element name="parameter" type="veDataValuePair" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
This element type contains a descriptive name for the command in addition to an xs:sequence of veDataValuePairs. The command is constructed to enable any object to request or send a series of veDataValuePairs with information about the potential application of the data contained within. Because a veDataValuePair can contain any veXMLObject that is derived for the VE-Open XML schema, a veCommand can be used as the overall container to transmit information about objects and the attributes used to describe them. This information is transferred in the Query methods and the SetNetwork functions.
The previous three elements described (i.e., veXMLObject, veDataValuePair, veCommand) are the core building blocks of the VE-Open XML schema. Each of the following elements described will use the key elements in the construction of the descriptors for an object. veParameterBlock is a general component that contains information about general information sources within VE-Suite:
<xs:complexType name="veParameterBlock">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element name="blockID" type="xs:unsignedInt" maxOccurs="1" minOccurs="1" />
<xs:element name="blockName" type="xs:string" />
<xs:element name="transform" type="veTransform" minOccurs="0" maxOccurs="1" />
<xs:element name="properties" type="veDataValuePair" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
An example of a parameter block would be a reference to a VTK dataset. The property element is configured to maintain a list of custom elements for describing a particular information source. This list of elements may also contain a list of hardware specifications for a sensor array or for a CFD solver configuration.
CADNode describes the geometrical representations that are stored for a particular object.
<xs:complexType name="CADNode">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element name="parent" type="CADAssembly" maxOccurs="1" minOccurs="0" />
<xs:element name="transform" type="veTransform" minOccurs="1" maxOccurs="1" />
<xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" default="Assembly" />
<xs:element name="type" type="xs:string" />
<xs:element name="attribute" type="CADAttribute" maxOccurs="unbounded" minOccurs="0" />
<xs:element name="activeAttributeName" type="xs:string" />
<xs:element name="animation" type="CADNodeAnimation" />
</xs:sequence>
<xs:attribute name="visiblility" type="xs:boolean" />
<xs:attribute name="physics" type="xs:boolean" />
<xs:attribute name="opacity" type="xs:double" use="optional" default="1.0" />
<xs:attribute name="makeTransparentOnVis" type="xs:boolean" default="true" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
The CADNode contains two unique features. First, the CADNode does not maintain its own geometrical information, but references a file that contains this information. Second, the element can contain information about how to apply high-fidelity lighting capabilities. These are stored in the attribute element. This element contains a CADAttribute, which maintains a GLSL program embedded in the CADAttribute.
The following veXMLObjects will be described to provide context for the XSLT example that follows. These elements are used to construct the connectivity between virtual objects that are modeled in a system. The first element examined is a vePoint:
<xs:complexType name="vePoint">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:attribute name="xLocation" type="xs:unsignedInt" use="required"/>
<xs:attribute name="yLocation" type="xs:unsignedInt" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
A vePoint is primarily used by the software within VE-Suite that renders graphical representations of the network schematic for the system under review. vePoint is composed of two unsigned integers representing the X and Y locations of the point. Data types for a point are unsigned integers so that graphical widgets libraries can easily render the point location. Graphical widgets libraries typically work in whole numbers rather than decimal values. The second element utilizes vePoint and is a veLink:
<xs:complexType name="veLink">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element name="fromModule" type="veDataValuePair"/>
<xs:element name="toModule" type="veDataValuePair"/>
<xs:element name="fromPort" type="xs:unsignedInt"/>
<xs:element name="toPort" type="xs:unsignedInt"/>
<xs:element maxOccurs="unbounded" minOccurs="2" name="linkPoints" type="vePoint"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute use="optional" type="xs:string" name="type"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
A veLink is composed of the necessary components to link one system component to another. The descriptors for the two modules that the link couples are fully described in addition to the necessary information to draw the link. This choice was made so that, upon obtaining the link, the software would not only be able to describe the information in the link, but would also be able to draw it.
The third element for a network description in VE-Suite is the veNetwork:
<xs:complexType name="veNetwork">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="link" type="veLink"/>
<xs:element maxOccurs="6" minOccurs="6" name="conductorState" type="veDataValuePair"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="tag" type="veTag"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
It should be noted that the veNetwork element is relatively simple, but builds on the previous two elements for full description. A series of links composes veNetwork and provides information about how the network should be rendered by VE-Suite’s rendering software. veNetwork is essentially a graph composed of edges (e.g., veLinks) and vertices (e.g., veModels). The representation of veNetwork follows closely on that defined by the DOT language utilized by GraphViz. While the DOT language is not utilized internally by VE-Suite, this task remains as future work to leverage the DOT language in addition to the use of the Boost Graph Language. These tools enable VE-Suite to use graph decomposition algorithms and detection algorithms to determine disconnected and feedback sections of graphs.
As noted previously, the veModel represents the nodes on the graph. The veModel builds on all of the previous elements and has the main responsibility for containing the inputs, outputs, CAD, and raw stream data for a particular model representation. The veModel is the data container for an object. In reference to the classification of objects, the veModel contains the raw data that would tell other objects about itself. In addition to containing the object’s raw representational data, the veModel can also contain a veSystem, which will be described later. The purpose of this embedded element is to provide the user with the ability to:
Create a hierarchical assembly of complex objects
Embed a third-party solver into a broader simulation
This capability provides one of the main components that enable the core VE-Suite software framework to support a broad range of problem domains.
<xs:complexType name="veModel">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="ports" type="vePort"/>
<xs:element maxOccurs="1" minOccurs="1" name="iconLocation" type="vePoint"/>
<xs:element maxOccurs="1" minOccurs="0" name="icon" type="xs:string"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="results" type="vecommand"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="inputs" type="vecommand"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="informationPackets"
type="veParameterBlock"/>
<xs:element name="geometry" type="CADNode"/>
<xs:element maxOccurs="1" minOccurs="0" name="modelAttributes" type="vecommand"/>
<xs:element maxOccurs="1" minOccurs="0" name="modelSubSytem" type="veSystem"/>
</xs:sequence>
<xs:attribute name="vendorID" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
The key components in the veModel element are the veParameterBlock, CADNode, vecommand, and veSystem elements. These elements provide the necessary information for each core software engine in VE-Suite to produce the proper representation for the object. For example:
If an object does not have CAD data, then nothing is rendered for the object.
If the object does not have outputs, then other objects will not be able to gather data from it.
The attribute element within the veModel contains the classification data for other objects to determine how to handle data from a particular object. Currently, the classification data is limited and further implementation is left for future research.
The veSystem element is the overall element that links the disparate veModel and veNetwork elements. It is also the main element that is saved when writing out a ves file (i.e., the DOMDocument storing all of the objects) from VE-Suite. In addition to establishing a relationship between veNetwork and veModel, it also enables systems to be embedded within models. This element provides the capability to construct complex engineering objects within VE-Suite.
<xs:complexType name="veSystem">
<xs:complexContent>
<xs:extension base="veXMLObject">
<xs:sequence>
<xs:element type="veModel" maxOccurs="unbounded" minOccurs="1" name="model"> </xs:element>
<xs:element type="veNetwork" minOccurs="1" maxOccurs="1" name="network"> </xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
The veSystem element also provides the foundation to link multiple third-party solvers together. For example, when integrating an Aspen Plus flowsheet with another solver, the Aspen Plus solver and the other solver each looks like a single system to the VE-CE. Within each of the systems may reside complex subsystems, which are handled by their respective solvers. Any subsystem corresponds to a single computational unit connected to the VE-CE, which does not mean that subsystems cannot be broken in terms of information transfer across subsystem boundaries.
The changes in VE-Conductor enable real-time information retrieval and queries from the computational units connected to VE-CE. Because of these changes, the user can query a unit for subsystem information from a third-party embedded network solver. The user can query for input and result parameters from any computational unit attached to VE-CE. The results and input data are provided in a browser-like user interface to handle display and editing for query-enabled units. A developer can override this base functionality with a specific plugin to handle the respective query-enabled unit. As noted previously, the unit-specific data is all accessed in real time by the user. This enables the user to edit and interact with the system under investigation in the three-dimensional environment created through VE-Suite while simultaneously interacting with a computational unit to make low-level changes to the flowsheet. This workflow is possible through the implementation of the query interfaces in VE-Suite.
The changes to VE-CE have turned it into a data proxy that is responsible for scheduling the execution of various units and the transfer of information and queries between units. This enables VE-CE to be run on a low-powered gateway computer, even when the network data is large and must be passed through the VE-CE interfaces. This design is beneficial because it enables the computational units and VE-Conductor to be run anywhere on the Internet and to interact transparently through a firewall. In addition, it enables VE-CE to promote emergent behavior within the computational units by proxying the data without encumbering the user with those requests. When operating with a process simulator as one of the units in the VE-Suite framework, VE-CE passes commands from the user through to the respective unit. The unit is then responsible for sending the information on to the respective software package.
As revised, VE-CE will not store unit input parameters as it did before; rather, VE-CE only parses the top-level system. Subsystem elements are assumed to be subsystems that will be managed by their respective units. This design enables VE-CE to scale as the subnetworks within a simulation expand. However, there is still not a direct link between VE-Conductor and the computational unit. VE-CE is the proxy for all calls.
The changes to the computational unit support a command-driven software interface through the implementation of unit wrappers to accept an XML-formatted command through the query interface:
string Query(in string commands)
The computational unit parses the XML command sent from the VE-CE and extracts the command element to determine what is needed by the engineer. For each predefined command, a command handler is implemented to perform the specified action. Following is a list of current predefined commands supported by computational units. This list will expand as needed in the future.
"getNetwork" retrieves the flowsheet information from a third-party solver so VE-Suite can draw the network and enable the user to query individual unit operations for results information
"getModuleParamList" returns the list of available parameters for a given unit operation
Once the user has chosen a specific parameter, the properties for that variable are queried via the "getParamProperties" command and displayed to the engineer
Table of Contents
To install VE-Suite:
Run the dependencies installer (vesuite_deps1.1.7.exe) and make a note of the folder
Run the VE-Suite installer (vesuite1.1.7_11671.exe) and make a note of the folder location
Note: You will need to know the folder locations later, so be sure to remember them or write them down.
To start VE-Launcher:
Double-click on the VE-Suite shortcut, which will be located on the desktop after VE-Suite is installed
Point VE-Launcher to its dependencies. This directory should be named VE_Suite.#.#_Dependencies
Once you have set the dependencies directory, click OK to open the VE-Suite Launcher window
Click the Launch VE-Suite ubtton to start VE-Suite
Note: You can find more information about VE-Launcher's settings in Chapter 12 of the VE-Suite documentation.
To view sample data in VE-Suite:
Click on the File menu, then click Open ...
Navigate to the VE-Suite install location, then to the
share/vesuite/examples/simple directory
Click on simple.ves to select it, then click Open
to load it in VE-Suite. If the scene is not initially visible, hold
down the right mouse button and drag up in the VE-Xplorer window to
pull the camera back.
To create a new plugin:
Use VE-Launcher to start VE-Suite, or click on the New Document button to clear the design space
Double-click on the Available Plugins folder in the VE-Conductor Network window
Double-click on the DefaultPlugin folder that appears below the Available Plugins folder
Right-click on the gray DefaultPlugin box that appears in the pane on the right side of the Available Objects window to access the plugin's menu, and select the Geometry Config option
A new window, the CADTree Manager, will open on the design canvas. To select a geometry file, right-click on the Model_Geometry icon in the canvas and select Add Node..., then Load CAD file...
Another window will open. Choose the file type, then select the file and click Open
Name the object you loaded, then click OK to insert it into the plugin
Click Close on the CADTree Manager
To load the information for the plugin's node into the rest of VE-Suite, click on the Connection menu and then on Submit Job
The starting logo in VE-Xplorer should be replaced by the objects in the plugins you submitted. If you cannot see the objects you loaded, hold down the right mouse button and drag up inside the VE-Xplorer window to pull back the camera. Continue doing so until you can see the scene.