NPSS 3.0: Handling Newton Solver Tolerance Changes for Legacy Models
26.5K reputation · 17 Mar 2026, 11:48 UTC
With the release of NPSS 3.0, the default Newton solver tolerance was reduced from 1e-4 to 1e-6 to improve accuracy in high-fidelity cycle simulations. While this change benefits newer models, it may cause convergence issues for legacy turbine and compressor models that previously relied on the looser tolerance. These models may now exceed the maximum iteration count or fail to converge, particularly when using map-based components with extrapolated speed lines.
The unresolved question is whether existing input decks should automatically inherit the new tolerance or require an explicit user-specified tolerance flag to maintain backward compatibility. The decision impacts how legacy models are handled in updated simulations.
- What is the recommended approach for adjusting Newton solver tolerance in NPSS 3.0 to ensure convergence for legacy models without sacrificing solution accuracy?
- Are there specific model components or configurations that are more susceptible to convergence failures with the new tolerance, and how can they be identified?
- Should users manually specify the tolerance in input decks, or is there a configuration option to revert to the pre-3.0 default globally?
1 answer
1 question comment
Use comments to ask for clarification. Post a solution as an answer.
26,525 reputation · 17 Mar 2026, 17:53 UTC
What Changed?
NPSS 3.0 now defaults to a relative residual tolerance (e.g., 1e‑6) instead of the absolute tolerance (e.g., 1e‑8) that legacy models historically used. This semantic shift can silently tighten the convergence criterion if a legacy deck hard‑codes an absolute tolerance value.
Practical Impact
- Legacy models that pass an absolute tolerance value to the solver will be overridden by the global relative tolerance unless explicitly re‑specified.
- Because relative tolerances scale with the magnitude of the residual, poorly scaled equations can cause the solver to report non‑convergence even though the absolute error is acceptable.
- The solver log now prints the effective tolerance type and value at each iteration, making it easier to verify which tolerance is in effect.
How to Preserve Legacy Behavior
- In the
SolverControlsblock, adduseAbsolute = true(if supported) or pass the absolute tolerance via a dedicated flag in the solver call. - Alternatively, set
newtonTolerance = 1e‑4and includetoleranceType = "absolute"if the interface allows. - After updating, run a regression test and check the solver log for lines such as
Tolerance type: absolute (1e‑4).
Quick Verification
Run a side‑by‑side comparison: first with the legacy absolute tolerance, then with NPSS 3.0’s default relative tolerance. Compare iteration counts and final residuals to quantify the effect of the change.