Skip to content

Commit 029cc09

Browse files
Merge pull request #580 from ChrisRackauckas-Claude/agent/shooting-explicit-public-api
Remove BoundaryValueDiffEqShooting blanket reexports
2 parents f9c841e + 6914ea2 commit 029cc09

13 files changed

Lines changed: 155 additions & 89 deletions

File tree

docs/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1616
LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
1717
OptimizationIpopt = "43fad042-7963-4b32-ab19-e2a4f9a67124"
1818
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
19+
OrdinaryDiffEqTsit5 = "b1df2697-797e-41e3-8120-5422d3b24e4a"
1920
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
2021
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
2122
SimpleBoundaryValueDiffEq = "be0294bd-f90f-4760-ac4e-3421ce2b2da0"
@@ -38,6 +39,7 @@ LinearAlgebra = "1.10"
3839
LinearSolve = "2.36.2, 3, 4.2, 5.0"
3940
OptimizationIpopt = "0.2.0, 1.0"
4041
OrdinaryDiffEq = "7"
42+
OrdinaryDiffEqTsit5 = "1, 2"
4143
Plots = "1"
4244
SciMLBase = "2.60.0, 3"
4345
SimpleBoundaryValueDiffEq = "1.1.0"

docs/make.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@ makedocs(;
2727
modules = [
2828
BoundaryValueDiffEqCore, BoundaryValueDiffEqMIRK, BoundaryValueDiffEqFIRK,
2929
BoundaryValueDiffEqMIRKN, BoundaryValueDiffEqShooting, BoundaryValueDiffEqAscher,
30-
SciMLBase, DiffEqBase, BoundaryValueDiffEq, SimpleBoundaryValueDiffEq,
30+
BoundaryValueDiffEq,
3131
],
3232
clean = true,
33-
doctest = false,
33+
doctest = true,
3434
checkdocs = :exports,
35-
warnonly = [:missing_docs, :cross_references],
3635
plugins = [bib, interlinks],
3736
format = Documenter.HTML(
3837
assets = ["assets/favicon.ico"],

docs/src/basics/autodiff.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ BVPJacobianAlgorithm
1212

1313
In BoundaryValueDiffEq.jl, automatic differentiation backend should only be wrapped in `BVPJacobianAlgorithm(diffmode, bc_diffmode, nonbc_diffmode)`. `BVPJacobianAlgorithm(diffmode, bc_diffmode, nonbc_diffmode)` supports user-specified mixed automatic differentiation backends in different part of a boundary value problem, and AD choice should depended on the type of boundary value problem:
1414

15-
- [`BVProblem`](@ref SciMLBase.BVProblem): Differentiation mode for boundary condition part and non boundary condition part should be specified, for example, `BVPJacobianAlgorithm(; bc_diffmode, nonbc_diffmode)`, default to `BVPJacobianAlgorithm(; bc_diffmode = AutoForwardDiff(), nonbc_diffmode = AutoSparse(AutoForwardDiff()))`.
16-
- [`TwoPointBVProblem`](@ref SciMLBase.TwoPointBVProblem): Differentiation mode for overall solving should be specified, for example, `BVPJacobianAlgorithm(; diffmode)`, default to `BVPJacobianAlgorithm(; diffmode = AutoSparse(AutoForwardDiff()))`.
15+
- [`BVProblem`](https://docs.sciml.ai/SciMLBase/stable/): Differentiation mode for boundary condition part and non boundary condition part should be specified, for example, `BVPJacobianAlgorithm(; bc_diffmode, nonbc_diffmode)`, default to `BVPJacobianAlgorithm(; bc_diffmode = AutoForwardDiff(), nonbc_diffmode = AutoSparse(AutoForwardDiff()))`.
16+
- [`TwoPointBVProblem`](https://docs.sciml.ai/SciMLBase/stable/): Differentiation mode for overall solving should be specified, for example, `BVPJacobianAlgorithm(; diffmode)`, default to `BVPJacobianAlgorithm(; diffmode = AutoSparse(AutoForwardDiff()))`.
1717

1818
In BoundaryValueDiffEq.jl, we require AD to obtain the Jacobian of the loss function which contains the collocation equation and boundary condition equations. For `TwoPointBVProblem`, the Jacobian of the loss function is a sparse banded matrix with known sparsity pattern, but for general multi-points `BVProblem`, the Jacobian of the loss function is an almost banded matrix, which has the first several rows as the boundary conditions and the rest as a sparse banded matrix with known sparsity pattern but without the first several rows. In this case, we can specify mixed AD backend in `BVPJacobianAlgorithm` to make the most of the different sparsity pattern to accelerate BVP solving process.
1919

docs/src/basics/bvp_functions.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ The SciML ecosystem provides an extensive interface for declaring extra function
44

55
## Function Type Definitions
66

7-
```@docs
8-
SciMLBase.BVPFunction
9-
SciMLBase.DynamicalBVPFunction
10-
```
7+
`BVPFunction` and `DynamicalBVPFunction` are defined and documented by
8+
[SciMLBase](https://docs.sciml.ai/SciMLBase/stable/). Use their owner documentation for
9+
the full problem-function interface.

docs/src/basics/bvp_problem.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ BoundaryValueDiffEq.jl tackles five related types of boundary value problems:
1212

1313
## Problem Construction Details
1414

15-
```@docs
16-
BVProblem
17-
TwoPointBVProblem
18-
SecondOrderBVProblem
19-
TwoPointSecondOrderBVProblem
20-
```
15+
`BVProblem`, `TwoPointBVProblem`, `SecondOrderBVProblem`, and
16+
`TwoPointSecondOrderBVProblem` are defined and documented by
17+
[SciMLBase](https://docs.sciml.ai/SciMLBase/stable/). Use their owner documentation for
18+
the complete constructor interfaces.

docs/src/solvers/shooting.md

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,31 @@ using Pkg
77
Pkg.add("BoundaryValueDiffEqShooting")
88
```
99

10-
!!! note "Require OrdinaryDiffEq"
11-
12-
Shooting methods require OrdinaryDiffEq.jl loaded to use the ODE solvers
13-
14-
```julia
15-
solve(prob::BVProblem, alg; kwargs...)
16-
solve(prob::TwoPointBVProblem, alg; kwargs...)
17-
```
18-
19-
Shooting methods should be use together with ODE solvers:
20-
21-
```
22-
BoundaryValueDiffEqShooting.Shooting
23-
BoundaryValueDiffEqShooting.MultipleShooting
10+
Shooting algorithms operate on problem definitions and solver functions owned by SciMLBase,
11+
and require an ODE algorithm from its owning solver package:
12+
13+
```jldoctest
14+
using BoundaryValueDiffEqShooting: MultipleShooting, Shooting
15+
using OrdinaryDiffEqTsit5: Tsit5
16+
using SciMLBase: BVProblem, ReturnCode, solve
17+
18+
function f!(du, u, p, t)
19+
du[1] = u[2]
20+
du[2] = 0
21+
end
22+
23+
function bc!(residual, u, p, t)
24+
residual[1] = u(0.0)[1] - 1
25+
residual[2] = u(1.0)[1]
26+
end
27+
28+
prob = BVProblem(f!, bc!, [1.0, -1.0], (0.0, 1.0); nlls = Val(false))
29+
sol = solve(prob, Shooting(Tsit5()); abstol = 1e-8)
30+
31+
@assert sol.retcode == ReturnCode.Success
32+
@assert isapprox(sol(0.0)[1], 1.0; atol = 1e-6)
33+
@assert isapprox(sol(1.0)[1], 0.0; atol = 1e-6)
34+
# output
2435
```
2536

2637
## Full List of Methods

lib/BoundaryValueDiffEqShooting/Project.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ OrdinaryDiffEqTsit5 = "b1df2697-797e-41e3-8120-5422d3b24e4a"
1717
PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46"
1818
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
1919
Preferences = "21216c6a-2e73-6563-6e65-726566657250"
20-
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
2120
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
2221
SciMLLogging = "a6db7da4-7206-11f0-1eab-35f2a5dbe1d1"
2322
Setfield = "efcf1570-3423-57d1-acb7-fd33fddbac46"
@@ -35,6 +34,7 @@ DifferentiationInterface = "0.7.15"
3534
FastClosures = "0.3.2"
3635
ForwardDiff = "0.10.38, 1"
3736
LinearAlgebra = "1.10"
37+
NonlinearSolveFirstOrder = "1.2, 2"
3838
OrdinaryDiffEqLowOrderRK = "1, 2"
3939
OrdinaryDiffEqRosenbrock = "1, 2"
4040
OrdinaryDiffEqTsit5 = "1, 2"
@@ -44,7 +44,6 @@ Preferences = "1.5"
4444
PreallocationTools = "1.2"
4545
Random = "1.10"
4646
RecursiveArrayTools = "3.27.0, 4"
47-
Reexport = "1.2"
4847
SciMLBase = "3.30"
4948
SciMLLogging = "1.10.1, 2"
5049
SciMLTesting = "2.4"
@@ -57,6 +56,7 @@ julia = "1.10"
5756
[extras]
5857
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
5958
DiffEqDevTools = "f3b72e0c-5b89-59e1-b016-84e28bfd966d"
59+
NonlinearSolveFirstOrder = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d"
6060
OrdinaryDiffEqLowOrderRK = "1344f307-1e59-4825-a18e-ace9aa3fa4c6"
6161
OrdinaryDiffEqRosenbrock = "43230ef6-c299-4910-a778-202eb28ce4ce"
6262
OrdinaryDiffEqTsit5 = "b1df2697-797e-41e3-8120-5422d3b24e4a"
@@ -68,4 +68,4 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
6868
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
6969

7070
[targets]
71-
test = ["DiffEqDevTools", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Random", "RecursiveArrayTools", "SciMLTesting", "StaticArrays", "Test", "SafeTestsets"]
71+
test = ["DiffEqDevTools", "NonlinearSolveFirstOrder", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Random", "RecursiveArrayTools", "SciMLTesting", "StaticArrays", "Test", "SafeTestsets"]

lib/BoundaryValueDiffEqShooting/src/BoundaryValueDiffEqShooting.jl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,14 @@ using BoundaryValueDiffEqCore: BoundaryValueDiffEqCore,
1919
__extract_u0,
2020
__initial_guess_on_mesh,
2121
__get_non_sparse_ad, __build_solution, get_dense_ad,
22-
__internal_solve, _process_verbose_param, BVPVerbosity, _unwrap_val
22+
__internal_solve, _process_verbose_param, _unwrap_val
2323

2424
using ConcreteStructs: @concrete
2525
using DifferentiationInterface: DifferentiationInterface,
2626
overloaded_input_type
2727
using FastClosures: @closure
2828
using ForwardDiff: ForwardDiff, pickchunksize
2929
using LinearAlgebra: LinearAlgebra
30-
using Reexport: @reexport
3130
using SciMLBase: SciMLBase, BVProblem, EnsembleSerial, EnsembleThreads,
3231
NonlinearFunction, ODEProblem, StandardBVProblem, TwoPointBVProblem,
3332
__solve, isinplace, remake, solve, solve!
@@ -40,8 +39,6 @@ using Preferences: Preferences
4039

4140
const DI = DifferentiationInterface
4241

43-
@reexport using ADTypes, BoundaryValueDiffEqCore, SciMLBase
44-
4542
include("algorithms.jl")
4643
include("single_shooting.jl")
4744
include("multiple_shooting.jl")

lib/BoundaryValueDiffEqShooting/src/algorithms.jl

Lines changed: 86 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,52 @@ abstract type AbstractShooting <: AbstractBoundaryValueDiffEqAlgorithm end
44
"""
55
Shooting(ode_alg; kwargs...)
66
Shooting(ode_alg, nlsolve; kwargs...)
7-
Shooting(; ode_alg = nothing, nlsolve = nothing, optimize = nothing, jac_alg = nothing)
7+
Shooting(; ode_alg = nothing, nlsolve = nothing, optimize = nothing, jac_alg = nothing) -> Shooting
88
9-
Single shooting method, reduces BVP to an initial value problem and solves the IVP.
9+
Configures the single-shooting algorithm for a boundary value problem. Single shooting
10+
integrates one initial value problem and solves for the initial condition that satisfies the
11+
boundary conditions.
1012
1113
## Arguments
1214
13-
- `ode_alg`: ODE algorithm to use for solving the IVP. Any solver which conforms to the
14-
SciML `ODEProblem` interface can be used! (Defaults to `nothing` which will use
15-
poly-algorithm if `DifferentialEquations.jl` is loaded else this must be supplied)
16-
- `nlsolve`: Internal Nonlinear solver. Any solver which conforms to the SciML
17-
`NonlinearProblem` interface can be used. Note that any autodiff argument for the solver
18-
will be ignored and a custom jacobian algorithm will be used.
19-
- `optimize`: Internal Optimization solver. Any solver which conforms to the SciML
20-
`OptimizationProblem` interface can be used. Note that any autodiff argument for the solver
21-
will be ignored and a custom jacobian algorithm will be used.
22-
- `jac_alg`: Jacobian Algorithm used for the Nonlinear Solver. If this is not set, we
23-
check if `nlsolve.ad` exists and is not nothing. If it is, we use that to construct
24-
the jacobian. If not, we try to use the best algorithm based on the input types
25-
and problem type. If `BVPJacobianAlgorithm` is provided, only `diffmode` is used
26-
(defaults to `AutoForwardDiff` if possible else `AutoFiniteDiff`).
15+
- `ode_alg`: algorithm used to solve the internal `SciMLBase.ODEProblem`. Pass this as the
16+
first positional argument or keyword argument. `nothing` selects a loaded polyalgorithm;
17+
otherwise an ODE algorithm must be supplied.
18+
- `nlsolve`: nonlinear-solver algorithm for the shooting residual. Its autodiff setting is
19+
superseded by `jac_alg` when a Jacobian algorithm is materialized.
20+
21+
## Keywords
22+
23+
- `ode_alg = nothing`: ODE algorithm, as described above.
24+
- `nlsolve = nothing`: nonlinear-solver algorithm, as described above.
25+
- `optimize = nothing`: optimization-solver algorithm used when the selected BVP solve path
26+
formulates the residual as an optimization problem.
27+
- `jac_alg = nothing`: `BVPJacobianAlgorithm` configuration. When omitted, the constructor
28+
derives it from `nlsolve` and the problem during solve initialization. For single shooting,
29+
only its `diffmode` setting is used; the default is `AutoForwardDiff` when applicable and
30+
otherwise `AutoFiniteDiff`.
31+
32+
## Fields
33+
34+
- `ode_alg`: configured ODE algorithm or `nothing`.
35+
- `nlsolve`: configured nonlinear-solver algorithm or `nothing`.
36+
- `optimize`: configured optimization-solver algorithm or `nothing`.
37+
- `jac_alg::BVPJacobianAlgorithm`: materialized Jacobian-algorithm configuration.
38+
39+
## Returns
40+
41+
- `Shooting`: an algorithm object accepted by `SciMLBase.solve` for a boundary value problem.
42+
43+
## Examples
44+
45+
```jldoctest
46+
using BoundaryValueDiffEqShooting: Shooting
47+
using OrdinaryDiffEqTsit5: Tsit5
48+
49+
alg = Shooting(Tsit5())
50+
@assert alg isa Shooting
51+
# output
52+
```
2753
"""
2854
@concrete struct Shooting{J <: BVPJacobianAlgorithm} <: AbstractShooting
2955
ode_alg
@@ -46,37 +72,40 @@ end
4672

4773
"""
4874
MultipleShooting(; nshoots::Int, ode_alg = nothing, nlsolve = nothing,
49-
optimize = nothing, grid_coarsening = true, jac_alg = nothing)
75+
optimize = nothing, grid_coarsening = true, jac_alg = nothing) -> MultipleShooting
5076
MultipleShooting(nshoots::Int; kwargs...)
5177
MultipleShooting(nshoots::Int, ode_alg; kwargs...)
5278
MultipleShooting(nshoots::Int, ode_alg, nlsolve; kwargs...)
5379
54-
Multiple Shooting method, reduces BVP to an initial value problem and solves the IVP.
55-
Significantly more stable than Single Shooting.
80+
Configures the multiple-shooting algorithm for a boundary value problem. Multiple shooting
81+
integrates an IVP on `nshoots` subintervals and solves for their matching initial conditions;
82+
it is generally more stable than [`Shooting`](@ref).
5683
5784
## Arguments
5885
59-
- `nshoots`: Number of shooting points.
86+
- `nshoots::Int`: number of shooting subintervals.
87+
- `ode_alg`: algorithm used to solve each internal `SciMLBase.ODEProblem`. Pass this as the
88+
second positional argument or keyword argument. `nothing` selects a loaded polyalgorithm;
89+
otherwise an ODE algorithm must be supplied.
90+
- `nlsolve`: nonlinear-solver algorithm for the multiple-shooting residual.
6091
61-
- `ode_alg`: ODE algorithm to use for solving the IVP. Any solver which conforms to the
62-
SciML `ODEProblem` interface can be used! (Defaults to `nothing` which will use
63-
poly-algorithm if `DifferentialEquations.jl` is loaded else this must be supplied)
64-
- `nlsolve`: Internal Nonlinear solver. Any solver which conforms to the SciML
65-
`NonlinearProblem` interface can be used.
66-
- `optimize`: Internal Optimization solver. Any solver which conforms to the SciML
67-
`OptimizationProblem` interface can be used.
68-
- `jac_alg`: Jacobian Algorithm used for the nonlinear solver. Defaults to
69-
`BVPJacobianAlgorithm()`, which automatically decides the best algorithm to use based
70-
on the input types and problem type.
92+
## Keywords
93+
94+
- `ode_alg = nothing`: ODE algorithm, as described above.
95+
- `nlsolve = nothing`: nonlinear-solver algorithm, as described above.
96+
- `optimize = nothing`: optimization-solver algorithm used when the selected BVP solve path
97+
formulates the residual as an optimization problem.
98+
- `jac_alg = nothing`: `BVPJacobianAlgorithm` configuration. When omitted, the constructor
99+
derives it from `nlsolve` and the problem during solve initialization.
71100
72101
+ For `TwoPointBVProblem`, only `diffmode` is used (defaults to
73102
`AutoSparse(AutoForwardDiff())` if possible else `AutoSparse(AutoFiniteDiff())`).
74103
+ For `BVProblem`, `bc_diffmode` and `nonbc_diffmode` are used. For `nonbc_diffmode`
75104
we default to `AutoSparse(AutoForwardDiff())` if possible else
76105
`AutoSparse(AutoFiniteDiff())`. For `bc_diffmode`, we default to `AutoForwardDiff`
77106
if possible else `AutoFiniteDiff`.
78-
- `grid_coarsening`: Coarsening the multiple-shooting grid to generate a stable IVP
79-
solution. Possible Choices:
107+
- `grid_coarsening = true`: coarsens the multiple-shooting grid while generating a stable
108+
IVP solution. Supported values are:
80109
81110
+ `true`: Halve the grid size, till we reach a grid size of 1.
82111
+ `false`: Do not coarsen the grid. Solve a Multiple Shooting Problem and finally
@@ -87,6 +116,31 @@ Significantly more stable than Single Shooting.
87116
+ `Function`: Takes the current number of shooting points and returns the next number
88117
of shooting points. For example, if `nshoots = 10` and
89118
`grid_coarsening = n -> n ÷ 2`, then the grid will be coarsened to `[5, 2]`.
119+
120+
## Fields
121+
122+
- `ode_alg`: configured ODE algorithm or `nothing`.
123+
- `nlsolve`: configured nonlinear-solver algorithm or `nothing`.
124+
- `optimize`: configured optimization-solver algorithm or `nothing`.
125+
- `jac_alg::BVPJacobianAlgorithm`: materialized Jacobian-algorithm configuration.
126+
- `nshoots::Int`: configured number of shooting subintervals.
127+
- `grid_coarsening`: configured grid-coarsening strategy.
128+
129+
## Returns
130+
131+
- `MultipleShooting`: an algorithm object accepted by `SciMLBase.solve` for a boundary value
132+
problem.
133+
134+
## Examples
135+
136+
```jldoctest
137+
using BoundaryValueDiffEqShooting: MultipleShooting
138+
using OrdinaryDiffEqTsit5: Tsit5
139+
140+
alg = MultipleShooting(8, Tsit5(); grid_coarsening = true)
141+
@assert alg isa MultipleShooting
142+
# output
143+
```
90144
"""
91145
@concrete struct MultipleShooting{J <: BVPJacobianAlgorithm} <: AbstractShooting
92146
ode_alg

lib/BoundaryValueDiffEqShooting/test/Core/basic_problems_tests.jl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
using BoundaryValueDiffEqShooting
2+
using ADTypes: AutoFiniteDiff, AutoForwardDiff, AutoSparse
3+
using BoundaryValueDiffEqCore: BVPJacobianAlgorithm
4+
using NonlinearSolveFirstOrder: NewtonRaphson, TrustRegion
5+
using SciMLBase: BVPFunction, BVProblem, TwoPointBVProblem, solve
26
using Test
37

8+
import SciMLBase
9+
410
@testset "Basic Shooting" begin
5-
using BoundaryValueDiffEqShooting, LinearAlgebra, OrdinaryDiffEqTsit5
11+
using LinearAlgebra, OrdinaryDiffEqTsit5
612

713
# JET tests have been moved to the separate QA test group (test/qa/)
814

@@ -111,7 +117,7 @@ using Test
111117
end
112118

113119
@testset "Shooting with Complex Values" begin
114-
using BoundaryValueDiffEqShooting, OrdinaryDiffEqVerner, LinearAlgebra
120+
using OrdinaryDiffEqVerner, LinearAlgebra
115121

116122
SOLVERS = [
117123
Shooting(Vern7(), NewtonRaphson(; autodiff = AutoFiniteDiff())), Shooting(Vern7()),
@@ -148,7 +154,7 @@ end
148154
end
149155

150156
@testset "Flow in a Channel" begin
151-
using BoundaryValueDiffEqShooting, OrdinaryDiffEqTsit5, OrdinaryDiffEqRosenbrock,
157+
using OrdinaryDiffEqTsit5, OrdinaryDiffEqRosenbrock,
152158
LinearAlgebra
153159

154160
function flow_in_a_channel!(du, u, p, t)
@@ -206,7 +212,7 @@ end
206212
end
207213
#FIXME: MultipleShooting fails for large out-of-place BVP systems
208214
@testset "Ray Tracing" begin
209-
using BoundaryValueDiffEqShooting, OrdinaryDiffEqVerner, OrdinaryDiffEqRosenbrock,
215+
using OrdinaryDiffEqVerner, OrdinaryDiffEqRosenbrock,
210216
LinearAlgebra
211217

212218
@inline v(x, y, z, p) = 1 / (4 + cos(p[1] * x) + sin(p[2] * y) - cos(p[3] * z))
@@ -380,7 +386,7 @@ end
380386
end
381387

382388
@testset "Shooting with heterogeneous initial guess" begin
383-
using BoundaryValueDiffEqShooting, OrdinaryDiffEqVerner, LinearAlgebra
389+
using OrdinaryDiffEqVerner, LinearAlgebra
384390
g = 9.81
385391
L = 1.0
386392
tspan = (0.0, pi / 2.0)

0 commit comments

Comments
 (0)