StructuralVibration.jl


Generic badge MIT License Aqua QA DispatchDoctor

StructuralVibration.jl is a Julia package designed to generate vibration data for mechanical systems. This package can be used for educational and research purposes. As a teacher, you can use it to illustrate vibration theory and its practical implementation. As a researcher, you can use it to test new methods on synthetic data.

Warning

The package is under active development and is developed as part of my research activities on source identification in structural dynamics and acoustics.

Features

The package provides the following features:

Mechanical models

  • Discrete models
    • Spring-mass-damper SDOF system
    • Spring-mass-damper MDOF system
    • FE models of bar, rod, strings and beams
  • Continuous models
    • Longitudinal bars
    • Torsional bars
    • Strings
    • Beams
    • Rectangular plates
    • Rectangular membranes
  • State space model
    • Continuous state-space representation
    • Discrete state-space representation
      • Zero-order hold (ZOH)
      • First-order hold (FOH)
      • Band-limited hold (BLH)
      • RK4

Vibration data generation

  • Excitation signals
    • Rectangular wave
    • Triangular wave
    • Hammer impact
    • Smoothed rectangular wave
    • Sine wave
    • Half-sine pulse
    • Harversine pulse
    • Swept sine wave
    • Gaussian pulse
    • Colored noise
  • Solution for SDOF systems
    • Free response
    • Forced response due to a harmonic force or a base motion
    • Forced response due to any external force or base motion (Duhamel’s integral)
  • Time-domain integration schemes for linear second order systems
    • Central difference scheme
    • RK4
    • Newmark-beta method
    • Linear acceleration method
    • Fox-Goodwin method
    • HHT
    • WBZ
    • Generalized-alpha
    • Mid-Point rule
  • Frequency-domain calculations for linear systems
    • Frequency spectrum
      • Modal summation
      • Direct method
    • Frequency response function (FRF)
      • Modal summation
      • Direct method
  • State-space solvers
    • Time domain
      • RK4 for continuous systems
      • ZOH, FOH, BLH, RK4 for discrete models
    • Frequency spectrum
      • Modal summation
      • Direct method
    • Frequency response function (FRF)
      • Modal summation
      • Direct method
  • Measurement noise
    • Additive Gaussian white noise (agwn) with a prescribed SNR
    • Additive Colored noise (acn)
    • Multiplicative noise
    • Mixed - agwn + multiplicative noise

Signal processing

  • Measurement noise variance estimation algorithms from noisy data
    • Regularization-based estimation
    • D’Errico’s method - Link to the Matlab version
    • SNR estimation from estimated measurement noise variance
  • Denoising algorithms
    • Regularization
    • Kalman filtering
  • Signal preprocessing
    • Detrending data using polynomial fit
    • Gradient calculation using interpolation
  • Signal estimation
    • Transfer functions estimation (H1, H2, H3, Hv)
    • Welch method (PSD, ESD, Autopower, Autopower linear)
    • Signal spectrum estimation

Visualization

  • Bode plot
  • 2D and 3D Nyquist plot
  • Waterfall plot
  • General 2D plot

Reproducibility

Project StructuralVibration v1.0.0
Status
  [717857b8] DSP v0.8.4
  [7a1cc6ca] FFTW v1.10.0
  [442a2c76] FastGaussQuadrature v1.0.2
  [a98d9a8b] Interpolations v0.15.1
  [37e2e46d] LinearAlgebra v1.12.0
  [429524aa] Optim v1.13.2
  [18e31ff7] Peaks v0.5.3
  [f27b6e38] Polynomials v4.1.0
  [aea7be01] PrecompileTools v1.3.3
  [92933f4c] ProgressMeter v1.11.0
  [9a3f8284] Random v1.11.0
  [276daf66] SpecialFunctions v2.6.1
  [10745b16] Statistics v1.11.1
  [c751599d] ToeplitzMatrices v0.8.5
Julia Version 1.12.0
Commit b907bd0600f (2025-10-07 15:42 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: macOS (arm64-apple-darwin22.4.0)
  CPU: 16 × Apple M4 Max
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, apple-m4)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 12 virtual cores)
Environment:
  JULIA_EDITOR = code
  JULIA_VSCODE_REPL = 1
  JULIA_PKG_SERVER = https://juliahub.com

License

This package is under MIT License.