Skip to the content.

NeqSim 3.26.0

Status: prepared release candidate; publication pending. These notes were prepared on 2026-10-20 from master 9d6366f3af86ac79522a533b6c7da3696fc4b310, covering 117 commits after v3.25.0. The version-preparation change does not publish artifacts or create a tag. Open pull requests are outside this snapshot.

Changes included in this snapshot.

Compatibility review before upgrading

JAMA removal and EJML interfaces

PR #4416 removes JAMA from the production and test classpaths. Some former JAMA interfaces now use EJML SimpleMatrix; their old Java method descriptors are not preserved. This candidate therefore includes source, binary, and saved-solver incompatibilities. It must not be described as an entirely backward-compatible minor release. The requested candidate number remains 3.26.0; the release owner must resolve the version and contract classification under repository governance and the API lifecycle policy before publication. An accepted NRC and the required major contract boundary must be recorded for breaking changes; preparing this version does not satisfy or waive those requirements.

Affected integration Required migration
JamaLinearAlgebra Use EjmlLinearAlgebra, preferably through the primitive-array LinearAlgebraOperations interface.
ChemicalReactionList.calcReacRates(...) Adapt to its EJML return value, or prefer the existing array-returning calcReationRates(...).
FluidBoundaryInterface.getMassTransferCoefficientMatrix() Adapt to SimpleMatrix[], or use getMassTransferCoefficientArray().
Matrix overloads and subclass hooks in StatisticsBaseClass Rebuild overrides against the EJML signatures; retain dimensions and ownership semantics.
LevenbergMarquardtResult matrix constructor and covariance/correlation accessors Use EJML arguments or the named fromArrays(...) factory and array accessors.
Serialized SysNewtonRhapsonPhaseEnvelope working state Recreate UID-1000 solvers from thermodynamic inputs; the current array-based solver uses UID 1001.

Recompile Java integrations and update Python/JVM code that constructs or reads JAMA matrices. Recreate persisted working solvers affected by changed field types; adding the old JAMA JAR does not convert their state. Same-version serialization tests do not establish compatibility with all older saved models. The complete migration guide records the affected interfaces, legacy TP-flash solver boundary, numerical corrections, and tests.

The EJML phase-envelope implementation also rejects volume roots that fail the EOS pressure equation. This corrects false pure-component saturation points rather than restoring the retired numerical backend.

Eclipse E300 critical-volume units

PR #4455 writes VCRIT in m3/kmol and ZCRIT as a dimensionless quantity, and converts critical volumes to NeqSim’s internal cm3/mol on import. Older NeqSim exports could overstate both values by a factor of 1000. Regenerate those files before using them in external reservoir or PVT tools. The reader’s magnitude-based legacy detection does not support mixed-unit blocks or remove the need to verify unusually large critical volumes. See the E300 import and migration guide.

Input validation and changed results

Main changes since 3.25.0

Thermodynamics, flashes, and chemistry

Process equipment, networks, and optimization

Continuous tasks, MCP, and development tools

Planned distributions

Distribution Version or expected asset Runtime
Core Maven artifact com.equinor.neqsim:neqsim:3.26.0 Java 17+
Core standalone library neqsim-3.26.0.jar Java 17+
Java 8 Maven artifact com.equinor.neqsim:neqsim:3.26.0-Java8 Java 8+
Java 8 standalone library neqsim-3.26.0-Java8.jar Java 8+
MCP runner and checksum neqsim-mcp-server-3.26.0-runner.jar and .jar.sha256 Java 21+
MCP container ghcr.io/equinor/neqsim-mcp-server:3.26.0 Container runtime

The MCP module’s own Maven artifact version remains 1.0.0-SNAPSHOT; its revision and neqsim.version resolve to the coordinated core version. The runner’s public filename and container tag use the core release version. The Python package has its own publishing process; changing these POMs does not publish a new Python package.

The wrapper is pinned to Maven 3.9.16, the publishing baseline qualified in 3.25.0 preparation. The Java 8 release profile retains central-publishing 0.11.0 while the standard profile uses 0.12.0. Maven 3.10.0 was reintroduced after 3.25.0, but its known artifact-level metadata issue still affects the retained 0.11.0 profile. Qualify the bundles from both profiles before advancing the wrapper again. Both profiles retain waitUntil=published.

Release completion requirements

  1. Complete the compatibility/NRC review above and record the release owner’s version decision. Recheck these notes against the final release commit.
  2. Require successful configured CI and security checks on the final candidate, including both supported core configurations, numerical/model specifications, slow-test shards, documentation, formatting, and packaged MCP protocol tests. A skipped numerical job or a same-version serialization test is not evidence of full release compatibility.
  3. Build the core Java 17 and Java 8 distributions, sources/Javadoc, and the Java 21 MCP runner; inspect artifact versions, dependencies and checksums. Preserve the Java 8 dependency pins and verify the Java 8 runtime separately.
  4. Merge the reviewed version PR. The existing default-branch workflow can create a draft release with built assets; the preparation branch does not authorize publication. Include these migration notes in the release body together with the generated change list.
  5. Publish only after the release owner approves. Verify both Maven Central versions reach PUBLISHED, all GitHub assets and the MCP checksum are downloadable, and the MCP container build succeeds. Record the final tag, commit, workflow results and publication time in the release record.

Local and hosted validation evidence belongs in the preparation PR. This document lists candidate changes and required gates; it does not claim those gates have passed or that the planned artifacts already exist.