IBM Data Explorer Netfiles, Macros, and Fortran 90 module


Kate White
University of Tennessee, Knoxville
Mentor: Mark D. Carter

energy analyzer
created with basic_2Dplot.net

rocket image
created with rocket_bmod_flux.net






How  to  use this  material:

IBM Data Explorer, or OpenDX, is a visualization package useful for viewing 2 and 3 dimensional data.  This is a free product, and can be downloaded at http://www.opendx.org .  The data sets provided here were created with the Fortran module dxdump.f which is also available for download on this page.  The module assumes that the data you want to visualize is stored in an array in an existing Fortran code, and uses subroutines to write the data to Data Explorer format.  For step by step instructions on how to reproduce the rocket picture (in the center) above, click here .








download all netfiles: all_nets.tar.gz
download basic netfiles: basic nets
download comples netfiles with animations: complex nets

To run the netfiles you will need data:
download all data: all data
download only certain data sets:
bmod.tar.gz
bmod_erg.tar.gz
channel_5.tar.gz
iefield.tar.gz
listfile
psi.tar.gz
psi_erg.tar.gz
redotj.tar.gz
refield.tar.gz
rocket.tar.gz

download the macro for complex fields:

ComplexFieldReducor.net


download module for creating dx data sets of your own:

dxdump.f








NETFILES (back to top of page)

A netfile is a program created in IBM Data Explorer's visual program editor. To find out more about IBM Data Explorer, or to download go to http://www.opendx.org . The programs are written by connecting modules that perform certain functions together. Modules perform functions such as assigning glyphs to each data point, rendering an image, or writing an image to the screen.

Here are some packages of netfiles. The basic netfiles do simple plots and isosurfases (three-dimensional contour plots), and the other netfiles create more complex pictures and animations.

basic netfiles
more complex netfiles

           basic_2Dplot.net

Plots a line on a graph in the image window (1-dimensional data). The data is plotted as a function of its position in the data file. For example if the first data entry is 7, there is a point on the plot at (0, 7). If given 2 dimensional (x, y) positions plots points along the positions given and interpolates a line. A title can be added using the text block. The three lines are colored differently using the color modules and patterns are added with the options module. DX file created by plotsdx.f.  Data needed:   channel_5.tar.gz

basic_glyph.net

Reads in a dx file of vectors and positions, then samples the data to a size that autoglyph can handle. Plots glyphs. DX file created by dxPol_vector_dp.  Data needed:   iefield.tar.gz

basic_iso.net

Creates an isosurface. The scalar attached to import makes the value of the isosurface default to the mean. If scalar is disconnected from import the user can set the value of isosurface interactively. DX file created by dxPol_scalar_sp.  Data needed:   redotj.tar.gz

basic_rocket.net

Creates isosurface of rocket with antenna (input rocket.dx file). Coils are orange and antennas are red. The scalar modules set the opacity of the isosuface interactively. DX file created by dxPol_scalar_sp.  Data needed:   rocket.tar.gz

comp_isosurface.net

Creates isosurfaces of the electric fields at different points in time (input iefield.dx, refield.dx, and listfile files). The compute module is used to calculate the electric field from the real parts of the field and the imaginary parts of the field and time. DX file created by dxPol_vector_dp.  Data needed:   iefield.tar.gz , refield.tar.gz , listfile , rocket.tar.gz

divcurl.net

Creates an isosurface of the rocket coils and antenna with the divergence or curl of the electric field (input iefield.dx, refield.dx, listfile, and rocket.dx files). If the first output of the divcurl module is connected to sample the divergence is calculated. If the second output of the divcurl module is connected to sample the curl of the electric field is calculated. DX file created by dxPol_vector_dp.  Data needed:   iefield.tar.gz , refield.tar.gz , listfile , rocket.tar.gz


divcurl_efficient.net

Creates same sequence of images as divcurl.net but more efficiently. Reduces data before computing the electric field using ComplexFieldReducer macro. DX file created by dxPol_vector_dp.  Data needed:   iefield.tar.gz , refield.tar.gz , listfile , rocket.tar.gz


divcurl_efficient_iso.net

Creates an isosurface of the curl or divergence calculated in divcurl_efficient.net. Uses ComplexFieldReducer macro. DX file created by dxPol_vector_dp.  Data needed:   iefield.tar.gz , refield.tar.gz , listfile , rocket.tar.gz


efields_anim.net

Creates a sequence of images of the electric fields over time along with isosurfaces of the rocket and antenna (input iefield.dx, refield.dx, listfile, and rocket.dx files). The compute module calculates the electric field from the real and imaginary parts and time. The image is outputed to the screen and can be saved to a miff file by selecting conitnuous saving off the save image menu. DX file created by dxPol_vector_dp.   Data needed:   iefield.tar.gz , refield.tar.gz , listfile , rocket.tar.gz


efields_efficient.net

Creates the same animation as efields_anim.net, but reduces the real and imaginary fields before computing the electric fields (input iefield.dx, refield.dx, and listfile files). It reduces the fields using the macro ComplexFieldReducer. This runs more efficiently because it only goes through the reduce module once. DX file created by dxPol_vector_dp.   Data needed:   iefield.tar.gz , refield.tar.gz , listfile , rocket.tar.gz


fred_image.net

Creates isosurface of stellarator and slabs of power dimension dispersed throughout the stellarator. (input psi.dx, redotj.dx) DX file created by dxPol_vector_dp and dxPol_scalar_sp.  Data needed:   psi.tar.gz , redotj.tar.gz

rocket_bmod_flux.net

