.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/01_random_field/05_mesh_ensemble.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_01_random_field_05_mesh_ensemble.py: Generating Fields on Meshes --------------------------- GSTools provides an interface for meshes, to support `meshio `_ and `ogs5py `_ meshes. When using `meshio`, the generated fields will be stored immediately in the mesh container. There are two options to generate a field on a given mesh: - `points="points"` will generate a field on the mesh points - `points="centroids"` will generate a field on the cell centroids .. GENERATED FROM PYTHON SOURCE LINES 17-30 .. code-block:: Python import matplotlib.pyplot as plt import matplotlib.tri as tri import meshio import numpy as np import gstools as gs # read a triangulated hexagon points = np.load("hexagon_points.npy") cells = np.load("hexagon_cells.npy") mesh = meshio.Mesh(points, {"triangle": cells}) .. GENERATED FROM PYTHON SOURCE LINES 31-33 Now we prepare the SRF class as always. We will generate an ensemble of fields on the generated mesh. .. GENERATED FROM PYTHON SOURCE LINES 33-40 .. code-block:: Python # number of fields fields_no = 12 # model setup model = gs.Gaussian(dim=2, len_scale=0.5) srf = gs.SRF(model, mean=1) .. GENERATED FROM PYTHON SOURCE LINES 41-44 To generate fields on a mesh, we provide a separate method: :any:`SRF.mesh`. First we generate fields on the mesh-centroids controlled by a seed. You can specify the field name by the keyword `name`. .. GENERATED FROM PYTHON SOURCE LINES 44-48 .. code-block:: Python for i in range(fields_no): srf.mesh(mesh, points="centroids", name=f"c-field-{i}", seed=i) .. GENERATED FROM PYTHON SOURCE LINES 49-50 Now we generate fields on the mesh-points again controlled by a seed. .. GENERATED FROM PYTHON SOURCE LINES 50-54 .. code-block:: Python for i in range(fields_no): srf.mesh(mesh, points="points", name=f"p-field-{i}", seed=i) .. GENERATED FROM PYTHON SOURCE LINES 55-57 To get an impression we now want to plot the generated fields. Luckily, matplotlib supports triangular meshes. .. GENERATED FROM PYTHON SOURCE LINES 57-63 .. code-block:: Python triangulation = tri.Triangulation(points[:, 0], points[:, 1], cells) # figure setup cols = 4 rows = int(np.ceil(fields_no / cols)) .. GENERATED FROM PYTHON SOURCE LINES 64-66 Cell data can be easily visualized with matplotlibs `tripcolor`. To highlight the cell structure, we use `triplot`. .. GENERATED FROM PYTHON SOURCE LINES 66-75 .. code-block:: Python fig = plt.figure(figsize=[2 * cols, 2 * rows]) for i, field in enumerate(mesh.cell_data, 1): ax = fig.add_subplot(rows, cols, i) ax.tripcolor(triangulation, mesh.cell_data[field][0]) ax.triplot(triangulation, linewidth=0.5, color="k") ax.set_aspect("equal") fig.tight_layout() .. image-sg:: /examples/01_random_field/images/sphx_glr_05_mesh_ensemble_001.png :alt: 05 mesh ensemble :srcset: /examples/01_random_field/images/sphx_glr_05_mesh_ensemble_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 76-77 Point data is plotted via `tricontourf`. .. GENERATED FROM PYTHON SOURCE LINES 77-87 .. code-block:: Python fig = plt.figure(figsize=[2 * cols, 2 * rows]) for i, field in enumerate(mesh.point_data, 1): ax = fig.add_subplot(rows, cols, i) ax.tricontourf(triangulation, mesh.point_data[field]) ax.triplot(triangulation, linewidth=0.5, color="k") ax.set_aspect("equal") fig.tight_layout() plt.show() .. image-sg:: /examples/01_random_field/images/sphx_glr_05_mesh_ensemble_002.png :alt: 05 mesh ensemble :srcset: /examples/01_random_field/images/sphx_glr_05_mesh_ensemble_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 88-90 Last but not least, `meshio` can be used for what is does best: Exporting. Tada! .. GENERATED FROM PYTHON SOURCE LINES 90-92 .. code-block:: Python mesh.write("mesh_ensemble.vtk") .. rst-class:: sphx-glr-script-out .. code-block:: none Warning: VTK requires 3D points, but 2D points given. Appending 0 third component. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.225 seconds) .. _sphx_glr_download_examples_01_random_field_05_mesh_ensemble.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 05_mesh_ensemble.ipynb <05_mesh_ensemble.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 05_mesh_ensemble.py <05_mesh_ensemble.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: 05_mesh_ensemble.zip <05_mesh_ensemble.zip>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_