API: pile buckling
POST /v1/buckling — finite-pile generalized eigenvalue request, convergence metadata, and signed eigenmode.
Solves the smallest positive generalized eigenvalue of a finite Euler–Bernoulli pile on explicitly linear Winkler support. The method and limitations are explained in Pile buckling; the same analysis runs interactively at the buckling tool.
Endpoint
https://api.pilecalc.com/v1/buckling/v1/buckling?key=…&req=…&fields=…(for header-less callers)The request reuses the lateral pile geometry, but the soil profile is restricted toelastic layers or a user layer declaring only a constant linear es. Declare headFixity and tipFixity as free, fixed-rotation, pinned, or fixed. Optional controls set mesh size and convergence tolerances.
Authentication, rate limits, and the error envelope are shared by every endpoint — see the API overview. Requests are unit-agnostic: any self-consistent unit system works, and results come back in the same units. The examples below use SI (m, kN, kPa, kN/m³).
Request fields
This table is generated from the same schema that validates the request, so it cannot drift. Where a field appears once per variant row, it belongs to that variant only.
| Field | Type | Required | Constraints |
|---|---|---|---|
unitSystem | "si" | "us" | yes | |
pile | object | yes | |
pile.kind = "uniform" | variant | no | |
pile.length | number | yes | > 0 |
pile.diameter | number | yes | > 0 |
pile.ei | number | yes | > 0 |
pile.groundSurfaceDepth | number | no | ≥ 0 |
pile.kind = "sectioned" | variant | yes | |
pile.sections | object | object[] | yes | min 1 item |
pile.groundSurfaceDepth | number | no | ≥ 0 |
soil | object | object | yes | |
nonlinearPath | object | no | |
nonlinearPath.shear | number | yes | |
nonlinearPath.moment | number | yes | |
nonlinearPath.maximumAxialLoad | number | yes | > 0 |
nonlinearPath.loadSteps | number | yes | integer, 10 – 100 |
nonlinearPath.axialCapacity | number | yes | > 0 |
nonlinearPath.momentCapacity | number | yes | > 0 |
headFixity | "free" | "fixed-rotation" | "pinned" | "fixed" | no | default "free" |
tipFixity | "free" | "fixed-rotation" | "pinned" | "fixed" | no | default "free" |
increments | number | no | integer, 20 – 800 |
eigenTolerance | number | no | 0 – 0.0001 |
maxEigenIterations | number | no | integer, 20 – 5000 |
meshConvergenceTolerance | number | no | 0 – 0.1 |
Response fields
| Field | Type | Description |
|---|---|---|
convergence.relativeLoadStepDifference | number (nonlinear mode) | Relative change in the fitted estimate between requested N and refined 2N compression increments, at fixed fine spatial mesh; maximum 0.01. |
convergence.refinedLoadSteps | number (nonlinear mode) | Actual returned compression increments, exactly twice requested loadSteps; points contains this count plus one. |
convergence.loadStepPathRelativeDifference | number (nonlinear mode) | Maximum head-deflection change at shared load points under compression-step refinement; maximum 0.01. |
fit.estimatedBucklingLoad | number (nonlinear mode) | Hyperbolic load-path asymptote estimate; not an exact failure load or material capacity. |
points[] | object[] (nonlinear mode) | Every converged compression step: axialLoad, headDeflection, maximumMoment, maximumSlope, iterations and relativeForceResidual. |
limits | object (nonlinear mode) | Supplied material limits, maximum observed moment, and whether the extrapolated estimate exceeds the axial limit. |
criticalLoad | number | Smallest positive elastic buckling eigenvalue, compression positive. |
method | object | Stable method ID, designation, and generalized eigenproblem. |
method.edition | string | Versioned PileCalc formulation used by this result. |
method.axialForceDistribution | string | Declares that the eigenproblem uses constant compression over the full pile length. |
method.foundationBasis | string | Declares the explicitly linear Winkler support basis. |
convergence | object | Eigen residual/change and independent fine/coarse mesh evidence. |
convergence.residual | number | Normalized residual of the transformed symmetric eigenpair. |
convergence.meshRelativeDifference | number | Relative critical-load difference between full and half-resolution meshes. |
modeShape[] | object[] | Signed first eigenmode, normalized to max |y| = 1. |
modeShape[].depth | number | Node depth below the pile head. |
modeShape[].y | number | Normalized signed lateral displacement. |
modeShape[].rotation | number | Signed mode rotation per unit normalized displacement. |
Code examples
A complete, runnable request. Replace YOUR_API_KEY (or set PILECALC_API_KEY in your environment).
curl https://api.pilecalc.com/v1/buckling \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"unitSystem": "si",
"pile": {
"kind": "uniform",
"length": 20,
"diameter": 0.61,
"ei": 143000,
"groundSurfaceDepth": 4
},
"soil": {
"layers": [
{
"model": "elastic",
"top": 0,
"bottom": 16,
"gamma": 9,
"esTop": 0,
"esBottom": 12000
}
]
},
"headFixity": "fixed-rotation",
"tipFixity": "fixed",
"increments": 80
}'The GET variant returns criticalLoad,method,convergence as a plain-text CSV line — made for Excel's WEBSERVICE() and Sheets' IMPORTDATA() (see Use PileCalc in Excel). Omit fields to get the full JSON response.
To use the nonlinear method, add nonlinearPath containing shear, moment, maximumAxialLoad, loadSteps (10–100 increments), axialCapacity, and momentCapacity. Supply a free physical tip and a free or fixed-rotation head; use zero applied moment with fixed rotation. Use 40–400 mesh increments. Omit eigen controls. Supported static soil models are sand-reese, sand-api, soft-clay and elastic. The response contains fit, points, limits and path convergence; it does not contain criticalLoad or modeShape.
Interpreting results
criticalLoadis an elastic stability limit, not allowable or factored resistance.- The mode sign and amplitude are arbitrary; the API fixes sign deterministically and normalizes max
|y|to one. - The response is returned only after both the eigen residual and the fine/coarse mesh difference satisfy their limits.
- Nonlinear p-y curves require the explicit nonlinearPath request. Failed equilibrium or material-limit crossings reject the result; they are never returned as buckling loads.
- The geometric-stiffness matrix assumes constant compression over the full pile length; variable axial-force distributions from shaft transfer or self-weight are outside this method.
- A zero-stiffness foundation is accepted only when the declared end restraints remove both rigid-body modes.
Deterministic runtime