How can I compute the average thickness of a stratigraphic layer?

First, I want to address why this question is specifically a “stratigraphic” layer.  There is no concept of layers with Lithologic modeling, only materials.  Each material might exist in bizarre columns or swiss-cheese like foam.  It is highly likely to be multi-valued, which means that at any given X-Y coordinate, there may be multiple disjoint blobs (or pseudo-layers).  Because of this generic nature, Lithologic models cannot be described in terms of layers and therefore it is not possible to compute the thickness of a single “layer” of any given material.

However, for stratigraphic models, we do have a very well defined concept of layers and the thicknesses of those layers.

There are two obvious ways to determine the thickness of a stratigraphic layer.

  1. The simplest, but unfortunately least rigorous, is to use the statistics module to compute the mean of the “Layer Thickness” nodal data component.
    • The problem with this approach is that the mean (average) thickness would be determined in statistics by taking the average of all nodal values.  The nodal values are not “area” weighted.  This means that all nodes are treated equally, even though some nodes might be associated with very large cells, while others may be associated with tiny cells that have very little area.
    • Also, some nodes are on exterior surfaces or corners, and those nodes are associated with fewer cells.    Despite these limitations, we would still expect this approach to provide reasonably accurate results, just not the most accurate result.
    • Because you need to compute nodal-data statistics on just the one layer you wish to compute the average thickness of, you must subset the model to include only that layer.  It may seem obvious to use select_cells (or explode_and_scale), but you cannot.  Those modules subset the cell sets, but do not subset the nodes or nodal data.  You must use the plume_cell module.
  2.  The most accurate approach would be to compute the total volume of the layer with volumetrics and to also compute the plan-view area of the layer with a geologic_surface at Z-Scale = 0.0 using area_integrate.  If you then divide the volume by the area, that value would be the TRUE average thickness.
    • It is important that the plan-view area is computed at zero z-scale because area_integrate computes the total surface area of everything passed to it.  Therefore it is important that you use geologic surface as input, rather than the layer, otherwise it would compute the area of the top, bottom and sides of the layer.
A comparison of the results by both methods would be a good double check on the second method.  As long as you’re within a couple percent I would trust the second method answer.
I’ve created a sample application to demonstrate both methods, and frankly I was surprised by how close the results were for both.   My expectation was that the statistics method might be off by as much as 5%, but in several tests, it was always within 0.02 percent. It tended to always overestimate the average (assuming

The application below uses a trigger_script module (with a Python script) to grab several parameters and perform the math calculations and setup the title strings displayed in the viewer.

By setting the N1 variable in plume_cell, we automatically select the correct layer in volumetrics as well as subset the layer that is used by statistics.  The resulting output below is for the bottom-most layer (#3) which had just over 0.01% difference between the two methods.

One final word:  These calculations are based on the premise that the thickness is “averaged” over the entire model area, not the area where the layer exists.  For the model shown above, the upper three layers have some regions which are pinched-out.  To compute the average thickness for those regions where the layer “exists”, we would want to use the second method, but divide by an area which was subsetted by layer-thickness so that it too was reduced to exist only where the layer exists.