.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/real/Alesmodel.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_real_Alesmodel.py: Alès Basin, France ===================== Cross-sections, topography, and geological maps of the Tertiary Alès basin This model covers the Alès basin (Gard, southern France), a Tertiary onshore basin with Triassic, Liassic, and Carboniferous series offset by three faults. .. GENERATED FROM PYTHON SOURCE LINES 12-18 .. admonition:: Explanation This model is generally quite unstable and requires float64 precision to determine a solution. The lack of data in one corner for the TRIAS and LIAS series causes the model to bend unrealistically, eroding the CARBO layer, which disappears in that section. .. GENERATED FROM PYTHON SOURCE LINES 18-23 .. code-block:: Python import gempy as gp import gempy_viewer as gpv import os .. GENERATED FROM PYTHON SOURCE LINES 24-25 Setting up paths .. GENERATED FROM PYTHON SOURCE LINES 25-32 .. code-block:: Python cwd = os.getcwd() data_path = os.path.join(cwd, 'examples') if 'examples' not in cwd else os.path.join(cwd, '../..') path_interf = os.path.join(data_path, "data/input_data/AlesModel/2018_interf.csv") path_orient = os.path.join(data_path, "data/input_data/AlesModel/2018_orient_clust_n_init5_0.csv") path_dem = os.path.join(data_path, "data/input_data/AlesModel/_cropped_DEM_coarse.tif") .. GENERATED FROM PYTHON SOURCE LINES 33-34 Creating the geological model .. GENERATED FROM PYTHON SOURCE LINES 34-44 .. code-block:: Python geo_model = gp.create_geomodel( project_name='Ales', extent=[729550.0, 751500.0, 1913500.0, 1923650.0, -1800.0, 800.0], refinement=6, importer_helper=gp.data.ImporterHelper( path_to_orientations=path_orient, path_to_surface_points=path_interf, ) ) .. GENERATED FROM PYTHON SOURCE LINES 45-46 Setting up the section grid .. GENERATED FROM PYTHON SOURCE LINES 46-53 .. code-block:: Python gp.set_section_grid( grid=geo_model.grid, section_dict={ 'section1': ([732000, 1916000], [745000, 1916000], [200, 150]) } ) .. rst-class:: sphx-glr-script-out .. code-block:: none Active grids: GridTypes.OCTREE|SECTIONS|NONE .. raw:: html
start stop resolution dist
section1 (732000.0, 1916000.0) (745000.0, 1916000.0) (200, 150) 13000.0


.. GENERATED FROM PYTHON SOURCE LINES 54-55 Sorting lithologies .. GENERATED FROM PYTHON SOURCE LINES 55-68 .. code-block:: Python gp.map_stack_to_surfaces( gempy_model=geo_model, mapping_object={ 'fault_left': 'fault_left', 'fault_right': 'fault_right', 'fault_lr': 'fault_lr', 'Trias_Series': ('TRIAS', 'LIAS'), 'Carbon_Series': 'CARBO', 'Basement_Series': 'basement' }, remove_unused_series=True ) .. rst-class:: sphx-glr-script-out .. code-block:: none Could not find element 'basement' in any group. .. raw:: html
Structural Groups: StructuralGroup:
Name:fault_left
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:fault_left

StructuralGroup:
Name:fault_right
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:fault_right

StructuralGroup:
Name:fault_lr
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:fault_lr

StructuralGroup:
Name:Trias_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:TRIAS

StructuralElement:
Name:LIAS

StructuralGroup:
Name:Carbon_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:CARBO
Fault Relations:
fault_leftfault_righ...fault_lrTrias_Seri...Carbon_Ser...
fault_left
fault_right
fault_lr
Trias_Series
Carbon_Series
True
False


.. GENERATED FROM PYTHON SOURCE LINES 69-70 Changing colors .. GENERATED FROM PYTHON SOURCE LINES 70-74 .. code-block:: Python geo_model.structural_frame.get_element_by_name("LIAS").color = "#015482" geo_model.structural_frame.get_element_by_name("TRIAS").color = "#9f0052" geo_model.structural_frame.get_element_by_name("CARBO").color = "#ffbe00" .. GENERATED FROM PYTHON SOURCE LINES 75-76 Plotting the 2D model .. GENERATED FROM PYTHON SOURCE LINES 76-78 .. code-block:: Python gpv.plot_2d(geo_model, direction='y') .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_001.png :alt: Cell Number: mid Direction: y :srcset: /examples/real/images/sphx_glr_Alesmodel_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 79-80 Plotting section traces .. GENERATED FROM PYTHON SOURCE LINES 80-82 .. code-block:: Python gpv.plot_section_traces(geo_model) .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_002.png :alt: Cell Number: -1 Direction: z :srcset: /examples/real/images/sphx_glr_Alesmodel_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 83-84 Setting faults .. GENERATED FROM PYTHON SOURCE LINES 84-93 .. code-block:: Python gp.set_is_fault( geo_model, [ geo_model.structural_frame.get_group_by_name('fault_left'), geo_model.structural_frame.get_group_by_name('fault_right'), geo_model.structural_frame.get_group_by_name('fault_lr') ] ) .. raw:: html
Structural Groups: StructuralGroup:
Name:fault_left
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_left

