2.16. ETK-nD Node

This node is located in the Process chain elements > Output nodes folder in the Modules pane.

This node generates optiSLang 3D Post-Processing (oSP3D) database files (.sdb) for field data of a single design. It works based on customizable plugin scripts.

ETK-nD Workflow

How it Works

  • Higher-dimensional datasets are treated with optiSLang 3D Post-Processing (oSP3D). oSP3D databases (SDBs) are stored as .sdb files.

  • With the help of the ETK-nD and Field Data Collector nodes, you can graphically program the SDB generation routine in a two-step process (see the previous workflow image):

    1. Create a single-design SDB in each design folder using the ETK-nD node.

    2. Merge many single-design SDBs into one multi-design SDB using the Field Data Collector node.

    This section describes the first step, see Field Data Collector Node for additional information.

Setup

  1. Place an ETK-nD node into the Parametric system.

  2. Select a suitable reference file and adjust the absolute or relative path mode.

    The node expects that a file with the same name (or the same name and relative path) exists in each design directory at the time of execution. The path of the file inside the design directory is forwarded to the SDB generation routine.

  3. Select a corresponding plugin from the SDB generation plugin drop-down list.

  4. Optionally, define a name for the result SDB file. By default, the node will produce the same name as the input file.

ETK-nD Plugins

  • The ETK-nD plugins are customizable Python scripts located in the plugins folder inside of the ETKnD integration folder.

  • Each plugin script represents an SDB generation routine tailored for a particular dataset format to read and interpret.

  • One default plugin is installed with the integration, 2D Grid. This plugin requires very specific properties of its target files and interpret the given data in a specific way. It can be used as a reference for custom plugins.

  • The plugins internally use the Python API of oSP3D for the .sdb file generation. Additional information can be found in the oSP3D Script API Documentation located on the Ansys API Docs website.

  • To create a new custom plugin you can add a new Python script to the plugins folder and implement the get_name and create_sdb methods (see the default plugins for reference and interface description below). To implement create_sdb you can consult the oSP3D Python API.

  • When selecting the custom plugin in the node, a few checks will automatically be performed to make sure the script is valid and compatible with the node. The result of this check is displayed at the bottom of the user interface.

Settings

NameInstallation DefaultDescription
SDB generation plugin2D GridSelect the plugin that will create the .sdb file.
SDB filename Specify the filename for the resulting .sdb file. Will default to the input filename if left blank.

Run Options

This node has general Run Options. The number of supported options is individual for each node.

Troubleshooting

IssueSolution
The node does not offer a plugin for my data format.The installation only contains plugins that work with specific data formats. You can create custom plugins for your use-case, see ETKnD Plugins.
The default plugin does not extract the data I need.The 2D Grid plugin extracts only a subset of data. You can adapt the corresponding code in the script or create a custom plugin.

Versions and Requirements

  • The ETK-nD node requires optiSLang 2023 R1 or later.

  • The ETK-nD node requires optiSLang 3D Post-Processing (oSP3D) 2023 R1 or later.

  • When needed, optiSLang will load oSP3D of the same version.

Interface description

`.py` file requirements:
------------------------
- implement `get_name()` method returning plugin's name
- implement `create_sdb(*kwargs)` method


`.qml` file requirements:
-------------------------
- QML file is not required
- additional plugin settings (which are supposed to be passed to the plugin's Python method) can be specified in QML file
- the following methods must be used to store and retrieve plugin's settings (see docstrings below):
	- `getPluginBackendSettings(pluginName, valueName)`
	- `setPluginBackendSettings(pluginName, valueName, value)`
- another modification/access to backend settings is not permitted in order to keep data consistent for all plugins


/**
 * Get the plugin setting value from the backend settings object.
 * 
 * Use this method for plugin development. This method ensures data consistency for all plugins.
 * @param  {string}  pluginName   The name of the plugin. Must be consistent with value returned 
 *                                by get_name() method implemented in plugin Python code.
 * @param  {string}  valueName    Name of the setting.
 * @return {*}                    Value of the plugin setting.
 */
function getPluginBackendSettings(pluginName, valueName)


/**
 * Set the plugin setting value to the backend settings object.
 * 
 * Use this method for plugin development. This method ensures data consistency for all plugins.
 * @param {string}  pluginName   The name of the plugin. Must be consistent with value returned 
 *                               by get_name() method implemented in plugin Python code.
 * @param {string}  valueName    Name of the setting.
 * @param {*}       value        Value of the setting.
 */
function setPluginBackendSettings(pluginName, valueName, value)