Assume given
flatten(a) = collect(Iterators.flatten(a))
Assume furthermore given
julia> diff_eom.equations
OrderedCollections.OrderedDict{Symbolics.Num, Symbolics.Equation} with 1 entry:
x(t) => Differential(t)(Differential(t)(x(t))) - F*cos(t*ω) + x(t)*(ω0^2) ~ 0
Then the following two functions work beautifully and as a charm (stolen from HarmonicBalance.jl)
julia> keys(diff_eom.equations)
KeySet for a OrderedCollections.OrderedDict{Symbolics.Num, Symbolics.Equation} with 1 entry. Keys:
x(t)
and
julia> flatten(unique([x.val.arguments for x in keys(diff_eom.equations)]))
1-element Vector{Any}:
t
Assume wishing to extend this to (and later to N >> 1 ODEs)
julia> diff_eq
System of 2 differential equations
Variables: (x(t))[1], (x(t))[2]
Harmonic ansatz: (x(t))[1] => ; (x(t))[2] => ;
Differential(t)(Differential(t)((x(t))[1])) - k*(x(t))[2] + (x(t))[1]*(ω0^2) ~ F*cos(t*ω)
Differential(t)(Differential(t)((x(t))[2])) - k*(x(t))[1] + (x(t))[2]*(ω0^2) ~ 0
Then the keys become
julia> keys(diff_eq.equations)
KeySet for a OrderedCollections.OrderedDict{Symbolics.Num, Symbolics.Equation} with 2 entries. Keys:
(x(t))[1]
(x(t))[2]
How do I get the t out in this case?
Merely repeating above is insufficient as shown below (Vector{Any} is no good sign)
julia> flatten(unique([x.val.arguments for x in keys(diff_eq.equations)]))
4-element Vector{Any}:
x(t)
1
x(t)
2
What is an appropriate syntax here? Thanks.