A simple fault model with constant offset. We start by importing the necessary dependencies:
# These two lines are necessary only if GemPy is not installed
import sys, os
sys.path.append("../..")
# Importing GemPy
import gempy as gp
# Embedding matplotlib figures in the notebooks
%matplotlib inline
# Importing auxiliary libraries
import numpy as np
import matplotlib.pyplot as plt
Creating the model by importing the input data and displaying it:
path_to_data = os.pardir+"/data/input_data/jan_models/"
geo_data = gp.create_data([0,1000,0,1000,0,1000],resolution=[50,50,50],
path_o = path_to_data + "model5_orientations.csv",
path_i = path_to_data + "model5_surface_points.csv")
Active grids: ['regular']
geo_data.get_data()
X | Y | Z | X_r | Y_r | Z_r | surface | series | id | order_series | smooth | G_x | G_y | G_z | dip | azimuth | polarity | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
surface_points | 0 | 0 | 200 | 600 | 0.2501 | 0.3501 | 0.5501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 0 | 800 | 600 | 0.2501 | 0.6501 | 0.5501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
2 | 200 | 200 | 600 | 0.3501 | 0.3501 | 0.5501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
3 | 200 | 800 | 600 | 0.3501 | 0.6501 | 0.5501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
4 | 800 | 200 | 200 | 0.6501 | 0.3501 | 0.3501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
5 | 800 | 800 | 200 | 0.6501 | 0.6501 | 0.3501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
6 | 1000 | 200 | 200 | 0.7501 | 0.3501 | 0.3501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
7 | 1000 | 800 | 200 | 0.7501 | 0.6501 | 0.3501 | rock1 | Default series | 1 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
8 | 0 | 200 | 800 | 0.2501 | 0.3501 | 0.6501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
9 | 0 | 800 | 800 | 0.2501 | 0.6501 | 0.6501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
10 | 200 | 200 | 800 | 0.3501 | 0.3501 | 0.6501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
11 | 200 | 800 | 800 | 0.3501 | 0.6501 | 0.6501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
12 | 800 | 200 | 400 | 0.6501 | 0.3501 | 0.4501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
13 | 800 | 800 | 400 | 0.6501 | 0.6501 | 0.4501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
14 | 1000 | 200 | 400 | 0.7501 | 0.3501 | 0.4501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
15 | 1000 | 800 | 400 | 0.7501 | 0.6501 | 0.4501 | rock2 | Default series | 2 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
16 | 500 | 500 | 500 | 0.5001 | 0.5001 | 0.5001 | fault | Default series | 3 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
17 | 450 | 500 | 600 | 0.4751 | 0.5001 | 0.5501 | fault | Default series | 3 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
18 | 500 | 200 | 500 | 0.5001 | 0.3501 | 0.5001 | fault | Default series | 3 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
19 | 450 | 200 | 600 | 0.4751 | 0.3501 | 0.5501 | fault | Default series | 3 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
20 | 500 | 800 | 500 | 0.5001 | 0.6501 | 0.5001 | fault | Default series | 3 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
21 | 450 | 800 | 600 | 0.4751 | 0.6501 | 0.5501 | fault | Default series | 3 | 1 | 0.000001 | NaN | NaN | NaN | NaN | NaN | NaN | |
orientations | 1 | 100 | 500 | 600 | 0.3001 | 0.5001 | 0.5501 | rock1 | Default series | 1 | 1 | 0.010000 | 1.000000e-12 | 1.000000e-12 | 1.0 | 0.0 | 90.0 | 1.0 |
3 | 900 | 500 | 200 | 0.7001 | 0.5001 | 0.3501 | rock1 | Default series | 1 | 1 | 0.010000 | 1.000000e-12 | 1.000000e-12 | 1.0 | 0.0 | 90.0 | 1.0 | |
0 | 100 | 500 | 800 | 0.3001 | 0.5001 | 0.6501 | rock2 | Default series | 2 | 1 | 0.010000 | 1.000000e-12 | 1.000000e-12 | 1.0 | 0.0 | 90.0 | 1.0 | |
2 | 900 | 500 | 400 | 0.7001 | 0.5001 | 0.4501 | rock2 | Default series | 2 | 1 | 0.010000 | 1.000000e-12 | 1.000000e-12 | 1.0 | 0.0 | 90.0 | 1.0 | |
4 | 500 | 500 | 500 | 0.5001 | 0.5001 | 0.5001 | fault | Default series | 3 | 1 | 0.010000 | 8.660254e-01 | 1.000053e-12 | 0.5 | 60.0 | 90.0 | 1.0 |
Setting and ordering the units and series:
gp.map_series_to_surfaces(geo_data, {"Fault_Series":'fault',
"Strat_Series": ('rock2','rock1')})
geo_data.set_is_fault(['Fault_Series'])
Fault colors changed. If you do not like this behavior, set change_color to False.
isFault | isFinite | |
---|---|---|
Fault_Series | True | False |
Strat_Series | False | False |
Basement | False | False |
%matplotlib inline
gp.plot.plot_data(geo_data, direction='y')
<gempy.plot.visualization_2d.PlotData2D at 0x7fb5b0857400>
Calculating the model:
interp_data = gp.set_interpolation_data(geo_data, theano_optimizer='fast_compile')
Compiling theano function... Level of Optimization: fast_compile Device: cpu Precision: float64 Number of faults: 1 Compilation Done!
sol = gp.compute_model(geo_data)
x_to_interpolate_shape __str__ = 125038 len_i_0 __str__ = 0 len_i_1 __str__ = 5 x_to_interpolate_shape __str__ = 125038 len_i_0 __str__ = 5 len_i_1 __str__ = 19
../../gempy/core/solution.py:266: UserWarning: Attribute error. Using non masked marching cubesmarching_cubes_lewiner() got an unexpected keyword argument 'mask'. warnings.warn('Attribute error. Using non masked marching cubes' + str(e)+'.')
Displaying the result in x and y direction:
%matplotlib inline
gp.plot.plot_section(geo_data, cell_number=25,
direction='y', show_data=False, show_all_data=True)
<gempy.plot.visualization_2d.PlotSolution at 0x7fb5a0bf1710>
%matplotlib inline
gp.plot.plot_section(geo_data, cell_number=25,
direction='x', show_data=True)
<gempy.plot.visualization_2d.PlotSolution at 0x7fb590d473c8>
%matplotlib inline
gp.plot.plot_scalar_field(geo_data, cell_number=25, series=1,
direction='y', show_data=True)
geo_data.series
order_series | BottomRelation | |
---|---|---|
Fault_Series | 1 | Fault |
Strat_Series | 2 | Erosion |
Basement | 3 | Erosion |
geo_data.interpolator.theano_graph.is_erosion.get_value()
array([0, 0])