KATAI 2D v0.8.1
KATAI 2D v0.8.1
Two things a result can be wrong about without looking wrong — and one of them
had been deciding which of the two linear-solver backends was right.
The first is a verdict. A load-controlled analysis that stops short of full
load reports the fraction it reached, and this program was calling that fraction
the soil's capacity whichever of the three ways it had stopped: because no
descent direction existed, because the tangent went singular along a mechanism,
or because the per-increment iteration limit ran out. Only the first two are
statements about the ground. The third is a statement about a setting — and it
was the one KV-STR-004's refined-mesh run was making, on a mesh where the same
model carries its full load once the limit is adequate.
The second is a field. The degree of saturation was drawn, tabulated and
printed for runs that never computed it — a static analysis has no saturation
field, and the reader answered 1.0 when asked anyway. Above a phreatic surface
that is not merely uncomputed; it is certainly wrong. Both reached the
calculation report, which is the document that leaves the building.
If you have .res files from 0.8.0, read this first
- Results files are now version 6. This build reads every older one; 0.8.0
and earlier refuse one written by this build, which is the forward-version
guard doing its job. Re-open the project and re-calculate, or keep the older
build for older result files. Project files are unaffected —.k2dstays at
version 14. - The per-increment iteration limit is now derived from the material class
(200 where the tangent is nonsymmetric — nonlinear soil, interfaces, embedded
beams — and 80 otherwise) instead of always being 80. A run that reported a
collapse at a low load factor may now converge. To reproduce a 0.8.0 run
exactly, set that phase's Max iterations to 80. τmaxis nowτmax (in-plane), andSis no longer offered by runs
that did not compute it.
What a collapse report says now
An analysis that stops short names which of the three things happened, and only
two of them keep the limit-load reading. The two messages, as the solver writes
them (the numbers are from the runs they were taken from):
Did not fully converge: equilibrated 41% of the applied load. No increment of
the remaining load could be equilibrated at any step size: the tangent
stiffness went singular along a mechanism … This equilibrated fraction is the
incremental limit (collapse) load.
Did not fully converge: equilibrated 0% of the applied load. The last
increment ran out of iterations (4 per increment) while its out-of-balance
force was still falling, so this fraction is a limit of the iteration budget
and NOT a collapse load. Raise the phase's iteration limit and re-run
before reading it as a capacity.
The reason travels with the result — SolveResult.stopped_by in C++, in Python
and in the .res file — so the Studio's panels and both reports ask it instead
of inferring a capacity from a number.
Measurements behind the change
| before | after | |
|---|---|---|
| KV-STR-004, refined mesh, MKL | converges, 66 s | converges, 37 s |
| KV-STR-004, refined mesh, portable (Eigen) | "collapse at 10% of the load" | converges |
| both backends agree on max|u| | — | 0.1822167 m (7 figures) |
| tension cut-off on / off, same file | 561 / 57 Newton iterations | — |
Verification
- 153/153 on the MKL composition, 151/151 on
portable(the vendored
Eigen solver, no proprietary component) — the first full run of the suite on
that composition. - 58 declared verification cases over 26 benchmark
.k2dfiles. - Full changelog:
CHANGELOG.md - What the backend disagreement was, and what closed it:
docs/validation/numerical-uncertainty.md§10
Downloads
| file | SHA-256 |
|---|---|
katai2d-0.8.1-win64.zip |
af52d11f38151d71c9652d37f7fd6e330c28e3ff172a637ef2b4fc00282ea6e1 |
katai2d-0.8.1-cp312-abi3-win_amd64.whl |
d41169af526eb261b2323048ac9e0cd93cb5171b1b74c248dc5e85928d23ff4a |
irm https://raw.githubusercontent.com/fkkarakurt/katai2d/main/install.ps1 | iex
katai info # KATAI 2D 0.8.1 (2026-08-19)pip install katai2d-0.8.1-cp312-abi3-win_amd64.whl