.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\06-plotting\07-plot_on_geometries.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_06-plotting_07-plot_on_geometries.py: .. _plot_on_geometries: Plot on geometry elements ~~~~~~~~~~~~~~~~~~~~~~~~~ This example shows how to plot a certain field in different geometric objects such as points, lines and planes. .. GENERATED FROM PYTHON SOURCE LINES 35-38 Imports and load model ~~~~~~~~~~~~~~~~~~~~~~ Import modules and set context as Premium. .. GENERATED FROM PYTHON SOURCE LINES 38-48 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from ansys.dpf import core as dpf from ansys.dpf.core import examples, operators as ops from ansys.dpf.core.fields_factory import field_from_array from ansys.dpf.core.geometry import Line, Plane, Points from ansys.dpf.core.plotter import DpfPlotter .. GENERATED FROM PYTHON SOURCE LINES 49-50 Load model from examples and print information: .. GENERATED FROM PYTHON SOURCE LINES 50-53 .. code-block:: Python model = dpf.Model(examples.find_static_rst()) print(model) .. rst-class:: sphx-glr-script-out .. code-block:: none DPF Model ------------------------------ Static analysis Unit system: MKS: m, kg, N, s, V, A, degC Physics Type: Mechanical Available results: - displacement: Nodal Displacement - reaction_force: Nodal Force - stress: ElementalNodal Stress - elemental_volume: Elemental Volume - stiffness_matrix_energy: Elemental Energy-stiffness matrix - artificial_hourglass_energy: Elemental Hourglass Energy - kinetic_energy: Elemental Kinetic Energy - co_energy: Elemental co-energy - incremental_energy: Elemental incremental energy - thermal_dissipation_energy: Elemental thermal dissipation energy - elastic_strain: ElementalNodal Strain - elastic_strain_eqv: ElementalNodal Strain eqv - element_orientations: ElementalNodal Element Euler Angles - structural_temperature: ElementalNodal Structural temperature ------------------------------ DPF Meshed Region: 81 nodes 8 elements Unit: m With solid (3D) elements ------------------------------ DPF Time/Freq Support: Number of sets: 1 Cumulative Time (s) LoadStep Substep 1 1.000000 1 1 .. GENERATED FROM PYTHON SOURCE LINES 54-57 Load model's mesh and define camera position (obtained with ``cpos=pl.show_figure(return_cpos=True)``). This will be used later for plotting. .. GENERATED FROM PYTHON SOURCE LINES 57-64 .. code-block:: Python mesh = model.metadata.meshed_region cpos = [ (0.07635352356975698, 0.1200500294271993, 0.041072502929096165), (0.015, 0.045, 0.015), (-0.16771051558419411, -0.1983722658245161, 0.9656715938216944), ] .. GENERATED FROM PYTHON SOURCE LINES 65-68 Create points, line and plane objects ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create 8 points in the corners and one in the middle: .. GENERATED FROM PYTHON SOURCE LINES 68-82 .. code-block:: Python points = Points( [ [0.0, 0.03, 0.0], [0.0, 0.03, 0.03], [0.0, 0.06, 0.00], [0.0, 0.06, 0.03], [0.03, 0.03, 0.0], [0.03, 0.03, 0.03], [0.03, 0.06, 0.00], [0.03, 0.06, 0.03], [0.015, 0.045, 0.015], ] ) .. GENERATED FROM PYTHON SOURCE LINES 83-84 Show points together with the mesh .. GENERATED FROM PYTHON SOURCE LINES 84-86 .. code-block:: Python points.plot(mesh, cpos=cpos, point_size=15, color="blue") .. image-sg:: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_001.png :alt: 07 plot on geometries :srcset: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 87-88 Create line passing through the geometry's diagonal: .. GENERATED FROM PYTHON SOURCE LINES 88-90 .. code-block:: Python line = Line([[0.03, 0.03, 0.05], [0.0, 0.06, 0.0]], n_points=50) .. GENERATED FROM PYTHON SOURCE LINES 91-92 Show line with the 3D mesh .. GENERATED FROM PYTHON SOURCE LINES 92-94 .. code-block:: Python line.plot(mesh, cpos=cpos, color="black") .. image-sg:: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_002.png :alt: 07 plot on geometries :srcset: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 95-96 Create vertical plane passing through the mid point: .. GENERATED FROM PYTHON SOURCE LINES 96-105 .. code-block:: Python plane = Plane( [0.015, 0.045, 0.015], [1, 1, 0], width=0.03, height=0.03, n_cells_x=10, n_cells_y=10, ) .. GENERATED FROM PYTHON SOURCE LINES 106-107 Show plane with the 3D mesh .. GENERATED FROM PYTHON SOURCE LINES 107-109 .. code-block:: Python plane.plot(mesh, cpos=cpos, color="red") .. image-sg:: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_003.png :alt: 07 plot on geometries :srcset: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 110-113 Map displacement field to geometry objects ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Get displacement field from model: .. GENERATED FROM PYTHON SOURCE LINES 113-115 .. code-block:: Python disp = model.results.displacement .. GENERATED FROM PYTHON SOURCE LINES 116-117 Map displacement to points in Points object: .. GENERATED FROM PYTHON SOURCE LINES 117-126 .. code-block:: Python mapping_operator = ops.mapping.on_coordinates( fields_container=disp, coordinates=field_from_array(points.coordinates.data), create_support=True, mesh=mesh, ) fields_mapped = mapping_operator.outputs.fields_container() field_points = fields_mapped[0] .. GENERATED FROM PYTHON SOURCE LINES 127-128 Map displacement to points in Line object: .. GENERATED FROM PYTHON SOURCE LINES 128-137 .. code-block:: Python mapping_operator = ops.mapping.on_coordinates( fields_container=disp, coordinates=line.mesh.nodes.coordinates_field, create_support=True, mesh=mesh, ) fields_mapped = mapping_operator.outputs.fields_container() field_line = fields_mapped[0] .. GENERATED FROM PYTHON SOURCE LINES 138-139 Map displacement to points in Plane object: .. GENERATED FROM PYTHON SOURCE LINES 139-148 .. code-block:: Python mapping_operator = ops.mapping.on_coordinates( fields_container=disp, coordinates=plane.mesh.nodes.coordinates_field, create_support=True, mesh=mesh, ) fields_mapped = mapping_operator.outputs.fields_container() field_plane = fields_mapped[0] .. GENERATED FROM PYTHON SOURCE LINES 149-152 Plotting displacement field on the geometry objects ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3D plot of Points and display mesh: .. GENERATED FROM PYTHON SOURCE LINES 152-157 .. code-block:: Python pl = DpfPlotter() pl.add_field(field_points, render_points_as_spheres=True, point_size=10) pl.add_mesh(mesh, style="surface", show_edges=True, color="w", opacity=0.3) pl.show_figure(show_axes=True, cpos=cpos) .. image-sg:: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_004.png :alt: 07 plot on geometries :srcset: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_004.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none (None, ) .. GENERATED FROM PYTHON SOURCE LINES 158-160 3D plot of Line and mesh. Note that the line is only displayed if some points are found inside the mesh: .. GENERATED FROM PYTHON SOURCE LINES 160-166 .. code-block:: Python pl = DpfPlotter() if not len(field_line) == 0: pl.add_field(field_line, line.mesh, line_width=5) pl.add_mesh(mesh, style="surface", show_edges=True, color="w", opacity=0.3) pl.show_figure(show_axes=True, cpos=cpos) .. image-sg:: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_005.png :alt: 07 plot on geometries :srcset: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_005.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none (None, ) .. GENERATED FROM PYTHON SOURCE LINES 167-169 Plot Plane and display mesh in background. Note that the plane is only displayed if some points are found inside the mesh: .. GENERATED FROM PYTHON SOURCE LINES 169-175 .. code-block:: Python pl = DpfPlotter() if not len(field_plane) == 0: pl.add_field(field_plane, plane.mesh, show_edges=False) pl.add_mesh(mesh, style="surface", show_edges=True, color="w", opacity=0.3) pl.show_figure(show_axes=True, cpos=cpos) .. image-sg:: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_006.png :alt: 07 plot on geometries :srcset: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_006.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none (None, ) .. GENERATED FROM PYTHON SOURCE LINES 176-177 2D plot (graph) of Line (line length vs displacement field): .. GENERATED FROM PYTHON SOURCE LINES 177-183 .. code-block:: Python norm_disp = [np.linalg.norm(field_line.data[i]) for i in range(len(field_line.data))] path = line.path[field_line.scoping.ids - 1] plt.plot(path, norm_disp) plt.xlabel("Line length") plt.ylabel("Displacement norm field") plt.show() .. image-sg:: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_007.png :alt: 07 plot on geometries :srcset: /examples/06-plotting/images/sphx_glr_07-plot_on_geometries_007.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 12.166 seconds) .. _sphx_glr_download_examples_06-plotting_07-plot_on_geometries.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 07-plot_on_geometries.ipynb <07-plot_on_geometries.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 07-plot_on_geometries.py <07-plot_on_geometries.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: 07-plot_on_geometries.zip <07-plot_on_geometries.zip>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_