Skip to content

Commit 2c569c8

Browse files
feat: add default t and D
1 parent f77febd commit 2c569c8

File tree

4 files changed

+24
-16
lines changed

4 files changed

+24
-16
lines changed

examples/electrical_components.jl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Test
22
using ModelingToolkit, OrdinaryDiffEq
3+
using ModelingToolkit: t_nounits as t, D_nounits as D
34

4-
@isdefined(t) || @parameters t
55
@connector function Pin(; name)
66
sts = @variables v(t)=1.0 i(t)=1.0 [connect = Flow]
77
ODESystem(Equation[], t, sts, []; name = name)
@@ -37,7 +37,6 @@ end
3737
@named oneport = OnePort()
3838
@unpack v, i = oneport
3939
ps = @parameters C = C
40-
D = Differential(t)
4140
eqs = [
4241
D(v) ~ i / C,
4342
]
@@ -58,7 +57,6 @@ end
5857
@named oneport = OnePort()
5958
@unpack v, i = oneport
6059
ps = @parameters L = L
61-
D = Differential(t)
6260
eqs = [
6361
D(i) ~ v / L,
6462
]
@@ -89,7 +87,6 @@ end
8987
@parameters rho=rho V=V cp=cp
9088
C = rho * V * cp
9189
@named h = HeatPort()
92-
D = Differential(t)
9390
eqs = [
9491
D(h.T) ~ h.Q_flow / C,
9592
]

src/ModelingToolkit.jl

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ end
7474
@reexport using UnPack
7575
RuntimeGeneratedFunctions.init(@__MODULE__)
7676

77+
import DynamicQuantities, Unitful
78+
const DQ = DynamicQuantities
79+
7780
export @derivatives
7881

7982
for fun in [:toexpr]
@@ -172,11 +175,24 @@ for S in subtypes(ModelingToolkit.AbstractSystem)
172175
@eval convert_system(::Type{<:$S}, sys::$S) = sys
173176
end
174177

178+
const t_nounits = let
179+
only(@parameters t)
180+
end
181+
const t_unitful = let
182+
only(@parameters t [unit = Unitful.u"s"])
183+
end
184+
const t = let
185+
only(@parameters t [unit = DQ.u"s"])
186+
end
187+
188+
const D_nounits = Differential(t_nounits)
189+
const D_unitful = Differential(t_unitful)
190+
const D = Differential(t)
191+
175192
PrecompileTools.@compile_workload begin
176193
using ModelingToolkit
177-
@variables t x(t)
178-
D = Differential(t)
179-
@named sys = ODESystem([D(x) ~ -x])
194+
@variables x(ModelingToolkit.t_nounits)
195+
@named sys = ODESystem([ModelingToolkit.D_nounits(x) ~ -x])
180196
prob = ODEProblem(structural_simplify(sys), [x => 30.0], (0, 100), [], jac = true)
181197
end
182198

src/systems/unit_check.jl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import DynamicQuantities, Unitful
2-
const DQ = DynamicQuantities
3-
41
#For dispatching get_unit
52
const Conditional = Union{typeof(ifelse), typeof(IfElse.ifelse)}
63
const Comparison = Union{typeof.([==, !=, , <, <=, , >, >=, ])...}

test/extensions/bifurcationkit.jl

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using BifurcationKit, ModelingToolkit, Test
2-
2+
using ModelingToolkit: t_nounits as t, D_nounits as D
33
# Simple pitchfork diagram, compares solution to native BifurcationKit, checks they are identical.
44
# Checks using `jac=false` option.
55
let
66
# Creates model.
7-
@variables t x(t) y(t)
7+
@variables x(t) y(t)
88
@parameters μ α
99
eqs = [0 ~ μ * x - x^3 + α * y,
1010
0 ~ -y]
@@ -57,8 +57,7 @@ end
5757
let
5858
# Creates a Lotka–Volterra model.
5959
@parameters α a b
60-
@variables t x(t) y(t) z(t)
61-
D = Differential(t)
60+
@variables x(t) y(t) z(t)
6261
eqs = [D(x) ~ -x + a * y + x^2 * y,
6362
D(y) ~ b - a * y - x^2 * y]
6463
@named sys = ODESystem(eqs)
@@ -99,8 +98,7 @@ end
9998
let
10099
# Creates model, and uses `structural_simplify` to generate observables.
101100
@parameters μ p=2
102-
@variables t x(t) y(t) z(t)
103-
D = Differential(t)
101+
@variables x(t) y(t) z(t)
104102
eqs = [0 ~ μ - x^3 + 2x^2,
105103
0 ~ p * μ - y,
106104
0 ~ y - z]

0 commit comments

Comments
 (0)