-
-
Notifications
You must be signed in to change notification settings - Fork 210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bifurcation kit extension #2300
Conversation
Co-authored-by: Fredrik Bagge Carlson <[email protected]>
Support heterogeneous parameters for linearize and remake
ext/MTKBifurcationKitExt.jl
Outdated
# When input is a NonlinearSystem. | ||
function BifurcationKit.BifurcationProblem(nsys::NonlinearSystem, u0_guess, p_start, bif_par, args...; plot_var=nothing, record_from_solution=BifurcationKit.record_sol_default, kwargs...) | ||
# Creates F and J functions. | ||
ofun = NonlinearFunction(nsys; jac=true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is the jac required? The user should request it if it's not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will make it optional.
This looks like a great idea. Just needs tests and docs. |
Sounds good, there is a bug in this for for systems with more species/parameters that I need to fix. I might also drop the |
The recursive structure of SystemStructure was giving precompilation an issue so I removed that module. Then I setup precompilation on the basic interface. Test case: ```julia @time using ModelingToolkit @time using DifferentialEquations @time using Plots @time begin @variables t x(t) D = Differential(t) @nAmed sys = ODESystem([D(x) ~ -x]) end; @time prob = ODEProblem(structural_simplify(sys), [x => 30.0], (0, 100), [], jac = true); @time sol = solve(prob); @time plot(sol, idxs=[x]); ``` Before: ``` 11.082586 seconds (19.32 M allocations: 1.098 GiB, 4.09% gc time, 0.71% compilation time: 87% of which was recompilation) 0.639738 seconds (661.39 k allocations: 101.321 MiB, 4.33% gc time, 6.46% compilation time) 3.703724 seconds (5.71 M allocations: 322.840 MiB, 5.22% gc time, 9.92% compilation time: 86% of which was recompilation) 7.795297 seconds (8.25 M allocations: 483.041 MiB, 2.50% gc time, 99.88% compilation time) 21.719376 seconds (44.11 M allocations: 2.485 GiB, 5.68% gc time, 99.48% compilation time) 2.602250 seconds (4.04 M allocations: 253.058 MiB, 4.60% gc time, 99.90% compilation time) 2.450509 seconds (5.17 M allocations: 332.101 MiB, 5.89% gc time, 99.41% compilation time: 30% of which was recompilation) ``` After: ``` 9.129141 seconds (22.77 M allocations: 1.291 GiB, 4.65% gc time, 0.62% compilation time: 87% of which was recompilation) 0.784464 seconds (667.59 k allocations: 101.524 MiB, 3.95% gc time, 4.16% compilation time) 3.111142 seconds (5.42 M allocations: 305.594 MiB, 3.82% gc time, 6.39% compilation time: 82% of which was recompilation) 0.105567 seconds (157.39 k allocations: 10.522 MiB, 8.81% gc time, 95.49% compilation time: 74% of which was recompilation) 1.993642 seconds (4.03 M allocations: 218.310 MiB, 2.69% gc time, 96.95% compilation time: 82% of which was recompilation) 1.806758 seconds (4.06 M allocations: 254.371 MiB, 4.44% gc time, 99.91% compilation time) 1.694666 seconds (5.27 M allocations: 339.088 MiB, 6.18% gc time, 99.39% compilation time: 31% of which was recompilation) ``` And that's on v1.9, so v1.10 should be even better. 20 seconds off hehe.
Fix recursive structure and setup precompilation
- All sections, except building hierarchal models, use `@mtkmodel`. - "Non-DSL way of defining an ODESystem" section is added.
Remove ODAEProblem from acausal tutorial
one more tutorial simplification
Support implicit name unpack in `at extend`
Simplify `at extend`
update docs for new extension syntax
non canon docstrings
Added some docs and a test. If things seems to work out I could add a couple of more tests. |
@@ -0,0 +1,40 @@ | |||
module MTKBifurcationKitExt |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fix the naming.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what should I name it?
Tests fail because the Project.toml needs to be updated. |
…ifurcationKitExtension
That rebase did not go well |
Yeah, no idea what happened. Just tried putting it back at master. |
Well I think it may be ready to go if it's cleaned up. |
I will probably just make a new PR, easier that way. |
Replaced by: #2321 |
This extension creates dispatches for BifurcationKit.jl's
BifurcationProblem
when used onNonlinearSystem
orODESystem
s.This should work now:
Tests and docs not added yet, will do if people think this approach looks good.