|
| 1 | +using HarmonicBalance, Test |
| 2 | + |
| 3 | +@variables ω₀ γ λ α ω t x(t) |
| 4 | + |
| 5 | +natural_equation = d(d(x, t), t) + γ * d(x, t) + (ω₀^2 - λ * cos(2 * ω * t)) * x + α * x^3 |
| 6 | +diff_eq = DifferentialEquation(natural_equation, x) |
| 7 | + |
| 8 | +add_harmonic!(diff_eq, x, ω); |
| 9 | + |
| 10 | +harmonic_eq = get_harmonic_equations(diff_eq) |
| 11 | + |
| 12 | +fixed = (ω₀ => 1.0, γ => 0.002, α => 1.0) |
| 13 | +varied = (ω => range(0.99, 1.01, 100), λ => range(1e-6, 0.03, 100)) |
| 14 | + |
| 15 | +result_2D = get_steady_states(harmonic_eq, varied, fixed; verbose=true) |
| 16 | + |
| 17 | +@testset "filter solutions" begin |
| 18 | + result = deepcopy(result_2D) |
| 19 | + @test length(result.solutions[1]) == 5 |
| 20 | + filter_result!(result, "stable") |
| 21 | + @test length(result.solutions[1]) == 3 |
| 22 | +end |
| 23 | + |
| 24 | +@testset "Classifying solutions" begin |
| 25 | + result = deepcopy(result_2D) |
| 26 | + filter_result!(result, "stable") |
| 27 | + classify_solutions!(result, "sqrt(u1^2 + v1^2) >0.0", "not_zero") |
| 28 | + @test sum(any.(get_class(result, "not_zero"))) == 2 |
| 29 | +end |
0 commit comments