General Unstructured Multi-Block Omnitool

(Preprocessor of Structured Grids for solvers)

Users Guide

Contents
Introduction
The Gumbo Interface
Reading Data
View Manipulation/Picking
Help/Hotkeys
Obtaining Information about a Grid
Grid Modification
Grid Manipulation
Defining Blade Rows
Applying & Displaying Boundary Conditions
Grid Connectivity
Checking Boundary Conditions and Connectivities
Customizing Boundary Conditions and Connectivities
Quality
Saving Data
Writing Input Files for Solver
Customizing GUMBO
Tutorial 1 (USS_UNCLE specific)
Tutorial 2 (MSU_TURBO specific)


Introduction
GUMBO has been designed to interface with the solvers developed at the MSU/HPC2 SimCenter, but is general enough to use for any structured data set. GUMBO allows the user to read in a multi-block mesh and prescribe the boundary conditions and connectivity between blocks. The user also has the capability to repartition the domain to allow for efficient balancing to take full advantage of parallel processing without the mental gymnastics to keep track of the boundary conditions and connectivity. To invoke the USS_UNCLE solver specific input/output (which is the default) add -USS_UNCLE on the command line. For MSU_TURBO/TURBO solver specific input/output, enter -MSUTurbo on the command line.

Default Viewing Mode
  • Green Lines are the outer block edges
  • Yellow "Block Faces" indicate IMIN, IMAX block faces
  • Cyan "Block Faces" indicate JMIN, JMAX block faces
  • Magenta "Block Faces" indicate KMIN, KMAX block faces

"Block Faces" are extracted at 1/3 and 2/3 of volume mesh. Surface grids are displayed as a plane. Shape gives quick glance of block topology. Use Display Direction to determine the block direction.

Reading Data
All graphical user interface operations are activated with the left mouse button.

GUMBO should initially start up in the READ DATA applicatation panel. If not, select the Read button on the Tool Bar to activate the READ DATA application panel.

Either a Case can be entered or individual files can be read. A case is defined based on the solver interface being utilized. By default a case will consist of
  • casename.grud - Plot3D Multi-Block grid data unformatted double precision
  • casename.qud - Plot3D Multi-Block q data unformatted double precision
  • casename.bc - boundary conditions
  • casename.dmap - block connectivity (domain mapping)

the user can select Browse adjacent to Grid File square. For MSUTurbo, there are two case inputs that are valid. One case input will consist of the grids written into subsequent blade row and blade passage grid files in a plot3d format

  • casename.r#b#.p3d.g.r8
  • casename.r#b#.p3d.q.r8 (q data is not yet supported)
  • casename.r#b#.disp.r8
  • casename.bc
  • casename.dmap
  • casename.turbo
The other valid case would be from APNASA which would consist of
  • casename.r#b#.vstage.g.r4
  • casename.r#b#.vstage.q.r4
  • casename.r#b#.disp.r4
casename.r#.info files supersede file values and provide further information for processing. All files may not be present, with the exception of the grid file which is crucial.

GUMBO can also read UNCLE specific input files. These can be entered into the Grid File field or via command line argument.

  • -G to read in G# files (automatically reads bc.in, dmap.in, and turbo.in)
  • -BGG reads bgg.#.grf files (background grid).
  • -FSG reads fsg.#.o.grf (free surface grid).
  • -FSB reads fsblock.#.grf (free surface blocks).
When executed within USS_UNCLE, GUMBO attempts to read -G by default. The TURBO specific input files can also be read
  • -GU to read in GU# files, QU# files, bc.in, dmap.in, and turbo.in.
When executed within MSUTurbo, GUMBO attempts to read -GU by default, unless a casename is provided.

In Grid File Browser, hold down the left mouse button in the rectangle adjacent to list. This shows all the grid format options available. Your grid file must have the appropriate suffix shown in this menu depending on its type. Once the appropriate type has been chosen, select the file name in the Files section and click the OK button; then the Grid File Square is automatically checked. Depress the Read Data button to read the toggled input files.

As the grid is read, the message area near the bottom right hand corner of the screen will show each Grid Number and Grid Dimension. To scroll the dialog window, click in the window with the left mouse button and then either use the "page up" or "page down" buttons or the "arrow up" or "arrow down" buttons to navigate the message buffer. In the Drawing Area the various block edges will be displayed as green lines.

The data will be represented as described in The Gumbo Interface.

