external_faces The external_faces module extracts external faces from a 2D or 3D field for rendering. external_faces produces a mesh of only the external faces of each cell set of a data set. Because each cell set’s external faces are created there may be faces that are seemingly internal (vs. external). This is especially true when external faces is used subsequent to a plume module on 3D (volumetric) input.
external_edges The external_edges module produces a wireframe representation of of an unstructured cell data mesh. This is generally used to visualize the skeletal shape of the data domain while viewing output from other modules, such as plumes and surfaces, inside the unstructured mesh. external_edges produces a mesh of only the external edges which meet the edge angle criteria below for each cell set of a data set. Because each cell set’s external faces are used there may be edges that are seemingly internal (vs. external). This is especially true when external edges is used subsequent to a plume module on 3D (volumetric) input.
cross section cross section creates a fence diagram along a user defined (x, y) path. The fence cross-section has no thickness (because it is composed of areal elements such as triangles and quadrilaterals), but can be created in either true 3D model space or projected to 2D space. It receives a 3D field (with volumetric elements) into its left input port and it receives lines or polylines (from draw_lines, polyline processing, import_cad, isolines, import vector gis, or other sources) into its right input port. Its function is similar to buffer distance, however it actually creates a new grid and does not rely on any other modules (e.g. plume or plume_shell) to do the “cutting”. Only the x and y coordinates of the input (poly)lines are used because cross section cuts a projected slice that is z invariant. cross section recalculates when either input field is changed (and Run Automatically is on) or when the “Run Once” button is pressed.
slice The slice module allows you to create a subset of your input which is of reduced dimensionality. This means that volumetric, surface and line inputs will result in surface, line and point outputs respectively. This is unlike cut which preserves dimensionality. The slice module is used to slice through an input field using a slicing plane defined by one of four methods
isolines The isolines module is used to produce lines of constant (iso)value on a 2D surface (such as a slice plane), or the external faces of a 3D surface, such as the external faces of a plume. The input data for isolines must be a surface (faces), it cannot be a volumetric data field. If the input is the faces of a 3D surface, then the isolines will actually be 3D in nature. Isolines can automatically place labels in the 2D or 3D isolines. By default isolines are on the surface (within it) and they have an elevated jitter level (1.0) to make them preferentially visible. However they can be offset to either side of the surface.
pcut The cut module allows you to create a subset of your input which is of the same dimensionality. This means that volumetric, surface, line and point inputs will have subsetted outputs of the same object type. This is unlike slice which decreases dimensionality. The cut module is used to cut away part of the input field using a cutting plane defined by one of four methods
plume The plume module creates a (same dimensionality) subset of the input, regardless of dimensionality. What this means, in other words, is that plume can receive a field (blue port) model with cells which are points, lines, surfaces and/or volumes and its output will be a subset of the same type of cells. This module should not normally be used when you desire a visualization of a 3D volumetric plume but rather when you wish to do subsequent operations such as analysis, slices, etc.
intersection intersection is a powerful module that incorporates some of the characteristics of plume, yet allows for any number of volumetric sequential (serial) subsetting operations. The functionality of the intersection module can be obtained by creating a network of serial plume modules. The number of analytes in the intersection is equal to the number of plume modules required.
union union is a powerful module that automatically performs for a large number of complex serial and parallel subsetting operations required to compute and visualize the union of multiple analytes and threshold levels. The functionality of the union module can be obtained by creating a network fragment composed of only plume modules. However as the number of analytes in the union increases, the number of plume modules increases very dramatically. The table below lists the number of plume modules required for several cases:
subset by expression The subset by expression module creates a subset of the input grid with the same dimensionality. What this means, in other words, is that plume can receive a field (blue port) model with cells which are points, lines, surfaces and/or volumes and its output will be a subset of the same type of cells.
footprint The footprint module is used to create the 2D footprint of a plume_shell. It creates a surface at the specified Z Position with an x-y extent that matches the 3D input. The footprint output does not contain data, but data can be mapped onto it with external kriging. NOTE: Do not use adaptive gridding when creating the 3D grid to be footprinted and mapping the maximum values with krig_2d (as in the example shown below). Footprint will produce the correct area, but krig_2d will map anomalous results when used with 3d estimation’s adaptive gridding.
slope_aspect_splitter The slope_aspect_splitter module will split an input field into two output fields based upon the slope and/or aspect of the external face of the cell and the subset expression used. The input field is split into two fields one for which all cells orientations are true for the subset expression, and another field for which all cells orientations are false for the subset expression.
crop_and_downsize The crop_and_downsize module is used to subset an image, or structured 1D, 2D or 3D mesh (an EVS “field” data type with implicit connectivity). Similar to cropping and resizing a photograph, crop_and_downsize sets ranges of cells in the I, J and K directions which create a subset of the data. When used on an image (which only has two dimensions), crop removes pixels along any of the four edges of the image. Additionally, crop_and_downsize reduces the resolution of the image or grid by an integer downsize value. If the resolution divided by this factor yields a remainder, these cells are dropped.
select cell sets select cell sets provides the ability to select individual stratigraphic layers, lithologic materials or other cell sets for output. If connected to explode_and_scale multiple select cell sets modules will allow selection of specific cell sets for downstream processing. One example would be to texture map the top layer with an aerial photo after one select cell sets and to color the other layers by data with a parallel select cell sets path. This can be accomplished by multiple explode_and_scale modules, but that would be much less efficient.
orthoslice The orthoslice module is similar to the slice module, except limited to only displaying slice positions north-south (vertical), east-west (vertical) and horizontal. orthoslice subsets a structured field by extracting one slice plane and can only be orthogonal to the X, Y, or Z axis. Although less flexible in terms of capability, orthoslice is computationally more efficient.
edges The edges module is similar to the External_Edges module in that it produces a wireframe representation of the nodal data making up an unstructured cell data mesh. There is however, no adjustment of edge angle and therefore only allows viewing of all grid boundaries (internal AND external) of the input mesh. The edges module is useful in that it is able to render lines around adaptive gridding locations whereas external_edges does NOT render lines around this portion of the grid.
bounds bounds generates lines and/or surfaces that indicate the bounding box of a 3D structured field. This is useful when you need to see the shape of an object and the structure of its mesh. This module is similar to external_edges (set to edge angle = 60), except, bounds allows for placing faces on the bounds of a model.
Subsections of Subsetting
external_faces
The external_faces module extracts external faces from a 2D or 3D field for rendering. external_faces produces a mesh of only the external faces of each cell set of a data set. Because each cell set’s external faces are created there may be faces that are seemingly internal (vs. external). This is especially true when external faces is used subsequent to a plume module on 3D (volumetric) input.
Module Input Ports
- Input Field [Field] Accepts a data field.
Module Output Ports
- Output Field [Field] Outputs the subsetted field as faces.
- Output Object [Renderable]: Outputs to the viewer.
external_edges
The external_edges module produces a wireframe representation of of an unstructured cell data mesh. This is generally used to visualize the skeletal shape of the data domain while viewing output from other modules, such as plumes and surfaces, inside the unstructured mesh. external_edges produces a mesh of only the external edges which meet the edge angle criteria below for each cell set of a data set. Because each cell set’s external faces are used there may be edges that are seemingly internal (vs. external). This is especially true when external edges is used subsequent to a plume module on 3D (volumetric) input.
Module Input Ports
- Z Scale [Number] Accepts Z Scale (vertical exaggeration).
- Input Field [Field] Accepts a data field from 3d estimation or other similar modules.
Module Output Ports
- Z Scale [Number] Outputs Z Scale (vertical exaggeration) to other modules
- Output Field [Field] Outputs the subsetted field as edges
- Output Object [Renderable]: Outputs to the viewer
Properties and Parameters
The Properties window is arranged in the following groups of parameters:
- Properties: controls the Z scaling and edge angle used to determine what edges should be displayed
- Data Selection: controls the type and specific data to be output or displayed
cross section
cross section creates a fence diagram along a user defined (x, y) path. The fence cross-section has no thickness (because it is composed of areal elements such as triangles and quadrilaterals), but can be created in either true 3D model space or projected to 2D space.
It receives a 3D field (with volumetric elements) into its left input port and it receives lines or polylines (from draw_lines, polyline processing, import_cad, isolines, import vector gis, or other sources) into its right input port. Its function is similar to buffer distance, however it actually creates a new grid and does not rely on any other modules (e.g. plume or plume_shell) to do the “cutting”. Only the x and y coordinates of the input (poly)lines are used because cross section cuts a projected slice that is z invariant. cross section recalculates when either input field is changed (and Run Automatically is on) or when the “Run Once” button is pressed.
If you select the option to “Straighten to 2D”, cross section creates a straightened fence that is projected to a new 2D coordinate system of your choice. The choices are XZ or XY. For output to ESRI’s ArcMAP, XY is required.
NOTE: The beginning of straightened (2D) fences is defined by the order of the points in the incoming line/polyline. This is done to provide the user with complete control over how the cross-section is created. However, if you are provided a CAD file and you do not know the order of the line points, you can export the CAD file using the write_lines module which provides a simple text file that will make it easy to see the order of the points.
Module Input Ports
- Input Field [Field] Accepts a volumetric data field.
- Input Line [Field] Accepts a field with one or more line segments for the creation of the fence cross-section. Only the XY coordinates are used. Data is not used.
Module Output Ports
- Output Field [Field] Outputs the field
- Output Object [Renderable]: Outputs to the viewer.
slice
The slice module allows you to create a subset of your input which is of reduced dimensionality. This means that volumetric, surface and line inputs will result in surface, line and point outputs respectively. This is unlike cut which preserves dimensionality.
The slice module is used to slice through an input field using a slicing plane defined by one of four methods
A vertical plane defined by an X or Easting coordinate
A vertical plane defined by a Y or Northing coordinate
A Horizontal plane defined by a Z coordinate
An arbitrarily positioned Rotatable plane which requires:
- A 3D point through which the slicing plane passes. This point can be displayed using the Reference Spherewhose size, visibility and transparency can be controlled. Please note that the same slicing result can be achieved with an infinite number of 3D points, all of which would be on the same slicing plane.
- A Dip direction
- A Strike direction
Info
- The slice module may be controlled with the driven sequence module.
- Only the orthogonal slice methods (Easting, Northing and Horizontal) may be used with driven sequence.
Module Input Ports
- Z Scale [Number] Outputs Z Scale (vertical exaggeration) to other modules
- Input Field [Field] Accepts a data field.
Module Output Ports
- Z Scale [Number] Outputs Z Scale (vertical exaggeration) to other modules
- Output Field [Field] Outputs the field
- Output Object [Renderable]: Outputs to the viewer.
isolines
The isolines module is used to produce lines of constant (iso)value on a 2D surface (such as a slice plane), or the external faces of a 3D surface, such as the external faces of a plume. The input data for isolines must be a surface (faces), it cannot be a volumetric data field. If the input is the faces of a 3D surface, then the isolines will actually be 3D in nature. Isolines can automatically place labels in the 2D or 3D isolines. By default isolines are on the surface (within it) and they have an elevated jitter level (1.0) to make them preferentially visible. However they can be offset to either side of the surface.
Module Input Ports
- Input Field [Field] Accepts a data field.
- Input Contour Levels [Contours]: Accepts an array of values representing values to place isolines
Module Output Ports
- Output Field [Field] Outputs the field with altered data min/max values
- Output Contour Levels [Contours]: Outputs an array of values representing values to be labeled in the legend.
- Output Object [Renderable]: Outputs to the viewer.
pcut
The cut module allows you to create a subset of your input which is of the same dimensionality. This means that volumetric, surface, line and point inputs will have subsetted outputs of the same object type. This is unlike slice which decreases dimensionality.
The cut module is used to cut away part of the input field using a cutting plane defined by one of four methods
The cut module cuts through an input field using a slicing plane defined by one of four methods
A vertical plane defined by an X or Easting coordinate
A vertical plane defined by a Y or Northing coordinate
A Horizontal plane defined by a Z coordinate
An arbitrarily positioned Rotatable plane which requires:
- A 3D point through which the slicing plane passes. This point can be displayed using the Reference Spherewhose size, visibility and transparency can be controlled. Please note that the same slicing result can be achieved with an infinite number of 3D points, all of which would be on the same slicing plane.
- A Dip direction
- A Strike direction
Info
- The cut module may be controlled with the driven sequence module.
- Only the orthogonal cut methods (Easting, Northing and Horizontal) may be used with driven sequence.
The cutting plane essentially cuts the data field into two parts and sends only the part above or below the plane to the output ports (above and below are terms which are defined by the normal vector of the cutting plane). The output of cut is the subset of the model from the side of the cut plane specified.
Module Input Ports
- Z Scale [Number] Outputs Z Scale (vertical exaggeration) to other modules
- Input Field [Field] Accepts a data field.
Module Output Ports
- Z Scale [Number] Outputs Z Scale (vertical exaggeration) to other modules
- Cut Field [Field] Outputs the field with “cut” data to later use for subsetting
- Output Field [Field] Outputs the subsetted field
- Output Object [Renderable]: Outputs to the viewer.
plume
The plume module creates a (same dimensionality) subset of the input, regardless of dimensionality. What this means, in other words, is that plume can receive a field (blue port) model with cells which are points, lines, surfaces and/or volumes and its output will be a subset of the same type of cells.
This module should not normally be used when you desire a visualization of a 3D volumetric plume but rather when you wish to do subsequent operations such as analysis, slices, etc.
Info
- The plume module may be controlled with the driven sequence module.
Module Input Ports
- Input Field [Field] Accepts a data field.
- Isolevel [Number] Accepts the subsetting level.
Module Output Ports
- Output Field [Field] Outputs the subsetted field as a volume.
- Status [String / minor] Outputs a string containing a description of the operation being performed (e.g. TCE plume above 4.00 mg/kg)
- Isolevel [Number] Outputs the subsetting level.
- Plume [Renderable]: Outputs to the viewer.
intersection
intersection is a powerful module that incorporates some of the characteristics of plume, yet allows for any number of volumetric sequential (serial) subsetting operations.
The functionality of the intersection module can be obtained by creating a network of serial plume modules. The number of analytes in the intersection is equal to the number of plume modules required.
The intersection of multiple analytes and threshold levels can be equated to the answer to the following question (example assumes three analytes A, B & C with respective subsetting levels of a, b and c):
“What is the volume within my model where A is above a, AND B is above b, AND C is above c?”
The figure above is a Boolean representation of 3 analyte plumes (A, B & C). The intersection of all three is the black center portion of the figure. Think of the image boundaries as the complete extents of your models (grid). The “A” plume is the circle colored cyan and includes the green, black and blue areas. The intersection of just A & C would be both the green and black portions.
Module Input Ports
- Input Field [Field] Accepts a data field.
Module Output Ports
- Output Field [Field] Outputs the subsetted field
- Output Object [Renderable]: Outputs to the viewer.
union
union is a powerful module that automatically performs for a large number of complex serial and parallel subsetting operations required to compute and visualize the union of multiple analytes and threshold levels. The functionality of the union module can be obtained by creating a network fragment composed of only plume modules. However as the number of analytes in the union increases, the number of plume modules increases very dramatically. The table below lists the number of plume modules required for several cases:
| Number of Analytes | Number of plume Modules |
|---|---|
| 2 | 3 |
| 3 | 6 |
| 4 | 10 |
| 5 | 15 |
| 6 | 21 |
| 7 | 28 |
| n | (n * (n+1)) / 2 |
From the above table, it should be evident that as the number of analytes in the union increases, the computation time will increase dramatically. Even though union appears to be a single module, internally it grows more complex as the number of analytes increases.
The union of multiple analytes and threshold levels can be equated to the answer to the following question (example assumes three analytes A, B & C with respective subsetting levels of a, b and c):
“What is the volume within my model where A is above a, OR B is above b, OR C is above c?”
The figure above is a Boolean representation of 3 analyte plumes (A, B & C). The union of all three is the entire colored portion of the figure. Think of the image boundaries as the complete extents of your models (grid). The “A” plume is the circle colored cyan and includes the green, black and blue areas. The union of just A & C would be all colored regions EXCEPT the magenta portion of B.
Module Input Ports
- Input Field [Field] Accepts a data field.
Module Output Ports
- Output Field [Field] Outputs the subsetted field
- Output Object [Renderable]: Outputs to the viewer.
subset by expression
The subset by expression module creates a subset of the input grid with the same dimensionality. What this means, in other words, is that plume can receive a field (blue port) model with cells which are points, lines, surfaces and/or volumes and its output will be a subset of the same type of cells.
subset by expression is different from plume in that it outputs entire cells making its output lego-like.
It uses a mathematical expression allowing you to do complex subsetting calculations on coordinates and MULTIPLE data components with a single module, which can dramatically simplify your network and reduce memory usage. It has 2 floating point variables (N1,N2) which are setup with ports so they can be easily animated.
Subset By: You can specify whether the subsetting is based on either Nodal data or Cell data.
Expression Cells to Include: Is a Python expression where you can specify whether the subsetting of cells requires all nodes to match the criteria for a cell to be included or if ANY nodes match, then the cell will be included. The second option includes more cells.
Operators:
- == Equal to
- < Less than
Greater Than
- <= Less than or Equal to
= Greater Than or Equal to
- or
- and
- in (as in list)
Example Expressions:
- If Nodal data is selected:
- D0 >= N1 All nodes with the first analyte greater than or equal to N1 will be used for inclusion determination.
- (D0 < N1) or (D1 < N2) All nodes with the first analyte less than or equal to N1 OR the second analyte less than or equal to N2 will be used for inclusion determination.
- If Cell data is selected:
- D1 in [0, 2] where D1 is Layer will give you the uppermost and third layers.
- D1 in [1] where D1 is Layer will give you the middle layer.
- D1 == 0 where D1 is Layer will give you the uppermost layer
- D1 >= 1 where D1 is Layer will give you all but the uppermost layer
Module Input Ports
- Input Field [Field] Accepts a data field.
Module Output Ports
- Output Field [Field] Outputs the subsetted field as a volume.
- Status [String / minor] Outputs a string containing a description of the operation being performed (e.g. TCE plume above 4.00 mg/kg)
- Isolevel [Number] Outputs the subsetting level.
- Plume [Renderable]: Outputs to the viewer.
footprint
The footprint module is used to create the 2D footprint of a plume_shell. It creates a surface at the specified Z Position with an x-y extent that matches the 3D input. The footprint output does not contain data, but data can be mapped onto it with external kriging.
NOTE: Do not use adaptive gridding when creating the 3D grid to be footprinted and mapping the maximum values with krig_2d (as in the example shown below). Footprint will produce the correct area, but krig_2d will map anomalous results when used with 3d estimation’s adaptive gridding.
Module Input Ports
- Input Field [Field] Accepts a data field.
Module Output Ports
- Output Field [Field] Outputs the subsetted field.
- Output Object [Renderable]: Outputs to the viewer.
NOTE: Creating a 2D footprint with the maximum data within the plume volume mapped to each x-y location requires the external data and external gridding options in krig_2d. A typical network and output is shown below.
slope_aspect_splitter
The slope_aspect_splitter module will split an input field into two output fields based upon the slope and/or aspect of the external face of the cell and the subset expression used. The input field is split into two fields one for which all cells orientations are true for the subset expression, and another field for which all cells orientations are false for the subset expression.
All data from the original input is preserved in the output.
Flat Surface Aspect: If you have a flat surface then a realistic aspect can not be generated. This field lets you set the value for those sells.
- To output all upward facing surfaces: use the default subset expression of SLOPE < 89.9. If your object was a perfect sphere, this would give you most of the upper hemisphere. Since the equator would be at slope of 90 degrees and the bottom would >90 degrees.
(Notice there is potential for rounding errors use 89.9 instead of 90)
Note: If your ground surface is perfectly flat and you wanted only it, you could use SLOPE < 0.01, however in the real world where topography exists, it can be difficult if not impossible to extract the ground surface and not get some other bits of surfaces that also meet your criteria.
- General expression (assuming a standard cubic building)
A) SLOPE > 0.01 (Removes the top of the building)
B) SLOPE > 0.01 and SLOPE < 179.9 (Removes the top and bottom of the building)
Since ASPECT is a variable it must be defined for each cell. In cells with a slope of 0 or 180 there would be no aspect without our defining it with the flat surface aspect field
Units are always degrees. You could change them to radians if you want inside the expression. (SLOPE * PI/180)
Module Input Ports
- Z Scale [Number] Outputs Z Scale (vertical exaggeration) to other modules
- Input Field [Field] Accepts a data field.
- Number Variable 1 [Number] Accepts the first numeric value for the slope or aspect expression
- Number Variable 2 [Number] Accepts the second numeric value for the slope or aspect expression
Module Output Ports
- Z Scale [Number] Outputs Z Scale (vertical exaggeration) to other modules
- Output True Field [Field] Outputs the field which matches the subsetting expression
- Output False Field [Field] Outputs the opposite of the true field
crop_and_downsize
The crop_and_downsize module is used to subset an image, or structured 1D, 2D or 3D mesh (an EVS “field” data type with implicit connectivity). Similar to cropping and resizing a photograph, crop_and_downsize sets ranges of cells in the I, J and K directions which create a subset of the data. When used on an image (which only has two dimensions), crop removes pixels along any of the four edges of the image. Additionally, crop_and_downsize reduces the resolution of the image or grid by an integer downsize value. If the resolution divided by this factor yields a remainder, these cells are dropped.
crop_and_downsize refers to I, J, and K dimensions instead of x-y-z. This is done because grids are not required to be parallel to the coordinate axes, nor must the grid rows, columns and layers correspond to x, y, or z. You may have to experiment with this module to determine which coordinate axes or model faces are being cropped or downsized.
Module Input Ports
- Input Field [Field] Accepts a data field.
Module Output Ports
- Output Field [Field] Outputs the subsetted field
- Output Object [Renderable]: Outputs to the viewer.
select cell sets
select cell sets provides the ability to select individual stratigraphic layers, lithologic materials or other cell sets for output. If connected to explode_and_scale multiple select cell sets modules will allow selection of specific cell sets for downstream processing. One example would be to texture map the top layer with an aerial photo after one select cell sets and to color the other layers by data with a parallel select cell sets path. This can be accomplished by multiple explode_and_scale modules, but that would be much less efficient.
Module Input Ports
- Input Field [Field] Accepts a data field.
Module Output Ports
- Output Field [Field] Outputs the subsetted field
- Output Object [Renderable]: Outputs to the viewer.
orthoslice
The orthoslice module is similar to the slice module, except limited to only displaying slice positions north-south (vertical), east-west (vertical) and horizontal. orthoslice subsets a structured field by extracting one slice plane and can only be orthogonal to the X, Y, or Z axis. Although less flexible in terms of capability, orthoslice is computationally more efficient.
The axis selector chooses which axis (I, J, K) the orthoslice is perpendicular to. The default is I. If the field is 1D or 2D, three values are still displayed. Select the values meaningful for the input data.
The plane slider selects which plane to extract from the input. This is similar to the position slider in slice but, since the input is a field, the selection is based on the nodal dimensions of the axis of interest. Therefore, the range is 0 to the maximum nodal dimension of the axis. For example, for an orthoslice through a grid with dimension 20 x 20 x 10, the range in the x and y directions would be 0 to 20.
edges
The edges module is similar to the External_Edges module in that it produces a wireframe representation of the nodal data making up an unstructured cell data mesh. There is however, no adjustment of edge angle and therefore only allows viewing of all grid boundaries (internal AND external) of the input mesh. The edges module is useful in that it is able to render lines around adaptive gridding locations whereas external_edges does NOT render lines around this portion of the grid.
bounds
bounds generates lines and/or surfaces that indicate the bounding box of a 3D structured field. This is useful when you need to see the shape of an object and the structure of its mesh. This module is similar to external_edges (set to edge angle = 60), except, bounds allows for placing faces on the bounds of a model.
bounds has one input ports. Data passed to the first port (closest to the left) must contain any type of structured mesh (a grid definable with IJK resolution and no separable layers). Node_Data can be present, but is only used if you switch on Data.


