Skip to content

Commit 1f2d943

Browse files
Merge pull request #2929 from AayushSabharwal/as/mtkparams-methods
fix: several MTKParameters fixes
2 parents 57dcc7e + 94f1c3d commit 1f2d943

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

src/systems/parameter_buffer.jl

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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
@@ -678,6 +672,10 @@ end
678672
return len
679673
end
680674

675+
Base.size(ps::MTKParameters) = (length(ps),)
676+
677+
Base.IndexStyle(::Type{T}) where {T <: MTKParameters} = IndexLinear()
678+
681679
Base.getindex(p::MTKParameters, pind::ParameterIndex) = parameter_values(p, pind)
682680

683681
Base.setindex!(p::MTKParameters, val, pind::ParameterIndex) = set_parameter!(p, val, pind)

test/mtkparameters.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ for (portion, values) in [(Tunable(), [1.0, 5.0, 6.0, 7.0])
5353
SciMLStructures.replace!(portion, ps, ones(length(buffer)))
5454
# make sure it is in-place
5555
@test all(isone, canonicalize(portion, ps)[1])
56-
repack(zeros(length(buffer)))
56+
global ps = repack(zeros(length(buffer)))
5757
@test all(iszero, canonicalize(portion, ps)[1])
5858
end
5959

0 commit comments

Comments
 (0)