View Manipulation/Picking
The mouse buttons can be used to adjust the view. The left mouse button is used for translation; the middle mouse button for rotation; and the right mouse button for zooming. However, these can be changed by the user. See
Customizing GUMBO. Only if the mouse moves will the view be manipulated. The view can be returned to its original orientation at any time by selecting the Reset button in the upper right hand corner of the screen or by depressing the Pad0 hot key while the cursor is in the drawing area. If the mouse is held completely still, then a picking action is invoked. The left mouse selects edges, the middle selects faces, and the right selects volumes.

Picking blocks is done with the mouse or by ID. Position the cursor over the block representation and depress the right mouse button or the F11 function key. The other option is to enter the block ID while the cursor is in the drawing area and depress the right mouse button or the F11 function key. Also, a range of blocks can be selected by separating the block IDs with a hyphen "-". For example, "1-10" will select blocks 1 to 10 in order. The pick all option will order the blocks in reverse order of their creation, not by ID. The older grids are pushed down the stack as new grids are created.

There are two ways to pick block faces. One way is to simply click the middle mouse button or the F9 function key while the cursor is over one face of the volumetric representation of a particular block. This will display red grid lines on the appropriate block surface. The other way to pick a block face is to have the cursor in the drawing area and type the block number followed by a colon followed by a numeric argument ranging from 1 to 6 and finally pressing the F9 function key. The numeric argument corresponds to a block face as follows:

  1. IMIN
  2. IMAX
  3. JMIN
  4. JMAX
  5. KMIN
  6. KMAX
View Manipulation/Picking As an example, to display the KMAX face of block 24, one would type 24:6 and then depress the F9 function key. Once the 24:6 is typed in, a small rectangle near the upper right hand corner of the screen labeled Narg will display 24:KMAX, however as soon as the F9 key is depressed this display is cleared. Also, to select all KMAX faces, enter 0:KMAX. If boundary conditions are displayed, they can be picked as surfaces.

Picking edges can be done by the mouse only, not by ID. Position the cursor over the edge to select, then depress the left mouse button or the F8 function key. Note: All edges of each block will be drawn. There will be duplicate information displayed.

The Picklist can be cleared by depressing the Clear Pick button or by depressing the F6 function key while the cursor is in the drawing area. Individual entities can be unpicked by either going into Unpick mode by activating the Unpick option or depressing Ctrl before any previously described pick operation.

Other Pick Methods can be invoked: PBand[In|Out], WBand[In|Out], and All. Banded Picking selects objects that are partially (PBand) or wholly (WBand) included in the pick box. The In|Out designation determines if the objects inside or outside the box are considered. The pick box can be initiated by the positioning the cursor and pressing tab then dragging the cursor to open the box and pressing tab again to close. Then by pressing the appropriate pick function to select the desired objects.

The light bulb and toggle switch icons in conjunction with the Target chooser list control how the objects are displayed in the drawing area. The user needs to keep in mind that there are two working buffers, an active and an inactive. When objects are turned off, they go to the inactive buffer. When turned on, the objects are brought to the active buffer. The toggle swaps the buffers. If nothing is selected, then the objects indicated by the Target are affected. This display control allows the user to unclutter the current view while working.

Items deleted cannot be recovered, recalled, or undone. This operation is permanent.

Help/Hotkeys
Select the
Help toggle button at the top of the interface. This will give information about how to get a list of hot keys available within GUMBO (h key) and also activate the help on the majority of the functions.

Most of the hotkeys are shortcuts to functions already available on the graphical user interface of GUMBO and these can be seen by the imprint of the corresponding keystrokes at the bottom right corner of the button pixmap; however, there are a few Grid Math Operations that need mentioning.

The term Narg indicates a value that is typed using the keyboard numbers (not the keypad numbers) while the mouse cursor is within the drawing area. The value will appear in the Narg field.

Narg l: Calculate the maximum number of multigrid levels.
Narg <return>: Store Narg in register.
Narg +: Add Narg to register [register+Narg-1]
Narg -: Substract Narg from register [register-Narg+1]
Narg /: Divide register by Narg [(Register+Narg-1)/Narg]
Narg *: Multiply register by Narg [Register*Narg-Narg+1]

Obtaining Information About the Grid

To obtain information about the grid that has been read in, select the Info button in the Tool Bar. This will bring up the GRID INFORMATION panel.

The blocks will need to be renumbered/reordered, especially after repartitioning before output to UNCLE and TURBO. The Set ID button will renumber the grids in order of selection with the starting ID in the adjacent ID field. If grids have been concatenated or split, this procedure is a must (Writing input files and case files will be prohibited). Note: MSU_TURBO assumes that all the blocks within a blade row are numbered consecutively and that blocks along a sliding interface increase in ID.

