# Update on future developement of BVP solvers?

**URL:** <https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839>\
**Category:** Numerics\
**Tags:** question, package, differentialequation\
**Created:** [July 26, 2022, 6:08pm UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839 "2022-07-26T18:08:10Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![MButler](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@MButler](https://discourse.julialang.org/u/MButler)\
**Post date:** [July 26, 2022, 6:08pm UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839/1 "2022-07-26T18:08:11Z")

</div>

I’m currently doing research in gravitational physics and the problems I’m working with often end up as BVPs that are very stiff and sensitive to the initial conditions. It seems this is still a weak point for Julia’s BVP tools and I was wondering if there was any update on when the BoundaryValueDiffEq.jl will see further development?

If this has been addressed somewhere else I apologise, all I could find were a few comments that the BVP solvers will be revisited in the future.

While I’m new Julia, I’d be willing to learn and would be interested in contributing if that could be helpful here.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 26, 2022, 8:39pm UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839/2 "2022-07-26T20:39:40Z")

</div>

> [@MButler](#):
>
> It seems this is still a weak point for Julia’s BVP tools and I was wondering if there was any update on when the BoundaryValueDiffEq.jl will see further development?

Yes, it’s a weak point of SciML. But we have a pretty grand plan for fixing it. Most BVP solvers specialize too much on ODE 2-point boundary problems, or lose any specialization. By mixing LinearSolve.jl, NonlinearSolve.jl, SparseDiffTools.jl, and ModelingToolkit.jl tearing you can generalize the specialization to a much larger class of problems since you then no longer require just a banded matrix structure (but can always automatically recover a banded matrix), which would make a much better MIRK method. Of course, that is a bit hard to see with the naked eye, but that’s how it’s progressing. We need some more development in those other tools before piecing it all together though, but would be interested to have any help possible.

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [July 26, 2022, 10:08pm UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839/3 "2022-07-26T22:08:21Z")

</div>

While we’re discussing BVPs, SciML currently doesn’t handle BV DAEs.  
Other solvers like Coldae.f etc do.

Would also be nice at some point

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 26, 2022, 10:20pm UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839/4 "2022-07-26T22:20:56Z")

</div>

Yes, that’s part of the same whole thing I mentioned above.

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [July 27, 2022, 5:58am UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839/5 "2022-07-27T05:58:30Z")

</div>

> [@MButler](#):
>
> BVPs that are very stiff and sensitive to the initial conditions

Can you explai this setence please?

In [BifurcationKit](https://github.com/bifurcationkit/BifurcationKit.jl), there are 2 ponits BVP solvers but there are a bit hidden because I focus on computing periodic orbits, they work in large dimension. THere is even the state of the art one based on [orthogonal collocation](https://bifurcationkit.github.io/BifurcationKitDocs.jl/dev/periodicOrbitCollocation/). If the problem is stiff, you can use an homotopy with BifurcationKit to solve it.

I could extract a BVP solver if you want or you could change the boundary condition yourself in the functional.

Also, Have you tried `ApproxFun.jl`?

---

<div class="post-metadata">

**Author:** ![MButler](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@MButler](https://discourse.julialang.org/u/MButler)\
**Post date:** [July 27, 2022, 8:31pm UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839/6 "2022-07-27T20:31:32Z")

</div>

Thank you for the update and giving some insights of where things are going.

> [@ChrisRackauckas](#):
>
> Yes, it’s a weak point of SciML. But we have a pretty grand plan for fixing it. Most BVP solvers specialize too much on ODE 2-point boundary problems, or lose any specialization.

This is probably my biggest complaint of other bvp solvers out there. They often become far too specialized on a specific problem or class of problem.

I only have a general understanding of MIRK methods. Do you have any references I could look over in regards to the techniques you plan to use to recover the banded matrices?

I think I will have to spend some time with SciML and Julia before I’d have anything to offer but I’d love to contribute when I do.

> [@rveltz](#):
>
> > [@MButler](#):
> >
> > BVPs that are very stiff and sensitive to the initial conditions
> 
> Can you explai this setence please?

Specifically I’m solving for the equations of motion of modified gravity theories. The problem is defined by applying a line element of the form:

ds^2 = -H(r) dt^2 + G(r) d^2\_{space}

Where H(r) and G(r) are the unknown metric functions defining how to construct spacetime in a given theory. These are the unknown functions that will appear in the field equations that we need to solve.

These functions typically diverge as they approach the horizon, as they do for a Schwarzschild metric. So our ICs are approximations of a divergence, and the numerical method has to step away from a divergence as well. The two together is what typically makes the problem sensitive to the IC and stiff.

I’ll have to take a look at `Bifurcation.jl` and `ApproxFun.jl`. I had looked at Bifurcation briefly but it seemed unrelated to what I was doing but I’ll go back and take another look. These suggestions are appreciated!

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 27, 2022, 11:47pm UTC](https://discourse.julialang.org/t/update-on-future-developement-of-bvp-solvers/84839/7 "2022-07-27T23:47:06Z")

</div>

> [@MButler](#):
>
> This is probably my biggest complaint of other bvp solvers out there. They often become far too specialized on a specific problem or class of problem.
> 
> I only have a general understanding of MIRK methods. Do you have any references I could look over in regards to the techniques you plan to use to recover the banded matrices?

We haven’t written the paper yet. It will take it a bit to write, but will share some at the American Modelica Conference.
