Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 67 additions & 4 deletions 2026R1/dpf-framework-26-r1/changelog/changelog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog

Changes since the last released version for DPF 26.1.pre1 (as of 2025-10-31).
Changes since the last released version for DPF 26.1.pre1 (as of 2025-11-03).

This changelog is organized by category, with sections for different types of updates (new features, bug fixes, changes, performance improvements).

Expand All @@ -12,10 +12,11 @@ The following table shows which components have updates in each category.
| cgns | [1 item](#Features_cgns) | |
| changelog | [2 items](#Features_changelog) |[1 item](#Fixes_changelog) |
| ci | [1 item](#Features_ci) |[1 item](#Fixes_ci) |
| compression | [2 items](#Features_compression) | |
| compression | [2 items](#Features_compression) |[1 item](#Fixes_compression) |
| core | |[1 item](#Fixes_core) |
| cyclic | [1 item](#Features_cyclic) | |
| doc | [2 items](#Features_doc) | |
| documentation | [1 item](#Features_documentation) | |
| dpf | [3 items](#Features_dpf) |[1 item](#Fixes_dpf) |
| eng_mat | |[1 item](#Fixes_eng_mat) |
| expansion | [1 item](#Features_expansion) | |
Expand All @@ -26,9 +27,9 @@ The following table shows which components have updates in each category.
| h5dpf | [1 item](#Features_h5dpf) |[1 item](#Fixes_h5dpf) |
| hdf5 | [4 items](#Features_hdf5) | |
| hgp | [2 items](#Features_hgp) | |
| kernel | [1 item](#Features_kernel) |[1 item](#Fixes_kernel) |
| kernel | [2 items](#Features_kernel) |[1 item](#Fixes_kernel) |
| lsdyna | [1 item](#Features_lsdyna) | |
| mapdl | [11 items](#Features_mapdl) |[14 items](#Fixes_mapdl) |
| mapdl | [12 items](#Features_mapdl) |[14 items](#Fixes_mapdl) |
| mapdlpluggin | |[1 item](#Fixes_mapdlpluggin) |
| math | [7 items](#Features_math) | |
| mechanical | [2 items](#Features_mechanical) |[3 items](#Fixes_mechanical) |
Expand Down Expand Up @@ -92,6 +93,8 @@ The following table shows which components have updates in each category.

- Use scripting name in operator changelog:
>
>
>
## ci
### <a id="Features_ci"></a> Features

Expand Down Expand Up @@ -127,6 +130,14 @@ The following table shows which components have updates in each category.
- Scale and Round Operator:
>

### <a id="Fixes_compression"></a> Fixes

- Quantization loss of performance:
> The quantization ("quantization") operator has became super slow since its last modification.
>
>
>
>
## core

### <a id="Fixes_core"></a> Fixes
Expand Down Expand Up @@ -176,6 +187,20 @@ The following table shows which components have updates in each category.
>
>

## documentation
### <a id="Features_documentation"></a> Features

- Add Markdown and LaTeX example operator:
> This PR adds an example operator ``markdown_latex_example`` to ``Ans.Dpf.Documentation`` where usage of supported Markdown and LaTeX is showcased.
>
> It also allows to test whether the operator is properly exposed in all clients and pipelines.
>
> We take the opportunity to fix support for multiline descriptions in output pins during generation of operator classes in C#.
>
>
>
>

## dpf
### <a id="Features_dpf"></a> Features

Expand Down Expand Up @@ -403,6 +428,15 @@ The following table shows which components have updates in each category.
## kernel
### <a id="Features_kernel"></a> Features

- Add Unit string to express British ton:
>
>
> The string `"ton"` in DPF units denotes the Metric Ton (1000 kg). The string `"tonuk"` now denotes the British ton (also known as Long ton, approximately 1016.05 kg or 2240 pounds of mass).
>
>
>
>

- Establish thread safety and STL compliance for scopingIterators:
> - Test for thread safety when using scoping Iterators for read access within parallel regions (over fields, over scoping etc).
>
Expand Down Expand Up @@ -435,6 +469,13 @@ The following table shows which components have updates in each category.
## mapdl
### <a id="Features_mapdl"></a> Features

- Adding new operator and result for Nodal Orientations:
> Adding new operator and result for Nodal Orientations
>
>
>
>

- Refactor ElementType handling to increase performance:
>
>
Expand Down Expand Up @@ -1358,6 +1399,18 @@ The following table shows which components have updates in each category.
- [nodal_rotational_velocity_Z](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/nodal_rotational_velocity_Z.md):
> Read/compute nodal rotational velocity Z component of the vector (3rd component) by calling the readers defined by the datasources.

- [node_orientations](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/node_orientations.md):
> Read/compute node euler angles by calling the readers defined by the datasources.

- [node_orientations_X](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/node_orientations_X.md):
> Read/compute node euler angles X component of the vector (1st component) by calling the readers defined by the datasources.

- [node_orientations_Y](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/node_orientations_Y.md):
> Read/compute node euler angles Y component of the vector (2nd component) by calling the readers defined by the datasources.

- [node_orientations_Z](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/node_orientations_Z.md):
> Read/compute node euler angles Z component of the vector (3rd component) by calling the readers defined by the datasources.


#### serialization

Expand Down Expand Up @@ -1808,6 +1861,16 @@ The following table shows which components have updates in each category.
> 0.1.0: Addition of is_constant pin


- [remove_rigid_body_motion](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/remove_rigid_body_motion.md)

> 0.0.1: Replace vector of pointers with array of objects to prevent memory leaks


- [remove_rigid_body_motion_fc](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/remove_rigid_body_motion_fc.md)

> 0.0.1: Replace vector of pointers with array of objects to prevent memory leaks


- [state_variable](https://ansys-a.devportal.io/docs/dpf-framework-2026-r1/operator-specifications/result/state_variable.md)

> 0.1.0: Add pin eExtendMidNodesPin to add/remove mid-nodes when averaging from ElementalNodal to Nodal. Default:True
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
category: result
plugin: core
license: None
---

# result:node orientations

**Version: 0.0.0**

## Description

Read/compute node euler angles by calling the readers defined by the datasources.

## Inputs

| Input | Name | Expected type(s) | Description |
|-------|-------|------------------|-------------|
| <strong>Pin 0</strong>| time_scoping |[`scoping`](../../core-concepts/dpf-types.md#scoping), [`int32`](../../core-concepts/dpf-types.md#standard-types), [`vector<int32>`](../../core-concepts/dpf-types.md#standard-types), [`double`](../../core-concepts/dpf-types.md#standard-types), [`field`](../../core-concepts/dpf-types.md#field), [`vector<double>`](../../core-concepts/dpf-types.md#standard-types) | time/freq values (use doubles or field), time/freq set ids (use ints or scoping) or time/freq step ids (use scoping with TimeFreq_steps location) required in output. To specify time/freq values at specific load steps, put a Field (and not a list) in input with a scoping located on "TimeFreq_steps". Linear time freq intrapolation is performed if the values are not in the result files and the data at the max time or freq is taken when time/freqs are higher than available time/freqs in result files. To get all data for all time/freq sets, connect an int with value -1. |
| <strong>Pin 1</strong>| mesh_scoping |[`scopings_container`](../../core-concepts/dpf-types.md#scopings-container), [`scoping`](../../core-concepts/dpf-types.md#scoping) | nodes or elements scoping required in output. The output fields will be scoped on these node or element IDs. To figure out the ordering of the fields data, look at their scoping IDs as they might not be ordered as the input scoping was. The scoping's location indicates whether nodes or elements are asked for. Using scopings container allows you to split the result fields container into domains |
| <strong>Pin 2</strong>| fields_container |[`fields_container`](../../core-concepts/dpf-types.md#fields-container) | Fields container already allocated modified inplace |
| <strong>Pin 3</strong>| streams_container |[`streams_container`](../../core-concepts/dpf-types.md#streams-container) | result file container allowed to be kept open to cache data |
| <strong>Pin 4</strong> <br><span style="background-color:#d93025; color:white; padding:2px 6px; border-radius:3px; font-size:0.75em;">Required</span>| data_sources |[`data_sources`](../../core-concepts/dpf-types.md#data-sources) | result file path container, used if no streams are set |
| <strong>Pin 5</strong>| bool_rotate_to_global |[`bool`](../../core-concepts/dpf-types.md#standard-types) | if true the field is rotated to global coordinate system (default true). Please check your results carefully if 'false' is used for Elemental or ElementalNodal results averaged to the Nodes when adjacent elements do not share the same coordinate system, as results may be incorrect. |
| <strong>Pin 7</strong>| mesh |[`abstract_meshed_region`](../../core-concepts/dpf-types.md#meshed-region), [`meshes_container`](../../core-concepts/dpf-types.md#meshes-container) | prevents from reading the mesh in the result files |

## Outputs

| Output | Name | Expected type(s) | Description |
|-------|------|------------------|-------------|
| **Pin 0**| fields_container |[`fields_container`](../../core-concepts/dpf-types.md#fields-container) | |

## Configurations

| Name| Expected type(s) | Default value | Description |
|-----|------|----------|-------------|
| **mutex** |[`bool`](../../core-concepts/dpf-types.md#standard-types) | false | If this option is set to true, the shared memory is prevented from being simultaneously accessed by multiple threads. |
| **num_threads** |[`int32`](../../core-concepts/dpf-types.md#standard-types) | 0 | Number of threads to use to run in parallel |
| **run_in_parallel** |[`bool`](../../core-concepts/dpf-types.md#standard-types) | true | Loops are allowed to run in parallel if the value of this config is set to true. |

## Scripting

**Category**: result

**Plugin**: core

**Scripting name**: node_orientations

**Full name**: result.node_orientations

**Internal name**: EUL_NOD

**License**: None


## Changelog

- Version 0.0.0: Initial release.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
category: result
plugin: core
license: None
---

# result:node orientations X

**Version: 0.0.0**

## Description

Read/compute node euler angles X component of the vector (1st component) by calling the readers defined by the datasources.

## Inputs

| Input | Name | Expected type(s) | Description |
|-------|-------|------------------|-------------|
| <strong>Pin 0</strong>| time_scoping |[`scoping`](../../core-concepts/dpf-types.md#scoping), [`int32`](../../core-concepts/dpf-types.md#standard-types), [`vector<int32>`](../../core-concepts/dpf-types.md#standard-types), [`double`](../../core-concepts/dpf-types.md#standard-types), [`field`](../../core-concepts/dpf-types.md#field), [`vector<double>`](../../core-concepts/dpf-types.md#standard-types) | time/freq values (use doubles or field), time/freq set ids (use ints or scoping) or time/freq step ids (use scoping with TimeFreq_steps location) required in output. To specify time/freq values at specific load steps, put a Field (and not a list) in input with a scoping located on "TimeFreq_steps". Linear time freq intrapolation is performed if the values are not in the result files and the data at the max time or freq is taken when time/freqs are higher than available time/freqs in result files. To get all data for all time/freq sets, connect an int with value -1. |
| <strong>Pin 1</strong>| mesh_scoping |[`scopings_container`](../../core-concepts/dpf-types.md#scopings-container), [`scoping`](../../core-concepts/dpf-types.md#scoping) | nodes or elements scoping required in output. The output fields will be scoped on these node or element IDs. To figure out the ordering of the fields data, look at their scoping IDs as they might not be ordered as the input scoping was. The scoping's location indicates whether nodes or elements are asked for. Using scopings container allows you to split the result fields container into domains |
| <strong>Pin 2</strong>| fields_container |[`fields_container`](../../core-concepts/dpf-types.md#fields-container) | FieldsContainer already allocated modified inplace |
| <strong>Pin 3</strong>| streams_container |[`streams_container`](../../core-concepts/dpf-types.md#streams-container) | result file container allowed to be kept open to cache data |
| <strong>Pin 4</strong> <br><span style="background-color:#d93025; color:white; padding:2px 6px; border-radius:3px; font-size:0.75em;">Required</span>| data_sources |[`data_sources`](../../core-concepts/dpf-types.md#data-sources) | result file path container, used if no streams are set |
| <strong>Pin 5</strong>| bool_rotate_to_global |[`bool`](../../core-concepts/dpf-types.md#standard-types) | if true the field is rotated to global coordinate system (default true) |
| <strong>Pin 7</strong>| mesh |[`abstract_meshed_region`](../../core-concepts/dpf-types.md#meshed-region), [`meshes_container`](../../core-concepts/dpf-types.md#meshes-container) | prevents from reading the mesh in the result files |
| <strong>Pin 14</strong>| read_cyclic |`enum dataProcessing::ECyclicReading`, [`int32`](../../core-concepts/dpf-types.md#standard-types) | if 0 cyclic symmetry is ignored, if 1 cyclic sector is read, if 2 cyclic expansion is done, if 3 cyclic expansion is done and stages are merged (default is 1) |

## Outputs

| Output | Name | Expected type(s) | Description |
|-------|------|------------------|-------------|
| **Pin 0**| fields_container |[`fields_container`](../../core-concepts/dpf-types.md#fields-container) | |

## Configurations

| Name| Expected type(s) | Default value | Description |
|-----|------|----------|-------------|
| **mutex** |[`bool`](../../core-concepts/dpf-types.md#standard-types) | false | If this option is set to true, the shared memory is prevented from being simultaneously accessed by multiple threads. |
| **num_threads** |[`int32`](../../core-concepts/dpf-types.md#standard-types) | 0 | Number of threads to use to run in parallel |
| **run_in_parallel** |[`bool`](../../core-concepts/dpf-types.md#standard-types) | true | Loops are allowed to run in parallel if the value of this config is set to true. |

## Scripting

**Category**: result

**Plugin**: core

**Scripting name**: node_orientations_X

**Full name**: result.node_orientations_X

**Internal name**: EUL_NODX

**License**: None


## Changelog

- Version 0.0.0: Initial release.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
category: result
plugin: core
license: None
---

# result:node orientations Y

**Version: 0.0.0**

## Description

Read/compute node euler angles Y component of the vector (2nd component) by calling the readers defined by the datasources.

## Inputs

| Input | Name | Expected type(s) | Description |
|-------|-------|------------------|-------------|
| <strong>Pin 0</strong>| time_scoping |[`scoping`](../../core-concepts/dpf-types.md#scoping), [`int32`](../../core-concepts/dpf-types.md#standard-types), [`vector<int32>`](../../core-concepts/dpf-types.md#standard-types), [`double`](../../core-concepts/dpf-types.md#standard-types), [`field`](../../core-concepts/dpf-types.md#field), [`vector<double>`](../../core-concepts/dpf-types.md#standard-types) | time/freq values (use doubles or field), time/freq set ids (use ints or scoping) or time/freq step ids (use scoping with TimeFreq_steps location) required in output. To specify time/freq values at specific load steps, put a Field (and not a list) in input with a scoping located on "TimeFreq_steps". Linear time freq intrapolation is performed if the values are not in the result files and the data at the max time or freq is taken when time/freqs are higher than available time/freqs in result files. To get all data for all time/freq sets, connect an int with value -1. |
| <strong>Pin 1</strong>| mesh_scoping |[`scopings_container`](../../core-concepts/dpf-types.md#scopings-container), [`scoping`](../../core-concepts/dpf-types.md#scoping) | nodes or elements scoping required in output. The output fields will be scoped on these node or element IDs. To figure out the ordering of the fields data, look at their scoping IDs as they might not be ordered as the input scoping was. The scoping's location indicates whether nodes or elements are asked for. Using scopings container allows you to split the result fields container into domains |
| <strong>Pin 2</strong>| fields_container |[`fields_container`](../../core-concepts/dpf-types.md#fields-container) | FieldsContainer already allocated modified inplace |
| <strong>Pin 3</strong>| streams_container |[`streams_container`](../../core-concepts/dpf-types.md#streams-container) | result file container allowed to be kept open to cache data |
| <strong>Pin 4</strong> <br><span style="background-color:#d93025; color:white; padding:2px 6px; border-radius:3px; font-size:0.75em;">Required</span>| data_sources |[`data_sources`](../../core-concepts/dpf-types.md#data-sources) | result file path container, used if no streams are set |
| <strong>Pin 5</strong>| bool_rotate_to_global |[`bool`](../../core-concepts/dpf-types.md#standard-types) | if true the field is rotated to global coordinate system (default true) |
| <strong>Pin 7</strong>| mesh |[`abstract_meshed_region`](../../core-concepts/dpf-types.md#meshed-region), [`meshes_container`](../../core-concepts/dpf-types.md#meshes-container) | prevents from reading the mesh in the result files |
| <strong>Pin 14</strong>| read_cyclic |`enum dataProcessing::ECyclicReading`, [`int32`](../../core-concepts/dpf-types.md#standard-types) | if 0 cyclic symmetry is ignored, if 1 cyclic sector is read, if 2 cyclic expansion is done, if 3 cyclic expansion is done and stages are merged (default is 1) |

## Outputs

| Output | Name | Expected type(s) | Description |
|-------|------|------------------|-------------|
| **Pin 0**| fields_container |[`fields_container`](../../core-concepts/dpf-types.md#fields-container) | |

## Configurations

| Name| Expected type(s) | Default value | Description |
|-----|------|----------|-------------|
| **mutex** |[`bool`](../../core-concepts/dpf-types.md#standard-types) | false | If this option is set to true, the shared memory is prevented from being simultaneously accessed by multiple threads. |
| **num_threads** |[`int32`](../../core-concepts/dpf-types.md#standard-types) | 0 | Number of threads to use to run in parallel |
| **run_in_parallel** |[`bool`](../../core-concepts/dpf-types.md#standard-types) | true | Loops are allowed to run in parallel if the value of this config is set to true. |

## Scripting

**Category**: result

**Plugin**: core

**Scripting name**: node_orientations_Y

**Full name**: result.node_orientations_Y

**Internal name**: EUL_NODY

**License**: None


## Changelog

- Version 0.0.0: Initial release.
Loading