This package contains pure Julia implementations of ordinary differential equations (ODE) solvers for structural dynamics problems.
The following solvers for linear dynamic equations are available:
- Bathe (equal size sub-steps) [BAT07]
- Central difference
- Houbolt [HOU50]
- Newmark [NEW509]
- Backward Euler (for first order systems)
The following example is explained in this notebook.
For further examples see the Example section of the documentation.
using StructuralDynamicsODESolvers using Plots plotly() k = 2 ; m = .5 ; c = .1 u0 = 1 ; v0 = 0 algo = Bathe(Δt = 0.1) M = m*ones(1, 1) C = c*ones(1, 1) K = k*ones(1, 1) R = zeros(1) sys = SecondOrderAffineContinuousSystem(M, C, K, R) U₀ = u0 * ones(1) ; V₀ = v0 * ones(1) prob = InitialValueProblem(sys, (U₀, V₀)) sol = solve(prob, algo, NSTEPS=300) plot(sol, vars=(0, 1), xlab="time", ylab="displacement")
This package has been created for research purposes. If you are new to numerically solving differential equations in Julia, we strongly suggest that you use the DifferentialEquations.jl suite.
- [BAT07] Bathe, Klaus-Jürgen. "Conserving energy and momentum in nonlinear dynamics: a simple implicit time integration scheme." Computers & structures 85.7-8 (2007): 437-445.
- [NEW59] Newmark, Nathan M. "A method of computation for structural dynamics." Journal of the engineering mechanics division 85.3 (1959): 67-94.
- [HOU50] Houbolt, John C. "A recurrence matrix solution for the dynamic response of elastic aircraft." Journal of the Aeronautical Sciences 17.9 (1950): 540-550.