diff --git a/src/Bifurcations.jl b/src/Bifurcations.jl index 08e3724..716c3cc 100644 --- a/src/Bifurcations.jl +++ b/src/Bifurcations.jl @@ -2,15 +2,29 @@ module Bifurcations # Re-export methods from DifferentialEquations extended here: export init, solve, solve!, step! -using DiffEqBase: init, solve, solve!, step! -# see: continuations/interface.jl +import DiffEqBase: init, solve, solve!, step! +# see: solver.jl include("continuations/continuations.jl") + +# Continuation algorithm interface: +using .Continuations: ContinuationCache, ContinuationOptions, + predictor_corrector_step!, new_branches! +# TODO: Reconsider what/how `.Continuations` module "exposes" +# continuation algorithm/method/solver interface. For example, should +# `predictor_corrector_step!` be renamed to `step!`? + +# Continuation problem interface: using .Continuations: AbstractContinuationProblem, AbstractProblemCache import .Continuations: get_prob_cache, get_u0, residual!, residual_jacobian!, residual, isindomain const _C = AbstractProblemCache +include("utils.jl") + +include("solution.jl") +include("solver.jl") + include("fixedpoint.jl") include("diffeq.jl") include("examples/examples.jl") diff --git a/src/continuations/branching.jl b/src/continuations/branching.jl index 66ce395..100e207 100644 --- a/src/continuations/branching.jl +++ b/src/continuations/branching.jl @@ -95,7 +95,15 @@ function solve_simple_bifurcation!(cache, opts, u0, tJ, L, Q) end -function new_branches!(cache, opts, sbint::SimpleBifurcationInterval) +function new_branches!( + cache::ContinuationCache, + opts::ContinuationOptions, + sbint) + # TODO: `sbint` is expected to be a `SimpleBifurcationInterval` + # but it is defined in "down stream". I should turn this into a + # function with "flat" arguments: `new_branches!(cache, opts, u0, + # u1, direction, h)`. + u0, tJ, L, Q = find_simple_bifurcation!(cache, opts, sbint) # TODO: handle not-found case diff --git a/src/continuations/continuations.jl b/src/continuations/continuations.jl index 6b4cfcb..b8cc87d 100644 --- a/src/continuations/continuations.jl +++ b/src/continuations/continuations.jl @@ -1,10 +1,7 @@ module Continuations -import DiffEqBase: solve, solve!, init, step! include("utils.jl") include("base.jl") include("euler_newton.jl") -include("solution.jl") -include("interface.jl") include("zero_point.jl") include("branching.jl") end diff --git a/src/plotting.jl b/src/plotting.jl index 42e266b..296a0f4 100644 --- a/src/plotting.jl +++ b/src/plotting.jl @@ -1,7 +1,5 @@ using RecipesBase -using .Continuations: ContinuationSolution, sweeps_as_vectors - @recipe function f(sol::ContinuationSolution; vars = (0, 1)) ix, iy = vars xs = sweeps_as_vectors(sol, ix) diff --git a/src/continuations/solution.jl b/src/solution.jl similarity index 100% rename from src/continuations/solution.jl rename to src/solution.jl diff --git a/src/continuations/interface.jl b/src/solver.jl similarity index 100% rename from src/continuations/interface.jl rename to src/solver.jl diff --git a/src/utils.jl b/src/utils.jl new file mode 100644 index 0000000..d138851 --- /dev/null +++ b/src/utils.jl @@ -0,0 +1,2 @@ +using .Continuations: isalmostzero +# [[./continuations/utils.jl]] diff --git a/test/test_normal_form.jl b/test/test_normal_form.jl index 95a220c..f775e27 100644 --- a/test/test_normal_form.jl +++ b/test/test_normal_form.jl @@ -2,7 +2,7 @@ module TestNormalForm using Base.Test using Bifurcations -using Bifurcations.Continuations: sweeps_as_vectors +using Bifurcations: sweeps_as_vectors using Bifurcations.Examples: Pitchfork, Transcritical @testset "$normal" for normal in [Pitchfork, Transcritical]