In Danomics Petrophysics Insights users are guided through a workflow that walks them through a number of modules. These modules are located via a dropdown menu at the top center of the window. The modules are listed in the order in which a user should ideally proceed through a project. However, this order is not strictly enforced and the user can start at any module and can seamlessly move both forward and back through the modules. This help article will focus on the TOC Analysis module.

## Inversion Module

Mineral inversion modules are based on the principle that you can take the properties from a group of minerals (C) and multiply them by their relative volumes (V) to calculate the log properties. This is expressed in matrix form as:

C*V = L

However, in most cases we don’t know the proportion of minerals, but we do know the majority of minerals likely present and the log values. Therefore, we can invert the matrix to solve for their proportions. We thus rearrange as:

V = C'*L

where C’ is the inverse of matrix C. This simple matrix algebra then allows us to solve for the volume of each mineral (V). In Danomics’ Inversion module we seek to minimize the error between the predicted logs and the actual logs, weighting by the confidence we have in that log. Danomics’ inversion simultaneously forces the constraint that all mineral proportions honor the requirement that 0 <= V <= 1. That is, you can’t have mineral volumes that are negative or greater than 100% although this is mathematically possible.

### Inversion Parameters

There are several available parameters in the inversion module, and care needs to be taken when setting each. This section will review each parameter and how it is best used.

The * Zone* parameter determines which zones the rest of the parameters are applied to. If you only enter parameters for the default they will be applied to each zone in the same way. However, you can fully customize each zone individually, or only certain zones. Best practice typically goes as follows:

- Set the mineral composition, properties, and curves for the “Default”
- Navigate to different zones of interest and customize the parameters for that zone(s).
- If subsequent changes are made to the default, check zones with customizations to ensure that they still have the desired parameter values.

The **Mineral**** **parameter contains a list of ~15 options that can be selected. These correspond to the components (C) that we will be solving the proportions for during the inversion. The default composition is for Quartz, Calcite, Dolomite, Pyrite, Water, Oil, Clay, and Kerogen. However, this can be changed by selecting the desired minerals for the Default or on a zone by zone matrix. Additional minerals can be added by clicking the *Edit Matrix* link at the bottom of the table. This link also allows for changing the order of the minerals as well.

When a mineral is selected, its default properties are present by default. These values are reference numbers from various vendor chartbooks and academic papers, and are fully editable by the user. Additional minerals can be added via editing the CPI Config (advanced users only; please contact Danomics’ help staff if you need to edit the list of available minerals).

There are two special cases in Danomics’ mineral list – these are Clay and Kerogen. Clay corresponds to the final Vclay (vwcl) calculated in the Vclay module. Kerogen corresponds to the volume of kerogen (v_ker) calculated in the TOC module (technically a conversion from TOC wt. % that is done automatically for you). Danomics adopted this workflow from the work presented by Newsham et al., 2019 in the SPWLA 3 part tutorial on evaluating organic mudstones.

The ** Enabled **parameter simply allows one to turn minerals on/off. When turned off the mineral is omitted from the inversion and the properties are grayed out.

The Properties Matrix as shown below corresponds to the mineral properties for each log curve:

In the default configuration this corresponds to RhoB (density_final), Nphi (neutron_final), U (u_final), DT (sonic_final), Vclay (vwcl), Vker (v_ker), and Unity. For clarity, below is the list with an explanation of each:

**RhoB**: Bulk density of each mineral (e.g., calcite has a bulk density of 2.71 g/cc).**Nphi**: Neutron value of each mineral (e.g., calcite has a Nphi value of 0.00).**U**: U is the product of the bulk density and photoelectric curves such that U = PE*RhoB. This needs to be tuned, especially for Clay.**DT**: The compressional sonic travel time in uSec/ft for each mineral (e.g., calcite has a DTc of 49 uSec/ft).**Vclay**: The proportion of each mineral that is clay. This is zero in all cases, except for Clay, in which the value is one. This essentially tells the inversion that the Vclay from inversion should equal the Vclay from the clay volume module.**Vkerogen**: The proportion of each mineral that is kerogen. This is zero in all cases, except for kerogen, which is a value of one. This essentially tells the inversion that the Vkerogen from inversion should equal the Vkerogen from the TOC analysis module.**Unity**: This dictates that the mineral composition should sum to a value of one.

The ** Curve** parameter dictates which curve the properties correspond to in the inversion. E.g., if you have the first row as the mineral property for bulk density, the first curve should be the bulk density curve (density_final).

The ** Mode** parameter instructs the solver on how to treat the curve. Options are “Fit”, “Constraint”, and “Disabled”. These are defined as follows:

**Fit:**The solver will try to minimize the difference between the predicted curve from our inversion and the actual log curves, with each weighted by its confidence.**Constraint**: The solver will treat the curve as a constraint, and will force an exact solution.**Disabled**: The solver will ignore the curve in the inversion.