Creates isosurfaces of the rocket, antenna, flux, and the modulus of the magnetic field (input rocket.dx, bmod_erg.dx, and psi_erg.dx files). The rocket coils are orange, the antenna is red, the flux is purple, and the modulus of the magnetic field is green. The scalars attatched to the color modules on each page manipulate the opacity of the objects. DX file created by dxPol_scalar_sp.   Data needed:   rocket.tar.gz , bmod_erg.tar.gz psi_erg.tar.gz

stellarator_movie.net

Creates a movie of the power deposition at different points in a stellarator (input psi.dx, bmod.dx, redotj.dx). Uses the pick module to get input from user (through mouse) and display position and value at the specified point (may error on first run because of lack of input to pick). To pick, the user must be in the pick mode in the veiw control box. Use execute on change to update between picks, or reexecute after each pick.  Data needed:   psi.tar.gz , redotj.tar.gz , bmod.tar.gz






MACROS (back to top of page)

A macro is a collection of modules like a network, but it cannot include certain modules such as the sequencer, or interactors. To add a macro to a network go to the file menu in the Visual Program Editor. Click on load macro, pick the macro you want to load, or load all macros. The macro should now be filed under the macro category in the Visual Program Editor.


ComplexFieldReducor.net

Takes 6 inputs: three from the real part of the electric field and three from the imaginary part of the electric field (input: attach output from import of refield.dx to first three inputs, attach output from import of iefield.dx to the last three inputs). The fields are first split into one dimensional vectors (real x vector, real y vector, real z vector, imaginary x vector, imaginary y vector, imaginary z vector). The six components are then recombined into a six vector. The field is then reduced to make it easier to use glyphs. Then the six vector is split back into six separate components. The first three components are collected to form the reduced real field and the last three components are connected to form the reduced imaginary field. The outputs are the reduced refield and the reduced iefield. The DX files for the refield and iefield were created by dxPol_vector_dp.




MODULE (back to top of page)

A module is a useful tool in Fortran to include functions and subroutines within a program.

dxdump.f

Fortran 90 module which contains subroutines for outputing data from the EMIR codes into native dx format for visualization in IBM Data Explorer.

Subroutine dxout

Takes an real 3-dimensional array and three real 1-dimensional arrays and a filename and outputs a native dx formatted file for a positions dependent grid with regular connections.

Inputs: array, real 3-dimensional array (this is the data file); x, y, z, three one dimensional arrays (used to create regular grid positions); filenm, filename (base filename for .dx file and the binary data file that the .dx file calls).



The following subroutines are overloaded in dxdump.f. The dxCartesian function calls the correct subroutine beginning with "dxCart" depending on the arguments, and the dxPolar function calls the correct subroutine beginning with "dxPol" depending on the arguments. Also included in the module overloads are dxCart and dxPol subroutines ending in _pos. These _pos routines use an already existing positions file as an argument and only create .dat and .dx files.

Subroutine dxPol_scalar_dp

Casts double precision data to single precision. Calls subroutine dxPol_scalar_sp.

Subroutine dxPol_scalar_sp

Takes a real 3-dimensional array (the positions), three real 1-dimensional arrays (r, theta and z data), and a filename and ouputs a native dx formatted file with positions and data dumped in binary format. Converts r, theta, and z coordinates to x, y, and z coordinates. The grid is irregular because the positions are specified, but the connections are regular.

Inputs: data, real 3-dimensional array (data values for positions); r, t, z, real 1-dimensional arrays (positions in r, theta, z coordinates); filenm, filename (base filename for .dx file and the binary data file that the .dx file calls).

Subroutine dxCart_scalar_dp

Casts double precision data to single precision. Calls subroutine dxCart_scalar_sp.

Subroutine dxCart_scalar_sp

Takes a real 3-dimensional array (the positions), three real 1-dimensional arrays, and a filename and ouputs a native dx formatted file with positions and data dumped in binary format. Data is already in Cartesian coordinates, so there is no need for conversion. The grid is irregular because the positions are specified, but the connections are regular.

Inputs: data, real 3-dimensional array (data values for positions); x, y, z, real 1-dimensional arrays (positions in Cartesian coordinates); filenm, filename (base filename for .dx file and the binary data file that the .dx file calls).

Subroutine dxPol_vector_dp

Casts double precision data to single precision. Calls subroutine dxPol_vector_sp.

Subroutine dxPol_vector_sp

Takes three real 3-dimensional arrays (vector r, vector theta, vector z), three real 1-dimensional arrays (r, theta, z data), and a filename and ouputs a native dx formatted file with positions and data dumped in binary format. Converts r, theta, z and their vectors into x, y, and z coordinates.

Inputs: vr, vt, vz, real 3-dimensional arrays (the vector data for the r, theta, z positions); r, t, z , real 1-dimensional arrays (positions in r, theta, z coordinates); filenm , filename (base filename for .dx file and the binary data file that the .dx file calls).

Subroutine dxCart_vector_dp

Casts double precision data to single precision. Calls subroutine dxCart_vector_sp.

Subroutine dxCart_vector_sp

Takes three real 3-dimensional arrays (vector x, vector y, vector z), three real 1-dimensional arrays (x, y, z data), and a filename and ouputs a native dx formatted file with positions and data dumped in binary format. Data and positions are in Cartesian coordinates, so there is no need for conversion.

Inputs: vx, vy, vz, real 3-dimensional arrays (the vector data for the x, y, z positions); x, y, z , real 1-dimensional arrays (positions in Cartesian coordinates); filenm , filename (base filename for .dx file and the binary data file that the .dx file calls).