StructuralGroup:
Name:fault_right
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_right

StructuralGroup:
Name:fault_lr
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_lr

StructuralGroup:
Name:Trias_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:TRIAS

StructuralElement:
Name:LIAS

StructuralGroup:
Name:Carbon_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:CARBO
Fault Relations:
fault_leftfault_righ...fault_lrTrias_Seri...Carbon_Ser...
fault_left
fault_right
fault_lr
Trias_Series
Carbon_Series
True
False


.. GENERATED FROM PYTHON SOURCE LINES 94-95 Setting topography from file .. GENERATED FROM PYTHON SOURCE LINES 95-104 .. code-block:: Python gp.set_topography_from_file( grid=geo_model.grid, filepath=path_dem, crop_to_extent=[729550.0, 751500.0, 1913500.0, 1923650.0] ) # Plotting 3D model with topography gpv.plot_3d(geo_model, show_topography=True, ve=1, image=True) .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_003.png :alt: Alesmodel :srcset: /examples/real/images/sphx_glr_Alesmodel_003.png :class: sphx-glr-single-img .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_004.png :alt: Alesmodel :srcset: /examples/real/images/sphx_glr_Alesmodel_004.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none Active grids: GridTypes.OCTREE|TOPOGRAPHY|SECTIONS|NONE .. GENERATED FROM PYTHON SOURCE LINES 105-106 Getting the Carbon Series .. GENERATED FROM PYTHON SOURCE LINES 106-108 .. code-block:: Python carbo = geo_model.structural_frame.get_group_by_name("Carbon_Series") .. GENERATED FROM PYTHON SOURCE LINES 109-110 Modifying interpolation options for better model fitting .. GENERATED FROM PYTHON SOURCE LINES 110-118 .. code-block:: Python geo_model.interpolation_options.number_octree_levels_surface = 4 geo_model.interpolation_options.kernel_options.range = 0.8 gp.modify_surface_points( geo_model=geo_model, elements_names=["CARBO", "LIAS", "TRIAS"], nugget=0.005 ) .. raw:: html
Structural Groups: StructuralGroup:
Name:fault_left
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_left

StructuralGroup:
Name:fault_right
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_right

StructuralGroup:
Name:fault_lr
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_lr

StructuralGroup:
Name:Trias_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:TRIAS

StructuralElement:
Name:LIAS

StructuralGroup:
Name:Carbon_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:CARBO
Fault Relations:
fault_leftfault_righ...fault_lrTrias_Seri...Carbon_Ser...
fault_left
fault_right
fault_lr
Trias_Series
Carbon_Series
True
False


