# Real-ESSI Simulator 26.11 (Nov 2026)

GLOBAL_RELEASE, version 26.11. Changes since 26.10 (commit a8d02cee).

## What users will notice

- **Clean stop when an analysis does not converge.** A static or transient analysis that cannot converge now stops with a clear message and **exit code 3**, with the advice to reduce the step size by 10 or 100. Before, the remaining loading stages were skipped and Real-ESSI still ended with exit code 0. The same applies when the constitutive integration fails. Parallel runs stop with `MPI_Abort`.
- **Missing input files are reported.**
  - `essi -f <file>` with a missing file: error message, **exit code 2**. Before, Real-ESSI silently waited for keyboard input. Starting `essi` without `-f` is still the interpreter.
  - `include "<file>"` with a missing file inside an input file: error message, **exit code 2**. Before, the rest of the input was skipped and the exit code was 0. Typed in the interpreter, the include gives a message and the session continues.
- **Old versions no longer delete themselves.** A version older than two years prints a large warning with a pointer to https://real-essi.us and keeps running.

## Fixes

- **Memory leaks** (valgrind suite: 192 FAIL → 0):
  - the constraint handler and all its FE_Elements were lost at every new loading stage and at the end of the input;
  - 20- and 27-node bricks did not free their material pointer array;
  - the 4-node ANDES shell did not free its material holder;
  - Node did not free its input energy;
  - DOF_GroupGraph did not free its vertices.
- **ShearBeam with Classic elastoplastic materials** (e.g. `vonMisesArmstrongFrederick`) failed at the first step: total-strain input (`setTrialStrain`) is now supported.
- **HDF5 output:**
  - meshes with shells: empty arrays are no longer indexed;
  - 20-node brick energy-density output: no more read past the end of the array.
- **4-node ANDES shell:** an uninitialised mass flag is now initialised.
- **`combine_elastic_load_cases`:**
  - input files still open for writing are closed before combining;
  - a missing comma had dropped two output fields;
  - an interactive pause (`cin`) is removed.
- **ModifiedOpenSeesServices:** a set of critical fixes (parallel numberer, domain partitioner, linear solvers incl. PETSc and UMFPACK, DRM input, HDF5 channel).
- **DSL / Scotch:** symbol conflict fixed.

## Verification

All results are with the debug builds (`-Og`, `_GLIBCXX_ASSERTIONS`) and the Release builds of this version:

| | result |
|---|---|
| analytic solutions | 249 PASS |
| dynamic tests | 40 RAN |
| education examples (sequential) | 230 RAN, 0 errors |
| valgrind memcheck | 191 PASS |
| parallel | 165 PASS |
| parallel education examples | 4 RAN |
| inclined wave | 9 PASS |
| code stability (96 cases), against a stored baseline | **identical**, debug and Release builds |

While checking the examples, several education examples that had silently failed for years were corrected in the examples archive:

- frictional contact examples: sign of gravity;
- step sizes for von Mises / Armstrong-Frederick and Drucker-Prager examples;
- a tiny hardening for perfectly plastic single-element shear;
- Cosserat plate with a hole: Cosserat moduli, plus a new `plot.py` that compares the stress concentration with the analytic value, 2.082 vs 2.090.
