https://github.com/quantumengineeredsystems/harmonicbalance.jl
A Julia package for solving nonlinear differential equations using the harmonic balance method.
https://github.com/quantumengineeredsystems/harmonicbalance.jl
floquet floquet-theory harmonic-balance julia nonlinear-dynamics oscillators perturbation-theory symbolic-computation time-dependent-hamiltonian time-dependent-systems
Last synced: 8 months ago
JSON representation
A Julia package for solving nonlinear differential equations using the harmonic balance method.
- Host: GitHub
- URL: https://github.com/quantumengineeredsystems/harmonicbalance.jl
- Owner: QuantumEngineeredSystems
- License: bsd-3-clause
- Created: 2021-12-06T16:15:14.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-10-20T11:48:35.000Z (8 months ago)
- Last Synced: 2025-10-20T13:28:44.520Z (8 months ago)
- Topics: floquet, floquet-theory, harmonic-balance, julia, nonlinear-dynamics, oscillators, perturbation-theory, symbolic-computation, time-dependent-hamiltonian, time-dependent-systems
- Language: Julia
- Homepage: https://quantumengineeredsystems.github.io/HarmonicBalance.jl/stable/
- Size: 67.4 MB
- Stars: 79
- Watchers: 2
- Forks: 18
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.bib
Awesome Lists containing this project
README

[](https://quantumengineeredsystems.github.io/HarmonicBalance.jl/)
[](https://juliapkgstats.com/pkg/HarmonicBalance)
[](https://juliapkgstats.com/pkg/HarmonicBalance)
[](https://github.com/invenia/BlueStyle)
[](https://github.com/JuliaTesting/Aqua.jl)
[](https://github.com/aviatesk/JET.jl)
[](https://codecov.io/gh/QuantumEngineeredSystems/HarmonicBalance.jl)
**HarmonicBalance.jl** is a Julia package for solving periodic, 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,
```julia
using Pkg
Pkg.add("HarmonicBalance")
```
## Documentation
For a detailed description of the package and examples, see the [documentation](https://quantumengineeredsystems.github.io/HarmonicBalance.jl).
[This repo](https://github.com/quantumengineeredsystems/HarmonicBalance-notebooks) contains a collection of example notebooks.
## [Example: steady states of a nonlinear resonator](https://quantumengineeredsystems.github.io/HarmonicBalance.jl/dev/tutorials/steady_states)
Let's find the steady states of a driven Duffing resonator with nonlinear damping, with equation of motion:

```julia
using HarmonicBalance, Plots
@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)
# solve for a range of ω
result = get_steady_states(harmonic_eq, ω => range(0.9, 1.2, 100), (α => 1., ω0 => 1.0, F => 0.01, η => 0.1))
```
```
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
```
```julia
plot(result, "sqrt(u1^2 + v1^2)")
```

## Citation
If you use HarmonicBalance.jl in your project, we kindly ask you to cite [this paper](https://scipost.org/SciPostPhysCodeb.6), 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)
### BibTeX entry
```bibtex
@Article{10.21468/SciPostPhysCodeb.6,
title={{HarmonicBalance.jl: A Julia suite for nonlinear dynamics using harmonic balance}},
author={Jan Košata and Javier del Pino and Toni L. Heugel and Oded Zilberberg},
journal={SciPost Phys. Codebases},
pages={6},
year={2022},
publisher={SciPost},
doi={10.21468/SciPostPhysCodeb.6},
url={https://scipost.org/10.21468/SciPostPhysCodeb.6}
}
```
## See also
- [JosephsonCircuits.jl](https://github.com/kpobrien/JosephsonCircuits.jl): Models superconducting circuits using modified nodal analysis and harmonic balance with an analytic Jacobian.
- [Manlab](https://manlab.lma.cnrs-mrs.fr/spip/): A similar package in Matlab also using continuation methods and using the Harmonic Balance method for periodic orbits.