SDG 8th biweekly report
Qingyu Qu

Review of the past two weeks

In the last two weeks, my work can be summarized as two parts: Refactoring the implemented COLDAE solver to make it compatible with the SciML style and maintaining the BoundaryValueDiffEq.jl package.

  1. With the previously translated COLDAE solver, it is easy to see the structure of COLDAE and the collocation equations, during the past two weeks, while the discrete solution from the solver is converging now, I refactored the implemented solver, such as standardizing the function name, cache initialization and modifying etc, now what’s left is to plug in the ForwardDiff automatic differentiation part and then all is done.

  2. Upgrade support for the RecursiveArrayTools.jl and help the centralized reusable workflow CI. The semantics for defining a BVP are now much different from before:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using BoundaryValueDiffEq
tspan = (0.0, pi / 2)
function simplependulum!(du, u, p, t)
θ = u[1]
dθ = u[2]
du[1] = dθ
du[2] = -9.81 * sin(θ)
end
function bc!(residual, u, p, t)
residual[1] = u[:, end ÷ 2][1] + pi / 2
residual[2] = u[:, end][1] - pi / 2
end
prob = BVProblem(simplependulum!, bc!, [pi / 2, pi / 2], tspan)
sol = solve(prob, MIRK4(), dt = 0.05)
  1. Fixed the BigFloat support issue for the Lobatto and Radau methods for BVP.

More TODOs:

  1. Continue the polishing of the simple COLDAE implementation and test the solver on more example problems to see if there are any bugs or improvements needed. File the pull request to get the COLDAE solver merged.

  2. Continuing the BigFloat support and getting the Lobatto and Radau solvers PR get merged as soon as possible.