Skip to content

KATAI 2D v0.8.1

Choose a tag to compare

@fkkarakurt fkkarakurt released this 20 Aug 09:52
· 25 commits to main since this release

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 — .k2d stays 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.
  • τmax is now τmax (in-plane), and S is 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 .k2d files.
  • 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