Hi all, my question may be somewhat related to this thread.
I want to solve a FEM second-order differential equation with DifferentialEquations.jl
using a constant and given time-step \Delta t. The problem is basically expressed as:
\mathbf{M} \ddot{\mathbf{x}}(t) + \mathbf{C}\dot{\mathbf{x}}(t) + \mathbf{Kx}(t) = \mathbf{F}(t)
where \mathbf{M} is the mass matrix, \mathbf{C} is the damping matrix, \mathbf{K} is the stiffness matrix and \mathbf{F}(t) is the force vector.
To solve this problem with DifferentialEquations.jl
, I have to:
- Form the corresponding first-order sytem (which is straightforward)
- Define the solver with the desired time-step. From the DiffEq doc, I think it can be implemented this way:
sol = solve(prob, Tsit5(), dt = Δt)
However, I don’t figure out how to use a time-variant excitation term \mathbf{F}(t), which is given as a matrix of dimensions (number of degrees of freedom)x(number of time steps). This is rather classical in the FEM softwares I use such as Nastran.
My question is, what is the recommended way to do this with DifferentialEquations.jl
?
Should I use DataInterpolations.jl
to transform my time series into a function and use it as in Example 3 of the Getting started section of the doc ? Or is there a more direct way ?
Thanks for your help.