not sure if the title was clear enough but I’ll try to illustrate the issue with code.
@parameters p[1:2] u u = GlobalScope(u) #so parameter u will not be namescoped when one uses 'compose' p = Symbolics.scalarize(p) GlobalScope(p) #my GlobalScope version that intends to achieve the same but with array variables pvec = [p;u] #this is what is supplied to the ODESystem constructor pvec_ = Symbolics.value.(Symbolics.scalarize(pvec)) #this is run at some point inside the constructor
A first good question is how to add the GlobalScope() property to array variables. I figured that array variables are not used as defined but they have to be scalarized to a vector of Term variables and one can use the same mechanism to provide the GlobalScope property.
When adding all parameters to the ODESystem one creates a vector with both array and non-array parameters. Somewhere inside the constructor, the line
pvec_ = Symbolics.value.(Symbolics.scalarize(pvec)). My question is why does the metadata of Term type parameters gets erased while the Sym type parameters is not.