The Data Processing Framework (DPF) provides numerical simulation users and engineers with a toolbox for accessing and transforming simulation data. With DPF, you can perform complex preprocessing or postprocessing of large amounts of simulation data within a simulation workflow.
DPF is an independent, physics-agnostic tool that you can plug into many apps for both data input and data output, including visualization and result plots. It can access data from solver result files and other neutral formats, such as CSV, HDF5, and VTK files.
Using the many DPF operators that are available, you can manipulate and transform this data. You can also chain operators together to create simple or complex data-processing workflows that you can reuse for repeated or future evaluations.
The data in DPF is defined based on physics-agnostic mathematical quantities described in self-sufficient entities called fields. This allows DPF to be a modular and easy-to-use tool with a large range of capabilities.
.. image:: https://github.com/ansys/pydpf-core/raw/main/docs/source/images/drawings/dpf-flow.png :width: 670 :alt: DPF flow
The ansys.dpf.core
package provides a Python interface to DPF, enabling
rapid postprocessing of a variety of Ansys file formats and physics solutions
without ever leaving the Python environment.
Visit the DPF-Core Documentation for comprehensive information on this library. See the Examples for how-to information.
PyDPF-Core requires DPF to be available. You can either have a compatible Ansys version installed
or install the standalone ansys-dpf-server
server package. For more information, see
Getting Started with DPF Server in the PyDPF-Core documentation.
For the compatibility between PyDPF-Core and Ansys, see Compatibility in the PyDPF-Core documentation.
To use PyDPF-Core with the ansys-dpf-server
server package or with Ansys 2021 R2 or later,
install the latest version with this command:
pip install ansys-dpf-core
PyDPF-Core plotting capabilities require PyVista <https://pyvista.org/>
_ to be installed.
To install PyDPF-Core with its optional plotting functionalities, use this command:
pip install ansys-dpf-core[plotting]
For more information on PyDPF-Core plotting capabilities, see Plot in the PyDPF-Core documentation.
To use PyDPF-Core with Ansys 2021 R1, install the latest version with this command:
pip install ansys-dpf-core<0.3.0
Provided you have DPF available, a DPF server automatically starts once you start using PyDPF-Core.
To open a result file and explore what's inside, use this code:
>>> from ansys.dpf import core as dpf
>>> from ansys.dpf.core import examples
>>> model = dpf.Model(examples.find_simple_bar())
>>> print(model)
DPF Model
------------------------------
Static analysis
Unit system: Metric (m, kg, N, s, V, A)
Physics Type: Mechanical
Available results:
- displacement: Nodal Displacement
- element_nodal_forces: ElementalNodal Element nodal Forces
- 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
- structural_temperature: ElementalNodal Temperature
------------------------------
DPF Meshed Region:
3751 nodes
3000 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
Read a result with this command:
>>> result = model.results.displacement.eval()
Then, start connecting operators with this code:
>>> from ansys.dpf.core import operators as ops
>>> norm = ops.math.norm(model.results.displacement())
The ansys.dpf.core
library automatically starts a local instance of the DPF service in the
background and connects to it. If you need to connect to an existing
remote or local DPF instance, use the connect_to_server
method:
>>> from ansys.dpf import core as dpf
>>> dpf.connect_to_server(ip='10.0.0.22', port=50054)
Once connected, this connection remains for the duration of the module. It closes when you exit Python or connect to a different server.