The Curve Fit App

Bilinear / Trilinear Fitting of Force–Deformation Curves

no data loaded
Fitted model
% of Dy–Dt
Curve type
%

Override values
points

Load a data file, paste two columns, or pick an example to begin.
Response parameters

Results appear here after fitting.

About the Curve Fit App

Overview

The Curve Fit App takes a monotonic (or backbone) force–deformation curve of a structural member, connection or component and idealises it with a bilinear (elastic + hardening) or, when membrane action is present, trilinear (elastic + hardening + membrane) model. It returns the key transition points: elastic stiffness Ke, yield Fy, plastic force Fp, hardening stiffness Ks, membrane-action onset Fma, peak/capping Fmax, Fc, and post-capping stiffness Kpc. Three smooth nonlinear models (Power, Richard–Abbott, Ramberg–Osgood) can also be fitted. Units are those of your data; D is deformation and F is force (or rotation and moment).

Using the app

  1. Load data — two columns (deformation, force) from .txt/.csv/.xlsx, pasted text, or an example. A (0, 0) point is added if missing.
  2. Curve type — auto-detected on load: if the curve at 90% of the peak index lies above the secant to the peak it is treated as “w/o membrane action”; otherwise “w/ membrane action”.
  3. Fitted model — choose the idealisation to draw. Post-yield fit chooses how Ks and the plastic force Fp are found: Equal area (default) or Tangent slope (section 5b). Fp from the selected fit is used by the bilinear and Ramberg–Osgood models; both slopes and both Fp values are always reported.
  4. Override values — tick to impose Ke, Fy, Dmax or Dma when automatic detection is poor. A value of 0 means “automatic”.
  5. Pre-processing — optional moving-average smoothing (window in points) and a deformation offset (useful when initial slip or seating gives a soft start).
  6. Check Ke — plots the individual elastic-stiffness estimates so you can judge which is reasonable.
  7. Save — figure as PNG/SVG, or all parameters and plotted curves as CSV.

1. Data preparation

2. Elastic stiffness Ke

Three independent estimates are computed on the capped curve:

Ke = median(Ke,30%, Ke,sec, Ke,inc)

With membrane action, the 30% method uses 0.3 Fma instead of 0.3 Fmax, the incremental estimate is not used, and Ke is the mean of the remaining two.

3. Yield point

The yield point is where the response first departs from the elastic line F = KeD. Scanning points with F ≥ 0.1 Fmax, the first point with

(KeDi − Fi) / Fi ≥ 0.05

is found, and the point just before it is taken as (Dy, Fy).

4. Peak, capping and post-capping

Kpc = (Fmax − Fend) / (Dend − Dc)

The deformation at which the post-peak force first drops below 0.8 Fmax is also reported, together with F1/3Ke: the point where the secant line F = (Ke/3)D first meets the curve (searched past the peak if needed and interpolated between data points; “—” if the curve never drops to that line). (Capping and Kpc require the post-peak branch to extend at least 0.001 and 0.005 deformation units beyond the peak, thresholds set for rotations in radians.)

5. Equal-area hardening slope Ks and plastic force Fp

The hardening line passes through the target point (Dt, Ft) — the peak for curves without membrane action, or the membrane-action onset (Dma, Fma) otherwise:

L2(D) = Ft + Ks(D − Dt)

It intersects the elastic line L1(D) = KeD at D1. Trial slopes Ks = 0, 0.001Ke, … up to max[0.5Ke, (Ft − Fy)/(Dt − Dy)] are tested, and the one making the areas between the idealisation and the data balance is selected:

minKs | ∫DyD1 (L1 − F) dD + ∫D1Dt (L2 − F) dD |

The plastic force point (Dp, Fp) is the intersection of the two lines:

Fp = (Ft − KsDt) · Ke / (Ke − Ks),   Dp = Fp / Ke

A regression hardening slope Ks,reg is also obtained by linear regression of the data over the final ~40% of the hardening branch before the target point (used by, and shown only for, the Richard–Abbott model).

5b. Tangent post-yield slope Ks,tangent

The line is anchored at the target point (Dt, Ft) — Fmax, or Fma with membrane action — and its slope is fitted by least squares, with the line forced through the anchor, to the data in the last p% of the range from Dy to Dt (default 25%; at least three points are used):

Ks,tangent = Σ (Di − Dt)(Fi − Ft) / Σ (Di − Dt)²

So it follows the slope of the curve just before the anchor rather than balancing areas. With Tangent slope selected, the plastic force point is the intersection with the elastic line:

Dp = (Ft − Ks,tangentDt) / (Ke − Ks,tangent),   Fp = KeDp

The data points used for the fit are highlighted on the plot. If the slope is not lower than Ke, or the lines meet outside the curve, a message asks you to change the fitted portion or Ke.

6. Membrane action (trilinear)

When membrane action stiffens the response, a third branch runs from the onset point to the peak:

Kma = (Fmax − Fma) / (Dmax − Dma)

The onset Dma is where the curve's convexity flips. The curve is resampled up to the peak and the tangent stiffness Kt is taken from a local linear regression over ±2% of Dmax; the search starts after yield. Options:

If no clear stiffening is found, the original method is used and the results panel says so.

7. Nonlinear models

Each model has one shape exponent n, found by a grid search over n = 0.01 … 20 (step 0.01) minimising Σ|Fdata − Fmodel| at 51 equally spaced points, using the monotonic envelope of the data. The upper bound (Du, Fu) is the peak, or the membrane-action onset for curves with membrane action (unless Dmax is overridden).

Power model (three-parameter; Goldberg & Richard, as used by Kishi & Chen):

F = KeD / [1 + (D/D0)n]1/n,   D0 = Fu / Ke

Richard–Abbott model (four-parameter):

F = (Ke − Kp)D / [1 + (D/D0)n]1/n + KpD,   Kp = Ks,tan,   D0 = (Fu − KpDu) / (Ke − Kp)

Ramberg–Osgood model (deformation as a function of force):

D = Dp (F/Fp) [1 + (F/Fp)n−1],   0 ≤ F ≤ Fu

References

Web version of Fit App v1.2511. Additions relative to the desktop version: selectable membrane-action detection, the membrane-action rules for Ke, the tangent post-yield fit, and a fallback for Ks,reg (uses Ks when too few points are available).