|
1 | 1 | struct ImmutableNonlinearProblem{uType, isinplace, P, F, K, PT} <: |
2 | | - AbstractNonlinearProblem{uType, isinplace} |
3 | | - f::F |
4 | | - u0::uType |
5 | | - p::P |
6 | | - problem_type::PT |
7 | | - kwargs::K |
8 | | - @add_kwonly function ImmutableNonlinearProblem{iip}(f::AbstractNonlinearFunction{iip}, u0, |
9 | | - p = NullParameters(), |
10 | | - problem_type = StandardNonlinearProblem(); |
11 | | - kwargs...) where {iip} |
12 | | - if haskey(kwargs, :p) |
13 | | - error("`p` specified as a keyword argument `p = $(kwargs[:p])` to `NonlinearProblem`. This is not supported.") |
14 | | - end |
15 | | - warn_paramtype(p) |
16 | | - new{typeof(u0), iip, typeof(p), typeof(f), |
17 | | - typeof(kwargs), typeof(problem_type)}(f, |
18 | | - u0, |
19 | | - p, |
20 | | - problem_type, |
21 | | - kwargs) |
22 | | - end |
| 2 | + AbstractNonlinearProblem{uType, isinplace} |
| 3 | + f::F |
| 4 | + u0::uType |
| 5 | + p::P |
| 6 | + problem_type::PT |
| 7 | + kwargs::K |
| 8 | + @add_kwonly function ImmutableNonlinearProblem{iip}( |
| 9 | + f::AbstractNonlinearFunction{iip}, u0, p = NullParameters(), |
| 10 | + problem_type = StandardNonlinearProblem(); kwargs...) where {iip} |
| 11 | + if haskey(kwargs, :p) |
| 12 | + error("`p` specified as a keyword argument `p = $(kwargs[:p])` to `NonlinearProblem`. This is not supported.") |
| 13 | + end |
| 14 | + warn_paramtype(p) |
| 15 | + new{typeof(u0), iip, typeof(p), typeof(f), typeof(kwargs), typeof(problem_type)}( |
| 16 | + f, u0, p, problem_type, kwargs) |
| 17 | + end |
23 | 18 |
|
24 | | - """ |
25 | | - Define a steady state problem using the given function. |
26 | | - `isinplace` optionally sets whether the function is inplace or not. |
27 | | - This is determined automatically, but not inferred. |
28 | | - """ |
29 | | - function ImmutableNonlinearProblem{iip}(f, u0, p = NullParameters(); kwargs...) where {iip} |
30 | | - ImmutableNonlinearProblem{iip}(NonlinearFunction{iip}(f), u0, p; kwargs...) |
31 | | - end |
| 19 | + """ |
| 20 | + Define a steady state problem using the given function. |
| 21 | + `isinplace` optionally sets whether the function is inplace or not. |
| 22 | + This is determined automatically, but not inferred. |
| 23 | + """ |
| 24 | + function ImmutableNonlinearProblem{iip}( |
| 25 | + f, u0, p = NullParameters(); kwargs...) where {iip} |
| 26 | + ImmutableNonlinearProblem{iip}(NonlinearFunction{iip}(f), u0, p; kwargs...) |
| 27 | + end |
32 | 28 | end |
33 | 29 |
|
34 | 30 | """ |
35 | 31 | Define a nonlinear problem using an instance of |
36 | 32 | [`AbstractNonlinearFunction`](@ref AbstractNonlinearFunction). |
37 | 33 | """ |
38 | | -function ImmutableNonlinearProblem(f::AbstractNonlinearFunction, u0, p = NullParameters(); kwargs...) |
39 | | - ImmutableNonlinearProblem{isinplace(f)}(f, u0, p; kwargs...) |
| 34 | +function ImmutableNonlinearProblem( |
| 35 | + f::AbstractNonlinearFunction, u0, p = NullParameters(); kwargs...) |
| 36 | + ImmutableNonlinearProblem{isinplace(f)}(f, u0, p; kwargs...) |
40 | 37 | end |
41 | 38 |
|
42 | 39 | function ImmutableNonlinearProblem(f, u0, p = NullParameters(); kwargs...) |
43 | | - ImmutableNonlinearProblem(NonlinearFunction(f), u0, p; kwargs...) |
| 40 | + ImmutableNonlinearProblem(NonlinearFunction(f), u0, p; kwargs...) |
44 | 41 | end |
45 | 42 |
|
46 | 43 | """ |
47 | 44 | Define a ImmutableNonlinearProblem problem from SteadyStateProblem |
48 | 45 | """ |
49 | 46 | function ImmutableNonlinearProblem(prob::AbstractNonlinearProblem) |
50 | | - ImmutableNonlinearProblem{isinplace(prob)}(prob.f, prob.u0, prob.p) |
| 47 | + ImmutableNonlinearProblem{isinplace(prob)}(prob.f, prob.u0, prob.p) |
51 | 48 | end |
52 | 49 |
|
53 | | - |
54 | | -function Base.convert(::Type{ImmutableNonlinearProblem}, prob::T) where {T <: NonlinearProblem} |
55 | | - ImmutableNonlinearProblem{isinplace(prob)}(prob.f, |
56 | | - prob.u0, |
57 | | - prob.p, |
58 | | - prob.problem_type; |
59 | | - prob.kwargs...) |
| 50 | +function Base.convert( |
| 51 | + ::Type{ImmutableNonlinearProblem}, prob::T) where {T <: NonlinearProblem} |
| 52 | + ImmutableNonlinearProblem{isinplace(prob)}( |
| 53 | + prob.f, prob.u0, prob.p, prob.problem_type; prob.kwargs...) |
60 | 54 | end |
61 | 55 |
|
62 | | -function DiffEqBase.get_concrete_problem(prob::ImmutableNonlinearProblem, isadapt; kwargs...) |
| 56 | +function DiffEqBase.get_concrete_problem( |
| 57 | + prob::ImmutableNonlinearProblem, isadapt; kwargs...) |
63 | 58 | u0 = DiffEqBase.get_concrete_u0(prob, isadapt, nothing, kwargs) |
64 | 59 | u0 = DiffEqBase.promote_u0(u0, prob.p, nothing) |
65 | 60 | p = DiffEqBase.get_concrete_p(prob, kwargs) |
|
0 commit comments