The default setting for Display is Nothing. By clicking on the button next to the various options, certain information will be displayed on the volumetric representation of the block faces. Selecting Block ID will display the block ID near each of its six faces. The Dimension options will display the maximum index each coordinate direction (I, J, or K) on the appropriate faces. Direction will place a +/- on the MAX/MIN face. Size displays the total number of points for a particular block near each of its six sides. Number of BCs displays the total number of boundary conditions that have been applied on each of the six faces of the block. Two more additional entries are available for display when configured as MSU_TURBO, Blade Row ID and Blade Passage ID.

Selecting the Load Balance Efficiency button will write an Efficiency (Elb) in the dialog box. A value of 1.0 would imply that all the blocks contain the same number of points.

Elb = sum (block_size) / (num_blocks * max_block_size)

Selecting the Block Size button will write each grid number and dimensions in the dialog box as well as the total number of points for the entire grid and the number of points for the smallest block (min) and the number of points for the largest block (max).

Grid Modification
These functions modify the physical or computational orientation of the given blocks. The GRID MODIFICATION panel is activated by depressing the Modify button on the Tool Bar. By selecting the grids to be modified, the index directions can be swapped or reversed or the selected grids can be transformed by translation, scaling, rotation, or reflection/mirror witout restrictions. Reflection/mirror or swapping indices will need one more step by reversing one of the index directions to keep the grids from being left-handed. Applying a transformation (rotate, scale, translate) multiple times can be achieved by entering the number of repeated operations in the Narg field. Entering a "?" in the Angle field will either calculate the angle from the input parameters or prompt the user for the blade row count if the entry does not exit within the file. Selecting "?" in the About Axis or About Plane will use the X Y Z fields as input. A selected vector supersedes these options. All boundary conditions are either copied or modified. Connectivity or special boundary conditions with connectivity (i.e. periodic) may need to be reapplied. If the Duplicate toggle is not active, the original selected block will be modified.

Grid Manipulation
These functions in some form or fashion, subset or combine indices. The Blocks can be extracted from or inserted into other blocks, but more commonly the user will split or concatenate blocks. The GRID MANIPULATION panel is activated by depressing the Manip button on the Tool Bar.

Multiple selected blocks can be split in the indicated direction by various expressions entered in the @Index field. The selected blocks will be deleted if Replace is active. A command of:

/n will attempt to divide the indicated direction into n equal sections.

n1|n2|n3|... indicate relative regions with sizes n1, n2, etc. where the splitting index location is calculated as n1, n1+n2-1, n1+n2+n3-2, etc.

n1,n2,n3,... indicate absolute index locations to split, if a value is negative this indicates an index value of max_dim-n+1.

The concat operation is expecting the blocks to be selected in the increasing index direction and that all blocks are oriented correctly. The min plane of the adjacent block replaces the max plane if overlap is activated. If Replace is active, the original blocks will be deleted.

To coarsen a selected grid, set the corresponding inc fields to the value desired and depress Extract. Select them all if the entire mesh is to be coarsened. The ordering of the blocks will remain the same.

Defining Blade Rows
Blocks can be grouped into blade rows. Blade rows can be fixed or rotated. The block interface between blade rows should be marked as a sliding interface boundary condition. The current implementation requires that the number of radial points are the same and their radial positions are constant across the sliding interface. Circumferential points are allowed to vary. The blocks must be numbered in increasing order along the interface. The MSUTurbo option will automatically assign blocks to blade rows and passages based on the filename. Only the block numbering will need to be validated. For USS_UNCLE use, the r key will create a blade row from the selected blocks. Alt r will delete the selected blade row. F12 will select a blade row by ID or positioning the cursor over one of the blocks within a blade row. To apply an angular speed, Alt s, will display a dialog box to enter the appropriate information (0.0 is the default). Alt p will change the selected blade row's point of rotation with the selected point (origin is the default). Alt a will change the selected blade row's axis of rotation with the selected vector (x-axis is the default). This information will be written into a casename.turbo or turbo.in file.

Applying & Displaying Boundary Conditions


To apply boundary conditions to all the faces of the various blocks contained in the grid, select the BCs button in the Tool Bar. The GRID BCs & CONNECTIVITY panel will appear and will allow the user to apply boundary conditions as well as block connectivities. The default mode when first opening this panel is to apply boundary conditions, as indicated by the green highlighted button next to the Boundary Condition label in this panel. However, it should be noted that connectivities are only searched on faces that have unset cells. So the user needs to apply boundary conditions on all other faces first. The general block connectivities should be found, then apply the overall boundary condition. This will cause a warning when boundary conditions are checked.

To apply a boundary condition to an entire block face, select the face, select the appropriate boundary condition from the Choose One: list, and depress the Apply button. Selecting block faces and depressing Apply without selecting a boundary condition from the list will remove all applied bcs on the selected faces.

