## HarmonicBalance.jl

A Julia package for solving nonlinear differential equations using the harmonic balance method.
Author NonlinearOscillations
Popularity
30 Stars
Updated Last
1 Year Ago
Started In
December 2021

HarmonicBalance.jl is a Julia package for solving nonlinear differential equations using the method of harmonic balance.

## Installation

To install HarmonicBalance.jl, you can use the github repo or the Julia package manager,

```using Pkg

## Documentation

For a detailed description of the package and examples, see the documentation.

This repo contains a collection of example notebooks.

## Simple example

Let's find the steady states of a driven Duffing oscillator with nonlinear damping, its equation of motion is:

```using HarmonicBalance
@variables α, ω, ω0, F, t, η, x(t) # declare constant variables and a function x(t)
diff_eq = DifferentialEquation(d(x,t,2) + ω0^2*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos(ω*t), 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 => 1.0, F => 0.01, η=>0.1)   # fixed parameters
varied = ω => LinRange(0.9, 1.2, 100)           # range of parameter values
``````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
``````
`plot(result, "sqrt(u1^2 + v1^2)")`

## Citation

If you use HarmonicBalance.jl in your project, we kindly ask you to cite this paper, namely:

HarmonicBalance.jl: A Julia suite for nonlinear dynamics using harmonic balance Jan Košata, Javier del Pino, Toni L. Heugel, Oded Zilberberg SciPost Phys. Codebases 6 (2022)

### Required Packages

View all packages

### Used By Packages

No packages found.