Skip to content

Releases: NonlinearOscillations/HarmonicBalance.jl

v0.9.0

26 Feb 12:44
063ee2d
Compare
Choose a tag to compare

HarmonicBalance v0.9.0

Diff since v0.8.0

The new features include:

  • All the time evolution feature are now only available when also OrdinaryDiffEq is loaded. This makes loading/compile time less convoluted and reduces our namespace in a normal HB session. I would say that in the future we want something similar to Plots. Allowing the user to choose their plotting package and not have clashing namespaces with for example Makie.plot and Plots.plot.
  • I added a ModelingToolkit extension which gets loaded when ModelingToolkit is loaded in the same session. It allows us to translate the HarmonicEquation struct to an ODEProblem. The ModelingToolkit framework does this very efficiently by: also compiling Jacobian automatically, freedom to choose in-place or out-of-place, making it statically compiling and adding extra structure for the OrdinaryDiffEq solver to use. The result in a dramatic increase in performance when solving the ODE (from 14ms to 500μs).
  • Lastly, I added a SteadyStateDiffEq extension. For the parameter estimation project, I had to rewrite the HarmonicBalance steady state sweep solver. It was highly inefficient (no use of Jacobian in the RK solver, not static, too many allocations) and it did an interpolation of the parameters sweep where it changed the parameter in every time step. The latter, at first thought, seems a good idea, but it introduces oscillations and you had to evolve for very long which introduces inefficiency and energy loss (timestep integration loss). Instead, we now use a root solver (Newton-Raphson) following the branch until the branch is unstable (bifurcation) and we use a steady solver to find the next branch. This is similar to what follow_branch does but without using HomotopyContinuation. This made it Automatic differentiable needed for optimization algorithms.

Merged pull requests:

Closed issues:

  • Debloat HarmonicBalance.jl (#98)
  • Requires.jl (#100)
  • progress_bar for classification of solutions (#146)

v0.8.0

04 Jan 11:15
659dd36
Compare
Choose a tag to compare

HarmonicBalance v0.8.0

Diff since v0.7.2

The release contains some breaking changes, i.e., some of you old code will not work on the new version. This includes:

  • We changed the keyword random_warmup::Bool to replace it with method::Char keyword. We did this to allow more homoyopy methods then :total_degree and :random_warmup For example, now you could also use the :polyhedral method. See Homotopy Continuation documentation for more info. In the future, we are planning to add the :monodromy method.
  • For larger systems, the classification was quite slow. This was partly due to inefficient use of dictionary as a data structure. We rewrote the code such that this was avoided and got 3x speedup from it. However, this comes with side effect that costum classification function defined by the user will not work for v0.8. Nevertheless, these costum function can easily be update by assuming a vector instead of dictionary.

Some other (non-breaking) noteworthy changes are:

  • We threaded the classification process. Just start your julia instance with some threads and threading is automatically enabled.
  • We have added the option to access all the homotopy solver options. The enables you to tweak tracker_options and endgame_options which make the homotopy faster. Just add the kwargs you want to the get_steady_states and those will be passed on to the homotopy solve function.
  • The last but not the least, we finally got a seed feature. This means HarmonicBalance.jl is now completely reproduceable. This not only means that we now can write better tests for the package, but you can also more easily report bugs/results to collaborators. But even better, when sharing code to the outside world it will be reproduceable.

Merged pull requests:

Closed issues:

  • get_single_solution use in internals (#132)

v0.7.2

04 Dec 11:57
82364ca
Compare
Choose a tag to compare

HarmonicBalance v0.7.2

Diff since v0.7.1

Merged pull requests:

Closed issues:

  • update Documenter.jl to v1 (#114)

v0.7.1

19 Nov 13:17
796337c
Compare
Choose a tag to compare

LimitCycles module brushed up, reproduces https://arxiv.org/abs/2308.06092

Diff since v0.7.0

v0.7.0

24 Oct 13:01
8df6596
Compare
Choose a tag to compare

HarmonicBalance v0.7.0

Diff since v0.6.4

Merged pull requests:

  • plotting branches, optimized sorting, deps removed (#88) (@jkosata)
  • Precompilation (#94) (@jkosata)
  • Correcting small issues (#95) (@oameye)
  • Harmonic balance cleaned (#96) (@oameye)
  • Jacobian spectrum in the rotating frame (#99) (@bestlerm)
  • upgrading to Symbolics 5.0 (#102) (@oameye)
  • Krylov-Bogoliubov (#103) (@oameye)
  • Symbolics 5.0 to KB branch (#106) (@oameye)
  • Make complex number possible in ParameterRange (#107) (@oameye)
  • Fix depricated hysteris_sweep file (#110) (@oameye)
  • Eigenvalue plotting function (#115) (@oameye)
  • Revert "Fix depricated hysteris_sweep file" (#117) (@jdelpino)
  • Fix Depricated hysterysis file (#118) (@oameye)
  • tag v7.0 release (#119) (@oameye)
  • add CompatHelper and Tagbot to make our life easier (#120) (@oameye)
  • CompatHelper: add new compat entry for DelimitedFiles at version 1, (keep existing compat) (#121) (@github-actions[bot])
  • CompatHelper: add new compat entry for DocStringExtensions at version 0.9, (keep existing compat) (#122) (@github-actions[bot])
  • CompatHelper: bump compat for Latexify to 0.16, (keep existing compat) (#123) (@github-actions[bot])

Closed issues:

  • Jacobian eigenvalue plotter is no longer supported in 0.60 (#45)
  • Tests for plotting (#52)
  • Use precompilation (#53)
  • Instability in computing steady states for certain parameter ranges (#62)
  • add keyword to the plot function to only show specific branches. (#74)
  • Linear response spectrum in the rotating frame (#97)
  • Test performance by using Unityper (#104)
  • Need of SnoopPrecompile for julia 1.9 (#105)
  • add CompatHelper (#113)

v0.6.4

29 Nov 18:14
e1cffcf
Compare
Choose a tag to compare

What's Changed

  • Plot documentation update by @oameye in #83
  • plotting branches, optimized sorting, deps removed by @jkosata in #88

v0.6.3

13 Nov 20:20
6d59de7
Compare
Choose a tag to compare

What's Changed

new functionality

  • Implementation of plot_spaghetti and plot2d_cut by @oameye in #80
  • added keyword to control the display of the progress bar (resolves #60) by @oameye in #65

small fixes

  • Add branch argument to the documentation by @oameye in #66
  • Naive implementation of conditional allocation of ProgressBar by @oameye in #73
  • Update parametron.md by @oameye in #78
  • Data structures to ordered collections by @oameye in #77
  • Realify warnings by @oameye in #81

Full Changelog: v0.6.2...v0.6.3

v0.6.2

12 Oct 12:42
d421519
Compare
Choose a tag to compare

What's Changed

  • fixed loading for version changes

  • ordering revamped to have fixed order

  • limit cycle unique classification

  • 2d result test added

v0.6.1

06 Oct 07:48
925c757
Compare
Choose a tag to compare

What's Changed

v0.6.0

03 Oct 12:06
fa97b82
Compare
Choose a tag to compare
  • matplotlib replace by Plots, plotting functions overhauled for more flexibility (see docs)
  • slow_flow! bugfixed to keep higher-order derivatives if requested
  • LinearResponse simplified to use plot_linear_response with order as keyword, instead of many different functions
  • documented examples reduced and updated, made 1:1 with the notebook repo