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 Examples section of the documentation.
using StructuralDynamicsODESolvers
k = 2 ; m = .5 ; c = .1
u0 = 1 ; v0 = 0
alg = 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, alg, NSTEPS=300);
using Plots
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 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.