To display where each boundary condition has been applied, click on the appropriate type in the Display list and all the block faces that have that particular boundary condition will be displayed with blue grid lines if not in a group. If the Grid ID field is blank, all blocks will be displayed. If an ID is present, only the selected boundary conditions in that block are displayed. To remove these faces from the viewing window, deselect the highlighted boundary condition type in the Display list. While BCs are displayed, they are pickable as surfaces. This will be useful for grouping boundary conditions. Boundary conditions can be picked through the Block Faces. All bcs attached to the face will be selected. If = is also pressed, the connected boundary conditions will be selected.

The two previous methods of picking block faces are preferred if a boundary condition is being applied to an entire block face. To apply a boundary condition to only a portion of a block face, one can do the following. Type the grid number in the field next to the Grid ID >>>>> button or if a block or block face are selected, depress Grid ID >>>>> to load the information into the appropriate fields. Next, choose the appropriate face from the selections under this panel by clicking it with the left mouse button. The range of indices over which a particular boundary condition is to be applied must now be set. This can be done by either moving the slider, by holding down the left mouse button on the slider, or clicking in the field next to the slider and typing in the index. (Note on the Slider: A left mouse click on the slider will cause it to move in single increments in the direction towards the cursor, a middle mouse button will cause it to jump to the location of the cursor.) Notice that the default is to adjust the lower index first, as indicated by the green box next to the slider. To set the upper index, click on the button with the left mouse button to highlight it in green and then either move the slider or type in the value in the field next to the green highlighted button. Once the appropriate range for both indices has been selected, choose the boundary type from Choose One, and select Apply just as before. (Example: Basic Block Face Orientation and I, J, K Notation)

The applied boundary conditions can be changed by entering the Old BC (or selecting from the Choose One list) and a New BC (selected from the Choose One list) into the adjacent fields. By depressing Change, all Old BC will be replaced by the specified New BC, depending on what is selected or entered into the Grid ID>>>>> field.

Boundary conditions can be placed in and removed from groups, with the CreateGrp AddToGrp RmvFromGrp buttons. Groups can be utilized with the solver for various tasks. Namely marking the boundary conditions for integration of specific information. Only ninety-nine groups are allowed (1-99) with a brief 20 character description without blanks. When a group is created, the user will be prompted for the GID and the description. The bc will be written as a real number (BC.GID, where BC is the boundary condition and GID is the group ID written as a two digit number) and the GID and the GroupName written at the bottom of the bc.in file.

Grid Connectivity
To apply block connectivity on various blocks contained in the grid, select the BCs button in the Tool Bar. The GRID BCs & CONNECTIVITY panel will appear and highlight the Block Connectivity toggle to activate the Block Connectivity options in the panel.

The block connectivity can be specified either manually or automatically. First, the point-to-point (P2P) block-to-block (B2B) connectivities should be applied before the general block-to-block (GB2B) connectivities are applied. Choose the desired connectivity from the list. Use the PgUp|PgDn keyboard buttons to scroll the list. The preferred procedure is to try to have all the block interfaces detected automatically and then apply any undetected block interfaces manually.

(Example: Simple P2P B2B Connectivity)

(Example: General P2P B2B Connectivity)

(Example: Simple GB2B Connectivity)

(Example: Complex GB2B Connectivity)

To automatically detect the block interfaces, clear the Grid ID field and then select the Apply button. The selected connectivity from the list will be applied. A small window will appear in the viewing window to confirm if it is okay to continue in automatic block interface detection mode. Selecting Yes will initiate this process, which may take a considerable amount of time depending on the total number of blocks and the total number of grid points in the grid. ESC can be depressed to interrupt the process. The tolerance used is a fraction of the minimum spacing within the compared faces.

Another way to specify block connectivity is to stay in Boundary Conditions and select B2B | GB2B under Choose One. Pick the two faces that are to be connected and select Apply. This bypasses the search algorithm and goes directly to the Connectivity routine. If this fails then the user should proceed to apply the connectivity manually because there is probably a tolerance error between the connected faces.

To manually set block interfaces, type the block number in the field next to the Grid ID >>>>> button near the top of the panel. Then choose the appropriate block face from the selections under this rectangle by clicking on it with the left mouse button. Adjust the sliders if necessary to get the desired index range if the block interface does not extend over the entire block face. Select the corresponding block for the block interface by typing the block number in the field under the vvGridIDvv button near the middle of the panel. Once again, choose the appropriate block face and index range. Click on Apply with the left mouse button to input this block interface boundary condition.

