Skip to content

Commit 4d522b5

Browse files
Merge pull request #36 from SciML/aj/mtk
create_param using mtk metadata
2 parents c4b4a9d + f2147ba commit 4d522b5

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "CellMLToolkit"
22
uuid = "03cb29e0-1ef4-4721-aa24-cf58a006576f"
33
authors = ["Shahriar Iravanian <siravan@svtsim.com>"]
4-
version = "2.3.0"
4+
version = "2.3.1"
55

66
[deps]
77
EzXML = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615"
@@ -16,7 +16,7 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1616
[compat]
1717
EzXML = "1.1"
1818
HTTP = "0.9"
19-
MathML = "0.1.5"
19+
MathML = "0.1"
2020
Memoize = "0.4"
2121
ModelingToolkit = "5.14"
2222
OrdinaryDiffEq = "5.52"

src/components.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ const mathml_ns = "http://www.w3.org/1998/Math/MathML"
44

55
create_var(x) = Num(Variable(Symbol(x))).val
66
create_var(x, iv) = Num(Variable{Symbolics.FnType{Tuple{Any},Real}}(Symbol(x)))(iv).val
7-
create_param(x) = Num(Sym{ModelingToolkit.Parameter{Real}}(Symbol(x))).val
7+
function create_param(x)
8+
p = Sym{Real}(Symbol(x))
9+
ModelingToolkit.toparam(p)
10+
p
11+
end
812

913
to_symbol(x::Symbol) = x
1014
to_symbol(x::AbstractString) = Symbol(x)
@@ -157,7 +161,7 @@ function translate_connections(doc::Document, systems, class)
157161
sys2 = systems[c2]
158162
for w in variables_of.(list_connection_variables(k))
159163
v1, v2 = Symbol.(w)
160-
if class[make_var(c1,v1)] && class[make_var(c2,v2)] && Symbol(sys1.iv) != v1
164+
if class[make_var(c1,v1)] && class[make_var(c2,v2)]
161165
var1 = getproperty(sys1, v1)
162166
var2 = getproperty(sys2, v2)
163167
push!(a, var1 ~ var2)
@@ -181,7 +185,7 @@ function pre_substitution(doc::Document, comp, class)
181185
vars = to_symbol.(list_component_variables(comp))
182186

183187
states = [create_var(x) => create_var(x, ivₚ) for x in vars if class[make_var(comp,x)]]
184-
params = [create_var(x) => create_param(x) for x in vars if !class[make_var(comp,x)] && x != ivₘ]
188+
params = [create_var(x) => create_param(x) for x in vars if !class[make_var(comp,x)] && !isequal(x, ivₘ)]
185189
ivsub = [create_var(ivₘ) => ivₚ]
186190

187191
return states params ivsub
@@ -287,7 +291,7 @@ function process_component(doc::Document, comp, class)
287291
end
288292

289293
ivₚ = get_ivₚ(doc)
290-
ps = [last(x) for x in values(pre_sub) if last(x) isa Sym && last(x) != ivₚ]
294+
ps = [last(x) for x in values(pre_sub) if last(x) isa Sym && !isequal(last(x), ivₚ)]
291295
states = [last(x) for x in values(pre_sub) if !(last(x) isa Sym)]
292296

293297
ODESystem(eqs, ivₚ, states, ps; name=to_symbol(comp))

0 commit comments

Comments
 (0)