Status
Active development
Role
Sole author and maintainer
Built with
C++, Python, Finite element method
Licence
Apache-2.0
DOI
10.5281/zenodo.20692282
Source
github.com/fkkarakurt/katai2d
Website
kataigeo.com
Updated

KATAI 2D is a two-dimensional finite element platform for geotechnical analysis. It is built around one commitment: the formulation is stated openly and every capability is verified against published theory before it ships.

The distinction matters because geotechnical software is usually consumed as a black box. An engineer supplies parameters, receives a settlement or a factor of safety, and has no practical way to establish whether the number follows from the model they think they specified. KATAI 2D is written so that the path from governing equation to printed result is inspectable at every step, and so that the claim “this is correct” is backed by a test rather than by a brochure.

ScopePermalink to “Scope”

CapabilityCoverage
IdealisationsPlane strain, axisymmetric
Analysis typesDeformation, stability, groundwater flow, consolidation, coupled flow–deformation, seismic dynamics
Elements6-node and 15-node triangles (quadratic and quartic interpolation)
Constitutive modelsLinear elastic; Mohr-Coulomb with a tension cut-off; Hardening Soil; HS small; Soft Soil; Soft Soil Creep
DrainageDrained, undrained (A/B/C), non-porous
Structural elementsPlates with Mp/Np hinges, embedded beam rows, node-to-node anchors, geogrids, Coulomb interfaces
Initial stateK₀ procedure, gravity loading, single-phase safety
Nonlinear analysisPlastic analysis, strength-reduction factor of safety
Construction sequenceMulti-phase staged construction with inherited activation
Design codesEC7 (EN 1997-1) and TBDY 2018 partial-factor catalogues, applied per phase
Front endskatai command line and an engineer-facing Python package, over one input contract

The fifteen-node triangle is included deliberately. Lower-order elements lock in near-incompressible plastic flow, and collapse loads computed with them are systematically high. Where a limit load is the answer being sought, element choice is not a performance preference — it changes the result, and the platform is explicit about that.

Constitutive modelsPermalink to “Constitutive models”

Six models are implemented, in increasing order of what they ask of the user:

  • Linear elastic — for verification work and for stiff structural elements, not for soil at working loads.
  • Mohr-Coulomb — implemented with exact return mapping in principal stress space, so the edges and the apex of the yield pyramid are handled in closed form rather than smoothed away, with a tension cut-off and an optional dilatancy cut-off. The criterion itself is best understood through the Mohr circle it is drawn from.
  • Hardening Soil — for problems where unloading–reloading stiffness governs the answer, which is most excavation and retaining-wall work.
  • HS small — the small-strain stiffness overlay, with Masing’s rule, a ceiling on G₀/G_ur, the phase option that resets a strain history whose cause has gone, and the Li & Dafalias dilatancy below the phase-transformation line.
  • Soft Soil and Soft Soil Creep — logarithmic compression, and the time-dependent settlement that a normally consolidated clay keeps producing after the load has stopped changing.

Each of the six is verified twice: at the stress point against the equations as published, and again through a checked-in input file that walks the whole path from the file through the mesher and the driver. The second one is where the faults were.

SolverPermalink to “Solver”

A sparse direct solver with pattern-aware factorisation and parallel assembly. Staged and time-dependent analyses reuse the sparsity pattern between phases and between time steps, which is where most of the cost sits in a multi-phase run: the pattern is established once and the numerical factorisation is repeated against it.

Direct rather than iterative is a deliberate choice for problems of this size. It removes an entire class of question — whether a result reflects the model or the convergence tolerance of the linear solver — from the interpretation of a run.

VerificationPermalink to “Verification”

Three kinds of oracle are admitted, and only three: a closed-form solution stated in full inside the test, an independent computation path that shares no code with the solver, or a published benchmark with the primary source cited. Self-consistency — the code agreeing with itself — does not count.

The record is 58 declared verification cases over 26 benchmark input files checked into the repository as plain .k2d text, asserted by 153 automated tests that run on every build, on a configuration containing no proprietary component. The matrix and its bibliography are generated from declarations inside the tests themselves, so the table cannot drift from the suite; a gate fails the build when it tries.

BenchmarkReferenceResult
Prandtl strip footing Nc (φ = 0)2 + π (Prandtl 1921)+0.6%
Slope factor of safety (φ–c reduction)Griffiths & Lane (1999), published ≈ 0.991.010
Rigid strip footing on elastic soilGiroud (1972) 15.15+1.1%
Unconfined dam discharge with a seepage faceCharny (1951) exact theorem+1.02%
Terzaghi 1D consolidation U(Tv)Terzaghi series−1.2% … −0.4%
El Centro 1940 NS record identitypublished PGA ≈ 0.319 g0.31882 g at 2.02 s

Stating the tolerance alongside the benchmark is the part that matters. A verification claim without a number is a marketing claim. The full record is public at kataigeo.com/benchmarks, and I have written up what building that suite actually found — including the cases where the thing that turned out to be wrong was the oracle, not the code. A more recent one works the rock model through a tunnel against its closed-form ground reaction curve, which is also the comparison that showed a model verified at the material point is not yet a model that works in a boundary value problem.

Documentation and citationPermalink to “Documentation and citation”

The scientific manual documents the theoretical foundations, numerical methods, element families, constitutive models, solvers, groundwater flow and consolidation theory, together with the verification protocol. It is archived on Zenodo under CC-BY-4.0 and has a permanent identifier:

Küçükkarakurt, F. (2026). KATAI 2D — Scientific Manual (Version 0.2). Zenodo. https://doi.org/10.5281/zenodo.20692282

An edition covering the capabilities added since is in preparation. A CITATION.cff ships in the repository, so GitHub’s “Cite this repository” button produces the same entry the DOI resolves to.

StatusPermalink to “Status”

Version 0.8.1, released under the Apache License 2.0 at github.com/fkkarakurt/katai2d — free for commercial and academic use. Two artifacts ship for Windows x64: a self-contained katai.exe with no runtime dependency, and one abi3 Python wheel that serves every CPython ≥ 3.12 and carries the same command line. Both must reproduce the verification-corpus numbers in a clean environment before they are allowed to leave the build.

It is pre-release software and says so: interfaces and the input format may still change, and the format is versioned so that an older build refuses a newer file rather than misreading it.

A desktop application — modelling, meshing, results and reporting on the same verified engine — is a separate track, still in development. Early access registration for it is open at kataigeo.com and carries no payment or commitment.

← Back to all projects, or read the writing that comes out of them.