.. GENERATED FROM PYTHON SOURCE LINES 119-120 Displaying the structural frame .. GENERATED FROM PYTHON SOURCE LINES 120-123 .. code-block:: Python print(geo_model.structural_frame) geo_model.structural_frame .. rst-class:: sphx-glr-script-out .. code-block:: none StructuralFrame( structural_groups=[ StructuralGroup( name=fault_left, structural_relation=StackRelationType.FAULT, elements=[ Element( name=fault_left, color=#527682, is_active=True ) ] ), StructuralGroup( name=fault_right, structural_relation=StackRelationType.FAULT, elements=[ Element( name=fault_right, color=#527682, is_active=True ) ] ), StructuralGroup( name=fault_lr, structural_relation=StackRelationType.FAULT, elements=[ Element( name=fault_lr, color=#527682, is_active=True ) ] ), StructuralGroup( name=Trias_Series, structural_relation=StackRelationType.ERODE, elements=[ Element( name=TRIAS, color=#9f0052, is_active=True ), Element( name=LIAS, color=#015482, is_active=True ) ] ), StructuralGroup( name=Carbon_Series, structural_relation=StackRelationType.ERODE, elements=[ Element( name=CARBO, color=#ffbe00, is_active=True ) ] ) ], fault_relations= [[False, False, False, True, True], [False, False, False, True, True], [False, False, False, True, True], [False, False, False, False, False], [False, False, False, False, False]], .. raw:: html
Structural Groups: StructuralGroup:
Name:fault_left
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_left

StructuralGroup:
Name:fault_right
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_right

StructuralGroup:
Name:fault_lr
Structural Relation:StackRelationType.FAULT
Elements:
StructuralElement:
Name:fault_lr

StructuralGroup:
Name:Trias_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:TRIAS

StructuralElement:
Name:LIAS

StructuralGroup:
Name:Carbon_Series
Structural Relation:StackRelationType.ERODE
Elements:
StructuralElement:
Name:CARBO
Fault Relations:
fault_leftfault_righ...fault_lrTrias_Seri...Carbon_Ser...
fault_left
fault_right
fault_lr
Trias_Series
Carbon_Series
True
False


.. GENERATED FROM PYTHON SOURCE LINES 124-132 Explanation of model characteristics and adjustments This model has characteristics that make it difficult to get the right default values: - It is large, and we want high resolution - Some series have a large conditional number (i.e., the model input is not very stable) To address these issues: - Reduce the chunk size during evaluation to trade speed for memory - Reduce the std of the error parameter in octree refinement, which evaluates fewer voxels but may leave some without refinement Enable debugging options to help tune these parameters. .. GENERATED FROM PYTHON SOURCE LINES 134-135 Setting verbose and condition number options for debugging .. GENERATED FROM PYTHON SOURCE LINES 135-138 .. code-block:: Python geo_model.interpolation_options.evaluation_options.verbose = True geo_model.interpolation_options.kernel_options.compute_condition_number = True .. GENERATED FROM PYTHON SOURCE LINES 139-142 Observations and parameter adjustments The octree refinement is making the octree grid almost dense, and smaller chunks are needed to avoid running out of memory. Adjusting parameters accordingly: .. GENERATED FROM PYTHON SOURCE LINES 142-146 .. code-block:: Python geo_model.interpolation_options.evaluation_options.octree_error_threshold = 0.5 geo_model.interpolation_options.evaluation_options.evaluation_chunk_size = 50_000 .. GENERATED FROM PYTHON SOURCE LINES 147-148 Computing the model with the adjusted settings .. GENERATED FROM PYTHON SOURCE LINES 148-158 .. code-block:: Python geo_model.interpolation_options.mesh_extraction = False gp.compute_model( geo_model, engine_config=gp.data.GemPyEngineConfig( backend=gp.data.AvailableBackends.PYTORCH, use_gpu=True, dtype="float64" ) ) .. rst-class:: sphx-glr-script-out .. code-block:: none Setting Backend To: AvailableBackends.PYTORCH GPU enabled. Using device: cuda GPU device count: 1 Current GPU device: 0 Condition number: 2917573.741849366. Chunking done: 20 chunks Condition number: 1174481.19895321. Chunking done: 10 chunks Condition number: 1642063.3120269668. Chunking done: 12 chunks Condition number: 1586673.9519149985. Chunking done: 265 chunks Condition number: 1122611.6721622369. Chunking done: 212 chunks Chunking done: 11 chunks Chunking done: 6 chunks Chunking done: 141 chunks Chunking done: 113 chunks Chunking done: 83 chunks Chunking done: 39 chunks Chunking done: 48 chunks Chunking done: 1119 chunks Chunking done: 895 chunks Chunking done: 220 chunks Chunking done: 102 chunks Chunking done: 126 chunks Chunking done: 2967 chunks Chunking done: 2374 chunks Chunking done: 964 chunks Chunking done: 448 chunks Chunking done: 551 chunks Chunking done: 13033 chunks Chunking done: 10427 chunks Chunking done: 485 chunks Chunking done: 225 chunks Chunking done: 277 chunks Chunking done: 6546 chunks Chunking done: 5237 chunks .. GENERATED FROM PYTHON SOURCE LINES 159-160 Plotting the 2D model with and without topography .. GENERATED FROM PYTHON SOURCE LINES 160-164 .. code-block:: Python gpv.plot_2d(geo_model, show_topography=False, section_names=['topography'], show_lith=True, show_boundaries=False) gpv.plot_2d(geo_model, cell_number=[4], direction=['y'], show_topography=True, show_data=True) gpv.plot_2d(geo_model, cell_number=[-4], direction=['y'], show_topography=True, show_data=True) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_005.png :alt: Geological map :srcset: /examples/real/images/sphx_glr_Alesmodel_005.png :class: sphx-glr-multi-img * .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_006.png :alt: Cell Number: 4 Direction: y :srcset: /examples/real/images/sphx_glr_Alesmodel_006.png :class: sphx-glr-multi-img * .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_007.png :alt: Cell Number: -4 Direction: y :srcset: /examples/real/images/sphx_glr_Alesmodel_007.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 165-167 Setting thumbnail number for Sphinx-Gallery sphinx_gallery_thumbnail_number = -1 .. GENERATED FROM PYTHON SOURCE LINES 167-168 .. code-block:: Python gpv.plot_3d(geo_model, show_lith=True, show_topography=True, kwargs_plot_structured_grid={'opacity': 0.8}) .. image-sg:: /examples/real/images/sphx_glr_Alesmodel_008.png :alt: Alesmodel :srcset: /examples/real/images/sphx_glr_Alesmodel_008.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. rst-class:: sphx-glr-timing **Total running time of the script:** (2 minutes 0.401 seconds) .. _sphx_glr_download_examples_real_Alesmodel.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: Alesmodel.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: Alesmodel.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: Alesmodel.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_