.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\00-basic\09-results_over_space_subset.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_00-basic_09-results_over_space_subset.py: .. _ref_results_over_space: Scope results over custom space domains ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The :class:`Result ` class, which are instances created by the :class:`Model `, give access to helpers for requesting results on specific mesh and time scopings. With these helpers, working on a spatial subset of the model is straightforward. In this example, different ways to choose the spatial subset to evaluate a result are exposed Import necessary modules: .. GENERATED FROM PYTHON SOURCE LINES 17-21 .. code-block:: default from ansys.dpf import core as dpf from ansys.dpf.core import examples .. GENERATED FROM PYTHON SOURCE LINES 22-23 Create a model object to establish a connection with an example result file: .. GENERATED FROM PYTHON SOURCE LINES 23-26 .. code-block:: default model = dpf.Model(examples.download_all_kinds_of_complexity()) 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 - element_nodal_forces: ElementalNodal Element nodal Forces - 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 - thermal_strain: ElementalNodal Thermal Strains - thermal_strains_eqv: ElementalNodal Thermal Strains eqv - swelling_strains: ElementalNodal Swelling Strains - structural_temperature: ElementalNodal Temperature ------------------------------ DPF Meshed Region: 15129 nodes 10292 elements Unit: m With solid (3D) elements, shell (2D) elements, shell (3D) elements, beam (1D) elements ------------------------------ DPF Time/Freq Support: Number of sets: 1 Cumulative Time (s) LoadStep Substep 1 1.000000 1 1 .. GENERATED FROM PYTHON SOURCE LINES 27-31 Choose specific nodes ~~~~~~~~~~~~~~~~~~~~~ If some nodes or elements are specifically of interest, a nodal ``mesh_scoping`` can be connected. .. GENERATED FROM PYTHON SOURCE LINES 31-35 .. code-block:: default nodes_scoping = dpf.mesh_scoping_factory.nodal_scoping(range(400, 500)) print(nodes_scoping) .. rst-class:: sphx-glr-script-out .. code-block:: none DPF Scoping: with Nodal location and 100 entities .. GENERATED FROM PYTHON SOURCE LINES 36-37 or .. GENERATED FROM PYTHON SOURCE LINES 37-40 .. code-block:: default nodes_scoping = dpf.Scoping(ids=range(400, 500), location=dpf.locations.nodal) print(nodes_scoping) .. rst-class:: sphx-glr-script-out .. code-block:: none DPF Scoping: with Nodal location and 100 entities .. GENERATED FROM PYTHON SOURCE LINES 41-46 .. code-block:: default disp = model.results.displacement.on_mesh_scoping(nodes_scoping).eval() model.metadata.meshed_region.plot(disp) .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_001.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 47-48 Equivalent to: .. GENERATED FROM PYTHON SOURCE LINES 48-52 .. code-block:: default disp_op = model.results.displacement() disp_op.inputs.mesh_scoping(nodes_scoping) disp = disp_op.outputs.fields_container() .. GENERATED FROM PYTHON SOURCE LINES 53-54 Equivalent to: .. GENERATED FROM PYTHON SOURCE LINES 54-56 .. code-block:: default disp = model.results.displacement(mesh_scoping=nodes_scoping).eval() .. GENERATED FROM PYTHON SOURCE LINES 57-61 Choose specific elements ~~~~~~~~~~~~~~~~~~~~~~~~ If some elements are specifically of interest, an elemental ``mesh_scoping`` can be connected. .. GENERATED FROM PYTHON SOURCE LINES 61-73 .. code-block:: default elements_scoping = dpf.mesh_scoping_factory.elemental_scoping(range(500, 5000)) print(elements_scoping) # or elements_scoping = dpf.Scoping(ids=range(500, 5000), location=dpf.locations.elemental) print(elements_scoping) volume = model.results.elemental_volume.on_mesh_scoping(elements_scoping).eval() model.metadata.meshed_region.plot(volume) .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_002.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none DPF Scoping: with Elemental location and 4500 entities DPF Scoping: with Elemental location and 4500 entities .. GENERATED FROM PYTHON SOURCE LINES 74-75 Equivalent to: .. GENERATED FROM PYTHON SOURCE LINES 75-79 .. code-block:: default volume_op = model.results.elemental_volume() volume_op.inputs.mesh_scoping(elements_scoping) volume = volume_op.outputs.fields_container() .. GENERATED FROM PYTHON SOURCE LINES 80-81 Equivalent to: .. GENERATED FROM PYTHON SOURCE LINES 81-83 .. code-block:: default volume = model.results.elemental_volume(mesh_scoping=elements_scoping).eval() .. GENERATED FROM PYTHON SOURCE LINES 84-90 Choose specific named selections ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Named selections (also known as components) can be selected to create a spatial domain for a result. A ``mesh_scoping`` can be created with a named selection. To know the available named selections in the result file, use: .. GENERATED FROM PYTHON SOURCE LINES 90-93 .. code-block:: default print(model.metadata.available_named_selections) .. rst-class:: sphx-glr-script-out .. code-block:: none ['_CM82', '_CM86UX_XP', '_DISPNONZEROUX', '_DISPZEROUZ', '_ELMISC', '_FIXEDSU'] .. GENERATED FROM PYTHON SOURCE LINES 94-95 Get the ``mesh_scoping`` of a named selection: .. GENERATED FROM PYTHON SOURCE LINES 95-99 .. code-block:: default mesh_scoping = model.metadata.named_selection("_CM82") print(mesh_scoping) .. rst-class:: sphx-glr-script-out .. code-block:: none DPF Scoping: with Elemental location and 8709 entities .. GENERATED FROM PYTHON SOURCE LINES 100-101 Connect this ``mesh_scoping`` to the result provider .. GENERATED FROM PYTHON SOURCE LINES 101-104 .. code-block:: default volume = model.results.elemental_volume(mesh_scoping=mesh_scoping).eval() model.metadata.meshed_region.plot(volume) .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_003.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 105-106 Equivalent to: .. GENERATED FROM PYTHON SOURCE LINES 106-108 .. code-block:: default volume = model.results.elemental_volume.on_named_selection("_CM82") .. GENERATED FROM PYTHON SOURCE LINES 109-110 Equivalent to: .. GENERATED FROM PYTHON SOURCE LINES 110-117 .. code-block:: default ns_provider = dpf.operators.scoping.on_named_selection( requested_location=dpf.locations.elemental, named_selection_name="_CM82", data_sources=model, ) volume = model.results.elemental_volume(mesh_scoping=ns_provider).eval() .. GENERATED FROM PYTHON SOURCE LINES 118-128 Split results depending on spatial properties ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For many applications, it can be useful to request results on different subsets of the model. The ``ScopingsContainer`` entity contains different ``Scopings`` and can be connected to any result provider to get results split with the same partition as the input ``ScopingsContainer``. For example, some application require to get results split by body, by material, by element types. It might also be necessary to get results by element shape types, such as shell, solid, or beam, to average data properly. Customers might also require split by entirely custom spatial domains. .. GENERATED FROM PYTHON SOURCE LINES 131-132 Split results by element shapes .. GENERATED FROM PYTHON SOURCE LINES 132-141 .. code-block:: default stress = model.results.stress.split_by_shape.on_location(dpf.locations.nodal).eval() print(stress) shell_stresses = stress.shell_fields() model.metadata.meshed_region.plot(shell_stresses[0]) solid_stresses = stress.solid_fields() model.metadata.meshed_region.plot(solid_stresses[0]) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_004.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_004.png :class: sphx-glr-multi-img * .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_005.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_005.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none DPF stress(s)Fields Container with 4 field(s) defined on labels: elshape time with: - field 0 {elshape: 0, time: 1} with Nodal location, 6 components and 240 entities. - field 1 {elshape: 1, time: 1} with Nodal location, 6 components and 14826 entities. - field 2 {elshape: 2, time: 1} with Nodal location, 6 components and 0 entities. - field 3 {elshape: 3, time: 1} with Nodal location, 6 components and 0 entities. .. GENERATED FROM PYTHON SOURCE LINES 142-143 Split results by bodies .. GENERATED FROM PYTHON SOURCE LINES 143-152 .. code-block:: default stress = model.results.stress.split_by_body.on_location(dpf.locations.nodal).eval() print(stress) for body_id in stress.get_mat_scoping().ids: fields = stress.get_fields_by_mat_id(body_id) for field in fields: if field.elementary_data_count > 0: model.metadata.meshed_region.plot(field) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_006.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_006.png :class: sphx-glr-multi-img * .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_007.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_007.png :class: sphx-glr-multi-img * .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_008.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_008.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none DPF stress(s)Fields Container with 3 field(s) defined on labels: elshape mat time with: - field 0 {elshape: 2, mat: 1, time: 1} with Nodal location, 6 components and 1856 entities. - field 1 {elshape: 1, mat: 1, time: 1} with Nodal location, 6 components and 240 entities. - field 2 {elshape: 2, mat: 2, time: 1} with Nodal location, 6 components and 12970 entities. .. GENERATED FROM PYTHON SOURCE LINES 153-154 Create a custom spatial split .. GENERATED FROM PYTHON SOURCE LINES 154-165 .. code-block:: default scopings_container = dpf.ScopingsContainer() scopings_container.add_label("custom_split") scopings_container.add_scoping( {"custom_split": 1}, dpf.Scoping(ids=range(100, 500), location=dpf.locations.elemental), ) scopings_container.add_scoping( {"custom_split": 2}, dpf.Scoping(ids=range(500, 5000), location=dpf.locations.elemental), ) .. GENERATED FROM PYTHON SOURCE LINES 166-173 .. code-block:: default elemental_stress = model.results.stress.on_location(dpf.locations.elemental)( mesh_scoping=scopings_container ).eval() print(elemental_stress) for field in elemental_stress: model.metadata.meshed_region.plot(field) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_009.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_009.png :class: sphx-glr-multi-img * .. image-sg:: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_010.png :alt: 09 results over space subset :srcset: /examples/00-basic/images/sphx_glr_09-results_over_space_subset_010.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none DPF stress(s)Fields Container with 2 field(s) defined on labels: custom_split time with: - field 0 {custom_split: 1, time: 1} with Elemental location, 6 components and 400 entities. - field 1 {custom_split: 2, time: 1} with Elemental location, 6 components and 4500 entities. .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 10.692 seconds) .. _sphx_glr_download_examples_00-basic_09-results_over_space_subset.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 09-results_over_space_subset.py <09-results_over_space_subset.py>` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 09-results_over_space_subset.ipynb <09-results_over_space_subset.ipynb>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_