Skip to content

Commit afbf188

Browse files
committed
Run formatter
1 parent bbda412 commit afbf188

File tree

2 files changed

+60
-47
lines changed

2 files changed

+60
-47
lines changed

src/systems/callbacks.jl

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,12 @@ struct SymbolicContinuousCallback
118118
affect_neg::Union{Vector{Equation}, FunctionalAffect, Nothing}
119119
rootfind::SciMLBase.RootfindOpt
120120
reinitializealg::SciMLBase.DAEInitializationAlgorithm
121-
function SymbolicContinuousCallback(;
122-
eqs::Vector{Equation},
123-
affect = NULL_AFFECT,
124-
affect_neg = affect,
125-
rootfind = SciMLBase.LeftRootFind,
126-
reinitializealg=SciMLBase.CheckInit())
121+
function SymbolicContinuousCallback(;
122+
eqs::Vector{Equation},
123+
affect = NULL_AFFECT,
124+
affect_neg = affect,
125+
rootfind = SciMLBase.LeftRootFind,
126+
reinitializealg = SciMLBase.CheckInit())
127127
new(eqs, make_affect(affect), make_affect(affect_neg), rootfind, reinitializealg)
128128
end # Default affect to nothing
129129
end
@@ -194,8 +194,10 @@ function affect_negs(cbs::Vector{SymbolicContinuousCallback})
194194
end
195195

196196
reinitialization_alg(cb::SymbolicContinuousCallback) = cb.reinitializealg
197-
reinitialization_algs(cbs::Vector{SymbolicContinuousCallback}) =
198-
mapreduce(reinitialization_alg, vcat, cbs, init = SciMLBase.DAEInitializationAlgorithm[])
197+
function reinitialization_algs(cbs::Vector{SymbolicContinuousCallback})
198+
mapreduce(
199+
reinitialization_alg, vcat, cbs, init = SciMLBase.DAEInitializationAlgorithm[])
200+
end
199201

200202
namespace_affects(af::Vector, s) = Equation[namespace_affect(a, s) for a in af]
201203
namespace_affects(af::FunctionalAffect, s) = namespace_affect(af, s)
@@ -241,7 +243,8 @@ struct SymbolicDiscreteCallback
241243
affects::Any
242244
reinitializealg::SciMLBase.DAEInitializationAlgorithm
243245

244-
function SymbolicDiscreteCallback(condition, affects = NULL_AFFECT, reinitializealg=SciMLBase.CheckInit())
246+
function SymbolicDiscreteCallback(
247+
condition, affects = NULL_AFFECT, reinitializealg = SciMLBase.CheckInit())
245248
c = scalarize_condition(condition)
246249
a = scalarize_affects(affects)
247250
new(c, a, reinitializealg)
@@ -302,8 +305,10 @@ function affects(cbs::Vector{SymbolicDiscreteCallback})
302305
end
303306

304307
reinitialization_alg(cb::SymbolicDiscreteCallback) = cb.reinitializealg
305-
reinitialization_algs(cbs::Vector{SymbolicDiscreteCallback}) =
306-
mapreduce(reinitialization_alg, vcat, cbs, init = SciMLBase.DAEInitializationAlgorithm[])
308+
function reinitialization_algs(cbs::Vector{SymbolicDiscreteCallback})
309+
mapreduce(
310+
reinitialization_alg, vcat, cbs, init = SciMLBase.DAEInitializationAlgorithm[])
311+
end
307312

308313
function namespace_callback(cb::SymbolicDiscreteCallback, s)::SymbolicDiscreteCallback
309314
af = affects(cb)
@@ -598,14 +603,15 @@ function generate_single_rootfinding_callback(
598603
initfn = SciMLBase.INITIALIZE_DEFAULT
599604
end
600605
return ContinuousCallback(
601-
cond, affect_function.affect, affect_function.affect_neg, rootfind = cb.rootfind,
606+
cond, affect_function.affect, affect_function.affect_neg, rootfind = cb.rootfind,
602607
initialize = initfn,
603608
initializealg = reinitialization_alg(cb))
604609
end
605610

606611
function generate_vector_rootfinding_callback(
607612
cbs, sys::AbstractODESystem, dvs = unknowns(sys),
608-
ps = parameters(sys); rootfind = SciMLBase.RightRootFind, reinitialization = SciMLBase.CheckInit(), kwargs...)
613+
ps = parameters(sys); rootfind = SciMLBase.RightRootFind,
614+
reinitialization = SciMLBase.CheckInit(), kwargs...)
609615
eqs = map(cb -> flatten_equations(cb.eqs), cbs)
610616
num_eqs = length.(eqs)
611617
# fuse equations to create VectorContinuousCallback
@@ -670,7 +676,8 @@ function generate_vector_rootfinding_callback(
670676
initfn = SciMLBase.INITIALIZE_DEFAULT
671677
end
672678
return VectorContinuousCallback(
673-
cond, affect, affect_neg, length(eqs), rootfind = rootfind, initialize = initfn, initializealg = reinitialization)
679+
cond, affect, affect_neg, length(eqs), rootfind = rootfind,
680+
initialize = initfn, initializealg = reinitialization)
674681
end
675682

