.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/02-Performance-Improvements/01-mesh-external-layer.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_02-Performance-Improvements_01-mesh-external-layer.py: .. _ref_mesh_external_layer_example: Reduce model size by using the mesh external layer for result and mesh extraction ================================================================================= This example shows postprocessing on a mesh external layer for a static analysis. The external layer is the layer of solid elements with at least one facet facing the outside of the geometry. This feature, available for all types of mechanical simulation, allows you to reduce the size of both the mesh and the extracted data to improve processing performance. Because larger stresses and strains are usually located on the skin of a model, computing the results on the external layer provides equivalent maximum values in most cases. .. GENERATED FROM PYTHON SOURCE LINES 39-43 Perform required imports ------------------------ Perform required imports. This example uses a supplied file that you can get using the ``examples`` module. .. GENERATED FROM PYTHON SOURCE LINES 43-47 .. code-block:: Python from ansys.dpf import post from ansys.dpf.post import examples .. GENERATED FROM PYTHON SOURCE LINES 48-54 Get ``Simulation`` object ------------------------- Get the ``Simulation`` object that allows access to the result. The ``Simulation`` object must be instantiated with the path for the result file. For example, ``"C:/Users/user/my_result.rst"`` on Windows or ``"/home/user/my_result.rst"`` on Linux. .. GENERATED FROM PYTHON SOURCE LINES 54-65 .. code-block:: Python example_path = examples.download_crankshaft() # to automatically detect the simulation type, use: simulation = post.load_simulation(example_path) # to enable auto-completion, use the equivalent: simulation = post.StaticMechanicalSimulation(example_path) # print the simulation to get an overview of what's available print(simulation) .. rst-class:: sphx-glr-script-out .. code-block:: none Static Mechanical Simulation. Data Sources ------------------------------ /opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/site-packages/ansys/dpf/core/examples/result_files/crankshaft/crankshaft.rst DPF Model ------------------------------ Static analysis Unit system: MKS: m, kg, N, s, V, A, degC Physics Type: Mechanical Available results: - displacement: Nodal Displacement - velocity: Nodal Velocity - acceleration: Nodal Acceleration - reaction_force: Nodal Force - stress: ElementalNodal Stress - elemental_volume: Elemental Volume - stiffness_matrix_energy: Elemental Energy-stiffness matrix - artificial_hourglass_energy: Elemental Hourglass Energy - thermal_dissipation_energy: Elemental thermal dissipation energy - kinetic_energy: Elemental Kinetic Energy - co_energy: Elemental co-energy - incremental_energy: Elemental incremental energy - elastic_strain: ElementalNodal Strain - element_orientations: ElementalNodal Element Euler Angles - structural_temperature: ElementalNodal Structural temperature ------------------------------ DPF Meshed Region: 69762 nodes 39315 elements Unit: m With solid (3D) elements ------------------------------ DPF Time/Freq Support: Number of sets: 3 Cumulative Time (s) LoadStep Substep 1 1.000000 1 1 2 2.000000 1 2 3 3.000000 1 3 .. GENERATED FROM PYTHON SOURCE LINES 66-69 Extract displacement data ------------------------- Extract displacement data on the external layer. .. GENERATED FROM PYTHON SOURCE LINES 69-80 .. code-block:: Python displacement_ext = simulation.displacement( external_layer=True ) # default is external_layer=False displacement_ext.plot() print( f"number of nodes with external_layer=True: {len(displacement_ext.index.mesh_index)}" ) print(f"number of nodes with external_layer=False: {len(simulation.mesh.node_ids)}") .. image-sg:: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_001.png :alt: 01 mesh external layer :srcset: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none number of nodes with external_layer=True: 64079 number of nodes with external_layer=False: 69762 .. GENERATED FROM PYTHON SOURCE LINES 81-86 Extract stress and strain data ------------------------------ Extract stress and elastic strain data on the external layer. You can easily compute averages and invariants on the external layer because the connectivity of the external layer elements remains unchanged. .. GENERATED FROM PYTHON SOURCE LINES 86-104 .. code-block:: Python elemental_stress_ext = simulation.stress_principal_elemental( components=[1], external_layer=True ) elemental_stress_ext.plot() print( f"number of elements with external_layer=True: {len(elemental_stress_ext.index.mesh_index)}" ) print( f"number of elements with external_layer=False: {len(simulation.mesh.element_ids)}" ) elastic_strain_eqv_ext = simulation.elastic_strain_eqv_von_mises_nodal( external_layer=True ) elastic_strain_eqv_ext.plot() .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_002.png :alt: 01 mesh external layer :srcset: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_002.png :class: sphx-glr-multi-img * .. image-sg:: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_003.png :alt: 01 mesh external layer :srcset: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_003.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none number of elements with external_layer=True: 31374 number of elements with external_layer=False: 39315 .. GENERATED FROM PYTHON SOURCE LINES 105-107 Extract external layer on a selection of elements ------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 107-115 .. code-block:: Python all_elements = simulation.mesh.element_ids elements = [] for i in range(0, int(all_elements.size / 2)): elements.append(all_elements[i]) elemental_stress_ext = simulation.stress_principal_elemental(external_layer=elements) elemental_stress_ext.plot() .. image-sg:: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_004.png :alt: 01 mesh external layer :srcset: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 116-118 Extract external layer on a selection of elements for nodal results ------------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 118-124 .. code-block:: Python elastic_strain_eqv_ext = simulation.elastic_strain_eqv_von_mises_nodal( external_layer=elements ) elastic_strain_eqv_ext.plot() .. image-sg:: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_005.png :alt: 01 mesh external layer :srcset: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 125-127 Extract external layer on a selection of elements and scope results ------------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 127-135 .. code-block:: Python sub_elements = [] for i in range(0, int(len(elements) / 2)): sub_elements.append(elements[i]) elemental_stress_ext = simulation.stress_principal_elemental( external_layer=elements, element_ids=sub_elements ) elemental_stress_ext.plot() .. image-sg:: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_006.png :alt: 01 mesh external layer :srcset: /examples/02-Performance-Improvements/images/sphx_glr_01-mesh-external-layer_006.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 8.074 seconds) .. _sphx_glr_download_examples_02-Performance-Improvements_01-mesh-external-layer.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 01-mesh-external-layer.ipynb <01-mesh-external-layer.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 01-mesh-external-layer.py <01-mesh-external-layer.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: 01-mesh-external-layer.zip <01-mesh-external-layer.zip>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_