From a1c2c61db7fd816bf61369af088f6c497bfb624e Mon Sep 17 00:00:00 2001 From: Orjan Ameye Date: Fri, 14 Jun 2024 10:00:11 +0200 Subject: [PATCH] export the limit cycle module (#192) * export the limit cycle module * add commented test --- src/HarmonicBalance.jl | 3 +++ src/modules/LimitCycles.jl | 6 ++++- src/modules/LimitCycles/gauge_fixing.jl | 3 --- test/limit_cycle.jl | 32 ++++++++++++++++++++++--- 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/HarmonicBalance.jl b/src/HarmonicBalance.jl index 348dc78d..4f626de0 100644 --- a/src/HarmonicBalance.jl +++ b/src/HarmonicBalance.jl @@ -66,6 +66,9 @@ export plot_linear_response, plot_rotframe_jacobian_response include("modules/LimitCycles.jl") using .LimitCycles +export get_cycle_variables +export add_pairs! +export get_limit_cycles include("modules/KrylovBogoliubov.jl") using .KrylovBogoliubov diff --git a/src/modules/LimitCycles.jl b/src/modules/LimitCycles.jl index 6e30ca83..c5d6cd0d 100644 --- a/src/modules/LimitCycles.jl +++ b/src/modules/LimitCycles.jl @@ -7,4 +7,8 @@ using DocStringExtensions include("LimitCycles/gauge_fixing.jl") include("LimitCycles/analysis.jl") -end \ No newline at end of file +export get_cycle_variables +export add_pairs! +export get_limit_cycles + +end diff --git a/src/modules/LimitCycles/gauge_fixing.jl b/src/modules/LimitCycles/gauge_fixing.jl index eea32644..7a882bcb 100644 --- a/src/modules/LimitCycles/gauge_fixing.jl +++ b/src/modules/LimitCycles/gauge_fixing.jl @@ -1,6 +1,3 @@ -export get_cycle_variables -export add_pairs! - using HarmonicBalance: is_rearranged, rearrange_standard, _remove_brackets using HarmonicBalance.LinearResponse: get_implicit_Jacobian, get_Jacobian import HarmonicBalance: is_stable, is_physical, is_Hopf_unstable, order_branches!, diff --git a/test/limit_cycle.jl b/test/limit_cycle.jl index e0c0d548..5248d78f 100644 --- a/test/limit_cycle.jl +++ b/test/limit_cycle.jl @@ -1,6 +1,5 @@ using HarmonicBalance import HarmonicBalance.LinearResponse.plot_linear_response -import HarmonicBalance.LimitCycles.get_limit_cycles @testset "van der Pol oscillator " begin @@ -16,7 +15,7 @@ import HarmonicBalance.LimitCycles.get_limit_cycles HarmonicBalance.LimitCycles._choose_fixed(harmonic_eq, ω_lc) fixed = (); - varied = μ => range(1, 5, 5) + varied = μ => range(2, 3, 2) result = get_limit_cycles(harmonic_eq, varied, fixed, ω_lc; show_progress=false, seed=SEED) @@ -24,5 +23,32 @@ import HarmonicBalance.LimitCycles.get_limit_cycles @test sum(any.(classify_branch(result, "unique_cycle"))) == 1 plot(result, y="ω_lc") - plot_linear_response(result, x, branch=1, Ω_range=range(0.9, 1.1, 2), order=1) + plot_linear_response(result, x, branch=1, Ω_range=range(2.4, 2.6, 2), order=1) end + +# takes to long +# @testset "coupled modes" begin + # @variables F, ω, ω_lc, t, x(t), y(t) + + # eqs = [d(x,t,2) + 1.0^2*x - x^3 - 0.006*y ~ F*cos(ω*t), + # d(y,t,2) + 1.005^2*y - y^3 - 0.006*x ~ 0] + + # # differential equations + # diffeq = DifferentialEquation(eqs, [x,y]) + + # # specify the harmonic ansatz for x and y: x = u(T) cos(ωt) + v(T) sin(ωt) + # add_harmonic!(diffeq, x, ω) + # add_harmonic!(diffeq, y, ω) + # add_harmonic!(diffeq, x, ω + ω_lc) + # add_harmonic!(diffeq, y, ω + ω_lc) + # add_harmonic!(diffeq, x, ω - ω_lc) + # add_harmonic!(diffeq, y, ω - ω_lc) + + # harmonic_eq = get_harmonic_equations(diffeq); + + # fixed = (F => 0.0015) + # varied = (ω => range(0.992, 0.995, 2)) + + # # results + # result = get_limit_cycles(harmonic_eq, varied, fixed, ω_lc; threading=true) +# end