StructuralDynamicsODESolvers.jl
This package contains pure Julia implementations of ordinary differential equations (ODE) solvers for structural dynamics problems.
Features
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)
Example
The following example is explained in this notebook.
For further examples see the Example 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")
Related libraries
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.
References
- [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.