Estimating Contaminant Mass using RockWorks Solid Models

One of the great benefits of RockWorks is the quick volume calculations available through the RockPlot3D viewer.  As the user adjusts the isosurface or filter settings (for example, to isolate material above a contamination threshold), the program returns a volume in cubic meters or cubic feet, depending on the project units.  Let’s say that you then want to calculate the mass of contamination within the project?  This takes a little bit more thought on the user’s part, but can be done easily using the recently improved Solid Math program.

First, we’ll talk about soil contamination.  Soil contamination models are often based on concentration data provided by the lab in mg/kg, or mg of contaminant per kg of soil.  The Solid Math tool can be used to convert the estimated concentration in each model voxel to the mass of contamination.  This calculation requires two bits of information:

  1. The density of the soil
  2. The volume of each model voxel (in cubic feet or cubic meters)

The density of the soil should be in kg/ft3 or kg/m3, depending on your project units.  If soil density is given to you in lb/ft3, multiply by 16.0185 to convert to kg/ft3.

The volume of each model voxel is constant within the model and can be found by looking in the project summary at the top of the program.  The spacing in each direction can by multiplied to determine the volume of each cell in cubic feet or cubic meters.  In the example below, the spacing is 5ft in the X and Y directions and 1ft in the Z direction, so the volume of each model voxel is 25 cubic feet.

Recent improvements to the Solid Math tool in RockWorks2021 allow the user to string together multiple operations.  In the example below, the program is set up to multiply the values in a model composed of GRO in soil concentrations by 54 (soil density) and then 25 (cell volume).  This converts the value assigned to each voxel to the mg of contaminant within the voxel.

Once the Solid Math step is completed, you can use the Solid|Statistics|Report tool to determine the sum of all of the values within the new GRO Mass model.

Calculating the amount of dissolved contamination in groundwater requires slightly different information.  In the following example, we’ll assume that the concentrations have been modeled in mg/l.  In addition to this information, you’ll need to determine:

  1. The porosity of the saturated material
  2. The density of water (28.32 l/ft3 or 1000 l/m3)
  3. The volume of each model voxel (in cubic feet or cubic meters).

In the image below, you can see how the solid math program is set up.  The final model is composed of the amount of contamination in mg.

Keep in mind that this approach assumes a constant porosity across the model extent.  If you have created a porosity model (perhaps a lithology model converted to a porosity model) you can multiply the concentration model by the porosity model using the Solid Math tool.

If you have any questions, please reach out to us at Thanks for reading!

RockWorks20 Environmental Applications

RockWare’s February webinar covered RockWorks20 tools for working with environmental data.  We’ve created an interactive landing page for the Webinar so that you can pick and choose which part of the webinar you would like to view.  RockWorks includes numerous tools for displaying and modeling downhole environmental data.  This webinar focuses exclusively on the 3D display and modeling of data, presenting several examples of how data can be displayed in 3D Logs, as well as Gridded Surfaces and Solid Models. 

The webinar gives a good demonstration of how the RockWorks Playlist can be used to create a composite 3D view of downhole data using 3D Logs.  The Solid Models section shows some example models created by RockWare Consulting, and also gives a demonstration of how RockPlot3D and the Solid Math tools can be used to estimate the volume of contaminated material, as well as the mass of contaminant in the subsurface.

The webinar ends with a discussion of some Cool Tricks that more advanced users might find interesting, including a new OBJ export that can be used for display of RockPlot3D in Sketchfab, Infrastructure tools for creating 3D objects such as buildings and subsurface utilities in RockPlot3D, and of course, a discussion of RockWorks Playlists and how automation in RockWorks can help you save time and money, and produce more reliable and better output.

If you have any questions, please reach out to us at Thanks for reading!

Modeling Sand and Gravel using RockWorks2021

Jim Reed’s January webinar covers workflows for evaluating Sand and Gravel resources using 2D grids or 3D solid models.  Even if this isn’t your industry, the webinar gives a great overview of 2D versus 3D models in RockWorks, and of the Playlist, introduced in RockWorks2020.

As Jim discusses in the video, if you have a fairly homogenous deposit, or just don’t have reliable downhole data to analyze, you can do a 2D analysis using grids representing parameters such as overburden and deposit thicknesses and average percentages of coarse and fine material.  The playlist allows you to put together a workflow that creates 2D multi-variate and contour maps, and uses gridding and Boolean logic to determine the optimal locations to put in 200 acre pits.

