@@ -59,7 +59,7 @@ function MTKParameters(
59
59
end
60
60
p = Dict ()
61
61
missing_params = Set ()
62
- pdeps = has_parameter_dependencies (sys) ? parameter_dependencies (sys) : nothing
62
+ pdeps = has_parameter_dependencies (sys) ? parameter_dependencies (sys) : []
63
63
64
64
for sym in all_ps
65
65
ttsym = default_toterm (sym)
@@ -92,7 +92,7 @@ function MTKParameters(
92
92
delete! (missing_params, ttsym)
93
93
end
94
94
95
- if pdeps != = nothing
95
+ if ! isempty (pdeps)
96
96
for eq in pdeps
97
97
sym = eq. lhs
98
98
expr = eq. rhs
@@ -279,10 +279,7 @@ function SciMLStructures.canonicalize(::SciMLStructures.Tunable, p::MTKParameter
279
279
arr = p. tunable
280
280
repack = let p = p
281
281
function (new_val)
282
- if new_val != = p. tunable
283
- copyto! (p. tunable, new_val)
284
- end
285
- return p
282
+ return SciMLStructures. replace (SciMLStructures. Tunable (), p, new_val)
286
283
end
287
284
end
288
285
return arr, repack, true
@@ -303,12 +300,9 @@ for (Portion, field, recurse) in [(SciMLStructures.Discrete, :discrete, 1)
303
300
(Nonnumeric, :nonnumeric , 1 )]
304
301
@eval function SciMLStructures. canonicalize (:: $Portion , p:: MTKParameters )
305
302
as_vector = buffer_to_arraypartition (p.$ field)
306
- repack = let as_vector = as_vector, p = p
303
+ repack = let p = p
307
304
function (new_val)
308
- if new_val != = as_vector
309
- update_tuple_of_buffers (new_val, p.$ field)
310
- end
311
- p
305
+ return SciMLStructures. replace (($ Portion)(), p, new_val)
312
306
end
313
307
end
314
308
return as_vector, repack, true
678
672
return len
679
673
end
680
674
675
+ Base. size (ps:: MTKParameters ) = (length (ps),)
676
+
677
+ Base. IndexStyle (:: Type{T} ) where {T <: MTKParameters } = IndexLinear ()
678
+
681
679
Base. getindex (p:: MTKParameters , pind:: ParameterIndex ) = parameter_values (p, pind)
682
680
683
681
Base. setindex! (p:: MTKParameters , val, pind:: ParameterIndex ) = set_parameter! (p, val, pind)
0 commit comments