├── .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 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
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 | ""
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 | ""
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 | "\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 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
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 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
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 |
209 |
210 |
211 |
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 | 
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------