About this Block
What it does: Imports structured simulation result files from disk. VTK file formats (.vtk, .vtu) have the most comprehensive feature coverage and are recommended for simulation data exchange. Other file formats may behave differently from what the tips below describe.
Common uses:
- Importing results from external solvers.
- Importing ML inference outputs.
Block Types and Field Schemas
Each import block defines a schema of expected fields (for example, displacement, stress, temperature). When a VTK file is loaded, nTop matches the data arrays in the file against this schema using name-based substring matching, assembles the results, and applies unit conversion.Import Static Structural Result (.vtk, .vtu)
| Field Label | Components | Dimensionality | Physical Dimensions |
|---|---|---|---|
| displacement | x, y, z | Vector-3 | L |
| strain principal | min, mid, max | Vector-3 | — |
| strain | xx, yy, zz, xy, yz, xz | Tensor-6 | — |
| stress von_mises | — | Scalar-1 | M L⁻¹ T⁻² |
| stress principal | min, mid, max | Vector-3 | M L⁻¹ T⁻² |
| stress | xx, yy, zz, xy, yz, xz | Tensor-6 | M L⁻¹ T⁻² |
| reaction force | x, y, z | Vector-3 | M L T⁻² |
stress von_mises, stress principal, stress), the table order reflects the matching priority — more specific labels are listed first. See the Label Priority section below for details.
Import Time Dependent Structural Result (.vtk, .vtu)
All fields from Import Static Structural Result, plus:| Field Label | Components | Dimensionality | Physical Dimensions |
|---|---|---|---|
| velocity | x, y, z | Vector-3 | L T⁻¹ |
| acceleration | x, y, z | Vector-3 | L T⁻² |
Import Static Thermal Result (.vtk, .vtu)
| Field Label | Components | Dimensionality | Physical Dimensions |
|---|---|---|---|
| heat flux | x, y, z | Vector-3 | M T⁻³ |
| temperature | — | Scalar-1 | Θ |
| thermal reaction flux | — | Scalar-1 | M T⁻³ |
Import Time Dependent Thermal Result (.vtk, .vtu)
Same fields as Import Static Thermal Result.Import Modal Result (.vtk, .vtu)
| Field Label | Components | Dimensionality | Physical Dimensions |
|---|---|---|---|
| displacement | x, y, z | Vector-3 | L |
| eigen frequency | — | Field Data — Modes | T⁻¹ |
Import Buckling Result (.vtk, .vtu)
| Field Label | Components | Dimensionality | Physical Dimensions |
|---|---|---|---|
| displacement | x, y, z | Vector-3 | L |
| load factor | — | Field Data — Modes | — |
Import CFD Analysis Result (.vtk, .vtu, .vti)
| Field Label | Components | Dimensionality | Physical Dimensions |
|---|---|---|---|
| density | — | Scalar-1 | M L⁻³ |
| force | x, y, z | Vector-3 | M L T⁻² |
| pressure | — | Scalar-1 | M L⁻¹ T⁻² |
| temperature | — | Scalar-1 | Θ |
| velocity | x, y, z | Vector-3 | L T⁻¹ |
| Field Label | Components | Dimensionality | Physical Dimensions |
|---|---|---|---|
| cell region | — | Scalar-1 | — |
| implicit field | — | Scalar-1 | L |
Data Array Matching
nTop identifies importable fields by matching VTK data array names against the known field labels for each block type.Array Name Matching
Matching checks whether the array name contains the field label as a substring. Before comparison, all underscores are replaced with spaces in both the array name and the field label, and matching is case-insensitive. For example, given the field labeldisplacement:
displacement→ matchDisplacement→ matchmy_displacement_results→ match (containsdisplacementafter underscore replacement)nodal_displacement_field→ matchdisp→ no match
Label Priority
When an array name could match multiple field labels, a fixed priority order applies — more specific labels are checked before less specific ones. For stress-related fields the priority is:stress von_mises(Scalar-1)stress principal(Vector-3)stress(Tensor-6)
stress_von_mises_output matches stress von_mises and is treated as a Scalar-1 field. It does not fall through to stress or stress principal.
The same priority pattern applies to strain:
strain principal(Vector-3)strain(Tensor-6)
Component Names and Dimensionality
Each field label has an expected dimensionality: Scalar-1, Vector-3, or Tensor-6. Once an array is matched to a field label, nTop checks the array’s components to verify compatibility. Components must be packed into a single multi-component VTK array. nTop does not combine separate scalar arrays into vectors or tensors. A displacement field must be a single array with 3 components, not three separate arrays nameddisplacement_x, displacement_y, displacement_z.
Component name resolution: VTK arrays support named components (via SetComponentName/GetComponentName). nTop uses these names to map components to their expected slots:
- Vector-3 fields (for example,
displacement,velocity): components namedx,y,z - Vector-3 principal fields (for example,
stress principal): components namedmin,mid,max - Tensor-6 fields (for example,
stress,strain): components namedxx,yy,zz,xy,yz,xz
0, 1, 2, …) in positional order. For a Vector-3 field, component 0 maps to the first expected slot (for example, x or min), component 1 to the second, and so on.
Note on Voigt notation: For Tensor-6 fields using the numerical fallback, nTop expects the component order xx, yy, zz, xy, yz, xz (indices 0–5). Different solvers may use different Voigt conventions. If your solver’s default ordering does not match, use explicit component names to avoid silently scrambled tensor components.
Component count must match. If the number of components in the array does not match the expected dimensionality of the matched field label, the field will fail to import. For example, an array matching stress (Tensor-6) must have exactly 6 components. A 3-component array matching stress will not import; it would need to match stress principal instead.
Data Precision
All imported data arrays are cast to double precision (float64), regardless of the precision in the source file.Point Data, Cell Data, and Field Data
Point Data (Default)
All importable fields are expected to be VTK point data arrays. This is the standard and recommended way to provide simulation results to nTop.Cell Data Fallback
If a field label is matched by a cell data array but no corresponding point data array exists for the same label, nTop automatically interpolates the cell data to points using VTK’svtkCellDataToPointData filter.
If both a point data array and a cell data array share the same field label, only the point data array is imported. The cell data array is ignored for that label. Other labels that only appear as cell data are still imported normally.
Cell data in time series and CFD: When multiple arrays match the same label (triggering time series or CFD key-value behavior), cell data arrays are interpolated to point data individually before being assembled. For example, if velocity_1 is point data and velocity_2 is cell data, velocity_2 is interpolated to points and both are included in the time series.
Field Data
VTK Field Data arrays have special handling and are only supported for specific attributes:- Eigen frequency in the Import Modal Result block
- Load factor in the Import Buckling Result block
- Time in the time-dependent Import Result blocks
reaction_force as VTK Field Data will cause a shape mismatch and the field will fail to import. If your solver outputs a field as Field Data, convert it to point data before importing — for example, by using ParaView’s FieldDataToDataSetAttribute filter and saving the result.
Time Series Behavior
Time series import applies to all block types except CFD (see CFD-Specific Behavior below). When multiple VTK data arrays match the same field label, nTop interprets them as a time series.Time Series Detection
Multiple arrays matching the same field label category trigger time series interpretation. The matching uses the same substring logic described above. For example, if a file contains three arrays nameddisplacement_1, displacement_2, displacement_3, all three contain the substring displacement and are interpreted as a three-step time series.
The suffix does not need to be numeric. Arrays named displacement_foo and displacement_bar would also be interpreted as a two-step time series. Only the storage order of the arrays in the file determines their placement in the series.
Caution: This mechanism can be triggered unintentionally. If a file contains arrays named temperature and ambient_temperature, both match the temperature label and nTop will interpret them as a two-step time series rather than two distinct fields. To avoid this, rename or remove one of the arrays so that only one matches the label.
Time Values
Time values are determined by two mechanisms, in order of priority:- Embedded metadata: The number of time steps is read from VTK XML metadata on the UnstructuredGrid TimeValues attribute. The physical time value is furthermore read from a seperate scalar FieldData array
Time. - Dummy values: If no time metadata is present, nTop assigns sequential integer time values starting from 0 (that is, 0, 1, 2, …).
Step Count and Skipping
The longest series of matching arrays across all field label categories determines the expected number of time steps. Any field label category that does not produce exactly that number of steps is skipped entirely. For example, if a file contains:displacement_1,displacement_2,displacement_3→ 3 steps (longest)stress_1,stress_2→ 2 steps
stress only produces 2 steps, it is skipped and not imported at all. Only displacement is imported.
Static Blocks and Time Series
Only the time-dependent block types (Import Time Dependent Structural Result and Import Time Dependent Thermal Result) return and visualize full time series data. If a file containing time series data is loaded into a static block type (for example, Import Analysis Result), the time series is still detected and processed, but only the last snapshot in the series is returned. nTop logs the following warning:File contains time series but import is Static. Using last step only.
CFD-Specific Behavior
The Import CFD Analysis Result block differs from the other block types in several ways. It supports.vti (uniform grid) files in addition to .vtk and .vtu, and it does not use the time series mechanism described above.
Key-Value Results
CFD results are structured as key-value pairs. When multiple arrays match the same field label, each is stored as a separate entry in a dictionary rather than being interpreted as a time series. For example, a file containing arrays namedvelocity_initial, velocity_1_s, and velocity_time-averaged produces a CFD result with three entries in the velocity dictionary. Downstream in nTop, CFD results expose a list of keys and a corresponding list of fields, allowing you to select individual entries.
Cell Region (VTI Only)
cell region is an optional scalar point data array of type unsigned char (values 0–255). It defines region association IDs for nodes in a uniform grid, typically used to distinguish between boundary conditions and bulk regions.
For example, cell region = 1 might indicate bulk fluid nodes, while cell region = 2 indicates solid no-slip wall nodes. You can use this field with downstream blocks such as Filter Cell Region.
Implicit Field (VTI Only)
implicit field is a scalar point data array containing the signed distance field associated with the voxelization of the input geometry. This field is used purely for visualization — it determines the surface body displayed in the viewport for surface plots.
If you can retain or reconstruct the signed distance field from the original voxelization, it is worth including as an implicit field. If no implicit field is provided, nTop falls back to treating the entire domain as interior, which still works but may produce less useful surface visualizations.
Beam Radius (VTU Only)
beam radius is a scalar point data array containing the radii of the associated beams in the FE Mesh.
If beam radius is not provided for beam elements, nTop may fail to render surface visualizations of the imported result.
Unit System
The Unit System input tells nTop what units the data in the file is expressed in. If the specified unit system differs from SI, nTop converts the imported data from the given units to SI upon import. If the file already contains SI data, set the unit system to SI and no conversion is applied. Each field label has associated physical dimensions (see the Block Types and Field Schemas section above). nTop uses these dimensions to determine which unit conversions to apply. For example, a velocity field has dimensions of L T⁻¹ (length per time), so both the length and time unit factors from the selected unit system are used in the conversion. Fields with no physical dimensions listed (such as strain) are dimensionless and are not affected by the unit system setting.Supported Cell Types
nTop supports the following VTK cell types: Volume elements: tetrahedron, hexahedron, voxel, wedge, pyramid Surface elements: triangle, quad Beam elements: line, vertex All other cell types are ignored during import. nTop logs a warning indicating the number of skipped cells per unsupported type. If a file consists entirely of unsupported cell types, nTop tries to fall back to a vertex representation or produce an error.Troubleshooting
Field Not Appearing After Import
Component count mismatch. The array’s number of components does not match what the matched field label expects. For example, a 3-component array matchingstress (which expects Tensor-6) will not import. Verify that the array has the correct number of components for its intended field label.
Field Data instead of Point Data. Only eigen frequency and load factor use VTK Field Data. All other fields must be Point Data (or Cell Data). If your solver writes a result as Field Data, see the Field Data section above for the recommended workaround.
Unintentional Time Series
If a file contains multiple arrays whose names match the same field label, nTop interprets them as a time series. This can happen unintentionally when array names share a common substring. For example, arrays namedtemperature_surface and temperature_volume both match the temperature label and are treated as a two-step series rather than two distinct fields.
To fix this, rename or remove one of the arrays so that only one matches the intended label.
Separate Arrays Instead of Multi-Component
nTop expects vector and tensor fields to be stored as a single multi-component array. Three separate scalar arrays nameddisplacement_x, displacement_y, displacement_z will not be combined into a vector. Instead, all three match the displacement label and trigger the time series mechanism, producing incorrect results.
Please make sure your solver or post-processor writes vectors as a single array with named components (x, y, z) or indexed components (0, 1, 2).
Time Series Data in a Static Block
If a file with time series data is loaded into a static import block (for example, Import Analysis Result instead of Import Time Dependent Structural Result), only the last time step is returned. nTop logs a warning when this occurs. If you need the full series, use the corresponding time-dependent block type.Import Time Dependent Structural Result file from an external location.
Inputs
| Name | Type | Description |
|---|---|---|
| Path | Path | System path of Time Dependent Structural Result file. |
| Unit system | Unit System | The unit system of the external results. This will be used to consistently translate the external results into the active unit system. |

