├── .gitignore ├── .idea ├── .gitignore ├── gempy_intro.iml ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── misc.xml ├── modules.xml └── vcs.xml ├── LICENSE ├── README.md ├── common ├── basics │ ├── aux_func.py │ ├── basic_sol.ipynb │ ├── checkpoints │ │ ├── bayes_inference │ │ ├── checkpoint1.pickle │ │ ├── checkpoint2.pickle │ │ ├── checkpoint3.pickle │ │ └── error_propagation │ └── data │ │ └── wells.png ├── import_data │ ├── importing_data.ipynb │ └── t21_gempy-sol.ipynb └── logos │ ├── gempy.png │ └── tn.png └── workshops ├── EGU 2021 ├── Alesmodel.ipynb ├── Perth_basin.ipynb ├── ales.png ├── aux_func.py ├── basic-intro.ipynb ├── checkpoints │ ├── checkpoint1.pickle │ ├── checkpoint2.pickle │ └── checkpoint3.pickle ├── gemgis │ ├── example01.ipynb │ ├── example06.ipynb │ ├── example10.ipynb │ └── example11.ipynb ├── geophysics-probability.ipynb └── perth.png ├── GeoUtrecht2020 ├── GeoUtrecht_gempy.ipynb ├── Workshop_GeoUtrecht_Fault.ipynb ├── Workshop_GeoUtrecht_Fault_Solutions.ipynb └── data │ ├── customsection.geojson │ ├── extent.geojson │ ├── geolmap.geojson │ ├── interfaces.geojson │ ├── orientations.jpg │ ├── strike_fault.geojson │ ├── strike_layers.geojson │ ├── style.qml │ ├── task.png │ └── topo.geojson ├── Orkahub2021 ├── aux_func.py ├── orkahub2021-1.ipynb └── orkahub2021-2.ipynb ├── Transform2021 └── t21_gempy.ipynb ├── Transform2022 ├── Checkpoints │ └── Transform2022-What is MCMC-solved.ipynb ├── Readme.md ├── Transform2022-What is MCMC.ipynb ├── environment_gempy_mcmc_windows.yml ├── images │ ├── BAK │ │ ├── post_frame_10.png │ │ ├── post_frame_11.png │ │ ├── post_frame_12.png │ │ ├── post_frame_13.png │ │ ├── post_frame_14.png │ │ ├── post_frame_15.png │ │ ├── post_frame_16.png │ │ ├── post_frame_17.png │ │ ├── post_frame_18.png │ │ ├── post_frame_19.png │ │ ├── post_frame_20.png │ │ ├── post_frame_21.png │ │ ├── post_frame_22.png │ │ ├── post_frame_23.png │ │ ├── post_frame_24.png │ │ ├── post_frame_25.png │ │ ├── post_frame_26.png │ │ ├── post_frame_27.png │ │ ├── post_frame_28.png │ │ └── post_frame_29.png │ ├── BAK2 │ │ ├── post_frame_10.png │ │ ├── post_frame_12.png │ │ ├── post_frame_14.png │ │ ├── post_frame_16.png │ │ ├── post_frame_18.png │ │ ├── post_frame_20.png │ │ ├── post_frame_22.png │ │ ├── post_frame_24.png │ │ ├── post_frame_26.png │ │ ├── post_frame_28.png │ │ ├── post_frame_30.png │ │ ├── post_frame_32.png │ │ ├── post_frame_34.png │ │ ├── post_frame_36.png │ │ ├── post_frame_38.png │ │ ├── post_frame_40.png │ │ ├── post_frame_42.png │ │ ├── post_frame_44.png │ │ ├── post_frame_46.png │ │ ├── post_frame_48.png │ │ ├── post_frame_50.png │ │ ├── post_frame_52.png │ │ ├── post_frame_54.png │ │ ├── post_frame_56.png │ │ ├── post_frame_58.png │ │ ├── post_frame_60.png │ │ ├── post_frame_62.png │ │ ├── post_frame_64.png │ │ ├── post_frame_66.png │ │ ├── post_frame_68.png │ │ ├── post_frame_70.png │ │ ├── post_frame_72.png │ │ ├── post_frame_74.png │ │ ├── post_frame_76.png │ │ ├── post_frame_78.png │ │ ├── post_frame_80.png │ │ ├── post_frame_82.png │ │ ├── post_frame_84.png │ │ ├── post_frame_86.png │ │ ├── post_frame_88.png │ │ ├── post_frame_90.png │ │ ├── post_frame_92.png │ │ ├── post_frame_94.png │ │ ├── post_frame_96.png │ │ └── post_frame_98.png │ ├── BAK3 │ │ ├── post_frame_10.png │ │ ├── post_frame_100.png │ │ ├── post_frame_110.png │ │ ├── post_frame_120.png │ │ ├── post_frame_130.png │ │ ├── post_frame_140.png │ │ ├── post_frame_150.png │ │ ├── post_frame_160.png │ │ ├── post_frame_170.png │ │ ├── post_frame_180.png │ │ ├── post_frame_190.png │ │ ├── post_frame_20.png │ │ ├── post_frame_200.png │ │ ├── post_frame_210.png │ │ ├── post_frame_220.png │ │ ├── post_frame_230.png │ │ ├── post_frame_240.png │ │ ├── post_frame_250.png │ │ ├── post_frame_260.png │ │ ├── post_frame_270.png │ │ ├── post_frame_280.png │ │ ├── post_frame_290.png │ │ ├── post_frame_30.png │ │ ├── post_frame_300.png │ │ ├── post_frame_310.png │ │ ├── post_frame_320.png │ │ ├── post_frame_330.png │ │ ├── post_frame_340.png │ │ ├── post_frame_350.png │ │ ├── post_frame_360.png │ │ ├── post_frame_370.png │ │ ├── post_frame_380.png │ │ ├── post_frame_390.png │ │ ├── post_frame_40.png │ │ ├── post_frame_400.png │ │ ├── post_frame_410.png │ │ ├── post_frame_420.png │ │ ├── post_frame_430.png │ │ ├── post_frame_440.png │ │ ├── post_frame_450.png │ │ ├── post_frame_460.png │ │ ├── post_frame_470.png │ │ ├── post_frame_480.png │ │ ├── post_frame_490.png │ │ ├── post_frame_50.png │ │ ├── post_frame_500.png │ │ ├── post_frame_510.png │ │ ├── post_frame_520.png │ │ ├── post_frame_530.png │ │ ├── post_frame_540.png │ │ ├── post_frame_550.png │ │ ├── post_frame_560.png │ │ ├── post_frame_570.png │ │ ├── post_frame_580.png │ │ ├── post_frame_590.png │ │ ├── post_frame_60.png │ │ ├── post_frame_600.png │ │ ├── post_frame_610.png │ │ ├── post_frame_620.png │ │ ├── post_frame_630.png │ │ ├── post_frame_640.png │ │ ├── post_frame_650.png │ │ ├── post_frame_660.png │ │ ├── post_frame_670.png │ │ ├── post_frame_680.png │ │ ├── post_frame_690.png │ │ ├── post_frame_70.png │ │ ├── post_frame_700.png │ │ ├── post_frame_710.png │ │ ├── post_frame_720.png │ │ ├── post_frame_730.png │ │ ├── post_frame_740.png │ │ ├── post_frame_750.png │ │ ├── post_frame_760.png │ │ ├── post_frame_770.png │ │ ├── post_frame_780.png │ │ ├── post_frame_790.png │ │ ├── post_frame_80.png │ │ ├── post_frame_800.png │ │ ├── post_frame_810.png │ │ ├── post_frame_820.png │ │ ├── post_frame_830.png │ │ ├── post_frame_840.png │ │ ├── post_frame_850.png │ │ ├── post_frame_860.png │ │ ├── post_frame_870.png │ │ ├── post_frame_880.png │ │ ├── post_frame_890.png │ │ ├── post_frame_90.png │ │ ├── post_frame_900.png │ │ ├── post_frame_910.png │ │ ├── post_frame_920.png │ │ ├── post_frame_930.png │ │ ├── post_frame_940.png │ │ ├── post_frame_950.png │ │ ├── post_frame_960.png │ │ ├── post_frame_970.png │ │ ├── post_frame_980.png │ │ └── post_frame_990.png │ ├── BAK4 │ │ ├── frame_1.png │ │ ├── frame_10.png │ │ ├── frame_11.png │ │ ├── frame_12.png │ │ ├── frame_13.png │ │ ├── frame_14.png │ │ ├── frame_15.png │ │ ├── frame_16.png │ │ ├── frame_17.png │ │ ├── frame_18.png │ │ ├── frame_19.png │ │ ├── frame_2.png │ │ ├── frame_20.png │ │ ├── frame_21.png │ │ ├── frame_22.png │ │ ├── frame_23.png │ │ ├── frame_24.png │ │ ├── frame_25.png │ │ ├── frame_26.png │ │ ├── frame_27.png │ │ ├── frame_28.png │ │ ├── frame_29.png │ │ ├── frame_3.png │ │ ├── frame_4.png │ │ ├── frame_5.png │ │ ├── frame_6.png │ │ ├── frame_7.png │ │ ├── frame_8.png │ │ └── frame_9.png │ ├── Models-01.png │ ├── Models-01_white_bckgrnd.png │ ├── gempynigma.png │ ├── joyplot.gif │ ├── joyplot_2.gif │ ├── sampling.gif │ └── sampling_2.gif └── posterior_many_iterations.png └── transform2020 └── t20_gempy.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | .idea/dictionaries/ 131 | 132 | .idea 133 | 134 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /.idea/gempy_intro.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 15 | 16 | 18 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Computational Geoscience and Reservoir Engineering @RWTH Aachen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## NOTE: 2 | 3 | The aim of this repository is to provide access to files during concrete workshops. This repository is not regularly tested and there is no 4 | guarantee that will be all time functional. For tutorials please refer to docs.gempy.org 5 | 6 | 7 | # Basic Introduction to GemPy 8 | 9 | The intention of this repository is to introduct the main functionalities of GemPy and getting familiar with the API. 10 | 11 | For more advanced trainings or especific consulting please contact [Terranigma](http://www.terranigma-solutions.com/) 12 | 13 | 14 | ## Important Links 15 | 16 | [WhiteBoard](https://terranigmasolutionscom.sharepoint.com/sites/TerranigmaSolutions/_layouts/OneNote.aspx?id=%2Fsites%2FTerranigmaSolutions%2FSiteAssets%2FTerranigma%20Solutions%20Notebook&wd=target%28Workshops.one%7C35B54950-5E32-4FD3-8C82-1FFD0B773E31%2FTransform%202022%7CB7CED3E2-C0D9-4D86-A77D-5790EA107406%2F%29 17 | onenote:https://terranigmasolutionscom.sharepoint.com/sites/TerranigmaSolutions/SiteAssets/Terranigma%20Solutions%20Notebook/Workshops.one#Transform%202022§ion-id={35B54950-5E32-4FD3-8C82-1FFD0B773E31}&page-id={B7CED3E2-C0D9-4D86-A77D-5790EA107406}&end) -------------------------------------------------------------------------------- /common/basics/aux_func.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | import gempy as gp 4 | 5 | 6 | def plot_centered_grid(centered_grid, slice=None): 7 | 8 | a, b, c = centered_grid.kernel_centers, centered_grid.kernel_dxyz_left, \ 9 | centered_grid.kernel_dxyz_right 10 | tz = centered_grid.tz 11 | res = np.array(centered_grid.resolution) + 1 12 | if slice is None: 13 | slice = int(res[1]/2) 14 | 15 | fig = plt.figure(figsize=(13, 7)) 16 | ax = fig.add_subplot(111) 17 | 18 | if tz.shape[0] != 0: 19 | plt.quiver(a[:, 0].reshape(res)[slice, :, :].ravel(), 20 | a[:, 2].reshape(res)[:, slice, :].ravel(), 21 | np.zeros(231), 22 | tz.reshape(res)[slice, :, :].ravel(), label='$t_z$', alpha=.3 23 | ) 24 | 25 | plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 26 | a[:, 2].reshape(res)[:, slice, :].ravel(), 'o', alpha=.3, label='Centers') 27 | 28 | # plt.plot( 29 | # a[:, 0].reshape(res)[slice, :, :].ravel() - b[:, 0].reshape(res)[slice, :, :].ravel(), 30 | # a[:, 2].reshape(res)[:, slice, :].ravel(), '.', alpha=.3, label='Lefts') 31 | # 32 | # plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 33 | # a[:, 2].reshape(res)[:, slice, :].ravel() - b[:, 2].reshape(res)[:, slice, 34 | # :].ravel(), '.', alpha=.6, 35 | # label='Ups') 36 | # 37 | # plt.plot( 38 | # a[:, 0].reshape(res)[slice, :, :].ravel() + c[:, 0].reshape(res)[slice, :, :].ravel(), 39 | # a[:, 2].reshape(res)[:, slice, :].ravel(), '.', alpha=.3, label='Rights') 40 | # 41 | # plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 42 | # a[:, 2].reshape(res)[:, slice, :].ravel() + c[:, 2].reshape(res)[slice, :, 43 | # :].ravel(), '.', alpha=.3, 44 | # label='Downs') 45 | 46 | 47 | ax.set_xticks(a[:, 0].reshape(res)[slice, :, :].ravel() - 48 | b[:, 0].reshape(res)[slice, :, :].ravel()) 49 | 50 | # ax.set_xticks(a[:, 0].reshape(res)[slice, :, :].ravel() + 51 | # c[:, 0].reshape(res)[slice, :, :].ravel()) 52 | 53 | ax.set_yticks(a[:, 2].reshape(res)[:, slice, :].ravel() - 54 | b[:, 2].reshape(res)[:, slice, :].ravel()) 55 | 56 | plt.grid() 57 | 58 | # plt.xlim(-200, 200) 59 | # plt.ylim(-200, 0) 60 | plt.legend() 61 | # plt.show() 62 | return fig 63 | 64 | 65 | def plot_grav_inter(geo_model): 66 | # Creating new figure 67 | p_grav = gp.plot_2d(geo_model, direction=None, show=False, figsize=(6, 9)) 68 | 69 | # Adding section for model 70 | ax2 = p_grav.add_section(cell_number=1, direction='y', ax_pos=211) 71 | 72 | # Adding section for gravity 73 | ax3 = p_grav.add_section(ax_pos=414) 74 | 75 | # Plotting model in section 76 | p_grav.plot_data(ax2, cell_number=5, legend=None) 77 | p_grav.plot_lith(ax2, cell_number=5) 78 | p_grav.plot_contacts(ax2, cell_number=5) 79 | ax2.plot(400, 0, '^', markersize=40, c='red') 80 | 81 | # Plotting initial values of the gravity axes 82 | target_grav = -81 83 | ax3.tick_params(bottom=False) 84 | ax3.spines['top'].set_visible(False) 85 | ax3.spines['bottom'].set_visible(False) 86 | ax3.spines['right'].set_visible(False) 87 | ax3.plot(0, target_grav, 'X', label='Target Gravity', markersize=4, c='red') 88 | ax3.plot(1, geo_model.solutions.fw_gravity, 'o', label='Current Gravity', markersize=4, 89 | c='blue') 90 | ax3.set_ylabel('grav') 91 | 92 | # We store the original values of z for the surface 3 93 | Z_ori = geo_model.surface_points.df.loc[[5, 6, 7], 'Z'].copy() 94 | # init a list to store grav 95 | grav_ = [] 96 | 97 | # Function that modify the model, compute it and plot 98 | def gravity_invert(dz): 99 | new_z = Z_ori + dz 100 | geo_model.modify_surface_points(indices=[5, 6, 7], Z=new_z) 101 | gp.compute_model(geo_model) 102 | grav_.append(geo_model.solutions.fw_gravity[0]) 103 | 104 | p_grav.remove(ax2) 105 | p_grav.plot_data(ax2, cell_number=5) 106 | p_grav.plot_lith(ax2, cell_number=5) 107 | p_grav.plot_contacts(ax2, cell_number=5) 108 | ax3.plot(np.arange(len(grav_)) + 1, grav_, 'o', label='Current Gravity', markersize=4, 109 | c='blue') 110 | ax3.set_xlim(-1, len(grav_) + 1) 111 | 112 | return gravity_invert -------------------------------------------------------------------------------- /common/basics/checkpoints/bayes_inference: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/basics/checkpoints/bayes_inference -------------------------------------------------------------------------------- /common/basics/checkpoints/checkpoint1.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/basics/checkpoints/checkpoint1.pickle -------------------------------------------------------------------------------- /common/basics/checkpoints/checkpoint2.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/basics/checkpoints/checkpoint2.pickle -------------------------------------------------------------------------------- /common/basics/checkpoints/checkpoint3.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/basics/checkpoints/checkpoint3.pickle -------------------------------------------------------------------------------- /common/basics/checkpoints/error_propagation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/basics/checkpoints/error_propagation -------------------------------------------------------------------------------- /common/basics/data/wells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/basics/data/wells.png -------------------------------------------------------------------------------- /common/logos/gempy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/logos/gempy.png -------------------------------------------------------------------------------- /common/logos/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/common/logos/tn.png -------------------------------------------------------------------------------- /workshops/EGU 2021/Alesmodel.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "slideshow": { 7 | "slide_type": "slide" 8 | } 9 | }, 10 | "source": [ 11 | "\n", 12 | "# Alesmodel: Plotting sections and maps.\n", 13 | "\n", 14 | "![foo](ales.png)" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "slideshow": { 21 | "slide_type": "slide" 22 | } 23 | }, 24 | "source": [ 25 | "## Setting up enviroment and pulling data" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": null, 31 | "metadata": { 32 | "slideshow": { 33 | "slide_type": "fragment" 34 | } 35 | }, 36 | "outputs": [], 37 | "source": [ 38 | "import warnings\n", 39 | "warnings.filterwarnings(\"ignore\")\n", 40 | "\n", 41 | "%matplotlib inline\n", 42 | "from pyvista import set_plot_theme\n", 43 | "set_plot_theme('document')\n", 44 | "import matplotlib\n", 45 | "matplotlib.rcParams['figure.figsize'] = (20.0, 15.0)\n", 46 | "\n", 47 | "import numpy as np\n", 48 | "import pandas as pd\n", 49 | "import matplotlib.pyplot as plt\n", 50 | "import os\n", 51 | "import pooch\n", 52 | "\n", 53 | "os.environ[\"THEANO_FLAGS\"] = \"mode=FAST_RUN,device=cuda\"\n", 54 | "# Importing GemPy\n", 55 | "import gempy as gp" 56 | ] 57 | }, 58 | { 59 | "cell_type": "code", 60 | "execution_count": null, 61 | "metadata": { 62 | "slideshow": { 63 | "slide_type": "subslide" 64 | } 65 | }, 66 | "outputs": [], 67 | "source": [ 68 | "# Pull raw data\n", 69 | "model_input_files = pooch.retrieve(\n", 70 | " url=\"https://github.com/cgre-aachen/gempy_data/raw/master/\"\n", 71 | " \"data/input_data/AlesModel/AlesModel.zip\",\n", 72 | " known_hash=\"38290d8343a60784265f8d873731f22a22cf0d340232e50dda323b265e95dc1e\",\n", 73 | " processor=pooch.Unzip() \n", 74 | ")\n", 75 | " \n", 76 | "model_input_files" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": null, 82 | "metadata": { 83 | "slideshow": { 84 | "slide_type": "fragment" 85 | } 86 | }, 87 | "outputs": [], 88 | "source": [ 89 | "pd.read_csv(model_input_files[0])" 90 | ] 91 | }, 92 | { 93 | "cell_type": "markdown", 94 | "metadata": { 95 | "slideshow": { 96 | "slide_type": "slide" 97 | } 98 | }, 99 | "source": [ 100 | "## Initializing model" 101 | ] 102 | }, 103 | { 104 | "cell_type": "code", 105 | "execution_count": null, 106 | "metadata": { 107 | "slideshow": { 108 | "slide_type": "fragment" 109 | } 110 | }, 111 | "outputs": [], 112 | "source": [ 113 | "resolution = [100, 100, 100]\n", 114 | "extent = np.array([729550.0, 751500.0, 1913500.0, 1923650.0, -1800.0, 800.0])\n", 115 | "geo_model = gp.create_model('Alesmodel')\n", 116 | "gp.init_data(geo_model, extent=extent, resolution=resolution,\n", 117 | " path_i=model_input_files[0],\n", 118 | " path_o=model_input_files[1])" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": null, 124 | "metadata": { 125 | "slideshow": { 126 | "slide_type": "fragment" 127 | } 128 | }, 129 | "outputs": [], 130 | "source": [ 131 | "gp.set_interpolator(geo_model,\n", 132 | " output=['geology'], compile_theano=True,\n", 133 | " theano_optimizer='fast_run', dtype='float64',\n", 134 | " verbose=[])" 135 | ] 136 | }, 137 | { 138 | "cell_type": "markdown", 139 | "metadata": { 140 | "slideshow": { 141 | "slide_type": "subslide" 142 | } 143 | }, 144 | "source": [ 145 | "## Setting up geological relationships\n", 146 | "\n" 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "execution_count": null, 152 | "metadata": { 153 | "slideshow": { 154 | "slide_type": "-" 155 | } 156 | }, 157 | "outputs": [], 158 | "source": [ 159 | "gp.map_stack_to_surfaces(geo_model, {'fault_left': ('fault_left'),\n", 160 | " 'fault_right': ('fault_right'),\n", 161 | " 'fault_lr': ('fault_lr'),\n", 162 | " 'Trias_Series': ('TRIAS', 'LIAS'),\n", 163 | " 'Carbon_Series': ('CARBO'),\n", 164 | " 'Basement_Series': ('basement')}, remove_unused_series=True)" 165 | ] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "execution_count": null, 170 | "metadata": { 171 | "slideshow": { 172 | "slide_type": "fragment" 173 | } 174 | }, 175 | "outputs": [], 176 | "source": [ 177 | "colordict = {'LIAS': '#015482', 'TRIAS': '#9f0052', 'CARBO': '#ffbe00', 'basement': '#728f02',\n", 178 | " 'fault_left': '#2a2a2a', 'fault_right': '#545454', 'fault_lr': '#a5a391'}\n", 179 | "geo_model.surfaces.colors.change_colors(colordict)" 180 | ] 181 | }, 182 | { 183 | "cell_type": "code", 184 | "execution_count": null, 185 | "metadata": { 186 | "slideshow": { 187 | "slide_type": "fragment" 188 | } 189 | }, 190 | "outputs": [], 191 | "source": [ 192 | "a = gp.plot_2d(geo_model, direction='y')" 193 | ] 194 | }, 195 | { 196 | "cell_type": "markdown", 197 | "metadata": { 198 | "slideshow": { 199 | "slide_type": "slide" 200 | } 201 | }, 202 | "source": [ 203 | "## Faults\n", 204 | "\n", 205 | "\n" 206 | ] 207 | }, 208 | { 209 | "cell_type": "code", 210 | "execution_count": null, 211 | "metadata": { 212 | "slideshow": { 213 | "slide_type": "-" 214 | } 215 | }, 216 | "outputs": [], 217 | "source": [ 218 | "geo_model.set_is_fault(['fault_right', 'fault_left', 'fault_lr'], change_color=True)" 219 | ] 220 | }, 221 | { 222 | "cell_type": "markdown", 223 | "metadata": { 224 | "slideshow": { 225 | "slide_type": "slide" 226 | } 227 | }, 228 | "source": [ 229 | "### Topography\n", 230 | "\n", 231 | "\n" 232 | ] 233 | }, 234 | { 235 | "cell_type": "code", 236 | "execution_count": null, 237 | "metadata": { 238 | "slideshow": { 239 | "slide_type": "fragment" 240 | } 241 | }, 242 | "outputs": [], 243 | "source": [ 244 | "geo_model.set_topography(source='gdal', filepath=model_input_files[2])" 245 | ] 246 | }, 247 | { 248 | "cell_type": "code", 249 | "execution_count": null, 250 | "metadata": {}, 251 | "outputs": [], 252 | "source": [ 253 | "gp.plot_3d(geo_model, show_topography=True)" 254 | ] 255 | }, 256 | { 257 | "cell_type": "markdown", 258 | "metadata": { 259 | "slideshow": { 260 | "slide_type": "slide" 261 | } 262 | }, 263 | "source": [ 264 | "## Compute model" 265 | ] 266 | }, 267 | { 268 | "cell_type": "code", 269 | "execution_count": null, 270 | "metadata": { 271 | "slideshow": { 272 | "slide_type": "-" 273 | } 274 | }, 275 | "outputs": [], 276 | "source": [ 277 | "geo_model.update_to_interpolator()\n", 278 | "_ = gp.compute_model(geo_model, compute_mesh=True, compute_mesh_options={'rescale': False})" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": null, 284 | "metadata": { 285 | "slideshow": { 286 | "slide_type": "subslide" 287 | } 288 | }, 289 | "outputs": [], 290 | "source": [ 291 | "gp.plot_2d(geo_model, cell_number=[4], direction=['y'], show_topography=True,\n", 292 | " show_data=True)" 293 | ] 294 | }, 295 | { 296 | "cell_type": "code", 297 | "execution_count": null, 298 | "metadata": { 299 | "slideshow": { 300 | "slide_type": "subslide" 301 | } 302 | }, 303 | "outputs": [], 304 | "source": [ 305 | "gp.plot_2d(geo_model, section_names=['topography'], show_data=False,\n", 306 | " show_boundaries=False)" 307 | ] 308 | }, 309 | { 310 | "cell_type": "code", 311 | "execution_count": null, 312 | "metadata": { 313 | "slideshow": { 314 | "slide_type": "subslide" 315 | } 316 | }, 317 | "outputs": [], 318 | "source": [ 319 | "gp.plot_3d(geo_model, plotter_type=\"background\")" 320 | ] 321 | } 322 | ], 323 | "metadata": { 324 | "celltoolbar": "Slideshow", 325 | "kernelspec": { 326 | "display_name": "Python 3", 327 | "language": "python", 328 | "name": "python3" 329 | }, 330 | "language_info": { 331 | "codemirror_mode": { 332 | "name": "ipython", 333 | "version": 3 334 | }, 335 | "file_extension": ".py", 336 | "mimetype": "text/x-python", 337 | "name": "python", 338 | "nbconvert_exporter": "python", 339 | "pygments_lexer": "ipython3", 340 | "version": "3.8.5" 341 | }, 342 | "rise": { 343 | "enable_chalkboard": true 344 | } 345 | }, 346 | "nbformat": 4, 347 | "nbformat_minor": 1 348 | } 349 | -------------------------------------------------------------------------------- /workshops/EGU 2021/Perth_basin.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "slideshow": { 7 | "slide_type": "slide" 8 | } 9 | }, 10 | "source": [ 11 | "\n", 12 | "# Perth basin\n", 13 | "\n", 14 | "![img](perth.png)" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "slideshow": { 21 | "slide_type": "slide" 22 | } 23 | }, 24 | "source": [ 25 | "## Setting up unviroment" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": null, 31 | "metadata": { 32 | "slideshow": { 33 | "slide_type": "fragment" 34 | } 35 | }, 36 | "outputs": [], 37 | "source": [ 38 | "import warnings\n", 39 | "warnings.filterwarnings(\"ignore\")\n", 40 | "\n", 41 | "\n", 42 | "%matplotlib inline\n", 43 | "from pyvista import set_plot_theme\n", 44 | "set_plot_theme('document')\n", 45 | "\n", 46 | "import os\n", 47 | "\n", 48 | "# Importing auxiliary libraries\n", 49 | "import matplotlib\n", 50 | "matplotlib.rcParams['figure.figsize'] = (20.0, 10.0)\n", 51 | "os.environ[\"THEANO_FLAGS\"] = \"mode=FAST_RUN,device=cuda\"\n", 52 | "# Importing GemPy\n", 53 | "import gempy as gp\n" 54 | ] 55 | }, 56 | { 57 | "cell_type": "markdown", 58 | "metadata": { 59 | "slideshow": { 60 | "slide_type": "slide" 61 | } 62 | }, 63 | "source": [ 64 | "## Initializing model" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": null, 70 | "metadata": { 71 | "slideshow": { 72 | "slide_type": "fragment" 73 | } 74 | }, 75 | "outputs": [], 76 | "source": [ 77 | "data_path = 'https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/'\n", 78 | "geo_model = gp.create_model('Perth_Basin')" 79 | ] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "execution_count": null, 84 | "metadata": { 85 | "slideshow": { 86 | "slide_type": "skip" 87 | } 88 | }, 89 | "outputs": [], 90 | "source": [ 91 | "interp_data = gp.set_interpolator(geo_model,\n", 92 | " compile_theano=True,\n", 93 | " theano_optimizer='fast_run', gradient=False,\n", 94 | " dtype='float64')" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": null, 100 | "metadata": { 101 | "slideshow": { 102 | "slide_type": "fragment" 103 | } 104 | }, 105 | "outputs": [], 106 | "source": [ 107 | "gp.init_data(geo_model,\n", 108 | " extent=[337000, 400000, 6640000, 6710000, -18000, 1000],\n", 109 | " resolution=[100, 100, 100],\n", 110 | " path_i=data_path + \"/data/input_data/Perth_basin/Paper_GU2F_sc_faults_topo_Points.csv\",\n", 111 | " path_o=data_path + \"/data/input_data/Perth_basin/Paper_GU2F_sc_faults_topo_Foliations.csv\")" 112 | ] 113 | }, 114 | { 115 | "cell_type": "markdown", 116 | "metadata": { 117 | "slideshow": { 118 | "slide_type": "subslide" 119 | } 120 | }, 121 | "source": [ 122 | "### Cleaning surfaces" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": null, 128 | "metadata": { 129 | "slideshow": { 130 | "slide_type": "-" 131 | } 132 | }, 133 | "outputs": [], 134 | "source": [ 135 | "geo_model.surfaces" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": null, 141 | "metadata": { 142 | "slideshow": { 143 | "slide_type": "fragment" 144 | } 145 | }, 146 | "outputs": [], 147 | "source": [ 148 | "del_surfaces = ['Cadda', 'Woodada_Kockatea', 'Cattamarra']" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": null, 154 | "metadata": { 155 | "slideshow": { 156 | "slide_type": "fragment" 157 | } 158 | }, 159 | "outputs": [], 160 | "source": [ 161 | "geo_model.delete_surfaces(del_surfaces, remove_data=True)" 162 | ] 163 | }, 164 | { 165 | "cell_type": "markdown", 166 | "metadata": { 167 | "slideshow": { 168 | "slide_type": "subslide" 169 | } 170 | }, 171 | "source": [ 172 | "### Setting geological features relationships" 173 | ] 174 | }, 175 | { 176 | "cell_type": "code", 177 | "execution_count": null, 178 | "metadata": { 179 | "slideshow": { 180 | "slide_type": "-" 181 | } 182 | }, 183 | "outputs": [], 184 | "source": [ 185 | "geo_model.stack" 186 | ] 187 | }, 188 | { 189 | "cell_type": "code", 190 | "execution_count": null, 191 | "metadata": { 192 | "slideshow": { 193 | "slide_type": "subslide" 194 | } 195 | }, 196 | "outputs": [], 197 | "source": [ 198 | "gp.map_stack_to_surfaces(geo_model,\n", 199 | " {\"fault_Abrolhos_Transfer\": [\"Abrolhos_Transfer\"],\n", 200 | " \"fault_Coomallo\": [\"Coomallo\"],\n", 201 | " \"fault_Eneabba_South\": [\"Eneabba_South\"],\n", 202 | " \"fault_Hypo_fault_W\": [\"Hypo_fault_W\"],\n", 203 | " \"fault_Hypo_fault_E\": [\"Hypo_fault_E\"],\n", 204 | " \"fault_Urella_North\": [\"Urella_North\"],\n", 205 | " \"fault_Urella_South\": [\"Urella_South\"],\n", 206 | " \"fault_Darling\": [\"Darling\"],\n", 207 | " \"Sedimentary_Series\": ['Cretaceous',\n", 208 | " 'Yarragadee',\n", 209 | " 'Eneabba',\n", 210 | " 'Lesueur',\n", 211 | " 'Permian']\n", 212 | " })" 213 | ] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "execution_count": null, 218 | "metadata": { 219 | "slideshow": { 220 | "slide_type": "fragment" 221 | } 222 | }, 223 | "outputs": [], 224 | "source": [ 225 | "geo_model.series" 226 | ] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "execution_count": null, 231 | "metadata": { 232 | "slideshow": { 233 | "slide_type": "subslide" 234 | } 235 | }, 236 | "outputs": [], 237 | "source": [ 238 | "order_series = [\"fault_Abrolhos_Transfer\",\n", 239 | " \"fault_Coomallo\",\n", 240 | " \"fault_Eneabba_South\",\n", 241 | " \"fault_Hypo_fault_W\",\n", 242 | " \"fault_Hypo_fault_E\",\n", 243 | " \"fault_Urella_North\",\n", 244 | " \"fault_Darling\",\n", 245 | " \"fault_Urella_South\",\n", 246 | " \"Sedimentary_Series\", 'Basement']\n", 247 | "\n", 248 | "geo_model.reorder_series(order_series)" 249 | ] 250 | }, 251 | { 252 | "cell_type": "markdown", 253 | "metadata": { 254 | "slideshow": { 255 | "slide_type": "slide" 256 | } 257 | }, 258 | "source": [ 259 | "## Select which series are faults\n", 260 | "\n", 261 | "\n" 262 | ] 263 | }, 264 | { 265 | "cell_type": "code", 266 | "execution_count": null, 267 | "metadata": { 268 | "slideshow": { 269 | "slide_type": "-" 270 | } 271 | }, 272 | "outputs": [], 273 | "source": [ 274 | "geo_model.faults" 275 | ] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "execution_count": null, 280 | "metadata": { 281 | "slideshow": { 282 | "slide_type": "fragment" 283 | } 284 | }, 285 | "outputs": [], 286 | "source": [ 287 | "geo_model.set_is_fault([\"fault_Abrolhos_Transfer\",\n", 288 | " \"fault_Coomallo\",\n", 289 | " \"fault_Eneabba_South\",\n", 290 | " \"fault_Hypo_fault_W\",\n", 291 | " \"fault_Hypo_fault_E\",\n", 292 | " \"fault_Urella_North\",\n", 293 | " \"fault_Darling\",\n", 294 | " \"fault_Urella_South\"])" 295 | ] 296 | }, 297 | { 298 | "cell_type": "markdown", 299 | "metadata": { 300 | "slideshow": { 301 | "slide_type": "slide" 302 | } 303 | }, 304 | "source": [ 305 | "### Fault Network\n", 306 | "\n", 307 | "\n" 308 | ] 309 | }, 310 | { 311 | "cell_type": "code", 312 | "execution_count": null, 313 | "metadata": { 314 | "slideshow": { 315 | "slide_type": "-" 316 | } 317 | }, 318 | "outputs": [], 319 | "source": [ 320 | "geo_model.faults.faults_relations_df" 321 | ] 322 | }, 323 | { 324 | "cell_type": "code", 325 | "execution_count": null, 326 | "metadata": { 327 | "slideshow": { 328 | "slide_type": "subslide" 329 | } 330 | }, 331 | "outputs": [], 332 | "source": [ 333 | "fr = geo_model.faults.faults_relations_df.values" 334 | ] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "execution_count": null, 339 | "metadata": { 340 | "slideshow": { 341 | "slide_type": "-" 342 | } 343 | }, 344 | "outputs": [], 345 | "source": [ 346 | "fr[:, :-2] = False\n", 347 | "fr" 348 | ] 349 | }, 350 | { 351 | "cell_type": "code", 352 | "execution_count": null, 353 | "metadata": { 354 | "slideshow": { 355 | "slide_type": "fragment" 356 | } 357 | }, 358 | "outputs": [], 359 | "source": [ 360 | "geo_model.set_fault_relation(fr)" 361 | ] 362 | }, 363 | { 364 | "cell_type": "markdown", 365 | "metadata": { 366 | "slideshow": { 367 | "slide_type": "slide" 368 | } 369 | }, 370 | "source": [ 371 | "## Visualizing data" 372 | ] 373 | }, 374 | { 375 | "cell_type": "code", 376 | "execution_count": null, 377 | "metadata": {}, 378 | "outputs": [], 379 | "source": [ 380 | "gp.plot_2d(geo_model, direction=['z'], legend=False)" 381 | ] 382 | }, 383 | { 384 | "cell_type": "code", 385 | "execution_count": null, 386 | "metadata": { 387 | "slideshow": { 388 | "slide_type": "subslide" 389 | } 390 | }, 391 | "outputs": [], 392 | "source": [ 393 | "geo_model.set_topography(source='random')" 394 | ] 395 | }, 396 | { 397 | "cell_type": "code", 398 | "execution_count": null, 399 | "metadata": { 400 | "slideshow": { 401 | "slide_type": "fragment" 402 | } 403 | }, 404 | "outputs": [], 405 | "source": [ 406 | "gp.plot_3d(geo_model, show_topography=True)" 407 | ] 408 | }, 409 | { 410 | "cell_type": "markdown", 411 | "metadata": { 412 | "slideshow": { 413 | "slide_type": "slide" 414 | } 415 | }, 416 | "source": [ 417 | "## Compute model" 418 | ] 419 | }, 420 | { 421 | "cell_type": "code", 422 | "execution_count": null, 423 | "metadata": { 424 | "slideshow": { 425 | "slide_type": "-" 426 | } 427 | }, 428 | "outputs": [], 429 | "source": [ 430 | "geo_model.update_to_interpolator()\n", 431 | "gp.compute_model(geo_model)" 432 | ] 433 | }, 434 | { 435 | "cell_type": "code", 436 | "execution_count": null, 437 | "metadata": { 438 | "slideshow": { 439 | "slide_type": "-" 440 | } 441 | }, 442 | "outputs": [], 443 | "source": [ 444 | "gp.plot_2d(geo_model, cell_number=[25], legend=False)" 445 | ] 446 | }, 447 | { 448 | "cell_type": "code", 449 | "execution_count": null, 450 | "metadata": { 451 | "slideshow": { 452 | "slide_type": "subslide" 453 | } 454 | }, 455 | "outputs": [], 456 | "source": [ 457 | "gp.plot_2d(geo_model, cell_number=[25], series_n=-1, show_scalar=True, legend=False)" 458 | ] 459 | }, 460 | { 461 | "cell_type": "code", 462 | "execution_count": null, 463 | "metadata": { 464 | "slideshow": { 465 | "slide_type": "subslide" 466 | } 467 | }, 468 | "outputs": [], 469 | "source": [ 470 | "gp.plot_2d(geo_model, cell_number=[12], direction=[\"y\"], show_data=True, show_topography=True, legend=False)" 471 | ] 472 | }, 473 | { 474 | "cell_type": "code", 475 | "execution_count": null, 476 | "metadata": { 477 | "slideshow": { 478 | "slide_type": "-" 479 | } 480 | }, 481 | "outputs": [], 482 | "source": [ 483 | "gp.plot_3d(geo_model, show_topography=True, plotter_type=\"background\")" 484 | ] 485 | } 486 | ], 487 | "metadata": { 488 | "celltoolbar": "Slideshow", 489 | "kernelspec": { 490 | "display_name": "Python 3", 491 | "language": "python", 492 | "name": "python3" 493 | }, 494 | "language_info": { 495 | "codemirror_mode": { 496 | "name": "ipython", 497 | "version": 3 498 | }, 499 | "file_extension": ".py", 500 | "mimetype": "text/x-python", 501 | "name": "python", 502 | "nbconvert_exporter": "python", 503 | "pygments_lexer": "ipython3", 504 | "version": "3.8.5" 505 | } 506 | }, 507 | "nbformat": 4, 508 | "nbformat_minor": 1 509 | } 510 | -------------------------------------------------------------------------------- /workshops/EGU 2021/ales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/EGU 2021/ales.png -------------------------------------------------------------------------------- /workshops/EGU 2021/aux_func.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | import gempy as gp 4 | 5 | 6 | def plot_centered_grid(centered_grid, slice=None): 7 | 8 | a, b, c = centered_grid.kernel_centers, centered_grid.kernel_dxyz_left, \ 9 | centered_grid.kernel_dxyz_right 10 | tz = centered_grid.tz 11 | res = np.array(centered_grid.resolution) + 1 12 | if slice is None: 13 | slice = int(res[1]/2) 14 | 15 | fig = plt.figure(figsize=(13, 7)) 16 | ax = fig.add_subplot(111) 17 | 18 | if tz.shape[0] != 0: 19 | plt.quiver(a[:, 0].reshape(res)[slice, :, :].ravel(), 20 | a[:, 2].reshape(res)[:, slice, :].ravel(), 21 | np.zeros(231), 22 | tz.reshape(res)[slice, :, :].ravel(), label='$t_z$', alpha=.3 23 | ) 24 | 25 | plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 26 | a[:, 2].reshape(res)[:, slice, :].ravel(), 'o', alpha=.3, label='Centers') 27 | 28 | # plt.plot( 29 | # a[:, 0].reshape(res)[slice, :, :].ravel() - b[:, 0].reshape(res)[slice, :, :].ravel(), 30 | # a[:, 2].reshape(res)[:, slice, :].ravel(), '.', alpha=.3, label='Lefts') 31 | # 32 | # plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 33 | # a[:, 2].reshape(res)[:, slice, :].ravel() - b[:, 2].reshape(res)[:, slice, 34 | # :].ravel(), '.', alpha=.6, 35 | # label='Ups') 36 | # 37 | # plt.plot( 38 | # a[:, 0].reshape(res)[slice, :, :].ravel() + c[:, 0].reshape(res)[slice, :, :].ravel(), 39 | # a[:, 2].reshape(res)[:, slice, :].ravel(), '.', alpha=.3, label='Rights') 40 | # 41 | # plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 42 | # a[:, 2].reshape(res)[:, slice, :].ravel() + c[:, 2].reshape(res)[slice, :, 43 | # :].ravel(), '.', alpha=.3, 44 | # label='Downs') 45 | 46 | 47 | ax.set_xticks(a[:, 0].reshape(res)[slice, :, :].ravel() - 48 | b[:, 0].reshape(res)[slice, :, :].ravel()) 49 | 50 | # ax.set_xticks(a[:, 0].reshape(res)[slice, :, :].ravel() + 51 | # c[:, 0].reshape(res)[slice, :, :].ravel()) 52 | 53 | ax.set_yticks(a[:, 2].reshape(res)[:, slice, :].ravel() - 54 | b[:, 2].reshape(res)[:, slice, :].ravel()) 55 | 56 | plt.grid() 57 | 58 | # plt.xlim(-200, 200) 59 | # plt.ylim(-200, 0) 60 | plt.legend() 61 | # plt.show() 62 | return fig 63 | 64 | 65 | def plot_grav_inter(geo_model): 66 | # Creating new figure 67 | p_grav = gp.plot_2d(geo_model, direction=None, show=False, figsize=(6, 9)) 68 | 69 | # Adding section for model 70 | ax2 = p_grav.add_section(cell_number=1, direction='y', ax_pos=211) 71 | 72 | # Adding section for gravity 73 | ax3 = p_grav.add_section(ax_pos=414) 74 | 75 | # Plotting model in section 76 | p_grav.plot_data(ax2, cell_number=5, legend=None) 77 | p_grav.plot_lith(ax2, cell_number=5) 78 | p_grav.plot_contacts(ax2, cell_number=5) 79 | ax2.plot(400, 0, '^', markersize=40, c='red') 80 | 81 | # Plotting initial values of the gravity axes 82 | target_grav = -81 83 | ax3.tick_params(bottom=False) 84 | ax3.spines['top'].set_visible(False) 85 | ax3.spines['bottom'].set_visible(False) 86 | ax3.spines['right'].set_visible(False) 87 | ax3.plot(0, target_grav, 'X', label='Target Gravity', markersize=4, c='red') 88 | ax3.plot(1, geo_model.solutions.fw_gravity, 'o', label='Current Gravity', markersize=4, 89 | c='blue') 90 | ax3.set_ylabel('grav') 91 | 92 | # We store the original values of z for the surface 3 93 | Z_ori = geo_model.surface_points.df.loc[[5, 6, 7], 'Z'].copy() 94 | # init a list to store grav 95 | grav_ = [] 96 | 97 | # Function that modify the model, compute it and plot 98 | def gravity_invert(dz): 99 | new_z = Z_ori + dz 100 | geo_model.modify_surface_points(indices=[5, 6, 7], Z=new_z) 101 | gp.compute_model(geo_model) 102 | grav_.append(geo_model.solutions.fw_gravity[0]) 103 | 104 | p_grav.remove(ax2) 105 | p_grav.plot_data(ax2, cell_number=5) 106 | p_grav.plot_lith(ax2, cell_number=5) 107 | p_grav.plot_contacts(ax2, cell_number=5) 108 | ax3.plot(np.arange(len(grav_)) + 1, grav_, 'o', label='Current Gravity', markersize=4, 109 | c='blue') 110 | ax3.set_xlim(-1, len(grav_) + 1) 111 | 112 | return gravity_invert -------------------------------------------------------------------------------- /workshops/EGU 2021/checkpoints/checkpoint1.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/EGU 2021/checkpoints/checkpoint1.pickle -------------------------------------------------------------------------------- /workshops/EGU 2021/checkpoints/checkpoint2.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/EGU 2021/checkpoints/checkpoint2.pickle -------------------------------------------------------------------------------- /workshops/EGU 2021/checkpoints/checkpoint3.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/EGU 2021/checkpoints/checkpoint3.pickle -------------------------------------------------------------------------------- /workshops/EGU 2021/perth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/EGU 2021/perth.png -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/GeoUtrecht_gempy.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# GeoUtrecht: GemPy Workshop\n", 8 | "![](logos/gempy.png)\n", 9 | "\n", 10 | "## Table of Content\n", 11 | "\n", 12 | "- Installation - Welcome 9:30\n", 13 | "- Your first model 9:50\n", 14 | "- Modeling landscape by Prof. Wellmann ~10:30\n", 15 | "- **Break**\n", 16 | "- GemGIS ~11:00\n", 17 | "\n", 18 | "## Installation\n", 19 | "\n", 20 | "0. https://docs.conda.io/en/latest/miniconda.html\n", 21 | "1. Open conda prompt (Windows) or terminal (Linux/MacOS)\n", 22 | "2. `$ conda create --name gu python==3.7.5`\n", 23 | "0. Activate enviromet: `$ conda activate gu`\n", 24 | "0. Installing gemgis: https://github.com/cgre-aachen/gemgis#installation\n", 25 | "3. Installing gempy: https://docs.gempy.org/installation.html\n", 26 | "4. clone the repo:\n", 27 | " `git clone https://github.com/cgre-aachen/gempy_workshops.git`\n", 28 | "0. `$ conda install jupyter notebook`\n", 29 | "5. `$ jupyter notebook`\n", 30 | "\n", 31 | "## Your first model" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": null, 37 | "metadata": { 38 | "pycharm": { 39 | "name": "#%%\n" 40 | } 41 | }, 42 | "outputs": [], 43 | "source": [ 44 | "# Importing GemPy\n", 45 | "import gempy as gp\n", 46 | "\n", 47 | "# Importing aux libraries\n", 48 | "from ipywidgets import interact\n", 49 | "import numpy as np\n", 50 | "import matplotlib.image as mpimg\n", 51 | "\n", 52 | "# Embedding matplotlib figures in the notebooks\n", 53 | "%matplotlib qt5" 54 | ] 55 | }, 56 | { 57 | "cell_type": "markdown", 58 | "metadata": {}, 59 | "source": [ 60 | "### Initializing the model... But first a word about Grids:\n", 61 | "\n", 62 | "The first step to create a GemPy model is create a `gempy.Model` object that will\n", 63 | "contain all the other data structures and necessary functionality. In addition\n", 64 | " for this example we will define a *regular grid* since the beginning.\n", 65 | "This is the grid where we will interpolate the 3D geological model.\n", 66 | "\n", 67 | "GemPy is based on a **meshless interpolator**. In practice this means that we can\n", 68 | "interpolate any point in a 3D space. However, for convenience, we have built some\n", 69 | "standard grids for different purposes. At the current day the standard grids are:\n", 70 | "\n", 71 | "- **Regular grid**: default grid mainly for general visualization\n", 72 | "- **Custom grid**: GemPy's wrapper to interpolate on a user grid\n", 73 | "- **Topography**: Topographic data use to be of high density. Treating it as an independent\n", 74 | " grid allow for high resolution geological maps\n", 75 | "- **Sections**: If we predefine the section 2D grid we can directly interpolate at those\n", 76 | " locations for perfect, high resolution estimations\n", 77 | "- **Center grids**: Half sphere grids around a given point at surface. This are specially tuned\n", 78 | " for geophysical forward computations\n", 79 | "\n", 80 | "For now we will use a 2.5D regular grid" 81 | ] 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": null, 86 | "metadata": { 87 | "pycharm": { 88 | "name": "#%%\n" 89 | } 90 | }, 91 | "outputs": [], 92 | "source": [ 93 | "geo_model = gp.create_model('GeoUtrecht-2020')\n", 94 | "geo_model = gp.init_data(geo_model,\n", 95 | " extent= [0, 791, 0, 200, -582, 0], # of the regular grid\n", 96 | " resolution=[100, 10, 100]) # of the regular grid" 97 | ] 98 | }, 99 | { 100 | "cell_type": "markdown", 101 | "metadata": {}, 102 | "source": [ 103 | "GemPy core code is written in Python. However for efficiency and gradient based\n", 104 | "machine learning most of heavy computations happen in optimize compile code,\n", 105 | " either C or CUDA for GPU.\n", 106 | "\n", 107 | "To do so, GemPy rely on the library `Theano`. To guarantee maximum optimization\n", 108 | "`Theano` requires to compile the code for every Python kernel. The compilation is\n", 109 | "done by calling the following line at any point (before computing the model):" 110 | ] 111 | }, 112 | { 113 | "cell_type": "code", 114 | "execution_count": null, 115 | "metadata": { 116 | "pycharm": { 117 | "name": "#%%\n" 118 | } 119 | }, 120 | "outputs": [], 121 | "source": [ 122 | "gp.set_interpolator(\n", 123 | " geo_model,\n", 124 | " output=['geology'], # In built outputs. More about this later on\n", 125 | " theano_optimizer='fast_compile') # alternatives: 'fast_run' or\n", 126 | " # check http://deeplearning.net/software/theano/tutorial/modes.html " 127 | ] 128 | }, 129 | { 130 | "cell_type": "markdown", 131 | "metadata": {}, 132 | "source": [ 133 | "### Creating figure:\n", 134 | "\n", 135 | "GemPy uses `matplotlib` and `pyvista` for 2d and 3d visualization of the model respectively. One of the\n", 136 | "design decisions of GemPy is to allow real time construction of the model. What this means is that you can start\n", 137 | "adding input data and see in real time how the 3D surfaces evolve. Lets initialize the visualization windows.\n", 138 | "\n", 139 | "The first one is the 2d figure. Just place the window where you can see it (maybe move the jupyter notebook to half\n", 140 | "screen and use the other half for the renderers)." 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": null, 146 | "metadata": { 147 | "pycharm": { 148 | "name": "#%%\n" 149 | } 150 | }, 151 | "outputs": [], 152 | "source": [ 153 | "p2d = gp.plot_2d(geo_model, section_names=None,\n", 154 | " direction=None, cell_number=None)" 155 | ] 156 | }, 157 | { 158 | "cell_type": "markdown", 159 | "metadata": {}, 160 | "source": [ 161 | "#### Add model section\n", 162 | "\n", 163 | "In the 2d renderer we can add several cross section of the model. In this case, for simplicity sake we are just\n", 164 | "adding one perpendicular to y." 165 | ] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "execution_count": null, 170 | "metadata": { 171 | "pycharm": { 172 | "name": "#%%\n" 173 | } 174 | }, 175 | "outputs": [], 176 | "source": [ 177 | "# In this case perpendicular to the y axes\n", 178 | "ax = p2d.add_section(cell_number=1, direction='y')" 179 | ] 180 | }, 181 | { 182 | "cell_type": "markdown", 183 | "metadata": {}, 184 | "source": [ 185 | "#### Loading cross-section image:\n", 186 | "\n", 187 | "Remember that `gempy` is simply using `matplotlib` and therefore the ax object\n", 188 | " created above is a standard `matplotlib` axes.\n", 189 | "\n", 190 | "Lets load an image with the information of couple of boreholes" 191 | ] 192 | }, 193 | { 194 | "cell_type": "code", 195 | "execution_count": null, 196 | "metadata": { 197 | "pycharm": { 198 | "name": "#%%\n" 199 | } 200 | }, 201 | "outputs": [], 202 | "source": [ 203 | "# Reading image\n", 204 | "img = mpimg.imread('../data/wells.png')\n", 205 | "# Plotting it inplace\n", 206 | "ax.imshow(img, origin='upper', alpha=.8, extent = (0, 791, -582,0))" 207 | ] 208 | }, 209 | { 210 | "cell_type": "markdown", 211 | "metadata": {}, 212 | "source": [ 213 | "We can do the same in 3D through `pyvista` and vtk rendering.\n", 214 | "\n", 215 | "Click the qt5 button Back (+Y) to have the same view as in the 2D viewer:" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": null, 221 | "metadata": { 222 | "pycharm": { 223 | "name": "#%%\n" 224 | } 225 | }, 226 | "outputs": [], 227 | "source": [ 228 | "p3d = gp.plot_3d(geo_model, plotter_type='background', notebook=False)" 229 | ] 230 | }, 231 | { 232 | "cell_type": "markdown", 233 | "metadata": {}, 234 | "source": [ 235 | "## Building the model\n", 236 | "\n", 237 | "Now that we have the model initialize and the 2D and 3D render in place we can\n", 238 | " start the construction of the geological model. \n", 239 | "\n", 240 | "### Surfaces\n", 241 | "\n", 242 | "GemPy is a surface based interpolator. This means that all the input data we add has to be refereed to a surface. The\n", 243 | " surfaces always mark the **bottom** of a unit. \n", 244 | " \n", 245 | " By default GemPy surfaces are empty:" 246 | ] 247 | }, 248 | { 249 | "cell_type": "code", 250 | "execution_count": null, 251 | "metadata": { 252 | "pycharm": { 253 | "name": "#%%\n" 254 | } 255 | }, 256 | "outputs": [], 257 | "source": [ 258 | "geo_model.surfaces" 259 | ] 260 | }, 261 | { 262 | "cell_type": "markdown", 263 | "metadata": {}, 264 | "source": [ 265 | "If we do not care about the names and we just want to interpolate a surface we can use.\n", 266 | "It is important to notice that **the bottom\n", 267 | "most layer will be considered always basement and therefore not interpolated**. Still\n", 268 | "we can add values or change the color of that \"surface\" (for lack of a better name) to\n", 269 | "populate the lower most volume.\n" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": null, 275 | "metadata": { 276 | "pycharm": { 277 | "name": "#%%\n" 278 | } 279 | }, 280 | "outputs": [], 281 | "source": [ 282 | "# Default surfaces:\n", 283 | "geo_model.set_default_surfaces()" 284 | ] 285 | }, 286 | { 287 | "cell_type": "markdown", 288 | "metadata": {}, 289 | "source": [ 290 | "We will see more about data structures below.\n", 291 | "\n", 292 | "Now we can start adding data. GemPy input data consist on surface points and\n", 293 | "orientations (perpendicular to the layers). The 2D plot gives you the X and Z coordinates when hovering the mouse\n", 294 | " over. We can add a surface point as follows:\n" 295 | ] 296 | }, 297 | { 298 | "cell_type": "code", 299 | "execution_count": null, 300 | "metadata": { 301 | "pycharm": { 302 | "name": "#%%\n" 303 | } 304 | }, 305 | "outputs": [], 306 | "source": [ 307 | "# Add a point. If idx is None, next available index will be used. Here we pass it\n", 308 | "# explicitly for consistency\n", 309 | "geo_model.add_surface_points(X=223, Y=0.01, Z=-94, surface='surface1', idx=0)\n", 310 | "\n", 311 | "# Plot in 2D\n", 312 | "p2d.plot_data(ax, cell_number=11)\n", 313 | "\n", 314 | "# Plot in 3D\n", 315 | "p3d.plot_data()" 316 | ] 317 | }, 318 | { 319 | "cell_type": "markdown", 320 | "metadata": {}, 321 | "source": [ 322 | "Now we can add the other two points of the layer:" 323 | ] 324 | }, 325 | { 326 | "cell_type": "code", 327 | "execution_count": null, 328 | "metadata": { 329 | "pycharm": { 330 | "name": "#%%\n" 331 | } 332 | }, 333 | "outputs": [], 334 | "source": [ 335 | "# Add points\n", 336 | "geo_model.add_surface_points(X=458, Y=0, Z=-107, surface='surface1', idx=1)\n", 337 | "geo_model.add_surface_points(X=612, Y=0, Z=-14, surface='surface1', idx=2)\n", 338 | "\n", 339 | "# Plotting\n", 340 | "p2d.plot_data(ax, cell_number=11)\n", 341 | "p3d.plot_surface_points()" 342 | ] 343 | }, 344 | { 345 | "cell_type": "code", 346 | "execution_count": null, 347 | "metadata": { 348 | "pycharm": { 349 | "name": "#%%\n" 350 | } 351 | }, 352 | "outputs": [], 353 | "source": [ 354 | "geo_model.surface_points" 355 | ] 356 | }, 357 | { 358 | "cell_type": "markdown", 359 | "metadata": {}, 360 | "source": [ 361 | "The **minimum amount of input data** to interpolate anything in `gempy` is:\n", 362 | "\n", 363 | "a) 2 surface points per surface\n", 364 | "\n", 365 | "b) One orientation per series.\n", 366 | "\n", 367 | "Lets add an orientation anywhere in space:" 368 | ] 369 | }, 370 | { 371 | "cell_type": "code", 372 | "execution_count": null, 373 | "metadata": { 374 | "pycharm": { 375 | "name": "#%%\n" 376 | } 377 | }, 378 | "outputs": [], 379 | "source": [ 380 | "# Adding orientation\n", 381 | "geo_model.add_orientations(X=350, Y=0, Z=-300, surface='surface1',\n", 382 | " pole_vector= (0,0,1))\n", 383 | "p2d.plot_data(ax, cell_number=5)\n", 384 | "p3d.plot_data()" 385 | ] 386 | }, 387 | { 388 | "cell_type": "markdown", 389 | "metadata": {}, 390 | "source": [ 391 | "Now we have enough data to finally **interpolate**!" 392 | ] 393 | }, 394 | { 395 | "cell_type": "code", 396 | "execution_count": null, 397 | "metadata": { 398 | "pycharm": { 399 | "name": "#%%\n" 400 | } 401 | }, 402 | "outputs": [], 403 | "source": [ 404 | "gp.compute_model(geo_model)" 405 | ] 406 | }, 407 | { 408 | "cell_type": "markdown", 409 | "metadata": {}, 410 | "source": [ 411 | "That is, we have interpolated the 3D surface. We can visualize with:" 412 | ] 413 | }, 414 | { 415 | "cell_type": "code", 416 | "execution_count": null, 417 | "metadata": { 418 | "pycharm": { 419 | "name": "#%%\n" 420 | } 421 | }, 422 | "outputs": [], 423 | "source": [ 424 | "# In 2D\n", 425 | "p2d.plot_contacts(ax, cell_number=5)\n", 426 | "\n", 427 | "# In 3D\n", 428 | "p3d.plot_surfaces()\n", 429 | "p3d.plot_structured_grid()" 430 | ] 431 | }, 432 | { 433 | "cell_type": "code", 434 | "execution_count": null, 435 | "metadata": { 436 | "pycharm": { 437 | "name": "#%%\n" 438 | } 439 | }, 440 | "outputs": [], 441 | "source": [ 442 | "geo_model.surfaces" 443 | ] 444 | }, 445 | { 446 | "cell_type": "markdown", 447 | "metadata": {}, 448 | "source": [ 449 | "Congratulations! You have learnt how to create a surface. From here on, we will\n", 450 | "learn how to combine multiple surfaces to little by little construct a full realize\n", 451 | "3D structural model.\n", 452 | "\n", 453 | "-----------\n", 454 | "## Intermission: GemPy data classes\n", 455 | "\n", 456 | "GemPy depends on multiple data objects to store all the data structures necessary\n", 457 | "to construct an structural model. To keep all the necessary objects in sync the\n", 458 | "class `gempy.ImplicitCoKriging` (which `geo_model` is instance of) will provide the\n", 459 | "necessary methods to update these data structures coherently.\n", 460 | "\n", 461 | "At current state (gempy 2.2), the data classes are:\n", 462 | "\n", 463 | "- `gempy.SurfacePoints`\n", 464 | "- `gempy.Orientations`\n", 465 | "- `gempy.Surfaces`\n", 466 | "- `gempy.Stack` (combination of `gempy.Series` and `gempy.Faults`)\n", 467 | "- `gempy.Grid`\n", 468 | "- `gempy.AdditionalData`\n", 469 | "- `gempy.Solutions`\n", 470 | "\n", 471 | "Today we will look into details only some of these classes but what is important\n", 472 | "to notice is that you can access these objects as follows:" 473 | ] 474 | }, 475 | { 476 | "cell_type": "code", 477 | "execution_count": null, 478 | "metadata": { 479 | "pycharm": { 480 | "name": "#%%\n" 481 | } 482 | }, 483 | "outputs": [], 484 | "source": [ 485 | "# The default surfaces once again\n", 486 | "geo_model.surfaces" 487 | ] 488 | }, 489 | { 490 | "cell_type": "code", 491 | "execution_count": null, 492 | "metadata": { 493 | "pycharm": { 494 | "name": "#%%\n" 495 | } 496 | }, 497 | "outputs": [], 498 | "source": [ 499 | "# Also the surface points" 500 | ] 501 | }, 502 | { 503 | "cell_type": "code", 504 | "execution_count": null, 505 | "metadata": { 506 | "pycharm": { 507 | "name": "#%%\n" 508 | } 509 | }, 510 | "outputs": [], 511 | "source": [ 512 | "# Orientations" 513 | ] 514 | }, 515 | { 516 | "cell_type": "code", 517 | "execution_count": null, 518 | "metadata": { 519 | "pycharm": { 520 | "name": "#%%\n" 521 | } 522 | }, 523 | "outputs": [], 524 | "source": [ 525 | "# To find the location of the surface we just plot\n", 526 | "geo_model.solutions.vertices" 527 | ] 528 | }, 529 | { 530 | "cell_type": "code", 531 | "execution_count": null, 532 | "metadata": { 533 | "pycharm": { 534 | "name": "#%%\n" 535 | } 536 | }, 537 | "outputs": [], 538 | "source": [ 539 | "# The grid values:\n", 540 | "geo_model.grid, len(geo_model.grid.values)" 541 | ] 542 | }, 543 | { 544 | "cell_type": "code", 545 | "execution_count": null, 546 | "metadata": { 547 | "pycharm": { 548 | "name": "#%%\n" 549 | } 550 | }, 551 | "outputs": [], 552 | "source": [ 553 | "# And its correspondent ids:\n", 554 | "geo_model.solutions.lith_block, len(geo_model.solutions.lith_block)" 555 | ] 556 | }, 557 | { 558 | "cell_type": "markdown", 559 | "metadata": {}, 560 | "source": [ 561 | "------\n", 562 | "\n", 563 | "## Adding more layers\n", 564 | "\n", 565 | "
\n", 566 | "Exercise: So far we only need 2 units defined. The cross-section image that\n", 567 | " we load have 4 however. Lets add two layers more:\n", 568 | "
" 569 | ] 570 | }, 571 | { 572 | "cell_type": "markdown", 573 | "metadata": {}, 574 | "source": [ 575 | "### Layer 2\n", 576 | "\n", 577 | "First we need to add some more layers." 578 | ] 579 | }, 580 | { 581 | "cell_type": "code", 582 | "execution_count": null, 583 | "metadata": { 584 | "pycharm": { 585 | "name": "#%%\n" 586 | } 587 | }, 588 | "outputs": [], 589 | "source": [ 590 | "# We can add already two extra surfaces\n" 591 | ] 592 | }, 593 | { 594 | "cell_type": "code", 595 | "execution_count": null, 596 | "metadata": { 597 | "pycharm": { 598 | "name": "#%%\n" 599 | } 600 | }, 601 | "outputs": [], 602 | "source": [ 603 | "\n", 604 | "\n", 605 | "#--------------------\n", 606 | "# Plot data\n" 607 | ] 608 | }, 609 | { 610 | "cell_type": "code", 611 | "execution_count": null, 612 | "metadata": { 613 | "pycharm": { 614 | "name": "#%%\n" 615 | } 616 | }, 617 | "outputs": [], 618 | "source": [ 619 | "# Compute model\n", 620 | "\n", 621 | "\n", 622 | "# Plot 2D\n", 623 | "\n", 624 | "\n", 625 | "# Plot 3D\n" 626 | ] 627 | }, 628 | { 629 | "cell_type": "markdown", 630 | "metadata": {}, 631 | "source": [ 632 | "### Layer 3" 633 | ] 634 | }, 635 | { 636 | "cell_type": "code", 637 | "execution_count": null, 638 | "metadata": { 639 | "pycharm": { 640 | "name": "#%%\n" 641 | } 642 | }, 643 | "outputs": [], 644 | "source": [ 645 | "# Your code here:\n", 646 | "# Add points\n", 647 | "\n", 648 | "\n", 649 | "# Compute model\n", 650 | "\n", 651 | "\n", 652 | "# Plotting\n", 653 | "p2d.plot_data(ax, cell_number=5)\n", 654 | "p2d.plot_lith(ax, cell_number=5)\n", 655 | "p2d.plot_contacts(ax, cell_number=5)\n", 656 | "\n", 657 | "p3d.plot_surfaces()\n", 658 | "p3d.plot_structured_grid(opacity=.2, annotations = {1: 'surface1', 2:'surface2', 3:'surface3', 4:'basement'})\n", 659 | "p3d.plot_data()\n", 660 | "# ------------------" 661 | ] 662 | }, 663 | { 664 | "cell_type": "code", 665 | "execution_count": null, 666 | "metadata": { 667 | "pycharm": { 668 | "name": "#%%\n" 669 | } 670 | }, 671 | "outputs": [], 672 | "source": [ 673 | "# Showing scalar field\n" 674 | ] 675 | }, 676 | { 677 | "cell_type": "code", 678 | "execution_count": null, 679 | "metadata": { 680 | "pycharm": { 681 | "name": "#%%\n" 682 | } 683 | }, 684 | "outputs": [], 685 | "source": [ 686 | "# gp.save_model_to_pickle(geo_model, 'checkpoint1')" 687 | ] 688 | }, 689 | { 690 | "cell_type": "markdown", 691 | "metadata": {}, 692 | "source": [ 693 | "-------------------\n", 694 | "## Intermission: GemPy data structures: Surfaces Points, Orientations and surfaces\n", 695 | "\n", 696 | "On GemPy each surface is not independent of each other. Some surfaces will be\n", 697 | "subparallel to each other while other surfaces will define a fault plane where\n", 698 | "an offset may occur.\n", 699 | "\n", 700 | "In order to account for all possible combinations, we use **categories** (in many\n", 701 | "instances literal `pandas.CategoricalDtype`) and **ordered** `pandas.Dataframes`.\n", 702 | "Let's take a look at `gempy.SurfacePoints`:" 703 | ] 704 | }, 705 | { 706 | "cell_type": "code", 707 | "execution_count": null, 708 | "metadata": { 709 | "pycharm": { 710 | "name": "#%%\n" 711 | } 712 | }, 713 | "outputs": [], 714 | "source": [ 715 | "geo_model.surface_points" 716 | ] 717 | }, 718 | { 719 | "cell_type": "markdown", 720 | "metadata": {}, 721 | "source": [ 722 | "As we can see each point belong to a given surface. If now we look at the\n", 723 | "`gempy.Surface` object:" 724 | ] 725 | }, 726 | { 727 | "cell_type": "code", 728 | "execution_count": null, 729 | "metadata": { 730 | "pycharm": { 731 | "name": "#%%\n" 732 | } 733 | }, 734 | "outputs": [], 735 | "source": [ 736 | "geo_model.surfaces" 737 | ] 738 | }, 739 | { 740 | "cell_type": "markdown", 741 | "metadata": {}, 742 | "source": [ 743 | "Here we can find the properties related to a each surface. Special attention\n", 744 | "to the column series. At the moment all surfaces belong to the same series\n", 745 | "and therefore they will be interpolated together in that characteristic subparallel\n", 746 | "pattern.\n", 747 | "\n", 748 | "Now we will see how by playing with the series we can define unconformities and\n", 749 | "faults" 750 | ] 751 | }, 752 | { 753 | "cell_type": "markdown", 754 | "metadata": {}, 755 | "source": [ 756 | "--------------" 757 | ] 758 | }, 759 | { 760 | "cell_type": "markdown", 761 | "metadata": {}, 762 | "source": [ 763 | "
Checkpoint: Next cell will load the\n", 764 | "model from disk to the necessary state to continue.
" 765 | ] 766 | }, 767 | { 768 | "cell_type": "code", 769 | "execution_count": null, 770 | "metadata": { 771 | "pycharm": { 772 | "name": "#%%\n" 773 | } 774 | }, 775 | "outputs": [], 776 | "source": [ 777 | "geo_model = gp.load_model_pickle('checkpoints/checkpoint1.pickle')\n", 778 | "\n", 779 | "# Default plotting setting\n", 780 | "p2d = gp.plot_2d(geo_model)\n", 781 | "ax = p2d.axes[0]\n", 782 | "# Reading image\n", 783 | "img = mpimg.imread('data/wells.png')\n", 784 | "# Plotting it inplace\n", 785 | "ax.imshow(img, origin='upper', alpha=.8, extent = (0, 791, -582,0))\n", 786 | "p3d = gp.plot_3d(geo_model, plotter_type='background')" 787 | ] 788 | }, 789 | { 790 | "cell_type": "markdown", 791 | "metadata": {}, 792 | "source": [ 793 | "---------\n", 794 | "## Unconformities and Faults:\n", 795 | "\n", 796 | "So far the model is simply a depositional unit. GemPy allows for unconformities\n", 797 | "and faults to build complex models. This input is given by categorical data. In general:\n", 798 | "\n", 799 | "**Geometric Data** (surface points/ orientations) Checkpoint: Next cell will load the\n", 1164 | "model from disk to the necessary state to continue." 1165 | ] 1166 | }, 1167 | { 1168 | "cell_type": "code", 1169 | "execution_count": null, 1170 | "metadata": { 1171 | "pycharm": { 1172 | "name": "#%%\n" 1173 | } 1174 | }, 1175 | "outputs": [], 1176 | "source": [ 1177 | "geo_model = gp.load_model_pickle('checkpoints/checkpoint2.pickle')\n", 1178 | "\n", 1179 | "# Default plotting setting\n", 1180 | "p2d = gp.plot_2d(geo_model)\n", 1181 | "ax = p2d.axes[0]\n", 1182 | "# Reading image\n", 1183 | "img = mpimg.imread('data/wells.png')\n", 1184 | "# Plotting it inplace\n", 1185 | "ax.imshow(img, origin='upper', alpha=.8, extent = (0, 791, -582,0))\n", 1186 | "p3d = gp.plot_3d(geo_model, plotter_type='background', show_topography=True)\n" 1187 | ] 1188 | }, 1189 | { 1190 | "cell_type": "markdown", 1191 | "metadata": {}, 1192 | "source": [ 1193 | "### Forward gravity\n", 1194 | "\n", 1195 | "\n", 1196 | "### Probabilistic Modeling\n", 1197 | "\n", 1198 | "https://www.youtube.com/watch?v=n0btC5Zilyc&t=8725s\n" 1199 | ] 1200 | } 1201 | ], 1202 | "metadata": { 1203 | "jupytext": { 1204 | "split_at_heading": true 1205 | }, 1206 | "kernelspec": { 1207 | "display_name": "Python 3", 1208 | "language": "python", 1209 | "name": "python3" 1210 | }, 1211 | "language_info": { 1212 | "codemirror_mode": { 1213 | "name": "ipython", 1214 | "version": 3 1215 | }, 1216 | "file_extension": ".py", 1217 | "mimetype": "text/x-python", 1218 | "name": "python", 1219 | "nbconvert_exporter": "python", 1220 | "pygments_lexer": "ipython3", 1221 | "version": "3.7.9" 1222 | } 1223 | }, 1224 | "nbformat": 4, 1225 | "nbformat_minor": 2 1226 | } 1227 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/customsection.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "customsection", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "id": null, "section": "Section1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 139.834985038265359, 0.0 ], [ 138.420808968235121, 989.0 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/extent.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "extent", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "id": null }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 0.0, 989.0 ], [ 763.0, 989.0 ], [ 763.0, 0.0 ], [ 0.0, 0.0 ], [ 0.0, 989.0 ] ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/geolmap.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "geolmap", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "id": null, "formation": "basement" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 0.0, 0.0 ], [ 1.156430597647571, 430.273705528028586 ], [ 18.568890984816555, 415.214280328314828 ], [ 53.08007373416045, 369.72226670417956 ], [ 78.179115733683332, 337.407250129793908 ], [ 98.885825383289699, 311.994470105277003 ], [ 117.710106882931854, 285.640476005777998 ], [ 138.73055455753223, 259.913957956267041 ], [ 160.064740257126687, 237.011082131702466 ], [ 179.516497806756888, 216.931848532084189 ], [ 200.850683506351317, 196.225138882477808 ], [ 224.06729735591, 175.204691207877346 ], [ 253.244933680355359, 150.105649208354492 ], [ 283.050046054788709, 125.947821283813738 ], [ 312.855158429222115, 104.927373609213333 ], [ 350.189983403512372, 85.789354084577155 ], [ 385.328642202844378, 74.181047159797828 ], [ 417.016182727241983, 69.161238759893337 ], [ 450.899889426597838, 65.396382459964883 ], [ 496.705641075727044, 65.396382459964883 ], [ 534.667942100005348, 67.592548634923133 ], [ 573.88519522425986, 74.181047159797885 ], [ 611.847496248538164, 82.338235809642811 ], [ 661.418104197595881, 96.456446934374469 ], [ 690.595740522041183, 106.496063734183593 ], [ 720.08711487148048, 116.84941855898677 ], [ 751.774655395878199, 126.261559308807847 ], [ 759.304367995734992, 128.143987458772074 ], [ 763.069224295662252, 128.300856471269242 ], [ 763.0, 0.0 ], [ 0.0, 0.0 ] ] ] ] } }, 7 | { "type": "Feature", "properties": { "id": null, "formation": "Layer1" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 0.0, 989.0 ], [ 763.0, 989.0 ], [ 762.755486270668143, 723.14815185996099 ], [ 760.402451083214146, 720.795116672505742 ], [ 736.244623158673335, 706.990643572768136 ], [ 717.106603634037128, 690.048790223090236 ], [ 695.144941884454624, 669.028342548489832 ], [ 669.418423834943724, 642.046872399002723 ], [ 645.574333935397021, 618.516520524449902 ], [ 616.710435635945714, 593.731216549921101 ], [ 592.866345736399012, 577.103101225237197 ], [ 565.257399536923913, 555.141439475654579 ], [ 542.354523712359196, 530.356135501125777 ], [ 525.412670362681297, 506.825783626573127 ], [ 510.353245162967596, 477.96188532712182 ], [ 503.764746638092845, 456.000223577539316 ], [ 502.784315309985004, 451.137284190132107 ], [ 493.097653788295588, 450.980415177634541 ], [ 471.920337101198186, 453.804057402580838 ], [ 447.605640164160434, 455.372747527551041 ], [ 422.663467177134635, 458.823865802485386 ], [ 397.564425177611724, 463.529936177395939 ], [ 380.465702815436828, 466.667316427336289 ], [ 359.445255140836423, 468.236006552306435 ], [ 346.268258091086921, 471.373386802246841 ], [ 333.561868078828525, 476.079457177157337 ], [ 316.306276704156517, 480.942396564565001 ], [ 306.109790891848718, 484.785687370742437 ], [ 304.227362741886054, 490.825144351876986 ], [ 297.011388167023256, 510.276901901507244 ], [ 289.167937542172353, 534.748467851042051 ], [ 279.755796792351248, 561.729938000529046 ], [ 267.520013817583845, 592.162526424950556 ], [ 253.401802692852215, 626.673709174294572 ], [ 242.107233793066939, 653.341441298787572 ], [ 227.361546618347234, 679.695435398286804 ], [ 211.674645368645429, 705.421953447797705 ], [ 193.477839918991378, 728.324829272362422 ], [ 170.88870211942077, 748.090324846986618 ], [ 146.103398144891969, 768.483296471598919 ], [ 127.906592695237876, 782.287769571336526 ], [ 109.082311195595722, 793.268600446127721 ], [ 88.061863520995317, 803.621955270930926 ], [ 69.237582021353191, 816.485214295686433 ], [ 49.472086446728909, 826.211093070501533 ], [ 27.824162722140443, 837.505661970286837 ], [ 2.097644672629499, 852.251349145006543 ], [ -0.255390514827241, 854.839687851207486 ], [ 0.0, 989.0 ] ] ] ] } }, 8 | { "type": "Feature", "properties": { "id": null, "formation": "Layer2" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 502.784315309985004, 451.137284190132107 ], [ 503.764746638092845, 456.000223577539316 ], [ 510.353245162967596, 477.96188532712182 ], [ 525.412670362681297, 506.825783626573127 ], [ 542.354523712359196, 530.356135501125777 ], [ 565.257399536923913, 555.141439475654579 ], [ 592.866345736399012, 577.103101225237197 ], [ 616.710435635945714, 593.731216549921101 ], [ 645.574333935397021, 618.516520524449902 ], [ 669.418423834943724, 642.046872399002723 ], [ 695.144941884454624, 669.028342548489832 ], [ 717.106603634037128, 690.048790223090236 ], [ 736.244623158673335, 706.990643572768136 ], [ 760.402451083214146, 720.795116672505742 ], [ 762.755486270668143, 723.14815185996099 ], [ 762.804507837073629, 441.489839921565135 ], [ 761.343665158196131, 439.685846277849237 ], [ 741.107562546080885, 440.470191340334395 ], [ 729.342386608804532, 442.352619490298594 ], [ 710.831843134156429, 445.176261715244891 ], [ 685.889670147130573, 448.941118015173345 ], [ 663.614270372554074, 451.921629252616697 ], [ 646.044940972888071, 454.588402465065883 ], [ 628.632480585719009, 454.431533452568829 ], [ 603.690307598693153, 453.960926415077779 ], [ 573.88519522425986, 453.647188390083784 ], [ 558.9826390370431, 451.764760240119585 ], [ 524.000849250208148, 451.294153202628536 ], [ 502.784315309985004, 451.137284190132107 ] ] ] ] } }, 9 | { "type": "Feature", "properties": { "id": null, "formation": "basement" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 1.470168622641317, 694.127384548012628 ], [ 20.294450122283457, 683.14655367322132 ], [ 38.804993596931574, 668.714604523495723 ], [ 53.864418796645303, 654.910131423758116 ], [ 69.865058071341139, 632.634731649181504 ], [ 85.551959321042915, 607.535689649658707 ], [ 95.90531414584612, 589.652622224998595 ], [ 107.199883045631395, 561.102461950541397 ], [ 111.435346383051169, 554.82770145066047 ], [ 90.101160683456726, 560.318116888056011 ], [ 51.511383609190325, 573.495113937805513 ], [ 27.510424697146597, 577.887446287722014 ], [ 1.313299610144611, 584.319075800099654 ], [ -0.52010697341569, 586.51524197505762 ], [ -0.598541479664181, 694.205819054260246 ], [ 1.470168622641317, 694.127384548012628 ] ] ] ] } }, 10 | { "type": "Feature", "properties": { "id": null, "formation": "Layer2" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -0.255390514827241, 854.839687851207486 ], [ 2.097644672629499, 852.251349145006543 ], [ 27.824162722140443, 837.505661970286837 ], [ 49.472086446728909, 826.211093070501533 ], [ 69.237582021353191, 816.485214295686433 ], [ 88.061863520995317, 803.621955270930926 ], [ 109.082311195595722, 793.268600446127721 ], [ 127.906592695237876, 782.287769571336526 ], [ 146.103398144891969, 768.483296471598919 ], [ 170.88870211942077, 748.090324846986618 ], [ 193.477839918991378, 728.324829272362422 ], [ 211.674645368645429, 705.421953447797705 ], [ 227.361546618347234, 679.695435398286804 ], [ 242.107233793066939, 653.341441298787572 ], [ 253.401802692852215, 626.673709174294572 ], [ 267.520013817583845, 592.162526424950556 ], [ 279.755796792351248, 561.729938000529046 ], [ 289.167937542172353, 534.748467851042051 ], [ 297.011388167023256, 510.276901901507244 ], [ 304.227362741886054, 490.825144351876986 ], [ 306.109790891848718, 484.785687370742437 ], [ 296.070174092041213, 488.472109164421909 ], [ 271.128001105015358, 498.354856951734007 ], [ 247.754518242959705, 506.198307576584909 ], [ 222.969214268430903, 514.826103263920913 ], [ 210.419693268669448, 517.806614501364265 ], [ 185.634389294140618, 528.15996932616747 ], [ 146.730874194880187, 542.748787488390121 ], [ 111.435346383051169, 554.82770145066047 ], [ 107.199883045631395, 561.102461950541397 ], [ 95.90531414584612, 589.652622224998595 ], [ 85.551959321042915, 607.535689649658707 ], [ 69.865058071341139, 632.634731649181504 ], [ 53.864418796645303, 654.910131423758116 ], [ 38.804993596931574, 668.714604523495723 ], [ 20.294450122283457, 683.14655367322132 ], [ 1.470168622641317, 694.127384548012628 ], [ -0.598541479664181, 694.205819054260246 ], [ -0.255390514827241, 854.839687851207486 ] ] ] ] } }, 11 | { "type": "Feature", "properties": { "id": null, "formation": "Layer1" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 146.730874194880187, 542.748787488390121 ], [ 185.634389294140618, 528.15996932616747 ], [ 210.419693268669448, 517.806614501364265 ], [ 222.969214268430903, 514.826103263920913 ], [ 247.754518242959705, 506.198307576584909 ], [ 271.744680343546293, 498.11051234778779 ], [ 306.109790891848718, 484.785687370742437 ], [ 316.306276704156517, 480.942396564565001 ], [ 333.561868078828525, 476.079457177157337 ], [ 346.268258091086921, 471.373386802246841 ], [ 359.445255140836423, 468.236006552306435 ], [ 380.465702815436828, 466.667316427336289 ], [ 397.564425177611724, 463.529936177395939 ], [ 422.663467177134635, 458.823865802485386 ], [ 447.605640164160434, 455.372747527551041 ], [ 471.920337101198186, 453.804057402580838 ], [ 493.097653788295588, 450.980415177634541 ], [ 502.784315309985004, 451.137284190132107 ], [ 558.9826390370431, 451.764760240119585 ], [ 573.88519522425986, 453.647188390083784 ], [ 603.690307598693153, 453.960926415077779 ], [ 646.044940972888071, 454.588402465065883 ], [ 741.107562546080885, 440.470191340334395 ], [ 730.597338708780853, 436.234728002915347 ], [ 673.183280134872234, 405.488401553499841 ], [ 647.456762085361333, 389.487762278803984 ], [ 626.750052435754924, 372.232170904132033 ], [ 602.592224511214113, 345.250700754644981 ], [ 575.297016336733009, 321.406610855098279 ], [ 544.550689887317503, 303.209805405444172 ], [ 517.88295776282439, 288.150380205730471 ], [ 484.626727113456639, 274.032169080998756 ], [ 451.997972514076935, 262.110124131225348 ], [ 417.486789764732976, 256.776577706326748 ], [ 384.54429714035922, 263.051338206207447 ], [ 352.229280565973568, 273.404693031010652 ], [ 332.777523016343309, 288.777856255718405 ], [ 309.560909166784654, 311.680732080283065 ], [ 282.893177042291597, 338.348464204776064 ], [ 254.02927874284029, 365.329934354263173 ], [ 231.753878968263763, 389.174024253809989 ], [ 200.380076468860182, 426.195111203106194 ], [ 176.849724594307474, 459.765079877468054 ], [ 160.535347294617623, 498.354856951734462 ], [ 145.16218406990987, 538.51332415097113 ], [ 146.730874194880187, 542.748787488390121 ] ] ] ] } }, 12 | { "type": "Feature", "properties": { "id": null, "formation": "Layer2" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -0.52010697341569, 586.51524197505762 ], [ 1.313299610144611, 584.319075800099654 ], [ 27.510424697146597, 577.887446287722014 ], [ 51.511383609190325, 573.495113937805513 ], [ 90.101160683456726, 560.318116888056011 ], [ 111.435346383051169, 554.82770145066047 ], [ 146.730874194880187, 542.748787488390121 ], [ 145.16218406990987, 538.51332415097113 ], [ 176.849724594307474, 459.765079877468054 ], [ 200.380076468860182, 426.195111203106194 ], [ 231.753878968263763, 389.174024253809989 ], [ 254.02927874284029, 365.329934354263173 ], [ 282.893177042291597, 338.348464204776064 ], [ 309.560909166784654, 311.680732080283065 ], [ 332.777523016343309, 288.777856255718405 ], [ 352.229280565973568, 273.404693031010652 ], [ 384.54429714035922, 263.051338206207447 ], [ 417.486789764732976, 256.776577706326748 ], [ 451.997972514076935, 262.110124131225348 ], [ 484.626727113456639, 274.032169080998756 ], [ 517.88295776282439, 288.150380205730471 ], [ 544.550689887317503, 303.209805405444172 ], [ 575.297016336733009, 321.406610855098279 ], [ 602.592224511214113, 345.250700754644981 ], [ 626.750052435754924, 372.232170904132033 ], [ 647.456762085361333, 389.487762278803984 ], [ 673.183280134872234, 405.488401553499841 ], [ 701.105964359341442, 420.23408872821949 ], [ 730.597338708780853, 436.234728002915347 ], [ 741.107562546080885, 440.470191340334395 ], [ 761.343665158196131, 439.685846277849237 ], [ 762.804507837073629, 441.489839921565135 ], [ 763.069224295662252, 128.300856471269242 ], [ 759.304367995734992, 128.143987458772074 ], [ 751.774655395878199, 126.261559308807847 ], [ 720.08711487148048, 116.84941855898677 ], [ 690.595740522041183, 106.496063734183593 ], [ 661.418104197595881, 96.456446934374469 ], [ 611.847496248538164, 82.338235809642811 ], [ 573.88519522425986, 74.181047159797885 ], [ 534.667942100005348, 67.592548634923133 ], [ 496.705641075727044, 65.396382459964883 ], [ 450.899889426597838, 65.396382459964883 ], [ 417.016182727241983, 69.161238759893337 ], [ 385.328642202844378, 74.181047159797828 ], [ 350.189983403512372, 85.789354084577155 ], [ 312.855158429222115, 104.927373609213333 ], [ 283.050046054788709, 125.947821283813738 ], [ 253.244933680355359, 150.105649208354492 ], [ 224.06729735591, 175.204691207877346 ], [ 200.850683506351317, 196.225138882477808 ], [ 179.516497806756888, 216.931848532084189 ], [ 160.064740257126687, 237.011082131702466 ], [ 138.73055455753223, 259.913957956267041 ], [ 117.710106882931854, 285.640476005777998 ], [ 98.885825383289699, 311.994470105277003 ], [ 78.179115733683332, 337.407250129793908 ], [ 53.08007373416045, 369.72226670417956 ], [ 18.568890984816555, 415.214280328314828 ], [ 1.156430597647571, 430.273705528028586 ], [ -0.52010697341569, 586.51524197505762 ] ] ] ] } } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/interfaces.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "interfaces", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "id": null, "formation": "Fault1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 1.313299610144611, 584.319075800099654 ], [ 27.510424697146597, 577.887446287722014 ], [ 51.511383609190325, 573.495113937805513 ], [ 90.101160683456726, 560.318116888056011 ], [ 111.435346383051169, 554.82770145066047 ], [ 146.730874194880187, 542.748787488390121 ], [ 185.634389294140618, 528.15996932616747 ], [ 210.419693268669448, 517.806614501364265 ], [ 222.969214268430903, 514.826103263920913 ], [ 247.754518242959705, 506.198307576584909 ], [ 271.128001105015358, 498.354856951734007 ], [ 296.070174092041213, 488.472109164421909 ], [ 316.306276704156517, 480.942396564565001 ], [ 333.561868078828525, 476.079457177157337 ], [ 346.268258091086921, 471.373386802246841 ], [ 359.445255140836423, 468.236006552306435 ], [ 380.465702815436828, 466.667316427336289 ], [ 397.564425177611724, 463.529936177395939 ], [ 422.663467177134635, 458.823865802485386 ], [ 447.605640164160434, 455.372747527551041 ], [ 471.920337101198186, 453.804057402580838 ], [ 493.097653788295588, 450.980415177634541 ], [ 524.000849250208148, 451.294153202628536 ], [ 558.9826390370431, 451.764760240119585 ], [ 573.88519522425986, 453.647188390083784 ], [ 603.690307598693153, 453.960926415077779 ], [ 628.632480585719009, 454.431533452568829 ], [ 646.044940972888071, 454.588402465065883 ], [ 663.614270372554074, 451.921629252616697 ], [ 685.889670147130573, 448.941118015173345 ], [ 710.831843134156429, 445.176261715244891 ], [ 729.342386608804532, 442.352619490298594 ], [ 741.107562546080885, 440.470191340334395 ], [ 755.539511695806482, 439.999584302843232 ], [ 761.343665158196131, 439.685846277849237 ] ] ] } }, 7 | { "type": "Feature", "properties": { "id": null, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 1.470168622641317, 694.127384548012628 ], [ 20.294450122283457, 683.14655367322132 ], [ 38.804993596931574, 668.714604523495723 ], [ 53.864418796645303, 654.910131423758116 ], [ 69.865058071341139, 632.634731649181504 ], [ 85.551959321042915, 607.535689649658707 ], [ 95.90531414584612, 589.652622224998595 ], [ 107.199883045631395, 561.102461950541397 ], [ 107.199883045631395, 561.102461950541397 ] ] ] } }, 8 | { "type": "Feature", "properties": { "id": null, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 2.097644672629499, 852.251349145006543 ], [ 27.824162722140443, 837.505661970286837 ], [ 49.472086446728909, 826.211093070501533 ], [ 69.237582021353191, 816.485214295686433 ], [ 88.061863520995317, 803.621955270930926 ], [ 109.082311195595722, 793.268600446127721 ], [ 127.906592695237876, 782.287769571336526 ], [ 146.103398144891969, 768.483296471598919 ], [ 170.88870211942077, 748.090324846986618 ], [ 193.477839918991378, 728.324829272362422 ], [ 211.674645368645429, 705.421953447797705 ], [ 227.361546618347234, 679.695435398286804 ], [ 242.107233793066939, 653.341441298787572 ], [ 253.401802692852215, 626.673709174294572 ], [ 267.520013817583845, 592.162526424950556 ], [ 279.755796792351248, 561.729938000529046 ], [ 289.167937542172353, 534.748467851042051 ], [ 297.011388167023256, 510.276901901507244 ], [ 304.227362741886054, 490.825144351876986 ] ] ] } }, 9 | { "type": "Feature", "properties": { "id": null, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 503.764746638092845, 456.000223577539316 ], [ 510.353245162967596, 477.96188532712182 ], [ 525.412670362681297, 506.825783626573127 ], [ 542.354523712359196, 530.356135501125777 ], [ 565.257399536923913, 555.141439475654579 ], [ 592.866345736399012, 577.103101225237197 ], [ 616.710435635945714, 593.731216549921101 ], [ 645.574333935397021, 618.516520524449902 ], [ 669.418423834943724, 642.046872399002723 ], [ 695.144941884454624, 669.028342548489832 ], [ 717.106603634037128, 690.048790223090236 ], [ 736.244623158673335, 706.990643572768136 ], [ 760.402451083214146, 720.795116672505742 ] ] ] } }, 10 | { "type": "Feature", "properties": { "id": null, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 145.16218406990987, 538.51332415097113 ], [ 160.535347294617623, 498.354856951734462 ], [ 176.849724594307474, 459.765079877468054 ], [ 200.380076468860182, 426.195111203106194 ], [ 231.753878968263763, 389.174024253809989 ], [ 254.02927874284029, 365.329934354263173 ], [ 282.893177042291597, 338.348464204776064 ], [ 309.560909166784654, 311.680732080283065 ], [ 332.777523016343309, 288.777856255718405 ], [ 352.229280565973568, 273.404693031010652 ], [ 384.54429714035922, 263.051338206207447 ], [ 417.486789764732976, 256.776577706326748 ], [ 451.997972514076935, 262.110124131225348 ], [ 484.626727113456639, 274.032169080998756 ], [ 517.88295776282439, 288.150380205730471 ], [ 544.550689887317503, 303.209805405444172 ], [ 575.297016336733009, 321.406610855098279 ], [ 602.592224511214113, 345.250700754644981 ], [ 626.750052435754924, 372.232170904132033 ], [ 647.456762085361333, 389.487762278803984 ], [ 673.183280134872234, 405.488401553499841 ], [ 701.105964359341442, 420.23408872821949 ], [ 730.597338708780853, 436.234728002915347 ] ] ] } }, 11 | { "type": "Feature", "properties": { "id": null, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 1.156430597647571, 430.273705528028586 ], [ 18.568890984816555, 415.214280328314828 ], [ 53.08007373416045, 369.72226670417956 ], [ 78.179115733683332, 337.407250129793908 ], [ 98.885825383289699, 311.994470105277003 ], [ 117.710106882931854, 285.640476005777998 ], [ 138.73055455753223, 259.913957956267041 ], [ 160.064740257126687, 237.011082131702466 ], [ 179.516497806756888, 216.931848532084189 ], [ 200.850683506351317, 196.225138882477808 ], [ 224.06729735591, 175.204691207877346 ], [ 253.244933680355359, 150.105649208354492 ], [ 283.050046054788709, 125.947821283813738 ], [ 312.855158429222115, 104.927373609213333 ], [ 350.189983403512372, 85.789354084577155 ], [ 385.328642202844378, 74.181047159797828 ], [ 417.016182727241983, 69.161238759893337 ], [ 450.899889426597838, 65.396382459964883 ], [ 496.705641075727044, 65.396382459964883 ], [ 534.667942100005348, 67.592548634923133 ], [ 573.88519522425986, 74.181047159797885 ], [ 611.847496248538164, 82.338235809642811 ], [ 661.418104197595881, 96.456446934374469 ], [ 690.595740522041183, 106.496063734183593 ], [ 720.08711487148048, 116.84941855898677 ], [ 751.774655395878199, 126.261559308807847 ], [ 759.304367995734992, 128.143987458772074 ] ] ] } } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/orientations.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/GeoUtrecht2020/data/orientations.jpg -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/strike_fault.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "strike_fault", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "id": 1, "Z": 400, "formation": "Fault1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 306.109790891848718, 484.785687370742437 ], [ 511.197621028856815, 451.59745380370299 ] ] ] } }, 7 | { "type": "Feature", "properties": { "id": 2, "Z": 500, "formation": "Fault1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 223.69562599120718, 514.598997723659863 ], [ 583.46201820752799, 453.789426712253601 ] ] ] } }, 8 | { "type": "Feature", "properties": { "id": 3, "Z": 600, "formation": "Fault1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 146.764447781427947, 542.74110151731054 ], [ 740.718397195164926, 440.637589260949312 ] ] ] } } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/strike_layers.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "strike_layers", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "id": 1, "Z": 300, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 311.657377547241083, 309.826302782923449 ], [ 497.762948363545547, 279.280099670216998 ] ] ] } }, 7 | { "type": "Feature", "properties": { "id": 2, "Z": 400, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 228.786659843324372, 392.414185272833663 ], [ 586.856040775606175, 331.604614261427173 ] ] ] } }, 8 | { "type": "Feature", "properties": { "id": 3, "Z": 500, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 173.916628326055246, 467.93118741258013 ], [ 644.271589218933968, 386.191810564689604 ] ] ] } }, 9 | { "type": "Feature", "properties": { "id": 4, "Z": 600, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 147.612953423446868, 542.599683910307135 ], [ 740.435561981158116, 440.49617165394568 ] ] ] } }, 10 | { "type": "Feature", "properties": { "id": 1, "Z": 200, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 306.707761302126585, 109.578971266291376 ], [ 546.834857993680544, 69.416370877362425 ] ] ] } }, 11 | { "type": "Feature", "properties": { "id": 2, "Z": 300, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 205.735589901791087, 192.449688970208172 ], [ 205.735589901791087, 192.449688970208172 ], [ 706.35391869337036, 110.993147336324085 ], [ 706.35391869337036, 110.993147336324085 ], [ 706.35391869337036, 110.993147336324085 ] ] ] } }, 12 | { "type": "Feature", "properties": { "id": 3, "Z": 400, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 128.521576478005159, 273.623395390085648 ], [ 763.203796708685218, 175.762411343822123 ] ] ] } }, 13 | { "type": "Feature", "properties": { "id": 4, "Z": 500, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 69.126181536631407, 348.29189188781271 ], [ 760.941114996632905, 241.945851421352927 ], [ 760.941114996632905, 241.945851421352927 ] ] ] } }, 14 | { "type": "Feature", "properties": { "id": 5, "Z": 600, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 2.942741459100631, 428.617092665670782 ], [ 2.942741459100631, 428.617092665670782 ], [ 2.942741459100631, 428.617092665670782 ], [ 760.941114996632678, 314.351666207027847 ] ] ] } }, 15 | { "type": "Feature", "properties": { "id": 5, "Z": 500, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 280.686921613524419, 560.701137606725752 ], [ 532.975932507359744, 517.710185077731467 ] ] ] } }, 16 | { "type": "Feature", "properties": { "id": 6, "Z": 600, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 252.969070640883302, 628.015918540282769 ], [ 591.239986592707396, 575.974239163079119 ] ] ] } }, 17 | { "type": "Feature", "properties": { "id": 7, "Z": 700, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 214.503481535993615, 700.987403753970625 ], [ 657.4234266702382, 630.278600252335082 ] ] ] } }, 18 | { "type": "Feature", "properties": { "id": 8, "Z": 800, "formation": "Layer1" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 116.642497489730118, 788.666320095998344 ], [ 712.293458187507326, 684.582961341590931 ] ] ] } }, 19 | { "type": "Feature", "properties": { "id": 6, "Z": 800, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 40.276989707963807, 666.481507645172314 ], [ 761.506785424645614, 555.044433326594799 ] ] ] } }, 20 | { "type": "Feature", "properties": { "id": 7, "Z": 700, "formation": "Layer2" }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 95.147021225233004, 591.247340719432486 ], [ 761.506785424645386, 478.678925544829099 ] ] ] } } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/style.qml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1 5 | 1 6 | 1 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | "id" 136 | 137 | 138 | 139 | 140 | 141 | 0 142 | 0 143 | 1 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 156 | 157 | 158 | 159 | 160 | 161 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 174 | 175 | 176 | 177 | 178 | 179 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 0 221 | 222 | 239 | 0 240 | generatedlayout 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | id 251 | 252 | 2 253 | 254 | -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/GeoUtrecht2020/data/task.png -------------------------------------------------------------------------------- /workshops/GeoUtrecht2020/data/topo.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "topo", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "id": null, "Z": 200 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 221.243655130963589, -2.684768963740794 ], [ 230.655795880784666, 6.727371786080283 ], [ 243.519054905540145, 15.512036485913285 ], [ 254.186147755337345, 23.041749085770135 ], [ 261.715860355194195, 35.277532060537538 ], [ 269.559310980045097, 50.336957260251239 ], [ 278.657713704872094, 66.337596534947068 ], [ 287.756116429699148, 81.083283709666716 ], [ 296.854519154526201, 95.828970884386393 ], [ 303.443017679400896, 107.437277809165721 ], [ 316.933752754144507, 122.182964983885398 ], [ 326.345893503965499, 133.477533883670674 ], [ 336.385510303774709, 148.850697108378426 ], [ 349.248769328530102, 162.027694158127929 ], [ 363.680718478255812, 173.008525032919181 ], [ 376.230239478017211, 181.47945170775813 ], [ 390.348450602748812, 183.675617882716381 ], [ 404.780399752474466, 183.989355907710433 ], [ 414.820016552283562, 181.165713682764107 ], [ 427.997013602033064, 173.636001082907228 ], [ 441.487748676776619, 163.910122308092127 ], [ 457.802125976466527, 153.24302945829487 ], [ 472.547813151186176, 144.144626733467845 ], [ 489.489666500864132, 130.653891658724319 ], [ 503.294139600601682, 113.39830028405234 ], [ 515.843660600363137, 100.221303234302866 ], [ 526.197015425166228, 86.103092109571264 ], [ 540.942702599885934, 73.867309134803861 ], [ 555.060913724617535, 60.376574060060335 ], [ 571.061552999313335, 47.199577010310833 ], [ 584.866026099050941, 34.336317985555382 ], [ 596.788071048824349, 26.179129335710456 ], [ 612.161234273532045, 13.943346360943053 ], [ 625.024493298287553, 1.393825361181655 ] ] ] } }, 7 | { "type": "Feature", "properties": { "id": null, "Z": 300 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 43.667932984339402, -2.057292913752718 ], [ 56.84493003408889, 8.296061911050458 ], [ 74.414259433754893, 22.728011060776083 ], [ 86.96378043351632, 39.669864410454011 ], [ 100.454515508259846, 63.513954310000742 ], [ 116.141416757961622, 88.612996309523581 ], [ 133.397008132633601, 108.37849188414782 ], [ 152.848765682263803, 129.085201533754173 ], [ 174.496689406852255, 152.929291433300875 ], [ 189.869852631560008, 172.381048982931105 ], [ 205.556753881261784, 190.891592457579208 ], [ 220.929917105969508, 209.402135932227338 ], [ 238.185508480641488, 229.167631506851592 ], [ 257.951004055265741, 250.50181720644602 ], [ 277.089023579901891, 269.639836731082198 ], [ 293.717138904585795, 290.346546380688551 ], [ 310.345254229269642, 307.915875780354554 ], [ 326.032155478971447, 326.112681230008548 ], [ 342.032794753667247, 343.368272604680499 ], [ 363.053242428267652, 362.8200301543107 ], [ 379.367619727957504, 380.389359553976703 ], [ 389.093498502772604, 389.801500303797752 ], [ 396.936949127623507, 394.507570678708305 ], [ 406.035351852450503, 392.938880553738159 ], [ 419.526086927194058, 386.664120053857403 ], [ 440.232796576800411, 375.997027204060203 ], [ 452.468579551567814, 366.271148429245102 ], [ 459.057078076442508, 357.800221754406152 ], [ 470.665385001221864, 333.95613185485945 ], [ 482.587429950995215, 309.484565905324644 ], [ 492.94078477579842, 290.032808355694442 ], [ 510.510114175464423, 263.992552281189489 ], [ 527.451967525142322, 244.227056706565236 ], [ 553.805961624641327, 219.441752732036434 ], [ 578.591265599170129, 200.931209257388332 ], [ 603.062831548704935, 181.47945170775813 ], [ 628.161873548227732, 163.596384283098104 ], [ 646.986155047869943, 149.478173158366502 ], [ 667.065388647488135, 132.850057833682598 ], [ 695.615548921945447, 114.966990409022571 ], [ 714.439830421587544, 102.731207434255168 ], [ 730.754207721277453, 91.436638534469893 ], [ 745.499894895997045, 77.945903459726367 ], [ 760.873058120704854, 63.20021628500669 ] ] ] } }, 8 | { "type": "Feature", "properties": { "id": null, "Z": 400 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 0.842692572653464, 170.812358857960874 ], [ 17.313938884840336, 180.224499607781951 ], [ 33.785185197027204, 192.617151595046352 ], [ 47.589658296764775, 203.597982469837604 ], [ 65.002118683933745, 217.559324582072179 ], [ 82.885186108593786, 229.951976569336608 ], [ 97.474004270816437, 242.501497569098035 ], [ 111.749084408045036, 256.619708693829693 ], [ 126.965378620255763, 270.894788831058349 ], [ 145.319053082406839, 286.581690080760097 ], [ 159.594133219635467, 301.4842462679768 ], [ 174.967296444343219, 316.700540480187499 ], [ 187.83055546909867, 332.701179754883356 ], [ 201.791897581333245, 352.937282366998602 ], [ 216.537584756052894, 371.918432879137697 ], [ 228.930236743317323, 392.782011541241104 ], [ 239.911067618108575, 417.881053540763901 ], [ 256.225444917798427, 437.332811090394159 ], [ 268.618096905062828, 449.568594065161506 ], [ 287.128640379710987, 468.079137539809665 ], [ 308.149088054311335, 488.315240151924968 ], [ 334.816820178804392, 506.82578362657307 ], [ 359.445255140836196, 518.434090551352369 ], [ 369.641740953142289, 520.473387713813509 ], [ 389.250367515269488, 521.571470801292662 ], [ 407.290303952426541, 514.512365238926805 ], [ 433.016822001937498, 501.492237201674357 ], [ 467.99861178877245, 480.942396564565001 ], [ 492.470177738307314, 464.314281239881211 ], [ 517.255481712836172, 445.489999740239057 ], [ 540.315226549897716, 425.724504165614803 ], [ 555.845258787102352, 404.390318466020346 ], [ 567.296696699384711, 379.448145478994491 ], [ 576.395099424211708, 356.702138666926885 ], [ 583.14046696158357, 337.093512104799686 ], [ 592.709476723901616, 321.877217892588988 ], [ 607.925770936112372, 303.68041244293488 ], [ 623.455803173317122, 288.464118230724125 ], [ 644.633119860414467, 266.502456481141621 ], [ 666.90851963499108, 250.031210168954743 ], [ 688.87018138457347, 233.873701881761917 ], [ 713.341747334108163, 218.029931619563087 ], [ 732.793504883738365, 204.382327532322535 ], [ 759.461237008231365, 185.55804603268038 ] ] ] } }, 9 | { "type": "Feature", "properties": { "id": null, "Z": 500 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 0.84269257265268, 296.621306880569136 ], [ 23.118092347229229, 311.680732080282837 ], [ 40.844290759392258, 325.485205180020444 ], [ 58.413620159058262, 338.191595192278896 ], [ 74.884866471245147, 354.192234466974696 ], [ 94.807231058366426, 372.38903991662869 ], [ 116.612023795451918, 395.135046728696295 ], [ 136.377519370076186, 420.547826753213201 ], [ 150.33886148231079, 436.705335040406112 ], [ 164.927679644533441, 457.882651727503571 ], [ 182.497009044199444, 477.961885327121877 ], [ 206.341098943746204, 500.707892139189539 ], [ 230.342057855789932, 520.63025672631079 ], [ 267.676882830080217, 550.905976138235246 ], [ 290.736627667141818, 569.102781587889353 ], [ 316.463145716652718, 597.025465812358448 ], [ 335.130558203797875, 619.143996574438006 ], [ 353.01362562845793, 635.144635849133806 ], [ 374.504680340549385, 642.988086473984708 ], [ 389.564105540263085, 640.321313261535465 ], [ 410.741422227360488, 626.516840161797859 ], [ 430.036310764493692, 606.594475574676608 ], [ 445.252604976704333, 588.397670125022501 ], [ 459.213947088938937, 573.965720975296904 ], [ 474.11650327615564, 562.20054503802055 ], [ 493.254522800791847, 553.415880338187549 ], [ 512.863149362919103, 537.258372050994694 ], [ 530.746216787579101, 518.904697588843646 ], [ 550.825450387197407, 492.864441514338637 ], [ 569.806600899336559, 469.020351614791934 ], [ 586.120978199026467, 450.196070115149723 ], [ 609.49446106108212, 421.332171815698473 ], [ 627.377528485742118, 399.684248091109964 ], [ 644.162512822923077, 385.409167953881195 ], [ 663.457401360056338, 367.682969541718194 ], [ 684.164111009662633, 344.466355692159539 ], [ 716.165389559054347, 327.838240367475635 ], [ 736.244623158672653, 318.426099617654529 ], [ 760.8730581207044, 308.229613805348379 ] ] ] } }, 10 | { "type": "Feature", "properties": { "id": null, "Z": 600 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 1.940775660131862, 429.332491453046373 ], [ 40.216814709404233, 455.059009502557274 ], [ 70.649403133825686, 483.922907802008581 ], [ 105.160585883169617, 509.96316387651359 ], [ 136.848126407567236, 535.689681926024491 ], [ 187.673686456601047, 575.848149125261102 ], [ 224.067297355909233, 606.908213599670717 ], [ 264.225764555145815, 637.654540049086222 ], [ 289.324806554668726, 662.753582048609132 ], [ 302.815541629412223, 692.872432448036534 ], [ 304.697969779376422, 724.559972972434139 ], [ 297.168257179519571, 752.168919171909238 ], [ 282.108831979805871, 779.464127346390342 ], [ 261.715860355193513, 817.426428370668646 ], [ 241.009150705587132, 851.310135070024558 ], [ 216.537584756052354, 885.82131781936846 ], [ 189.556114606565274, 926.607261068593061 ], [ 161.633430382096094, 965.510776167853578 ], [ 147.20148123237044, 987.786175942430077 ] ] ] } }, 11 | { "type": "Feature", "properties": { "id": null, "Z": 700 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 2.568251710119966, 548.552940950779998 ], [ 28.922245809618971, 554.513963425666702 ], [ 58.413620159058311, 568.0046985004102 ], [ 94.493493033372445, 590.593836299980808 ], [ 124.926081457793899, 615.0654022495155 ], [ 144.377839007424143, 634.203421774151707 ], [ 165.084548657030496, 655.53760747374622 ], [ 193.634708931487751, 679.067959348298814 ], [ 208.694134131201452, 692.558694423042425 ], [ 217.165060806040401, 707.304381597762131 ], [ 220.929917105968855, 722.050068772481723 ], [ 218.420012906016552, 740.874350272123934 ], [ 209.007872156195504, 761.267321896736235 ], [ 189.556114606565274, 791.699910321157631 ], [ 164.770810632036444, 824.64240294553133 ], [ 147.20148123237044, 855.702467419940831 ], [ 127.122247632752163, 890.527388194278842 ], [ 109.866656258080212, 918.136334393754169 ], [ 90.414898708449982, 945.745280593229268 ], [ 74.414259433754154, 972.413012717722381 ], [ 66.257070783909228, 987.472437917436082 ] ] ] } }, 12 | { "type": "Feature", "properties": { "id": null, "Z": 800 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 1.627037635137881, 904.959337344004439 ], [ 26.412341609666697, 883.311413619416044 ], [ 60.296048309022567, 858.839847669881237 ], [ 88.53247055848577, 830.917163445412029 ], [ 107.984228108116, 811.779143920775823 ], [ 113.945250583002675, 797.97467082103833 ], [ 118.337582932919176, 778.522913271408015 ], [ 118.023844907925124, 750.286491021944812 ], [ 106.415537983145825, 728.011091247368313 ], [ 93.866016983384398, 710.44176184770231 ], [ 78.179115733682593, 691.931218373054207 ], [ 61.551000408998689, 679.0679593482987 ], [ 45.864099159296913, 669.342080573483599 ], [ 25.15738950969056, 659.616201798668499 ], [ 2.254513685125943, 651.145275123829606 ] ] ] } }, 13 | { "type": "Feature", "properties": { "id": null, "Z": 500 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 238.499246505634858, 987.786175942430077 ], [ 253.558671705348559, 966.451990242835677 ], [ 269.245572955050307, 942.92163836828297 ], [ 287.442378404704414, 925.979785018605071 ], [ 305.639183854358521, 904.959337344004666 ], [ 319.129918929102018, 885.82131781936846 ], [ 333.561868078827672, 866.369560269738258 ], [ 350.817459453499623, 853.506301244982751 ], [ 372.151645153094023, 849.427706920060359 ], [ 383.446214052879327, 857.271157544911262 ], [ 395.054520977658683, 872.330582744624962 ], [ 409.486470127384337, 890.213650169284961 ], [ 427.05579952705034, 906.214289443980761 ], [ 439.91905855180579, 922.528666743670669 ], [ 455.605959801507595, 940.725472193324777 ], [ 467.841742776274941, 955.471159368044482 ], [ 478.822573651066193, 967.706942342811772 ], [ 485.724810200934996, 977.432821117626872 ], [ 494.195736875773946, 987.472437917436082 ] ] ] } }, 14 | { "type": "Feature", "properties": { "id": null, "Z": 600 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 575.767623374223376, 986.844961867447637 ], [ 556.62960384958717, 967.079466292823327 ], [ 535.609156174986765, 942.294162318294525 ], [ 515.843660600362455, 918.763810443741818 ], [ 498.901807250684556, 898.998314869117621 ], [ 478.195097601078203, 872.330582744624508 ], [ 465.018100551328587, 845.976588645125503 ], [ 456.860911901483632, 821.191284670596588 ], [ 449.331199301626782, 795.778504646079682 ], [ 449.01746127663273, 778.836651296401783 ], [ 456.233435851495585, 751.541443121920679 ], [ 467.841742776274941, 721.108854697499169 ], [ 480.391263776036283, 700.088407022898991 ], [ 496.078165025738087, 680.950387498262785 ], [ 516.471136650350445, 664.322272173578881 ], [ 534.354204075010443, 648.007894873888972 ], [ 550.982319399694347, 626.046233124306582 ], [ 574.512671274247054, 597.49607284984927 ], [ 596.788071048823667, 566.12227035044566 ], [ 612.788710323519581, 542.278180450898958 ], [ 627.220659473245178, 517.179138451376048 ], [ 643.221298747940978, 495.531214726787596 ], [ 665.810436547511586, 477.334409277133545 ], [ 706.596379796736301, 454.745271477562937 ], [ 733.577849946223296, 442.509488502795534 ], [ 760.245582070716409, 427.763801328075829 ] ] ] } }, 15 | { "type": "Feature", "properties": { "id": null, "Z": 700 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 617.181042673435741, 903.704385244028231 ], [ 599.925451298763846, 883.31141361941593 ], [ 581.414907824115744, 861.036013844839317 ], [ 565.100530524425835, 834.368281720346317 ], [ 554.433437674628635, 809.896715770811511 ], [ 545.02129692480753, 782.287769571336412 ], [ 545.64877297479552, 753.11013324689111 ], [ 550.668581374700125, 731.775947547296596 ], [ 560.708198174509334, 713.892880122636598 ], [ 577.336313499193238, 698.519716897928788 ], [ 602.749093523710144, 678.754221323304591 ], [ 633.809157998119645, 653.341441298787686 ], [ 658.908199997642441, 626.987447199288681 ], [ 670.830244947415849, 607.221951624664484 ], [ 686.51714619711754, 584.632813825093876 ], [ 702.204047446819345, 557.651343675606768 ], [ 712.243664246628555, 544.474346625857265 ], [ 726.048137346366047, 531.297349576107763 ], [ 742.98999069604406, 520.943994751304558 ], [ 761.500534170692163, 509.963163876513306 ] ] ] } }, 16 | { "type": "Feature", "properties": { "id": null, "Z": 800 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 673.967625197356256, 813.661572070740135 ], [ 665.810436547511244, 798.288408846032326 ], [ 654.202129622731945, 778.836651296402124 ], [ 648.241107147845241, 765.659654246652622 ], [ 655.457081722708153, 747.462848796998514 ], [ 671.457720997403953, 725.187449022422015 ], [ 689.654526447058061, 704.167001347821611 ], [ 705.341427696759865, 692.872432448036307 ], [ 717.890948696521264, 669.028342548489604 ], [ 730.126731671288553, 642.988086473984595 ], [ 738.283920321133564, 629.811089424234979 ], [ 749.578489220918755, 618.202782499455679 ], [ 760.559320095710063, 609.104379774628683 ] ] ] } }, 17 | { "type": "Feature", "properties": { "id": null, "Z": 700 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 621.573375023352128, 909.351669693920826 ], [ 641.652608622970433, 931.940807493491434 ], [ 662.673056297570838, 957.981063567996443 ], [ 681.497337797212936, 981.197677417555042 ] ] ] } }, 18 | { "type": "Feature", "properties": { "id": null, "Z": 800 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ 680.242385697236841, 822.446236770572909 ], [ 693.419382746986344, 846.917802720107716 ], [ 707.223855846723836, 876.095439044553018 ], [ 718.832162771503249, 898.057100794135522 ], [ 732.636635871240742, 929.117165268545136 ], [ 746.127370945984353, 961.118443817936736 ], [ 756.794463795781553, 981.197677417555042 ] ] ] } } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /workshops/Orkahub2021/aux_func.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | import gempy as gp 4 | 5 | 6 | def plot_centered_grid(centered_grid, slice=None): 7 | 8 | a, b, c = centered_grid.kernel_centers, centered_grid.kernel_dxyz_left, \ 9 | centered_grid.kernel_dxyz_right 10 | tz = centered_grid.tz 11 | res = np.array(centered_grid.resolution) + 1 12 | if slice is None: 13 | slice = int(res[1]/2) 14 | 15 | fig = plt.figure(figsize=(13, 7)) 16 | ax = fig.add_subplot(111) 17 | 18 | if tz.shape[0] != 0: 19 | plt.quiver(a[:, 0].reshape(res)[slice, :, :].ravel(), 20 | a[:, 2].reshape(res)[:, slice, :].ravel(), 21 | np.zeros(231), 22 | tz.reshape(res)[slice, :, :].ravel(), label='$t_z$', alpha=.3 23 | ) 24 | 25 | plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 26 | a[:, 2].reshape(res)[:, slice, :].ravel(), 'o', alpha=.3, label='Centers') 27 | 28 | # plt.plot( 29 | # a[:, 0].reshape(res)[slice, :, :].ravel() - b[:, 0].reshape(res)[slice, :, :].ravel(), 30 | # a[:, 2].reshape(res)[:, slice, :].ravel(), '.', alpha=.3, label='Lefts') 31 | # 32 | # plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 33 | # a[:, 2].reshape(res)[:, slice, :].ravel() - b[:, 2].reshape(res)[:, slice, 34 | # :].ravel(), '.', alpha=.6, 35 | # label='Ups') 36 | # 37 | # plt.plot( 38 | # a[:, 0].reshape(res)[slice, :, :].ravel() + c[:, 0].reshape(res)[slice, :, :].ravel(), 39 | # a[:, 2].reshape(res)[:, slice, :].ravel(), '.', alpha=.3, label='Rights') 40 | # 41 | # plt.plot(a[:, 0].reshape(res)[slice, :, :].ravel(), 42 | # a[:, 2].reshape(res)[:, slice, :].ravel() + c[:, 2].reshape(res)[slice, :, 43 | # :].ravel(), '.', alpha=.3, 44 | # label='Downs') 45 | 46 | 47 | ax.set_xticks(a[:, 0].reshape(res)[slice, :, :].ravel() - 48 | b[:, 0].reshape(res)[slice, :, :].ravel()) 49 | 50 | # ax.set_xticks(a[:, 0].reshape(res)[slice, :, :].ravel() + 51 | # c[:, 0].reshape(res)[slice, :, :].ravel()) 52 | 53 | ax.set_yticks(a[:, 2].reshape(res)[:, slice, :].ravel() - 54 | b[:, 2].reshape(res)[:, slice, :].ravel()) 55 | 56 | plt.grid() 57 | 58 | # plt.xlim(-200, 200) 59 | # plt.ylim(-200, 0) 60 | plt.legend() 61 | # plt.show() 62 | return fig 63 | 64 | 65 | def plot_grav_inter(geo_model): 66 | # Creating new figure 67 | p_grav = gp.plot_2d(geo_model, direction=None, show=False, figsize=(6, 9)) 68 | 69 | # Adding section for model 70 | ax2 = p_grav.add_section(cell_number=1, direction='y', ax_pos=211) 71 | 72 | # Adding section for gravity 73 | ax3 = p_grav.add_section(ax_pos=414) 74 | 75 | # Plotting model in section 76 | p_grav.plot_data(ax2, cell_number=5, legend=None) 77 | p_grav.plot_lith(ax2, cell_number=5) 78 | p_grav.plot_contacts(ax2, cell_number=5) 79 | ax2.plot(400, 0, '^', markersize=40, c='red') 80 | 81 | # Plotting initial values of the gravity axes 82 | target_grav = -81 83 | ax3.tick_params(bottom=False) 84 | ax3.spines['top'].set_visible(False) 85 | ax3.spines['bottom'].set_visible(False) 86 | ax3.spines['right'].set_visible(False) 87 | ax3.plot(0, target_grav, 'X', label='Target Gravity', markersize=4, c='red') 88 | ax3.plot(1, geo_model.solutions.fw_gravity, 'o', label='Current Gravity', markersize=4, 89 | c='blue') 90 | ax3.set_ylabel('grav') 91 | 92 | # We store the original values of z for the surface 3 93 | Z_ori = geo_model.surface_points.df.loc[[5, 6, 7], 'Z'].copy() 94 | # init a list to store grav 95 | grav_ = [] 96 | 97 | # Function that modify the model, compute it and plot 98 | def gravity_invert(dz): 99 | new_z = Z_ori + dz 100 | geo_model.modify_surface_points(indices=[5, 6, 7], Z=new_z) 101 | gp.compute_model(geo_model) 102 | grav_.append(geo_model.solutions.fw_gravity[0]) 103 | 104 | p_grav.remove(ax2) 105 | p_grav.plot_data(ax2, cell_number=5) 106 | p_grav.plot_lith(ax2, cell_number=5) 107 | p_grav.plot_contacts(ax2, cell_number=5) 108 | ax3.plot(np.arange(len(grav_)) + 1, grav_, 'o', label='Current Gravity', markersize=4, 109 | c='blue') 110 | ax3.set_xlim(-1, len(grav_) + 1) 111 | 112 | return gravity_invert -------------------------------------------------------------------------------- /workshops/Transform2022/Readme.md: -------------------------------------------------------------------------------- 1 | # What is MCMC 2 | 3 | A tutorial for Transform 2022. 4 | 5 | Starting from a simple inference problem, we show PyMC3s capabilities in pythonic Bayesian Inference, step-by-step extending the (spatial) dimensions, till working with a simple geological model. 6 | 7 | Contributors: 8 | * [Miguel de la Varga](https://github.com/Leguark/) 9 | * [Jan Niederau](https://github.com/Japhiolite) 10 | 11 | 12 | ![image](https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/master/workshops/Transform2022/images/Models-01_white_bckgrnd.png) -------------------------------------------------------------------------------- /workshops/Transform2022/environment_gempy_mcmc_windows.yml: -------------------------------------------------------------------------------- 1 | name: gempy_mcmc_py38 2 | 3 | channels: 4 | - conda-forge 5 | - defaults 6 | dependencies: 7 | - python=3.8 8 | - numpy 9 | - scipy 10 | - mkl-service 11 | - libpython 12 | - m2w64-toolchain 13 | - pytest 14 | - git 15 | - Theano 16 | - pygpu 17 | - matplotlib~=3.2 18 | - seaborn>=0.9 19 | - networkx 20 | - scikit-image>=0.17.2 21 | - pyvista=0.24 22 | - iPython 23 | - jupyter 24 | - notebook 25 | - pymc3=3.8 26 | - arviz=0.10.0 27 | - python-graphviz 28 | - pyevtk 29 | - requests 30 | - pip 31 | - pip: 32 | - qgrid==1.3.0 33 | - mplstereonet 34 | - pyqrcode 35 | - pyqt5 36 | - gempy 37 | - welly==0.4.8 38 | - wellpathpy 39 | - striplog 40 | - subsurface 41 | - pandas==1.2.2 42 | -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_10.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_11.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_12.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_13.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_14.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_15.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_16.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_17.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_18.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_19.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_20.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_21.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_22.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_23.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_24.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_25.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_26.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_27.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_28.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK/post_frame_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK/post_frame_29.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_10.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_12.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_14.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_16.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_18.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_20.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_22.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_24.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_26.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_28.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_30.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_32.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_34.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_36.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_38.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_40.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_42.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_44.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_46.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_48.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_50.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_52.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_54.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_56.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_58.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_60.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_62.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_64.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_66.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_68.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_70.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_72.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_74.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_76.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_78.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_80.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_82.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_84.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_86.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_88.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_90.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_92.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_94.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_96.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK2/post_frame_98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK2/post_frame_98.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_10.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_100.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_110.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_120.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_130.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_130.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_140.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_150.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_160.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_170.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_180.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_190.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_190.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_20.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_200.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_210.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_210.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_220.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_220.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_230.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_230.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_240.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_250.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_260.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_260.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_270.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_270.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_280.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_290.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_290.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_30.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_300.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_310.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_320.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_320.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_330.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_330.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_340.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_340.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_350.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_350.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_360.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_370.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_370.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_380.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_380.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_390.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_390.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_40.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_400.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_410.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_410.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_420.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_420.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_430.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_430.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_440.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_440.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_450.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_450.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_460.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_460.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_470.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_470.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_480.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_480.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_490.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_490.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_50.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_500.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_510.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_510.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_520.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_520.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_530.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_530.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_540.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_540.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_550.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_550.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_560.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_560.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_570.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_570.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_580.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_580.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_590.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_590.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_60.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_600.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_610.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_610.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_620.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_620.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_630.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_630.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_640.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_650.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_650.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_660.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_660.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_670.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_670.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_680.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_680.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_690.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_690.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_70.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_700.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_700.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_710.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_710.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_720.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_720.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_730.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_730.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_740.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_740.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_750.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_750.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_760.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_760.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_770.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_770.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_780.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_780.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_790.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_790.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_80.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_800.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_800.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_810.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_810.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_820.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_820.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_830.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_830.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_840.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_840.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_850.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_850.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_860.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_860.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_870.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_870.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_880.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_880.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_890.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_890.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_90.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_900.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_900.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_910.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_910.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_920.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_920.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_930.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_930.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_940.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_940.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_950.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_950.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_960.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_960.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_970.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_970.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_980.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_980.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK3/post_frame_990.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK3/post_frame_990.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_1.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_10.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_11.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_12.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_13.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_14.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_15.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_16.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_17.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_18.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_19.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_2.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_20.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_21.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_22.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_23.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_24.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_25.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_26.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_27.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_28.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_29.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_3.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_4.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_5.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_6.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_7.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_8.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/BAK4/frame_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/BAK4/frame_9.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/Models-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/Models-01.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/Models-01_white_bckgrnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/Models-01_white_bckgrnd.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/gempynigma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/gempynigma.png -------------------------------------------------------------------------------- /workshops/Transform2022/images/joyplot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/joyplot.gif -------------------------------------------------------------------------------- /workshops/Transform2022/images/joyplot_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/joyplot_2.gif -------------------------------------------------------------------------------- /workshops/Transform2022/images/sampling.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/sampling.gif -------------------------------------------------------------------------------- /workshops/Transform2022/images/sampling_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/images/sampling_2.gif -------------------------------------------------------------------------------- /workshops/Transform2022/posterior_many_iterations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgre-aachen/gempy_workshops/5db82ef6b28acca6354fa7c29b9a96c425c94ec6/workshops/Transform2022/posterior_many_iterations.png --------------------------------------------------------------------------------