@@ -59,7 +59,7 @@ function MTKParameters(
5959 end
6060 p = Dict ()
6161 missing_params = Set ()
62- pdeps = has_parameter_dependencies (sys) ? parameter_dependencies (sys) : nothing
62+ pdeps = has_parameter_dependencies (sys) ? parameter_dependencies (sys) : []
6363
6464 for sym in all_ps
6565 ttsym = default_toterm (sym)
@@ -92,7 +92,7 @@ function MTKParameters(
9292 delete! (missing_params, ttsym)
9393 end
9494
95- if pdeps != = nothing
95+ if ! isempty (pdeps)
9696 for eq in pdeps
9797 sym = eq. lhs
9898 expr = eq. rhs
@@ -279,10 +279,7 @@ function SciMLStructures.canonicalize(::SciMLStructures.Tunable, p::MTKParameter
279279 arr = p. tunable
280280 repack = let p = p
281281 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)
286283 end
287284 end
288285 return arr, repack, true
@@ -303,12 +300,9 @@ for (Portion, field, recurse) in [(SciMLStructures.Discrete, :discrete, 1)
303300 (Nonnumeric, :nonnumeric , 1 )]
304301 @eval function SciMLStructures. canonicalize (:: $Portion , p:: MTKParameters )
305302 as_vector = buffer_to_arraypartition (p.$ field)
306- repack = let as_vector = as_vector, p = p
303+ repack = let p = p
307304 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)
312306 end
313307 end
314308 return as_vector, repack, true
678672 return len
679673end
680674
675+ Base. size (ps:: MTKParameters ) = (length (ps),)
676+
677+ Base. IndexStyle (:: Type{T} ) where {T <: MTKParameters } = IndexLinear ()
678+
681679Base. getindex (p:: MTKParameters , pind:: ParameterIndex ) = parameter_values (p, pind)
682680
683681Base. setindex! (p:: MTKParameters , val, pind:: ParameterIndex ) = set_parameter! (p, val, pind)
0 commit comments