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

POST
https://api.pilecalc.com/v1/buckling
GET
/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.

FieldTypeRequiredConstraints
unitSystem"si" | "us"yes
pileobjectyes
pile.kind = "uniform"variantno
pile.lengthnumberyes> 0
pile.diameternumberyes> 0
pile.einumberyes> 0
pile.groundSurfaceDepthnumberno≥ 0
pile.kind = "sectioned"variantyes
pile.sectionsobject | object[]yesmin 1 item
pile.groundSurfaceDepthnumberno≥ 0
soilobject | objectyes
nonlinearPathobjectno
nonlinearPath.shearnumberyes
nonlinearPath.momentnumberyes
nonlinearPath.maximumAxialLoadnumberyes> 0
nonlinearPath.loadStepsnumberyesinteger, 10 – 100
nonlinearPath.axialCapacitynumberyes> 0
nonlinearPath.momentCapacitynumberyes> 0
headFixity"free" | "fixed-rotation" | "pinned" | "fixed"nodefault "free"
tipFixity"free" | "fixed-rotation" | "pinned" | "fixed"nodefault "free"
incrementsnumbernointeger, 20 – 800
eigenTolerancenumberno0 – 0.0001
maxEigenIterationsnumbernointeger, 20 – 5000
meshConvergenceTolerancenumberno0 – 0.1

Response fields

FieldTypeDescription
convergence.relativeLoadStepDifferencenumber (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.refinedLoadStepsnumber (nonlinear mode)Actual returned compression increments, exactly twice requested loadSteps; points contains this count plus one.
convergence.loadStepPathRelativeDifferencenumber (nonlinear mode)Maximum head-deflection change at shared load points under compression-step refinement; maximum 0.01.
fit.estimatedBucklingLoadnumber (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.
limitsobject (nonlinear mode)Supplied material limits, maximum observed moment, and whether the extrapolated estimate exceeds the axial limit.
criticalLoadnumberSmallest positive elastic buckling eigenvalue, compression positive.
methodobjectStable method ID, designation, and generalized eigenproblem.
method.editionstringVersioned PileCalc formulation used by this result.
method.axialForceDistributionstringDeclares that the eigenproblem uses constant compression over the full pile length.
method.foundationBasisstringDeclares the explicitly linear Winkler support basis.
convergenceobjectEigen residual/change and independent fine/coarse mesh evidence.
convergence.residualnumberNormalized residual of the transformed symmetric eigenpair.
convergence.meshRelativeDifferencenumberRelative critical-load difference between full and half-resolution meshes.
modeShape[]object[]Signed first eigenmode, normalized to max |y| = 1.
modeShape[].depthnumberNode depth below the pile head.
modeShape[].ynumberNormalized signed lateral displacement.
modeShape[].rotationnumberSigned mode rotation per unit normalized displacement.

Code examples

A complete, runnable request. Replace YOUR_API_KEY (or set PILECALC_API_KEY in your environment).

POST /v1/buckling
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

  • criticalLoad is 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

The default linear mode is one sparse banded eigenanalysis at two mesh resolutions. There is no perturbation load, bracketing bound, amplification cutoff, or repeated nonlinear load search.