Skip to content

Commit 7c0c423

Browse files
format
1 parent 67f6f24 commit 7c0c423

File tree

4 files changed

+33
-27
lines changed

4 files changed

+33
-27
lines changed

src/systems/abstractsystem.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2272,7 +2272,8 @@ end
22722272
22732273
returns a `Vector{Pair}` of variables set to `default` which are missing from `get_defaults(sys)`. The `default` argument can be a single value or vector to set the missing defaults respectively.
22742274
"""
2275-
function missing_variable_defaults(sys::AbstractSystem, default = 0.0; subset = unknowns(sys))
2275+
function missing_variable_defaults(
2276+
sys::AbstractSystem, default = 0.0; subset = unknowns(sys))
22762277
varmap = get_defaults(sys)
22772278
varmap = Dict(Symbolics.diff2term(value(k)) => value(varmap[k]) for k in keys(varmap))
22782279
missingvars = setdiff(subset, keys(varmap))

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,8 @@ function DiffEqBase.ODEFunction{iip, specialize}(sys::AbstractODESystem,
315315
checkbounds = false,
316316
sparsity = false,
317317
analytic = nothing,
318-
split_idxs = nothing,
319-
initializeprob = nothing,
318+
split_idxs = nothing,
319+
initializeprob = nothing,
320320
initializeprobmap = nothing,
321321
kwargs...) where {iip, specialize}
322322
if !iscomplete(sys)
@@ -530,7 +530,7 @@ function DiffEqBase.DAEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys)
530530
sparse = false, simplify = false,
531531
eval_module = @__MODULE__,
532532
checkbounds = false,
533-
initializeprob = nothing,
533+
initializeprob = nothing,
534534
initializeprobmap = nothing,
535535
kwargs...) where {iip}
536536
if !iscomplete(sys)
@@ -861,12 +861,13 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
861861
# since they will be checked in the initialization problem's construction
862862
# TODO: make check for if a DAE cheaper than calculating the mass matrix a second time!
863863
if implicit_dae || calculate_massmatrix(sys) !== I
864-
initializeprob = ModelingToolkit.InitializationProblem(sys, u0map, parammap; guesses, warn_initialize_determined)
864+
initializeprob = ModelingToolkit.InitializationProblem(
865+
sys, u0map, parammap; guesses, warn_initialize_determined)
865866
initializeprobmap = getu(initializeprob, unknowns(sys))
866-
zerovars = setdiff(unknowns(sys),defaults(sys)) .=> 0.0
867-
trueinit = identity.([zerovars;u0map])
867+
zerovars = setdiff(unknowns(sys), defaults(sys)) .=> 0.0
868+
trueinit = identity.([zerovars; u0map])
868869
else
869-
initializeprob = nothing
870+
initializeprob = nothing
870871
initializeprobmap = nothing
871872
trueinit = u0map
872873
end
@@ -907,7 +908,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
907908
checkbounds = checkbounds, p = p,
908909
linenumbers = linenumbers, parallel = parallel, simplify = simplify,
909910
sparse = sparse, eval_expression = eval_expression,
910-
initializeprob = initializeprob,
911+
initializeprob = initializeprob,
911912
initializeprobmap = initializeprobmap,
912913
kwargs...)
913914
implicit_dae ? (f, du0, u0, p) : (f, u0, p)
@@ -1523,7 +1524,8 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem, u0map =
15231524
if isempty(u0map)
15241525
isys = get_initializesystem(sys)
15251526
else
1526-
isys = structural_simplify(generate_initializesystem(sys; u0map); fully_determined = false)
1527+
isys = structural_simplify(
1528+
generate_initializesystem(sys; u0map); fully_determined = false)
15271529
end
15281530

15291531
neqs = length(equations(isys))

src/systems/nonlinear/initializesystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ $(TYPEDSIGNATURES)
33
44
Generate `NonlinearSystem` which initializes an ODE problem from specified initial conditions of an `ODESystem`.
55
"""
6-
function generate_initializesystem(sys::ODESystem;
6+
function generate_initializesystem(sys::ODESystem;
77
u0map = Dict(),
88
name = nameof(sys),
99
guesses = Dict(), check_defguess = false, kwargs...)
@@ -15,7 +15,7 @@ function generate_initializesystem(sys::ODESystem;
1515
# Start the equations list with algebraic equations
1616
eqs_ics = eqs[idxs_alge]
1717
u0 = Vector{Pair}(undef, 0)
18-
defs = merge(defaults(sys),todict(u0map))
18+
defs = merge(defaults(sys), todict(u0map))
1919

2020
full_states = [sts; getfield.((observed(sys)), :lhs)]
2121

test/initializationsystem.jl

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,44 @@ using ModelingToolkit: t_nounits as t, D_nounits as D
33

44
@parameters g
55
@variables x(t) y(t) [state_priority = 10] λ(t)
6-
eqs = [
7-
D(D(x)) ~ λ * x
6+
eqs = [D(D(x)) ~ λ * x
87
D(D(y)) ~ λ * y - g
9-
x^2 + y^2 ~ 1
10-
]
11-
@mtkbuild pend = ODESystem(eqs,t)
8+
x^2 + y^2 ~ 1]
9+
@mtkbuild pend = ODESystem(eqs, t)
1210

13-
initprob = ModelingToolkit.InitializationProblem(pend, [], [g => 1]; guesses = [ModelingToolkit.missing_variable_defaults(pend); x => 1; y => 0.2])
14-
conditions = getfield.(equations(initprob.f.sys),:rhs)
11+
initprob = ModelingToolkit.InitializationProblem(pend, [], [g => 1];
12+
guesses = [ModelingToolkit.missing_variable_defaults(pend); x => 1; y => 0.2])
13+
conditions = getfield.(equations(initprob.f.sys), :rhs)
1514

1615
@test initprob isa NonlinearLeastSquaresProblem
1716
sol = solve(initprob)
1817
@test SciMLBase.successful_retcode(sol)
1918
@test maximum(abs.(sol[conditions])) < 1e-14
2019

21-
initprob = ModelingToolkit.InitializationProblem(pend, [x => 1, y => 0], [g => 1]; guesses = ModelingToolkit.missing_variable_defaults(pend))
20+
initprob = ModelingToolkit.InitializationProblem(pend, [x => 1, y => 0], [g => 1];
21+
guesses = ModelingToolkit.missing_variable_defaults(pend))
2222
@test initprob isa NonlinearProblem
2323
sol = solve(initprob)
2424
@test SciMLBase.successful_retcode(sol)
25-
@test sol.u == [1.0,0.0,0.0,0.0]
25+
@test sol.u == [1.0, 0.0, 0.0, 0.0]
2626
@test maximum(abs.(sol[conditions])) < 1e-14
2727

28-
initprob = ModelingToolkit.InitializationProblem(pend, [], [g => 1]; guesses = ModelingToolkit.missing_variable_defaults(pend))
28+
initprob = ModelingToolkit.InitializationProblem(
29+
pend, [], [g => 1]; guesses = ModelingToolkit.missing_variable_defaults(pend))
2930
@test initprob isa NonlinearLeastSquaresProblem
3031
sol = solve(initprob)
3132
@test !SciMLBase.successful_retcode(sol)
3233

33-
prob = ODEProblem(pend, [x => 1, y => 0], (0.0, 1.5), [g => 1], guesses = ModelingToolkit.missing_variable_defaults(pend))
34+
prob = ODEProblem(pend, [x => 1, y => 0], (0.0, 1.5), [g => 1],
35+
guesses = ModelingToolkit.missing_variable_defaults(pend))
3436
prob.f.initializeprob isa NonlinearProblem
3537
sol = solve(prob.f.initializeprob)
3638
@test maximum(abs.(sol[conditions])) < 1e-14
3739
sol = solve(prob, Rodas5P())
3840
@test maximum(abs.(sol[conditions][1])) < 1e-14
3941

40-
prob = ODEProblem(pend, [x => 1], (0.0, 1.5), [g => 1], guesses = ModelingToolkit.missing_variable_defaults(pend))
42+
prob = ODEProblem(pend, [x => 1], (0.0, 1.5), [g => 1],
43+
guesses = ModelingToolkit.missing_variable_defaults(pend))
4144
prob.f.initializeprob isa NonlinearLeastSquaresProblem
4245
sol = solve(prob.f.initializeprob)
4346
@test maximum(abs.(sol[conditions])) < 1e-14
@@ -214,7 +217,7 @@ end
214217

215218
@mtkbuild sys = System()
216219
initprob = ModelingToolkit.InitializationProblem(sys)
217-
conditions = getfield.(equations(initprob.f.sys),:rhs)
220+
conditions = getfield.(equations(initprob.f.sys), :rhs)
218221

219222
@test initprob isa NonlinearLeastSquaresProblem
220223
@test length(initprob.u0) == 2
@@ -229,7 +232,7 @@ sol = solve(prob, Rodas5P(), initializealg = BrownFullBasicInit())
229232
@test sol.retcode == SciMLBase.ReturnCode.Unstable
230233
@test maximum(abs.(initsol[conditions][1])) < 1e-14
231234

232-
prob = ODEProblem(sys, [], (0, 0.1), check=false)
235+
prob = ODEProblem(sys, [], (0, 0.1), check = false)
233236
sol = solve(prob, Rodas5P())
234237
# If initialized incorrectly, then it would be InitialFailure
235238
@test sol.retcode == SciMLBase.ReturnCode.Unstable
@@ -328,4 +331,4 @@ p = [σ => 28.0,
328331
β => 8 / 3]
329332

330333
tspan = (0.0, 100.0)
331-
@test_throws ArgumentError prob = ODEProblem(sys, u0, tspan, p, jac = true)
334+
@test_throws ArgumentError prob=ODEProblem(sys, u0, tspan, p, jac = true)

0 commit comments

Comments
 (0)