Skip to content

Commit 7ef34ba

Browse files
Fold IVar into Param
1 parent 1cd6630 commit 7ef34ba

12 files changed

+25
-24
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ to manipulate.
2121
### Example: ODE
2222

2323
Let's build an ODE. First we define some variables. In a differential equation
24-
system, we need to differentiate between our unknown (dependent) variables, independent
25-
variables, and parameters. Therefore we label them as follows:
24+
system, we need to differentiate between our unknown (dependent) variables
25+
and parameters. Therefore we label them as follows:
2626

2727
```julia
2828
using ModelingToolkit
2929

3030
# Define some variables
31-
@IVar t
31+
@Param t
3232
@Unknown x(t) y(t) z(t)
3333
@Deriv D'~t
3434
@Param σ ρ β
@@ -259,7 +259,7 @@ is accessible via a function-based interface. This means that all macros are
259259
syntactic sugar in some form. For example, the variable construction:
260260

261261
```julia
262-
@IVar t
262+
@Param t
263263
@Unknown x(t) y(t) z(t)
264264
@Deriv D'~t
265265
@Param σ ρ β
@@ -268,7 +268,7 @@ syntactic sugar in some form. For example, the variable construction:
268268
is syntactic sugar for:
269269

270270
```julia
271-
t = IndependentVariable(:t)
271+
t = Parameter(:t)
272272
x = Unknown(:x, dependents = [t])
273273
y = Unknown(:y, dependents = [t])
274274
z = Unknown(:z, dependents = [t])

src/equations.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Base.:~(lhs::Number , rhs::Expression) = Equation(lhs, rhs)
1414

1515
_is_derivative(x::Variable) = x.diff !== nothing
1616
_is_dependent(x::Variable) = x.subtype === :Unknown && !isempty(x.dependents)
17+
_is_parameter(ivs) = x -> x.subtype === :Parameter && x ivs
1718
_subtype(subtype::Symbol) = x -> x.subtype === subtype
1819

1920
function extract_elements(eqs, predicates)

src/systems/diffeqs/diffeqsystem.jl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ end
99
DiffEqSystem(eqs, ivs, dvs, ps) = DiffEqSystem(eqs, ivs, dvs, ps, Matrix{Expression}(undef,0,0))
1010

1111
function DiffEqSystem(eqs)
12-
predicates = [_is_derivative, _subtype(:IndependentVariable), _is_dependent, _subtype(:Parameter)]
13-
_, ivs, dvs, ps = extract_elements(eqs, predicates)
12+
predicates = [_is_derivative, _is_dependent]
13+
_, dvs = extract_elements(eqs, predicates)
14+
ivs = unique(vcat((dv.dependents for dv dvs)...))
15+
ps, = extract_elements(eqs, [_is_parameter(ivs)])
1416
DiffEqSystem(eqs, ivs, dvs, ps, Matrix{Expression}(undef,0,0))
1517
end
1618

1719
function DiffEqSystem(eqs, ivs)
18-
predicates = [_is_derivative, _is_dependent, _subtype(:Parameter)]
20+
predicates = [_is_derivative, _is_dependent, _is_parameter(ivs)]
1921
_, dvs, ps = extract_elements(eqs, predicates)
2022
DiffEqSystem(eqs, ivs, dvs, ps, Matrix{Expression}(undef,0,0))
2123
end

src/variables.jl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ Variable(name; subtype::Symbol, dependents::Vector{Variable} = Variable[]) =
99
Variable(name, subtype, nothing, dependents)
1010

1111
Parameter(name,args...;kwargs...) = Variable(name,args...;subtype=:Parameter,kwargs...)
12-
IndependentVariable(name,args...;kwargs...) = Variable(name,args...;subtype=:IndependentVariable,kwargs...)
1312
Unknown(name,args...;kwargs...) = Variable(name,args...;subtype=:Unknown,kwargs...)
1413

15-
export Variable,Parameter,Constant,Unknown,IndependentVariable,
16-
@Param, @Const, @Unknown, @IVar
14+
export Variable, Parameter, Constant, Unknown, @Param, @Const, @Unknown
1715

1816

1917
Base.copy(x::Variable) = Variable(x.name, x.subtype, x.diff, x.dependents)
@@ -83,7 +81,7 @@ function _parse_vars(macroname, fun, x)
8381
return ex
8482
end
8583

86-
for funs in [(:Unknown, :Unknown), (:IVar, :IndependentVariable), (:Param, :Parameter)]
84+
for funs in [(:Unknown, :Unknown), (:Param, :Parameter)]
8785
@eval begin
8886
macro ($(funs[1]))(x...)
8987
esc(_parse_vars(String($funs[1]), $funs[2], x))

test/ambiguity.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using ModelingToolkit
22
using Test
33

4-
@IVar t
4+
@Param t
55
@Unknown x(t) y(t) z(t)
66

77
struct __MyType__ end

test/basic_variables_and_operations.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using ModelingToolkit
22
using Test
33

4-
@IVar t
4+
@Param t
55
@Unknown x(t) y(t) z(t)
66

77
@Deriv D'~t # Default of first derivative, Derivative(t,1)

test/components.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function Lorenz(t)
2222
Lorenz(x, y, z, σ, ρ, β, generate_lorenz_eqs(t, x, y, z, σ, ρ, β))
2323
end
2424

25-
@IVar t
25+
@Param t
2626
lz1 = Lorenz(t)
2727
lz2 = Lorenz(t)
2828
lz1.x ~ lz2.x

test/derivatives.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ using ModelingToolkit
22
using Test
33

44
# Derivatives
5-
@IVar t
5+
@Param t
66
@Unknown x(t) y(t) z(t)
77
@Param σ ρ β
88
@Deriv D'~t

test/internal.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ using ModelingToolkit
22
using Test
33

44
# `Expr`, `Number` -> `Operation`
5-
@IVar a
5+
@Param a
66
@Param b
77
@Unknown x(t) y()
88
@test convert(Expression, 2) == 2

test/simplify.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using ModelingToolkit
22
using Test
33

4-
@IVar t
4+
@Param t
55
@Unknown x(t) y(t) z(t)
66

77
null_op = 0*t

0 commit comments

Comments
 (0)