KATAI 2D v0.8.0
KATAI 2D v0.8.0
Verification release, and the first one in which the Python surface reaches the
whole engine.
Six capabilities — the interface, the plate, the geogrid, the embedded beam,
HS small, and Soft Soil with its creep — were implemented and tested at the
element, but had never been run along the path a user actually takes: from a
file, through the mesher and the driver. Run that way for the first time,
five of the six were wrong. Each one converged, reported success and
returned a number.
The verification record grows from 45 declared cases over 17 input files to
57 cases over 26 files; the suite is 152 tests. The project file moves
from v12 to v14.
If you script KATAI 2D, read this first
The Python builder now covers the whole model. Before this release a script
could build soil, water, loads and phases — and for a wall, an anchor, a
geogrid, a pile row or an interface you had to drop to the raw bindings and
assemble the material list, the element list and the index between them by
hand. The pleasant layer covered the tutorial and gave up at the first real job.
wall = prj.structures.plate((12, 20), (12, 6), EA=1.2e7, EI=1.0e5,
interfaces="both", name="Diaphragm wall")
anchor = prj.structures.anchor((12, 18), (20, 14), EA=2.0e5, spacing=2.5,
prestress=300.0)
prj.phases.plastic("Excavate", activate=[anchor], deactivate=[pit])
print(katai.summary(prj.run(), prj))New on the Python surface: prj.structures (plate · anchor · geogrid · pile ·
interface), katai.summary() and katai.extremes(), the bound structural
forces (StructForce / ForceStation — a wall's moment and a pile's axial
force were previously readable from everywhere except a script),
prj.phases.transient_flow(...) and .fully_coupled(...), and the per-phase
design= (EC7 / TBDY 2018 partial factors) and water= (staged dewatering).
These are new in 0.8.0. If prj.structures raises AttributeError on your
machine, you are on an older wheel — check with python -c "import katai; print(katai.__version__)" and reinstall from the assets below. The release gate
now proves this from the installed wheel: a fresh virtual environment with the
environment scrubbed must run the anchored-excavation example, wall, anchor,
interfaces and all, before the wheel is allowed to leave the build.
Wrong answers this release fixes
Each of these produced a converged run and a green suite.
- An interface drawn along a fixed boundary was welded shut. Both sides of
the split sit at identical coordinates, and boundary conditions are applied
by coordinate, so both were fixed: the block sheared elastically against its
own base instead of sliding. PLAXIS's own sliding-block case returned
5,401,612 kN/m where the manual's arithmetic gives 60. - Deactivating the soil welded the beams standing in it. The run converged,
reported "ok" and handed back max|u| = 0.000000e+00 with no diagnostic. - HS small rode the virgin backbone — Masing's rule was not applied, and the
E₀/E_ur ceiling was missing. Measured +5.7% / +12.9% / +34.8% too much
heave at three unloading sizes. - The tension cut-off did not reach the models it belongs to. Every
Hardening Soil, HS small, Soft Soil and Soft Soil Creep run allowed tension
past σ_t, while the schema switches the cut-off on by default — a systematic
difference from the reference code, in the unsafe direction. - Every embedded-beam interface spring was 2.5× too stiff, and a pile row
could not be loaded at its head at all. - The installer compared a real hash against the number 55. Windows
PowerShell 5.1 returns a.sha256attachment as a byte array without
-UseBasicParsing, so the integrity check was comparing a hash against one
byte of itself. It would have "passed" for any file whose hash began with a
matching byte.
Also new: "Reset small strain" as a phase option (Material Models Manual
sec. 7.6), the Li & Dafalias dilatancy below the phase-transformation line
for HS small, and numerical-uncertainty cases on axes other than the mesh — one
of which measured a prediction of ours wrong and is recorded that way.
Full detail, with the citation for every clause: CHANGELOG.md.
One limitation found while preparing this release, declared rather than quietly fixed
A verification case was asserting a result that only one of the two solver
backends could produce. Halving the element size on the pile-capacity case under
its 1500 kN/m overload converges on the MKL build and returns the pile's
600.0000 kN/m capacity; on the vendored Eigen solver — same source, same file,
same mesh — the run reports a collapse mechanism after equilibrating 10% of the
load. Continuous integration builds the Eigen composition, which is why it had
been red while every local run was green.
The case has been moved to a load where both backends return the capacity
exactly. The disagreement itself is open, and the practical consequence is
worth stating: a number computed within a few percent of a model's own limit
load should be treated as backend-dependent on this build. Iterative refinement
in the Eigen solver was tried as the obvious fix and did not recover the run, so
it was reverted rather than shipped on a hypothesis the measurement refused. The
whole account, with the measurements, is in
numerical-uncertainty.md §10.
Upgrading
Files are guarded in one direction only. This build reads every older .k2d
unchanged; an older build refuses a v14 file rather than misreading it,
which is the point of the guard — each bump marks an input the older build
would have dropped in silence and solved a different problem for.
Assets
| File | What it is |
|---|---|
katai2d-0.8.0-win64.zip |
Self-contained command line for Windows: one executable, no runtime dependency, Eigen solver backend. |
katai2d-0.8.0-cp312-abi3-win_amd64.whl |
Python package (pip install), CPython ≥ 3.12, with the katai console script. Verified in a fresh virtual environment. |
*.sha256 |
Checksums, also used by install.ps1. |
katai2d-0.8.0-win64.zip
dedb4dac27ea88bec754050ae0e8026568645df7fed15bd7104d2b7ef45c3908
katai2d-0.8.0-cp312-abi3-win_amd64.whl
4e19dd9c7943eae6e07dab8d13db7e841c53ad36de3525296955002ca9141a04
The Windows executable is still unsigned, so SmartScreen or Defender may
warn about it — v0.7.0 drew a generic Trojan:Win32/Wacatac.B!ml verdict, which
is what a reputation heuristic says about an unknown unsigned binary rather than
an identification of anything. Verify the checksum above, upload the asset to
VirusTotal if you want an independent opinion, or use the wheel, which has never
been flagged. Code signing is on the roadmap; it is a purchase, not a patch.