676683
"""
@@ -711,21 +718,23 @@ function generate_rootfinding_callback(cbs, sys::AbstractODESystem, dvs = unknow
711718
# groupby would be very useful here, but alas
712719
cb_classes = Dict{
713720
@NamedTuple{
714-
rootfind::SciMLBase.RootfindOpt,
721+
rootfind::SciMLBase.RootfindOpt,
715722
reinitialization::SciMLBase.DAEInitializationAlgorithm}, Vector{SymbolicContinuousCallback}}()
716723
for cb in cbs
717724
push!(
718-
get!(() -> SymbolicContinuousCallback[], cb_classes, (
719-
rootfind = cb.rootfind,
720-
reinitialization = reinitialization_alg(cb))),
725+
get!(() -> SymbolicContinuousCallback[], cb_classes,
726+
(
727+
rootfind = cb.rootfind,
728+
reinitialization = reinitialization_alg(cb))),
721729
cb)
722730
end
723731

724732
# generate the callbacks out; we sort by the equivalence class to ensure a deterministic preference order
725733
compiled_callbacks = map(collect(pairs(sort!(
726734
OrderedDict(cb_classes); by = p -> p.rootfind)))) do (equiv_class, cbs_in_class)
727735
return generate_vector_rootfinding_callback(
728-
cbs_in_class, sys, dvs, ps; rootfind = equiv_class.rootfind, reinitialization=equiv_class.reinitialization, kwargs...)
736+
cbs_in_class, sys, dvs, ps; rootfind = equiv_class.rootfind,
737+
reinitialization = equiv_class.reinitialization, kwargs...)
729738
end
730739
if length(compiled_callbacks) == 1
731740
return compiled_callbacks[]
@@ -796,10 +805,12 @@ function generate_timed_callback(cb, sys, dvs, ps; postprocess_affect_expr! = no
796805
end
797806
if cond isa AbstractVector
798807
# Preset Time
799-
return PresetTimeCallback(cond, as; initialize = initfn, initializealg=reinitialization_alg(cb))
808+
return PresetTimeCallback(
809+
cond, as; initialize = initfn, initializealg = reinitialization_alg(cb))
800810
else
801811
# Periodic
802-
return PeriodicCallback(as, cond; initialize = initfn, initializealg=reinitialization_alg(cb))
812+
return PeriodicCallback(
813+
as, cond; initialize = initfn, initializealg = reinitialization_alg(cb))
803814
end
804815
end
805816

@@ -824,7 +835,8 @@ function generate_discrete_callback(cb, sys, dvs, ps; postprocess_affect_expr! =
824835
else
825836
initfn = SciMLBase.INITIALIZE_DEFAULT
826837
end
827-
return DiscreteCallback(c, as; initialize = initfn, initializealg=reinitialization_alg(cb))
838+
return DiscreteCallback(
839+
c, as; initialize = initfn, initializealg = reinitialization_alg(cb))
828840
end
829841
end
830842

test/symbolic_events.jl

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -890,13 +890,14 @@ end
890890

891891
@testset "Discrete event reinitialization (#3142)" begin
892892
@connector LiquidPort begin
893-
p(t)::Float64, [ description = "Set pressure in bar",
894-
guess = 1.01325]
895-
Vdot(t)::Float64, [ description = "Volume flow rate in L/min",
896-
guess = 0.0,
897-
connect = Flow]
893+
p(t)::Float64, [description = "Set pressure in bar",
894+
guess = 1.01325]
895+
Vdot(t)::Float64,
896+
[description = "Volume flow rate in L/min",
897+
guess = 0.0,
898+
connect = Flow]
898899
end
899-
900+
900901
@mtkmodel PressureSource begin
901902
@components begin
902903
port = LiquidPort()
@@ -908,7 +909,7 @@ end
908909
port.p ~ p_set
909910
end
910911
end
911-
912+
912913
@mtkmodel BinaryValve begin
913914
@constants begin
914915
p_ref::Float64 = 1.0, [description = "Reference pressure drop in bar"]
@@ -918,7 +919,7 @@ end
918919
port_in = LiquidPort()
919920
port_out = LiquidPort()
920921
end
921-
@parameters begin
922+
@parameters begin
922923
k_V::Float64 = 1.0, [description = "Valve coefficient in L/min/bar"]
923924
k_leakage::Float64 = 1e-08, [description = "Leakage coefficient in L/min/bar"]
924925
ρ::Float64 = 1000.0, [description = "Density in kg/m^3"]
@@ -935,16 +936,16 @@ end
935936
Δp ~ port_in.p - port_out.p
936937
# System behavior
937938
D(S) ~ 0.0
938-
Vdot ~ S*k_V*sign(Δp)*sqrt(abs(Δp)/p_ref * ρ_ref/ρ) + k_leakage*Δp # softplus alpha function to avoid negative values under the sqrt
939+
Vdot ~ S * k_V * sign(Δp) * sqrt(abs(Δp) / p_ref * ρ_ref / ρ) + k_leakage * Δp # softplus alpha function to avoid negative values under the sqrt
939940
end
940941
end
941-
942+
942943
# Test System
943944
@mtkmodel TestSystem begin
944945
@components begin
945946
pressure_source_1 = PressureSource(p_set = 2.0)
946-
binary_valve_1 = BinaryValve(S = 1.0, k_leakage=0.0)
947-
binary_valve_2 = BinaryValve(S = 1.0, k_leakage=0.0)
947+
binary_valve_1 = BinaryValve(S = 1.0, k_leakage = 0.0)
948+
binary_valve_2 = BinaryValve(S = 1.0, k_leakage = 0.0)
948949
pressure_source_2 = PressureSource(p_set = 1.0)
949950
end
950951
@equations begin
@@ -953,22 +954,22 @@ end
953954
connect(binary_valve_2.port_out, pressure_source_2.port)
954955
end
955956
@discrete_events begin
956-
[30] => [binary_valve_1.S ~ 0.0, binary_valve_2.Δp ~ 0.0 ]
957-
[60] => [binary_valve_1.S ~ 1.0, binary_valve_2.S ~ 0.0, binary_valve_2.Δp ~ 1.0 ]
958-
[120] => [binary_valve_1.S ~ 0.0, binary_valve_2.Δp ~ 0.0 ]
957+
[30] => [binary_valve_1.S ~ 0.0, binary_valve_2.Δp ~ 0.0]
958+
[60] => [
959+
binary_valve_1.S ~ 1.0, binary_valve_2.S ~ 0.0, binary_valve_2.Δp ~ 1.0]
960+
[120] => [binary_valve_1.S ~ 0.0, binary_valve_2.Δp ~ 0.0]
959961
end
960962
end
961-
963+
962964
# Test Simulation
963965
@mtkbuild sys = TestSystem()
964-
966+
965967
# Test Simulation
966968
prob = ODEProblem(sys, [], (0.0, 150.0))
967969
sol = solve(prob)
968970
@test sol[end] == [0.0, 0.0, 0.0]
969971
end
970972

971-
972973
@testset "Discrete variable timeseries" begin
973974
@variables x(t)
974975
@parameters a(t) b(t) c(t)
@@ -991,20 +992,20 @@ end
991992
end
992993

993994
@testset "Bump" begin
994-
@variables x(t) [irreducible=true] y(t) [irreducible=true]
995+
@variables x(t) [irreducible = true] y(t) [irreducible = true]
995996
eqs = [x ~ y, D(x) ~ -1]
996997
cb = [x ~ 0.0] => [x ~ 0, y ~ 1]
997-
@mtkbuild pend = ODESystem(eqs, t;continuous_events = [cb])
998+
@mtkbuild pend = ODESystem(eqs, t; continuous_events = [cb])
998999
prob = ODEProblem(pend, [x => 1], (0.0, 3.0), guesses = [y => x])
9991000
@test_throws "initialization not satisifed" solve(prob, Rodas5())
1000-
1001+
10011002
cb = [x ~ 0.0] => [y ~ 1]
1002-
@mtkbuild pend = ODESystem(eqs, t;continuous_events = [cb])
1003+
@mtkbuild pend = ODESystem(eqs, t; continuous_events = [cb])
10031004
prob = ODEProblem(pend, [x => 1], (0.0, 3.0), guesses = [y => x])
10041005
@test_broken !SciMLBase.successful_retcode(solve(prob, Rodas5()))
10051006

10061007
cb = [x ~ 0.0] => [x ~ 1, y ~ 1]
1007-
@mtkbuild pend = ODESystem(eqs, t;continuous_events = [cb])
1008+
@mtkbuild pend = ODESystem(eqs, t; continuous_events = [cb])
10081009
prob = ODEProblem(pend, [x => 1], (0.0, 3.0), guesses = [y => x])
1009-
@test all((0.0; atol=1e-9), solve(prob, Rodas5())[[x,y]][end])
1010-
end
1010+
@test all((0.0; atol = 1e-9), solve(prob, Rodas5())[[x, y]][end])
1011+
end

0 commit comments

Comments
 (0)