If you have a more complicated deposit that requires 3D analysis, downhole data can be stored in the Borehole Manager database, and 3D solid models can be created estimating the percent coarse and fine material.  In the example, Jim uses Boolean logic to isolate areas with acceptable overburden thickness and percentages of coarse material, and then does a final filter based on volume. Modeling your data in 3D gives you more flexibility to create depth to target maps, isolate materials based on depth, and even create a first pass at a pit design.

Keep in mind that Lithology, Stratigraphy and other types of downhole data (geophysical data, CPT/HPT data, etc.) can be used for this type of analysis as well. And, as I mentioned, Jim spends some time in this video covering Playlists. If you are a RockWorks2020/2021 user and haven’t looked at this new feature yet, you are missing out! Regardless of the type of data you are working with in RockWorks, Playlists provide a way to create consistent strategies that can be readily passed on to co-workers, or applied to future projects.

If you have any questions, please reach out to us at Thanks for reading!

Using PetraSim v2020.2 with TOUGH3

The latest maintenance release of PetraSim v2020 includes small bug fixes and some nice new features that make it easier to use PetraSim in conjunction with TOUGH3, which is the latest version of the TOUGH simulator published by Lawrence Berkeley National Lab.

  • First, the interface now includes an option to automatically add the “OUTPU” block to the header of the TOUGH3 input file. This directs the simulator to output data in a CSV format that is compatible with PetraSim.
  • Second, the interface now automatically loads the CSV files output by TOUGH3 directly into the 3D results window.

If you are interested in the work flow for using TOUGH3 with PetraSim, take a look at this video that uses the TOUGH3 ECO2M module, which is designed to model the injection of CO2 into the subsurface:

And as always, please feel free to reach out with questions to Thanks for reading!

Faulting Tools in RockWorks2020

If you’ve been wondering how the faulting tools in RockWorks2020 work, you should take a look at this 15 minute video that covers the webinar presented by Jim Reed earlier this month.

The webinar covers the new Fault Manager in RockWorks2020. The latest maintenance release contains some nice enhancements, including the addition of 2D faults that can be used for faster modeling of Stratigraphy data or other gridded surfaces.

If faulting is enabled during the creation of a model, the faults basically act as breaklines to interpolation. Faults can be used to model Stratigraphy, Lithology, downhole geophysical data, analytical information, and can also be used when creating models based on data stored in the Datasheet.

If you have any questions, please reach out to us at Thanks for reading!

RockWare Webinars – RockWorks2020 Playlists

Interested in the new version of RockWorks? Back from field season and need a quick refresher? Have specific technical questions? Join RockWare for a live web demo and discussion.

Join us for a free webinar to learn about one of the most exciting new features in RockWorks2020: the Playlist. They are easy to create, easy to edit, and easy to run.

Date: Tuesday, November 17, 2020
Time: 10 am Mountain Standard Time (USA)
(9 am Pacific, 11 am Central, 12 noon Eastern, US)
Duration: 30 min. demo/Q&A
ID: Nov2020

Email to Register Now

Read about the Playlist

Creating 3D Animations in RockWorks2020

RockWorks2020 includes a new Animation Menu (under the Graphics group of tools) that includes a number of new animation programs.  The benefit of including the animation programs as a menu item is that they can easily be added to Playlists and RockWare Command Scripts.  In this post, we’ll discuss some of the new functionality available through the Animation menu, specifically for three dimensional animations.  Here is a list of 3D animation program now available through the Animation menu:

XYZ->3D Surface Animation – Creates a 3D Surface Animation of X, Y, Z and Date data stored in the Datasheet

Grids -> 3D Surface Animation – Creates a 3D Surface Animation based on two end-member RwGrd files or a list of RwGrd files and dates

Solids – > 3D Animation – Creates a 3D Solid Animation based on two end-member RwMod files or a list of RwMod files and dates

Solids – > 3D Isoshell Animation – Creates a 3D Solid Animation based on two end-member RwMod files or a list of RwMod files and dates.  When using this tool, the user can specify up to six embedded “iso-shells” to display in the animation.

Solid Reveal – Creates a 3D Solid Animation where voxel layers are removed (or replaced) in the X, Y or Z direction.

RockPlot3D File -> Animation – Creates an animation based on a user-defined RW3D file

Animation Output Options for 3D Animations

The output options tab is available for all of the 3D options listed above.  Here, the user can define the type of file being created, as well as the viewing angle, background color, vertical exaggeration, and a number of other parameters.  One of the advanced new features in RockWorks2020 is that the program can actually show temporal changes (i.e. it can morph from one model to another) while also changing the view angle.  Notice that there is a starting and ending viewing Direction, Inclination and Zoom.  If you are planning on stringing together multiple animations (for example, using TechSmith’s Camtasia), this makes it infinitely easier to establish identical starting and ending points for each animation segment.

