From f3400036b95814fc9e0246b78a89665e7b78bf31 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 10:37:00 +0200 Subject: [PATCH 01/12] DPF 25R2: documentation review Review from the DPF team on the 25R2 documentation for DPF. --- 2025R2/dpf-operator-spec-25-r2/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index 747105778..0af46d03b 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -1,3 +1,3 @@ # Introduction -This documentation provides a comprehensive guide of DPF operator specifications. It is organized into key sections, including core concepts, getting started tutorials, and detailed operator specifications. Whether you are new to DPF or looking for advanced operator details, this guide offers the necessary resources to understand and use DPF effectively in your workflows. +This documentation provides a comprehensive guide of the DPF framework as well as all DPF operators available in ANSYS-made DPF plugins. It is organized into key sections, including core concepts, getting started tutorials, and detailed documentation of available operators. Whether you are new to DPF or looking for information on operators, this guide offers the necessary resources to understand and use DPF effectively in your workflows. From ca35cf93b652c8b25daa0c5ff965cc86c1075aa4 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 10:48:57 +0200 Subject: [PATCH 02/12] Change core concept section name --- 2025R2/dpf-operator-spec-25-r2/toc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/2025R2/dpf-operator-spec-25-r2/toc.yml b/2025R2/dpf-operator-spec-25-r2/toc.yml index 6a4d1933d..c24894f88 100644 --- a/2025R2/dpf-operator-spec-25-r2/toc.yml +++ b/2025R2/dpf-operator-spec-25-r2/toc.yml @@ -4,7 +4,7 @@ items: - name: Overview of DPF href: core-concepts/dpf-overview.md - - name: Understanding data containers + - name: Available types href: core-concepts/data-containers.md - name: Operator fundamentals href: core-concepts/operator.md @@ -1478,4 +1478,4 @@ href: operator-specifications/utility/unitary_field.md - name: weighted merge fields by label href: operator-specifications/utility/weighted_merge_fields_by_label.md - \ No newline at end of file + From 16ee1f26fd53f6ee26605e4956f77eb3a84f33c9 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:00:52 +0200 Subject: [PATCH 03/12] Delete 2025R2/dpf-operator-spec-25-r2/core-concepts/dpf-overview.md --- .../core-concepts/dpf-overview.md | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 2025R2/dpf-operator-spec-25-r2/core-concepts/dpf-overview.md diff --git a/2025R2/dpf-operator-spec-25-r2/core-concepts/dpf-overview.md b/2025R2/dpf-operator-spec-25-r2/core-concepts/dpf-overview.md deleted file mode 100644 index 579048630..000000000 --- a/2025R2/dpf-operator-spec-25-r2/core-concepts/dpf-overview.md +++ /dev/null @@ -1,17 +0,0 @@ -# Overview of DPF - -The Data Processing Framework (DPF) is designed to provide numerical simulation users/engineers with a toolbox for accessing and transforming simulation data. DPF can access data from solver result files as well as several neutral formats (csv, hdf5, vtk, etc.). Various operators are available allowing the manipulation and the transformation of this data. DPF is a workflow-based framework which allows simple and/or complex evaluations by chaining operators. The data in DPF is defined based on physics agnostic mathematical quantities described in a self-sufficient entity called field. This allows DPF to be a modular and easy to use tool with a large range of capabilities. It's a product designed to handle large amount of data. - -## Advantages - -**Computation efficiency** - -DPF is a modern framework and it has been developed by taking advantages of new hardware architectures. Due to continued development, new capabilities are frequently added. - -**Generecity** - -DPF is physic agnostic. Therefore, its use is not limited to a particular field. - -**Extensibility and Customization** - -DPF is developed around two entities, one for the data (field) and one for the operation (operator). Each DPF capability is developed through operators, allowing componentization of the framework. DPF is also plugin based so adding new features or handling new formats is fast and easy. With componentization, plugins, and DPF scripting, you can add your own capabilities and link your existing work with DPF. From ffb5fba130d8a2d68a571cf0780e37bc4e42cd83 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:01:24 +0200 Subject: [PATCH 04/12] Describe DPF in index.md --- 2025R2/dpf-operator-spec-25-r2/index.md | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index 0af46d03b..81ed082d6 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -1,3 +1,48 @@ # Introduction This documentation provides a comprehensive guide of the DPF framework as well as all DPF operators available in ANSYS-made DPF plugins. It is organized into key sections, including core concepts, getting started tutorials, and detailed documentation of available operators. Whether you are new to DPF or looking for information on operators, this guide offers the necessary resources to understand and use DPF effectively in your workflows. + +# Overview of DPF + +Ansys 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. +The following table shows an exhaustive list of solver apps supported by DPF and their related formats: + +| **Solver** | **File format** | **DPF version required** | +|--------------------|---------------------------------|-------------------------------------| +| MAPDL | .rst, .mode, .rth, .rfrq, .rdsp | **1.0** (*2021 R1*) and later | +| MAPDL | .psd, .prs | **10.0** (*2025 R2 pre0*) and later | +| LS DYNA | .d3plot, .binout | **4.0** (*2022 R2*) and later | +| FLUENT | .cas/dat.h5, .flprj | **7.0** (*2024 R1 pre0*) and later | +| CFX | .res, .flprj | **7.0** (*2024 R1 pre0*) and later | + +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. + +![dpf-flow](../images/dpf-flow.png) + + +## Advantages + +**Computational efficiency** + +DPF is a modern framework based on new hardware architectures. +Thanks to continued development, new capabilities are frequently added. + +**Generic interface** + +DPF is physics-agnostic, which means that its use is not limited to a particular field, physics solution, or file format. + +**Extensibility and customization** + +DPF is developed around two core entities: + +- Data represented as a **field** +- An **operator** to act upon this data + +Each DPF capability is developed through operators that allow for componentization of the framework. Because DPF is plugin-based, new features or formats can be easily added. From a0ceee86d01adac56adac45209645dc518372fee Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:01:51 +0200 Subject: [PATCH 05/12] Update toc.yml --- 2025R2/dpf-operator-spec-25-r2/toc.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/2025R2/dpf-operator-spec-25-r2/toc.yml b/2025R2/dpf-operator-spec-25-r2/toc.yml index c24894f88..18ab2e76b 100644 --- a/2025R2/dpf-operator-spec-25-r2/toc.yml +++ b/2025R2/dpf-operator-spec-25-r2/toc.yml @@ -2,8 +2,6 @@ href: index.md - name: Core concepts items: - - name: Overview of DPF - href: core-concepts/dpf-overview.md - name: Available types href: core-concepts/data-containers.md - name: Operator fundamentals From d3fd9245399836a2028db296e1a548ebaea26c94 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:02:35 +0200 Subject: [PATCH 06/12] Update index.md --- 2025R2/dpf-operator-spec-25-r2/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index 81ed082d6..9a848bd07 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -4,7 +4,7 @@ This documentation provides a comprehensive guide of the DPF framework as well a # Overview of DPF -Ansys Data Processing Framework (DPF) provides numerical simulation users and engineers with a toolbox for accessing and transforming simulation data. +The Ansys 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. @@ -24,7 +24,7 @@ You can also chain operators together to create simple or complex data-processin 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. -![dpf-flow](../images/dpf-flow.png) +![dpf-flow](./images/dpf-flow.png) ## Advantages From 5cf2e9a5ab44a27d9f5c8575526f030757c25c28 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:03:54 +0200 Subject: [PATCH 07/12] Add files via upload --- .../dpf-operator-spec-25-r2/images/dpf-flow.png | Bin 0 -> 29479 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 2025R2/dpf-operator-spec-25-r2/images/dpf-flow.png diff --git a/2025R2/dpf-operator-spec-25-r2/images/dpf-flow.png b/2025R2/dpf-operator-spec-25-r2/images/dpf-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..5672e12143d7a17fc74ec4f1725da3a69b9878b5 GIT binary patch literal 29479 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 Date: Mon, 16 Jun 2025 15:18:43 +0200 Subject: [PATCH 08/12] Add installation section --- 2025R2/dpf-operator-spec-25-r2/index.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index 9a848bd07..a11e6aa45 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -46,3 +46,15 @@ DPF is developed around two core entities: - An **operator** to act upon this data Each DPF capability is developed through operators that allow for componentization of the framework. Because DPF is plugin-based, new features or formats can be easily added. + + +## Install DPF + +DPF is available with the **Ansys installer** in Ansys 2021 R1 and later, or as a pre-release **DPF Server** standalone package for DPF 2023 R2 and later. + +- To install DPF using the Ansys installer, download the standard Ansys installation using your preferred + distribution channel, and install Ansys following the installer instructions. For information + on getting a licensed copy of Ansys, visit the [Ansys website](https://www.ansys.com/). + +- The DPF Server package provides pre-releases of DPF and is independent of the Ansys installer. + It is available on the [DPF Pre-Release page](https://download.ansys.com/Others/DPF%20Pre-Release) of the Ansys Customer Portal. From b7f5b99f6aa3d4f5ebebc08a0ad19220fdf052f5 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:22:23 +0200 Subject: [PATCH 09/12] Add OS compatibility information --- 2025R2/dpf-operator-spec-25-r2/index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index a11e6aa45..c06817662 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -58,3 +58,8 @@ DPF is available with the **Ansys installer** in Ansys 2021 R1 and later, or as - The DPF Server package provides pre-releases of DPF and is independent of the Ansys installer. It is available on the [DPF Pre-Release page](https://download.ansys.com/Others/DPF%20Pre-Release) of the Ansys Customer Portal. + + +## Operating system compatibility + +DPF supports Windows 10 and Rocky Linux 8 and later. To run DPF on CentOS 7, use DPF for 2024 R2 (8.2) or later. For more information, see [Ansys Platform Support]([url](https://www.ansys.com/it-solutions/platform-support)). From 950b10a1ec3a115944dee7a1f433d048db772068 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:23:06 +0200 Subject: [PATCH 10/12] Fix link for support --- 2025R2/dpf-operator-spec-25-r2/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index c06817662..2ea94597d 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -62,4 +62,4 @@ DPF is available with the **Ansys installer** in Ansys 2021 R1 and later, or as ## Operating system compatibility -DPF supports Windows 10 and Rocky Linux 8 and later. To run DPF on CentOS 7, use DPF for 2024 R2 (8.2) or later. For more information, see [Ansys Platform Support]([url](https://www.ansys.com/it-solutions/platform-support)). +DPF supports Windows 10 and Rocky Linux 8 and later. To run DPF on CentOS 7, use DPF for 2024 R2 (8.2) or later. For more information, see [Ansys Platform Support](https://www.ansys.com/it-solutions/platform-support). From 99fec7d2f3fd06eafb06546e73b99ca60476ec69 Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:59:57 +0200 Subject: [PATCH 11/12] Add Use DPF section --- 2025R2/dpf-operator-spec-25-r2/index.md | 28 ++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index 2ea94597d..a0bcae47f 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -48,7 +48,7 @@ DPF is developed around two core entities: Each DPF capability is developed through operators that allow for componentization of the framework. Because DPF is plugin-based, new features or formats can be easily added. -## Install DPF +# Install DPF DPF is available with the **Ansys installer** in Ansys 2021 R1 and later, or as a pre-release **DPF Server** standalone package for DPF 2023 R2 and later. @@ -63,3 +63,29 @@ DPF is available with the **Ansys installer** in Ansys 2021 R1 and later, or as ## Operating system compatibility DPF supports Windows 10 and Rocky Linux 8 and later. To run DPF on CentOS 7, use DPF for 2024 R2 (8.2) or later. For more information, see [Ansys Platform Support](https://www.ansys.com/it-solutions/platform-support). + +# Use DPF + +You must use one of the DPF client APIs to write scripts and send commands to DPF. + +DPF client APIs are currently available in three languages: C++, CPython, and IronPython (for Mechanical scripting). + +The following are documentations dedicated to each: + +- HGP documentation (C++): + + - [DPF C++ Client library](https://developer.ansys.com/docs/dpf-cpp-client-library-2025-r1/index.xhtml) in the Developer Portal documentation for DPF. + +- PyDPF documentation (CPython): + + - [PyDPF-Core documentation](https://dpf.docs.pyansys.com/version/stable/) + + - [PyDPF-Post documentation](https://post.docs.pyansys.com/version/stable/) + +- Mechanical scripting (IronPython): + + - [Data Processing Framework](https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/corp/v252/en/act_script/mech_apis_data_process_frame.html) + in the *Scripting in Mechanical Guide*. + + - [Python Result](https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/corp/v252/en/wb_sim/ds_python_result_dpf.html) + in the *Mechanical User's Guide*. From ea03ed088dddb9441e916cb49ff3815b788883ca Mon Sep 17 00:00:00 2001 From: Paul Profizi <100710998+PProfizi@users.noreply.github.com> Date: Mon, 16 Jun 2025 16:00:35 +0200 Subject: [PATCH 12/12] Update index.md --- 2025R2/dpf-operator-spec-25-r2/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2025R2/dpf-operator-spec-25-r2/index.md b/2025R2/dpf-operator-spec-25-r2/index.md index a0bcae47f..e35b112a1 100644 --- a/2025R2/dpf-operator-spec-25-r2/index.md +++ b/2025R2/dpf-operator-spec-25-r2/index.md @@ -74,7 +74,7 @@ The following are documentations dedicated to each: - HGP documentation (C++): - - [DPF C++ Client library](https://developer.ansys.com/docs/dpf-cpp-client-library-2025-r1/index.xhtml) in the Developer Portal documentation for DPF. + - [DPF C++ Client library](https://developer.ansys.com/docs/dpf-cpp-client-library-2025-r2/index.xhtml) in the Developer Portal documentation for DPF. - PyDPF documentation (CPython):