Checking Boundary Conditions and Connectivities
The process of choosing block faces and applying boundary conditions must be repeated until all the blocks in the entire grid have boundary conditions defined on all their faces. To check to see if this is the case, click the Check button with the left mouse button. The Dialog box will list each face of each block with either Okay, which means that a boundary condition has been specified, or None if no boundary condition has been applied. The Check button will also indicate where there are holes and/or overlapping of boundary conditions. A bell will sound if any violation is encountered. It will be silent if everything has been set correctly.

Customizing Boundary Conditions and Connectivities
The default Boundary Conditions file (BoundaryCondition or MSUTurbo.bc) is located in the same directory of the executable of GUMBO. A copy of this file can be placed in the .GUMBO directory on the user's home directory. If the name of the file is different the name will need to be modified within the SetUp file also in the .GUMBO directory. This will allow for different boundary conditions for different solvers.

The format of the file should have the number of boundary conditions specified as the first line. All subsequent lines are composed of a bc_number and a bc_name. The bc_number can be a signed integer. A bc_number of 0 is invalid because this is reserved for an unspecified boundary condition (the default). Negative bcs are considered block connectivities: -1 is a point-to-point block-to-block, anything less than -1 is user defined as connectivity with bc (or a special connectivity). However, positive values can be used to designate connectivity boundary conditions by using special characters embedded in the bc_name. The bc_names are used only within GUMBO to describe the integer values and there is a limit of 24 characters and spaces are not allowed. Special characters prepended to the bc_name indicate the type of boundary condition/connectivity:

The default type is general bc. Only one block connectivity of each kind can be defined. () around the bc_name only allow the boundary condition to be displayed, but is set automatically within GUMBO. This is very specific to Turbo. If the boundary condition has face restrictions, these are appended to the name enclosed in < >. The following arguments can be entered:

Quality
The grid quality can be evaluated within the blocks, on faces, and on edges. Quantities such as aspect ratio, skew angle, off boundary spacing, and the presence of negative jacobians (volumes) can be calculated. The inner planes of the blocks can be visualized to provided further insight to the quality of the grid. Edges and faces of blocks can be compared to a given plane or each other as fixed in space, rotated or mirrored.

Saving Data
All graphical user interface operations are activated with the left mouse button.

Select the Save button on the Tool Bar to activate the SAVE DATA application panel.

Either a Case can be entered or individual files can be saved or solver input can be saved. A case is defined based on the solver interface being utilized. By default a case will consist of
  • casename.grud - Plot3D Multi-Block grid data unformatted double precision
  • casename.qud - Plot3D Multi-Block q data unformatted double precision
  • casename.bc - boundary conditions
  • casename.dmap - block connectivity (domain mapping)

For MSUTurbo, there is one case output that is valid, which consists of the grids written into subsequent blade row and blade passage grid files in a plot3d format

  • casename.r#b#.p3d.g.r8
  • casename.r#b#.p3d.q.r8 (q data is not yet supported)
  • casename.r#b#.disp.r8
  • casename.bc
  • casename.dmap
  • casename.turbo
The other valid case would be from APNASA which would consist of
  • casename.r#b#.vstage.g.r4
  • casename.r#b#.vstage.q.r4
  • casename.r#b#.disp.r4
casename.r#.info files supersede file values and provide further information for processing. All files may not be present, with the exception of the grid file which is crucial.

Writing Input Files for Solver
Once boundary conditions are applied to each face of every block in the grid, the input files required by UNCLE can be output by clicking on the Save button near the upper right hand corner of the screen. Now click on the square next to the Grid File entry with the left mouse button to highlight it in green. In the Grid File Field, enter -G for USS_UNCLE solver input or enter -GU for MSU_TURBO solver input and then click the Save Data button near the bottom of the panel.

The user need not specify all the boundary conditions in one session. The information can be saved and read back into GUMBO by using -G or -GU as a command line argument (e.g. gumbo -G). There will be grid files labeled G#0, where # is the block ID and the file will be a formatted plot3d file in multiblock format. A boundary condition file (bc.in) and a connectivity file (dmap.in) will also be written. Using the case option is also suggested, but this option is not recommended if APNASA data was read in. The Q data is not written to a file.

GUMBO can also write UNCLE specific input files. These can be entered into the Grid File field or via command line argument.

The TURBO specific input files can also be written

Types of output files:

Customizing GUMBO
GUMBO can be customized through the Setup button on the toolbar. In the SET UP panel, the mouse transformation can be reconfigured and the colors of the various entities can be changed. All changes are save automatically to the SetUp file. Other preferences can also be configured by editing the SetUp file which is located in the .GUMBO directory of the user's home directory.