caesar-rock 0.0.10
Package for estimating the confined compressive strength of rock.
License: MIT

<!-- coding: utf-8 -->
# caesar-rock

`caesar-rock` é um pacote para o cálculo da resistência à compressão confinada de rochas (CCS) a partir de dados de perfilagem de porosidade ou do tempo de trânsito compressional. Inclui o cálculo do gradiente de poro pressão pelo método de Eaton e Zamora.

`caesar-rock` inclui as seguintes funções:

  * Funções para o cálculo do gradiente de poro pressão pelo método de Eaton
  * Funções para o cálculo do gradiente de poro pressão pelo método de Zamora (com expoente d corrigido)
  * Funções para a estimativa da resistência uniaxial à compressão das rochas por meio de equações empíricas a partir da porosidade
  * Funções para a estimativa da resistência uniaxial à compressão das rochas por meio de equações empíricas a partir do tempo de trânsito compressional
  * Função para a estimativa do ângulo de atrito interno das rochas por meio da correlação empírica obtida em Al-Awad (2002)
  * Função para o cálculo da resistência à compressão confinada das rochas
  * Funções para geração de dataframe e gráficos com os resultados 

## Instalação

```bash
pip install caesar-rock
```

## Exemplos

### 1. Gradiente de poro pressão pelo método de Eaton

Os dados de entrada para o cálculo dos gradientes de poro pressão pelo método de Eaton consistem nos perfis de densidade (g/cm³) e tempo de trânsito compressional (µs/ft) ao longo da profundidade (m), organizados em um dataframe, como o padrão a seguir. Outro parâmetro necessário é o gradiente de poro pressão normal (ppg).

| Depth - m | Bulk density - g/cm³ | Delta-T Compressional - µs/ft |
| -------- | -------- | -------- |
| 2765.2979 | 2.0542 | 62.5396 |
| 2765.4504 | 2.0731 | 61.4572 |
| 2765.6028 | 2.0811 | 60.9234 |

O exemplo seguinte mostra a leitura do arquivo `.csv` conforme o padrão anterior, instancia-se a `classe Eaton`, e imprime-se o dataframe com os gradientes de poro pressão resultantes.


```python
import pandas as pd
from caesarrock import Eaton

df = pd.read_csv('df_eaton.csv')

eaton = Eaton(df = df, normal_pore_pressure_gradient = 8.5)

print(eaton.df)

```

### 2. Gradiente de poro pressão pelo método de Zamora

Os dados de entrada para o cálculo dos gradientes de poro pressão pelo método de Zamora consistem nos valores do expoente d corrigido (adimensional) ao longo da profundidade (m), organizados em um dataframe, como o padrão a seguir. Outro parâmetro necessário é o gradiente de poro pressão normal (ppg).

| Depth - m | Corrected Drilling Exponent - unitless |
| -------- | -------- |
| 2751.0 | 1.06 |
| 2752.0 | 1.04 |
| 2753.0 | 1.04 |

O exemplo seguinte mostra a leitura do arquivo `.csv` conforme o padrão anterior, instancia-se a `classe Zamora`, e imprime-se o dataframe com os gradientes de poro pressão resultantes.


```python
import pandas as pd
from caesarrock import Zamora

df = pd.read_csv('df_zamora.csv')

zamora = Zamora(df = df, normal_pore_pressure_gradient = 8.5)

print(zamora.df)

```

### 3. Resistência à compressão confinada das rochas

Os dados de entrada para o cálculo da resistência confinada das rochas consistem na profundidade (m), litologia, densidade circulante equivalente (ppg), gradiente de poro pressão (ppg) e um dado geofísico, ou a porosidade (fr) ou o tempo de trânsito compressional (µs/ft), conforme os padrões a seguir. O dado geofísico deve ser informado no parâmetro `variable` como `Data.POROSITY` ou `Data.DELTA_TC`.

Além desses dados, é necessário classificar as litologias presentes no dataframe em três listas de grupos: `shale_list`, `limestone_list` e `sandstone_list`. As litologias não enumeradas na estrutura `Lit`: `Lit.CLAYSTONE`, `Lit.SILTSTONE`, `Lit.MARL`, `Lit.LIMESTONE` e `Lit.SANDSTONE`, podem ser descritas pelo tipo string, por exemplo: `'Dolomite'`.

Para cada grupo de litologia, importa-se a equação empírica para o cálculo do UCS com base em suas limitações, isto é, litologia e bacia ou região na qual foram extraídos os testemunhos usados para obter a correlação. Alternativamente, é possível definir uma função e passa-la como parâmetro. As equações adequadas são informadas em `shale_equation`, `limestone_equation` e `sandstone_equation`.

