Overview
Pipeline
Solver output is rarely ready to plot as it stands. Stresses are usually stored per element and displacements per node, tensors often arrive as nine separate scalars, and every field carries some discretisation noise. IST Vector therefore handles a result in four stages: it loads the mesh and its fields, optionally recovers smooth nodal fields from the element data, builds the chosen representation (colours, contours, glyphs or streamlines), and finally exports it.
.spp
Once a recovery filter is active, the colour bar, the iso-surfaces, the threshold mask and the deformed shape all draw on the recovered field, so smoothed colours are never laid over unsmoothed data. The screen, the PDF, the MP4 and the saved project are produced from a single scene object, which is why every export matches what the viewport shows. PDF surfaces are written as shaded triangles rather than captured as a screenshot, and video frames are recorded at the viewport’s physical pixel size, on HiDPI displays as elsewhere.
Gallery
Screenshots
The gallery shows an anchor pull-out test, the Stanford Happy Buddha in three different representations, a lattice beam and the Brokenshire torsion test. Click any image to see it at full size. The Happy Buddha model is © Stanford University Computer Graphics Laboratory and comes from the Stanford 3D Scanning Repository.
Load
Input formats
| Format | Contents |
|---|---|
.case | EnSight Gold and EnSight 6, together with their .geo, .scl, .vec and .ens files. The reader handles multi-part topology, transient steps (with wildcard and arithmetic time sets), scalar, vector and tensor fields (symmetric and asymmetric), ghost cells and iblanking. Both ASCII and binary files are read, in the per-axis layout of Gold as well as the interleaved layout of EnSight 6, and the ASCII reader runs on all cores. |
.vtu | VTK XML UnstructuredGrid, with point and cell fields. The data may be inline ASCII, inline base64, or appended in raw or base64 encoding, with or without zlib compression, which covers everything vtkXMLWriter and ParaView write by default. |
.vtp | VTK XML PolyData, including verts, lines, polys and strips. |
.vtm | VTK XML MultiBlock. The block tree is followed through any nested .vtm files, and every .vtu, .vtp or .vtk block it references is loaded as a part of a single scene. |
.vtk | VTK legacy files, ASCII or binary: UnstructuredGrid, PolyData, StructuredGrid, RectilinearGrid and StructuredPoints. Both CELLS layouts are supported, the classic one as well as the OFFSETS / CONNECTIVITY form written by VTK 9 and by ParaView 5.9 onwards. METADATA blocks are skipped. |
.pvd | ParaView time series of .vtu, .vtp, .vtm or .vtk files. The timestep values are honoured, and fields are matched by name across steps, so a field that first appears partway through a run still loads. A series longer than 300 steps, or too large for the free memory, is thinned evenly and a warning is shown; the first and last steps are always kept. |
.stl / .obj | Geometry only, without fields. OBJ triangles and quads are loaded as they are, while larger faces are split into triangles. |
.spp | An IST Vector project file, which holds the scene state together with a reference to the mesh. |
Fields may be nodal or per element; scalar, vector or tensor; steady or transient. The format is recognised from the first bytes of the file rather than from its extension, so a misnamed file still reaches the right reader. Files can be opened by drag-and-drop, with Ctrl+O, or from the list of recent files. All of the readers are part of IST Vector itself.
Element types
| Internal type | Nodes | Dim | Quadratic variants read |
|---|---|---|---|
point | 1 | 0-D | none |
bar2 | 2 | 1-D | bar3 |
tria3 | 3 | 2-D | tria6 |
quad4 | 4 | 2-D | quad8, quad9 |
tetra4 | 4 | 3-D | tetra10 |
pyramid5 | 5 | 3-D | pyramid13 |
penta6 | 6 | 3-D | penta15 (also prism6, wedge6) |
hexa8 | 8 | 3-D | hexa20 |
Every cell is reduced to one of these eight types, and the mid-edge and mid-face nodes of
quadratic elements are ignored. VTK strips are unrolled, polygons with five or more vertices
are split into triangles, the node order of VTK_VOXEL and VTK_PIXEL
cells is corrected, and structured grids become hexa8 elements
(quad4 for slabs). General polygons and polyhedra (nsided,
nfaced) are read but not drawn, and ghost cells are skipped. A mesh that has nodes
but no elements is drawn as a point cloud of round dots, at a diameter of your choice, and the
RBF filter can smooth fields over it.
Your own data
Python writer for EnSight Gold
If your code writes none of the formats above, ist_ensight_gold.py can do the
conversion for you. This Python module ships with IST Vector: you give it the nodes, the
element connectivity and the fields, and it writes a complete EnSight Gold data set,
consisting of a .case file, the .geo geometry and one file per field.
EnSight and ParaView read the result as well.
ist_ensight_gold.py, version 1.0.0, 40 KB. It requires Python 3.7 or later and nothing beyond the standard library; NumPy is used when it is installed, but it is never required.
The Windows installer also places a copy next to the executable.
Minimal example
from ist_ensight_gold import write_ensight_gold
write_ensight_gold(
"out/beam.case",
nodes=[(0, 0, 0), (1, 0, 0), (1, 1, 0), (0, 1, 0)],
elements={"quad4": [(0, 1, 2, 3)]},
node_data={"temperature": [20.0, 35.0, 50.0, 35.0]},
)
This call writes out/beam.case, out/beam.geo and one file per field.
Several element blocks, multiple parts, transient steps and binary output are all handled
through further keyword arguments of the same function.
Arguments
| Argument | Accepted input |
|---|---|
nodes | An (nnodes, 3) table of coordinates, given as a list of rows, a flat sequence or a NumPy array. Planar meshes may have only two columns, in which case z = 0 is added. |
elements | A mapping {type: connectivity} over the 15 EnSight Gold element types (point, bar2/3, tria3/6, quad4/8, tetra4/10, pyramid5/13, penta6/15, hexa8/20), which may be mixed freely within one mesh. Connectivity is 0-based by default, and node_index_base=1 accepts 1-based solver numbering. |
node_dataelement_data | {name: values}. The shape of the values determines the field type: (n,) is a scalar, (n, 3) a vector, (n, 6) a symmetric tensor in the order 11 22 33 12 13 23, and (n, 9) an asymmetric tensor in row-major order. Element values follow the connectivity blocks in the order in which they are given. |
steps | Transient output, given as one dict per step. Steps are written one at a time, so they can come from a generator without being held in memory. A step may carry its own deformed nodes, in which case the geometry is written with change_coords_only, which keeps GPU morphing available during playback. |
parts | Multi-part output, used in place of elements. Each part is written with only the nodes its own elements use, renumbered locally as EnSight Gold requires, and the node fields are sliced to match. |
binary | True writes EnSight “C Binary” (float32). The default is ASCII in exponential notation, with precision digits after the decimal point (6 by default). |
Because EnSight Gold cannot represent NaN or ±∞, such values are written as
0.0, and whitespace in field and part names is replaced. Invalid input raises an
EnSightError that names the field concerned. Running
python ist_ensight_gold.py <directory> writes a small transient demo data set
with two parts, which makes a convenient first file to open.
Recover and represent
Features
Field recovery
Six recovery methods are available: Zienkiewicz–Zhu SPR, a linear least-squares patch fit; quadratic least squares Z2, whose ten-term basis reproduces quadratic fields exactly; moving least squares with a Wendland C2 kernel; Taubin λ|μ smoothing, which avoids shrinkage; Perona–Malik anisotropic diffusion, which preserves fracture fronts and material boundaries; and, for point clouds without elements, a Gaussian-weighted RBF average. The kernel radius defaults to 1/200 of the longest side of the bounding box, and a uniform grid keeps the neighbour search at O(K) per point.
Fields derived at load
Every vector field is loaded together with its three components and its ℓ2 and ℓ∞ norms. Every tensor field comes with its von Mises and Frobenius invariants, the hydrostatic pressure, its nine components and its column vectors. Matching nodal and element fields also feed the error estimator described below.
Scalar fields
Scalars can be drawn with smooth shading, as banded contours, or as 3–30 labelled iso-lines whose labels are placed so that none overlap. Dashed lines can mark up to eight band boundaries; because they are part of the geometry, they look identical on screen, in the PDF and in the MP4. A log10 scale is available for fields that span several decades, and a black-and-white mode draws the lines in black and sets the field name as a caption. The Turbo colour map is sampled from a 256-entry table, NaN samples are drawn in magenta, and auto-range can ignore values that are not visible. Per-element fields colour whole elements and are not contoured until a recovery filter has moved them to the nodes.
Vector fields
Vectors are shown as arrows, as steady streamlines, or as transient pathlines and streaklines. The lines are integrated with the adaptive Dormand–Prince DOP853 method, which is of 8th order with embedded 5th- and 3rd-order error estimates. Lines coloured by speed receive a colour bar of their own, placed next to that of the field, and element vectors are anchored at the element centroids.
Tensor fields
Tensors are shown as ellipsoid glyphs aligned with the principal axes. At each node the components are assembled into a symmetric 3×3 matrix (asymmetric input is symmetrised first) and diagonalised by the Jacobi method, and the radii of each glyph scale with the eigenvalues. The glyph size is set as a fraction of the mesh diameter, and a sparsity setting thins the glyphs on a uniform grid.
Error estimator
When the solver writes the same field both on the nodes and on the elements,
IST Vector pairs the two by their longest common name prefix and computes
Absolute_E = |fnodal − proj(felem)|,
the difference between the nodal field and the projection of the element field. The user
chooses the pair and the direction of the projection. The result is an a-posteriori
error indicator that can be coloured, thresholded or drawn with iso-lines like any other
scalar, and it is computed from the recovered field whenever a recovery filter is active.
Deformed shape
The mesh can be warped by any vector field, with a magnification between 0 and 20. Because the magnification is a single shader uniform, changing it costs the same on every mesh, however large. The undeformed outline can be shown for reference, and the mesh-quality statistics can be computed on the deformed mesh.
Visibility
Elements can be hidden by a threshold, by X, Y and Z section planes (each of which can be flipped), and by part or material masks, all combined in a single element-visibility pass. The threshold reduces node values to elements by their mean, maximum or minimum and supports the relations >, <, = and ≠, with a tolerance of ±0.5% of the range for continuous fields and exact matching for integer material IDs.
Iso-surfaces
Volume cells are split into tetrahedra and marched in 3-D, and cells whose value range cannot contain the level are skipped. The march runs in parallel over chunks of elements, and cut points shared by two chunks are merged, so the surface is identical to that of a serial run on any number of cores. A slider moves the iso-value interactively, and 1–10 nested surfaces can be extracted at once, optionally together with the part outline.
Symmetry
Mirror images about X, Y and Z, together with 1–16 rotational copies about any axis, rebuild the full body from the sector that was modelled. Fields and the undeformed outline are copied as well, and the mirrored part can be drawn in neutral grey or in polished steel. The expanded model may have up to 100 million nodes.
Transient playback
Between solver steps, frames are interpolated at 60 Hz by monotone cubic interpolation with the Fritsch–Carlson limiter. Each interpolated value lies between the two solver steps that surround it, so colours, threshold and deformation never leave the range of values the solver produced, and two identical steps produce no motion. When the topology is fixed, the wireframe, bars, node dots and contour lines move with the surface on the GPU, even when the solver rewrites the same mesh at every step. Adaptive remeshes, which have no node correspondence, are shown with a cross-fade lasting 32–250 ms. Playback can be restricted to a range of steps and eased in and out, and a badge shows the solver’s own step numbers. Transients too large for memory are streamed by a background preloader that reads only the fields on display.
Camera and tours
Best View maximises the Vázquez viewpoint entropy over 192 directions distributed on a Fibonacci sphere, and Pack View uses the same search to fill the frame as fully as possible. View Tour is a scripted ten-second flight: an approach, a full 360° orbit with a change of elevation and a dolly-in, and a return to the starting pose. Waypoint tours use centripetal Catmull–Rom paths for position and zoom and squad quaternion interpolation for rotation, keeping the horizon level and the on-screen speed constant. The MP4 recorder replays the same camera path frame by frame.
Probes and mesh statistics
Ctrl+click on a node reports its coordinates and the values of the active fields, and Ctrl+Shift+click on an element reports its type, its centroid and its field values. Picking returns what is visible on the surface rather than a node hidden behind it, and symmetry copies are taken into account. The mesh-quality panel lists the element counts per type, edge-length statistics, extreme aspect ratios, the distributions of signed area and volume, and the number of inverted elements.
Export
Export formats
| Output | Details |
|---|---|
| Scene PDF | Surfaces are written as PDF Type 4 Gouraud-shaded triangles, and contour and feature lines as stroked paths. The colour bar, axis triad, labels and dimension callouts keep the positions they have on screen. Text is set in Latin Modern Roman Bold, with the CFF font embedded (Type1C) and a ToUnicode map, so the figures match the surrounding LaTeX document, pass journal archiving checks, and allow their values to be copied as text. An ultra-fine mode subdivides each lit face (N2 barycentric subdivision) and re-evaluates the Lambert and GGX shading on the finer triangles, which resolves highlights smaller than an element. |
| Batch contour PDFs | One contour figure for every scalar field that varies at the current step, with constant fields skipped. The batch also produces a two-up geometry reference page and a one-page collage of the saved views. |
| MP4 | H.264 video encoded through FFmpeg (libx264), with Windows Media Foundation as a fallback. Frames are captured at the viewport’s physical pixel size, and the stream is tagged BT.709 so that players reproduce its colours consistently. The recorder follows the same camera path as the live tours, and the scene is locked for the duration of a recording. An optional post-processing pass adds FXAA, bloom, Reinhard tone mapping, a vignette and film grain. |
Project .spp |
The complete scene state (fields, ranges, recovery filter, iso, threshold and section settings, symmetry, hidden parts, probes, time and camera) together with a reference to the mesh, which is resolved relative to the project file. Reopening the project restores the scene exactly. |
Figure recipe .json |
The camera and display settings without the mesh, so that they can be applied to other data (fields that are missing are skipped) or archived alongside a paper. Saved views store the same settings under a name in a per-user library. |
Vector output
Example PDF exports
Every file below was exported by IST Vector and has not been edited since. None of them contains a bitmap: surfaces are Gouraud-shaded triangles and lines are vector paths, so both remain sharp at any zoom. Figures built from public data sets carry their attribution on the page.
The Happy Buddha and Armadillo models are © Stanford University Computer Graphics Laboratory (Stanford 3D Scanning Repository). Stanford permits their use in research and in published images with credit, whereas commercial use requires Stanford’s permission. The 2-D pressure field comes from pyvista/vtk-data (Apache-2.0) and originally from the VTK test suite (BSD-3-Clause). All other examples are the author’s own finite-element results and generated surfaces.
Scale
Performance
The build of 25 September 2026 is several times faster on large meshes than its predecessor. On a hexahedral mesh with one million nodes, for instance, the first scene now appears after 0.16 s instead of 1.1 s; the full measurements are given at the end of this section.
The program adapts its strategy to the size of the mesh:
| Tier | Nodes / elements | Behaviour |
|---|---|---|
| Standard | ≤ 500,000 | All derived fields are computed at load time. |
| Optimized | ≤ 2,000,000 | Derived fields are still computed at load time, and the status bar marks the tier. |
| Large | ≤ 10,000,000 | Components, norms and invariants are computed on demand to save memory; a control can force their computation. |
| Very large | ≤ 50,000,000 | The same as Large, and the status bar marks the tier. |
| Above that | > 50,000,000 | The mesh is refused at load, with an explanatory message. |
A case is loaded entirely into memory when two and a half times its file size fits within 80% of the free memory. Larger transients load step 0 first, after which a background preloader reads the geometry and the displayed fields for all steps.
Typical timings
| Operation | Typical |
|---|---|
| Opening an EnSight case, ASCII or binary (parallel parser) | about 0.1 s / 100 MB |
| Changing the transient step | 0.15 ms |
| Changing the field (min/max cached per array) | 10–50 ms |
| Moving the deformation or iso-value slider (on the GPU) | independent of mesh size |
| Updating the contours (cached per state) | 15–40 ms |
| Exporting a scene PDF | 0.2–4 s |
| Exporting an 8 s MP4 clip at 1080p | 5–15 s |
These figures come from §7.2 of the Reference Manual. The ASCII .case parser
runs in parallel, so a 271 MB transient of 239 files (7 steps × 33 variables) now
parses in about 0.2 s, compared with 2.2 s before. While a model with more than
50,000 faces is being rotated or zoomed, the viewport renders at half resolution. NaN and
±∞ are excluded from all ranges, so a single bad sample cannot distort the colour
scale.
Measured on this build
The timings below were obtained on a hexahedral mesh with one million nodes and ten steps, with both builds run on the same machine and under the same test harness.
| Stage | Previous build | This build | Speed-up |
|---|---|---|---|
Binary .case parse (time, memory allocated) | 284 ms, 2.4 GB | 196 ms, 1.2 GB | 1.4× |
| Boundary extraction | 948 ms | 40 ms | 23.7× |
| First scene build | 1,075 ms | 162 ms | 6.6× |
| Scene build with a visibility mask | 1,234 ms | 344 ms | 3.6× |
| Iso-surface scene with part outline | 1,033 ms | 90 ms | 11.5× |
| Interpolated playback frame (blend and refresh) | 58 ms | 9 ms | 6.4× |
At this size, an interpolated playback frame now fits within a single 60 Hz tick (16.7 ms). Larger cases benefit even more: a scene PDF with one million faces and two million mesh-line edges now takes 2–4 s instead of 83–94 s, with byte-identical output, and the per-frame blend on the 271 MB transient mentioned above has dropped from about 20 ms to under 1 ms.
Requirements
Limitations and requirements
- The program requires Windows 10 21H2 or Windows 11 on x64, with a processor that supports x86-64-v2 (SSE 4.2 and POPCNT), and it checks this at startup. There is no macOS or Linux version. Displays from 1280×768 up to 7680×4320 are supported.
- At least 15 GB of RAM is recommended. On machines with less, the program warns at startup and streams large transients from disk.
- IST Vector is a postprocessor and does not solve anything itself. Its input comes from your own solver or from the example data sets installed with it.
- Per-element fields are not contoured directly; a recovery filter must first move them to the nodes.
- Quadratic elements are drawn using their corner nodes only. General polygons and polyhedra
(
nsided,nfaced) are loaded but not drawn. - Meshes with more than 50 million nodes are refused at load.
- A transient shows at most 300 steps. Longer series are thinned evenly, with the first and
last steps always kept, and a dialog reports the reduction. A
.pvdseries that does not fit in free memory is thinned further, or refused if not even two steps fit. - STL and OBJ files carry geometry only, so fields must come from an EnSight or VTK file.
Engineering
Implementation notes
- Pure Avalonia, no VTK. The interface is built on the stock Avalonia 11.3 packages from NuGet, with themes and controls written for Avalonia. The 3-D view is Avalonia’s own OpenGL control, and the colour bar, labels and axis triad are drawn over it by Avalonia, so no native render window is embedded. The VTK library is neither linked nor called. The readers, iso-surfaces, streamlines, glyphs, software rasteriser and PDF writer are all the project’s own C# code, and it is this that allows the screen, the PDF and the MP4 to be produced from the same scene.
- Headless core. The parsers, recovery methods, scene builder, software rasteriser and PDF writer live in a library that needs no window, no GPU and no third-party package, so the whole pipeline is tested without a display. The vector PDF writer belongs to this library and relies on neither GL2PS nor any other OpenGL feedback library.
- Deterministic output. Depth sorting and shading never depend on timing, so PDFs and video frames are identical byte for byte across runs and thread counts. Regression tests compare them against stored baselines.
- Tests. Every push runs a corpus of EnSight, VTK, OBJ and STL files together with a set of fuzz cases covering truncated, mislabelled and non-finite input. The current build passes 2,878 tests, of which 2,257 exercise the core and 621 the desktop application.
- Playback memory. Interpolation alternates between two scratch buffers and allocates nothing per frame, and coordinates are stored as a structure of arrays.
- Native AOT. The program ships as a single self-contained, trimmed executable. All saved settings are serialised with source-generated JSON and written atomically. OpenGL calls are confined to the UI thread, and GPU caches are rebuilt from generation counters.
- Code signing. Release builds are Authenticode-signed (SHA-256) with an Individual Validation code-signing certificate and carry an RFC 3161 timestamp, with DigiCert, Sectigo and GlobalSign as timestamp servers. The executable, the first-party DLLs and the installer are all signed. Thanks to the timestamp, the signatures remain valid after the certificate expires, and SmartScreen accepts the download without a warning.
Documentation
Manuals
.spp, saved views and figure
recipes).
PDF, 330 KB
Architecture & Developer Guide
11 pages
Explains the solution layout, the mesh and field data model, the path from
loading to rendering, concurrency and caching, the constraints imposed by Native AOT,
packaging and signing, the test suite, and how to extend the program.
PDF, 400 KB
Citing
If you publish figures made with IST Vector, please cite the program together with its build date:
IST Vector Postprocessor, build of . Instituto Superior Técnico, Universidade de Lisboa, 2026. https://web.tecnico.ulisboa.pt/ist24806/
For an acknowledgement, a shorter form will do: “Figures were produced with the IST Vector Postprocessor, Instituto Superior Técnico.”
Support
Frequently asked questions
Any question not answered here can be sent to pedro.areias@tecnico.ulisboa.pt.
Installing and running
Do I need administrator rights to install it?
No. The installer offers a per-user installation under
%LOCALAPPDATA%\Programs, which needs no administrator rights, as well as an
all-users installation under Program Files, which does. Nothing has to be
installed beforehand: the .NET runtime is compiled into the executable, and FFmpeg is bundled
for MP4 export. For unattended installation in a computer lab, the installer accepts the
standard Inno Setup switches, for example /VERYSILENT /ALLUSERS from an
elevated prompt.
Does it need an internet connection, an account or a licence key?
No. The program never contacts a server: there is no sign-in, no licence check, no usage reporting and no update check, and it behaves identically on a machine with no network at all.
What graphics hardware does it need? Does it run over Remote Desktop?
A dedicated graphics card is not required; integrated graphics with an up-to-date driver is sufficient. If the 3-D view is slow on a new machine, the likely cause is a missing driver: Windows falls back to its basic software renderer when no proper driver is installed, so install the one supplied by the GPU vendor.
Remote Desktop sessions, and virtual machines without 3-D acceleration, usually rely on the same software renderer. The program still works there, but large meshes become slow.
How do I check that the download is genuine?
The installer is Authenticode-signed, and the Digital Signatures tab of its Properties dialog shows the signature together with its timestamp. Its SHA-256 hash should also match the published checksum, which you can verify in PowerShell:
Get-FileHash "$HOME\Downloads\IST Vector Postprocessor Setup 1.0.0 x64.exe"
PowerShell prints the hash in capitals, but the comparison is not case-sensitive.
How do I update to a newer build? Do I lose my saved views?
Run the new installer over the existing copy; it closes the program if it is running and
replaces it. Your saved views, recent files and per-file settings are preserved, because they
are stored in %APPDATA%\IST-VectorPostprocessor rather than in the program
folder. Uninstalling from Windows Settings also leaves that folder in place, so delete it by
hand if you want a clean start.
Is there help inside the application?
Yes. F1 lists the keyboard shortcuts, and the Help button opens the Reference
Manual, which is installed next to the executable along with
ist_ensight_gold.py. All three manuals can also be
downloaded from this page.
Your data
My solver writes none of the supported formats. Can I still use it?
In most cases, yes. Many codes can write VTK or EnSight directly, so it is worth checking
your solver’s output options first; the supported formats are listed under
Input formats. If your results can be read from Python,
ist_ensight_gold.py will write them as an
EnSight Gold .case in a few lines. And if ParaView can read your results,
you can save them from ParaView as VTK XML (.vtu, .vtm, or a
.pvd series for a transient).
Can I open results from my solver script, or from Explorer?
Yes. Pass the file as the first argument to the executable, which is located in the installation folder:
ISTVectorPostprocessor.exe D:\runs\beam\beam.case
Without an argument, the program opens the first .case file, sorted by name,
in the folder it was started from, or the bundled demo if that folder contains none. Network
paths (\\server\share) are not accepted on the command line, so map the share
to a drive letter instead. Figures and videos cannot be exported from the command line. In
Explorer, the installer adds IST Vector to the Open with menu for
.case, .vtu, .vtp, .vtk and
.pvd files.
Why do my stresses look blocky, and why are there no contours?
Because the field is stored per element. Per-element fields colour whole elements, and IST Vector does not draw contours from element data. A recovery filter such as SPR moves the field to the nodes, after which the colour bar, contours, iso-surfaces and threshold all use the recovered field. If your solver also writes the same field on the nodes, the pair additionally drives the error estimator.
Why are my quadratic elements drawn with straight edges?
Only the corner nodes of quadratic elements are used, so each element is drawn and
exported as its linear counterpart. Where curvature matters, write each quadratic element as
linear sub-elements that use all of its nodes: a tria6 becomes four
tria3 elements, and a tetra10 becomes eight
tetra4.
My run has more than 300 steps. Why do I see fewer?
A transient shows at most 300 steps. A longer .case or .pvd
series is thinned evenly, with the first and last steps always kept, and a dialog reports the
reduction. To view particular steps, open a .pvd or .case file that
lists only those steps; the data files themselves need not change.
Why are parts of my model magenta?
Magenta marks samples whose value in the file is NaN. The colour does not occur in the Turbo map, so it cannot be mistaken for a valid value, and the status bar reports how many samples of the field are affected. These samples are also excluded from the colour range.
How large a model can it open, and how much memory does it need?
Models of up to 50 million nodes can be opened. At least 15 GB of RAM is recommended; with less, the program warns at startup and streams large transients from disk. The Performance section explains how the program’s behaviour changes with mesh size.
A file does not open, or something looks wrong. What should I send?
Please write to pedro.areias@tecnico.ulisboa.pt
and attach the file (or a smaller one that shows the same problem), the message the program
displayed, and the most recent log from
%LOCALAPPDATA%\IST-VectorPostprocessor\logs, which records the underlying
error.
Figures and video
Can I put the exported PDF directly into a LaTeX paper?
Yes. \includegraphics{figure.pdf} works with pdfLaTeX, LuaLaTeX and XeLaTeX.
The labels are set in Latin Modern, the default LaTeX typeface, and the font is embedded. For
a single journal column, the Squeeze toggle narrows the frame to about 65% of its
width, and the PDF follows suit.
Can I export PNG or another bitmap format?
Not directly. For slides or a web page, convert the PDF at whatever resolution you need,
for example with pdftoppm -png -r 300, GIMP or Acrobat. For animations, export
an MP4 instead.
How do I keep the colour scale fixed during an animation?
Tick Lock range across frames on the Scalar card. The scale then spans the field’s minimum and maximum over all steps, so a given colour represents the same value in every frame, both on screen and in the video. Values typed into Min and Max still take precedence.
How do I reproduce a figure later, or on a colleague’s computer?
Save Project writes a .spp file containing the complete scene and the
path to the data. The data is referenced rather than copied, so it must be sent along with the
project; a file of the same name placed next to the .spp is found even when the
original path does not exist on the other machine. Export recipe, on the Saved Views
card, writes only the display settings, as a .json file, for use with another
run.
In addition, every file reopens with the settings it had when it was last closed; Forget, on the same card, clears them.
Windows x64
Download
The installer runs on Windows 10 21H2 or Windows 11 (x64). It is digitally signed, as are the executables it installs, and the current build dates from 25 September 2026.
The Python writer is installed next to the executable, and it can also be downloaded on its own (40 KB).
Questions, files that fail to open and requests for new features are all welcome at pedro.areias@tecnico.ulisboa.pt.