Danomics’ uses **constraint** as the default for RhoB and Unity, with **fit** as the default for the remainder of the log curves. Constraint as used as a default for RhoB and Unity because if those curves are forced to an exact solution then the density porosity from the inversion will *exactly* match the density porosity from the density porosity equation. However, this is not a requirement and they can be set as **fit** as well. This will result in some deviation between the density porosity equation and the porosity volumes from the inversion (where porosity volume is the sum of oil + gas + water).

The ** Conf. Int** parameter is the confidence in the curve value that is used in establishing a fit (i.e., the weighting). Lower values equate to higher confidence. In the screenshot above, the U Final has a lower

*Conf. Int.*than the Sonic Final curve. This does not mean that the curve is more accurate or of higher confidence… one must keep in mind that the curves have different ranges with U Final typically <15 while Sonic Final can range from 40-200 depending on the constituent. The default values are sourced from various academic studies, but there is no definitive value for any given curve, especially when working with large data sets that cover different vendors and tool generations. The general rule of thumb is that the confidence should be somewhat proportional to the range of variation observed in the data.

When *Edit Matrix* is clicked, it will bring up controls that will allow one to configure the matrix layout. Options are to shift minerals left/right, shift curves up/down, add minerals, add curves, and delete minerals/curves. The matrix can be reset to the default if undesired changes are made. When finished, simply click on *Done editing*.

The * Grain* parameter should be checked for components that will be used in determining grain density. For example, quartz, calcite and dolomite are all “grains” while oil, water, and gas are not “grains”. So, if it is a mineral/rock then select “grain”, and if it fills a pore space turn off “grain”.

The final parameter specific to the mineral inversion module is the **Use substitute in badhole**. If selected this will utilize the synthetic RhoB derived from the parameters in the Bad hole ID & Repair module calculated via the Gardener relation (i.e., from the sonic curve).

## Outputs

The primary output from this module is the grain density (minv_grain_density). Other outputs include the mineral volumes (vmin1, vmin2, vmin3, etc…) and the predicted curves. These are outlined in the table below:

Property | Curve Name | Description |

Grain Density | minv_grain_density | The bulk grain density derived from the bulk density of the “grain” components. |

Volume of Mineral | Vmin1, Vmin2, etc… | The volume of each mineral constituent. |

Predicted RhoB | rhob_pred | Predicted RhoB curve from mineral inversion. |

Predicted Nphi | nphi_pred | Predicted Nphi curve from mineral inversion. |

Predicted DT | sonic_pred | Predicted DT curve from mineral inversion. |

Predicted PE | pe_pred | PredictedPE curve from mineral inversion. |

Predicted Vclay | vwcl_pred | Predicted Vclay curve from mineral inversion. |

Predicted Vker | v_ker_pred | Predicted Vkerogen curve from mineral inversion. |

## Log Display

The log panel display from left to right includes the following tracks:

- Mineral proportions: The proportions of each of the selected minerals
- Grain Density: The grain density from the inversion (blue) with a comparison to the grain density from deterministic (red) and RhoMaa-UMaa (black) methods
- RhoB Prediction: The red curve is the prediction, the black curve is the actual, and the yellow shading shows the confidence interval.
- Nphi Prediction: The red curve is the prediction, the black curve is the actual, and the yellow shading shows the confidence interval.
- PE Prediction: The red curve is the prediction, the black curve is the actual, and the yellow shading shows the confidence interval.
- DT Prediction: The red curve is the prediction, the black curve is the actual, and the yellow shading shows the confidence interval.
- Vclay Prediction: The red curve is the prediction, the black curve is the actual, and the yellow shading shows the confidence interval.
- Vkerogen Prediction: The red curve is the prediction, the black curve is the actual, and the yellow shading shows the confidence interval.

In general, the objective of the interpreter should be to have the predicted curve fall inside the bounds of the yellow shading (confidence interval) and as close to the actual curve as possible. Poor fits usually mean that either a property needs to be adjusted or that the mineral composition does not reflect reality.

## Using the Results

The primary objective of the mineral inversion is to calculate the grain density so that it can be used for determining the porosity more accurately and eliminating issues with mixed lithology zones where grain density is not a constant throughout a zone.

To use the results in the porosity module, select the * Porosity Method* as “Min. Solver porosity”.

## Tips and Tricks

- Garbage in, garbage out. The interpreter should make an interpretation, this means selecting the relevant minerals and tuning the properties, especially for clay (check crossplots of sonic_final vs. vwcl and u_final vs. vwcl). Trying to just use a generic composition can lead to poor results.
- If you have customized the properties/mineral mix on a zone-by-zone basis, check each zone after modifying the defaults to ensure you haven’t accidentally changed the parameters for that zone.
- Understand if you are in a determined, over-determined, or under-determined state. Under-determined states mean that you have more minerals than you have input curves, which is common. Although you can get reasonable results in this state you should do more QC work.
- QC your work using the
*avg_grain_density*map on a zone by zone basis. This method of QC will quickly allow you to find wells with poor results. - Use Kerogen and Clay as minerals… trying to solve for a generic “Clay” using the Vclay curve keeps things consistent and is much more robust than trying to solve for every potential clay mineral. For Kerogen, without using the solution from the TOC module, it can be difficult to decipher if low bulk density values are a function of porosity or kerogen.