Creating Animations Based on a Static Image and a List of Viewing Parameters

The RockPlot3D File -> Animation program includes an Advanced option that allows the user to create an animation based on a user-defined RW3D scene and a list of user-defined viewing parameters.  Instead of just a starting and ending viewpoint, the user can specify any number of viewpoints, along with the number of frames that should be used to transition from one viewpoint to the next.

Again, if you plan to create videos showing a site using a program such as Camtasia, the ability to create more complex videos is really a game changer.  Here are some steps you could take to make this much easier than it has been in the past:

  1. Create the various RW3D files that you want to display in a video. For example, create one that includes just 3D logs, and one that includes 3D logs along with some sort of model.
  2. Create animations of all of the RW3D files referencing the same views and using the same parameters (frames/second, resolution, etc.).  I would recommend that you do this with a Playlist!
  3. Bring these into your video editing program and stack the videos on top of each other. They should have the same dimensions and length.  You can now easily slice and dice the various videos during the rotation.  For example, switching between views of logs, aerial phots, models, and so on.

In the example below, I created two videos – one showing just some 3D logs and one showing the same 3D logs along with a Stratigraphy model.  I stacked the two on top of each other in Camtasia, and was easily able to cut out a few sections of the top video to create an animation the fades between the two RW3D scenes, while maintaining the same viewing angles.

Here is how this was set up in Camtasia:

