Note
Go to the end to download the full example code.
Perth Basin, Western Australia¶
Regional stratigraphy and major normal faults of the northern Perth Basin
This model covers the northern Perth Basin, Western Australia, including eight major normal faults (among them the Darling Fault) offsetting a Permian-to-Cretaceous sedimentary sequence.
import os
# Importing GemPy
import gempy as gp
import gempy_viewer as gpv
# Importing auxiliary libraries
import matplotlib
matplotlib.rcParams['figure.figsize'] = (20.0, 10.0)
cwd = os.getcwd()
if 'examples' not in cwd:
data_path = os.getcwd() + '/examples'
else:
data_path = cwd + '/../..'
geo_model = gp.create_geomodel(
project_name='Perth_Basin',
extent=[337000, 400000, 6640000, 6710000, -18000, 1000],
refinement=6,
importer_helper=gp.data.ImporterHelper(
path_to_orientations=data_path + "/data/input_data/perth_basin/Paper_GU2F_sc_faults_topo_Foliations.csv",
path_to_surface_points=data_path + "/data/input_data/perth_basin/Paper_GU2F_sc_faults_topo_Points.csv",
)
)
del_surfaces = ['Cadda', 'Woodada_Kockatea', 'Cattamarra']
for s in del_surfaces:
gp.remove_element_by_name(geo_model, s)
geo_model.structural_frame
gp.map_stack_to_surfaces(
gempy_model=geo_model,
mapping_object={
"fault_Abrolhos_Transfer": ["Abrolhos_Transfer"],
"fault_Coomallo": ["Coomallo"],
"fault_Eneabba_South": ["Eneabba_South"],
"fault_Hypo_fault_W": ["Hypo_fault_W"],
"fault_Hypo_fault_E": ["Hypo_fault_E"],
"fault_Urella_North": ["Urella_North"],
"fault_Darling": ["Darling"],
"fault_Urella_South": ["Urella_South"],
"Sedimentary_Series": ['Cretaceous', 'Yarragadee', 'Eneabba', 'Lesueur', 'Permian']
}
)
Select which series are faults¶
gp.set_is_fault(
geo_model,
[
"fault_Abrolhos_Transfer",
"fault_Coomallo",
"fault_Eneabba_South",
"fault_Hypo_fault_W",
"fault_Hypo_fault_E",
"fault_Urella_North",
"fault_Darling",
"fault_Urella_South"
],
)
print(geo_model.structural_frame.fault_relations)
[[False False False False False False False False True]
[False False False False False False False False True]
[False False False False False False False False True]
[False False False False False False False False True]
[False False False False False False False False True]
[False False False False False False False False True]
[False False False False False False False False True]
[False False False False False False False False True]
[False False False False False False False False False]]
gpv.plot_2d(geo_model, direction=['z'])

<gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7f3e14f032d0>
[-2800. 1000.]
Active grids: GridTypes.OCTREE|TOPOGRAPHY|NONE
Topography(_regular_grid=RegularGrid(resolution=array([192, 256, 64]), extent=array([ 3.37e+05, 4.00e+05, 6.64e+06, 6.71e+06, -1.80e+04, 1.00e+03]), values=array([[ 3.37164062e+05, 6.64013672e+06, -1.78515625e+04],
[ 3.37164062e+05, 6.64013672e+06, -1.75546875e+04],
[ 3.37164062e+05, 6.64013672e+06, -1.72578125e+04],
...,
[ 3.99835938e+05, 6.70986328e+06, 2.57812500e+02],
[ 3.99835938e+05, 6.70986328e+06, 5.54687500e+02],
[ 3.99835938e+05, 6.70986328e+06, 8.51562500e+02]],
shape=(3145728, 3)), mask_topo=array([], shape=(0, 3), dtype=bool), _transform=None, _base_resolution=array([6, 8, 2])), values_2d=array([[[ 3.37000000e+05, 6.64000000e+06, -8.39147067e+02],
[ 3.37000000e+05, 6.64027451e+06, -7.87038174e+02],
[ 3.37000000e+05, 6.64054902e+06, -7.43806087e+02],
...,
[ 3.37000000e+05, 6.70945098e+06, -1.01702181e+03],
[ 3.37000000e+05, 6.70972549e+06, -9.62665055e+02],
[ 3.37000000e+05, 6.71000000e+06, -9.02652722e+02]],
[[ 3.37329843e+05, 6.64000000e+06, -8.45509106e+02],
[ 3.37329843e+05, 6.64027451e+06, -8.07154510e+02],
[ 3.37329843e+05, 6.64054902e+06, -7.77055023e+02],
...,
[ 3.37329843e+05, 6.70945098e+06, -9.91611095e+02],
[ 3.37329843e+05, 6.70972549e+06, -9.45242811e+02],
[ 3.37329843e+05, 6.71000000e+06, -8.97111509e+02]],
[[ 3.37659686e+05, 6.64000000e+06, -8.25487379e+02],
[ 3.37659686e+05, 6.64027451e+06, -7.88725276e+02],
[ 3.37659686e+05, 6.64054902e+06, -7.43281635e+02],
...,
[ 3.37659686e+05, 6.70945098e+06, -9.23235105e+02],
[ 3.37659686e+05, 6.70972549e+06, -8.77676638e+02],
[ 3.37659686e+05, 6.71000000e+06, -8.57097627e+02]],
...,
[[ 3.99340314e+05, 6.64000000e+06, -1.26479236e+03],
[ 3.99340314e+05, 6.64027451e+06, -1.18979385e+03],
[ 3.99340314e+05, 6.64054902e+06, -1.13495191e+03],
...,
[ 3.99340314e+05, 6.70945098e+06, -1.34370283e+03],
[ 3.99340314e+05, 6.70972549e+06, -1.35875555e+03],
[ 3.99340314e+05, 6.71000000e+06, -1.32592610e+03]],
[[ 3.99670157e+05, 6.64000000e+06, -1.19395572e+03],
[ 3.99670157e+05, 6.64027451e+06, -1.11955152e+03],
[ 3.99670157e+05, 6.64054902e+06, -1.08116437e+03],
...,
[ 3.99670157e+05, 6.70945098e+06, -1.30324540e+03],
[ 3.99670157e+05, 6.70972549e+06, -1.32203653e+03],
[ 3.99670157e+05, 6.71000000e+06, -1.27123499e+03]],
[[ 4.00000000e+05, 6.64000000e+06, -1.13597243e+03],
[ 4.00000000e+05, 6.64027451e+06, -1.06163021e+03],
[ 4.00000000e+05, 6.64054902e+06, -1.01937065e+03],
...,
[ 4.00000000e+05, 6.70945098e+06, -1.26587597e+03],
[ 4.00000000e+05, 6.70972549e+06, -1.24971634e+03],
[ 4.00000000e+05, 6.71000000e+06, -1.20352799e+03]]],
shape=(192, 256, 3)), source=None, values=array([[ 3.37000000e+05, 6.64000000e+06, -8.39147067e+02],
[ 3.37000000e+05, 6.64027451e+06, -7.87038174e+02],
[ 3.37000000e+05, 6.64054902e+06, -7.43806087e+02],
...,
[ 4.00000000e+05, 6.70945098e+06, -1.26587597e+03],
[ 4.00000000e+05, 6.70972549e+06, -1.24971634e+03],
[ 4.00000000e+05, 6.71000000e+06, -1.20352799e+03]],
shape=(49152, 3)), resolution=(192, 256), raster_shape=())
gpv.plot_3d(geo_model)

<gempy_viewer.modules.plot_3d.vista.GemPyToVista object at 0x7f3e14f6fbd0>
gp.compute_model(
gempy_model=geo_model,
engine_config=gp.data.GemPyEngineConfig(
backend=gp.data.AvailableBackends.PYTORCH,
dtype="float64",
)
)
Setting Backend To: AvailableBackends.PYTORCH
GPU enabled. Using device: cuda
GPU device count: 1
Current GPU device: 0
Chunking done: 10 chunks
Chunking done: 11 chunks
Chunking done: 7 chunks
Chunking done: 10 chunks
Chunking done: 9 chunks
Chunking done: 7 chunks
Chunking done: 7 chunks
Chunking done: 7 chunks
Chunking done: 8 chunks
Chunking done: 7 chunks
Chunking done: 61 chunks
Chunking done: 36 chunks
Chunking done: 48 chunks
Chunking done: 45 chunks
Chunking done: 36 chunks
Chunking done: 36 chunks
Chunking done: 36 chunks
Chunking done: 42 chunks
Chunking done: 36 chunks
Chunking done: 317 chunks
Chunking done: 19 chunks
Chunking done: 25 chunks
Chunking done: 23 chunks
Chunking done: 19 chunks
Chunking done: 19 chunks
Chunking done: 19 chunks
Chunking done: 22 chunks
Chunking done: 19 chunks
Chunking done: 163 chunks
Chunking done: 26 chunks
gpv.plot_2d(geo_model, cell_number="mid")

<gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7f3e3f725850>
gpv.plot_2d(geo_model, cell_number="mid", series_n=-1, show_scalar=True)

<gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7f3e3d5656d0>
gpv.plot_2d(geo_model, cell_number=[12], direction=["y"], show_data=True, show_topography=True)

<gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7f3e144013d0>
sphinx_gallery_thumbnail_number = 6
gpv.plot_3d(geo_model, show_lith=True, show_boundaries=True, show_topography=True, ve=None)

<gempy_viewer.modules.plot_3d.vista.GemPyToVista object at 0x7f3e14f8e430>
Total running time of the script: (1 minutes 22.137 seconds)