<!-- 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.