Migration from previous versions
We only highlight changes that are potentially breaking for the user.
Version 0.8.x
update!(prob, x)becomesrestore_problem!(prob, x, pars)getlinsolver/getblsbecomeget_bordered_linsolverOneParamCont,TwoParamCont,TwoParamPeriodicOrbitContbecomeAbstractOneParamCont,AbstractTwoParamCont,AbstractTwoParamPeriodicOrbitCont_getsolutionbecomessaved_solution- the
tangentfield inMoorePenrosebecomespredictor - the
autodiffkeyword argument for computing normal forms is removed FlowDEconstruction is now keyword-based- the BT fields
nfsuppare merged intonf
Version 0.8.0
- new BVP interface:
BVPModel,PeriodicOrbitModel,DiscretizedBVP,discretize,generate_solution, the problemBVPBifProblemand the discretizersShooting,Trapeze,Collocation(with mesh adaptation) SolPeriodicOrbitbecomesBVPSolution,POSolutionbecomesPOInterpolationandPOSolutionAndStatebecomesPOSavedSolutionAndStateTrapbecomesTrapezein the BVP interfacejacobian = :autobecomesjacobian = AutoDiffDense()for BVP Shooting- add
normal_formalias forget_normal_form
Version 0.7.x
- remove
AbstractPeriodicOrbitDiscretization: the subtypes now inherit directly fromAbstractBoundaryValueDiscretization AbstractPODifferentialDiscretizationbecomesAbstractDifferentialDiscretizationAbstractPOFiniteDifferencesDiscretizationbecomesAbstractFiniteDifferencesDiscretizationAbstractPOShootingDiscretizationbecomesAbstractShootingDiscretization*ShootingProblembecomes*Shooting;PeriodicOrbitOCollProblembecomesCollocation;PeriodicOrbitTrapProblembecomesTrapeze
Version 0.6.x
- add
AbstractBoundaryValueDiscretizationand the discretization hierarchyAbstractPeriodicOrbitDiscretization,AbstractPODifferentialDiscretization,AbstractPOFiniteDifferencesDiscretization AbstractPoincareShootingProblembecomesAbstractPoincareShootingDiscretizationAbstractShootingProblembecomesAbstractPOShootingDiscretizationBTProblemMinimallyAugmentedbecomesBTMinimallyAugmentedFormulationTWProblembecomesTWModelFold/Hopf/PeriodDoubling/NeimarkSackerProblemMinimallyAugmentedbecomeFold/Hopf/PeriodDoubling/NeimarkSackerMinimallyAugmentedFormulationAbstractProblemMinimallyAugmentedbecomesAbstractMinimallyAugmentedFormulationWrapPOCollbecomesPeriodicOrbitFunctionalColl,WrapPOShbecomesPeriodicOrbitFunctionalSh,WrapPOTrapbecomesPeriodicOrbitFunctionalTrapcorrect_bifurcationbecomes_correct_event_labels- add
PeriodicOrbit{Tdisc},TravellingWave{Tdisc}to bridge discretization and problem - add accessors
get_discretization,get_formulation,get_solution,getparams - change signature of
continuationfor periodic orbits:prob::AbstractPeriodicOrbitProblembecomesdisc::AbstractPeriodicOrbitDiscretization - remove the
paramsandlensfields fromPeriodicOrbitFunctionalTrap,PeriodicOrbitFunctionalSh,PeriodicOrbitFunctionalColl,WrapTWand theparamfield from the*MAProblemstructs;getparamsnow delegates togetparams(get_formulation(prob)) DefaultLSusesVI.Zero()/VI.One()instead of literal0/1
Version 0.5.x
jacobianparameter inPeriodicOrbitTrapProblemchanges fromSymbolto custom typeFloquetCollGEVbecomesFloquetGEVandextract_periodbecomes_extract_period- export
ODEBifProblemandjadbecomesjacobian_adjoint BorderedArraycomplies withVectorInterface.jland most of the code as wellmulticontinuationreturns aBranchinstead ofVector{Branch}
Version 0.4.0
We rely on Accessors.jl instead of Setfield.jl. This basically amounts to changing @lens by @optic in your code.
jacobian_maargument changes fromSymbolto type. For example,continuation(br, 1; jacobian_ma = :minaug)becomescontinuation(br, 1; jacobian_ma = MinAug()).- add
update!function toBifurcationProblem, which allows to adapt the problem during continuation.
Version 0.3.4
- correct selection of default linear solver for MoorePenrose
- pass iterator for plotting
update_section_every_stepbecomes a UInt- add fields in
PeriodDoublingProblemMinimallyAugmentedandNeimarkSackerProblemMinimallyAugmentedfor holding Resonance test values - add more abstract types
<: AbstractWrapperPOProblem - introduce function
get_lenses - introduce new struct
FinalisePOto wrap finalizers for periodic orbits AbstractProblemMinimallyAugmentedbecomes parametric- rewrite
get_bif_point_codim2 - add callback
cbMaxNormAndΔp FloquetWrapperbecomes mutablegetvectortypebecomes_getvectortypeandhasstabilitybecomes_hasstability
Version 0.3.3
Migration from v0.2.x to v0.3.x
A new version v0.3 has been tagged in which the function names, keyword arguments,... follow the Julia convention. There are a lot of breaking changes. For example, callbackN has been changed to callback_newton.
Migration from v0.1.x to v0.2.x
New version of the package with modified interface. You are now required to define a BifurcationProblem to perform continuation or bifurcation analysis. You also need to pass your plot/record functions.
The previous interface is available under the tag 0.1.12 which can be installed by doing
] add BifurcationKit@0.1.12
The new version provides many bugs fix though. (Please note that the docs are up to date).
Don't use AD yourself
There is nothing wrong with doing so but this is done in the constructor of BifurcationPoblem, so if myJacAD is the jacobian computed using ForwardDiff, the declaration
prob = BifurcationProblem(F, x, p, lens ; J = myJacAD) should be
prob = BifurcationProblem(F, x, p, lens) There is nothing wrong in passing your own jacobian though
Error: no method matching iterate(::BifurcationKit.ContResult
This is because you use the old syntax
br, = continuation(...)instead of (no comma)
br = continuation(...)Arguments to continuation
recordFromSolution and plotFromSolution should be passed to BifurcationProblem instead of continuation.