Skip to content

Commit 98decab

Browse files
committed
add dsl tests
1 parent 3b8597d commit 98decab

File tree

1 file changed

+60
-1
lines changed

1 file changed

+60
-1
lines changed

test/dsl/dsl_advanced_model_construction.jl

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,4 +381,63 @@ let
381381
end
382382
end
383383
@test hybrid == rn
384-
end
384+
end
385+
386+
# hybrid models
387+
let
388+
rs = @reaction_network hybrid begin
389+
@variables V(t)
390+
@parameters λ
391+
k*V, 0 --> A
392+
λ*A, B --> 0
393+
k, A + B --> 0
394+
λ, C --> A, [physical_scale = PhysicalScale.ODE]
395+
@equations D(V) ~ λ*V*C
396+
@continuous_events begin
397+
[V ~ 2.0] => [V ~ V/2, A ~ A/2]
398+
end
399+
end
400+
t = default_t()
401+
D = default_time_deriv()
402+
@parameters λ k
403+
@variables V(t)
404+
@species A(t) B(t) C(t)
405+
metadata = [:physical_scale => PhysicalScale.ODE]
406+
rxs = [Reaction(k*V, [], [A]), Reaction*A, [B], nothing; metadata),
407+
Reaction(k, [A, B], nothing), Reaction(λ, [C], [A])]
408+
eqs = [D(V) ~ λ*V*C]
409+
cevents = [[V ~ 2.0] => [V ~ V/2, A ~ A/2]]
410+
rs2 = ReactionSystem(vcat(rxs, eqs), t; continuous_events = cevents,
411+
name = :hybrid)
412+
rs2 = complete(rs2)
413+
@test rs == rs2
414+
end
415+
416+
let
417+
rs = @reaction_network hybrid begin
418+
@variables V(t)
419+
@parameters λ
420+
k*V, 0 --> A
421+
λ*A, B --> 0, [physical_scale = PhysicalScale.ODE]
422+
k, A + B --> 0
423+
λ, C --> A, [physical_scale = PhysicalScale.VariableRateJump]
424+
@equations D(V) ~ λ*V*C
425+
@continuous_events begin
426+
[V ~ 2.0] => [V ~ V/2, A ~ A/2]
427+
end
428+
end
429+
t = default_t()
430+
D = default_time_deriv()
431+
@parameters λ k
432+
@variables V(t)
433+
@species A(t) B(t) C(t)
434+
md1 = [:physical_scale => PhysicalScale.ODE]
435+
md2 = [:physical_scale => PhysicalScale.VariableRateJump]
436+
rxs = [Reaction(k*V, [], [A]), Reaction*A, [B], nothing; metadata = md1),
437+
Reaction(k, [A, B], nothing), Reaction(λ, [C], [A]; metadata = md2)]
438+
eqs = [D(V) ~ λ*V*C]
439+
cevents = [[V ~ 2.0] => [V ~ V/2, A ~ A/2]]
440+
rs2 = ReactionSystem(vcat(rxs, eqs), t; continuous_events = cevents, name = :hybrid)
441+
rs2 = complete(rs2)
442+
@test rs == rs2
443+
end

0 commit comments

Comments
 (0)