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.
Objetivos:
Esse documento que você está usando é um IPython notebook. É um documento interativo que mistura texto (como esse), código (como abaixo), e o resultado de executar o código (que pode ser números, texto, figuras, videos, etc). Esta prática usará a biblioteca Fatiando a Terra de modelagem geofísica. Vamos usar modelagem direta interativa da classe Moulder
. Para isso, precisamos carregar (import
) o Moulder
e também o módulo numpy.
O notebook é divido em células (como esta). Para editar o conteúdo de uma célula, clique nela (clique nesta para editar esse texto). Para executar uma célula, aperte Shift + Enter
. Execute as duas células abaixo.
from __future__ import division
from fatiando.gravmag.interactive import Moulder
import fatiando
import numpy as np
print('Versão do Fatiando a Terra: {}'.format(fatiando.__version__))
Essa tarefa será "brincar de Deus". Vamos criar uma "Terra" nossa (nosso modelo) e usar essa Terra para gerar dados (os dados sintéticos).
Shift + Enter
) para abrir uma janela para modelagem direta.area = (0, 50e3, 0, 20e3)
x = np.linspace(area[0], area[1], 150)
z = np.zeros_like(x)
modelo1 = Moulder(area, x, z)
modelo1.run()
Rode a célula abaixo para salvar o seu modelo e os dados gerados. Mude os nomes dos arquivos (coisas entre ''
) para não perder seus dados.
modelo1.save('modelo1')
modelo1.save_predicted('modelo1-dados.txt')
Pegue o arquivo de dados (modelo1-dados.txt
) e o arquivo de modelo (modelo1
) de um colega que você não viu desenhando. A única informação "geológica" que você tem é que o dado é produzido por 1 único corpo.
''
) para os do colega.dados_colega = 'modelo1-dados.txt'
modelo_colega = 'modelo1'
x, z, dados = np.loadtxt(dados_colega, unpack=True)
modelo2 = Moulder(area, x, z, data=dados)
modelo2.run()
A célula abaixo irá salvar seu modelo. Mude o nome do arquivo ('modelo2'
) para não perder seus dados.
modelo2.save('modelo2')
Vamos comparar agora o seu modelo com "a realidade" criada pelo colega. Rode as duas células abaixo para gerar os gráficos. O primeiro é o seu modelo (troque o nome do arquivo para o que você colocou na célula acima). O segundo é o verdadeiro. Para salvar a figura abaixo, clique com o botão direito e selecione "Salvar imagem".
modelo2.plot()
Moulder.load(modelo_colega).plot()
O problema anterior foi de sacanagem. Não há como gerar um modelo que reproduza a realidade somente com a anomalia. Como você viu, existem vários (até infinitos) modelos que produzem o mesmo dado. O que diferencia um possível modelo e outro é o conhecimento geológico e geofísico do intérprete (você).
Para ilustrar isso vamos fazer uma "realidade" na qual o teremos mais informações geológicas. Dessa vez, diremos para o colega que pegar nosso dado qual é o contexo geológico e qual é a densidade correta.
Em situações reais, dificilmente fazemos um levantamento geofísico em uma área onde o conhecimento da geologia é zero. Sabemos que tem intrusões nessa região, que ali é uma bacia sedimentar, etc.
area = (0, 10e3, 0, 5e3)
x = np.linspace(area[0], area[1], 150)
z = np.zeros_like(x)
modelo3 = Moulder(area, x, z)
modelo3.run()
A célula abaixo salva os dados e o modelo. Mude os nomes dos arquivos para não confundir/sobreescrever e perder seus dados.
modelo3.save('modelo3')
modelo3.save_predicted('modelo3-dados.txt')
Vamos tentar a modelagem novamente. Dessa vez, sabemos que a anomalia é causada por uma intrusão (batólito, dique, soleira, etc). Também sabemos a densidade correta (perguntar para o colega).
dado_colega_intrusao = 'modelo3-dados.txt'
modelo_colega_intrusao = 'modelo3'
x, z, dado = np.loadtxt(dado_colega_intrusao, unpack=True)
modelo_colega3 = Moulder(area, x, z, data=dado)
modelo_colega3.run()
Salvando a sua solução:
modelo_colega3.save('modelo_colega3')
Vamos ver como foi dessa vez. Primeiro o seu resultado e depois o verdadeiro. Mude o nome do arquivo para o que você usou na célula acima.
modelo_colega3.plot()
Moulder.load(modelo_colega_intrusao).plot()
Vamos repetir o mesmo processo feito acima mas dessa vez para o modelo de uma bacia sedimentar. Teremos que fazer algumas simplificações:
Dessa vez vamos trocar a dica: ao invés da densidade, vamos informar a profundidade do embasamento em dois pontos. Em casos reais, essa informação poderia vir de poços que alcaçaram o embasamento.
area = (0, 200e3, 0, 15e3)
x = np.linspace(area[0], area[1], 150)
z = np.zeros_like(x)
modelo4 = Moulder(area, x, z)
modelo4.run()
A célula abaixo salva os dados e o modelo. Mude os nomes dos arquivos para não confundir/sobreescrever e perder seus dados.
modelo4.save('modelo4')
modelo4.save_predicted('modelo4-dados.txt')
Sabemos que a anomalia é causada por uma bacia sedimentar e que podemos considerar que a densidade é homogênea.
dado_colega_bacia = 'modelo4-dados.txt'
modelo_colega_bacia = 'modelo4'
x, z, dado = np.loadtxt(dado_colega_bacia, unpack=True)
modelo_colega4 = Moulder(area, x, z, data=dado)
modelo_colega4.run()
modelo_colega4.save('modelo_colega4')
Vamos ver se vocês acertaram dessa vez. Mude o nome do arquivo na célula abaixo para o que você usou para salvar acima.
modelo_colega4.plot()
Moulder.load(modelo_colega_bacia).plot()