If you are getting started with animations and have questions about how to proceed, feel free to pick our brains by emailing our support team (  Also, if you need an animation quickly and don’t have the time or software to proceed, consider hiring RockWare Consulting to help!  We really do live vicariously through our customers and would love to work on a project with you.

RockWare Webinars – What’s new in RockWorks2020

Interested in the new version of RockWorks? Back from field season and need a quick refresher? Have specific technical questions? Join RockWare for a live web demo and discussion.

With over 3 years in development, there is a LOT to discuss. Join us for a webinar to review some of the exciting new features.

Date: Tuesday, October 20, 2020
Time: 10 am Mountain Daylight Time (USA)
(9 am Pacific, 11 am Central, 12 noon Eastern, US)
Duration: 30 min. demo/Q&A
ID: Oct2020

Email to register:

Read about what’s new below!

More SQL Tools in RockWorks 2020, the Filter and Select Borehole Tools

Our previous RockWare Blog posting introduces how SQL statements can be embedded into the new Playlists tool in RockWorks 2020.  We thought we would cover another useful SQL statement tool in this post.

The Filter and Select tools under the View menu in the Borehole Manager can be used to query all boreholes in the current project.  We think of the Filter program as a “Simple” querying tool that is used in just a single step, while the Select program allows for more “Complex” queries where various filters can be applied one after another.  Here is a description of each tool.

View|Filter Boreholes

Use the Filter tool to query all boreholes in the current project using one or more filters – such as a rectangular map area, specific stratigraphic formations, or specific Location table fields – and disable those boreholes that don’t meet all of the criteria. This is a basic “AND” type of filter: each of the boreholes for which every criterion is true will be enabled and the remaining boreholes will be disabled.

As an example, let’s say that you want to determine which boreholes fall within an excavation polygon and also contain “Clay” in the lithology table.  You can set up both of these queries at the same time using these settings.

Step 1:  Polygon Filter query:  In this case, we’re connecting to a Polygon Table in the database (Polygon_02). 

Step 2:  Lithology Type Query:  I’ll check on the Lithology Type option and choose Clay from the pull- down menu.

When I click Apply, the program will show the Boreholes that meet the criteria.  Boreholes that are disabled in the database are plotted as light gray.  Boreholes that are enabled (which means they meet both criteria) are darker.

Note that when using the Filter program to query multiple types of data, the querying is done in a single step.  So, you would set the Polygon Filter and the Lithology Filter, before clicking Apply.

View|Select Boreholes

Use the Select Boreholes tool to query a subset of boreholes in the current project using one or more filters, and either enable or disable those boreholes. This is similar to the Filter option, except that the Select Boreholes tool allows successive filters to be applied, and the enabling/disabling will apply only to the boreholes meeting the filter parameters, and no others. So, while the Filter tool works as an AND filter, the Select Boreholes tool can function as an AND or OR filter.

The Select Boreholes tool looks similar to the Filter tool, but offers more options.  As I mentioned above, the program allows you to Enable or Disable boreholes based on the query criteria.  The update to the Borehole Status can be applied to boreholes inside or outside a rectangular or circular region or a Polygon.  Additionally, the program offers an option to Enable or Disable All of the boreholes within the project before applying the query.

As I mentioned, the Select tool allows you to apply one query after another.  As an example, let’s say that you want to identify boreholes that contain either Clay or Silt, and fall outside the excavation polygon.

Step 1:  Starting with all the boreholes disabled, enable boreholes that contain Clay: I’ll click on the Disable All button, and then set up the Lithology Type Query.  Clicking the Apply button results in a group of boreholes enabled in the preview map on the right side of the window.

Step 2:  Enable borehole containing Silt: I’ll go through the same process, but with the Silt Lithology Type selected.  Notice that a couple more boreholes are now enabled.  We now have a group of boreholes enabled that contain Clay OR Silt.

Step 3:  Disable Boreholes that fall inside the Polygon:  To do this, I’ll use the Polygon Filter, but choose to disable the boreholes that fall Inside the Polygon.  After I click Apply, borehole inside the Polygon are disabled.

Note that when using the Select Boreholes program and stringing multiple queries together, you will want to click the Apply button to process each step.  If you turn on more than one type of filter before clicking Apply, the query will be processed as an AND query.

Show Summary and SQL Statement buttons

The last thing we wanted to mention is that you can get a summary of the Query the program is using, or view the SQL Statement, using these two buttons.  For users of RockWorks Advanced, you can even run your own SQL Statements by entering them into the SQL Statement window.  As mentioned in our Help files, the principle of Caveat Emptor strongly applies to editing or creating your own SQL statements. In other words, back up your database BEFORE running your own SQL commands, unless you consider yourself to be an infallible SQL wizard.

And, for those of you interested in automating processes in RockWorks, don’t forget that SQL statements can be included in RockWorks 2020 Playlists, and well as RockWorks 2020 Command Scripts.

Using Optional Fields and Playlists to Enabled Borehole Groups in RockWorks 2020

Did you know that you can use optional fields in the RockWorks Borehole Manager Database, along with SQL statements, to easily enable groups of boreholes within a project?  We’ll describe how to do this in the post below.

RockWorks Optional Fields

The Location table in your RockWorks borehole database is really flexible – you can add any number of customized data fields to this table. You can even use a set of industry templates that are built into the program. These optional fields can be displayed in the Optional tab or in user-created tabs.

We’ll add a new “Groups” field to the database by clicking on the Optional Fields button, and then clicking New Field.  We’ll then populate the field with 1s and 2s to represent two groups within the project.

The RockWorks Playlist

The Playlist tab in the main RockWorks program window is used to automate tasks that you do frequently in the program. Let’s say that you need to quickly select different groups of boreholes as you are working in the program.  This can be done by creating and using a Playlist that includes SQL statements.

To add a SQL item to a Playlist, go the Add menu in the Playlist tab and choose SQL Statements.  Here are some examples of SQL Statements that can be used in this project:

  • Item Title:  Disable All – This will disable all boreholes in the database.  If you are trying to enable just a single group of boreholes, you would want to run this before running any other SQL Statements.

UPDATE [Location]
SET Enabled = 0

  • Item Title:  Enable Group 1 – This will enable all of the boreholes with a 1 in the “Groups” field in the Location Table.

UPDATE [Location]
SET Enabled = 1
WHERE (“Location”.”Groups” = ‘1’)

  • Item Title:  Enable Group 2 – This will enable all of the boreholes with a 2 in the “Groups” field in the Location Table.

UPDATE [Location]
SET Enabled = 1
WHERE (“Location”.”Groups” = ‘2’)

This is what the Playlist looks like.  You can see that the different “items” can be turned on and off, and the Playlist can then be processed through the yellow button at the bottom of the window.

To enable only Group 1 in the database, uncheck Enable Group 2, and hit the Process Playlist button.  Group 1 will be the only boreholes enabled in the Borehole Manager database.

To enable the boreholes in Group 2, Disable All and Enable Group 2 should be checked on, and Enable Group 1 should be checked off.

Keep in mind that these SQL statements do NOT have to be limited to Optional Fields.  SQL statements can be created to query other Location fields (Easting, Northing, Elevation, Total Depth, Etc), Polygon tables, downhole data such as Lithology, Stratigraphy, I/P/T Data, or really any type of data that is stored in the Borehole Manager Database. 

Also, this is just one very limited example of how the RockWorks Playlists can make your life easier.  Playlists can be used to automate the creation of models, cross-sections, maps, or anything else that you would normally do through the RockWorks interface.  Playlists are available in the Basic, Standard and Advanced versions of RockWorks 2020.  If you haven’t taken a look at them yet, you should definitely check them out! Click here for more information about Playlists in RockWorks 2020!