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 0x7f99740e9750>
[-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=())

<gempy_viewer.modules.plot_3d.vista.GemPyToVista object at 0x7f99f72719b0>
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 requested but unavailable; falling back to CPU (GEMPY_GPU_FALLBACK=True)
Setting Backend To: AvailableBackends.PYTORCH
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 0x7f995c13ae50>
gpv.plot_2d(geo_model, cell_number="mid", series_n=-1, show_scalar=True)

<gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7f995c1fb7d0>
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 0x7f9990100b50>
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 0x7f99740150f0>
Total running time of the script: (1 minutes 40.010 seconds)