#### Dado geofísico: porosidade

| Depth - m | Lithology | ECD - ppg | Grad. Poro Pressure - ppg | Porosity - fr
| -------- | -------- | -------- |-------- | -------- |
| 2765.2979 | Limestone | 15.0833 |8.4593| 0.1111 |
| 2765.4504 | Limestone | 15.0833 |8.1952 | 0.1015 |
| 2765.6028 | Limestone | 15.0798 |8.0605 | 0.0927 |

O exemplo seguinte mostra a leitura do arquivo `.csv` conforme o padrão anterior, instancia-se a `classe RockStrengthLog`, e imprime-se o dataframe com as resistências resultantes. O método `.plot()` plota o gráfico dos dados fornecidos e calculados.

```python
import pandas as pd
from caesarrock import RockStrengthLog, Data, Lit, shale_horsrud_porosity, limestone_faquhar_porosity, sandstone_edimann_porosity

df = pd.read_csv('df_p.csv')

ccs = RockStrengthLog(df = df,
                      variable = Data.POROSITY,
                      shale_list = [Lit.CLAYSTONE, Lit.MARL, Lit.SILTSTONE],
                      limestone_list = [Lit.LIMESTONE],
                      sandstone_list = [Lit.SANDSTONE],
                      shale_equation = shale_horsrud_porosity,
                      limestone_equation = limestone_faquhar_porosity,
                      sandstone_equation = sandstone_edimann_porosity)

print(ccs.df)

ccs.plot()

```

#### Dado geofísico: tempo de trânsito compressional

| Depth - m | Lithology | ECD - ppg | Grad. Poro Pressure - ppg | Delta T - Compressional - µs/ft
| -------- | -------- | -------- |-------- | -------- |
| 2765.2979 | Limestone | 15.0833 |8.4593| 62.5396 |
| 2765.4504 | Limestone | 15.0833 |8.1952 | 61.4572 |
| 2765.6028 | Limestone | 15.0798 |8.0605 | 60.9234 |

O exemplo seguinte mostra a leitura do arquivo `.csv` conforme o padrão anterior, instancia-se a `classe RockStrengthLog`, e imprime-se o dataframe com as resistências resultantes. O método `.plot()` plota o gráfico dos dados fornecidos e calculados.

```python
import pandas as pd
from caesarrock import RockStrengthLog, Data, Lit, shale_horsrud_delta_tc, limestone_golubev_delta_tc, sandstone_macnelly_delta_tc

df = pd.read_csv('df_dt.csv')

ccs = RockStrengthLog(df = df,
                      variable = Data.DELTA_TC,
                      shale_list = [Lit.CLAYSTONE, Lit.MARL, Lit.SILTSTONE],
                      limestone_list = [Lit.LIMESTONE],
                      sandstone_list = [Lit.SANDSTONE],
                      shale_equation = shale_horsrud_delta_tc,
                      limestone_equation = limestone_golubev_delta_tc,
                      sandstone_equation = sandstone_macnelly_delta_tc)

print(ccs.df)

ccs.plot()

```

## Referências
  * Al-Awad, M. N. J. Simple Correlation to Evaluate Mohr-Coulomb Failure Criterion Using Uniaxial Compressive Strength. J. King Saud Univ.; Vol. 14, Eng. Sci. (1). 2002.
  * Edimann, K.; Somerville, J. M.; Smart, B. G. D.; Hamilton, S. A.; B. R. Crawford. Predicting Rock Mechanical Properties from Wireline Porosities. Paper presented at the SPE/ISRM Rock Mechanics in Petroleum Engineering, Trondheim, Norway, July 1998.
  * Farquhar, R. A.; Somerville, J. M; Smart, B. G. D. Porosity as a Geomechanical Indicator: An Application of Core and Log Data and Rock Mechanics. Paper presented at the European Petroleum Conference, London, United Kingdom, October 1994.
  * Golubev, A. A.; Rabinovich, G. Y. 1976. apud Chang, C.; Zpback, M. D.; Khaksar, A. Empirical Relations Between Rock Strength and Physical Properties in Sedimen-tary Rocks. Journal of Petroleum Science and Engineering 51. 2006. 
  * Horshud, P. Estimating Mechanical Properties of Shale From Empirical Correlations. SPE Drill & Compl 16 (02). 2001.
  * MacNally, G. H. The Prediction of Geotechnical Rock Properties from Sonic and Neutron Logs. Exploration Geophysics 21. 1990.