Skip to content

Installation

It is easy to install HarmonicBalance.jl as we are registered in the Julia General registry. You can simply run the following command in the Julia REPL:

julia
julia> using Pkg
julia> Pkg.add("HarmonicBalance")

or

julia
julia> ] # `]` should be pressed
julia> Pkg.add("HarmonicBalance")

You can check which version you have installled with the command

julia
julia> ]
julia> status HarmonicBalance

Getting Started

Let us find the steady states of an external driven Duffing oscillator with nonlinear damping. Its equation of motion is:

x¨(t)+γx˙(t)+ω02x(t)damped harmonic oscillator+αx(t)3Duffing coefficient=Fcos(ωt)periodic drive
julia
using HarmonicBalance
@variables α ω ω0 F t η x(t) # declare constant variables and a function x(t)
eom = d(x,t,2) + ω0^2*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t)
diff_eq = DifferentialEquation(eom, x)
add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)

# implement ansatz to get harmonic equations
harmonic_eq = get_harmonic_equations(diff_eq)

fixed ==> 1.0, ω0 => 1.0, F => 0.01, η => 0.1)   # fixed parameters
varied = ω => range(0.9, 1.2, 100)           # range of parameter values
result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points

Solution branches:   3
   of which real:    3
   of which stable:  2

Classes: stable, physical, Hopf, binary_labels

The obtained steady states can be plotted as a function of the driving frequency:

julia
plot(result, "sqrt(u1^2 + v1^2)")

If you want learn more on what you can do with HarmonicBalance.jl, check out the tutorials. We also have collected some examples of different physical systems.