@@ -185,75 +185,77 @@ end
185
185
# Treat the result as a vector of symbols always
186
186
function SymbolicIndexingInterface. is_variable (sys:: AbstractSystem , sym)
187
187
if unwrap (sym) isa Int # [x, 1] coerces 1 to a Num
188
- return unwrap (sym) in 1 : length (unknown_states (sys))
188
+ return unwrap (sym) in 1 : length (variable_symbols (sys))
189
189
end
190
- return any (isequal (sym), unknown_states (sys)) ||
190
+ return any (isequal (sym), variable_symbols (sys)) ||
191
191
hasname (sym) && is_variable (sys, getname (sym))
192
192
end
193
193
194
194
function SymbolicIndexingInterface. is_variable (sys:: AbstractSystem , sym:: Symbol )
195
- return any (isequal (sym), getname .(unknown_states (sys))) ||
195
+ return any (isequal (sym), getname .(variable_symbols (sys))) ||
196
196
count (' ₊' , string (sym)) == 1 &&
197
- count (isequal (sym), Symbol .(sys. name, :₊ , getname .(unknown_states (sys)))) == 1
197
+ count (isequal (sym), Symbol .(sys. name, :₊ , getname .(variable_symbols (sys)))) == 1
198
198
end
199
199
200
200
function SymbolicIndexingInterface. variable_index (sys:: AbstractSystem , sym)
201
201
if unwrap (sym) isa Int
202
202
return unwrap (sym)
203
203
end
204
- idx = findfirst (isequal (sym), unknown_states (sys))
204
+ idx = findfirst (isequal (sym), variable_symbols (sys))
205
205
if idx === nothing && hasname (sym)
206
206
idx = variable_index (sys, getname (sym))
207
207
end
208
208
return idx
209
209
end
210
210
211
211
function SymbolicIndexingInterface. variable_index (sys:: AbstractSystem , sym:: Symbol )
212
- idx = findfirst (isequal (sym), getname .(unknown_states (sys)))
212
+ idx = findfirst (isequal (sym), getname .(variable_symbols (sys)))
213
213
if idx != = nothing
214
214
return idx
215
215
elseif count (' ₊' , string (sym)) == 1
216
- return findfirst (isequal (sym), Symbol .(sys. name, :₊ , getname .(unknown_states (sys))))
216
+ return findfirst (isequal (sym), Symbol .(sys. name, :₊ , getname .(variable_symbols (sys))))
217
217
end
218
218
return nothing
219
219
end
220
220
221
+ SymbolicIndexingInterface. variable_symbols (sys:: AbstractMultivariateSystem ) = sys. dvs
222
+
221
223
function SymbolicIndexingInterface. variable_symbols (sys:: AbstractSystem )
222
224
return unknown_states (sys)
223
225
end
224
226
225
227
function SymbolicIndexingInterface. is_parameter (sys:: AbstractSystem , sym)
226
228
if unwrap (sym) isa Int
227
- return unwrap (sym) in 1 : length (parameters (sys))
229
+ return unwrap (sym) in 1 : length (parameter_symbols (sys))
228
230
end
229
231
230
- return any (isequal (sym), parameters (sys)) ||
232
+ return any (isequal (sym), parameter_symbols (sys)) ||
231
233
hasname (sym) && is_parameter (sys, getname (sym))
232
234
end
233
235
234
236
function SymbolicIndexingInterface. is_parameter (sys:: AbstractSystem , sym:: Symbol )
235
- return any (isequal (sym), getname .(parameters (sys))) ||
237
+ return any (isequal (sym), getname .(parameter_symbols (sys))) ||
236
238
count (' ₊' , string (sym)) == 1 &&
237
- count (isequal (sym), Symbol .(sys. name, :₊ , getname .(parameters (sys)))) == 1
239
+ count (isequal (sym), Symbol .(sys. name, :₊ , getname .(parameter_symbols (sys)))) == 1
238
240
end
239
241
240
242
function SymbolicIndexingInterface. parameter_index (sys:: AbstractSystem , sym)
241
243
if unwrap (sym) isa Int
242
244
return unwrap (sym)
243
245
end
244
- idx = findfirst (isequal (sym), parameters (sys))
246
+ idx = findfirst (isequal (sym), parameter_symbols (sys))
245
247
if idx === nothing && hasname (sym)
246
248
idx = parameter_index (sys, getname (sym))
247
249
end
248
250
return idx
249
251
end
250
252
251
253
function SymbolicIndexingInterface. parameter_index (sys:: AbstractSystem , sym:: Symbol )
252
- idx = findfirst (isequal (sym), getname .(parameters (sys)))
254
+ idx = findfirst (isequal (sym), getname .(parameter_symbols (sys)))
253
255
if idx != = nothing
254
256
return idx
255
257
elseif count (' ₊' , string (sym)) == 1
256
- return findfirst (isequal (sym), Symbol .(sys. name, :₊ , getname .(parameters (sys))))
258
+ return findfirst (isequal (sym), Symbol .(sys. name, :₊ , getname .(parameter_symbols (sys))))
257
259
end
258
260
return nothing
259
261
end
@@ -263,7 +265,7 @@ function SymbolicIndexingInterface.parameter_symbols(sys::AbstractSystem)
263
265
end
264
266
265
267
function SymbolicIndexingInterface. is_independent_variable (sys:: AbstractSystem , sym)
266
- return any (isequal (sym), independent_variables (sys))
268
+ return any (isequal (sym), independent_variable_symbols (sys))
267
269
end
268
270
269
271
function SymbolicIndexingInterface. is_independent_variable (sys:: AbstractSystem , sym:: Symbol )
650
652
651
653
function parameters (sys:: AbstractSystem )
652
654
ps = get_ps (sys)
655
+ if ps == SciMLBase. NullParameters ()
656
+ return []
657
+ end
653
658
systems = get_systems (sys)
654
659
unique (isempty (systems) ? ps : [ps; reduce (vcat, namespace_parameters .(systems))])
655
660
end
0 commit comments