Primary objective
Recover unmeasured structural states and unknown loading histories from partial, noisy observations.
The Bridge module estimates both hidden structural response and unknown external loading from noisy measurements in a nonlinear hysteretic system. Its practical goal is inverse dynamic estimation: reconstruct displacement, velocity, acceleration, and force histories that are not directly measured during excitation.
Recover unmeasured structural states and unknown loading histories from partial, noisy observations.
A nonlinear state-space formulation is linearized locally and solved with Kalman filtering plus Rauch-Tung-Striebel smoothing.
Estimated displacement, velocity, acceleration, hysteretic response, and force histories in one unified inverse-dynamics workflow.
The estimator augments hidden states and input forces so the full nonlinear response can be inferred consistently over time.
The structural dynamics are described by a nonlinear equation of motion:
Here, $\mathbf{u}$ is the displacement, $\dot{\mathbf{u}}$ is the velocity, $\mathbf{z}$ is the hysteretic auxiliary variable, and $\mathbf{p}$ is the unknown external input. Because restoring force depends on loading history as well as current deformation, the system behaves nonlinearly.
The nonlinear restoring force is represented by a hysteresis model,
with the internal variable evolving according to
To estimate all hidden quantities at once, the algorithm constructs an augmented state vector containing displacement, hysteretic internal state, velocity, and input force:
Since the hysteretic evolution is nonlinear, the algorithm applies a local first-order approximation at each time step and rewrites the problem in a Kalman-compatible state-space form:
Measurements are linked to the hidden state through
In this implementation, the measurement vector includes both real sensor data and dummy measurements for the hysteretic auxiliary state and input force, helping preserve observability and reduce estimation drift.
After discretization, the estimator applies a forward Kalman filter and a backward Rauch-Tung-Striebel smoother. The filter provides sequential estimates, while the smoother refines the full history using future observations as well.
The run requires a structural-property definition file and a measurement table with a valid time axis.
property.py and measurement.csv.property.py defines the structural model, including mass, damping, stiff, comp_mat, stype, cov_model, cov_measurement, cov_dm_aux, and cov_dm_force.stype == "bilinear", the file must also include fy and alpha.stype == "BoucWen", the file must include param with A, beta, gamma, n, and alpha.measurement.csv must contain numeric measurement data with a valid time axis in the first row or first column.measurement.csv, and the
covariance values are interpreted as powers of ten to control the trust placed in the model,
measurements, and dummy measurements.