Course website: http://www.leouieda.com/geofisica1
Note: This notebook is part of the course "Geofísica 1" of Geology program of the Universidade do Estado do Rio de Janeiro. All content can be freely used and adapted under the terms of the Creative Commons Attribution 4.0 International License.
Esse documento que você está usando é um Jupyter notebook. É um documento interativo que mistura texto (como esse), código (como abaixo), e o resultado de executar o código (números, texto, figuras, videos, etc).
O notebook te fornecerá exemplos interativos que trabalham os temas abordados no questionário. Utilize esses exemplos para responder as perguntas.
As células com números ao lado, como In [1]:
, são código Python. Algumas dessas células não produzem resultado e servem de preparação para os exemplos interativos. Outras, produzem gráficos interativos. Você deve executar todas as células, uma de cada vez, mesmo as que não produzem gráficos.
Para executar uma célula, clique em cima dela e aperte Shift + Enter
. O foco (contorno verde ou cinza em torno da célula) deverá passar para a célula abaixo. Para rodá-la, aperte Shift + Enter
novamente e assim por diante. Você pode executar células de texto que não acontecerá nada.
Exectute as células abaixo para carregar as componentes necessárias para nossa prática. Vamos utilizar várias bibliotecas, inclusive uma de geofísica chamada Fatiando a Terra.
%matplotlib inline
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import ipywidgets as widgets
from IPython.display import display
import seaborn
import fatiando
from icgem import load_icgem_gdf
print("Usando a versão do Fatiando: {}".format(fatiando.__version__))
"Terra Normal" é o nome que damos ao elipsóide de referência utilizado para o cálculo de anomalias da gravidade. Um elipsóide geralmente utilizado é o WGS84.
Existem fórmulas para calcular a gravidade (lembre-se que gravidade = gravitação + centrífuga) de um elipsóide em qualquer ponto fora dele. Porém, essas fórmulas são mais complicadas do que queremos para essa aula. Uma alternativa é utilizar a fórmula de Somigliana:
$$ \gamma(\varphi) = \frac{a \gamma_a \cos^2 \varphi + b \gamma_b \sin^2 \varphi}{\sqrt{a^2 \cos^2 \varphi + b^2 \sin^2 \varphi}} $$$\gamma$ é a gravidade do elipsóide calculada na latitude $\varphi$ e sobre a superfície do elipsóide (ou seja, altitude zero). $a$ e $b$ são os eixos maior e menor do elipsóide, $\gamma_a$ e $\gamma_b$ são a gravidade do elipsóide no equador e nos polos. Os valores de $a$, $b$, $\gamma_a$ e $\gamma_b$ são tabelados para cada elipsóide. Os valores abaixo são referentes ao WGS84:
a | 6378137 | metros |
---|---|---|
b | 6356752.3142 | metros |
$\gamma_a$ | 9.7803253359 | m/s² |
$\gamma_b$ | 9.8321849378 | m/s² |
Os valores foram retirados do livro:
Hofmann-Wellenhof, B., and H. Moritz (2006), Physical Geodesy, 2nd, corr. ed. 2006 edition., Springer, Wien ; New York.
Hoje vamos calcular o valor de $gamma$ utilizando a fórmula de Somigliana em uma planilha. Vamos utilizar o programa LibreOffice Calc (uma versão livre do Microsoft Excel).
Primeiro: vocês vão precisar abrir o arquivo com os dados utilizados na prática passada no Calc. Esses arquivos estão em um arquivo de texto chamado eigen-6c3stat-0_5-mundo.gdf
na pasta data
(peça ajuda para localizar o arquivo no seu computador). Vá até a pasta e abra esse arquivo e examine seu conteúdo.
Para abrir o arquivo no Calc, selecione File > Open e navegue até o arquivo. Abrirá uma janela de configuração de importação de texto (Text Import). Nessa janela:
Segundo: Não vamos editar os dados nesse arquivo diretamente para não perder os dados originais.
data
com o nome disturbio-mundo-{nome do aluno}.ods
, substituindo seu nome (sem espaços e sem acentos)Terceiro: Calcule os valores de $\gamma$ para cada ponto do dado.
=sin(A2)
=sqrt(A2)
por exemplo=A2 + B2/C2
é diferente de =(A2 + B2)/C2
Quarto: Salve uma cópia da sua planilha no formato Comma Separated Values (.csv
) para podermos carregá-los no notebook.
Dicas:
Depois de calcular os valores acima, precisamos carregá-los aqui no notebook para gerarmos os mapas.
Primeiro, coloque o nome do seu arquivo .csv
abaixo e execute a célula.
arquivo_dados = '../data/disturbio-mundo-{nome do aluno}.csv'
Agora, execute as células abaixo para carregar os dados e gerar um mapa com os valores que você calculou.
lon, lat, gamma = np.loadtxt(arquivo_dados, delimiter=',', unpack=True, skiprows=1, usecols=[0, 1, -1])
bm = Basemap(projection='moll', lon_0=0, resolution='c')
x, y = bm(lon, lat)
plt.figure(figsize=(18, 10))
tmp = bm.contourf(x, y, gamma, 100, tri=True, cmap='Reds')
plt.colorbar(orientation='horizontal', pad=0.01, aspect=50, shrink=0.5).set_label('mGal')
plt.title(r"Gravidade da Terra Normal ($\gamma$)", fontsize=16)
A fórmula de Somgliana nos dá a gravidade da Terra Normal calculada sobre o elipsóide. Nós precisamos de $\gamma$ calculado no ponto onde medimos a gravidade (P) para calcular o distúrbio. Para obter $\gamma_P$, nós podemos utilizar a correção de ar-livre. Essa correção nos dá uma approximação de $\gamma_P$:
$$ \gamma_P \approx \gamma - 0.3086 H $$em que $H$ é a altitude em relação ao elipsóide (altitude geométrica) em metros. Lembrando que a correção é feita em mGal.
Calcule $\gamma_P$ em sua planilha (a mesma que antes). Certifique-se que os valores de $\gamma_P$ estão na última coluna. Após calcular, salve novamente como CVS (sobreescreva o arquivo anterior).
Rode as células abaixo para carregar os dados de $\gamma_P$ e gerar um mapa.
gamma_p = np.loadtxt(arquivo_dados, delimiter=',', unpack=True, skiprows=1, usecols=[-1])
plt.figure(figsize=(18, 10))
tmp = bm.contourf(x, y, gamma_p, 100, tri=True, cmap='Reds')
plt.colorbar(orientation='horizontal', pad=0.01, aspect=50, shrink=0.5).set_label('mGal')
plt.title(r"Gravidade da Terra Normal em P ($\gamma_P$)", fontsize=16)
O distúrbio da gravidade é definido como:
$$ \delta = g_P - \gamma_P$$em que $g_P$ é a gravidade medida no ponto P.
Calcule o distúrbio da gravidade em sua planilha. Coloque os valores do distúrbio na última coluna e salve como .csv
.
Rode as células abaixo para carregar os valores calculados e gerar o mapa.
disturbio = np.loadtxt(arquivo_dados, delimiter=',', unpack=True, skiprows=1, usecols=[-1])
def varia_escala(escala_de_cor):
plt.figure(figsize=(18, 10))
ranges = np.abs([disturbio.min(), disturbio.max()]).max()
tmp = bm.contourf(x, y, disturbio, 100, tri=True, cmap=escala_de_cor, vmin=-ranges, vmax=ranges)
plt.colorbar(orientation='horizontal', pad=0.01, aspect=50, shrink=0.5).set_label('mGal')
plt.title(u"Distúrbio da gravidade (escala de cor '{}')".format(escala_de_cor), fontsize=16)
escalas = 'Reds Blues Greys YlOrBr RdBu_r BrBG PRGn Dark2 jet ocean rainbow gnuplot'.split()
w = widgets.interactive(varia_escala, escala_de_cor=escalas)
display(w)