Skip to content

Commit 5a78f02

Browse files
Merge pull request #67 from SciML/as/fix-getu-array
fix: add dedicated code paths for non-scalarized array symbolics in getu/getp
2 parents a594522 + d2b322e commit 5a78f02

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/parameter_indexing.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ for (t1, t2) in [
140140
end
141141

142142
function _getp(sys, ::ArraySymbolic, ::NotSymbolic, p)
143+
if is_parameter(sys, p)
144+
idx = parameter_index(sys, p)
145+
return invoke(_getp, Tuple{Any, NotSymbolic, NotSymbolic, Any},
146+
sys, NotSymbolic(), NotSymbolic(), idx)
147+
end
143148
return getp(sys, collect(p))
144149
end
145150

@@ -205,5 +210,9 @@ for (t1, t2) in [
205210
end
206211

207212
function _setp(sys, ::ArraySymbolic, ::NotSymbolic, p)
213+
if is_parameter(sys, p)
214+
idx = parameter_index(sys, p)
215+
return setp(sys, idx; run_hook = false)
216+
end
208217
return setp(sys, collect(p); run_hook = false)
209218
end

src/state_indexing.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,12 @@ for (t1, t2) in [
165165
end
166166

167167
function _getu(sys, ::ArraySymbolic, ::NotSymbolic, sym)
168+
if is_variable(sys, sym)
169+
idx = variable_index(sys, sym)
170+
return getu(sys, idx)
171+
elseif is_parameter(sys, sym)
172+
return getp(sys, sym)
173+
end
168174
return getu(sys, collect(sym))
169175
end
170176

@@ -221,5 +227,11 @@ for (t1, t2) in [
221227
end
222228

223229
function _setu(sys, ::ArraySymbolic, ::NotSymbolic, sym)
230+
if is_variable(sys, sym)
231+
idx = variable_index(sys, sym)
232+
return setu(sys, idx)
233+
elseif is_parameter(sys, sym)
234+
return setp(sys, sym)
235+
end
224236
return setu(sys, collect(sym))
225237
end

0 commit comments

Comments
 (0)